【问题标题】:C# Windows Forms Localization TestingC# Windows 窗体本地化测试
【发布时间】:2011-02-02 17:32:20
【问题描述】:

我已经设置了一个 windows 窗体项目来使用本地化,以便它支持中文和英文。我已经建立了一种在表单加载时强制使用一种或另一种语言的方式。在调用 InitializeComponent() 之前,我有一些代码可以执行此操作...

     switch (Properties.Settings.Default.SelectedLanguage)
        {
            case "":
                break;
            case "English":
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
                Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
                break;
            case "Chinese":
                try
                {
                    Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CHT");
                    Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CHT");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                break;   
        }

那么当 SelectedLanguage 属性设置为“中文”时,程序应该使用中文本地化吧?我在调试时对此进行了测试,它完全按预期工作。也就是说,当程序中的 SelectedLanguage == "Chinese" 启动时,所有按钮和标签都以我输入的中文文本显示。当 SelectedLangugage == "English" 时,所有内容都显示在我输入的英文文本中。

问题是当我安装这个程序并运行它(不是调试)它不起作用。即使在我的开发机器上。无论为程序设置什么 SelectedLanguage 总是显示英语本地化。我什至在程序开头放了一个消息框,它显示“Application.CurrentCulture.Name”,它显示了中国文化名称(zh-CHT),但它仍然以英文显示所有内容。那么在调试期间和实际运行期间发生的事情有什么区别呢?我该如何解决?!?

【问题讨论】:

    标签: c# winforms testing localization


    【解决方案1】:

    确保您的本地化资源 Dll 已正确安装。

    您的安装程序应将资源文件放入子文件夹中,例如

    zh-CHT\AssemblyName.resources.dll

    【讨论】:

      【解决方案2】:

      听起来好像一直在使用英文默认值,这表明您为中文设置的资源没有包含在构建中。仔细检查您的资源并确保它包含在您的部署中。

      【讨论】:

      • 就是这样。我只需要添加“本地化资源”项目输出,现在一切都很好! (我以为它们是自动包含在内的!)
      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多