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

本文关键字:显示 本地化 不起作用 中文 | 更新日期: 2023-09-27 18:13:01

我正在开发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);
    }
}

资源字段命名为Resources。resx、Resources.fr.resx、Resources.zh.resx任何帮助都会很感激。Rajesh

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

这是因为zh-CHS是中性文化。在ASP。NET 2.0不可能像zh-CHS那样将CurrentCulture设置为中性文化。但是您可以将其设置为特定的文化,如zh-CN。如果您需要使用中性区域性,如zh-CHS,则可以设置CurrentUICulture属性。CurrentUICulture负责从资源文件中获取文本。CurrentCulture负责数字、日期时间和货币格式。

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);
    }

我也遇到过类似的问题。当前的文化设置在zh-CN开始的某个点,但被英语覆盖了。在我的情况下,解决方案-从Windows设置中安装中文。