Находим путь для файлов локализации темы (мини хак)
Это совсем небольшой и простой хак (или даже скорее совет) — в интернете не нашел подобного решения, поэтому спешу с вами поделиться. Возможно, кто-то столкнулся с такой же ситуацией. Внимание, сейчас не буду рассказывать о локализации вордпресс шаблонов в целом, это тема для другой и более объемной статьи. Возможно, пост получился немного сумбурным (с предысторией и размышлениями), но задачу нужную он решает.
Итак, проблема в следующем. Была куплена платная тема для worpdress. Перевод в них, как правило, осуществляется через файлы ru_RU.mo и ru_RU.po (смотрите документацию по своему шаблону, поддерживает ли он этот метод). Алгоритм создания локализации в таком случае прост:
1. Скачиваете бесплатную программу Poedit.
2. Находите в теме .pot файл (у меня он тут /framework/languages).
3. Запускаете программу, где выбираете пункт меню File — New catalog from POT file.
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 файлах шаблона все тексты для перевода — задача утомительная.
комментариев 15 к статье “Находим путь для файлов локализации темы (мини хак)”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Оптимизируем WordPress header и удаляем лишний код (5,19 из 7, голосов - 43)
- Как создать пункт меню без ссылки в wordpress (6,39 из 7, голосов - 23)
- Добавление кнопки Вконтакте, Facebook и Twitter в wordpress блог (6,14 из 7, голосов - 21)
- Выполнение jQuery скриптов при выборе вариаций товаров в WooCommerce (3,96 из 7, голосов - 26)
- Хаки для вариаций товаров в WooCommerce (5,11 из 7, голосов - 18)
- Вывод текста в блоге только на главной (6,85 из 7, голосов - 13)
- Как убрать category в WordPress категориях — зачем это делать, плагины для реализации (5,31 из 7, голосов - 16)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
Полезная штука! Уже много раз сталкивался с переводом тем и все время делаю это переводя много файлов. :) Не самый лучший способ, и если вдруг апгрейд темы произойдет — может все слететь. А тут всё как положено — по уму. :)
Sun Sunich, да, перевод через ru_RU.mo и ru_RU.po файлы — отличная штука. Плагин CodeStyling Localization весьма полезный.
Интересно. возьму на заметку. Спасибо.
Гениально! Давно искал ответ на вопрос, какого же… не подцепляются русские po mo после локализации. Была конечно такая же как в хаке идея выражения через переменные, но где их объявлять я не знал и не стал гадать… Спасибо автору!
Ошибочка, в самом начале статьи два раза «сейчас»
«Внимание, сейчас не буду сейчас рассказывать…»
Анна, спасибо, подправил.
А вот такой код в functions.php дочерней темы разве не подойдет?)
/*Добавляем директорию языков для дочерней Темы*/
function my_child_theme_setup() {
load_child_theme_textdomain( ‘текстдомен родительской темы’, get_stylesheet_directory() . ‘/languages’ );
}
add_action( ‘after_setup_theme’, ‘my_child_theme_setup’ );
кстати, а вот локализация плагинов в дочерней теме — с этим как быть? У меня пока этот вопрос не получилось реализовать…
Владислав, в статье я не реализовывал локализацию дочерней темы. Мне нужно было узнать где находятся файлы локализации уже готового шаблона, т.к. указанный в документации каталог, не работал. Поэтому не могу подсказать вам с вашим вопросом.
Если говорить про локализацию дочерней темы (переопределение подгрузки языкового файла), то вышеописанный мной код у меня хорошо все подгружает!
А вот как переопределять локализацию плагинов?
Владислав, не сталкивался с этой задачей.
Спасибо автору за столь полезную статью. Буду знать.
А переводы получаются качественные? Или придется немного подправлять сам перевод?
Наталья, переводы пишете вы сами, поэтому их качество зависит только от вас. Если речь идет о тех, которые поставляются вместе с системой, модулями, шаблонами, то там нормальные тексты.
Поняла, что придется разбираться ) Мозги кипят)
Владислав, также столкнулся с проблемой локализации плагина, вы решили эту проблему? если так то подскажите как, буду вам очень благодарен.