我试图让我的程序以不同的语言使用。 我有一个名为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()之前?
答案 0 :(得分:4)
在.NET中正确执行此操作的方法是创建多个资源文件,如下所示:
假设你有资源文件Resource.resx,它将作为你的UI的默认英文单词,现在如果你想添加对西班牙语的支持,那么只需添加一个名为Resource.es.resx的资源文件(这个文件将会在同一目录中包含与原始文件完全相同的键,但值将是西班牙语翻译。每当用户将系统语言更改为西班牙语.NET时,将自动使用正确的资源文件。同样,只需添加具有正确扩展名的资源文件,即可添加对所需语言的支持。