[ Pobierz całość w formacie PDF ]
.Oprócz tego, powszechnie jest używana definicja makropolecenia przyjmującego jeden argument o nazwie „_” (po prostu zwykłe podkreślenie).Wówczas napis, do którego się odwołujemy, np.mający postać:"Please gettext-ize me!"staje się wywołaniem makrodefinicji:_("Please gettext-ize me!")Taka metoda szybko staje się czymś tak oczywistym, jak oznaczanie komentarzy w języku C.W module catgets(3) podobne podejście wykorzystujące proste makropolecenie nie jest możliwe, ponieważ wymagana jest obecność dodatkowego argumentu, czyli indeksu.W rzeczywistości catgets(3) wymaga podania jeszcze dwóch innych argumentów, czyli katalogu i numeru zestawu znaków, ale dla prostszych zastosowań można utworzyć makropolecenie lub funkcję pakującą, która obsłuży te argumenty.Nadal jednak wymagany będzie numer indeksu i komunikat awaryjny.Moduł gettext w wersji GNU (i biblioteka libc zawierająca ten moduł) definiuje dwie dodatkowe zmienne umiejscawiające.Zamienna LANGUAGE jest uogólnieniem zmiennej LANG z dodaną ścieżką przeszukiwania definicji językowych.Wpływa ona tylko na kategorię umiejscawiającą LC_MESSAGES, umożliwiając użytkownikowi określenie katalogów komunikatów dla kilku języków, które mają być przeszukiwane przed ostatecznym użyciem komunikatu domyślnego zakodowanego na stałe w programie.Zmienna LINGUAS jest używana specyficznie przez moduł gettext i określa, które kategorie umiejscawiające dostępne w aplikacji mają być zainstalowane w systemie.Zmienna LINGUAS różni się istotnie od innych opisanych wcześniej kategorii umiejscawiających.Korzystają z niej głównie administratorzy systemu i osoby pakujące dystrybucje, a nie programiści tworzący aplikacje.Wspomniano o niej w tym miejscu tylko dlatego, aby wskazać na jej istnienie i możliwość odwołania się do niej.Autonomiczna biblioteka i dokumentacja dla GNU gettextModuł gettext w wersji GNU jest rozprowadzany w dwóch postaciach: jako pomocnicza biblioteka libintl.a oraz jako część biblioteki libc w wersji GNU.W obydwu używany jest wspólny interfejs libintl.h, natomiast różnice dotyczą ograniczeń licencyjnych.Biblioteka libintl.a stosuje się do licencji GPL, zaś druga postać objęta jest licencją LGPL.Dodatkowe programy wspomagające programowanie gettextize(1), msgfmt(1), msgmerge(1) i xgettext(1) także są rozprowadzane tylko z autonomiczną biblioteką, ponieważ na ogół nie są one potrzebne do uruchamiania programów w wersjach międzynarodowych.Oznacza to, że tam, gdzie wspomina się o dokumentacji gettext, należy sprawdzać zarówno dokumentację rozprowadzaną z autonomiczną wersją gettext (jedynego źródła programów pomocniczych, takich jak xgettext(1) i msgfmt(1)), jak i opisy tego modułu dołączane do biblioteki libc (zazwyczaj dokładniejsze).Formatowanie danych wyjściowych i przetwarzanie danych wejściowychPodstawowym wymaganiem w I18N jest umożliwienie użytkownikowi oglądania danych wyjściowych i wprowadzania danych wejściowych w wybranym przez niego języku.X Window System uniezależnia to wymaganie od sprzętu, ponieważ dane wyjściowe są prezentowane na wyświetlaczu obsługującym grafikę rastrową, a układ klawiatury daje się łatwo skonfigurować.Programiści tworzący aplikacje nie powinni w normalnych okolicznościach zmieniać konfiguracji klawiatury.Elastyczność obsługi jest ukryta za konfiguracją dostawcy, a więc programista aplikacji nigdy nie powinien żądać bezpośredniego odczytu klawiatury przy wprowadzaniu tekstów dowolnego rodzaju.X Window SystemX11 zapewnia przełomowe wsparcie dla I18N w systemie Linux: wyświetlacz graficzny z grafiką rastrową oraz elastyczna obsługa wejścia uwalnia internacjonalizowane aplikacje od konieczności zajmowania się konfiguracją sprzętu.Nie ma tu znaczenia, że karta grafiki nie ma wbudowanych jakichś dziwnych znaków (np.hiszpańskiego ñ), całej cyrylicy lub tysięcy znaków azjatyckich.X11 dysponuje własnymi krojami pisma, do których użytkownicy mają wolny dostęp i które mogą być łatwo utworzone i zainstalowane
[ Pobierz całość w formacie PDF ]