如何根据组合框所选项目从不同的资源文件加载字符串?



我有一个改变显示语言的表单。我想根据 String 变量从不同的资源文件加载字符串,如下所示:

Public Class frm_Main
Dim language As String = ""
Private Sub cb_lang_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cb_lang.SelectedIndexChanged
language = cb_lang.SelectedText
lbl_Country.Text = My.Resources.english.country ' Replace "english" with language value
lbl_Language.Text = My.Resources.english.language ' Same
End Sub
End Class

cb_lang包含"英语"和"西班牙语"。 有两个文件,"english.resx"和"spanish.resx"。

我该怎么做?

有两个文件,"english.resx"和"spanish.resx">

首先,将两个文件重命名为默认区域性的MyProject.resxMyProject.es.resxMyProject.en.resx翻译版本。

资源设计器文件是 XML,但当您编译(或在其上"运行自定义工具"(时,它会创建/更新一个实际的资源类 - 即您在代码中访问的对象。

该对象具有一个CultureInfo属性,您可以将其设置为所需的任何CultureInfo;根据区域性代码正确命名资源文件后,框架将使用它来确定要从哪个资源文件获取资源键值。

因此,您需要做的就是将下拉值映射到CultureInfo实例。

My.Resources.MyProject.Culture = SomeCultureDictionary(cb_lang.SelectedText)
lbl_Country.Text = My.Resources.MyProject.Country
lbl_Language.Text = My.Resources.MyProject.Language

最新更新