Быстрый перевод вордпресс тем с gettext
Для классического метода перевода шаблона вордпресс требуется отредактировать содержимое специальных файлов PO/MO, используя при этом программу Poedit или какой-нибудь подходящий плагин. Однако, что делать, если вам нужно быстро подправить всего несколько слов в теме, и нет особо времени/желания установливать сторонние решения?
На помощь приходят функции и фильтры вордпресс, что позволяют заменить любой текст, для которого доступна локализация в шаблоне. Имеется ввиду наличие специальных конструкций __( или _e( — без них данный метод не будет работать. Решение максимально простое, но не всеми разработчиками приветствуется.
Итак, допустим, вам нужно сделать частичный перевод темы вордпресс, заменив заголовок формы комментариев «Leave a Reply» на текст «Оставить комментарий». Для этого заходим в файл функций functions.php и размещаем следующий код:
add_filter('gettext', 'translate_text'); add_filter('ngettext', 'translate_text'); function translate_text($translated) { $translated = str_ireplace('Leave a Reply', 'Оставить комментарий', $translated); return $translated; } |
При вызове данной функции фильтр заменит все вхождения «Leave a Reply» на указанный вами текст. Причем данный хак позволяет переводить и более одной фразы — просто добавляете новые строки $translated в функцию.
add_filter('gettext', 'translate_text'); add_filter('ngettext', 'translate_text'); function translate_text($translated) { $translated = str_ireplace('Leave a Reply', 'Оставить комментарий', $translated); $translated = str_ireplace('Подытог', 'Итого', $translated); return $translated; } |
По второму примеру видите, что можно не только переводить в шаблоне вордпресс по 1-2 фразе, но и заменять определенные уже локализованные элементы.
Эта фишка оказалась очень полезной при работе с WooCommerce. Файлов локализации у этого модуля было несколько, пару часов пытался разобраться какой именно используется при отображении фразы «Подытог» — тщетно. Причем разные плагины и Poedit также не помогли с решением задачи, правка ядра напрямую, сами понимаете, не лучший вариант. А вот данный хак gettext для быстрого перевода темы вордпресс с заменой слов отлично сработал! Автору решения респект. Выручил.
Итого. Не смотря на то, что многие разработчики не любят и не рекомендуют этот метод, иногда перевод вордпресс шаблона с помощью gettext может сэкономить вам много нервов и времени. Он актуален, если нужно локализовать несколько элементов на сайте, и у вас либо нет времени, либо не можете найти нужные файлы локализации. «Злоупотреблять» данным хаком для перевода вордпресс темы полностью я бы не советовал.
комментариев 9 к статье “Быстрый перевод вордпресс тем с gettext”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Media Cleaner — для удаления неиспользуемых изображений WordPress
- VpsUP.ru — рейтинг VPS/VDS хостеров и помощь с выбором сервера
- OptiPic – оптимизация изображений для сайтов на WordPress и не только
- Как убрать Google Maps API на сайте с WordPress?
- Finteza Analytics — сервис для комплексного анализа трафика + бесплатный плагин
- WPShop — 4 функциональных премиум темы на любой вкус + плагин Clearfy Pro
- Duplicator — лучший плагин переноса WordPress, алгоритм клонирования сайта
- WooCommerce (30)
- Безопасность (10)
- Видео (6)
- Виджеты (24)
- Возможности (124)
- Вопрос-ответ (2)
- Начинающим (44)
- Новости (42)
- Оптимизация (20)
- Плагины (216)
- Сервисы (73)
- Хаки и секреты (79)
- Шаблоны (42)
- Оптимизируем WordPress header и удаляем лишний код
(5,33 из 7, голосов - 40)
- Добавление кнопки Вконтакте, Facebook и Twitter в wordpress блог
(6,10 из 7, голосов - 20)
- Как создать пункт меню без ссылки в wordpress
(6,22 из 7, голосов - 18)
- 17 полезных приемов и хаков для WordPress
(5,57 из 7, голосов - 14)
- Вывод текста в блоге только на главной
(6,82 из 7, голосов - 11)
- Вывод категорий для поста через функцию get_the_category
(5,14 из 7, голосов - 14)
- Лучшие хаки и плагины wordpress 2012 в блоге
(5,42 из 7, голосов - 12)

- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- WordpressPlugins.ru
- Majordomo - выгодные цены на виртуальный хостинг
- О факторах мешающих развитию интернет-магазина
- Мобильное казино «Вулкан» — можно скачать на телефон и играть
- Создание сайта визитки
- Работаем с удаленным сотрудником
- Игра в казино Вулкан — сплошное удовольствие (обзор + турниры)
- Как быстро продать товар в интернете, контекстная реклама и раскрутка
- Заголовки, как способ привлечения внимания
ИМХО, это плохой путь для перевода. Во-первых, получается куча мест с переводом — замахаешься потом искать, если понадобиться. А во-вторых, отжирает память и добавляет лишние запросы.
Насчет Woocommerce — полагаю, ты поставил плагин Saphali Woocommerce Russian для руссификации? :) Так вот «Подытог», насколько помню, был до версии 2.3 именно там и сам файл перевода лежал в папке плагина. Да, бредово и перевод там просто ужасный.
Сейчас все стало проще — теперь файл руссификации один, и лежит он в wp-content/languages/plugins:
woocommerce-ru_RU — фронт, woocommerce-admin-ru_RU — бэк.
Yaroslav.CH, плагин Saphali Woocommerce Russian ставил, потом убрал. Там с переводами был какой-то непонятный глюк, я менял их, а через сутки все опять слетало. То ли какое-то автообновление темы было, то ли еще что-то, реально создавал новый перевод раз 10. Потом забил и внес правку тупо в php файл. А тут подвернулся более гибкий вариант с gettext.
Переводить так всю тему я бы тоже не стал — запросы лишние, да и не совсем правильный метод. Но для пары тройки слов, если лень разбираться с кодом или никак не получается найти файл локализации, вполне можно себе позволить «минутную слабость»))
Tod, ну ты ж сам понимаешь — стоит разок «дать слабину» и — понеслась! :)
А насчет переводов — слава богу, с версии 2.3 они наконец-то этот многофайловый ужас убрали. Теперь все лежит более-менее структурировано. Хотя качеством перевод, конечно, не блещет — переводили явно тупо по словам, вне зависимости от контекста. И вся ж лажа в том, что при обновлении движка, обновлять сам файл перевода нельзя — слетают все твои изменения. Все жду, когда в Woocommerce появятся новые переменные, перевода которых не будет в старом файле. От будет радости :)
Кроме того, в Woocommerce периодически всплывают неприятные моменты использования одной и той же текстовой переменной для абсолютно разных мест. Помню был момент, когда в форме заказа и в табах использовалась одна переменная «Характеристики». Причем для формы заказа этот перевод, естественно, абсолютно не подходил — там имелись ввиду примечания к заказу. Может уже и исправили, но тогда пришлось решать иначе.
Yaroslav.CH, согласен, я обычно так не перевожу, в этот раз пришлось из-за глюков и убитых пары часов на их поиски. Я переводил через Poedit, Loco Translate. Там реально было 3 места с текстами — каталог wp-content/languages, еще один в теме и в самом модуле. Но в итоге все же нашел нужно место, а потом, как уже говорил, переводы начали сами по себе слетать. Глюк был не только с переводами, но и настройками шаблона, вероятно проблема как раз в теме была. В общем, метод получше правки php файлов напрямую. И при обновлении ничего не слетает)
Tod, я только Poedit использую — из всех вариантов, этот для меня оказался самым оптимальным. А насчет автообновления — когда-то имел дело с темой, у которой в настройках была птичка freez-а. То есть раз в сутки она откатывалась до исходной версии. Сама настройка, как я понимаю, пришла из демо-версии этой темы — может разработчик забыл убрать, а может решил, что кому-то еще пригодится.
Yaroslav.CH, я вроде все настройки просмотрел, но реально файлы переводов и стилей откатывались до версий по-умолчанию. С Poedit там были «свои нюансы» — программа выдавала сообщение с ошибкой в исходном файле и, следовательно, сгенерировать МО файл не получилось. Короче говоря, мутный был проект, хорошо, что все с ним уже порешал.
Спасибо большое)) очень долго искала, как убрать подытог) только это мне помогло!!!
Tod, прошло два года, а твоя статья сегодня очень пригодилась :) После того как языковые файлы админки и фронта в WP и WC объединили, твой вариант работы с текстом получился единственно удобным.
Yaroslav.CH, рад что пригодилось:) аналогично фишка до сих пор в некоторых случаях очень выручает.