PHP: gettext требует директорий LC_MESSAGES? - PullRequest
5 голосов
/ 16 ноября 2010

Для перевода моего PHP-приложения я использую скомпилированный модуль gettext. Вот дерево каталогов переводов, выполненных в соответствии с документами:

locale/
  cs_CZ/
    LC_MESSAGES/
       messages.po
       messages.mo
  de_DE/
    LC_MESSAGES/
       messages.po
       messages.mo
  fr_FR/
    LC_MESSAGES/
       messages.po
       messages.mo

Вопрос : можно ли избавиться от каталога LC_MESSAGES? Сможет ли PHP найти переводы, если я использую эту структуру?

locale/
  cs_CZ/
     messages.po
     messages.mo
  de_DE/
     messages.po
     messages.mo
  fr_FR/
     messages.po
     messages.mo

Мой PHP, который переключает переводы:

<?php
    setlocale(LC_ALL, 'fr_FR.UTF-8');
    bindtextdomain("messages", "locale");
    bind_textdomain_codeset("messages", 'UTF-8');
    textdomain("messages");
?>

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 16 ноября 2010

Единственный возможный обходной путь - создание символической ссылки LC_MESSAGES -> . в каждом языковом подкаталоге. (Но это усложняет установку приложения PHP. FTP редко может создавать символические ссылки.)

3 голосов
/ 17 ноября 2010

Боюсь, LC_MESSAGES это требование.

Поправьте меня, если я неправ, но я думаю, что это как-то связано с кешем gettext.

0 голосов
/ 01 октября 2017

Если вы действительно хотите это сделать, вы можете использовать этот пакет для композитора: gettext / gettext

Таким образом, вы можете иметь организацию папок по вашему желанию или даже что-то в этом роде:

locales/
   cs_CZ.mo
   cs_CZ.po
   de_DE.mo
   de_DE.po
   fr_FR.mo
   fr_FR.po
...