Zasoby zlokalizowane w aplikacjach MFC: biblioteki DLL Satellite

MFC w wersji 7.0 lub nowszej zapewnia rozszerzoną obsługę bibliotek DLL satelickich, która ułatwia tworzenie aplikacji zlokalizowanych dla wielu języków. Biblioteka DLL satelitarna to biblioteka DLL tylko dla zasobów, która zawiera zasoby aplikacji zlokalizowane dla określonego języka. Po rozpoczęciu wykonywania aplikacji usługa MFC automatycznie ładuje zlokalizowany zasób najbardziej odpowiedni dla środowiska. Na przykład możesz mieć aplikację z zasobami języka angielskiego z dwoma bibliotekami DLL satelitarnymi, z których jedna zawiera francuskie tłumaczenie zasobów, a drugą zawierającą niemieckie tłumaczenie. Gdy aplikacja jest uruchamiana w systemie języka angielskiego, korzysta z zasobów języka angielskiego. Jeśli działa w systemie francuskim, korzysta z zasobów francuskich; jeśli jest uruchamiany w niemieckim systemie, korzysta z niemieckich zasobów.

Aby obsługiwać zlokalizowane zasoby w aplikacji MFC, MFC próbuje załadować satelitarną bibliotekę DLL zawierającą zasoby zlokalizowane w określonym języku. Biblioteki DLL satelitarne mają nazwę ApplicationNameXXX.dll, gdzie ApplicationName jest nazwą pliku exe lub dll przy użyciu MFC, a XXX jest trzyliterowym kodem języka zasobów (na przykład "ENU" lub "DEU").

Usługa MFC próbuje załadować bibliotekę DLL zasobu dla każdego z następujących języków w kolejności, zatrzymując się po znalezieniu jednego z nich:

  1. Domyślny język interfejsu użytkownika bieżącego użytkownika zwrócony z interfejsu API Win32 GetUserDefaultUILanguage().

  2. Domyślny język interfejsu użytkownika bieżącego użytkownika bez żadnego określonego podjęzyczności (tj. ENC [kanadyjski angielski] staje się ENU [angielski w USA]).

  3. Domyślny język interfejsu użytkownika systemu zwrócony z interfejsu API GetSystemDefaultUILanguage(). Na innych platformach jest to język samego systemu operacyjnego.

  4. Domyślny język interfejsu użytkownika systemu bez żadnego określonego podjęzyczności.

  5. Fałszywy język z 3-literowym loc kodu.

Jeśli biblioteka MFC nie znajdzie żadnych bibliotek DLL satelickich, używa żadnych zasobów zawartych w samej aplikacji.

Załóżmy na przykład, że aplikacja LangExample.exe używa MFC i działa w wielu systemach interfejsu użytkownika; systemowy język interfejsu użytkownika to ENU [U.S. English], a język interfejsu użytkownika bieżącego użytkownika jest ustawiony na FRC [Kanadyjski francuski]. MFC szuka następujących bibliotek DLL w następującej kolejności:

  1. LangExampleFRC.dll (język interfejsu użytkownika użytkownika).

  2. LangExampleFRA.dll (język interfejsu użytkownika użytkownika bez podjęzyczności, w tym przykładzie francuskim (Francja).

  3. LangExampleENU.dll (język interfejsu użytkownika systemu).

  4. LangExampleLOC.dll.

Jeśli żadna z tych bibliotek DLL nie zostanie znaleziona, usługa MFC używa zasobów w pliku LangExample.exe.

Zobacz też

Tworzenie bibliotek DLL języka C/C++ w programie Visual Studio
TN057: lokalizacja składników MFC