I18n w CakePHP
Opublikowane 27/05/2008 przez kuba
Statyczna treść
Użycie wbudowanej obsługi funkcji gettext jest bardzo proste. Cake używa do wyświetlenia (echo) wartości domyślnie funkcji
__('some text')
jeśli wynikiem działania funkcji ma być zmienna do użycia w innej funkcji, należy zastosować
__('some text',true)
Pliki z wersjami językowymi znajdują się w odpowiednim katalogu (pol dla polskiego)
\app\locale\pol\LC_MESSAGES
pod nazwą default.mo. Jest to skompilowany plik .po o strukturze:
msgid "some text"
msgstr "jakiś tekst"
msgid "some title"
msgstr "jakiś tytuł"
Wbudowany mechanizm Cake’a (l10n) dostosowuje wybór języka do języka przeglądarki klienta. Aby zmienić używany język, należy zapisać go przy pomocy sesji. Moja metoda, to stworzenie osobnego kontrolera odpowiedzialnego za zmianę języków.
class LangController extends AppController {
var $uses = array();
var $name = 'Lang';
function polski() {
$language = 'pol';
$this->Session->write('Config.language', $language);
$this->redirect($this->referer(), null, true);
}
function english() {
$language = 'en';
$this->Session->write('Config.language', $language);
$this->redirect($this->referer(), null, true);
}
}




