Visual Studio 2010 - 更改语言属性

时间:2014-04-24 08:46:29

标签: c# visual-studio-2010 if-statement localization

是否可以通过代码更改主窗体的语言属性?如果是这样,怎么样?

详细说明: 在Config文件中,我设置了一个lang =“EN”。我想要的是使用本地化设置来更改依赖于此变量的主窗体。我已将可本地化属性设置为 True

例如:

if (Config.lang == "FR")
{
    //change **Language** property to "French"
}
else
{
    //remain (Default)
}

问题是我在编码窗口的任何地方都看不到语言属性,无论我在哪里看,所以我想知道是否有可能这样做。

1 个答案:

答案 0 :(得分:2)

由于在.Net UI程序中管理资源的方式,最简单的方法是在创建任何表单之前,在程序开头正确设置线程区域设置。

首先从配置文件中确定所需的文化:

CultureInfo culture = ... whatever

然后将主线程的CurrentUICultureCurrentCulture设置为该区域设置:

System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
System.Threading.Thread.CurrentThread.CurrentCulture   = culture;

此代码将在program.cs开始时进入Main()

请注意,如果您启动任何其他显示任何UI的线程(或输出任何本地化数据),您还需要在这些线程的开头执行相同的操作。

另请注意,此方法的一个主要限制是您无法在程序运行时更改语言环境并具有UI更新以反映它。您必须在程序开头设置区域设置。

还有其他解决方案可以避免这种限制,但它们更复杂。