Как на практике переводить WordPress
WordPress – это действительно всемирная CMS, которая пользуется огромной популярностью среди вебмастеров практически каждой страны. Это система, которая с каждым годом улучшается и модернизируется. А в последнее время локализации движка уделяется все большее внимание, ввиду его популярности, и не только среди англоязычных пользователей. Ведь, согласно статистическим данным, уже в 2014 году количество установленных не англоязычных дистрибутивов WordPress превысило количество англоязычных (впервые за все время!).
В этом уроке мы, на практике, рассмотрим как перевести ВордПресс (и саму CMS, и тему для нее), чтобы лучше понимать, как эта вся магия работает. Хотя готовых локализаций (языковых пакетов) для WordPress хоть отбавляй, не лишним будет знать, как самому изменить/улучшить перевод для своего собственного сайта!
Итак, приступим!
1 метод (простой): скачать готовый перевод для нужного вам языка (здесь есть перечень всех доступных переводов и степень их полноты). Скачиваете, копируете файлы локализаций в папку /wp-content/languages/
, прописываете в корневом файле wp-config.php
строчку
define ('WPLANG', 'код языка');
и наслаждаетесь готовым переводом.
2 метод (сложнее): быть готовым и уметь самому переводить CMS ВордПресс и темы для нее.
Но сначала немного теории.
В gettext для обозначения переводимых строк используются их английские оригиналы и значение перевода на нужный язык.
Библиотека gettext хранит переводы в файлах с расширениями .mo (Machine Object – бинарный файл для чтения программой), .po (Portable Object – файл перевода в человеко-читаемом виде) и .pot (PO template — заготовка файла .po для перевода на новый язык).
Как это работает?
В статье «Как перевести Мадженто на русский» мы затронули этот вопрос. По схожему принципу работает и ВордПресс: система сканирует сайт и, основываясь на наборы файлов .po
и .mo
, заменяет определенные слова и фразы в контенте переведенным текстом, который выводит на экран.
Просканируем и мы сайт, откроем например, файл header.php
в шаблоне twentyfourteen (который содержится в последних версиях ВордПресс) через текстовый редактор и, посреди разного кода, найдем вот такую строчку:
<?php _e('Search', 'twentyfourteen'); ?>
Разберемся, что же в ней интересного.
Строка содержит функцию php, которая выводит возвращенный перевод текста.
Функция _e записывается в виде
<?php _e($text, $domain)?>
где $text
— переменная, содержащая оригинальный текст для перевода, а $domain
— переменная для домена, из которого будет получен перевод текста. Если перевода нет, или домен не загружен, то возвращается оригинальный текст. Переменные заключаются в кавычки.
В нашем случае оригинальный текст для перевода — Search, а домен для перевода — twentyfourteen (т.е. системное название шаблона).
Исходя из этих данных, система будет искать значение для перевода в шаблоне (теме) TwentyFourteen, обращая внимание на папку languages. А в этой папке движок будет искать файлы .pot
, .po
и .mo
. Если WordPress найдет такие файлы (а некоторые темы и не содержат их), в них она будет искать строку со значением Search, чтобы перевести на нужный нам язык (указанный в корневом файле wp-config.php
строчкой
define ('WPLANG', 'ru_RU')
– для русского).
Если система не увидит перевод этого значения, то она его так и выведет пользователю на экран (т.е. Search). А если увидит – выведет перевод текста (любой, какой мы напишем: хоть «Поиск», хоть «Поищи-ка», какой захотите)!
Теперь мы подошли к тому моменту, когда становится интересно, а как же самому добавить значение перевода.
Внимание! Не переводите напрямую исходный код движка или темы!
Файлы переводов хранятся в папках languages:
/wp-content/languages/
— для перевода всего движка/wp-content/languages/plugins/
— для перевода некоторых плагинов/wp-content/themes/ВАША_ТЕМА/languages/
— для перевода определенной темы
Как правило переводы движка практически полные, поэтому мы сосредоточимся на переводе тем (шаблонов). Хотя принцип один и тот же.
Для работы с файлами переводов удобнее использовать програмку Poedit (скачать можно тут). Она бесплатна и проста.
После того, как вы установили Poedit, можете открывать у себя на компьютере языковые файлы .pot
: Файл > Создать из POT файла. Затем выбираете файл .pot
в папке languages темы, которую хотите перевести.
Работать с программой несложно — исходный текст слева, а ваш перевод – справа. Чтобы отредактировать перевод, нажмите на соответствующую строку и внизу введите свое значение. После этого нужно сохранить .po-файл с кодом языка (например ru_RU.po
— для русского). Обычно Poedit автоматически создает и нужный файл .mo
.
После сохранения остается только загрузить созданные файлы через FTP в нужную папку на сайте.
Что еще нужно знать?
Функции для перевода
Чтобы система знала, что значение нужно переводить, оно должно быть заключено в соответствующие функции. Их громадное количество, но рассмотрим только основные.
__('Какой-то текст') _e('Какой-то текст') _n('Какой-то текст') _x('Какой-то текст')
Первые две функции __()
и _e()
являются наиболее основными формами перевода. Функция двойного подчеркивания вернет наш текст, а _e()
будет выводить текст, используя echo
. Обе функции будут искать в локальном каталоге перевода (в файлах .mo
и .po
) значения для перевода. Если найдут — выведут переведенный текст, в противном случае выведут только оригинальное значение.
Метод _n()
используется в случаях множественности. Он будет полезен, например, для вывода количества сообщений, комментариев и в других случаях, когда значение изменяется динамически (например, «1 комментарий», «2 комментария» и т.д.).
Более сложная функция _x()
и _ex()
используется для различения слов с аналогичными значениями, но в зависимости от контекста. В этом случае используется следующий код
<?php _ex($text, $context, $domain)?>
, где $context
– дополнительная информационная переменная для переводчика.
Что делать, если в вашей теме нет файла .pot?
Его можно создать самому. Для этой цели подойдет и рассмотренная програмка Poedit.
- Откройте программу и перейдите Файл > Создать
- Укажите язык перевода
- Заполните вкладки в меню Каталог > Свойства: Свойства перевода (название проекта, кодировка и др.), Папки с исходными файлами (путь к папке с вашей темой на ВордПресс), Ключевые слова исходных файлов (перечень ключевых слов – рассмотренные ранее функции для перевода).
- Сохраните файл в формате
.pot
- Нажмите кнопку «Обновить» вверху, либо Каталог > Обновить из исходного кода. Программа просканирует всю вашу тему и выведет строки, которые доступные для перевода.
- Переведите текст, а затем сохраните.
2-й способ: установить плагин Codestyling Localization и переводить тему через консоль сайта. Либо создать плагином .pot-файл, скачать его, а затем уже переводить через программу Poedit (кому как удобнее).
Как подключить файл перевода к теме?
Если в вашей теме нет файлов перевода, тогда их нужно сначала создать (предыдущий вопрос), а затем подключить.
Файлы перевода подключаются через файл functions.php
в вашей теме. Для этого откройте его и добавьте следующий код:
add_action('after_setup_theme', 'dev_load_theme_textdomain'); function dev_load_theme_textdomain() { load_theme_textdomain('НАЗВАНИЕ_ВАШЕЙ_ТЕМЫ', get_template_directory() . '/languages'); }
В данном примере мы подключаем файлы переводов по адресу:
/wp-content/themes/НАЗВАНИЕ_ВАШЕЙ_ТЕМЫ/languages/
Когда это может понадобиться? Например, если вы хотите переводить через консоль с помощью плагина Codestyling Localization, а он не определяет вашу тему. После подключения он «увидит» вашу тему и вы сможете заняться полноценным переводом.
Есть еще способы перевода?
Можно переводить с помощью текстового редактора Notepad++. Если вы откроете редактором файл .po
, то увидите нечто подобное:
#: wp-includes/link-template.php:2297 #@ default msgid "«Older Comments" msgstr "←Предыдущие комментарии"
- 1-я строка указывает на файл, в котором найдена функция и в какой строке.
- 2-я строка указывает область действия перевода (т.е. весь сайт)
- 3-я строка: оригинальное значение, заключенное в кавычки
- 4-я строка: перевод оригинального значения, заключенный в кавычки.
Исходя из этого, вы можете и таким образом переводить тему (сайт) – вручную добавляя/изменяя строки.
Что делать, если в теме код не поддерживает перевод?
Оптимизировать его для перевода. Например, строку
<div class="readmore"><span>read more</span></div>
можно оформить так:
<div class="readmore"><span><?php _e('read more', 'домен-локализации'); ?></span></div>
тем самым добавив возможность ее перевода (актуально, если ваш сайт многоязычный).
Надеюсь, что вам данный урок принес пользу!
Если у вас есть дополнительные комментарии или вопросы, не стесняйтесь делиться ими в комментариях к данной статье.
И в дополнение к посту посмотрите видео-урок:
(Photo credit: EMMEALCUBO/Foter/CC BY-SA)
Последние посты
Как купить автомобиль на аукционе?
Если вас интересует вопрос, можно ли купить автомобиль на аукционе, вот вам краткий ответ: да.… Читать далее
Основные критерии при выборе и покупке телевизора
В данном обзоре мы собрали основные советы и критерии по приобретению телевизора, в одном месте,… Читать далее
На что обратить внимание при выборе фонарика на батарейках
Фонарик на батарейках способен помочь в разных ситуациях, начиная от походов и заканчивая авариями. При… Читать далее
Всесторонний обзор Apple Watch Series 9: в чем его отличия от других поколений
Последняя презентация американской компании продемонстрировала несколько разнообразных новинок. В частности, в середине сентября 2023 года… Читать далее
Как утеплить ребенка на зиму с помощью меховых наушников
Голова и уши – это те части тела, которые больше всего нуждаются в тепле зимой.… Читать далее
Как проходит осмотр у проктолога при различных заболеваниях и как к нему подготовиться?
Проктология специализируется на лечении различных заболеваний ануса и прямой кишки. Такие деликатные проблемы вызывают боли… Читать далее