使用 C# Windows 表单进行本地化,无法访问我的 .resx 文件

Localization with C# Windows Forms, cannot access my .resx File

您好,我创建了这个 WinForm 程序。它有几种形式。

我在 Whosebug 上寻找教程或其他帮助并找到它。 How to use Localization in C#

这真的很有帮助,但是.. 我创建了一个 ResourceString.de-DE.resx 文件并将其添加到 Properties 文件夹中。 添加了一些字符串,以便我可以对其进行测试。并将访问修饰符更改为 Public.

然后我想访问属性文件夹以使用 ResourceString.de-De.resx 文件。

但没有得到建议。

代码最终必须如下所示:

private void setLanguage()
{
   btnSwitchLanguage.Text = Properties.ResourceString.de-DE.btnSwitchLanguage;
}

我是不是漏掉了什么?

感谢任何帮助。 :) 谢谢

您需要创建一个默认 'ResourceString.resx' 文件以及所有您的语言特定的 resx 文件。确保在所有 resx 文件中添加相同的资源。 (btnSwitchLanguage, ...).

嗯,我发现我的错误,在再次阅读线程后,我链接到我的 Post。

应该有一个名为 Strings.resx(或您选择的任何名称)的文件,其中包含原始字符串。 以及包含另一种语言的文件。 (在我的例子中是德语)。 应该有相同的名字,除了语言在最后。 像这样:

Strings.de-DE.resx

之后我只需要将我的代码更改为:

 private void btnSwitchLanguage_Click(object sender, EventArgs e)
    {
      
        if (Thread.CurrentThread.CurrentUICulture.ToString().Equals("de-DE"))
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-GB");
        }
        else
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE");
            
            setLanguage();
        }
    }

private void setLanguage()
{
    btnSwitchLanguage.Text = Properties.Strings.btnSwitchLanguage;
}

您不需要添加Strings.resx文件,您的项目已经有资源文件Resources.resx。因此,如果需要本地化为"de-DE",您应该添加一个名称为Resources.de.resx的新资源文件。因此,您不仅可以在这个资源文件中放入字符串,还可以放入图像、图标等。

没有必要将 Access Modifier 更改为 Public 除非您不打算从另一个程序集访问此资源。

NOTE: When you are working in the Visual Studio the Visual Assist suggestion will be the same for all languages, starting from Properties.Resources.