Localization 如果您有一个本地化为pt br和pt pt的应用程序,如果系统仅报告,您应该选择哪种语言;pt";密码?

Localization 如果您有一个本地化为pt br和pt pt的应用程序,如果系统仅报告,您应该选择哪种语言;pt";密码?,localization,internationalization,culture,Localization,Internationalization,Culture,如果您的应用程序本地化为pt br和pt,如果系统仅报告ptcode(通用葡萄牙语),您应该选择哪种语言 此问题与应用程序、桌面、移动或基于浏览器的应用程序的性质无关。假设您无法从其他来源获取地区信息,您必须选择一种语言作为默认语言 该问题也适用于更多情况,包括: pt-pt和pt-br en-us和en-gb fr-fr和fr-CA zh cn,zh tw,…-事实上,在这种情况下,我知道zh可以作为简体中文的主要语言,其中完整的代码是zh-hans。对于繁体中文而言,对于像zh-tw,zh

如果您的应用程序本地化为
pt br
pt
,如果系统仅报告
pt
code(通用葡萄牙语),您应该选择哪种语言

此问题与应用程序、桌面、移动或基于浏览器的应用程序的性质无关。假设您无法从其他来源获取地区信息,您必须选择一种语言作为默认语言

该问题也适用于更多情况,包括:

  • pt-pt
    pt-br
  • en-us
    en-gb
  • fr-fr
    fr-CA
  • zh cn
    zh tw
    ,…-事实上,在这种情况下,我知道
    zh
    可以作为简体中文的主要语言,其中完整的代码是
    zh-hans
    。对于繁体中文而言,对于像
    zh-tw
    zh-hant-tw
    zh-hk
    zh-mo
    这样的代码,正确的代码(规范)应该是
    zh-hant
Q1如何确定指定元语言的主要语言?

我需要一个至少包括葡萄牙语、英语和法语的解决方案


Q2:如果系统报告简体中文(PRC)(
zh cn
)为用户的首选语言,并且我只翻译英文和繁体中文(
en,zh tw
我应该从两个选项中选择什么:
en
zh tw

您希望葡萄牙或巴西有更多的用户吗?相应地挑选


对于您的一般解决方案,您可以通过阅读了解。

通常,您应该将“猜测缺少的参数”问题与“匹配我想要的区域设置列表与我拥有的区域设置列表”问题分开。他们是不同的

猜测缺失的部分

这些都是棘手的领域,甚至(可能)带有政治色彩

但除了极少数例外,规则是选择语言的“原始国家”。 例外情况主要基于人口。 所以fr,fr,es,es,等等。 一些例外情况:pt BR代替pt pt,en US代替en GB

zh映射到zh CN也是普遍接受的(并且是中国标准所要求的)

您可能还需要查看国家以确定脚本,或者反过来看。 例如,az=>az但az Arab=>az Arab IR,az_IR=>az_Arab_IR

匹配“想要”与“拥有”

这涉及到匹配想要的语言列表和拥有的语言列表。 处理清单会让事情变得更难。如果可能的话,结果也应该以智能的方式进行排序。(例如,如果
want=[fr-ro]
have=[en-fr-CA-fr-ro]
那么您可能想要
[fr-fr-CA-ro]

具有不同脚本的语言之间不应该存在匹配。因此,zh-TW不应该回退到zh-CN,而mn-Mong不应该回退到mn-Cyrl。 棘手的地方:理论上,sr-Cyrl不应该回退到sr-Latn,但用户可能会理解它。ro-Cyrl可能回退到ro-Latn,但不是相反

一些参考资料

  • RFC4647处理语言回退(但在这种情况下不是很有用,因为它遵循“从右切入”规则)
  • ICU 4.2和更新版本(我认为是4.0版本的草案)在
    uloc.h
    中添加了
    uloc\u类似的子标签
    (以及
    uloc\u最小化子标签
    ),实现了
  • 同样在ICU
    uloc.h
    中,还有来自HTTP的
    uloc_acceptLanguage和
    uloc_acceptLanguage
    来处理想要与拥有。但是它们是无用的,因为它们以一个eNumeration*作为输入,并且没有公共API来构建一个eNumeration
  • 除了简单的RFC4647之外,还有一些关于语言匹配的工作
  • 位于的ActionScript中的区域设置匹配
  • 新Flash播放器10.1中的API >代码> FLASH。全球化命名空间做标记猜测和语言匹配()。它在TR—35上工作,可以超越@并考虑操作。例如,如果<代码>有[JA ]。ja@collation=根ja@calendar=日语]
    want=[ja@calendar=日语;排序规则=部首]
    那么最佳匹配取决于所需的操作。对于日期格式ja@calendar=日语是更好的匹配项,但要进行排序ja@collation=根

  • 谢谢,这看起来是一个很好的信息来源。我认为“代码> PT BR ,<代码> FR FR ,<代码> ZHCN和<代码> Eng/<代码>可以被认为是他们的组中的主要组成部分。“EN美国而不是EN。”我认为最后一个应该是E-GB(后裔:-)。谢谢托马斯。