使用资源文件的多语言支持

时间:2013-09-09 09:05:29

标签: c# winforms visual-studio-2010 multilingual

我试图让我的程序以不同的语言使用。 我有一个名为language_en的资源文件。

在运行时,我想更改language_en中每个字符串的值。

我创建了.ini文件,其中包含language_en中的所有字符串以及表单上的控件。在加载过程中使用该文件,我可以轻松地更改控件的文本。如:Button1的文本从“是”到“Ja”。

我无法对资源文件执行相同的操作,因为它是只读的。我知道我能做的一种方法是为每种语言创建多个资源文件。但是,我希望能够在.ini文件中完成所有操作。

我正在尝试这样的事情:

ResourceSet RSet = English.ResourceManager.GetResourceSet(
                        CultureInfo.CurrentCulture, true, true);

foreach (DictionaryEntry Entry in RSet)
{
    Entry.Value = ? 
}

但显然它不会工作,不仅因为我试图在迭代期间修改集合,而且因为该值是只读的。

任何人都知道我可以采取什么方法?

P.S。我应该在哪里定义我的Application.CultureInfo?在InitializeComponent()之前?

1 个答案:

答案 0 :(得分:4)

在.NET中正确执行此操作的方法是创建多个资源文件,如下所示:

假设你有资源文件Resource.resx,它将作为你的UI的默认英文单词,现在如果你想添加对西班牙语的支持,那么只需添加一个名为Resource.es.resx的资源文件(这个文件将会在同一目录中包含与原始文件完全相同的键,但值将是西班牙语翻译。每当用户将系统语言更改为西班牙语.NET时,将自动使用正确的资源文件。同样,只需添加具有正确扩展名的资源文件,即可添加对所需语言的支持。