Risorse localizzate in applicazioni MFC: DLL satellite
Aggiornamento: novembre 2007
Grazie al supporto potenziato di MFC 7.0 e versioni successive per le DLL satellite, è possibile creare applicazioni localizzate per più lingue. Una DLL satellite è una DLL di sole risorse contenente le risorse di un'applicazione localizzate per una particolare lingua. All'esecuzione dell'applicazione, MFC carica automaticamente la risorsa localizzata più appropriata per l'ambiente. Potrebbe esserci, ad esempio, un'applicazione con risorse in lingua inglese con due DLL satellite, una contenente la traduzione francese delle risorse e l'altra la traduzione tedesca. Quando viene eseguita in un sistema di lingua inglese, l'applicazione utilizza le risorse inglesi; in un sistema francese utilizza le risorse francesi e in un sistema tedesco le risorse tedesche.
Per supportare le risorse localizzate in un'applicazione MFC, MFC tenta di caricare una DLL satellite contenente le risorse localizzate per una lingua specifica. Le DLL satellite sono denominate NomeApplicazioneXXX.dll, dove NomeApplicazione è il nome del file EXE o DLL che utilizza MFC e XXX è il codice di tre lettere per la lingua delle risorse, ad esempio, "ENU" o "DEU".
MFC tenta di caricare, nell'ordine, la DLL delle risorse per ognuna delle lingue indicate di seguito fermandosi quando ne trova una.
Windows 2000 o versioni successive: la lingua UI predefinita dell'utente corrente, restituita dall'API Win32 GetUserDefaultUILanguage().
Windows 2000 o versioni successive: la lingua UI predefinita dell'utente corrente, senza alcuna sottolingua specifica, ovvero, ENC [Inglese (Canada)] diviene ENU [Inglese (Stati Uniti)]
La lingua predefinita UI del sistema. In Windows 2000 o versioni successive l'impostazione viene restituita dall'API GetSystemDefaultUILanguage(). In altre piattaforme, questa è la lingua del sistema operativo stesso.
La lingua UI predefinita del sistema, senza alcuna sottolingua specifica.
Una lingua fittizia con il codice di 3 lettere LOC.
Se MFC non trova nessuna DLL satellite, utilizzerà qualsiasi risorsa sia contenuta nell'applicazione stessa.
Si supponga, ad esempio, che un'applicazione EsempioLingua.exe utilizzi MFC e venga eseguita in un sistema Windows 2000 a interfaccia utente multiplo; la lingua UI del sistema è ENU [Inglese (Stati Uniti)] e la lingua UI dell'utente corrente è impostata su FRC [Francese (Canada)] MFC cercherà le seguenti DLL nell'ordine elencato.
EsempioLinguaFRC.dll (lingua UI dell'utente).
EsempioLinguaFRA.dll (lingua UI dell'utente senza la sottolingua, in questo esempio il Francese (Francia).
EsempioLinguaENU.dll (lingua UI del sistema).
EsempioLinguaLOC.dll.
Se non trova nessuna di queste DLL, MFC utilizzerà le risorse in EsempioLingua.exe.