Локализованные ресурсы в приложениях MFC. Вспомогательные библиотеки DLL
Обновлен: Ноябрь 2007
В библиотеке MFC версии 7.0 или более поздней реализована расширенная поддержка вспомогательных библиотек DLL, которые могут использоваться для создания многоязыковых версий приложений. Вспомогательная библиотека DLL представляет собой библиотеку ресурсов, в которой содержатся локализованные для определенного языка ресурсы приложения. При запуске приложения с помощью MFC автоматически загружаются локализованные ресурсы, соответствующие текущей среде. Например, для приложения на английском языке можно создать две вспомогательные библиотеки DLL, в которых содержатся ресурсы, локализованные для французского и немецкого языков. При запуске приложения в англоязычной системе используются ресурсы на английском языке. При запуске приложения в системе, в которой используется французский или немецкий язык, загружаются ресурсы на соответствующем языке.
Чтобы обеспечить поддержку локализованных ресурсов в приложении MFC, выполняется попытка загрузки вспомогательной библиотеки DLL, в которой содержатся локализованные для конкретного языка ресурсы. Вспомогательной библиотеке DLL присваивается имя ApplicationNameXXX.dll, где ApplicationName — имя EXE- или DLL-файла, в котором используется библиотека MFC, а XXX — трехбуквенный код языка ресурсов, например ENU или DEU.
В библиотеке MFC выполняется попытка загрузки библиотеки ресурсов для каждого из языков в следующем порядке (загружается первая найденная библиотека ресурсов):
(Только операционная система Windows 2000 или более поздней версии) Используемый по умолчанию язык интерфейса для текущего пользователя, который возвращается с помощью функции GetUserDefaultUILanguage() интерфейса Win32 API.
(Только операционная система Windows 2000 или более поздней версии) Используемый по умолчанию язык интерфейса для текущего пользователя без конкретного варианта языка. Например, вместо языка ENC [Английский (Канада)] используется ENU [Английский (США)].
Используемый по умолчанию язык пользовательского интерфейса системы. В Windows 2000 или более поздней версии это значение возвращается с помощью функции GetSystemDefaultUILanguage() интерфейса API. На других платформах это значение соответствует языку самой операционной системы.
Используемый по умолчанию язык пользовательского интерфейса системы без конкретного варианта языка.
Фиктивный язык с трехбуквенным кодом LOC.
Если библиотеке MFC не удается найти вспомогательные библиотеки DLL, используются любые ресурсы, входящие в состав самого приложения.
Пример. Допустим, приложение LangExample.exe использует библиотеку MFC и выполняется в системе Windows 2000 с многопользовательским интерфейсом. В качестве языка пользовательского интерфейса системы используется ENU [Английский (США)], а для текущего пользователя установлен язык интерфейса FRC [Французский (Канада)]. В библиотеке MFC выполняется поиск следующих библиотек DLL в указанном ниже порядке:
LangExampleFRC.dll (язык пользовательского интерфейса).
LangExampleFRA.dll (язык пользовательского интерфейса без конкретного варианта языка, в этом примере — "Французский (Франция)").
LangExampleENU.dll (язык пользовательского интерфейса системы).
LangExampleLOC.dll.
Если ни одна из этих библиотек не найдена, используются ресурсы, входящие в состав самого приложения LangExample.exe.