✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Учебное пособие по темам WordPress для начинающих — Часть 8: Перевод

16

В этом уроке мы узнаем о том, как работает перевод (или иначе известный как i18n) в WordPress и как внести необходимые коррективы в наши шаблоны. Мы также узнаем, как правильно настроить PoEdit, чтобы создать файл перевода для нашей темы, готовый к переводу на разные языки.

Зачем вообще добавлять поддержку перевода?

Все темы, по крайней мере те, которые публикуются для использования другими людьми, кроме разработчика, должны быть доступны для перевода. Это называется интернационализацией (сокращенно i18n) и позволяет людям переводить тексты, которые вы добавляете в свою тему, на другой язык.

Это работает следующим образом: вы, как автор темы или разработчик плагина, оборачиваете все свои тексты (например, «Читать дальше», «Нет сообщений») в определенные функции. Эти функции делают так, чтобы WordPress мог подобрать их и внедрить. перевод, если он существует.Внутри вашей темы (или плагина) вы можете добавить файлы определенного типа для каждого переведенного языка или убедиться, что другие люди могут создавать свой собственный перевод на своем родном языке.

Это очень полезно для людей, которые хотят использовать WordPress и вашу тему (или плагин) на языке, отличном от исходного языка, на котором она была написана (обычно это английский). Но его также можно использовать для изменения определенных текстов на что-то другое на том же языке.

Если вам интересна эта тема, у WordPress Codex есть длинное и хорошее руководство по документации по i18n для разработчиков.

Внедрение i18n в нашу тему

Мы уже сделали первую часть в предыдущем шаге этой серии руководств по теме, где мы добавили load_theme_textdomainфункцию настройки нашей темы. Если вы забыли, вот что мы добавили:

load_theme_textdomain('wptutorial', get_stylesheet_directory(). '/lang');

Первый аргумент — это дескриптор, это уникальная строка, которую вы будете использовать для группировки всех текстов, принадлежащих вашей теме. Вы будете повторять этот дескриптор каждый раз, когда будете переводить текст. Второй аргумент сообщает WordPress, где находятся файлы перевода. Мы определили их для размещения в подпапке ‘ lang‘ в каталоге нашей темы.

Не волнуйтесь, если эта папка не существует или не содержит никаких файлов — ничего не сломается. Если WordPress не найдет ни папку, ни правильные файлы перевода, он по умолчанию вернется к текстам, которые есть в теме.

Следующим шагом будет просмотр всего нашего кода и поиск любого текстового вывода, который должен быть переводим. Хорошей практикой является убедиться, что мы охватываем абсолютно все тексты. Нет ничего более раздражающего, чем использование темы или плагина, где автор жестко закодировал тексты, что делает невозможным перевод или изменение каким-либо образом.

Как сделать тексты переводимыми

Что мы делаем со всеми текстами, так это помещаем их в одну из функций gettext WordPress, чаще всего это _e()или __(). Первый — это символ подчеркивания с буквой «е», который используется, когда вы хотите одновременно повторить текст. Второй – два символа подчеркивания, и он используется, когда вы не хотите отображать его, а сохраняете или используете в переменной.

WordPress имеет больше функций gettext, которые служат более конкретным целям, например esc_html__(), _n(), _x()и т. д. Однако в этом уроке мы не будем вдаваться в подробности.

Функции gettext принимают два параметра; во-первых, сам текст, а во-вторых, дескриптор, который вы определили в load_theme_textdomain. В данном случае это ‘ wptutorial‘.

Например, если у вас есть что-то вроде этого:

echo 'Read more';

Вам нужно будет заменить его на:

_e('Read more', 'wptutorial');

И аналогично для сохранения в переменную;

$myvariable = 'Read more';

Нужно написать так:

$myvariable = __('Read more', 'wptutorial');

Теперь нам нужно найти все тексты в наших шаблонах! Если вы следовали этому руководству на букву «Т», их немного. У нас есть некоторые строки в index.phpи некоторые в single.php.

Добавление поддержки перевода в нашу тему

Давайте начнем с index.phpтого, что найдем сообщение «Нет сообщений, извините», которое мы добавили, если в цикле не было сообщений. Мы оборачиваем этот текст внутрь _e(), потому что мы все еще хотим отобразить его. Итак, что мы получаем:

Поскольку вы использовали _e(), вы не должны видеть никаких изменений, когда нажимаете «Обновить» на главной странице или в архиве. Но под капотом этот текст теперь переводим!

У нас есть этот же текст в нашем single.phpи page.php. Обновите их так же, как мы это делали в index.php. Мы добавили еще несколько текстов в single.php, так что вот как это выглядит после перевода всех текстов:

С этого момента все тексты, которые мы добавляем в нашу тему, мы обязательно оборачиваем их внутри __()или _e().

Файлы перевода

Есть два способа предоставить файлы перевода для вашей темы;

  • Предоставьте .potфайл
  • или предоставьте пару файлов .poи ..mo

Этот .potфайл рекомендуется для темы, которую вы продаете или отдаете другим пользователям, потому что с помощью этого файла очень легко создать файл перевода для нового языка. Однако создать один из этих файлов непросто (или бесплатно). Если вы знакомы с WP-CLI (командная строка WordPress) или Grunt, вы можете следовать рекомендациям документации WordPress здесь. Если нет, другой вариант может быть для вас.

