Мультиязычность на PHP

173
05 декабря 2019, 02:40

Скажите, как ЛУЧШЕ, каким способом реализовать мультиязычный сайт на PHP?

Полазив по просторам интернета я могу подчеркнуть 3 способа:

  1. Использование БД MYSQL.
  2. Использовать JSON файлы.
  3. Утилита gettext.

В моем проекте Сайт-визитка я думаю лучше использовать комбинированный подход, используя БД и JSON, потому что если добавлять новую информацию(например через админ панель), то можно без особых трудов обновить информацию, как в БД так и в JSON. Однако я считаю, что данный подход не совсем корректный.

Если посмотреть в сторону утилиты gettext, то можно сказать, что это идеальный подход для реализации мультиязычности. Все красиво и понятно разбито на папки с определенным языком, в каждой этой папке есть .po и .mo файлы в которых есть msgid и msgstr, однако есть проблемы с освоением этой технологии. На сегодняшний(на 3 день изучения gettext) у меня наконец то удалось создать успешно тестовый проект с Хелло Ворлд и то он работает в корне не так как пишется в блогах, инструкциях и т.д. Плюс я понятия не имею как можно с админ панели обновлять файлы .po и .mo, поскольку для создания .mo файла нужно откомпилировать .po файл....

Answer 1

Файлы .po и .mo используются, например, в вордпрессе по факту, то есть перевод темы, по сути. И да, для создания .mo используются специальные утилиты, а также библиотеки для языков. Например, если погуглить, то можно найти нечто подобное - https://github.com/bigwhoop/potomoco (не юзал, не знаю).

Однако учтите, что конвертировать каждый чих пользователя может обойтись вам дорого. В Yii, например, раньше использовали перевод на файлах текстовых (сейчас не знаю), но опять таки, только той инфы, которая не меняется ДИНАМИЧЕСКИ, через админку.

Итог: Используйте БД, gettext создавался для перевода программ, где всего-то нужно перевести пару строк текста, а не целые тома "Войны и Мира".

READ ALSO
Ошибка при подключение php (PDO) к MySQL [caching_sha2_password]

Ошибка при подключение php (PDO) к MySQL [caching_sha2_password]

Подключил Apache, MySQL в XAMPP - всё отлично

164
Как обрабатывать ошибки MVC PHP?

Как обрабатывать ошибки MVC PHP?

Всем приветПишу свою библиотеку для разработки приложений

161