本地化与国际化有什么关系?

问题

“国际化”和“本地化”指什么?它们之间有什么关系?

答案

仁者见仁,智者见智。本文基于W3C网站中常见的、高频的场景,对“国际化”和“本地化”进行定义。

本地化

“本地化”通常是指一种适配方式,让产品、程序或者文档,适配特定地区语言、文化和市场。

本地化(localization)在英语中一般简写为“l10n”, 其中10指“l”和 “n”之间共包含10个字母。

狭义的本地化是指用户界面或者相关文档的翻译,广义的本地化更为复杂,涵盖且不限于以下内容:

  1. 数字、日期和时间的格式化
  2. 货币使用习惯
  3. 键盘使用习惯
  4. 字符的组合和排序
  5. 符号、按钮和颜色的使用习惯
  6. 在特定语言环境下,一些容易引起误解或者相对的敏感的文本和图片处理
  7. 本地化的法律要求
  8. 其他。

特定情况下,本地化甚至需求对于一些复杂的逻辑流程,视觉设计和呈现效果进行重新思考,比如会计业务出海。假如与原始文化差距较大,还需要对用户模型进行重新设计。

国际化

对“国际化”的定义也不尽相同,此处采用W3C官方最常用的定义。同时,国际化在其他场合也会有不同的叫法,比如“全球化”。

“国际化”是指一种软件设计和开发的模式,目的是让系统、程序或者产品,便捷的满足不同文化、地区和语言的本地化诉求。

国际化(internationalization)在英语中一般简写为“i18n”, 其中18指“i”和 “n”之间共包含18个字母。

国际化通常包含以下推荐模式:

  1. 采用全球化的开发模式。包括且不限于:使用Unicode,兼容各国特殊字符编码,支持字符串的拼接和RTL反转,避免代码中混杂文案等。
  2. 本地化的功能扩展支持。例如:DTD双向文本的扩展支持,语言标识符的扩展支持,直排文本的扩展支持,非拉丁文本排版的扩展支持等。
  3. 默认支持本地化、区域性、特殊语言和文化相关的偏好。确保相关库和偏好设置具备足够的扩展性和延伸性,比如:日期和时间的格式化、本地化的日历、数字格式化和数字系统,字符的排序和列表,个人姓名和地址格式的处理等
  4. 本地化元素的配置化。这样,需要的时候可以根据用户的国际化偏好设置,加载本地模式。

注意:某些内容、程序或者产品转换为另一个语言的过程中,上面的过程并非都是必须的;但是,作为设计和开发的最佳实践,可以让系统快速支持出海本地化。纵使短期没有本地化的诉求,也可以提升系统的扩展性。

国际化的价值

相较于只做简单的文本适配,真正开发一款从语言到文化都适配全球化的产品复杂度和人力成本都非常高。因此,国际化的设计理念和最佳实践对于软件和产品的本地化非常重要。(回头想想,“千年虫”问题,由于没有遵守最佳实践,设计基于"19xx"开发时间,减少了两个字符,引发了重大问题)

因此,理想的架构下,国际化理念应该在软件的起步和开发阶段就被考虑,而不是当遇到问题时,花费宝贵的时间和大量人力进行重构和重写。