Как перевести имя шаблона WordPress?

Я знаю, как создавать переводы для тем и шаблонов, обычно создавая файлы .po и .mo с помощью Poedit. Но поскольку имена шаблонов написаны в комментариях PHP вверху каждого файла шаблона, нет способа перевести это, как я вижу.

Заголовок шаблона WordPress:

/**
 * Template Name: Three columns
 *
 * @package WordPress
 */

Имя шаблона каким-то образом анализируется Wordpress и используется для заполнения раскрывающегося списка шаблонов при создании страницы.

Итак, мой вопрос: есть ли способ перевести имя шаблона WordPress? WordPress также ищет какую-либо конкретную переменную, которую я могу установить в файле шаблона? или это просто невозможно?

Ответ 1

Я наткнулся на это совсем недавно. Вот как я обошел это:

Сначала добавьте (если у вас уже нет) Text Domain: mytext_domain к style.css, где mytext_domain - это фактический текстовый домен для вашей темы.

Затем добавьте фиктивный вызов к функции перевода где-нибудь в вашей теме (лучше всего добавить ее только в соответствии с названием имени шаблона, поэтому вы не удивляетесь, почему вы ее поместили):

/**
 * Template Name: Three columns
 *
 * @package WordPress
 */
__( 'Three columns', 'mytext_domain' );

Причина этого заключается в том, что WordPress передает ваше имя шаблона в функцию translate(), но поскольку плагины-переводчики анализируют ваш код, они не знают, что ваше имя шаблона должно быть частью .po(или оно было. mo?) файл. Этот фиктивный вызов __() исправляет эту проблему.

И причина, по которой вы добавляете объявление Text Domain в свой стиль .css, заключается в том, что именно там WordPress ищет тему textdomain при анализе имен шаблонов.

Я не могу дать вам точные источники, так как я действительно просто ткнул по основному коду, пока не понял, как это работает и как можно переводить имена моих шаблонов.

PP: Я не уверен, как работает Poedit - если вы добавите свои переводы вручную, вам может не понадобиться фиктивный вызов - просто проверьте с ним и без него и используйте то, что вам подходит лучше всего:)

Ответ 2

Лучший способ:

  • Добавьте заголовок Text Domain: theme-slug в ваш файл style.css, если вы еще этого не сделали.

  • Получите оплату официального пакета разработчика WordPress, проверив соединительную линию develop.svn: http://develop.svn.wordpress.org/trunk/

  • Там вы найдете каталог под названием /tools/i 18n. В этом каталоге находится файл makepot.php. Вы можете использовать его для тем следующим образом:

> php makepot.php wp-theme /path/to/your/theme/directory theme-slug.pot

Это создаст файл POT для вас, используя последний код WordPress. Он получает строки из заголовков, из всех функций WordPress i18n, все. Это также означает, что вам не нужно создавать какие-либо "поддельные" строки, как предлагает другой ответ.

Удостоверьтесь, что вы делаете svn update каждый раз в то же время, так как инструменты i18n и основной соединительный код могут обновляться каждый раз заново.

Обратите внимание, что при использовании инструментов i18n они должны находиться в проверке багажника. Вы не можете перемещать их в файловой системе, потому что они зависят от функций WordPress, чтобы выполнять некоторые синтаксические разборки файлов, поэтому у них есть относительные пути включения резервной копии дерева в каталог ядра /src WordPress. Для правильной работы инструментов основной директории должен быть неповрежден. Тем не менее, каталог соединительных линий может быть неконфигурирован, вам не нужно иметь рабочую установку WordPress, для правильного анализа файлов просто требуется часть кода WordPress.