23
Lipiec
czwartek, 23 Lipiec 2009

Translacje w CakePHP

Mechanizm translacji w Cake’u polega na na zastępowaniu tekstów, które maja się pojawić na stronie, ich odpowiednikami z pakietu językowego. W tym celu, w miejscu gdzie ma być wyświetlony tekst, używamy funkcji __ (dwa podkreślenia), a jako argument podajemy tekst będący tagiem (najlepiej w języku angielskim). Funkcja __ wykonuje automatycznie echo, jeśli chcemy jednak, żeby zwróciła tekst, trzeba podać drugi argument ustawiony na true. Jest to przydatne jeśli w tekście umieszczamy jakiś parametr, który zostanie później zastąpiony, np:

$url=Router::url( array('controller'=>'admins', 'action'=>'newpass', $data['Admin']['id'], $data['Admin']['code']), true);
$link = $html->link($url, $url);
$password = $data['Admin']['new_password'];
echo str_replace( array('%link%', '%password%'), array($link, $password ), __('Your new password is %password%, to enable it, clik on link %link% to enable it.', true));

W app znajduje się katalog locale na słowniki. Tworząc np. polską wersję należy utworzyć w nim podkatalog pol, a w nim LC_MESSAGES, w którym muszą znaleźć się 3 pliki:

  • POT – lista tagów, do której dopisujemy wszystkie słowa z naszej strony
  • PO – lista przetłumaczonych tagów
  • MO – nico inna postać pliku po

Nie trzeba wszystkich tagów wprowadzać ręcznie do pliku POT. Wystarczy odpalić konsolę Cake’a z poleceniem i18n. Skrypt pozbiera prawie wszystkie słowa z strony i utworzy nam plik POT. Nowe, można do niego bez problemu dopisywać.

Następnie będzie nam potrzebny program poEdit do pobrania z strony: http://www.poedit.net/

Trzeba w nim  utworzyć nowy projekt i dodać do niego plik POT. W edytorze pojawi się lista naszych tagów z możliwością dodania tłumaczeń dla każdego z nich. Jeśli dodamy jakieś nowe tagi do pliku POT, wystarczy wtedy użyć opcji Aktualizuj z pliku POT z menu katalog. Program poEdit przy zapisie sam tworzy plik MO.

Ostatnią rzeczą jaką nam zostało zrobić to rozpoznawanie wersji językowej. Najprościej umieszczać kolejne wersje strony w katalogach o nazwie skrótowej danego języka np.: pl, en, de. Wtedy można także dla każdej wersji korzystać z osobnych katalogów z obrazkami i nieco innymi stylami, bardzo przydatne jeśli mamy wersję hebrajską lub chińską i trzeba zmienić kierunek tekstu. Dzięki temu możemy rozpoznać jaką wersję językową użyć i jak ustawić Config.language:

Configure::write('Config.language', strtolower(WEBROOT_DIR));

Proste prawda?

czwartek, 23 Lipiec 2009 
Kategoria: CakePHP
Możesz śledzić ten wpis przez RSS 2.0 lub dodać komentarz.
Zostaw komentarz

Home Home O mnie O mnie Efekty
JavaScript, jQuery, AJAX
Efekty
Inspiracje
Ciekawe strony WWW
Inspiracje
Programowanie
CakePHP, PHP, MySQL
Programowanie
SEO
Wyszukiwarki
SEO
Web Building
HTML i CSS
Web Building
Projekty Linki Kontakt Kontakt