国际化方案设计(国际化方案设计案例)
一、背景
公司目前各端的项目小组开发都有属于自己的一套国际化的开发流程。如:
- java端使用messages.properties来存储国际化的内容。
- ios端是分模块来存储国际化的内容,如用户模块:UserLanguage.strings。
- android端是分模块来存储国际化的内容,如在模块下的目录创建各个语言的strings.xml。
- web端是分页面来存储国际化的内容,如创建一个js文件来完成某个页面的国际化工作。
前期以业务开发为主,不管是前端还是后端,都是以快速实现为前提,所以多数只考虑到本端的实现,未考虑到流程的各个环节的衔接。导致现行的流程比较臃肿以及存在大量的人为工作量。现行的流程如下:
二、现状分析与痛点
- 目前虽然已经有国际化的能力,但各端的开发不一样,无法统一管理
- 现行的国际化流程过长,涉及团队多,而且对接方式与时间都不可控
- 各个小组的国际化需要自行实现,存在重复造轮子的情况
- 开发人员根据文档来替代其他语言的工作量大
- 各个角色关心的范围非常模糊,如产品需要关注什么内容需要翻译,开发人员需要关注各个词条对应各个语言的内容是什么,翻译人员需要关注什么时候来需求,以及什么时候会给开发人员提交翻译内容。存在大量的沟通成本
- 现所有的翻译对接点是一份在线的excel,无法灵活应对项目的配置与翻译的标准,也无法更好地维护与查看修改记录
- 大量的翻译工作基本都可以通过自动化完成,如调用第三方接口完成翻译。而现状是通过人工来翻译或查询资料(如通过google翻译,百度翻译等)来完成。
三、如何解决这些痛点
- 优化国际化的开发流程。
- 创建国际化后台管理系统(i18n-service、admin后台)
- 统一化管理各个端的国际化资源文件。(通过编写脚本完成)
虽然各端项目组对于国际化有不同的实现,但也存在一些共性的东西。如国际化都是放到一个文件上集中管理,各个文件的内容都是Key-Value结构,不同的是,各端的存放位置与目录结构不一样。而这些共性的东西往往是能自动化处理的切入口。 - 使用自动化翻译工具来替代人工翻译,人工只需要校验翻译是否正确即可,解放大量的查询与翻译工作
- 通过流程化与自动化的管理来减少开发过程中频繁替换内容的工作,避免过大的工作量以及人为的原因带来的替换失误。
- 通过流程化来规范各个角色的工作范围,使产品人员只关注产品成果,开发人员只关注开发内容,翻译人员只关注翻译。
优化后的流程如下:
四、方案设计
1、总体架构
2、数据结构
3、脚本处理时序图
4、词条上传处理逻辑
4.1、上传时序图
4.2、上传处理逻辑(以java为例)
5、词条的导出与导入
6、客户端的实时加载
7、版本的发布与回滚
五、功能性目标
- 支持脚本工具扫描开发文件,并成功上传到i18n-service上
- i18n-service支持自动化翻译与校对翻译内容
- 支持翻译人员在后台进行词条国际化的确认与翻译工作
- 支持翻译人员上传与下载翻译内容
- 支持各个阶段的钉钉通知,如开发人员上传完词条通知、版本发布通知,回滚通知
- 完成产品需求文档中所有功能