Использование Gettext для многоязычного сайта в php не работает - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь создать многоязычный сайт в PHP, используя gettext.

Я использую PHP7 .1 (без возможности обновления) и включил gettext.so в моем php .ini .

См .: http://corbeauperdu.ddns.net/phpinfo.php

Я прочитал документацию и следовал примерам, но по какой-то причине он вообще не будет переводиться на мой французский язык.

Мой PO-файл и test. php следующие файлы:

/prestadesk/include/locales/fr/LC_MESSAGES/prestadesk.po:
msgid ""
msgstr ""
"Language: fr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

msgid "This page will show the dashboard"
msgstr "Cette page affichera le tableau de bord"


/prestadesk/templates/test.php:
<?php
$lang='fr';
$domain = 'prestadesk';
$codeset = 'UTF-8';
$locales_dir = '../include/locales'; // need to go up on directory from here to get into the include/locales

// here we define the global system locale given the found language
putenv('LANG='.$lang);

// this might be useful for date functions (LC_TIME) or money formatting (LC_MONETARY), for instance
setlocale(LC_ALL, $lang);

// this will make Gettext look for $locales_dir/<lang>/LC_MESSAGES/prestadesk.mo
bindtextdomain($domain, $locales_dir);

// indicates in what encoding the file should be read
bind_textdomain_codeset($domain, $codeset);

// here we indicate the default domain the gettext() calls will respond to
textdomain($domain);

// test translate
echo gettext("This page will show the dashboard");
?>

1 Ответ

0 голосов
/ 01 апреля 2020

Что ж, я обнаружил проблему:

Сервер, на котором размещен веб-сайт на сервере NEEDS, чтобы установить языковой стандарт для нужного $ lang !!!

На сервере проверьте установленные локали с помощью:

locale -a

Если нужной локали нет в списке, необходимо отредактировать / etc / locale.gen и раскомментировать твое. Пример:

fr_FR.UTF-8 UTF-8 
fr_FR ISO-8859-1
fr_FR@euro ISO-8859-15

Затем сгенерируйте и установите эту локаль:

sudo locale-gen

Как только это будет сделано, вы сможете правильно использовать gettext ().

...