我想问一个关于在UI上支持多种语言的桌面应用程序的问题。
在我搜索关于这个主题的现有问题时,我想到了单词“International”,所以我选择了国际化标签并阅读了一些匹配的问题。
最终,我意识到我可能应该在标记为本地化的问题下寻找。然而,我似乎不是唯一一个把这两个术语混淆的人。
那么,本地化和国际化之间的关键区别是什么?
另外,它们之间的明确区分真的那么重要吗?
我想问一个关于在UI上支持多种语言的桌面应用程序的问题。
在我搜索关于这个主题的现有问题时,我想到了单词“International”,所以我选择了国际化标签并阅读了一些匹配的问题。
最终,我意识到我可能应该在标记为本地化的问题下寻找。然而,我似乎不是唯一一个把这两个术语混淆的人。
那么,本地化和国际化之间的关键区别是什么?
另外,它们之间的明确区分真的那么重要吗?
当前回答
There are a few very good answers here, so I won't recycle them. However at some point, typically between internationalization testing and localization linguistic testing, internationalization and localization tend to overlap. One person mentions l10n feeding back to internationalization, but if you are doing quality i18n testing, and creating pseudo-localized content, then iterating on development issues during localization should be the exception, not the rule. Interface resizing, and particularly adapting pages to support bi-directional languages like Arabic and Hebrew also tend to blend both localization issues and internationalization engineering.
可以说,国际化涉及对源代码进行更改,以根据需求支持任何语言环境。如果国际化做得好……
...本地化涉及内容和某些层次的表示(例如粗体标签)的调整,以便最好地满足特定目标市场(地区)的需求。
很多文章和白皮书供参考:http://www.lingoport.com/software-internationalization-articles
其他回答
国际化(i18n)改变软件的过程,使其不再局限于一种语言/地区/文化。 本地化(l10n)向软件中添加适当资源以支持特定语言/地区的过程。它的范围比维基百科上的这条条目要大,但这是一个良好的开端。
区别它们的价值在于(理论上)一旦你的程序经过了i18n进程,你就可以根据需要迭代许多l10n进程;此外,语言的精确性也很好。
国际化为应用程序本地化做好准备。例如,您可以使用Unicode (utf8mb4而不是latin1)对存储在数据库中的字符进行编码,将字符串移动到资源文件中,启用日期、时间和货币格式等。
例如,当你想出售你的应用程序的中文版本时,你可以通过雇佣翻译人员来构建zh-CN资源文件,并使用新的日期/时间/货币格式来本地化它。
苹果公司表示:
国际化是一个设计和建设国际化的过程 申请提供便利 本地化。本地化, 转,是文化和语言 适应一个国际化 应用于两个或更多 具有文化独特性的市场。
L10n有时可以显示您的i18n失败的地方——例如,您的字典中有一个单词的单一条目,该单词在英语中用作名词和动词,但在另一种语言中不能翻译成相同的单词,或者UI元素/设计不适合某种文化(L/R方向)。
所以l10n“通常”发生在i18n之后,但可以反馈到你的i18n,并需要进一步重新设计,所以你不能认为你的应用程序完全国际化,直到你做了一些本地化。
很多答案,很多正确的信息,但我的答案是另一个观点。
Internationalization - it is when developer does not have in code direct messages/error messages/buttons names/labels captions/etc in certain language but have a key which is passed to translation function, and translation function according to current user's locale will return final text in english/france/etc... Translation function works with storage (db/files/associative array/etc). Storage contains keys which is ussed in coode, and values, which is texts in certain language which application supports.
本地化—这是一个用新的语言(例如西班牙语)添加新的值到存储键的过程,而不需要开发人员参与这个过程。
例如,我们有存储:
key | english | italian |
------+------------+-------------------+
title | Welcome | Benvenuto |
agree | I agree | Sono d'accordo |
thank | Thank you | Grazie |
它在代码中使用国际化,比如confirm(t(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 |
这里开发者不需要更新代码,翻译功能就能正确地携带相应的文本。