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

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

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

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

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


当前回答

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

其他回答

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)是将软件翻译成多种语言的过程。但是在本地化您的软件之前,您必须将其国际化。

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

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

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

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

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

如果您甚至认为可能需要支持多个语言环境,那么您需要从一开始就使用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          |

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