TN057: Lokalizace součásti MFC
[!POZNÁMKA]
Následující technické poznámce nebyly aktualizovány od byla poprvé zahrnuta v dokumentaci online.Proto některé postupy a témata mohou být nesprávné nebo zastaralé.Nejnovější informace je vhodné vyhledat téma zájmu v dokumentaci online index.
Tato poznámka popisuje některé z návrhů a postupy, které lze použít k lokalizaci komponenty, pokud ji ovládat aplikaci nebo OLE nebo knihovnu DLL, která používá MFC.
Přehled
Ve skutečnosti existují dva problémy při řešení lokalizace součásti, která používá MFC.Nejprve je nutné lokalizovat vlastní zdroje – řetězce, dialogová okna a další prostředky, které jsou specifické pro komponentu.Většina komponent sestavené pomocí MFC také patří a počet prostředků, které jsou definovány MFC.Je nutné zadat také lokalizované prostředky MFC.Naštěstí několik jazyků jsou již poskytovány MFC sám.
Kromě toho by v jeho cílové prostředí (prostředí Evropského nebo podporující sadu DBCS) připravit komponenty.Z větší části závisí na vaší aplikace zpracovávající správně znaky s nastaveným bitem vysoké a manipulaci s dvoubajtových znaků řetězce.MFC je povolena, standardně obou těchto prostředích je možné mít jeden celosvětově binární soubor, který se používá na všech platformách s právě různé zdroje, které jsou zapojeny v době instalace.
Lokalizace zdrojů dané komponenty.
Lokalizace aplikace nebo knihovna DLL by měla zahrnovat prostředky, které odpovídají cílový jazyk jednoduše nahrazení zdrojů.U vlastních zdrojů je poměrně jednoduchý: Úpravy zdroje v editoru zdrojů a vytváření aplikace.Pokud váš kód je napsán správně, bude obsahovat žádné řetězce nebo text, který chcete lokalizovat pevně do zdrojového kódu jazyka C++ – všechny lokalizace lze provést jednoduše úpravou zdrojů.Komponenty lze implementovat ve skutečnosti takové, že všechny poskytují lokalizované verze i nezahrnuje sestavení původního kódu.To je složitější, ale je velmi ji a mechanismus pro MFC sám zvolí.Také je možné lokalizovat aplikace při načítání souboru EXE nebo DLL do editoru zdrojů a přímo úpravou zdrojů.Při možná vyžaduje Čínou tyto změny při každém vytvoření nové verze aplikace.
Jedním způsobem, jak se vyhnout, je najít všechny prostředky v samostatných DLL, nazývaný také satelitní knihovny DLL.Tato knihovna DLL pak za běhu načíst dynamicky a prostředky jsou načteny z dané knihovny DLL namísto z modulu hlavní vlastním kódem.MFC přímo podporuje tento přístup.Zvažte MOJEAPL nazývá aplikace.EXE; by mohla mít všechny své prostředky umístěné v DLL se nazývá MYRES.DLL.Aplikace v InitInstance by provedl následující načtení dané knihovny DLL a způsobit MFC načíst prostředky z tohoto umístění:
CMyApp::InitInstance()
{
// one of the first things in the init code
HINSTANCE hInst = LoadLibrary("myres.dll");
if (hInst != NULL)
AfxSetResourceHandle(hInst);
// other initialization code would follow
.
.
.
}
Od na z dané knihovny DLL namísto z Mojeapl.exe MFC načte prostředky.Všechny prostředky však musí být v dané knihovny DLL; MFC nebude hledání instance aplikace, hledání danému prostředku.Tento postup platí stejně dobře na pravidelných knihoven DLL a také ovládací prvky OLE.Instalační program bude kopírovat odpovídající verzi MYRES.V závislosti na národní prostředí, které resource DLL jako uživatel.
Je poměrně snadné vytvoření prostředku pouze knihovny DLL.Vytvoření knihovny DLL projektu, přidejte vaše.RC do jej a přidejte potřebné prostředky.Máte-li existující projekt, který nepoužívá tuto techniku můžete kopírovat prostředky z projektu.Po přidání zdrojů do projektu, jste připraveni téměř k sestavení projektu.Je jediným objektem, je nutné nastavit možnosti zahrnutí vytvořeném propojovacím /NOENTRY.To říká vytvořeném propojovacím, že knihovna DLL nemá žádné vstupní bod – protože nemá žádný kód, nemá žádné vstupní bod.
[!POZNÁMKA]
Zdroj editoru Visual C++ 4.0 a novější podporuje více jazyků za.Soubor RC.Proto může být velmi snadno spravovat vaše lokalizace v jednom projektu.Prostředky pro každý jazyk jsou řízeny generovaných prostředků editor direktivy předprocesoru.
Pomocí poskytnutého MFC lokalizované prostředky
Všechny aplikace MFC sestavování opakovaně používá dvě věci z MFC: kód a zdroje.MFC, má různé chybové zprávy, vestavěné dialogová okna a další prostředky, které jsou používány tříd MFC.K lokalizaci zcela aplikace, je nutné lokalizovat pouze prostředky vaše aplikace, ale také prostředky, které pocházejí přímo z MFC.MFC obsahuje počet různých jazykových souborů prostředků automaticky, tak, že pokud jsou cílení jazyka je jedním z jazyků, které již podporuje MFC, potřebujete pouze zda že používat lokalizované prostředky.
MFC psán tento podporuje čínské, německé, španělské, francouzské, italské, japonština a korejština.Soubory, které obsahují tyto lokalizované verze jsou MFC\INCLUDE\L.* ("L" je zkratka pro lokalizované) adresáře.Německé soubory jsou v MFC\INCLUDE\L.DEU, například.Chcete-li aplikaci používat tyto soubory RC místo souborů umístěných v MFC\INCLUDE, přidat /IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU na příkazovém řádku RC (Toto je pouze příklad; je potřeba nahradit národní prostředí voleb, jakož i adresář, do kterého jste nainstalovali Visual C++).
Výše uvedené pokyny budou fungovat, pokud aplikace staticky odkazy s MFC.Většina aplikací propojení dynamicky (protože je výchozí AppWizard).V tomto scénáři není pouze kód je dynamicky propojena – to jsou zdroje.Proto zdroje je možné lokalizovat v aplikaci, ale prostředky implementace MFC bude stále načten z MFC7x.DLL (nebo novější) nebo MFC7xLOC.DLL Pokud existuje.To lze dosáhnout ze dvou různých úhlů.
Složitější přístup je loď jeden lokalizované MFC7xLOC.DLLs (například MFC7xDEU pro němčinu, MFC7xESP.DLL pro španělštinu, atd.) nebo novější verzi a nainstalovat odpovídající MFC7xLOC.DLL do systémového adresáře při instalaci aplikace uživatelem.To může být velmi složité pro vývojáře a koncový uživatel a jako takové se nedoporučuje.Viz Technická poznámka: 56 Další informace o této techniky a jeho upozornění.
Nejjednodušší a nejbezpečnější přístup je zahrnout do aplikace nebo knihovna DLL sama (nebo jeho satelitní knihovny DLL) lokalizované prostředky MFC, pokud používáte jednu.Tím předejdete potížím instalace MFC7xLOC.DLL správně.Provedete podle stejných pokynů pro případ statické výše uvedených (nastavení správně tak, aby lokalizované prostředky RC příkazového řádku), s výjimkou, že je nutné odebrat také /D_AFXDLL definovat, do AppWizard.Při /D_AFXDLL je definován AFXRES.H (a jiné soubory MFC RC) nedefinujte skutečně všechny prostředky (protože jsou nebudou se zdvihne z knihoven DLL MFC místo).