我打算提出一个关于准备桌面应用程序以支持UI上的多种语言的问题.
在我搜索关于该主题的现有问题时,我正在考虑"国际"这个词,因此我选择了国际化标签并阅读了一些匹配的问题.
最终我意识到我应该在标记为Localization的问题下查找.然而,似乎我并不是唯一一个让这两个术语混淆的人.
那么,它们在本地化和国际化之间的主要区别是什么?
还有,他们之间是否真的那么重要?
区分它们的价值在于(理论上)一旦你的程序通过i18n进程,你就可以根据需要迭代许多l10n进程; 此外,精确的语言很好.
根据Apple的说法:
国际化是设计和构建应用程序以促进本地化的过程.反过来,本地化是对两个或多个文化独特市场的国际化应用的文化和语言适应.
国际化准备您的本地化应用程序.例如,您可以用Unicode(utf8mb4
而不是latin1
)编码存储在数据库中的字符,将字符串移动到资源文件,启用日期,时间和货币格式等.
例如,如果您希望销售应用程序的中文版本,则可以通过聘请翻译人员构建zh-CN资源文件进行本地化,并使用新的日期/时间/货币格式.
L10n有时可以显示你的i18n失败的地方 - 例如,你的词典只有一个单词条目用作一个名词,一个英语动词不能翻译成另一种语言的同一个单词,或者UI元素/ design不适合文化(L/R方向).
所以l10n"通常"发生在i18n之后,但可以反馈到你的i18n并需要进一步重新设计,所以你不能认为你的应用程序完全国际化,直到你做了一些本地化.
根据维基百科
国际化是设计软件应用程序的过程,以便可以适应各种语言和区域without engineering changes
.
本地化是adapting internationalized software
特定区域或语言的过程,通过添加特定于语言环境的组件和翻译文本.
此外,本地化(可能多次针对不同的语言环境执行)使用infrastructure or flexibility provided by internationalization
(理想情况下只执行一次,或作为正在进行的开发的一个组成部分).
全球化(G11n):是向全球市场开发和营销多语言软件产品的过程.
多语言软件的开发目前分为两个阶段:第一阶段是国际化,第二阶段是本地化.
国际化(I18n):推广产品的过程,使其能够处理多种语言和文化习俗,而无需重新设计(即语言和文化中立).
本地化(L10n):采用产品并使其在语言和文化上适合目标地区(国家/地区和语言)使用和销售(即语言和文化特定)的过程.
如果按照以下定义,这很简单,
i18n(国际化)是
设计应用程序的过程,使其具有更改为不同语言的 功能,而无需通过程序更改应用程序.
l10n(本地化)是
的过程中创造的实际特定语言的文本和格式.
很多答案,很多正确的信息,但是我的答案只是另一种观点。
国际化 -当开发人员在代码中没有某些语言的直接消息/错误消息/按钮名称/标签标题/等但具有传递给翻译功能的键时,翻译功能将根据当前用户的语言环境返回最终文本英文/法文/等...
转换功能可用于存储(db /文件/关联数组/等)。
存储包含用于coode的键和值,即应用程序支持的特定语言的文本。
本地化 -这是在不涉及开发人员的情况下,以适合密钥的新语言(例如西班牙)添加新值的过程。
例如,我们有存储空间:
key | english | italian | ------+------------+-------------------+ title | Welcome | Benvenuto | agree | I agree | Sono d'accordo | thank | Thank you | Grazie |
它在代码中使用的是国际化,confirm(t(agree));
而不是confirm("I agree");
或confirm("Sono d'accordo");
本地化-它是向我们的存储中添加新的语言环境,例如:
key | english | italian | spanish | ------+------------+-------------------+------------------+ title | Welcome | Benvenuto | Bienvenido | agree | I agree | Sono d'accordo | Estoy de acuerdo | thank | Thank you | Grazie | Gracias |
而且这里的开发人员不需要更新代码,翻译功能将正确地携带适当的文本。