1

我试图让我的程序以不同的语言使用。我有一个名为 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 = ? 
}

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

有人知道我可以采取什么方法吗?

PS 我应该在哪里定义我的 Application.CultureInfo?在初始化组件()之前?

4

1 回答 1

4

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

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

于 2013-09-09T09:23:28.353 回答