Поделиться через


Локализованные ресурсы в приложениях MFC. Вспомогательные библиотеки DLL

В MFC 7.0 и более поздних версиях имеется расширенная поддержка библиотек спутниковой связи DLL и содержится возможность, которая позволяет создавать приложения, локализованные для различных языков. Вспомогательная библиотека DLL является библиотекой DLL только для ресурсов, которая содержит ресурсы приложения, локализованные для определенного языка. Когда приложение начинает выполняться, MFC автоматически загружает локализованный ресурс, наиболее подходящий для среды. Например, у вас может быть приложение с ресурсами на английском языке с двумя вспомогательными библиотеками DLL, одна из которых содержит перевод ресурсов на французский язык, а другая — перевод на немецкий язык. При запуске приложения в системе на английском языке используются ресурсы на английском языке. При запуске в системе на французском языке используются ресурсы на французском языке, а запуске в системе на немецком языке — ресурсы на немецком языке.

Для поддержки локализованных ресурсов в приложении MFC MFC пытается загрузить вспомогательную библиотеку DLL, содержащую ресурсы, локализованные для определенного языка. Вспомогательные DLL-библиотеки именуются в формате имя_приложения_XXX.dll, где имя_приложения — это имя файла EXE или DLL, использующего MFC, а XXX — трехбуквенный код для языка ресурсов (например, "RUS" или "DEU").

MFC пытается загрузить DLL-библиотеку ресурсов для каждого из следующих языков по порядку, завершив поиск там, где найдено одно из следующего:

  1. Язык пользовательского интерфейса по умолчанию текущего пользователя, возвращенный из API Win32 GetUserDefaultUILanguage().

  2. Язык пользовательского интерфейса текущего пользователя по умолчанию без определенного подлангуга (т. е. ENC [канадский английский] становится ENU [АНГЛИЙСКИЙ]).

  3. Язык пользовательского интерфейса по умолчанию системы, возвращаемый API GetSystemDefaultUILanguage(). На других платформах это язык самой ОС.

  4. Язык пользовательского интерфейса системы по умолчанию без конкретного подъязыка.

  5. Фиктивный язык с 3-буквенным кодом LOC.

Если MFC не удалось найти ни одной вспомогательной библиотеки DLL, используются все ресурсы, содержащиеся в самом приложении.

Например, предположим, что приложение LangExample.exe использует MFC и работает в нескольких системах пользовательского интерфейса; Системный язык пользовательского интерфейса — ENU [английский язык США], а язык пользовательского интерфейса текущего пользователя имеет значение FRC [канадский французский]. MFC выполняет поиск следующих библиотек DLL в следующем порядке.

  1. LangExampleFRC.dll (язык пользовательского интерфейса пользователя).

  2. LangExampleFRA.dll (язык пользовательского интерфейса пользователя без подъязыка, в данном примере — французский [Франция]).

  3. LangExampleENU.dll (язык пользовательского интерфейса системы).

  4. LangExampleLOC.dll.

Если ни одна из этих библиотек DLL не найдена, MFC использует ресурсы в файле LangExample.exe.

См. также

Создание библиотек DLL на C и C++ в Visual Studio
TN057. Локализация компонентов MFC