如何根据ComboBox选择项加载来自不同资源文件的字符串?

时间:2017-08-10 17:20:41

标签: .net vb.net visual-studio

我有一个更改显示语言的表单。我想根据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”和“spanish”。 有两个文件,“english.resx”和“spanish.resx”。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

  

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

首先将两个文件重命名为MyProject.resx以获取默认文化,并将MyProject.es.resxMyProject.en.resx重命名为翻译版本。

资源设计器文件是XML,但是当你编译(或者#34;运行自定义工具"它)时,它会创建/更新一个实际的资源类 - 这就是你所拥有的对象访问代码。

该对象具有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