Obecnie tworzę aplikację internetową PHP, która musi być dostępna w języku francuskim i angielskim. Rozejrzałem się i odkryłem, że funkcja Gettext() oferuje najlepszą wydajność.Internacjonalizacja aplikacji webowych Php za pomocą Gettext();
I generowane mój plik .pot z poleceniem
xgettext PhpFileToTranslate.php -o NameOfTemplateFile.pot
i successfuly wygenerowany plik .pot. użyłem poedit wygenerować plik messages.po i stworzył messages.mo
Oto moje pliki serwerowe:
/app
/locale
/en_US
/LC_MESSAGES
messages.po
messages.mo
/fr_FR
/LC_MESSAGES
messages.po
messages.mo
template.pot
I ustawić ustawienia regionalne w pliku php tak:
$language = $_SESSION['language']; //session contains 'fr_FR.UTF-8' or 'en_US.UTF-8'
setlocale(LC_ALL, $language);
bindtextdomain('messages', './locale');
textdomain('messages');
ale widzę tylko etykietę, a nie tłumaczenie ... Próbowałem wstawiania "fr_FR" zamiast "fr_FR.UTF-8" i wszystkie rodzaje ciągów, ale to nie działa.
Czy brakuje mi czegoś? Mój serwer to serwer Ubuntu 12.04 z Apache i php5
Rzeczywiście nie miałem instalacji fr_FR.utf8 na moim komputerze i na moim serwerze ... Teraz działa! Wielkie dzięki za pomoc. –