Risorse localizzate in applicazioni MFC: DLL satellite

MFC versione 7.0 e successive offre supporto avanzato per le DLL satellite, una funzionalità che consente di creare applicazioni localizzate per più lingue. Una DLL satellite è una DLL di sola risorsa che contiene le risorse di un'applicazione localizzate per un determinato linguaggio. Quando l'applicazione inizia l'esecuzione, MFC carica automaticamente la risorsa localizzata più appropriata per l'ambiente. Ad esempio, è possibile avere un'applicazione con risorse in lingua inglese con due DLL satellite, una contenente una traduzione francese delle risorse e l'altra contenente una traduzione in tedesco. Quando l'applicazione viene eseguita in un sistema di lingua inglese, usa le risorse in inglese. Se eseguito in un sistema francese, utilizza le risorse francesi; se eseguito in un sistema tedesco, usa le risorse tedesche.

Per supportare le risorse localizzate in un'applicazione MFC, MFC tenta di caricare una DLL satellite contenente risorse localizzate in un linguaggio specifico. Le DLL satellite sono denominate ApplicationNameXXX.dll, dove ApplicationName è il nome del file con estensione exe o dll tramite MFC e XXX è il codice a tre lettere per la lingua delle risorse, ad esempio 'ENU' o 'DEU'.

MFC tenta di caricare la DLL della risorsa per ognuna delle lingue seguenti in ordine, arrestandosi quando ne trova uno:

  1. Lingua dell'interfaccia utente predefinita dell'utente corrente, restituita dall'API Win32 GetUserDefaultUILanguage().

  2. La lingua predefinita dell'interfaccia utente dell'utente corrente, senza alcuna sottolanguazione specifica, ovvero ENC [inglese canadese] diventa ENU [inglese statunitense]).

  3. Lingua dell'interfaccia utente predefinita del sistema, come restituito dall'API GetSystemDefaultUILanguage(). In altre piattaforme, si tratta del linguaggio del sistema operativo stesso.

  4. Lingua dell'interfaccia utente predefinita del sistema, senza alcuna sottolanguazione specifica.

  5. Una lingua fittizia con il codice di 3 lettere LOC.

Se MFC non trova dll satellite, usa qualsiasi risorsa contenuta nell'applicazione stessa.

Si supponga, ad esempio, che un'applicazione LangExample.exe usi MFC ed è in esecuzione in un sistema a più interfacce utente; la lingua dell'interfaccia utente di sistema è ENU [inglese statunitense] e la lingua dell'interfaccia utente corrente è impostata su FRC [francese canadese]. MFC cerca le DLL seguenti nell'ordine seguente:

  1. LangExampleFRC.dll (linguaggio dell'interfaccia utente dell'utente).

  2. LangExampleFRA.dll (lingua dell'interfaccia utente dell'utente senza sottolanguage, in questo esempio francese (Francia).

  3. LangExampleENU.dll (linguaggio dell'interfaccia utente del sistema).

  4. LangExampleLOC.dll.

Se nessuna di queste DLL viene trovata, MFC usa le risorse in LangExample.exe.

Vedi anche

Creare DLL C/C++ in Visual Studio
TN057: localizzazione di componenti MFC