PHP gettext функция только возвращает исходную непереведенную строку

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

Я создал следующие файлы и каталоги в корне моего dir проекта:

test.php

locale/
  de_DE
    LC_MESSAGES
       messages.mo
       messages.po

  en_GB
    LC_MESSAGES
       messages.mo
       messages.po

Я использовал Poedit для создания вышеупомянутого .po и mo файлов. Я сделал, предъявляют иск ему, используют окончания строки Unix, UTF-8 и устанавливают язык и страну соответственно.

Я затем создал Сценарий PHP, названный test.php, который имеет следующий код:


Я импортировал текст, "Это - тест". к Poedit и предоставленный перевод и сохраненный это.

Но по некоторым причинам test.php сценарий только произведет непереведенный оригинальный текст. Это отказывается загружать версию для файлов перевода.

Стоит отметить, что сервер запускает Linux (Ubuntu), Apache 2.2.11 и PHP 5.2.6-3ubuntu4.5. Я проверил phpinfo() и gettext включен.

7
задан Cœur 12 April 2018 в 01:24
поделиться

3 ответа

Ваша проблема может быть связана с отсутствием локали в вашей системе. Пожалуйста, установите немецкий язык, и все должно работать:

sudo apt-get install language-pack-de-base

Затем введите следующую команду, и вы должны увидеть немецкий язык:

locale -a

После этого следующий код должен работать, если у вас все еще есть файлы .po и .mo в описанной вами структуре каталогов:

  <?php

  setlocale(LC_ALL, 'de_DE.UTF-8');
  bindtextdomain('messages', './locale');
  textdomain('messages');

  echo gettext('This is a test.');

  ?>
14
ответ дан 6 December 2019 в 14:03
поделиться

попробуйте следующее

<?php

  define(LC_MESSAGES, 'de_DE');

  // Set up environmental variables
  putenv("LANGUAGE=de_DE");
  bindtextdomain("*", dirname(__FILE__).'/locale');
  bind_textdomain_codeset("messages", 'UTF-8');      

  die(gettext('This is a test.'));

?>
0
ответ дан 6 December 2019 в 14:03
поделиться

Да, да, в PHP снова появилась поддержка gettext. Просто подсказка, которая может оказаться полезной для вас, а может и нет:

Из-за ужасной реализации gettext в PHP многие проекты с открытым исходным кодом, такие как WordPress, перешли на эту: http://savannah.nongnu.org/projects/php-gettext/ и полностью обходят оригинальную версию.

Я тоже так сделал в одном из своих проектов, и не могу сказать, что мне чего-то не хватает.

Недостаток для коммерческих проектов: Это под GPL.

1
ответ дан 6 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: