中文本地化不起作用,总是显示英语

时间:2013-05-11 06:46:10

标签: c# localization

我正在研究WPF应用程序,我在.resx文件中有本地化资源(en,fr,zh)。以下测试代码用于显示本地化字符串。它适用于英语,法语但不能用中文。在中文中它只显示英文文本。我尝试使用中国文化的所有变体,如zh-CN,zh-Hans,zh-Hant和“旧”zh-CHS,zh-CHT但没有运气。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
       // CultureInfo culture = CultureInfo.CreateSpecificCulture("zh-CHT");
        CultureInfo culture = new CultureInfo("zh-CN");
        Thread.CurrentThread.CurrentCulture = culture;
        Thread.CurrentThread.CurrentUICulture = culture;
        MessageBox.Show(Properties.Resources.address);
    }
}

资源fiels命名为Resources.resx,Resources.fr.resx,Resources.zh.resx 任何帮助,将不胜感激, 拉杰什

2 个答案:

答案 0 :(得分:1)

这是因为zh-CHS是中性文化。 在ASP.NET 2.0中,无法将CurrentCulture设置为中性文化,如zh-CHS。 但是你可以将它设置为像zh-CN这样的特定文化。 如果您需要使用中性文化,例如zh-CHS,则可以设置CurrentUICulture属性。 CurrentUICulture负责从资源文件中获取文本。 CurrentCulture负责Number,DateTime和Currency格式。

BTW,在ASP.NET 4.0中,您可以将CurrentCulture设置为中性文化,但不能在v2.0中设置。 在我的代码中,站点可以在.NET 2或.NET 4上运行,我这样做:

    public static void SetCurrentCulture(string cultureName)
    {
        try
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);
        }
        catch (Exception)
        {
            // Ignore if exception happens: In ASP.NET 2.0 setting CurrentCulture = Neutral culture (like zh-CHS) throws an exception:
            // Culture 'zh-CHS' is a neutral culture. It cannot be used in formatting and parsing and therefore cannot be set as the thread's current culture.
        }
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
        HttpCookie cultureCookie = new HttpCookie("CultureCookie", cultureName);
        HttpContext.Current.Response.Cookies.Set(cultureCookie);
    }

答案 1 :(得分:0)

我有类似的问题。目前的文化是在zh-CN开始时设定的,但被英语覆盖。我的解决方案 - 从Windows设置安装中文。