Я уже несколько дней безуспешно отыкаюсь в этом. Я просто хочу, чтобы gettext работал.
В результате получается, что строка, записанная в php-файле, печатается, а не переведенная. То есть если я делаю "echo gettext (" Service ");" затем печатается «Сервис», а не шведский «Tjänster».
В httpd / error_log нет абсолютно никаких сообщений об ошибках. Не при запуске приложения или (пере) запуске apache.
Использование Centos 6.2 и php 5.3.
Это моя структура каталогов:
/path/to/locale/sv_SE.utf8/LC_MESSAGES/messages.mo
/path/to/setlocale.php
Мой файл messages.po:
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-01-18 20:09+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: setlocale.php:29
msgid "Service"
msgstr "Tjänst"
#: setlocale.php:30
msgid "Name"
msgstr "Tjänst"
setlocale.php:
<?php
if (!function_exists("gettext"))
{
echo "gettext is not installed";
}
else
{
echo "gettext is supported";
}
echo "Exist?: ".setlocale(LC_MESSAGES, 'sv_SE.utf8')."; //Prints 'sv_SE.utf8, hence it exist in the system.
bindtextdomain('messages', '/var/www/html/smic/modules/core/localization/locale');
textdomain('messages');
bind_textdomain_codeset('messages', 'UTF-8');
echo gettext("Service");
echo _("Name");
?>
Поскольку напечатано "gettext is support", gettext по крайней мере работает в некоторой степени.
'sv_SE.utf8' также печатается, следовательно, он существует в системе
Я делал все возможное, чтобы установить правильные пакеты (ну, по крайней мере, насколько я понимаю, но, конечно, здесь могут быть некоторые проблемы). PHP 5.3 поставляется с int как часть ядра. Мне не удалось скомпилировать с помощью ./configure --enable-intl. Я получаю сообщение об ошибке при попытке использовать это, и я думаю, это потому, что это часть php 5.3. Я прав?
Я не могу найти ни один intl.so (updatedb сделал и искал его), чтобы добавить его в файл php.ini, расширение не добавлено = intl.so. Я также сделал это без успеха, но если я не могу найти intl.so, я думаю, что нет смысла добавлять extension = intl.so?
В некоторых потоках упоминаются некоторые пакеты для установки, и я тоже попробовал:
yum install libicu-devel
yum install libicu
Было бы замечательно, если кто-то может помочь, я не вижу, как двигаться вперед, и большинство постов / потоков обсуждают, как установить, используя PHP 5.2, в котором intl не является частью. Но я даже не знаю, связана ли проблема с настройкой системы или чем-то еще.