.net 如何根据组合框所选项目从不同的资源文件加载字符串?
我有一个改变显示语言的表单。我想根据字符串变量从不同的资源文件加载字符串,如下所示:.net 如何根据组合框所选项目从不同的资源文件加载字符串?,.net,vb.net,visual-studio,.net,Vb.net,Visual Studio,我有一个改变显示语言的表单。我想根据字符串变量从不同的资源文件加载字符串,如下所示: 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.Selected
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”和“西班牙语.resx”
我该怎么做
有两个文件,“english.resx”和“西班牙语.resx”
首先,对于默认区域性,将这两个文件重命名为MyProject.resx
,对于翻译版本,将其重命名为MyProject.es.resx
或MyProject.en.resx
资源设计器文件是XML,但当您编译(或在其上“运行自定义工具”)时,它会创建/更新一个实际的资源类,这就是您在代码中访问的对象
该对象有一个CultureInfo
属性,您可以将其设置为所需的任何CultureInfo
;根据区域性代码正确命名资源文件后,框架将使用该代码确定从哪个资源文件获取资源键值
因此,您需要做的就是将下拉列表值映射到实例
My.Resources.MyProject.Culture = SomeCultureDictionary(cb_lang.SelectedText)
lbl_Country.Text = My.Resources.MyProject.Country
lbl_Language.Text = My.Resources.MyProject.Language
让框架来完成这项艰巨的工作。将您的资源命名为
Foobar.resx
默认值,将Foobar.en.resx
命名为英语,将Foobar.en UK.resx
命名为Foobar.en UK.resx如果您需要“颜色”和“盔甲”看起来像是打字错误,请将Foobar.fr.resx
命名为法语翻译,等等。然后您只需根据需要设置资源的文化(您需要从所选字符串创建一个CultureInfo
实例),然后重新分配.Text
值。您根本不需要从资源中获取特定的语言—框架会为您完成这项工作。