【问题标题】:How to display a user language dialog from menus in WPF?如何从 WPF 的菜单中显示用户语言对话框?
【发布时间】:2012-06-26 05:51:30
【问题描述】:

我想使用用户语言在 WPF 中打开对话框(保存、打开、打印...)。

如何找到用户语言? 如何使用该语言打开对话框?

菜单和子菜单会自动以正确的语言显示。

e.g. Command = Application.save

我们将不胜感激。

提前致谢。

【问题讨论】:

    标签: c# wpf user-interface dialog menuitem


    【解决方案1】:

    有很多方法可以给这只猫剥皮。找到看起来适合您和您的项目要求的那个。我将提供一种我使用的解决方案。

    如何找到用户语言?

    一台机器可以有不同的文化,每个线程甚至可以有自己的文化。文化包含显示语言和日期/数字格式信息等。

    System.Globalization.CultureInfo.CurrentCulture;
    System.Globalization.CultureInfo.CurrentUICulture  
    

    就本答案而言,您不需要直接访问这些对象。

    如何使用该语言打开对话框?

    我使用资源文件 (RESX) 方法本地化我的项目。 首先为您想要支持的文化和默认文化创建资源文件,就像这样。

    Resources.resx
    Resources.en.resx
    Resources.fr.resx
    资源.ja.resx

    如果您想具体使用完整的文化代码。
    Resources.ja-JP

    现在将所有本地化文本添加到资源中,默认也是如此。

    当显示语言不是您支持的语言集时,将使用默认值。

    WPF 应用程序将选择 Windows 用户的显示文化来选择要使用的 RESX 文件。
    绑定到 XAML 中的 RESX 文件。

    <TextBlock Text="{x:Static properties:Resources.Owner}"/>  
    <TextBlock Text="{x:Static properties:Resources.StartDate}" />  
    <TextBlock Text="{x:Static properties:Resources.EndDate}"/>  
    

    这里我有三个静态绑定到 Resources.Owner StartDate 和 EndDate 属性的文本块。 properties 关键字并未指定您将使用属性,而是指定应用程序属性组中的 Resources 对象。

    如果您在使用静态绑定时遇到问题,请检查您的命名空间是否正确。 请注意,您不应直接引用任何特定资源。 ResourceManager 将处理正确文件的加载。
    如果您需要动态语言切换,请查看网上一些不错的资源全球化教程。

    【讨论】:

      【解决方案2】:

      您可以使用以下语法来获取 WPF 中的用户语言...

      XmlLanguage language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
      

      希望对你有帮助..

      【讨论】:

        猜你喜欢
        • 2020-11-23
        • 1970-01-01
        • 2012-11-23
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        相关资源
        最近更新 更多