2010-01-01 13 views
6

Nauczyłem się trochę gettext, ale nie mogę uchwycić tych dwóch funkcji. Zastanawiam się, czy mogę użyć wielu tłumaczeń w aplikacji napisanej w PHP. Dla przykładu mam 1) tłumaczenie systemowe 2) tłumaczenia rozszerzeń 3) tłumaczenia motywów w celu podzielenia ich na różne pliki. Moje pytanie brzmi: jeśli załaduję tłumaczenie systemowe, a następnie załaduję tłumaczenie motywu, czy pierwszy będzie "wyłączony"?Co to jest bindtextdomain, textdomain w gettext?

Doceniam wszelkie linki związane z gettext i php.

Dzięki

Odpowiedz

23

Możesz łatwo przełączać się między domenami tekstowymi, kiedy tylko chcesz. np:

Biorąc

./locale/en/LC_MESSAGES/template.po 

z treścią

msgid "foo" 
msgstr "foobar" 

i

./locale/en/LC_MESSAGES/messages.po 

z treścią

msgid "Basic test" 
msgstr "A basic test" 

Można użyć coś jak następującego kodu PHP, aby przełączyć się z jednego TEXTDOMAIN do drugiego, a następnie z powrotem:

<?php 
setlocale(LC_ALL, 'en_US.UTF-8'); 
bindtextdomain ("messages", "./locale"); 
bindtextdomain ("template", "./locale"); 

textdomain ("messages"); 
echo gettext("Basic test"), "\n"; 

textdomain ("template"); 
echo _("foo"), "\n"; 

textdomain ("messages"); 
echo gettext("Basic test"), "\n"; 
+0

Dzięki Myślę, że mam bardzo ładny widok gettext – allenskd