Как загрузить язык с помощью gettext в PHP?

Я создал файл языка в poedit для использования функции gettext PHP, теперь на странице, на которой я пытаюсь ее протестировать, я не могу заставить его найти / загрузить файл .po или .mo, который я создал, кто-нибудь видит что я делаю неправильно?

$locale = "en_US"; putenv("LC_ALL=$locale"); setlocale(LC_ALL, $locale); bindtextdomain("default", "/includes/locale"); textdomain("default"); //my .po ad .mo file is located here /includes/locale/en/default.mo 

Несмотря на то, что я пытаюсь загрузить файл английского языка по умолчанию, я изменил текст в файле, чтобы убедиться, что он читает из языкового файла, и в настоящее время он показывает только текст по умолчанию и не делает перевод, я думаю, что у меня есть неправильный путь, возможно

Related of "Как загрузить язык с помощью gettext в PHP?"

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

Я буду использовать FR для французского для этой демонстрации

 $locale = "fr_fr"; putenv("LC_ALL=$locale"); setlocale(LC_ALL, $locale); bindtextdomain("default", "/includes/locale"); textdomain("default"); 

В bindtextdomain функции bindtextdomain первый параметр – это имя языкового файла .po за вычетом расширения. Второй параметр – это путь к папке, вот где становится немного сложным / недокументированным … В папке, которую вы установили здесь, вам нужно создать папку для каждого языка с двухзначным кодом страны, а затем внутри этого кода страны мне пришлось добавить эту папку с именем LC_MESSAGES , внутри LC_MESSAGES – файл вашего default.po .

Это был единственный способ заставить его работать, что-то путать, так как путь к папке lang не упоминает ничего о смелой части здесь:

langfolder / fr_FR / LC_MESSAGES /default.po

Это по-прежнему действительно странно, но default.po работает для меня, но если я изменил его на что-то еще в приведенном выше коде, а затем изменил имя файла .po и .mo, чтобы он соответствовал, он больше не будет работать, работает только с default имя для меня, я начинаю думать, может быть, gettext делает какое-то за кулисами кэширование

Я подозреваю, что это твой путь.

Является ли «/ includes / locale» правильным каталогом на вашем хосте? Или это относительно чего-то? Примечание: вам нужно полное имя пути, а не относительно вашего домашнего каталога или каталога установки. так что может быть что-то вроде:

  • C: / XAMPP / HTDOCS / включать / локаль
  • / Var / WWW / включить / локаль
  • / Главная / имя пользователя / включить / локаль
  • и т.д

Каков полный каталог, где он найден?