Неправильная локализация при использовании языка по умолчанию, который отличается от языка ОС - PullRequest
0 голосов
/ 17 ноября 2011

У меня проблема с локализацией - иногда она возвращает неверное значение. Вот мой случай:

В каждой сборке NeutralResourcesLanguage установлен на en-US.
Список доступных ресурсов: по умолчанию (английский) пт, де.

Итак, у меня есть Английская ОС , и я выбрал любой язык - все хорошо ( UICulture имеет значение en, ​​fr или de и Культура включена US, de-DE или fr-FR соответственно).

Но когда у меня есть Немецкая ОС и я выбрал английский язык ( UICulture - это en, а Culture - это en-US), некоторые строки на немецком языке.

Также, если я оставлю Thread.CurrentThread.CurrentUICulture == "de" и Thread.CurrentThread.CurrentCulture = "en-US", тогда некоторый текст будет на английском языке.

Любое объяснение и решение этого?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2011

Я нашел проблему - я использовал DependencyProperty со значением по умолчанию, таким как PropertyMetadata (Resources.Text) . А поскольку DP статичен, он инициализировался с помощью системного языка ДО того, как фактические настройки локализации были применены в обработчике ApplicationStartup.

0 голосов
/ 17 ноября 2011

Вам необходимо использовать правильные языковые коды, в вашем случае это будут en, fr и de.

Не используйте специализированный языковой код, когда в этом нет необходимости, поэтому используйте простоfr если у вас есть только один французский перевод.

Вы должны использовать более специализированные только тогда, когда это необходимо.

Обновление: в Windows вы не можете полностью контролировать язык сообщений, которые вы получаете из ОС.Обычно они используют вашу текущую локаль потока, но иногда они используют язык по умолчанию ОС, и вы ничего не можете с этим поделать.Просто задокументируйте поведение пользователей.

...