W rozwoju oprogramowania , umiędzynarodowienie (w skrócie i18n , gdzie 18 oznacza liczbę znaków między I i N w słowie) jest stworzenie systemu umożliwiającego regionalizację oprogramowania, to znaczy - mówią jego dostosowanie do różnych języków i kultury. Celem internacjonalizacji jest zatem stworzenie jednego programu, który może zawierać interfejs w kilku językach .
Umiędzynarodowienie jest warunkiem wstępnym regionalizacji. Polega na oddzieleniu w kodzie źródłowym programu tego, co jest niezależne od języka i kultury od tego, co jest od niego zależne (najczęściej w plikach zwanych tabelami tłumaczeń ).
Ale internacjonalizacja nie wymaga tylko pracy nad wiadomościami tekstowymi. Czasami konieczne jest również umożliwienie zmiany kodów kolorystycznych (których znaczenie może się różnić w zależności od kultury), grafiki (w tym nazw ikon, niektórych ikon, które mogą zawierać tekst pisany do przetłumaczenia), formatu dat lub liczby, kierunek pisania (na przykład od prawej do lewej w języku arabskim ), rozmiar elementów graficznych (tekst w języku niemieckim jest często dłuższy niż jego odpowiednik w języku angielskim , co może modyfikować układ itp. ), aż do nadawania słów w liczbie mnogiej po liczbie (napiszemy „0 task fille” po francusku, a „0 child ren process es ” po angielsku).
Umiędzynarodowienie jest zatem zbiorem mechanizmów technicznych, które prowadzą do akceptowalnego językowo wyniku w języku wybranym przez użytkownika końcowego. Jednak obsługa „dowolnego języka” może być niewystarczająca, ponieważ program używa ograniczonego zestawu znaków lub określonych czcionek, lub ponieważ użytkownik nie ma do tego odpowiedniej klawiatury, wprowadzanie danych w określonym języku.
Migracja lub rozważenie większego zestawu znaków może być konieczne, aby osiągnąć powszechną internacjonalizację. Rozszerzone zestawy oferowane są z jednej strony w rodzinie ISO-2022 , az drugiej w postaci unicode , ze szczególnym uwzględnieniem UTF-8 / UTF-16 . Ten krok, mniej lub bardziej niezależny od internacjonalizacji (można to zrobić w tym samym czasie, przed lub po) nazywa się „wielojęzycznością”.
Terminy są często zapisywane w ich skrócie i18n , nazwie wymyślonej przez Digital Equipment Corporation w latach 70. i 80. XX wieku oraz l10n dla angielskiego słowa lokalizacji ( regionalizacja w języku francuskim).
Niektóre firmy, takie jak IBM i Sun Microsystems , używają terminu globalizacja do określenia połączenia internacjonalizacji i regionalizacji.
Firma Microsoft definiuje internacjonalizację jako połączenie angielskiego wyrażenia „World-Readiness” i regionalizacji. Światowej gotowość to spoczywa zadanie na dewelopera, a co sprawia, że można stosować produkt z wieloma postaciami pisania i wielu kultur (globalizacja) podczas rozdzielania internationalizable zasobów z poziomu interfejsu użytkownika w regionizable formacie ( localisability , w skrócie l12y ) .
Koncepcja ta znana jest również pod nazwą „NLS” ( National Language Support lub Native Language Support, co oznacza wsparcie dla języków narodowych lub wsparcie dla języków ojczystych w języku francuskim).
Tak przygotowany program C nie jest umiędzynarodowiony:
printf("Fatal error: %s\n", msg);Aby przetłumaczyć wiadomość, konieczna byłaby edycja kodu źródłowego i modyfikacja ciągu znaków.
Z drugiej strony, następna wersja tego samego programu jest umiędzynarodowiona dzięki bibliotece gettext . Program będzie szukał w swoich plikach lokalizacyjnych ciągu znaków odpowiadającego „Błąd krytyczny:% s” dla języka bieżącego użytkownika:
printf(gettext("Fatal error: %s\n"), gettext(msg));Regionalizowane wiadomości gettext są powiązane z domyślną wersją wiadomości, która służy jako klucz . Inne środowiska programistyczne mogą na przykład używać liczby (co zrobił Mac OS ) lub polegać na dynamicznych ustawieniach konfiguracji (na przykład metoda I18n.translateaplikacji Ruby On Rails ).
Wysiłki na rzecz umiędzynarodowienia i regionalizacji powinny uwzględniać następujące cechy:
Rozróżnienie między internacjonalizacją a regionalizacją jest subtelne, ale ważne. Umiędzynarodowienie to adaptacja produktów, które mogą być wykorzystywane „potencjalnie” niemal wszędzie, podczas gdy regionalizacja to dodawanie określonych wartości przeznaczonych dla danych parametrów regionalnych . Internacjonalizacja jest wykonywana raz dla każdego produktu, natomiast regionalizacja jest wykonywana dla każdej adaptacji tego produktu do ustawień regionalnych. Procesy wzajemnie się uzupełniają i muszą być połączone, aby osiągnąć cel systemu funkcjonującego na arenie międzynarodowej. Obszary charakterystyczne dla regionalizacji obejmują następujące cechy:
W celu umiędzynarodowienia produktu konieczne jest sprawdzenie, na każdym z rynków, na których produkt jest zarejestrowany, takich szczegółów, jak:
To tylko przykłady uczynienia z internacjonalizacji złożonym projektem.
Szersze podejście uwzględnia czynniki kulturowe dotyczące na przykład dostosowania logiki procesu biznesowego lub uwzględnienia aspektów indywidualnych i kulturowych (behawioralnych).
Obecna praktyka dotyczy aplikacji, które umożliwiają umieszczanie tekstu w ciągach zasobów, ładowanie go podczas wykonywania programu i w razie potrzeby. Te ciągi, przechowywane w plikach zasobów, są stosunkowo łatwe do konwersji. Programy są często tworzone w celu odniesienia się do bibliotek zasobów, które zależą od wybranych danych regionalnych. Jest to możliwe dzięki bibliotekom oprogramowania, takim jak gettext .
W związku z tym, aby uzyskać aplikację, która może obsługiwać wiele języków, zaleca się zaprojektowanie aplikacji, która umożliwiłaby wybór pliku zasobów odpowiedniego języka w czasie wykonywania. Pliki zasobów są konwertowane na wymagane języki. Ta metoda jest zwykle specyficzna dla aplikacji lub nawet dla dostawcy. Kod potrzebny do obsługi weryfikacji danych wejściowych i wiele innych typów danych wrażliwych na lokalizację musi również obsługiwać różne wymagania regionalne. Nowoczesne systemy programistyczne i operacyjne obejmują zaawansowane biblioteki, które zapewniają międzynarodowe wsparcie dla tego rodzaju danych.
Chociaż tłumaczenie istniejących tekstów na inne języki może wydawać się łatwe, trudniej jest utrzymać równoległe wersje tekstów przez cały cykl życia produktu. Na przykład, jeśli zmieni się komunikat wyświetlany użytkownikowi, wszystkie przetłumaczone wersje również będą musiały zostać zmienione. To z kolei skutkuje nieco dłuższym cyklem rozwoju.
Wiele kwestii związanych z regionalizacją (np. Kierunek pisania, sortowanie tekstu itp.) Wymaga głębszej modyfikacji niż samo tłumaczenie tekstu. Na przykład OpenOffice.org osiąga to poprzez przełączniki kompilacji.
Do pewnego stopnia (np. W celu zapewnienia jakości ) zespół programistów potrzebuje kogoś, kto rozumie języki obce i kultury oraz ma zaplecze techniczne. W dużych krajach, w których istnieje tylko jeden dominujący język lub kultura, prawdopodobnie trudno jest znaleźć taką osobę.
Jednym z przykładów znanych pułapek związanych z regionalizacją jest próba zachowania przez Microsoft pewnych znaczących skrótów klawiaturowych dla języków lokalnych. W niektórych programach we włoskojęzycznej wersji pakietu Microsoft Office klawisz „CTRL + U” ( podkreślenie ) został zastąpiony przez „CTRL + S” („sottolineato”) zamiast (prawie) uniwersalnej funkcji „Zapisz” .
W kontekście handlowym zaletą internacjonalizacji jest dostęp do nowych rynków. Jednak wiąże się to ze znacznymi kosztami, które wykraczają daleko poza prostą inżynierię. Po pierwsze, program zwykle wymaga przeglądu, aby mógł być sprzedawany na całym świecie.
W takim przypadku dostarczenie tłumaczenia w danym języku nie jest uważane za projekt trywialny. Wiąże się to z interwencją wyspecjalizowanych pisarzy technicznych, którzy budują składnię dostosowaną do kultury, zwłaszcza w przypadku złożonych koncepcji, związanych z zasobami inżynieryjnymi w celu opracowania i przetestowania elementów regionalizacji. Ponadto działalność biznesowa musi zostać dostosowana w celu zarządzania produkcją, przechowywaniem i dystrybucją wielu różnych produktów regionalnych, często sprzedawanych po różnych cenach w różnych walutach, w różnych środowiskach regulacyjnych, a także podlegających różnym systemom podatkowym.
Wreszcie, sprzedaż, marketing i wsparcie techniczne muszą również ułatwiać ich działalność w nowych językach, aby pomóc konsumentom w wyborze ich regionalnych produktów. Ale jeśli chodzi o ludzi mówiących bardzo rzadko używanym językiem, nigdy nie należy oczekiwać, że produkty podzielone na region przyniosą zyski. Nawet jeśli populacje posługujące się szeroko rozpowszechnionym językiem wymagają przetłumaczenia danego produktu, a produkt jest już umiędzynarodowiony, deweloperowi lub wydawcy oprogramowania z pewnością zabraknie miejsca lub know-how, aby zarządzać dodatkowymi funkcjami związanymi z oprogramowaniem. ” kilka języków. Na przykład Microsoft Windows 7 ma pakiet dostępny w 96 językach.
Alternatywą, często używaną przez społeczności wolnego oprogramowania , jest partycypacyjna regionalizacja przez zespoły wolontariuszy. Na przykład projekt K Desktop Environment 3 został przetłumaczony na ponad 100 języków, a projekt KDE Software Compilation 4 jest dostępny w 68 językach. Jednak regionalizacja partycypacyjna wymaga, aby produkt bazowy był najpierw zaprojektowany do finansowania takich działań, co jest znacznym wysiłkiem.