昨天一整晚都没睡好,脑袋里一直有一个想法徘徊不去。

现在有成千上万的软件都要面临国际化与本地化的问题,尤其是多语言版本的软件。

一般语言翻译都是对一个模板文件进行翻译,而这个模板文件绝大部分都是英语文件。

每条msgid 对应一种语言的翻译语句,比如简体中文,在开源软件中一般为zh_CN.pot。

考虑到很多软件项目中大量的翻译语句有很多输出消息都是重复的,不同项目的开发者必须对这些语句都要翻译一遍,

或者软件更新模板文件后也要对相应的翻译文件做相应的修改,这些工作都是琐碎而简单的重复劳动。

面对成百上万条msgid,大量的翻译工作在不同的项目中进行,而这些都加在一起就是百万条,千万条,甚至上亿条。

在这些大量的msgid中肯定有很多重复的,尤其是同一个领域的软件项目。

而这些重复的msgid就是非常有用的,借助现有翻译文件可以建立一个消息翻译的数据库,

每一字段都表示一种语言,还可以加一个使用频率字段,这样我们就可以将现有的翻译消息存储在数据库中,也可以得

到每条msgid的使用频率,那么在进行一次新的消息翻译时就可以优先使用数据库中的信息,或许就有相应的翻译消息,

然后再翻译剩下的消息。就像拼音词库一样,但要更简单,合理利用已有的翻译资源,这可为我们省下大量的时间,

我们需要做的就是对翻译消息进行审查以及完成那些数据库中没有的消息,然后再向数据库中添加新的消息翻译记录,

这一部分可以由专人进行负责,务必确保存入数据库中的翻译消息是准确的,完整的。

这个想法的实现很简单,相信很容易实现。但是前提条件就是数据库中的信息要足够多,要有一定的使用频率,这就要求许多的开发项目的翻译工作能够进行合作,共同为数据库贡献翻译消息,当然,如果本身的翻译工作比较多的话,也是可以建立一个自己的翻译消息数据库的。不过,多个项目的合作无疑更为有用,可使参与者均都受益。

当然,这可能会涉及到保密问题,那就仅提供那些可公开的翻译信息就可以了,其实翻译语句是一条一条的,仅通过这些杂乱的信息是不会泄露太多软件秘密的。这对于开源软件项目来说,几乎不是问题,那些没有保密消息的软件项目也一样。

当然,参与的项目多了,就要考虑用服务器了,毫无疑问,数据库的查询量会很大。

说到这里,人人基本上都能够理解这个想法了,以下是我的一些设想:

多社区合作,软件公司也可参与,收集现存的翻译消息建立初始数据库,统计出使用频率,进一步优化、核查,建立可用数据库,部署在服务器上,向参与人员开放服务。同时建立一个或几个收集翻译消息的数据库用于收集用户提交的信息,还需要相关人员对其进行核查,将具有一定使用频率,完整的翻译消息存入可用数据库。在客户端就是对消息进行一些查询操作,提交自己翻译的新消息,对翻译文件进行处理等,建议对翻译文本处理要优先考虑,这样便于进行批量处理,查询、提交时都可进行批量处理,这样有助于减少服务器负载。

由于翻译消息都不是很长,特别长的建议自己搞定,而存储的信息基本属于文本格式,所以即使有上亿条信息,也不会占用太多的存储空间。可以估算一下,每种语言字段用300Byte,一亿条占用27.94GB,十种语言占270.94GB,二十种占558.79GB,当然这个是没有经过存储压缩的。对于那些上PB的存储服务来说,简直就是九牛一毛。而且,在不同的地域,对翻译语言的需要也会不同,这就可根据自己的情况决定使用那些语言了。

文本字符编码建议用宽字符,如UTF-8,这样可以解决不同语言查询匹配问题。

也可以建一个翻译网站,对需要翻译的信息进行集中处理,结合各个参与社区的力量进行翻译,这样更有助于国际化与本地化的实现,也可让翻译人员能够更好的交流协作,参与人员共享翻译成果。这只是我想出的另一个建议,可能不容易实现。

对于小团队来说,可能想建一个符合自己需要的数据库,那就去自己动手实现它吧!可以采用自己喜欢的数据库,可以设计自己的服务器与客户端,针对自己的情况开发出一个满足自己需要的软件。原理很简单,就看你怎么实现了。

以上就是让我昨晚睡不着的原因了,O(∩_∩)O哈!不知道为什么会出现这种想法,难道是受这几天翻译文献的影响?话说,这几天翻译了一些物理方面的文献,头都快晕了。

说的不周到的地方,令你困惑的地方,都可以提出来,欢迎大家指正!

