我正在尝试在应用程序中切换语言,看来我无法使其正常工作。
我已经创建了一个资源文件夹,其中包含遵循命名方案Language.*culureinfo.resx
即Language.en-US.resx
的文件,默认名称为Language.resx
我想a)列出所有可用的语言,b)实际更改应用程序中的语言。
对于a),一种解决方法是拥有一个包含所有可用语言的文本文件,以在Resources.resx中列出它们。但是,如果可能的话,我想从可用的资源文件中获取语言。
对于b)我已经制作了带有标签的测试表格:
public Form1()
{
InitializeComponent();
this.label1.Text = Resources.Language.LabelString;
}
并创建了一个按钮,该按钮使用参数"en-US"
调用我从here派生的代码:
private static void ChangeLanguage(string lang)
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
foreach (Form frm in Application.OpenForms)
{
localizeForm(frm);
}
}
private static void localizeForm(Form form)
{
var manager = new ComponentResourceManager(form.GetType());
manager.ApplyResources(form, "$this");
applyResources(manager, form.Controls);
}
private static void applyResources(ComponentResourceManager manager, Control.ControlCollection controls)
{
foreach (Control ctl in controls)
{
manager.ApplyResources(ctl, ctl.Name);
applyResources(manager, ctl.Controls);
}
}
但是什么也没发生。谁能告诉我我做错了吗?