У меня возникли проблемы с получением перевода для работы на моем локальном сервере WAMP (v2.5). Вот пример проблемы.PHP gettext не работает на локальном сервере WAMP
putenv("LANG=frc"); //output: 1
setlocale(LC_ALL, "frc"); //output: French_Canada.1252
$domain = 'messages';
bindtextdomain($domain, "locale"); //output: D:\wamp\www\[project folder]\locale
bind_textdomain_codeset($domain, 'UTF-8'); //output: UTF-8
textdomain($domain); //output: messages
echo gettext("Hello"); //output: Hello
А вот структура папок:
locale
--> French_Canada.1252
--> LC_MESSAGES
--> messages.po
--> messages.mo
И, наконец, файл PO:
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2016-02-10 14:01-0500\n"
"PO-Revision-Date: 2016-02-10 14:01-0500\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr_CA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.2\n"
"X-Poedit-Basepath: ../../..\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-SearchPath-0: .\n"
#: test.php:11
msgid "Hello"
msgstr "Bonjour"
Вот что я пробовал:
1) Удаление 64 бит WAMP и устанавливая 32-разрядную WAMP на своем месте.
2) Использование различных языковых кодов, таких как fr_CA, fr_FR, fr. fr является единственным, который распознается, но у меня все еще была такая же проблема (даже после переименования папки в fr)
3) Изменение кода на 1252 и Windows-1252 (как в файле php, так и в файле PO)
4) Перезапуск всех услуг после каждого изменения
FYI, Gettext перестал нормально работать на Windows, после того, как PHP/5,3 (см [Gettext всегда будет использовать систему локаль по умолчанию] (http://stackoverflow.com/questions/19569362/gettext-will-always-use- система по умолчанию-локали)). Независимо от того, я рекомендую переименовать вашу папку с 'French_Canada.1252' на что-то вроде' fr'. –
У меня не было выбора, кроме как использовать [php-gettext] (https://launchpad.net/php-gettext/) – Falantar