Я написал небольшое приложение, которое автоматически запускается на английском или немецком языке. Английский язык по умолчанию, и немецкий язык будет использоваться на немецкой Windows.Локализация не работает должным образом
Проблема:
Немецкие строки не загружаются на немецкой Windows, хотя программа распознает клиента, как немецкий. Явная настройка текущей культуры (в коде) на немецкий язык приведет к созданию немецкого пользовательского интерфейса.
Что я сделал:
Я после этого руководства: http://www.codeproject.com/Articles/299436/WPF-Localization-for-Dummies
- я создал копию Resources.resx в разделе Свойства
- Сейчас есть: Resources.resx, Resources.en -US.resx, Resources.de-DE.resx
- Я поместил все строки в три файла ресурсов. Resources.resx и * .en-US.resx содержат точно такие же строки
- Название строк согласовано, модификатор доступа для всех файлов, установленных в общедоступные
- Свойства файла ресурсов: Build Action: Embedded Resource; Не копировать; Пользовательские Инструмент: PublicResXFileCodeGenerator
Код:
private void InitLocalization() // Executed on startup
{
if (CultureInfo.CurrentCulture.Name != "de-DE") // only use german on german systems. Otherwise use english
{
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
}
else
{
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("de-DE");
}
rm = new ResourceManager("SaveEye.Properties.Resources", Assembly.GetExecutingAssembly());
// Manually assign the correct text to XAML-elements
_SettingsTextBlock.Text = rm.GetString("Settings");
_StartWithWindowsCheckBox.Content = rm.GetString("Startup");
_SaveButton.Content = rm.GetString("SaveAndClose");
}
В принципе, я просто хочу, чтобы убедиться, что либо Resources.en-US.resx или Resources.de-DE.resx загружается из ResourceManager ,
В остальной части кода я беру строки, которые мне нужны, с rm.GetString ("").
Это прекрасно работает с английским. Я могу даже вручную установить CurrentCulture на de-DE в начале метода InitLocalization, а затем загружаются все немецкие строки. Но, как я уже сказал, на других системах, де-DE по умолчанию, немецкие строки не загружаются.
Что я делаю неправильно?
С уважением
Вы используете метод InitLocalization в своем приложении appStart или основном методе.? – JSJ
CurrentUICulture можно изменить в панели управления Windows. Таким образом, это может быть «en-us», даже если у вас установлена немецкая Windows. Может быть так? –