2010-04-30 10 views
12

Obecnie pracuję z aplikacją PHP opartą na codeigniter i doszliśmy do punktu, w którym ma się rozpocząć z wieloma językami.Najbardziej efektywny sposób pracy z wieloma językami naturalnymi

Czy pisownię należy używać w klasie językowej jako najbardziej skutecznej metody obsługi języków? Czy są jakieś specyficzne narzędzia/biblioteki językowe, które są powszechnie używane w aplikacjach PHP?

Dzięki!

Odpowiedz

12

Nigdy nie używałem CI_Language, ale wydaje się, że do tłumaczenia używane są tablice językowe.

Nadmiernie uproszczonym przykładem tej metody typu:

$trans = array(
    'MAIN_TITLE' => 'Title Here' 
); 

echo $trans['MAIN_TITLE']; 

Osobiście uważam to naprawdę irytujące, ponieważ jesteś wtedy edycję widoki, które są zaśmiecone tablicy kluczowych nazw zamiast przydatnych tekstów. Co może być dość denerwujące w czasach. Nie wspominając już o tym, że musisz pamiętać, które klawisze korelują z wybranymi ciągami, jeśli używasz ich w wielu miejscach.

Używam Gettext, które uważam za znacznie łatwiejsze. Trzeba tylko zawijać łańcuchy za pomocą metody translate: _(). Następnie, gdy skończysz z aplikacją, otwórz PoEdit i utwórz nowy plik językowy. PoEdit przetworzy wszystkie moje pliki źródłowe w poszukiwaniu ciągów owiniętych w ten sposób <?php echo _('Title here') ?> i wstawi je do pliku językowego .po. Możesz następnie przejść ciąg po łańcuchu i łatwo przetłumaczyć tekst w PoEdit. Zaletą tego jest to, że posiadasz tłumaczenie źródłowe w obrębie PoEdit, zamiast bezsensownej nazwy klucza tablicy w jakimś pliku włączającym

To wszystko ułatwia moje życie dzięki temu, że mogę aktualizować pliki językowe w każdy piątek za pomocą jednego kliknięcia . Wszelkie nowe lub zmodyfikowane tłumaczenia zostaną automatycznie dodane do mojego pliku językowego, a wszelkie nieużywane tłumaczenia zostaną automatycznie usunięte. Wysyłam pliki do moich 3 międzynarodowych oddziałów w celu tłumaczenia, a moje zmiany i zaktualizowane pliki językowe są gotowe do wdrożenia w poniedziałek rano

+0

Dzięki za odpowiedź, Mark. Bardzo doceniony. Twoje podejście do używania gettext jest interesujące! Myślę o tym, że robię prawie tak samo, ale wersję bazy danych, która będzie mocno buforowana, a zamiast tego aktualizowana na żądanie. – Industrial

+0

Byłoby miło zobaczyć więcej przykładów różnych podejść do tego problemu, nie mówiąc, że twoje rozwiązanie jest złe! – Industrial

+1

Możesz pobrać ZF i sprawdzić różne adaptery dla Zend_Translate: http://framework.zend.com/manual/en/zend.translate.adapter.html dla dodatkowych pomysłów. Obejmują one wszystkie popularne metody lokalizacji – Mark