Windows XP Professional, system operacyjny gotowy na świat
System Windows jest opracowywany z domyślnym Interfejsem Użytkownika w języku angielskim. System Microsoft Windows NT od najwcześniejszych etapów zawsze zawierał wsparcie międzynarodowe poprzez system kodowania znaków Unicode. W zasadzie standard znakowy Unicode koduje raczej skrypty, a nie języki. Oznacza to, że gdy więcej niż jeden język współdzieli zbiór symboli o historycznie związanym pochodzeniu, suma zbiorów symboli każdego takiego języka jest łączona w pojedynczy zbiór identyfikowany jako pojedynczy skrypt. Te zbiory symboli (czyli skrypty) służą następnie jako zasobniki symboli, z których korzysta się w celu pisania w konkretnych językach. W wielu przypadkach pojedynczy skrypt może służyć do pisania w dziesiątkach lub nawet setkach języków (np. skrypt Latin). W innych przypadkach konkretny skrypt jest stosowany tylko przez jeden język (np. Hangul, który jest używany tylko dla języka koreańskiego). Systemy pisma niektórych języków również mogą wykorzystywać więcej niż jeden skrypt, na przykład język japoński tradycyjnie wykorzystuje skrypty Han (Kanji), Hiragana i Katakana, a w nowoczesnych zastosowaniach japońskiego często dodawany jest również skrypt Latin. W efekcie system Windows XP, w tym wersja Embedded i serwery Windows .Net, umożliwia użytkownikom tworzenie, edycję i drukowanie dokumentów w setkach języków.
W systemie Windows XP większość języków jest obecnie instalowana domyślnie. Zbiory mogą być dodawane przez bezpośrednią interwencję użytkownika lub na żądanie aplikacji: podstawowy zbiór języków jest instalowany zawsze. Można dodać dwa inne zbiory: zbiór języków wschodnioazjatyckich i zbiór języków skryptów złożonych.
Podstawowy system operacyjny, jak również wszystkie dołączone programy, w tym nazwy plików, nazwy obiektów, łańcuchy w rejestrze i wszelkie inne łańcuchy wewnętrzne używane przez system Windows XP są oparte na Unicode, więc mają format niezależny od języka. Dzięki wbudowanemu wsparciu międzynarodowemu system Windows XP jest naprawdę globalnym systemem operacyjnym, który wspiera setki języków. Każda wersja systemu Windows XP może wykonywać aplikacje Windows w dowolnym języku.
Dysponując wsparciem Unicode w systemie Windows, trudno nie pisać oprogramowania kompatybilnego z Unicode. Jednym z powszechnych błędnych wyobrażeń dotyczących kodowania przy użyciu Unicode jest pogląd, iż jest to trudne. W rzeczywistości pisanie kodu dla Unicode jest łatwiejsze, niż implementacja oprogramowania wspierającego DBCS. Interfejs API Win32 jest tak zbudowany, że wszystkie funkcje systemowe, które przyjmują parametry łańcuchowe, istnieją w formie przyjmującej łańcuchy wyrażone jako znaki Unicode, jak również w formie przyjmującej "zwykłe" znaki Windows. Więcej informacji na temat tworzenia aplikacji opartych na Unicode znajduje się w witrynie internetowej firmy Microsoft pod adresem http://www.microsoft.com/globaldev/default.asp.
Aby zrozumieć sposób przetwarzania danych wielojęzycznych przez system Windows, należy zdefiniować kilka podstawowych pojęć.
Locale to zbiór preferencji związanych z językiem i podjęzykiem użytkownika. Przykładem języka jest "francuski", gdzie podjęzykiem może być francuski używany w Kanadzie, we Francji, w Belgii lub Szwajcarii. Informacje locale obejmują symbol waluty; informacje o kodowaniu daty, godziny i liczb; zlokalizowane dni tygodnia i miesiące; standardowy skrót nazwy kraju/regionu; oraz informacje o kodowaniu znaków.
Wsparcie Języków Narodowych (National Language Support) obejmuje wsparcie wprowadzania, takie jak IMM/IME, czcionki i tabele konwersji zawarte w rdzeniowym systemie operacyjnym. System Windows XP posiada Zarządcę Metod Wprowadzania (Input Method Manager - IMM) i Edytor Metod Wprowadzania (Input Method Editor - IME) dla użytkowników lub aplikacji wymagających bardziej skomplikowanego mechanizmu wprowadzania, niż pisanie na klawiaturze angielskiej.
Na przykład aplikacje wymagające wprowadzania znaków w języku azjatyckim korzystają z IME. Funkcje API umożliwiające dostęp do funkcjonalności IMM i IME stanowią część standardowego interfejsu API systemu Windows XP. System Windows XP wspiera również nową usługę wprowadzania tekstu, wspierającą zaawansowane technologie wprowadzania, takie jak mowa, pismo ręczne, itd., jak również tradycyjne IME w udoskonalony sposób.
Układ klawiatury stanowi odwzorowanie między kodami klawiszy a kodami znaków. Układ klawiatury określa również język, typ i wersję klawiatury, modyfikatory, itd. Użytkownik może wybierać konkretny układ klawiatury, aby generować różne kody znaków przy użyciu tej samej fizycznej klawiatury.
Interfejs API wsparcia języków narodowych (NLS) to zbiór funkcji API, które ułatwiają pisanie aplikacji korzystających z locale. Programista musi z nich korzystać, aby aplikacja mogła działać na wielu platformach językowych. Interfejs API NLS obejmuje funkcje do pobierania lub modyfikacji ustawień związanych z locale, ułatwia operacje zależne od locale, takie jak sortowanie łańcuchów, formatowanie daty i godziny, formatowanie waluty i formatowanie kalendarza, oraz zawiera funkcje API strony kodowej i wsparcie konwersji łańcuchów dla aplikacji używających łańcuchów ANSI lub DBCS.
System Windows XP posiada funkcje API, które jako parametry przyjmują kody znaków inne niż UNICODE (ANSI lub DBCS), aby zachować kompatybilność wstecz z aplikacjami napisanymi dla Windows 9X i Windows ME. Zawsze istnieją odpowiednie funkcje API, które jako parametry przyjmują kody znaków UNICODE. Zasadniczo wersja funkcji API dla kodów innych niż UNICODE konwertuje kody znaków w parametrach na UNICODE, po czym wywołuje odpowiednią wersję funkcji API dla kodów UNICODE. Podczas tej konwersji system operacyjny wykorzystuje domyślną stronę kodową systemu, ustawioną przez użytkownika lub administratora. W danym momencie może być ustawiona tylko jedna domyślna strona kodowa systemu.
System Windows XP posiada funkcje API do manipulacji wyprowadzaniem tekstu zawierającego skrypty złożone, w tym tekst dwukierunkowy, kształtowanie kontekstowe, specjalne łamanie słów, specjalne ligatury, itd., jak na przykład dokument arabski zawierający słowa angielskie i japońskie. Ten interfejs API w połączeniu z formatem czcionki OpenType ułatwia tworzenie aplikacji wymagających wyświetlania i przetwarzania tekstu skryptu złożonego.
Aplikacje nie korzystające z locale używają wewnętrznie kodowania znaków UNICODE albo ANSI . Wywołują one wersję UNICODE lub ANSI funkcji API Win32, aby korzystać z usług systemu operacyjnego. Sam podsystem Win32 jest jednak oparty na UNICODE, a warstwa API ANSI po prostu konwertuje znaki ANSI na znaki UNICODE, po czym wywołuje wersje UNICODE tych samych funkcji API.
Domyślna strona kodowa systemu jest używana w interfejsie API Win32 ANSI w celu konwersji znaków z ANSI na UNICODE. Zatem używając aplikacji zlokalizowanej z kodowaniem ANSI w systemie Windows XP, należy ustawić domyślną stronę kodową systemu stosownie do schematu kodowania używanego w aplikacji. W przeciwnym wypadku aplikacja będzie wyświetlała nieprawidłowe znaki z powodu błędu konwersji z ANSI na UNICODE. Diagram na ilustracji przedstawia również to, że aplikacje korzystające z locale używają interfejsu API NLS.
Ilustracja powyżej przedstawia ładowanie zasobów w zwykłym angielskim systemie Windows XP, zaś ilustracja poniżej - ładowanie zasobów w systemie Windows XP z Pakietem Wielojęzycznego Interfejsu Użytkownika.
Wielojęzyczny Interfejs Użytkownika systemu Windows XP
Pakiet Wielojęzycznego Interfejsu Użytkownika systemu Windows XP jest instalowany na wersji angielskiej systemu Windows XP. Nie ma różnic binarnych między wersją angielską a systemem Windows XP z Pakietem Wielojęzycznego Interfejsu Użytkownika. Wersja angielska systemu Windows XP jest budowana ze wsparciem mechanizmu Wielojęzycznego Interfejsu Użytkownika w jego ostatecznej formie.
Wielojęzyczny Interfejs Użytkownika jest implementowany przez przekierowanie wywołań ładowania zasobów na alternatywną ścieżkę. W systemie Windows XP z Pakietem Wielojęzycznego Interfejsu Użytkownika system operacyjny ładuje zlokalizowane zasoby odpowiadające aktualnemu ustawieniu języka zamiast zasobów występujących w sekcji języka angielskiego w pliku wykonywalnym.
W takiej architekturze nie ma powodu, by oczekiwać, że aplikacja działająca w wersji angielskiej systemu Windows XP nie będzie działała w systemie Windows XP z Pakietem Wielojęzycznego Interfejsu Użytkownika.
Firma Microsoft włożyła wiele wysiłku w podniesienie kompatybilności w systemie Windows XP. Technologie kompatybilności aplikacji zawarte w systemie Windows XP dzielą się na dwie odrębne grupy: migracyjne technologie kompatybilności, które pomagają w migracji aplikacji przy uaktualnieniu z poprzednich wersji systemu Windows; oraz poprawki kompatybilności, tryby kompatybilności i Pomoc Aplikacji, które łącznie wspierają instalację i działanie aplikacji w systemie operacyjnym Windows XP. Technologie te opisano szczegółowo w artykule "Technologie Kompatybilności Aplikacji Windows XP". Dzięki nim Windows XP jest znacznie bardziej kompatybilny, niż wszystkie wcześniejsze wersje systemu Windows.
Na rynkach międzynarodowych wielu klientów używa jednak swoich aplikacji w zlokalizowanych wersjach systemów Windows NT lub Windows 2000, i wyraża obawy dotyczące używania zlokalizowanych aplikacji w Pakiecie Wielojęzycznego Interfejsu Użytkownika systemu Windows XP.
Obawy o kompatybilność aplikacji w systemie Windows XP z Pakietem Wielojęzycznego Interfejsu Użytkownika często opierają się raczej na niepełnej wiedzy, a nie na konkretnych faktach. Niniejszy artykuł powinien być pomocny pod tym względem.
Aplikacje używające kodowania innego niż Unicode nie będą działały, jeżeli strona kodowa w systemie Windows XP z Pakietem Wielojęzycznego Interfejsu Użytkownika nie będzie prawidłowo ustawiona. Można temu zapobiec, ustawiając prawidłową domyślną stronę kodową systemu.
Wersje zlokalizowane systemu Windows XP
Wersje zlokalizowane systemu Windows XP mają dokładnie taki sam zbiór właściwości międzynarodowych, jak wersja angielska, i taką samą architekturę, jak opisana na pierwszej ilustracji.
Wersja zlokalizowana systemu Windows XP posiada binarnie kompatybilne funkcje API dla interfejsów API IME, NLS i Skryptów Złożonych. Z punktu widzenia właściwości i architektury wersje zlokalizowane systemu Windows XP są takie same, jak wersja angielska systemu Windows XP. Jakie więc są między nimi różnice?
Oto różnice na najwyższym poziomie:
- Zasoby Interfejsu Użytkownika są całkowicie zlokalizowane.
- Informacje o ustawieniach Windows, takie jak locale systemu, locale użytkownika, układ klawiatury, itd., są dostosowane do konkretnego języka/kraju. Jest to ustawienie strategiczne Pakietu Wielojęzycznego Interfejsu Użytkownika.
- Dodatkowe sterowniki urządzeń specyficzne dla kraju są dodawane tylko w wersjach wschodnioazjatyckich.
- Wsparcie uaktualnień z wersji zlokalizowanych systemów Windows 9X lub Windows 2000 do zlokalizowanego systemu XP. Pakiet Wielojęzycznego Interfejsu Użytkownika wspiera tylko uaktualnienia z wersji angielskich.
Rozpatrzymy te różnice, przyglądając się procesowi technicznemu wersji zlokalizowanej systemu Windows.