我想问一个关于在UI上支持多种语言的桌面应用程序的问题。

在我搜索关于这个主题的现有问题时,我想到了单词“International”,所以我选择了国际化标签并阅读了一些匹配的问题。

最终,我意识到我可能应该在标记为本地化的问题下寻找。然而,我似乎不是唯一一个把这两个术语混淆的人。

那么,本地化和国际化之间的关键区别是什么?

另外,它们之间的明确区分真的那么重要吗?


当前回答

i18n和l10n有很多定义。我用的是:

国际化(i18n):对应用程序进行特定于语言的调整(翻译)

本地化(l10n):对应用程序进行特定于地区的调整(货币、数字格式、日期格式……)

例如,我们可以在法国和瑞士使用相同的语言发布应用程序(我们都说法语,至少在瑞士的某些地区),但是我们仍然需要进行一些调整,将欧元更改为瑞士法郎。

其他回答

很多答案,很多正确的信息,但我的答案是另一个观点。

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          |

这里开发者不需要更新代码,翻译功能就能正确地携带相应的文本。

简单地说,

国际化(I18N)是使您的软件能够适应不同语言、地区和文化的过程。

本地化(L10N)是将软件翻译成多种语言的过程。但是在本地化您的软件之前,您必须将其国际化。

我觉得本地化可以没有国际化,但是… 国际化和本地化不应该做……

L10n有时可以显示您的i18n失败的地方——例如,您的字典中有一个单词的单一条目,该单词在英语中用作名词和动词,但在另一种语言中不能翻译成相同的单词,或者UI元素/设计不适合某种文化(L/R方向)。

所以l10n“通常”发生在i18n之后,但可以反馈到你的i18n,并需要进一步重新设计,所以你不能认为你的应用程序完全国际化,直到你做了一些本地化。

让我们先了解语言环境

区域设置——一组参数,用于定义用户的语言、区域以及用户希望在用户界面中看到的任何特殊变量首选项。通常,区域设置标识符至少包含一个语言标识符和一个区域标识符。

i18n -设计和开发支持多种语言环境的软件。

l10n—只有当您的软件支持i18n时才有可能。但是l10n确保语言、日期格式、货币格式等在特定地区的上下文中显示。

例如,

# 1。1977年6月3日将被翻译成西班牙语为3 de junio de 1977。

# 2。一些国家的货币以'。' vs ','

# 3。根据地区的国家显示各自的货币符号

#1、#2和#3是本地化用例。

如果软件被设计为基于用户语言环境支持#1、#2或#3,那么product启用了l10n。

如果它支持多个地区,则启用了i18n。