Uwaga ta opisuje niektóre projekty i procedur, które można przetłumaczyć składnik, jest to aplikacja lub formant OLE lub biblioteki DLL, który używa usługi MFC.
Przegląd
Naprawdę są dwie kwestie do rozwiązywania, gdy lokalizowanie składnik, który korzysta z usługi MFC. Po pierwsze trzeba przetłumaczyć własnych zasobów – ciągi, okien dialogowych i innych zasobów, które są specyficzne dla użytkownika składnika. Większości składników zbudowany przy użyciu MFC również obejmować i użyć liczby zasobów, które są definiowane przez MFC. Należy podać także zasobów MFC zlokalizowanych. Na szczęście kilka języków są już udostępniane przez MFC, sam.
Ponadto składnik powinna być przygotowana do uruchamiania w środowisku docelowym (Europejskiej lub DBCS włączone środowiska). W większości przypadków to zależy od aplikacji poprawnie traktowanie znaków z ustawionym bitem wysoki i obsługi ciągów znaków dwubajtowych. MFC jest włączone, domyślnie dla obu tych środowiskach, takich, że jest możliwe do jednego "światowym zasięgu" pliku binarnego, który jest używany na wszystkich platformach tylko różnych zasobów podłączony czasie instalacji.
Lokalizowanie zasobów tego komponentu
Lokalizowanie aplikacji lub biblioteka DLL powinna obejmować po prostu zastępowanie zasobów z zasobów, które pasuje języku docelowym. Dla własnych zasobów, jest stosunkowo prosta: edytowanie zasobów w edytorze zasobów i budowania aplikacji. Jeśli kod jest napisane poprawnie będzie nie ciągi lub tekst, który chcesz przetłumaczyć zakodowane w kodzie źródłowym C++ – wszystkich lokalizacji może odbywać się po prostu zmieniając zasobów. W rzeczywistości można implementować składnik, takie, że wszystkie zapewniające zlokalizowana wersja nawet obejmują kompilacji oryginalnego kodu. Jest bardziej skomplikowany, ale jest warto dobrze i jest mechanizmem wybranym dla MFC, sam. Jest również możliwe do lokalizacji aplikacji ładowanie pliku EXE lub DLL w edytorze zasobów i bezpośrednio edytując zasobów. Podczas, gdy jest to możliwe, jest wymaga ponownego stosowania tych zmian za każdym razem można zbudować nową wersję aplikacji.
Jednym ze sposobów uniknięcia, który ma zlokalizować wszystkie zasoby w oddzielnych biblioteki DLL, czasami nazywane satelity biblioteki DLL. Tego pliku DLL jest następnie załadowane dynamicznie przy starcie i zasoby są ładowane z tej biblioteki DLL zamiast z głównym modułu z wszystkich kodu. MFC bezpośrednio obsługuje tego podejścia. Należy wziąć pod uwagę aplikacji o nazwie MOJAAPLIKACJA.EXE; może ono wszystkie jego zasobów znajdujących się w bibliotece DLL o nazwie MYRES.Biblioteka DLL. we wniosku przez InitInstance będzie wykonywać następujące czynności, aby załadować tego pliku DLL i spowodować MFC do załadowania zasobów z tej lokalizacji:
CMyApp::InitInstance()
{
/ / jedną z pierwszych rzeczy w kodzie init
Wystąpienie HINSTANCE hInst = LoadLibrary("myres.dll");
Jeżeli (hInst! = NULL)
AfxSetResourceHandle(hInst);
/ / nastąpiłby inny kod inicjowania
.
.
.
}
Następnie od MFC będzie ładować zasoby z tej biblioteki DLL zamiast z MojaApl.exe. Wszystkie zasoby, jednak musi być obecny w tym DLL – MFC będzie wyszukuj wystąpienie aplikacji w poszukiwaniu danego zasobu. Technika ta dotyczy równie dobrze do regularnych biblioteki dll, jak również formantów OLE. Program instalacyjny będzie Skopiuj właściwą wersję MYRES.Biblioteka DLL w zależności która regionalnych zasobów użytkownik chciałby.
Stosunkowo łatwo utworzyć zasób jest tylko biblioteki DLL. Tworzenie projektu biblioteki DLL, dodać użytkownika.RC pliku do niego i dodać niezbędne zasoby. Jeśli masz istniejącego projektu, który nie korzysta z tej techniki, można skopiować zasoby z tego projektu. Po dodaniu pliku zasobów do projektu są prawie gotowe do budowania projektu. Jedyną rzeczą jaką należy wykonać jest, ustaw linker opcje dołączania /NOENTRY. To że biblioteki DLL ma żaden punkt wejścia – mówi się linker ponieważ posiada żaden kod nie posiada żaden punkt wejścia.
Uwaga Edytor zasobów w Visual C++ 4.0 i nowszych obsługuje wiele języków na.Plik RC. To możliwe bardzo łatwe w zarządzaniu Twojej lokalizacji w jednym projekcie. Zasoby dla każdego języka jest kontrolowana przez dyrektywy preprocesora generowanych przez edytor zasobów.
Za pomocą dostarczonego MFC zlokalizowanych zasobów
Każda aplikacja MFC tworzenia odbywa dwie rzeczy z MFC: kod i zasobów. Oznacza to, że MFC ma różne komunikaty o błędach, wbudowane okien dialogowych i innych zasobów, które są używane przez klas MFC. Aby całkowicie przetłumaczyć aplikacji, musisz przetłumaczyć nie tylko zasoby aplikacji, ale również zasoby, które pochodzą bezpośrednio z MFC. MFC udostępnia szereg różnych języków pliki zasobów automatycznie, tak, że jeżeli języka, w którym są wyróżniane jest jednym z języków, które wspiera już MFC, możesz po prostu konieczne upewnić się, że używasz tych zasobów zlokalizowanych.
Pisania tego obsługuje MFC: chiński, niemiecki, hiszpański, francuski, włoski, japoński i koreański. Pliki, które zawierają te zlokalizowane wersje są w MFC\INCLUDE\L.* ('L' oznacza dla zlokalizowana) katalogów. Niemiecki pliki są w MFC\INCLUDE\L.DEU, na przykład. Aby spowodować, że aplikacja do korzystania z tych plików RC zamiast z plików znajdujących się w MFC\INCLUDE, po prostu dodaj /IC:\PROGRAM FILES\DEVSTUDIO\VC\MFC\INCLUDE\L.DEU do linii poleceń w RC (jest to tylko przykład – trzeba zastąpić ustawienia regionalne wybór, a także katalogu, w którym zainstalowano program Visual C++).
Powyższe instrukcje będą działać, jeżeli aplikacji statycznie łączy się z MFC. Większość aplikacji łącze dynamicznie (ponieważ jest domyślnie AppWizard). W tym scenariuszu nie tylko kod jest dynamicznie połączone – to są zasoby. W rezultacie zasoby można lokalizować w aplikacji, ale zasobów wdrożenia MFC nadal będzie można załadować z MFC4xLOC.DLL MFC4x.DLL (lub nowszej wersji) lub, jeśli istnieje. Można to podejście z dwoma różnymi kątami.
Tylko do fu&nkcji w Professional i Enterprise Editionsnbsp; Statyczne łączenie MFC jest obsługiwany tylko w Visual C++ Professional i Enterprise. Aby uzyskać więcej informacji, zobacz Visual C++ wersje.
Bardziej złożonego podejścia statku z zlokalizowane MFC4xLOC.DLLs (np. MFC4xDEU, dla Niemiec, MFC4xESP.DLL dla hiszpańskiego, itp.) lub nowszym i zainstalować odpowiednią MFC4xLOC.DLL w katalogu systemowym, kiedy użytkownik instaluje aplikację. To może być bardzo skomplikowane dla autora i użytkowników końcowych i jako taka nie jest zalecana. Zobacz technicznych 56 Uwaga więcej informacji na temat tej techniki i jego ostrzeżenia.
Najprostszy i najbezpieczniejszą podejście ma zawierać zlokalizowanych zasobów MFC w danej aplikacji lub biblioteki DLL sam (lub jego satelitarnej DLL), jeśli używasz. Pozwala to uniknąć problemów prawidłowo instalacji MFC4xLOC.DLL. Aby zrobić tak można postępuj zgodnie z instrukcjami tego samego statycznych przypadku podanych powyżej (ustawienie RC wiersza polecenia odpowiednio do punktu do zasobów zlokalizowanych), z wyjątkiem że należy również usunąć /D_AFXDLL określić, że została dodana przez AppWizard. Gdy /D_AFXDLL jest zdefiniowany, AFXRES.H (i inne pliki MFC RC) nie faktycznie zdefiniować wszystkie zasoby (ponieważ one będą należy ściągnąć z biblioteki MFC DLL zamiast).
Uwagi techniczne przez liczbę |nbsp; Uwagi techniczne według kategorii