我想问一个关于在UI上支持多种语言的桌面应用程序的问题。
在我搜索关于这个主题的现有问题时,我想到了单词“International”,所以我选择了国际化标签并阅读了一些匹配的问题。
最终,我意识到我可能应该在标记为本地化的问题下寻找。然而,我似乎不是唯一一个把这两个术语混淆的人。
那么,本地化和国际化之间的关键区别是什么?
另外,它们之间的明确区分真的那么重要吗?
我想问一个关于在UI上支持多种语言的桌面应用程序的问题。
在我搜索关于这个主题的现有问题时,我想到了单词“International”,所以我选择了国际化标签并阅读了一些匹配的问题。
最终,我意识到我可能应该在标记为本地化的问题下寻找。然而,我似乎不是唯一一个把这两个术语混淆的人。
那么,本地化和国际化之间的关键区别是什么?
另外,它们之间的明确区分真的那么重要吗?
当前回答
如果你按照下面的定义,这很简单,
I18n(国际化)是
设计应用程序的过程,使其具有 不需要对应用程序进行编程更改而更改为不同语言的功能。
L10n(本地化)是
创建实际特定于语言的文本和格式的过程。
其他回答
如果你按照下面的定义,这很简单,
I18n(国际化)是
设计应用程序的过程,使其具有 不需要对应用程序进行编程更改而更改为不同语言的功能。
L10n(本地化)是
创建实际特定于语言的文本和格式的过程。
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
很多答案,很多正确的信息,但我的答案是另一个观点。
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 |
这里开发者不需要更新代码,翻译功能就能正确地携带相应的文本。
国际化为应用程序本地化做好准备。例如,您可以使用Unicode (utf8mb4而不是latin1)对存储在数据库中的字符进行编码,将字符串移动到资源文件中,启用日期、时间和货币格式等。
例如,当你想出售你的应用程序的中文版本时,你可以通过雇佣翻译人员来构建zh-CN资源文件,并使用新的日期/时间/货币格式来本地化它。
简单地说,
国际化(I18N)是使您的软件能够适应不同语言、地区和文化的过程。
本地化(L10N)是将软件翻译成多种语言的过程。但是在本地化您的软件之前,您必须将其国际化。