Локализация MFC не работает с установкой многоязыкового интерфейса пользователя Windows 7 - PullRequest
2 голосов
/ 12 октября 2009

ОК, поэтому мы пишем наше приложение MFC для использования встроенной поддержки локализации со спутниковыми библиотеками DLL начиная с MFC 7. Кажется, все работает нормально, за исключением того, что мой Windows 7 Enterprise Edition при установке с поддержкой MUI и использовании шведского интерфейса вместо английского все еще отображается английский интерфейс в нашем приложении.

Приложение использует шведский язык в качестве языка по умолчанию, с английской DLL-локализацией в форме AppNameENU.dll, поэтому MFC фактически намеренно переключается на английский язык в этих условиях, как будто это не заботится о выбор пользователя в ОС Windows с поддержкой многоязыкового интерфейса пользователя и только язык доставки по умолчанию для установки Windows?

На этой странице MSDN (ссылка выше) я прочитал ее, поскольку MFC должен принимать во внимание эти настройки, но я не уверен на 100%. Может кто-нибудь уточнить, пожалуйста?

1 Ответ

4 голосов
/ 13 октября 2009

Это потому, что поддержка выбора языка MFC имеет ошибку проектирования : он решит загрузить ресурсы из exe, только если ни одна DLL не соответствует пользователю ИЛИ системному языку.

В вашем случае: он устанавливает (упорядоченный) список языков следующим образом:

  1. Шведский (язык пользователя)
  2. Английский (язык системы)

Затем он ищет ваши DLL (ошибка: только dll, а не exe!): Не подходит для шведского. Но есть совпадение для английского!

Решение : Используйте мой CLanguageSupport класс. Он отлично работает даже в вашем случае использования.

Не стесняйтесь использовать его. Вам понадобится всего пара минут, чтобы включить его в ваше приложение, и оно использует ту же схему DLL, что и та, которую вы уже реализовали. ( Подсказка : Не забывайте шаг, где вы должны избавиться от вызова CWinApp :: InitInstance ()!)

Кроме того, если вы заинтересованы (это необязательно), вы можете получить автоматическое меню языков, позволяющее пользователю выбирать свои предпочтения в случае, если значение по умолчанию не соответствует его желанию.

И если вы ищете отличный инструмент для управления своими переводами, подумайте: appTranslator ; -)

НТН,

...