Lokalizacja jest trudna. To naprawdę trudne. To nie tylko "pairs of words" => "Wortpaare"
, jest to o wiele bardziej złożone. O czym większość ludzi zapomina, gdy patrzą na gettext i mówią „Brzydko, brzydko” jest to, że proces lokalizacji jest dużo ważniejszy niż szczegóły techniczne realizacji. Dzieje się tak, ponieważ prawdziwi tłumacze zazwyczaj nie są programistami i prawdopodobnie nie są nawet wewnętrzni. Powoduje to o wiele więcej bólów głowy, niż mogłoby się wydawać. gettext jest naprawdę stary, przetestowany w boju i ma za sobą ogromny zestaw narzędzi, który jest dostosowany do obsługi tego procesu. Jeśli chcesz poprawnie wykonać i18n i l10n, potrzebujesz potężnego systemu. gettext jest tym i obsługuje szeroką gamę narzędzi. Twój Homebrewed Translation System™ nie.
Przede wszystkim potrzebujesz solidnego systemu do wydobycia tłumaczone ciągi. Bez możliwości automatycznego i powtarzalnego wyodrębniania możliwych do przetłumaczenia ciągów znaków z kodu źródłowego, masz mnóstwo pracy nad każdym nowym ciągiem, który chcesz przetłumaczyć. W gettext xgettext
robi to.
Następnie potrzebujesz narzędzia do synchronizacji wyodrębnionych ciągów z już istniejącymi tłumaczeniami w taki sposób, aby żadne tłumaczenia nie zostały utracone i aby w miarę możliwości zachowane były tylko nieznacznie zmienione tłumaczenia. W gettext msgmerge
robi to.
Następnie chcesz dodać dodatkowe informacje do ciągów. Chcesz mieć możliwość grupowania ich według kategorii, "domeny" i kontekstu, możesz dodawać komentarze dla tłumacza do kodu źródłowego i możesz chcieć, aby tłumacze mogli dodawać komentarze do tłumaczeń. gettext obsługuje to wszystko.
Następnie potrzebujesz formatu pliku, który ma dobrą obsługę różnych narzędzi, ponieważ możesz wysyłać swoje pliki do Chin, aby je tam przetłumaczyć. Powodem, dla którego możesz je wysyłać do zewnętrznych tłumaczy, jest również powód, dla którego potrzebujesz dobrego narzędzia do synchronizacji, aby scalić zmiany, ponieważ może to być bardzo asynchroniczny proces. Pliki PO są bardzo dobrze obsługiwane, ponieważ gettext jest tak stary. Istnieje wiele narzędzi typu open source i narzędzi komercyjnych, które wspierają proces lokalizacji na wielu poziomach, w zależności od Twoich konkretnych potrzeb.
Nie lekceważ zadania lokalizacji, wybierz narzędzie dobrze dopasowane do procesu i naucz się go. gettext to świetne narzędzie, choć nie jest to najbardziej przyjazne dla początkujących.
Co jest warte, oto moje rozszerzenie gettext dla Twiga , co sprawia, że gettext dla PHP jest jeszcze lepszy.