Чтобы перевести мое приложение 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"); ?>
Заранее спасибо.
Единственное допустимое обходное решение – создание символической ссылки LC_MESSAGES -> .
в каждом языковом подкаталоге. (Но это усложняет установку PHP-приложения. FTP редко может создавать символические ссылки.)
Боюсь, что LC_MESSAGES
– это требование.
Исправьте меня, если я ошибаюсь, но я думаю, что это имеет какое-то отношение к кешу gettext.
Если вы действительно хотите это сделать, вы можете использовать этот пакет композитора: gettext / gettext
Таким образом, у вас может быть организация папок по вашему желанию или даже что-то вроде этого:
locales/ cs_CZ.mo cs_CZ.po de_DE.mo de_DE.po fr_FR.mo fr_FR.po