前端国际化自动工具 - 国际化文案配置系统

背景

笔者之前所在的公司主要做东南亚和欧洲一些国家的业务,做的是 Web 后台管理系统,项目被不同国家(有的项目多达七八个国家)的客户使用,所以前端项目需要支持多语言展示,也就是适配国际化。

日常编码中,系统需要接入前端 web 国际化插件,vue 项目使用的是 vue-i18n,而 react 项目使用 react-i18next,这些插件原理都是根据前端提供的一套语言包json文件(例如en-US.json,zh-CN.json), 每份语言包都以key:value对象形式存储代码标记:实际渲染的语言文案一一对应的数据,然后插件根据用户的语言切换,替换展示不同的语言。

其中,语言包中 的 key 值可以是直接的中文文案:确定 或者是 类似 :menu.dashboard.confirm 的字符串。通常情况下,如果业务没有特殊要求,为了方便业务代码的阅读,我们直接使用中文文案做为语言包的key值。

面临的问题

这里面多语言的切换展示都能由 i18n 插件帮我们处理,但是,有一个问题是比较麻烦的,那就是如何提取、收集、整理、翻译、录入这些文案,很多时候,这些都是手工完成。通常,在业务代码完成后,项目的文案key需要前端开发提取,整理,收集后,供翻译人员进行翻译,添加多国语言,然后经过校对和审核,再通过前端开发导入到项目代码中,此过程往往非常重复繁琐,存在工作效率低,又容易出错的问题。

刀耕火种

最开始,前端开发是写完需求业务代码,然后整理这次需求的页面上需要被翻译的文案,整理后放在谷歌文档excel表格上,然后呼叫翻译小组的小姐姐们进行翻译,待翻译结束,再经过审核校对,前端开发又手动录入到代码里,其过程极为繁琐,前端开发不只需要一个个找出文案,最后还得一个个录入到语言包json文件里,像我们有时候一个需求迭代里面有几百个文案,整理过程可谓又辛苦又无聊,过程大概如下图所示:

在这里插入图片描述

农业时代

后来,组里的同事终于受不了,利用xlsx.js撸了一个nodejs插件,在录入这一步上,不再手工一个个敲进去,而是通过插件将翻译好的文案excel数据转换生成新的语言包文件(zh-CN.json,en-US.json等等)。这样虽然简化了录入过程,但是还会面临以下几个问题:

  • 系统分开语言包各个模块,每次需求都是用独立的语言包文件,这样,系统就会有多个语言包数据冗余。比如,每个页面都几乎有“确定”,“取消”这些文案,每次都需要重复录入,到了翻译阶段,翻译人员就需要多次翻译同一个文案
    在这里插入图片描述

  • 翻译、整理、校对、审核的过程依赖于谷歌文档,每次需求都是新的文档,这样查找起来麻烦复杂

  • 待翻译完成后,前端开发得登录文档下载excel文件,然后启动插件,生成json语言包

  • 项目文案如果有临时修改,前端开发得登录谷歌文档对文案key进行修改,同时通知到翻译人员,待翻译人员同步修改后,再重新执行上面一步操作

  • 系统的语言包文案key的提取还是得前端开发一个个敲进去,过程极度无聊,而且还会不小心打错字

工业时代

于是,针对上述的问题,是否可以开发出一个系统,能达到以下的工作效果呢?

  • 提取文案自动化,无需前端开发手工录入
  • 独立的公司内部文案配置系统,支持翻译人员在线录入文档,不依赖于谷歌文档
  • 录入文案自动化,无需前端开发手动下载、移动到项目代码里面
  • 录入文案时,能实时diff新旧语言包文件差异,让前端开发知道本次新增修改删除了多少文案
  • 支持文案进行模块区分,比如需求a有文案xxx,xxxx,文案xxx隶属于需求a和需求b
  • 支持excel、json格式语言的导入和导出
  • 文案新增/修改/删除 有操作历史记录,可以随时查看某个文案什么时候被编辑过,翻译人员某个时候修改了哪个文案的内容

总而言之,就是希望有一套系统,能够把国际化这套流程工作通过程序自动完成,而作为前端开发,能够不处理或者少处理相关的工作,就像写国内的中文项目一样,直接写中文文案,系统自动处理国际化,达到无感知开发多语言国际化项目的目的

于是,便有了这套自动国际化文案配置系统

自动国际化文案配置系统

架构

系统架构如图所示:

在这里插入图片描述

其中,文案解析器结构为

在这里插入图片描述

其系统运行流程是:

  1. 翻译人员打开 自动国
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值