Це зовсім невеликий і простий хак (або навіть швидше рада) - в інтернеті не знайшов подібного рішення, тому поспішаю з вами поділитися. Можливо, хтось зіткнувся з такою ж ситуацією. Увага, зараз не буду розповідати про локалізацію вордпресс шаблонів в цілому, це тема для іншої і більш об'ємною статті. Можливо, пост вийшов трохи сумбурним (з передісторією і роздумами), але завдання потрібну він вирішує.
Отже, проблема в наступному. Була куплена платна тема для 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');
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 файлах шаблону всі тексти для перекладу - завдання втомлива.