Система gettext воспроизводит строки из набора двоичных файлов, созданных из исходных текстовых файлов, содержащих переводы одного и того же предложения на разные языки.
Ключ поиска — это предложение на «базовом» языке.
в вашем исходном коде у вас будет что-то вроде
echo _("Hello, world!");
для каждого языка у вас будет соответствующий текстовый файл с ключом и переведенной версией (обратите внимание на %s, который можно использовать с функциями printf)
french
msgid "Hello, world!"
msgstr "Salut, monde!"
msgid "My name is %s"
msgstr "Mon nom est %s"
italian
msgid "Hello, world!"
msgstr "Ciao, mondo!"
msgid "My name is %s"
msgstr "Il mio nome è %s"
Это основные шаги, которые необходимо выполнить для создания локализации.
- весь ваш текстовый вывод должен использовать функции gettext (gettext(), ngettext(), _())
- используйте xgettext (*nix) для анализа ваших файлов php и создания базового текстового файла .po
- используйте poedit, чтобы добавить тексты перевода в файлы .po
- используйте msgfmt (*nix) для создания двоичного файла .mo из файла .po
- поместите файлы .mo в структуру каталогов, например
locale/de_DE/LC_MESSAGES/myPHPApp.mo
locale/en_EN/LC_MESSAGES/myPHPApp.mo
локаль/it_IT/LC_MESSAGES/myPHPApp.mo
тогда ваш php-скрипт должен установить локаль, которую необходимо использовать
Пример из руководства по php очень ясен для этой части
<?php
// Set language to German
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");
// Choose domain
textdomain("myPHPApp");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now
// Print a test message
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");
?>
Всегда из руководства по php смотрите здесь хороший учебник
person
yann.kmm
schedule
28.07.2009