我需要在美国格式中将“Color”拼写为“Color”,在英国格式拼写为“Color”。我的申请在这两个国家有效。我需要相应地更改拼写。我用以下代码尝试了它:
string sample = "";
if (CultureInfo.CurrentUICulture.Name == "en-US")
sample = "Color";
else
sample = "Colour";
但这种方式似乎不起作用。
答案 0 :(得分:0)
在Silverlight中,文化默认为" en-US"无论你实际在哪个国家。
您需要使用以下代码在视图类中显式设置文化:
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
相应地设置了线程文化之后:
CultureInfo ci = new CultureInfo(GetEnterpriseCultureName(enterpriseCultureId));
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
return ci.Name;
您也可以覆盖货币符号和数字分隔符。
然后,一旦你完成了,最简单的解决方案是将你的字符串放入一对资源文件中。一个刚刚叫做'#34; Resource.resx"这是默认值,另一个名为" Resource.en-US.resx" (例如)如果您的默认值是英国。
然后,.NET将根据线程的文化自动选择正确的资源。
答案 1 :(得分:0)
处理拼写中的本地化和区域差异的正确方法是使用框架中包含的Silverlight Resource Manager来完全实现这一点。
资源的分层组织
要了解如何加载资源,将它们视为以分层方式组织是有用的。本地化应用程序可以包含三个级别的资源文件:
- 在层次结构的顶部是默认文化的后备资源,例如英语(“en”)。这些是唯一没有自己文件的资源;它们存储在主组件中。
- 在第二级是任何地区中立文化的资源。区域中立文化与语言有关,但与区域无关。例如,法语(“fr”)是一种区域中立的文化。
- 层次结构的底部是任何特定文化的资源。特定文化与语言和地区相关联。例如,法语加拿大(“fr-CA”)是一种特定的文化。