Статический контент работает нормально, но когда я использую:
$r = mysqli_query($dbc,"select name from table");
while($row = mysqli_fetch_array($r)){
echo gettext($row['name']);
}
Poedit не распознает динамический контент, который я полностью понимаю.
Но есть ли обходной путь для этого?
Рабочий процесс gettext основан на том факте, что вы размечаете свой исходный код определенными вызовами функций, например gettext('string to localise')
, Этот исходный код может быть проанализирован автоматически, и все локализуемые строки могут быть извлечены в файл POT. Очевидно, как вы говорите, это не сработает, если строки, которые вы хотите локализовать, на самом деле отсутствуют в вашем исходном коде. В этом случае вам нужно соединить этот шаг извлечения вручную.
Все, что вам действительно нужно сделать, это создать файл в формате POT, содержащий все ваши строки. Это должно быть относительно легко с коротким PHP-скриптом, который читает содержимое вашей базы данных и выводит соответствующие записи в POT-файл. Поскольку POT является широко поддерживаемым форматом, существует ряд библиотек PHP, которые могут легко создать этот вывод для вас; в основном вам просто нужно написать запрос к базе данных и обойти его. Ищите свой любимый репозиторий с открытым исходным кодом, и вы найдете то, что соответствует вашим потребностям.
Оттуда вы можете либо сцеплять этот файл POT в другой файл POT, или вы можете сохранить его как отдельный файл перевода. Вам, безусловно, следует позаботиться о том, чтобы использовать правильный рабочий процесс gettext, чтобы убедиться, что вы никогда не перезаписываете ничего своими изменениями:
msgmerge
Других решений пока нет …