Коварная война россии против Украины. Ориентировочные потери врага
(по состоянию на 15.03.2024)
428420
солдат
347
самолетов
325
вертолетов
6758
танков
12949
ББМ
10580
артиллерия
717
ПВО
1017
РСЗО
13993
машин
26
корабли и катера
Как на практике переводить WordPress
Опубликовано Обновлено: 18.06.2017

Как на практике переводить WordPress

WordPress – это действительно всемирная CMS, которая пользуется огромной популярностью среди вебмастеров практически каждой страны. Это система, которая с каждым годом улучшается и модернизируется. А в последнее время локализации движка уделяется все большее внимание, ввиду его популярности, и не только среди англоязычных пользователей. Ведь, согласно статистическим данным, уже в 2014 году количество установленных не англоязычных дистрибутивов WordPress превысило количество англоязычных (впервые за все время!).
В этом уроке мы, на практике, рассмотрим как перевести ВордПресс (и саму CMS, и тему для нее), чтобы лучше понимать, как эта вся магия работает. Хотя готовых локализаций (языковых пакетов) для WordPress хоть отбавляй, не лишним будет знать, как самому изменить/улучшить перевод для своего собственного сайта!

Итак, приступим!
1 метод (простой): скачать готовый перевод для нужного вам языка (здесь есть перечень всех доступных переводов и степень их полноты). Скачиваете, копируете файлы локализаций в папку /wp-content/languages/, прописываете в корневом файле wp-config.php строчку

define ('WPLANG', 'код языка');

и наслаждаетесь готовым переводом.

 

2 метод (сложнее): быть готовым и уметь самому переводить CMS ВордПресс и темы для нее.
Но сначала немного теории.

 

WordPress использует для перевода библиотеку интернационализации gettext GNU.
В 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 темы, которую хотите перевести.

poedit

Работать с программой несложно — исходный текст слева, а ваш перевод – справа. Чтобы отредактировать перевод, нажмите на соответствующую строку и внизу введите свое значение. После этого нужно сохранить .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 "&laquo;Older Comments"
msgstr "&larr;Предыдущие комментарии"

 

  • 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)

 

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

 

  1. Чин

    Доброго времени суток!
    Недавно с джумлы перешел на ВП, назрел вопрос перевода сайта на казахский…
    На Вашем сайте, есть «перемычка» для перехода на украинский, как Вы это сделали?
    Заранее спасибо.

    1. ZAnatoly

      Чтобы сделать ВордПресс мультиязычным вам понадобится плагин, суть которого заключается в том, что каждый пост (страница) имеет копию на другом (других) языке (языках). Один из самых популярных плагинов — это WPML, он мощный и функциональный, но платный. Бесплатный аналог, с нужным функционалом — это Polylang (https://wordpress.org/plugins/polylang/). Ставите на движок подходящий плагин, подготавливаете переводы темы и движка на нужный язык (как это делается описано в данном уроке), подготавливаете переводы контента на сайте — и у вас будет мультиязычный сайт!

  2. AHMAD

    Как эделали сайт на 2 языка RU и UA на wordpres, woocommerce можна так сделат погите пожалуста.
    Я хачу зделат на два языка RU UZ

    1. ZAnatoly

      Попробуйте бесплатный плагин Polylang, или же платный WPML. +рекомендации из этого урока. Успехов!

  3. Алексей

    а как перевести слова добавить комментарий. на украинский например при переключении языков

  4. Александр

    Здравствуйте!
    Вы по-моему так и не показали как переводы полей, которые в админке заполняются делаются.
    Например название сайта
    Очень актуально — подскажите пожалуйста

    1. ZAnatoly

      Здравствуйте, Александр!
      В основном, текст из шаблонов переводится файлами .pot, .mo и .po.
      Переводы полей, например, должны переводиться с помощью записей в базе данных, на основании кода языка. Для этого лучше всего использовать соответствующие плагины, типа Polylang.
      Плагины делают записи строк для каждого доступного языка на сайте, и их можно редактировать через Консоль. Также, каждая страница или пост должны будут иметь свою копию для каждого доступного языка.
      Надеюсь, что это вам поможет.

  5. Дмитрий

    Был рад найти вашу публикацию… прочитал все до конца несколько раз. сделал попытку имплантировать ваш код в файл functions.php… все пропало- стер код — все вернулось как было. и нет у меня никакой идеи что я делаю не так. Может у вас найдется человек кто сможет в 2018 году мне подсказать? Не бесплатно, конечноже. Я пересмотрел кучу материала, но все они датированы годами назат. ГОДАМИ! а ВП получает апгрейды каждую неделю- все уже давным давно устарело- не работает. И насколько я вижу- работала исправно только моя оригинальная версия сделанная с нуля в 2008 году. Зарание спасибо за ответ.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *