Вопрос или проблема
Используя команду wp i18n make-pot, я могу создать файл .pot
, который может интерпретировать файлы .php
.
Это команда, которую я использую:
wp i18n make-pot . languages/my-plugin.pot
Это хорошо, но поскольку я использую Timber в своем WordPress в качестве движка шаблонов, Timber использует файлы .twig
.
Как я могу использовать команду wp-cli для создания файла .pot
, чтобы она смотрела в файлы .twig
?
Я попробовал эту команду:
wp i18n make-pot . languages/my-plugin.pot --include=*.twig
Это создает тот же файл .pot
, который только интерпретировал файлы .php
, а не файлы .twig
.
Смотря на проблемы на GitHub, это открытая проблема об облегчении наследования для поддержки Twig/Timber.
Читая эту ветку, я не смог найти решение.
Как вы упомянули, это открытая проблема, поэтому маловероятно, что какое-либо из решений в ветке было реализовано… Тем не менее, это кажется наиболее вероятным работающим решением:
wp timber make-pot && wp i18n make-pot --merge=twig.pot
Я раньше не использовал Timber, но проверьте, какой файл создается с помощью wp timber make-pot
, и убедитесь, что именно он объединяется с командой i18n
.
Другие примеры кода относятся к улучшениям в самом пакете i18n-command
.
Правка
Смотрев на билет снова, это на самом деле всего лишь еще один “предложенный” случай использования. Но все еще есть надежда…
Согласно этой странице о Timber на GitHub, у вас есть несколько доступных опций.
- Используйте инструмент, который поддерживает парсинг файлов Twig для обнаружения всех ваших переводов, например, Poedit. Это создаст ваши файлы
.pot
, и команду слияния можно провести, чтобы интегрировать это в функциюi18n
. - Один из не самих эстетичных методов – это добавить
{#<?php#}
в верхнюю часть ваших файлов Twig. Сделав это, gettext интерпретирует все, что идет дальше, как PHP, и начнет искать__
. - Twig gettext extractor – специальный парсер Twig для Poedit.
- Упоминается о gulp-скрипте для этого… однако ссылки, которые я следовал, больше не работают – это оригинальный тикет для решения с помощью gulp и может быть использован как основа, если вы хотите попробовать это сделать.
У меня была такая же проблема, и я нашел этот пакет: timber/wp-i18n-twig
https://packagist.org/packages/timber/wp-i18n-twig
После установки этого пакета команда wp i18n make-pot . languages/my-plugin.pot
заработала и для файлов .twig.
Ответ или решение
Для создания файла .pot
, который будет интерпретировать файлы .twig
с помощью WP-CLI, вы можете использовать пакет timber/wp-i18n-twig
. Этот пакет позволяет расширить функциональность команды wp i18n make-pot
так, чтобы она могла обрабатывать .twig
файлы, используемые в шаблонах Timber.
Вот шаги, которые вам необходимо выполнить:
1. Установка пакета
Сначала установите пакет timber/wp-i18n-twig
, используя Composer. Для этого выполните следующую команду в корневом каталоге вашего плагина или темы WordPress:
composer require timber/wp-i18n-twig
2. Создание .pot
файла
После установки пакета вы сможете использовать команду wp i18n make-pot
для создания файла .pot
, который будет включать строки перевода из файлов .twig
. Используйте следующую команду:
wp i18n make-pot . languages/my-plugin.pot
Этот вызов теперь будет анализировать как файлы .php
, так и файлы .twig
на наличие строк для перевода.
3. Проверка результата
После выполнения вышеуказанной команды, проверьте файл languages/my-plugin.pot
, чтобы убедиться, что строки из ваших .twig
файлов были успешно извлечены. Откройте файл и убедитесь, что все ожидаемые строки присутствуют.
Дополнительные варианты и примечания
Если вы по каким-то причинам не хотите использовать пакет timber/wp-i18n-twig
, вы можете рассмотреть альтернативные подходы:
-
Использование Poedit: Используйте Poedit — инструмент, который поддерживает парсинг файлов
.twig
. Он может автоматически создавать.pot
файлы, которые вы сможете объединить с файлами, генерируемыми командойwp i18n make-pot
. -
Использование PHP в
.twig
файлах: Как временное решение можно добавить к вашим файлам.twig
строку{# <?php #}
в начале. Это заставит Gettext интерпретировать следующую часть как PHP код и искать строки перевода. -
Twig gettext extractor: Рассмотрите использование Twig gettext extractor, который является специальным парсером для работы с файлами Twig и может быть интегрирован с Poedit.
-
Скрипты Gulp: Можно также изучить возможность использования Gulp скриптов для автоматизации создания
.pot
файлов, но этот подход потребует больше времени на настройку.
Следуя вышеприведенным шагам, вы сможете успешно создать .pot
файл, который будет включать строки перевода как из файлов .php
, так и из файлов .twig
.