Локализация вашей темы WordPress
Важной частью разработки WordPress тем, то что его можно сделать многоязычным. И для это используются файлы локализации. Но для работы с ними надо объявить так называемые «text domain». Тут я расскажу как сделать свои файлы локализации. Первое, что нужно сделать, это загрузить «text domain», добавив следующую строку в файл functions.php нашей темы:
load_theme_textdomain('mydomain', get_template_directory() . '/languages');
Первый аргумент «mydomain» должен быть уникальный идентификатор (хорошая практика, чтобы использовать небольшое короткое имя), он определяет домен темы. В дальнейшем этот параметр будет нужен для вставки перевода.
Второй аргумент определяет папку языковых файлов. Чтобы загрузить эти файлы, функция должна быть привязана к after_setup_theme действия:
add_action('after_setup_theme', 'my_theme_setup'); function my_theme_setup(){ load_theme_textdomain('mydomain', get_template_directory() . '/languages'); }
Таким образом мы указываем что языковые файлы для вашего «mydomain» будут находиться в папке «languages» вашей темы сайта. Эти файлы имеют расширение .po и .mo.
Файл .po это файл с вашими переводами. Вот пример содержания этого файла:
# Translation of Development in Russian # This file is distributed under the same license as the Development package. msgid "" msgstr "" "PO-Revision-Date: 2015-09-24 10:15+0200\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 1.8.1\n" "Project-Id-Version: Development\n" "POT-Creation-Date: \n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" # @ mytheme #: wp-activate.php:114 wp-signup.php:177 msgid "Blog" msgstr "Блог" # @ mytheme #: footer.php msgid "All rights reserved" msgstr "Все права защищены"
В начале идёт небольшая общая информация, а дальше уже переводы. Перевод состоит из 2х параметров «msgid» — что переводим, «msgstr» — на что переводим (сам перевод). Так же что бы знать в где стоит переводимое слово в шаблоне, можно указывать комментарием после символа # название файла и строку.
После того как файл с расширением ru_RU.po составлен, его надо скомпилировать в файл в расширением ru_RU.mo. Это можно сделать с помощью программы Poedit, в меню Файл -> Компилировать в формат МО. На этом работа с фалами перевода окончена.
Теперь для добавления перевода в сам шаблон нам достаточно вставить такой php код:
<?php _e("Categories", "mydomain");?>
Первым параметром передаём слово которое будет выводиться по умолчанию и будет переводиться на другой версии сайта. И вторым параметром передаётся наш «text domain».