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

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

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

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

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


当前回答

简单地说,

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

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

其他回答

全球化(G11n):是面向全球市场开发和销售多语言软件产品的过程。

目前多语言软件的发展经历了两个阶段:第一阶段是国际化,第二阶段是本地化。

国际化(I18n):泛化一个产品的过程,这样它就可以处理多种语言和文化习俗,而不需要重新设计(即语言和文化中立)。

本地化(L10n):是将产品在语言和文化上适合目标地区(国家/地区和语言)使用和销售的过程(即特定语言和文化)。

根据维基百科

国际化是设计软件应用程序的过程,这样它就可以在不进行工程更改的情况下适应各种语言和地区。

本地化是通过添加特定于地区的组件和翻译文本,使国际化软件适应特定地区或语言的过程。

此外,本地化(对于不同的地区可能执行多次)使用国际化提供的基础设施或灵活性(理想情况下只执行一次,或作为正在进行的开发的一个组成部分)。

国际化-从任何特定的语言/文化中抽象应用程序。

本地化- l10n-在上面的i18n框架中插入对特定语言/文化/地区的具体支持。

基本上通过先做i18n,你得到的l10n比PITA少得多。

相反,如果你先在一个具体的地区创建一个应用程序,然后再尝试国际化它,它将是一个巨大的PITA。这不是简单地将一个具体的英文字符串“HelloWorld”转换为Resource.Global.HelloWorld。

不同的语言有不同的空间要求、布局、重点、颜色等。

如果您甚至认为可能需要支持多个语言环境,那么您需要从一开始就使用i18n框架来轻松地支持针对上述差异的语言环境切换。

稍后将其改造到应用程序中是非常困难的。您将不得不重新审视您(或其他人)在第一次中提出的整个体系结构注意事项和限制条件。

类比pov:想象一下,在你的图书馆里,一个书架只能放4x4英寸的一本书。国际化就是用各种不同的隔层来建造书架,这样可以容纳任何大小或形状的书。本地化就是把所有的书都放在正确的位置。把你的数据库、业务逻辑和UI想象成书架,把不同的语言、货币和文本方向想象成书籍。

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

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          |

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