【问题标题】:How do you implement Localization in Windows Presentation Foundation (WPF)?如何在 Windows Presentation Foundation (WPF) 中实现本地化?
【发布时间】:2008-10-07 09:12:23
【问题描述】:

请分享您如何本地化您的 WPF 应用程序以支持多种语言的经验以及任何对您有帮助的资源?

感谢您的反馈。

【问题讨论】:

  • 不太清楚。您是在寻找技术方法的答案还是主观的故事? (编辑您的问题以阐明您想要什么。)

标签: wpf localization


【解决方案1】:

对于我们的 WPF 应用程序,我们所有的字符串都本地化为 ResourceDictionary 中的资源,我们将其放入以语言命名的 .xaml 文件中(如 en-US.xaml、ja-JP.xaml 等)。

例如,应用程序中的某个按钮可能如下所示:

<Button Content="{StaticResource Strings.FooDialog.BarButtonText}"/>

不同语言的每个ResourceDictionary 都包含它的一个版本:

<sys:String x:Key="Strings.FooDialog.BarButtonText">Bar!</sys:String>

ResourceDictionary 在运行时动态连接到Application.Resources,如下所示:

private static void LoadLocalizedStrings(CultureInfo uiCulture)
{
   ResourceDictionary stringsResourceDictionary = new ResourceDictionary();
   stringsResourceDictionary.Source = new Uri(@"pack://application:,,,/Resources/Strings/" + uiCulture.Name + ".xaml");
   Application.Current.Resources.MergedDictionaries.Add(stringsResourceDictionary);
}

【讨论】:

  • 罗伯特,我发现您的解决方案最简单且易于实施。问题是,虽然代码运行正常,但 Visual Studio 环境抱怨找不到资源。当然,这是可以理解的,因为尚未加载资源字典。你如何应对这种情况?
【解决方案2】:

抱歉,如果含糊不清(以上问题),基本上是关于您如何在应用程序中实现它以及您认为最好的方法。基本上是了解场景。

【讨论】:

    【解决方案3】:

    我刚刚使用 ResourceDictionary 成功本地化了我的 WPF 应用程序。我使用的方法允许动态更改语言、轻松翻译、设计时支持,甚至允许部分翻译。我的工作基于http://www.geektieguy.com/2006/12/12/localizing-an-xbap-application-without-using-locbaml/

    您可以在以下位置看到我的部分努力:ResourceDictionary Source Binding to Module (for Localization)

    【讨论】:

      猜你喜欢
      • 2011-10-04
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 2020-11-03
      • 2017-08-10
      相关资源
      最近更新 更多