【问题标题】:Supporting multiple languages in a Winforms application在 Winforms 应用程序中支持多种语言
【发布时间】:2013-03-12 10:45:31
【问题描述】:

我几乎完成了我的 C# 应用程序;剩下要做的就是实现多语言支持。

我已经为屏幕上显示的所有文本创建了包含几种语言的字符串的资源文件。

我的英文资源文件示例:

Name                    |  Value                       | Comment
------------------------------------------------------------------------------
lblName                 |   Name:                      |  Name EN

我的荷兰语资源文件示例:

Name                    |  Value                       | Comment
------------------------------------------------------------------------------
lblName                 |  Naam:                       | Name NL

如何将字段Value 绑定到我的Label (lblName) 的Text 属性?

我正在使用 .NET Framework 3.5。

【问题讨论】:

标签: c# winforms internationalization resources globalization


【解决方案1】:

我知道这个问题很久以前就被问过了,但由于没有答案,所以我的建议是:

要访问 C# 中的资源文件,您可以使用 ResourceManager。 首先根据当前语言创建资源管理器。 您有两种选择。您可以使用 switch 或 if 语句(如果语言由菜单确定)或使用本地化来使用计算机的当前文化。最后,通过这两种方式,您可以调用 GetString() 方法,提供我认为在您的情况下是 lblName 的密钥。

注意:在下面的示例中,我使用了第一种方法,即从菜单中检索语言。

string selectedLanguage = comboBoxLang.Text; // Comes from a menu option
string resourceFile = string.Empty;

/***/
Logic to retrieve the proper resourceFile depending on the selectedLanguage.
/***/

ResourceManager rm = new ResourceManager(resourceFile, Assembly.GetExecutingAssembly());

// Set your label text.
lblName.Text = rm.GetString("lblName");

【讨论】:

    【解决方案2】:

    试试这个:

    <asp:Label runat="server" Text="<%$ Resources:DutchLanguage, Value %>"></asp:Label>
    

    【讨论】:

    • 我正在使用 Windows 窗体,它是一个桌面 c# 应用程序,而不是网页 (ASP)。
    • 你提到了C#应用程序,但一开始就没有指定
    • 那我应该用过:Web应用,用过ASP标签,还有一个标签:WinForms。
    【解决方案3】:

    将不同语言的值放在一个数据库表中。

    让用户选择语言。

    根据语言选择从数据库中获取特定语言的数据。

    然后将其与标签文本绑定。

    【讨论】:

    • 我认为这不是正确的做法,资源文件或不是白白创建的
    • 这实际上是一个很好的解决方案,但对于从数据库获取的数据的翻译,例如查找表中的文本单元格。在这种情况下,它是没有用的。 +1 努力。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    相关资源
    最近更新 更多