Intereting Posts

Gettext не работает, никаких сообщений об ошибках, используя php 5.3

Я уже несколько дней подпрыгиваю в этой голове без каких-либо успехов. Я просто хочу получить gettext для работы.

Случается, что строка, записанная в php-файле, печатается, а не переведенная. Т.е. если я делаю «echo gettext (« Сервис »); затем печатается «Сервис», а не шведский «Тяннстер».

В 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 поддерживается» печатается, gettext, по крайней мере, работает в некоторой степени.

'sv_SE.utf8' также напечатан, следовательно, он существует в системе

Я делаю все возможное, чтобы установить правильные пакеты (ну, по крайней мере, по моему пониманию, но, конечно, здесь могут быть некоторые проблемы). PHP 5.3 поставляется с intl как частью ядра. Мне не удалось скомпилировать с помощью ./configure –enable-intl. Я получаю ошибку при попытке использовать это, и я предполагаю, что это потому, что это часть php 5.3. Я прав?

Я не могу найти intl.so (updatedb done и search for it), чтобы добавить файл php.ini, а расширение extension = intl.so не добавлено. Я тоже делал это без успеха, но если я не могу найти intl.so, я думаю, что нет смысла добавлять расширение = intl.so?

Некоторые потоки упоминают некоторые пакеты для установки, и я также пробовал это:

 yum install libicu-devel yum install libicu 

Было бы здорово, если кто-нибудь может помочь, я не вижу, как двигаться вперед, а большинство сообщений / потоков обсуждают, как установить при использовании PHP 5.2, в котором intl не является частью. Но я даже не знаю, связана ли проблема с настройкой системы или чем-то еще.

Не уверен, что это может вам помочь, но этот фрагмент работал для меня.

 $lang_path = FCPATH.APPPATH.'language/locale'; putenv('LANG='.$code.'.UTF-8'); setlocale(LC_ALL, $code.'.UTF-8'); bindtextdomain('lang', $lang_path); textdomain('lang');