Проблемы локализации тем WordPress

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

Есть два основных способа перевода тем и плагинов WordPress: грязный и чистый, или правильный или не правильный.

Что такое грязный или не правильный перевод тем и плагинов WordPress

Когда перевод выполнен прямо в файлах PHP.

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

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

Плагины чаще всего обновляются, наверное, процентов на 90. Есть некоторые плагины, которые стоят у меня более 2-х лет и ни разу автор их не обновил. Но это бывает редко.

У меня — более чем 6-летний опыт перевода на русский и украинский язык тем и плагинов WordPress. И я сталкивался с разными вариантами перевода. Раньше, еще в самом начале, в основном я делал грязный, или не правильный перевод.

Почему?

Потому что автор темы (или плагина) не включил функцию локализации, точнее, код PHP написан автором без учета функции локализации.

Как выглядит код PHP, готовый к правильной, чистой локализации? По каким признакам можно сразу определить, что тема или плагин WordPress готовы или имеют правильную локализацию?

Наличие папки с файлами локализации

Все файлы локализации имеют расширения: .po и .mo

Все файлы локализации (довольно часто) лежат в отдельной папке с именами: /languages, /lang, /local. Бывают и другие названия папок, но такие как я написал — в 99% случаев.

Вам достаточно открыть тему или плагин, найти такую папку, заглянуть в нее и убедиться, что в ней лежат файлы с указанными мной выше расширениями — PO и MO.

Обычно файлы имеют имя, которое соответствует краткому формату языка. Русская локализация — ru_RU, английская — en_EN (Британия) или us_US (США), немецкая — de_DE и так далее.

Также в этой папке довольно часто может лежать файл с расширением .POT

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

Наверняка вы видели в темах или плагинах целую кучу файлов локализации на разные языки.

Пример? Пожалуйста. Довольно популярный среди владельцев сайтов на WordPress плагин постраничной навигации WP-Pagenavi. Скачайте его, откройте и найдите папку — /lang. Там вы увидите 76 файлов локализации. И русский там тоже есть.

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

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

И тогда надо уметь найти и перевести на русский язык (если текст на английском виден посетителям).

Кстати, в моем магазине я продаю видео-инструкцию, посмотрев которую, каждый может научиться переводить темы и плагина правильно, используя правильный перевод с помощью файлов локализации.

Видео-инструкция стоит всего 5$ и доступна по этой ссылке — http://www.skininfo.ru/video/wordpress-translation

Но, моя сегодняшняя публикация не о том, как правильно переводить тему или плагин WordPress, а о том, что довольно редко, но бывает, а именно:

  1. Есть папка с файлами локализации или фалом POT
  2. Вы делаете перевод на русский (с помощью плагина или специального редактора Poedit)
  3. Сохраняете файл с расширением PO
  4. Создаете автоматически файл с расширением MO
  5. Все файлы лежат в папке локализации
  6. Но! Перевод не работает!

Почему?

Когда я первый раз столкнулся с такой ситуацией — сначала не мог понять, где искать и в чем причина.

Но когда разобрался, все оказалось очень просто.

Авторы, которые пишут плагин или тему WordPress, в основной своей массе файлы локализации не делают, так как основной язык всех плагинов и тем — английский.

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

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

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

Но сначала — немного кода PHP. Какая именно функция WordPress включает локализацию? Вот эта:

load_theme_textdomain ( 'twentyfifteen', get_template_directory () . '/languages' );

В примере функция взята из дефолтной темы 2015, поэтому в одинарных скобках стоит слово — 'twentyfifteen'. В конце функции — ссылка на папку.

И что важно: эта функция в любой теме WordPress всегда должна включена в файле functions.php. Я выделил жирным, так как это — важное правило.

Итак варианты, когда может не работать локализация:

Вариант 1 — автор темы или плагина мог забыть создать папку для хранения языковых файлов. Проверьте и если такой папки нет (как имя папки в функции) — создайте эту папку.

Вариант 2 — автор сделал иначе: папку создал, но путь к папке не прописал в функции, или — папка /lang, а в функции — имя папки, например /languages.

Вариант 3 — автор прописал функцию подключения локализации не в файле functions.php, а в другом.

С этим вариантом ошибки я сталкиваюсь чаще всего, когда делаю перевод темы WordPress.

Вариант 4 — автор просто забыл добавить функцию подключения локализации.

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

Лайк приветствуется, спасибо в комментариях — особенно))

Если материал вам понравился, нажмите или расскажите о нем друзьям!

Важно! Эта запись может содержать ссылки на плагины, которые к моменту вашего чтения и скачивания могут работать не корректно. Будьте внимательны.

8 Comments

  • · Edit

    Если подключать тему через child theme wordpress то автор темы должен нормально прописать подключение локализации в противном случае проще скопировать папку с файлами локализации из его темы в свою папку темы .

    Ответить
    • Автор · Edit

      Ваш вариант не противоречит и не дополняет сказанное мной.

      Создание дочерней темы — отдельный разговор, который «тянет» на отдельный пост.

      Ответить
  • Вам нужно найти функцию, которая отвечает за локализацию, в одном из файлов вашей темы. Как она выглядит — я написал в своем обзоре.

    Когда найдете — скопируйте ее и вставьте в начале файла functions.php

    Ответить
  • · Edit

    Извините , а как можно это исправить я просто совсем новенький в этой теме, нашел этот functions.php ну а где что как прописать не знаю, может где то можно более детально про это прочитать. Спасибо

    Ответить
  • · Edit

    themeforest.net/item/spar...e-theme/12693574 . Вот эта тема у меня , автору писал в поддержку он сказал что тема переводится плагином Loco Translate. Вот ответ автора Hi,

    You can translate your theme or generate mo\po files, for example, via Loco Translate plugin — wordpress.org/plugins/loco-translate/

    Ответить
  • · Edit

    themeforest.net/item/spar...e-theme/12693574 . Вот эта тема у меня , автору писал в поддержку он сказал что тема переводится плагином Loco Translate. Вот ответ автора Hi,

    You can translate your theme or generate mo\po files, for example, via Loco Translate plugin — wordpress.org/plugins/loco-translate/

    Ответить
  • · Edit

    Добрый день, может вы мне поможете купил тему для вордпресс, начал переводить плагином Loco Translate, перевожу часть слов, но ничего не происходит тоесть изменения не вступают в силу, как бы плагин переводит а перевода нет! спасибо за ответ

    Ответить

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

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