Можно ли использовать gettext с данными из mysqli_query?

Статический контент работает нормально, но когда я использую:

$r = mysqli_query($dbc,"select name from table");
while($row = mysqli_fetch_array($r)){
echo gettext($row['name']);

}

Poedit не распознает динамический контент, который я полностью понимаю.

Но есть ли обходной путь для этого?

2

Решение

Рабочий процесс gettext основан на том факте, что вы размечаете свой исходный код определенными вызовами функций, например gettext('string to localise'), Этот исходный код может быть проанализирован автоматически, и все локализуемые строки могут быть извлечены в файл POT. Очевидно, как вы говорите, это не сработает, если строки, которые вы хотите локализовать, на самом деле отсутствуют в вашем исходном коде. В этом случае вам нужно соединить этот шаг извлечения вручную.

Все, что вам действительно нужно сделать, это создать файл в формате POT, содержащий все ваши строки. Это должно быть относительно легко с коротким PHP-скриптом, который читает содержимое вашей базы данных и выводит соответствующие записи в POT-файл. Поскольку POT является широко поддерживаемым форматом, существует ряд библиотек PHP, которые могут легко создать этот вывод для вас; в основном вам просто нужно написать запрос к базе данных и обойти его. Ищите свой любимый репозиторий с открытым исходным кодом, и вы найдете то, что соответствует вашим потребностям.

Оттуда вы можете либо сцеплять этот файл POT в другой файл POT, или вы можете сохранить его как отдельный файл перевода. Вам, безусловно, следует позаботиться о том, чтобы использовать правильный рабочий процесс gettext, чтобы убедиться, что вы никогда не перезаписываете ничего своими изменениями:

  1. извлечь последние исходные строки из базы данных в файл POT
  2. инициализирует целевой файл PO-файла (только в первый раз)
  3. при изменении источника повторите 1., затем синхронизируйте изменения в файле PO, используя msgmerge
  4. локализовать PO-файл (используя Poedit или что-то еще)
  5. компилировать PO файл в MO файл
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]