国际化方案的思考——方案选型的重要性

简介: 中文版功能实现以后,根据部门进度要求要实现英文版(除简体中文外的系统都设置为英文)。个人最初的理解,无非是将供客户使用的部分(界面、提示信息)由中文改为英文,无非是工作量的问题。但实际操作3周发现,远远比我想象的要复杂很多。

一、方案选型


       为提高工作效率,选用其他部门在Linux系统下已经实现过的成熟的方案gettext抽取替换方案,详见http://www.gnu.org/software/gettext/


      gettext方案原理如下:


      第一步:从源程序中提取出中文字符,包含文件路径、行号、中文字符。如下:D:\TestDemo\TestDemo.cpp:52  “提示信息”;


      第二步:用gettext官网提供的处理方式,将中文字符生成po文件,可以以一个工程为一个单位或者多个工程一个单位生成;


      第三步:用gettext官网工具将po文件中的中文,对应翻译为英文;


      第四步:将po文件生成为mo文件,mo文件能够被工程运行时候识别,并能将翻译的英文在对应的程序位置替换中文串。


二、中途发现方案遇挫


       貌似gettext方案天衣无缝,我们团队很快按照步骤一到步骤四展开。前期提取中文字符、转换也花费了几天时间。但是,当基本生成mo文件测试的时候发现,部分中文替换成功,部分显示为乱码。


       究其部分为什么没有转换成功的原因,可供参考的也只有gettext官网windows部分的解释文档,大致是下载gettext源码在windows下调试,需要搞清楚gettext源码实现部分的原理,难度较大。并且由于英文版时间有限,不能在此处纠结太久,所以导致gettext方案搁浅。


三、重选方案


       衡量下核心供用户显示的中文串的数量,分到每个人身上也就有不到1000个中文字符串需要处理。Windows程序主要分布在源码(.c/.cpp/)、rc文件、打包文件nsi中。并且Windows的rc文件手动复制就可以选择语言,由中文变为英文,如下图所示,然后修改对应rc文件即可(用nodepad++处理会更快捷)。image.png

核心的cpp或者c程序文件的中文串,可以通过单独提取出中文串,存储到rc文件中,中文、英文各一份,用到中文的地方通过Loadstring来加载就基本能搞定。用法可参考msdn, 如:LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING)。


      该方案看似老土,但对windows程序能确保在英文系统、繁体系统下不会有乱码,一劳永逸。


四、方案选型思考


      1、“心急吃不了热豆腐”,方案选型着实非常重要。对于方案可能的风险也要在前期有一定的评估,才能确保方案的正确性、可行性。


      2、方向的确很重要,方向如果出错,前期大量的时间都会是无用功。


      3、在调试bug的时候其实本人也是采取了替换,确保单一变量的方法但没有坚持,耽误了时间。去请教大牛,其也是采用了同样的方法,但其注意每一个提示的细节,搞清楚为什么不的原因,最终搞定。印证了老罗的一句话“天才的一半也是勤奋,只是这一半隐藏的比较深而已”。



image.png

相关文章
|
6月前
业务系统架构实践问题之领域设计的重要性如何解决
业务系统架构实践问题之领域设计的重要性如何解决
|
6月前
业务系统架构实践问题之定制点的大小怎么设计如何解决
业务系统架构实践问题之定制点的大小怎么设计如何解决
|
6月前
|
缓存 人工智能
通用研发提效问题之女娲的缓存方案,体现易用性的四重境界,如何解决
通用研发提效问题之女娲的缓存方案,体现易用性的四重境界,如何解决
|
6月前
|
存储 缓存 运维
通用研发提效问题之什么是通用化方案,提高女娲的适用性如何解决
通用研发提效问题之什么是通用化方案,提高女娲的适用性如何解决
|
6月前
业务系统架构实践问题之实现平台集中复用和业务自主灵动的方式问题如何解决
业务系统架构实践问题之实现平台集中复用和业务自主灵动的方式问题如何解决
|
移动开发 前端开发 JavaScript
做前端技术方案选型的时候,你是怎么做决策的?
做前端技术方案选型的时候,你是怎么做决策的?
173 0
|
自然语言处理 JavaScript 前端开发
如何解决前端多语言选型和实现难题?
多语言(i18n)支持 是企业项目走向国际化的必经之路,也是前端工程师最佳实践的内容之一。不过,多语言框架众多,会带来一系列选型问题,相信大家在平时对项目进行多语言支持时,也往往会遇到如下几个问题:
1247 0
|
运维 负载均衡 Kubernetes
技术方案(开源方案)选型的考量和方法论
技术方案(开源方案)选型的考量和方法论
|
人工智能 安全 搜索推荐
如果你在选型低代码平台,可以从这5个角度去分析抉择
如果你在选型低代码平台,可以从这5个角度去分析抉择
152 0
|
存储 数据可视化 架构师
「方案架构」“解决方案架构”日常思维
「方案架构」“解决方案架构”日常思维