这个线程已经得到了回答,但我发现了 CreateSpecificCulture API 的一个独特发现,它有时可能不那么明显。所以我认为这个线程是我发现的一个合适的地方。我为此花了几天时间,所以只想分享我的经验,如果它也可以为其他人节省几个小时或几天。
在使用 API 时,仅传递文化名称(如pt
(葡萄牙语)或de
(德语))时,此 API 返回与区域设置相对应的特定文化,该区域被称为该文化的默认区域设置。现在这个语言环境可能不像听起来我卡住的地方那么明显了。对于德语,de-DE
看起来很明显这是在德国说的德语。对于意大利语,it-IT
看起来很明显这是在意大利说的意大利语。
pt-PT
对于在葡萄牙说的葡萄牙语来说,同样的情况也很明显。不幸的是,事实并非如此。基于不确定的确切原因(可能是人口、原籍国、国家语言等),存在全球标准化,当您尝试从文化 id 创建特定文化时,根据该标准确定给定文化的默认区域设置(pt
在这种情况下)。Microsoft 在以下链接中记录了整个列表:
http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx
如果您想知道给定文化或语言的默认国家/地区区域设置,只需匹配上述链接中的最后一列(语言名称缩写)代码。
对于葡萄牙语,不变文化的语言名称缩写“葡萄牙语”与“葡萄牙语(巴西)”相匹配,即 PTB。葡萄牙语(葡萄牙)有不同的代码PTG
。所以在这种情况下,葡萄牙语(巴西)是葡萄牙语的默认语言环境。
如果您的应用程序逻辑或要求以任何方式依赖此 API 的这种行为,您必须谨慎。这种行为在基于 Web 的应用程序中变得更加重要,因为市场上的所有浏览器也遵循这些准则,并在您查看多语言网站的本地化版本时在 http 请求标头中发送适当的信息。
我仍在寻找原因,尽管这是将特定国家/地区设置为任何文化的默认语言环境的因素,这在葡萄牙语的情况下听起来并不那么明显。欢迎任何信息或评论。