【问题标题】:Chinese localization does'nt work, shows english always中文本地化不起作用,总是显示英文
【发布时间】:2013-05-11 06:46:10
【问题描述】:

我正在开发 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 任何帮助,将不胜感激, 拉杰什

【问题讨论】:

  • 尝试重建相同的项目结构...完美运行。确定中文资源不是英文的? ;-)
  • 嗯,为什么它对我不起作用,我在 Win7 Ultimate、.net 3.5 上进行了测试。是的,中文资源有中文内容:)
  • 不知道。我的测试中唯一的区别是我使用的是 asp.net 网络表单应用程序,资源是本地资源,如 default.aspx.zh.resx。如果您将new CultureInfo() 更改为"fr" 是否有效?您是否尝试将您的 .fr 资源文件重命名为 .zh
  • 我将资源文件重命名为 .zh-cn 并解决了这个问题。谢谢考德威尔。

标签: c# localization


【解决方案1】:

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

顺便说一句,在 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);
    }

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。当前的文化是在 zh-CN 开始时设置的,但被英语覆盖了。就我而言,解决方案是从 Windows 设置中安装中文。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 2017-07-23
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      相关资源
      最近更新 更多