我想问一个关于在UI上支持多种语言的桌面应用程序的问题。
在我搜索关于这个主题的现有问题时,我想到了单词“International”,所以我选择了国际化标签并阅读了一些匹配的问题。
最终,我意识到我可能应该在标记为本地化的问题下寻找。然而,我似乎不是唯一一个把这两个术语混淆的人。
那么,本地化和国际化之间的关键区别是什么?
另外,它们之间的明确区分真的那么重要吗?
我想问一个关于在UI上支持多种语言的桌面应用程序的问题。
在我搜索关于这个主题的现有问题时,我想到了单词“International”,所以我选择了国际化标签并阅读了一些匹配的问题。
最终,我意识到我可能应该在标记为本地化的问题下寻找。然而,我似乎不是唯一一个把这两个术语混淆的人。
那么,本地化和国际化之间的关键区别是什么?
另外,它们之间的明确区分真的那么重要吗?
当前回答
i18n和l10n有很多定义。我用的是:
国际化(i18n):对应用程序进行特定于语言的调整(翻译)
本地化(l10n):对应用程序进行特定于地区的调整(货币、数字格式、日期格式……)
例如,我们可以在法国和瑞士使用相同的语言发布应用程序(我们都说法语,至少在瑞士的某些地区),但是我们仍然需要进行一些调整,将欧元更改为瑞士法郎。
其他回答
国际化为应用程序本地化做好准备。例如,您可以使用Unicode (utf8mb4而不是latin1)对存储在数据库中的字符进行编码,将字符串移动到资源文件中,启用日期、时间和货币格式等。
例如,当你想出售你的应用程序的中文版本时,你可以通过雇佣翻译人员来构建zh-CN资源文件,并使用新的日期/时间/货币格式来本地化它。
类比pov:想象一下,在你的图书馆里,一个书架只能放4x4英寸的一本书。国际化就是用各种不同的隔层来建造书架,这样可以容纳任何大小或形状的书。本地化就是把所有的书都放在正确的位置。把你的数据库、业务逻辑和UI想象成书架,把不同的语言、货币和文本方向想象成书籍。
全球化(G11n):是面向全球市场开发和销售多语言软件产品的过程。
目前多语言软件的发展经历了两个阶段:第一阶段是国际化,第二阶段是本地化。
国际化(I18n):泛化一个产品的过程,这样它就可以处理多种语言和文化习俗,而不需要重新设计(即语言和文化中立)。
本地化(L10n):是将产品在语言和文化上适合目标地区(国家/地区和语言)使用和销售的过程(即特定语言和文化)。
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 |
这里开发者不需要更新代码,翻译功能就能正确地携带相应的文本。