如果您的应用程序本地化为pt-br和pt-pt,那么如果系统只报告pt代码(通用葡萄牙语),您应该选择哪种语言?
这个问题独立于应用程序的性质,桌面、移动或基于浏览器。让我们假设您无法从另一个源获取区域信息(),您必须选择一种语言作为默认语言。
这个问题也适用于更多的案件,包括:
pt-pt和pt-bren-us和en-gbfr-fr和fr-CAzh-cn,zh-tw,。事实上,在这种情况下,我知道zh可以作为简体中文的主要语言,而完整的代码是zh-hans。对于繁体汉语来说,使用zh-tw、zh-hant-tw、zh-hk、zh-mo等代码时,正确的代码(规范)应该是zh-hant。Q1:如何确定指定的元语言的主导语言?
我需要一个解决方案,至少包括葡萄牙语,英语和法语。
en Q2:如果系统将简体中文(zh-cn)列为用户首选语言,而我仅为英文和繁体中文(en,zh-tw) 提供翻译,我应该从以下两个选项中选择什么:或Q2
发布于 2010-03-23 18:43:15
通常,您应该将“猜测缺少的参数”问题与“匹配我想要的区域设置列表与我所拥有的区域设置列表”问题分开。它们是不同的。
猜测缺少的部件
这些都是棘手的领域,甚至(潜在的)政治上的指责。
但除了极少数例外,规则是选择语言的“原始国家”。例外情况主要以人口为基础。因此,fr、es-ES等的fr-FR是一些例外: pt-BR代替pt-PT,en-US代替en-GB.
它也是普遍接受(并要求中国的标准),zh映射到zh-CN。
你可能还得看看国家来决定剧本,或者反过来看。例如az => az-AZ,az- => az-Arab-IR,和az_IR => az_Arab_IR。
匹配“希望”与“拥有”
这涉及到匹配一个想要的列表和一个有语言的列表。处理清单会让事情变得更困难。如果可能的话,结果也应该以一种明智的方式进行排序。(例如,如果want = [ fr ro ]和have = [ en fr_CA fr_FR ro_RO ],那么您可能希望[ fr_FR fr_CA ro_RO ]作为结果。
不同脚本的语言之间不应该有匹配。因此,zh-TW不应该倒退到zh-CN,而Mong不应该倒退到mn.棘手的领域:sr在理论上不应该倒退到sr,但用户可能会理解它。罗-西尔可能会回到罗-拉,但不是相反的。
几个参考文献
uloc.h中有uloc_addLikelySubtags (和uloc_minimizeSubtags)。实现子标签的uloc.h ),也有uloc_acceptLanguageFromHTTP和uloc_acceptLanguage处理想要的和有的。但是,尽管它们是无用的,因为它们接受一个UEnumeration*作为输入,并且没有公共API来构建UEnumeration。flash.globalization命名空间中的API同时执行标记猜测和语言匹配(US/FlashPlatform/beta/reference/actionscript/3/flash/globalization/package-detail.html)。它可以在TR-35上工作,可以超越@并考虑操作。例如,如果have = [ ja ja@collation=radical ja@calendar=japanese ]和want = [ ja@calendar=japanese;collation=radical ],那么最好的匹配取决于您想要的操作。对于日期格式化,ja@calendar=japanese是更好的匹配,但是对于排序规则,您需要ja@collation=radical发布于 2010-03-23 13:49:03
你希望在葡萄牙或巴西有更多的用户吗?选择相应的。
对于您的一般解决方案,您可以通过阅读民族来找到答案。
https://stackoverflow.com/questions/2500066
复制相似问题