Я пытаюсь использовать gettext для добавления поддержки локализации на свой сайт. Я следовал различным руководствам по настройке gettext и сделал следующее:
Я создал следующие файлы и каталоги в корне каталога моего проекта:
test.php
locale/
de_DE
LC_MESSAGES
messages.mo
messages.po
en_GB
LC_MESSAGES
messages.mo
messages.po
Я использовал Poedit для создания вышеуказанных файлов .po и mo. Я заставил иск использовать окончания строк Unix, UTF-8 и соответственно установить язык и страну.
Затем я создал PHP-скрипт с именем test.php, который имеет следующий код:
<?php
define('LOCALE', 'de_DE');
// Set up environmental variables
putenv("LC_ALL=" . LOCALE);
setlocale(LC_ALL, LOCALE);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", LOCALE .".utf8");
textdomain("messages");
die(gettext('This is a test.'));
?>
Я импортировал текст «Это тест». в Poedit, предоставил перевод и сохранил его.
Но по какой-то причине скрипт test.php будет выводить только исходный текст без перевода. Он отказывается загрузить версию для файлов перевода.
Стоит отметить, что сервер работает под управлением Linux (Ubuntu), Apache 2.2.11 и PHP 5.2.6-3ubuntu4.5. Я проверил phpinfo()
, и gettext включен.