В моем приложении у меня есть 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: Я не хочу, чтобы закрыть и повторно открыть окно для изменений применяется
Пробовал. документация устарела и не работает в VS2012. Используется NuGet для добавления WPFLocalizeExtension для проекта. Всюду в официальной документации тоже не повезло. –
@barackomama Документация не устарела. Это последняя версия. Я использую расширение в моем текущем проекте WPF. Он работает с VS2012, а также с VS2013. Вы взглянули на вторую ссылку? ** Что ** не работает? – Herdo
О, возможно, я сделал что-то не так. Скажем, если у меня есть кнопка с ключом «@», и я перевел ее на английском и испанском в разные файлы ресурсов. Во время дизайна я устанавливал DesignCulture = «en-US», и он по-прежнему показывает «@» Login как текст кнопки. То же самое происходит, когда я пытаюсь отлаживать. И я не могу получить доступ к моему окну в режиме разработки, потому что он говорит о недопустимом языке разметки. Я попытался запустить тестовую программу, предоставленную автором, и я получаю то же самое. –