Дек
11
15

Находим путь для файлов локализации темы (мини хак)

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

Итак, проблема в следующем. Была куплена платная тема для worpdress. Перевод в них, как правило, осуществляется через файлы ru_RU.mo и ru_RU.po (смотрите документацию по своему шаблону, поддерживает ли он этот метод). Алгоритм создания локализации в таком случае прост:

1. Скачиваете бесплатную программу Poedit.
2. Находите в теме .pot файл (у меня он тут /framework/languages).
3. Запускаете программу, где выбираете пункт меню File — New catalog from POT file.

Программа локализации Poedit

4. Вводите все переводы. Тексты при введении сохраняются автоматически. В конце работы нужно нажать кнопку Save. Переименуйте созданные файлы в нужную вам локаль, например для русского языка — ru_RU.mo и ru_RU.po.

5. В файле настройки wp-config.php должна быть строка подключение языка:

define('WPLANG', 'ru_RU');

Единственная проблема, которая возникает — найти место куда нужно загрузить ru_RU.mo и ru_RU.po файлы перевода. Обычно они хранятся в директории languages для темы. Кроме того, как правило, в документации по шаблону будет сказано куда нужно их загрузить в моем случае это путь:

wp-content/themes/имя_темы/theme/languages

Увы, после этого ничего на сайте не изменилось, перевод не сработал. Файлы темы есть также и в wp-content/languages, но они вносили изменения в переводы внутри админки. Вообще там было много разных файлов локализаций.

файлы локализации

Собственно хак

В интернет нашел код подключения локализации для темы:

    $lang = TEMPLATE_PATH . '/lang';
    load_theme_textdomain('theme_textdomain', $lang);

Он должен находится в файле functions.php. У меня там был немного иной код:

 // Load Theme Local File
$locale = get_locale();
 
if (is_admin()) {
    load_theme_textdomain('cmsmasters', CMSMS_ADMIN_INC . '/languages');
 
    $locale_file = CMSMS_ADMIN_INC . '/languages/' . $locale . '.php';
} else {
    load_theme_textdomain('cmsmasters', CMSMS_FRAMEWORK . '/languages');
 
    $locale_file = CMSMS_FRAMEWORK . '/languages/' . $locale . '.php';
}

Видно, что подгружаются языковые файлы. Я разместил после этого кода строку:

var_dump($locale_file);

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

путь к файлам локализации

Я загрузил свои ru_RU.mo и ru_RU.po файлы по указанному пути, и ура все заработало! До этого реально куда только их не вставлял, реакции — ноль. Самое удивительно, что даже установка WordPress плагина локализации CodeStyling Localization и создание переводов через него никак не влияло на исходную тему. К счастью, ситуация разрешилась, а то сами понимаете искать в 20-30 файлах шаблона все тексты для перевода — задача утомительная.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 6, средний балл: 5,00 из 7)
Загрузка...

категория Категории: Хаки и секреты;
теги Теги: , , .

комментариев 15 к статье “Находим путь для файлов локализации темы (мини хак)”

  • Sun Sunich   11.12.2013

    Полезная штука! Уже много раз сталкивался с переводом тем и все время делаю это переводя много файлов. :) Не самый лучший способ, и если вдруг апгрейд темы произойдет — может все слететь. А тут всё как положено — по уму. :)

  • Tod   12.12.2013

    Sun Sunich, да, перевод через ru_RU.mo и ru_RU.po файлы — отличная штука. Плагин CodeStyling Localization весьма полезный.

  • irocez   15.12.2013

    Интересно. возьму на заметку. Спасибо.

  • Kvantor   30.12.2013

    Гениально! Давно искал ответ на вопрос, какого же… не подцепляются русские po mo после локализации. Была конечно такая же как в хаке идея выражения через переменные, но где их объявлять я не знал и не стал гадать… Спасибо автору!

  • Анна   25.01.2015

    Ошибочка, в самом начале статьи два раза «сейчас»
    «Внимание, сейчас не буду сейчас рассказывать…»

  • Tod   26.01.2015

    Анна, спасибо, подправил.

  • Владислав   26.07.2015

    А вот такой код в functions.php дочерней темы разве не подойдет?)

    /*Добавляем директорию языков для дочерней Темы*/
    function my_child_theme_setup() {
    load_child_theme_textdomain( ‘текстдомен родительской темы’, get_stylesheet_directory() . ‘/languages’ );
    }
    add_action( ‘after_setup_theme’, ‘my_child_theme_setup’ );

  • Владислав   26.07.2015

    кстати, а вот локализация плагинов в дочерней теме — с этим как быть? У меня пока этот вопрос не получилось реализовать…

  • Tod   26.07.2015

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

  • Владислав   26.07.2015

    Если говорить про локализацию дочерней темы (переопределение подгрузки языкового файла), то вышеописанный мной код у меня хорошо все подгружает!

    А вот как переопределять локализацию плагинов?

  • Tod   27.07.2015

    Владислав, не сталкивался с этой задачей.

  • Наталья   12.03.2016

    Спасибо автору за столь полезную статью. Буду знать.
    А переводы получаются качественные? Или придется немного подправлять сам перевод?

  • Tod   14.03.2016

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

  • Наталья   15.03.2016

    Поняла, что придется разбираться ) Мозги кипят)

  • Сергей   25.08.2016

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

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Последние посты
Полезные заметки
Лучшее в категории
Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости