Главная Новости

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


Опубликовано: 24.08.2018

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

ТОП-10 полезных и бесплатных приложений для iOS и Android |№10 ProApps от ProTech

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



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

1. Скачиваете бесплатную программу Poedit .


Windows 10: How to Find Location of Current Background Image

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' ) ;

define('WPLANG', 'ru_RU');

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

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

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

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

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

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

$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' ; }

// 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'; }

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

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

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

rss