У меня есть .po и файл .mo в папку, адрес которой /локаль/nld_nld/LC_MESSAGES/. Оба имени файлов - это сообщения. Я пытался использовать следующий код:Как использовать файлы po/pot с php?
try.php:
<?php
require_once("Localization.php");
echo _("Hello World!");
?>
Localization.php идет здесь:
<?php
$locale = "nld_nld";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
?>
Как try.php и файлы локализации в том же каталоге. Кроме того, я использую xampp
. Я также внедрил phpinfo();
. В таблице, перед «GetText Support», была включена поддержка. messages.po и messages.mo файлы действительны, файлы, которые я создал с помощью poEdit. Я пользователь Windows. Однако, когда я открыл try.php, он просто повторил Hello World! (А не его переведенная строка. Кроме того, я перевел .po файл 100% (по poEdit
). Тем не менее, я не получаю результаты. Небольшая помощь по этому вопросу будет оценена.
Спасибо ! заранее
textdomain() обычно является последним вызовом функции (на самом деле это может потребоваться до вызова gettext aka _(), если вы работаете с несколькими доменами.Сначала вы связываете все домены, затем вы выбираете один из них. – eckes
В вашем примере вы используете два разных имени домена «es» и «messages-es». Это может не сработать (и, как правило, у вас нет идентификатора языка в имени файла, как это определено в каталоге). Таким образом, «/full/path/here/application/locale/es_ES/LC_MESSAGES/messages.mo» будет именем файла «сообщения» и LC_TYPE es_ES. – eckes