1 października 2009

Wielojęzyczność w KohanaPHP 3.0

Filed under: Kohana,Technologie — Riu @ 0:38

Wielojęzyczność w KohanaPHP w wersji 3.0 jest dla mnie nieco irytującym problemem. Niby jest wszystko ok, jak już się dojdzie co i jak trzeba ustawić, ale irytujące jest to, że wydaję mi się to mocno niedopracowane rozwiązanie. Zresztą już wiadomo, że zostanie ono zmienione i w wersji 3.1 będzie inaczej niż jest teraz.

A więc jak to działa i co mnie drażni?

W KohanaPHP 2.3.x w kwestii obsługi wielu wersji językowych wszystko oparte było przede wszystkim o plik konfiguracyjny locale.php. Ustawialiśmy tam wszystko. Za pomocą routingu, pliku .htaccess, helperów, hooków i bibliotek można było zrobić wielojęzyczność. Można było za pomocą sesji jeśli komuś nie zależało na SEO. Ważne jednak było, że przy dużej ilości fraz do przetłumaczenia można było sobie sensownie podzielić pliki. To bardzo ważne jeśli mamy np sporą ilość rzeczy, czy stron do przetłumaczenia, a my chcemy np dołożyć dwa nowe pluginy, z nowymi frazami. Dokładałem więc moduł czy plugin, pliczek z tłumaczeniem i gotowe. W pliku była tablica która za pomocą „merge” nadpisywała ewentualnie co trzeba i wszystko było wygodne i proste.

W KohanaPHP 3.0 nie ma locale.php. W pliku bootstrap.php ustawiamy język który chcielibyśmy żeby był domyślny. Robimy to za pomocą: I18n::$lang = 'pl-PL';
Po takim zabiegu tworzymy plik: application/i18n/pl.php. W nim mamy standardową tablicę a w niej nasze frazy. No właśnie – jest tylko jeden plik w którym musimy wszystko trzymać. Poza tym wszystko trzymamy w tablicy na zasadzie przypisywania tłumaczenia do ciągu znaków, a nie do jakiejś zmiennej, określonej w tej tablicy. W praktyce wygląda to tak:

pl.php
return array('Not found=> Nie ma takiej strony');
en.php
return array('Not found=> Not found');
Aby teraz wywołać dany element wypisujemy w widoku:
echo __('Not found');

No i niby wszystko jest ok, bo działa, ale trzymanie wszystkiego w jednym pliku wcale nie jest mądrym pomysłem. Obsługa tego będzie zwyczajnie trudna gdy będziemy chcieli dokładać np plugin do naszego cms’a opartego na Kohanie. Poza tym developerzy zasugerowali iż powinno się używać pełnych ciągów znaków. Dziwny pomysł. Nie potrafię też wytłumaczyć sobie dlaczego dopiero w wyniku długiej dyskusji na forum dopiero można się dowiedzieć jak skonfigurować domyślny język. W dokumentacji nie ma.

W wersji 3.1 ma być obsługa podobna do tej z 2.x.

« Poprzednia notatka: » Następna notatka:

Możesz śledzić odpowiedzi w tym wątku za pomocą kanału RSS 2.0. Możesz skomentować, albo ustawić trackback z twojej własnej strony.

Brak komentarzy »

Dodaj komentarz