Файлы .poи .moработают вместе. WordPress требует .moдля перевода текстов, но этот файл не читается человеком. Таким образом, у нас есть .poфайл, который мы можем прочитать. С правильным программным обеспечением он генерирует .moфайл всякий раз, когда вы вносите изменения.

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

Нужна программа для редактирования .potи .poфайлов. Наиболее распространенным является PoEdit. PoEdit бесплатен и работает как для iOS, так и для Windows. Но некоторые расширенные функции (такие как создание .potфайла), к сожалению, требуют платной версии. Мы будем использовать бесплатную версию, чтобы создать .poфайл для нашей темы.

Загрузите и установите PoEdit, чтобы следовать остальной части руководства.

Создание файла .po для нашей темы с помощью PoEdit

Создание файла перевода на английский язык обычно не имеет никакого смысла, если все тексты в нашей теме все равно на английском языке, но для целей этого урока я сделаю файл перевода на английский язык.

1 Откройте PoEdit и нажмите «Файл» > «Создать…».

2 Вам будет предложено выбрать язык. Выберите желаемый язык, например английский.

3 Нажмите «Сохранить» (Ctrl+S). Найдите папку с темой и войдите в /lang/подпапку. (Если вы не создали его на предыдущем шаге, создайте сейчас). Имя вашего файла имеет решающее значение. Для тем он должен называться просто кодом вашего языка. Для американского английского это будет en_US, для норвежского — nb_NO. Погуглите или обратитесь к этому обзору, чтобы найти код своего языка. Мы назовем его en_US.po.

4 В меню выберите Каталог > Свойства…

5 На первой вкладке вы можете ввести некоторую информацию, такую ​​как название вашего проекта (темы), или изменить язык – но это не обязательно. Я рекомендую вам сохранить кодировку в UTF-8, так как это то, что мы пишем для WordPress.

Учебное пособие по темам WordPress для начинающих — Часть 8: Перевод

6 Перейдите на вкладку Пути к источникам. Здесь вам нужно будет определить, в каких папках файл должен искать переводимые тексты. Пути являются относительными, и, поскольку мы уже сохранили его в подпапке нашей темы, мы знаем, что он должен перейти на один каталог выше. Нажмите кнопку + под полем «Пути» и выберите «Добавить папки». Выберите папку с темой. Это должно добавить элемент пути «.» (поднимитесь на одну папку вверх). Дважды проверьте, что «Базовый путь» относится к корневому каталогу вашей темы.

Учебное пособие по темам WordPress для начинающих — Часть 8: Перевод

7 Перейдите на следующую вкладку «Источники ключевых слов». Здесь вам нужно сообщить PoEdit, какие функции вы использовали для переводимых текстов (например __, _e, esc_html_eи т. д.). Нажмите кнопку +, чтобы добавить каждую функцию, и напишите их без «()». Вам решать, хотите ли вы охватить все свои базы и добавить все функции gettext WordPress, но в этом руководстве мы знаем, что использовали только две. Итак, мы добавляем два элемента; __()и _e(). Добавьте функции без скобок.

Учебное пособие по темам WordPress для начинающих — Часть 8: Перевод

8 Нажмите ОК.

9 Все, что остается, это сказать PoEdit, чтобы он сканировал предоставленные пути для функций, используя __()и _e()(или то, что вы указали). Вы делаете это, нажимая кнопку «Обновить из кода». (В версии для Windows есть текст на кнопке, а в версии для iOS нет, поэтому для iOS вам нужно нажать кнопку, которая обычно находится последней на панели инструментов; значок файла со значком «повторить» вверху. Нажмите кнопку «Обновить из кода», и вы должны увидеть все перечисленные тексты с интерфейсом для перевода:

Учебное пособие по темам WordPress для начинающих — Часть 8: Перевод

Хороший!

Сгенерированные файлы перевода

Теперь вы можете использовать PoEdit для перевода каждой строки, но мы не будем этого делать, так как нет смысла переводить с английского на английский. Не забудьте нажать «Сохранить», чтобы обновить и создать .moфайл, и каждый раз, когда вы добавляете новый текст в свою тему, вам нужно снова нажимать кнопку «Обновить из кода». Затем появятся новые изменения в ваших шаблонах.

Если вы проверите /langподпапку в папке вашей темы, вы должны увидеть два файла; .poфайл, который мы только что создали, и файл .moс тем же именем, созданный нами путем сохранения в PoEdit.

Вы можете сделать копию en_US.poфайла и переименовать его в код другого языка. Но помните, что PoEdit не предлагает простого способа очистить все переведенные строки; вам придется очищать один за другим. По этой причине это отстой для пользователей, которые хотят перевести вашу тему на другой язык. Так что если у вас есть возможность сделать .potфайл, вы должны это сделать.

WordPress будет искать файл перевода в зависимости от языка, указанного в меню администратора «Настройки» > «Язык сайта». Если вы добавили язык, отличный от английского, вы можете проверить его, переключив язык сайта и посмотреть, появится ли ваш перевод!

Источник записи: awhitepixel.com

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