У меня проблема с получением gettext для работы на Windows Server 2008 R2, PHP 5.5
Я делаю следующее в моем PHP-скрипте:
$language = 'NB';
putenv("LANG=".$language);
putenv("LC_ALL=".$language);
setlocale(LC_ALL, $language);
$domain = 'messages';
bindtextdomain($domain, 'C:/path_to_translations/translations');
textdomain($domain);
Мои файлы переводов находятся в следующих каталогах:
C: /path_to_translations/translations/NB/LC_MESSAGES/messages.po
C: /path_to_translations/translations/NB/LC_MESSAGES/messages.mo
Это отлично работает на моем компьютере с Windows 7 с PHP 5.3
Я предполагаю, что NB не является действительным именем локали в Windows, но setlocale (LC_ALL, ‘NB’) по-прежнему возвращает ‘NB’, а не FALSE.
Тем не менее, чтобы увидеть, может ли это быть как-то связано с проблемой, я попытался установить $ language = ‘norwegian’, в этом случае setlocale (LC_ALL, ‘norwegian’) возвращает ‘Norwegian_Norway.1252’, и попытался
измените пути к C: /path_to_translations/translations/norwegian/LC_MESSAGES/messages.mo и C: /path_to_translations/translations/Norwegian_Norway.1252/LC_MESSAGES/messages.mo, а также измените кодировку файлов .po и .mo из «UTF-8» — «Windows 1252».
Тем не менее, я не могу заставить перевод работать на Windows Server 2008 R2, PHP 5.5.
Любая помощь очень ценится!
Обновить. Никогда не получал gettext для работы с php 5.5, но обнаружил, что у других пользователей были похожие проблемы (https://bugs.php.net/bug.php?id=66265)
Попробовал вместо этого установить php 5.4, и теперь все работает как положено.
Других решений пока нет …