Я только начал использовать gettext()
и у меня возникла странная проблема.У меня есть следующий код:
// $language = ["en_US", "en_US.UTF-8", "en-US", "en-US.UTF-8"];
// $language = ["tr_TR", "tr-TR", "tr", "tr_TR.UTF-8", "tr-TR.UTF-8", "tr.UTF-8"];
$language = ["nl_NL", "nl_NL.UTF-8", "nl-NL", "nl-NL.UTF-8"];
putenv("LANG=" . $language[0]);
$locale = setlocale(LC_ALL, $language);
$domain = "messages";
bindtextdomain($domain, "locales");
bind_textdomain_codeset($domain, "UTF-8");
textdomain($domain);
if (!defined("LC_MESSAGES")) {
echo "<p>LC_MESSAGES is NOT defined.</p>";
}
if (!function_exists("gettext")) {
echo "<p>gettext() does not exist.</p>";
}
echo "<p>" . $locale . "</p>";
echo "<p>" . _("title") . "</p>";
echo "<p>" . _("content") . "</p>";
Это не работает на локальном хосте (XAMPP 7.3.5), или, скорее, он работает (переводит) только с en_US
.Вывод, который я получаю:
LC_MESSAGES is NOT defined.
nl_NL
_TITLE_
_CONTENT_
В то время как он должен переводить en
в nl
, я получаю en -> en
.Это работает нормально на удаленном сервере (DirectAdmin), и я не получаю ошибку LC_MESSAGES
:
nl_NL
titel
inhoud
Эта проблема может быть связана с XAMPP, и я думаю, что это жизненно важно.Я должен иметь возможность использовать / изменять языки на локальном хосте.Что можно сделать, чтобы решить эту проблему?Единственное различие, которое я заметил между серверами, состоит в том, что LC_MESSAGES
не определен на локальном хосте (XAMPP).А на странице setlocale () есть утверждение, гласящее:
LC_MESSAGES для системных ответов (доступно, если PHP был скомпилирован с libintl)
Couldэто будет причиной?Нужно ли перекомпилировать PHP?
Если нет способа это исправить, есть ли обходной путь, который я могу использовать?Я имею в виду, у меня уже есть необходимые файлы po / mo.Я знаю каталог, в котором они находятся. Я знаю запрашиваемую локаль.Все, что мне нужно, это парсер для получения перевода из файла.
Все файлы можно найти в этом хранилище .
Удаленный сервер вывод (страница / ссылка могут быть удалены в будущем).
Обновление
Я постоянно ищуспособ решить эту проблему, поэтому я проверяю другие вопросы и ответы.В одном из них предлагается установить язык, который я хочу использовать.Поэтому я скачал / установил языки (tr, nl).Это не помогло.Это все еще не переводит.