【问题标题】:How to load strings from different resource files depending on ComboBox selected item?如何根据 ComboBox 所选项目从不同的资源文件加载字符串?
【发布时间】:2017-08-10 17:20:41
【问题描述】:

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

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”。

我该怎么做?

【问题讨论】:

  • 让框架完成繁重的工作。将您的资源命名为 Foobar.resx 为默认值,Foobar.en.resx 为英语,Foobar.en-UK.resx 如果您需要“颜色”和“盔甲”以使其看起来有错字,将Foobar.fr.resx 用于法语翻译等。然后您只需设置资源的Culture 视情况而定(您需要从选定的字符串创建一个CultureInfo 实例),并重新分配.Text 值。您永远不需要从资源中获取特定语言 - 框架会为您完成。

标签: .net vb.net visual-studio


【解决方案1】:

有两个文件,“english.resx”和“spanish.resx”

首先将这两个文件重命名为 MyProject.resx 用于默认区域性,MyProject.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

【讨论】:

    猜你喜欢
    • 2015-02-18
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    相关资源
    最近更新 更多