2014-02-03 3 views
0

В моем приложении у меня есть 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: Я не хочу, чтобы закрыть и повторно открыть окно для изменений применяется

ответ

0

WPF Localization Extension обеспечивает переход на лету без перезапуска приложения. Обратите внимание, что в этом подходе используется *.resx -файлы для локализации, а не только для WPF ResourceDictionaries.

Вы можете следовать общим руководствам по приведенной выше ссылке. Кроме того, вы можете прочитать this guide.

+0

Пробовал. документация устарела и не работает в VS2012. Используется NuGet для добавления WPFLocalizeExtension для проекта. Всюду в официальной документации тоже не повезло. –

+0

@barackomama Документация не устарела. Это последняя версия. Я использую расширение в моем текущем проекте WPF. Он работает с VS2012, а также с VS2013. Вы взглянули на вторую ссылку? ** Что ** не работает? – Herdo

+0

О, возможно, я сделал что-то не так. Скажем, если у меня есть кнопка с ключом «@», и я перевел ее на английском и испанском в разные файлы ресурсов. Во время дизайна я устанавливал DesignCulture = «en-US», и он по-прежнему показывает «@» Login как текст кнопки. То же самое происходит, когда я пытаюсь отлаживать. И я не могу получить доступ к моему окну в режиме разработки, потому что он говорит о недопустимом языке разметки. Я попытался запустить тестовую программу, предоставленную автором, и я получаю то же самое. –

Смежные вопросы