我已经设置了一个 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 属性设置为“Chinese”时,程序应该使用中文本地化吗?我在调试时对此进行了测试,它完全按预期工作。也就是说,当程序启动 SelectedLanguage == "Chinese"时,所有按钮和标签都显示为我输入的中文文本。当 SelectedLangugage == "English"时,所有内容都显示在我输入的英文文本中。
问题是当我安装这个程序并运行它(不是调试)时它不起作用。即使在我的开发机器上。无论将 SelectedLanguage 设置为什么,程序始终显示英语本地化。我什至在显示“Application.CurrentCulture.Name”的程序开头放了一个弹出消息框,它显示了中文文化名称(zh-CHT),但它仍然以英文显示所有内容。那么调试期间和实际运行时发生的事情有什么区别呢?我该如何解决?!?
最佳答案
确保您的本地化资源 Dll 已正确安装。
您的安装程序应将资源文件放入子文件夹中,例如
zh-CHT\AssemblyName.resources.dll
关于C# Windows 窗体本地化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4877721/