动态全球化应用程序

时间:2014-02-03 08:47:18

标签: c# wpf localization globalization resourcedictionary

在我的应用程序中,我有2个资源词典(西班牙语和英语),其中包含应用程序的所有字符串。在主窗口中,我有一个组合框,用户可以从中选择所需的语言。我想要做的是,当用户点击指定的语言时,它应该改变整个应用程序的语言,而不仅仅是当前窗口。我在这里搜索了一个简单的解决方案但找不到任何解决方案。任何人都可以建议一种方法来实现这一目标吗?

目前我用这种方式更改当前表单的语言

关于组合框选择改变事件

private void Language_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ResourceDictionary dictionary = new ResourceDictionary();
    string lang = e.AddedItems[0].ToString();

    dictionary.Source = new Uri(@"/Resources/Languages/"+lang+".xaml", UriKind.Relative);
    Application.Current.Resources.MergedDictionaries.Clear();
    Application.Current.Resources.MergedDictionaries.Add(dictionary);
}

PS:我不想关闭并重新打开窗口以应用更改

1 个答案:

答案 0 :(得分:0)

WPF Localization Extension提供即时语言更改,无需重新启动应用程序。 请注意,此方法使用*.resx - 文件进行本地化而非WPF特定ResourceDictionaries

您可以按照上面链接中的常用指南操作。此外,您可以阅读this guide