附注:想到建立索引的问题,可以将需要索引的字段,比如英语字段,生成sha1值,添加hash1字段,仅对sha1字段建立索引就可以了,这是从git项目中获得灵感。这样存储文本时就不必要求宽字符了。且仅对sha1值检索也要更快。

关于软件国际化与本地化的一些想法相关推荐

  1. 软件I18N/L10N软件国际化与本地化

    I18N/L10N:是指软件的国际化和本地化,通俗的讲就是语言的国际化和本地化.国际语言:英语.汉语.德语...  本地化:繁体.简体.藏语...国家内部的语言. I18N: 软件国际化,即inter ...

  2. 软件的国际化与本地化

    "软件的国际化"(Internationalization,即i18n)是设计或转换已有程序以使其能在不同"地方"(Locale)使用的过程:"软件的 ...

  3. django 1.8 官方文档翻译: 9-1-1 国际化和本地化

    国际化和本地化 概述 国际化和本地化的目的就是让一个网站应用能做到根据用户语种和指定格式的不同而提供不同的内容. Django 对文本翻译, 日期.时间和数字的格式化,以及时区提供了完善的支持. 实际 ...

  4. java软件国际化解决方案

    Java提供给我们软件国际化的解决方案,这些国际化API基于Unicode标准,并且包括文本.(货币)数字.日期以及用户自定义对象的适配,从而使得软件能够应用到任何国家或地区.国际化英文为" ...

  5. JDK 软件国际化概述

    JDK 软件国际化概述 简介 修改日期:98 年 10 月 5 日 全球化的互联网要求全球化的软件 - 即,软件可以独立于用户的国家或语言进行开发,然后可以进行多个国家和地区的本地化.JDK(全称 J ...

  6. Java程序的国际化和本地化介绍

    IBM : developerWorks 中国网站 : Java : 所有的文章 Java程序的国际化和本地化介绍 邵荣 (youcenter@yahoo.com) 软件工程师, CA有限公司研发中心 ...

  7. Flask 教程 第十三章:国际化和本地化

    本文转载自:https://www.jianshu.com/p/e2923f4042d6 这是Flask Mega-Tutorial系列的第十三部分,我将告诉你如何扩展Microblog应用以支持多种 ...

  8. web框架flask(12)——国际化和本地化

    2019独角兽企业重金招聘Python工程师标准>>> 国际化和本地化 今天的文章的主题是国际化和本地化,通常简称 I18n 和 L10n.我们想要我们的 microblog 应用程 ...

  9. Qt Quick的国际化和本地化

    Qt Quick的国际化和本地化 Qt Quick的国际化和本地化 国际化您的应用程序 1.对所有文字用户界面字符串使用qsTr() 2.为翻译器添加上下文 3.歧义相同的文本 4.用于%x将参数插入 ...

最新文章

  1. C++——包装器std::function与绑定器std::bind
  2. 面板——卡片面板、常规折叠面板、手风琴折叠
  3. 参数 相等_ANSYS DesignXplorer 参数化优化在水冷板流道设计中的应用
  4. LeetCode(860)——柠檬水找零(JavaScript)
  5. [渝粤教育] 西南科技大学 现代制造系统 在线考试复习资料2021版
  6. 有这就够了小香港五味俱全——专升本高数
  7. SSM汽车维修中心管理系统
  8. 微信群有效期可以延长吗?突破微信群7天有效期有什么办法?
  9. 阿克曼运动模型(ackermann)的一些资料-室外光电组参考资料
  10. 东北大学OJ-1216: 实验2-6 :计算圆椎体体积
  11. docker限制容器下载速度
  12. mac下vscode代码格式化及其他常用快捷键
  13. mongodb集群修改IP地址
  14. Missing Marketing Icon - iOS Apps must include a 1024x1024px Marketing Icon in PNG format
  15. jwt 如何实现踢人,session 和 jwt 鉴权的区别
  16. 输入年月 输出日历表
  17. 6-1 简单创建对象 (10分) java
  18. 唯样商城:从黑暗到光明,LED照明演变史知多少?内有彩蛋
  19. 困时, 累时, 找些句子, 换一种方式思考
  20. 315维权大数据报告:手机爆炸事件仍在发生,国民安全受到严重威胁!

热门文章

  1. VisualStudio工程设置(三)---Pclint集成VS2013及常见用法
  2. PyTorch安装报错
  3. 大棚养殖胡萝卜个头小?资产监测设备解决该问题
  4. ssh断开连接后如何保持远程 SSH 会话运行
  5. android6.0 工具包,Android6.0以上安装安装包
  6. Tensorflow 摄像头物体实时识别
  7. 小甲鱼python入门笔记(二)
  8. 【FFmpeg】AVFrame及相关函数详解
  9. chrome浏览器下的性能测试脚本录制
  10. 量化交易 聚宽 多因子策略(市值, ROE)