Starając się użyć narzędzia GNU xgettext wyodrębnić ciągów z kodu źródłowego wpadłem w kłopoty z pgettext (idei) powyżej.
Na początku wygląda na to, że zadziała. Korzystanie z --keyword argumentu mogę uruchomić xgettext narzędzia, aby wyodrębnić te kontekst i wiadomość ciągi ze skryptu testowego:
echo pgettext('Letter','mail');
echo pgettext('Letter','character');
i pobrać plik .pot z oczekiwanego wyjścia:
...
msgctxt "mail"
msgid "Letter"
msgstr ""
msgctxt "character"
msgid "Letter"
msgstr ""
...
Ale funkcje PHP * gettext() nie pozwalają mi przekazywać ciągów kontekstów - więc nie mogę uzyskać przetłumaczonego tekstu.
Będąc w stanie korzystać z narzędzi GNU sprawia, że rzeczy łatwiejsze dla mnie, więc rozwiązaniem dla mnie było użyć czegoś takiego:
function _c($txt) { return gettext($txt); }
echo "<P>", _c("mail:Letter"), "\n";
echo "<P>", _c("character:Letter"), "\n";
Teraz uruchom narzędzie xgettext
xgettext ... --keyword="_c:1" ...
przeciwko mój skrypt testowy. To generuje plik .pot z prostymi msgid tych, które są dostępne za pośrednictwem funkcji PHP gettext():
...
msgid "mail:Letter"
...
msgid "character:Letter"
...
Następny skopiować szablon .pot do różnych folderów LC_MESSAGE jako.Plik PO i edytować przetłumaczone teksty:
...
msgid "mail:Letter"
msgstr "Russian outputs for Mail: \"письмо\""
msgid "character:Letter"
msgstr "Russian outputs for Letter of the Alphabet: \"буква\""
...
A mój skrypt testowy działa:
...
Russian outputs for Mail: "письмо"
Russian outputs for Letter of the Alphabet: "буква"
...
Dokumentacja xgettext jest tutaj: http://www.gnu.org/software/gettext/manual/html_node/xgettext-Invocation.html
(nadal mam problem z poeditem i tekstem "w liczbie mnogiej", ale jest to inny temat.)
Odpowiedź wydaje się być konteksty * * http: //www.gnu .org/software/gettext/manual/html_node/Contexts.html Nie wiem, w jaki sposób są one używane w kontekście PHP. –
Powiązane ?: http://www.php.net/manual/en/book.gettext.php# 89975 –