Попытка использовать gettext для интернационализации php-сайта. - PullRequest
2 голосов
/ 24 мая 2011

Хорошо, у меня есть следующий код PHP:

<?php
$locale = "es";
//$locale = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
//if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
putenv("LANGUAGE=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");

echo(getenv("LC_ALL"));
echo("<br>");
echo gettext("Hello World!");
?>

Я создал испанские файлы messages.po и messages.mo и сохранил их в подкаталоге в каталоге, где находится приведенный выше код. Путь к указанному каталогу:

локаль / эс / LC_MESSAGES

согласно phpinfo, gettext включен на веб-сервере, на котором я работаю (хостинг A Small Orange).

Вызов страницы показывает, что вызов getenv возвращает 'es', но выводится оригинальная английская строка, а не ожидаемый испанский. Я также пробовал с _ ("Hello World!"), Но также безрезультатно.

Я не получаю ни предупреждений, ни ошибок, ни ничего. Итак, я в полной растерянности относительно того, как даже устранить неполадки, в которых это может быть неудачным.

Любое руководство будет с благодарностью.

1 Ответ

0 голосов
/ 24 мая 2011

Я могу ошибаться, но попробуйте изменить ...

putenv("LC_ALL=$locale");
putenv("LANGUAGE=$locale");

на

putenv("LC_ALL=".$locale);
putenv("LANGUAGE=".$locale);
...