在C#Silverlight中根据文化信息定义一个字符串

时间:2016-04-27 06:56:36

标签: c# silverlight

我需要在美国格式中将“Color”拼写为“Color”,在英国格式拼写为“Color”。我的申请在这两个国家有效。我需要相应地更改拼写。我用以下代码尝试了它:

string sample = "";

if (CultureInfo.CurrentUICulture.Name == "en-US")
     sample = "Color";
else
     sample = "Colour";

但这种方式似乎不起作用。

2 个答案:

答案 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;

您也可以覆盖货币符号和数字分隔符。

Source

然后,一旦你完成了,最简单的解决方案是将你的字符串放入一对资源文件中。一个刚刚叫做'#34; Resource.resx"这是默认值,另一个名为" Resource.en-US.resx" (例如)如果您的默认值是英国。

然后,.NET将根据线程的文化自动选择正确的资源。

答案 1 :(得分:0)

处理拼写中的本地化和区域差异的正确方法是使用框架中包含的Silverlight Resource Manager来完全实现这一点。

  

资源的分层组织

     

要了解如何加载资源,将它们视为以分层方式组织是有用的。本地化应用程序可以包含三个级别的资源文件:

     
      
  • 在层次结构的顶部是默认文化的后备资源,例如英语(“en”)。这些是唯一没有自己文件的资源;它们存储在主组件中。
  •   
  • 在第二级是任何地区中立文化的资源。区域中立文化与语言有关,但与区域无关。例如,法语(“fr”)是一种区域中立的文化。
  •   
  • 层次结构的底部是任何特定文化的资源。特定文化与语言和地区相关联。例如,法语加拿大(“fr-CA”)是一种特定的文化。
  •