2012-08-15 18 views
6

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

Odpowiedz

7

Aby skompilować pliki .mo na Linuksie, musisz zainstalować lokalizacje na serwerze i na komputerze, który je kompiluje. Ustawienia regionalne są językami obsługiwanymi przez twój system operacyjny.

Jak stwierdzono w tym tutorialu: http://dev.jimdo.com/archive-old-blog/tutorial-for-the-easy-use-of-gettext-for-internationalization-of-php-apps/ upewnij się, że masz zainstalowane lokalizacje na linux

Pamiętaj, że lokalizacje chcesz korzystać, są zainstalowane w systemie Linux i skorzystanie z .UTF 8 (chcesz i18n więc proszę używać UTF):

# Example for debian 
dpkg-reconfigure locales 

- Aby zainstalować nowe lokalizacje na linux

Lista języków rzeczywiście zainstalowane w systemie:

locale -a 

Przykład zainstalować fr_FR:

#List the available i18n locales 
less /usr/share/i18n/SUPPORTED 

Instalacja locale (tutaj fr_FR.utf8)

locale-gen fr_FR.utf8 

przekonfigurować locales w Twoim systemie

sudo dpkg-reconfigure locales 

przekompilować plik .mo z PoEdit i to powinno zrobić sztuczka. Upewnij się, że instalujesz ustawienia lokalne zarówno na serwerze, jak i pliki kompilujące pliki .mo maszyny.

nadzieję, że pomoże

+1

Rzeczywiście nie miałem instalacji fr_FR.utf8 na moim komputerze i na moim serwerze ... Teraz działa! Wielkie dzięki za pomoc. –

0

Oprócz tego, co Bruno powiedział, nie zapomnij, aby przeładować konfigurację Apache (na przykład usługa apache2 reload). Zmarnowałem trochę czasu, żeby się dowiedzieć, dlaczego to nie działa, tylko po to, aby przekonać się, że konfiguracja Apache musi zostać ponownie załadowana po zainstalowaniu nowego języka/ustawień narodowych.

Powiązane problemy