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

Перевод вордпресс тем и шаблонов с помощью gettext


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

видео Перевод вордпресс тем и шаблонов с помощью gettext

Проверка перевода в po-файле

Для классического метода перевода шаблона вордпресс требуется отредактировать содержимое специальных файлов PO/MO, используя при этом программу Poedit или какой-нибудь подходящий плагин. Однако, что делать, если вам нужно быстро подправить всего несколько слов в теме, и нет особо времени/желания установливать сторонние решения?



На помощь приходят функции и фильтры вордпресс, что позволяют заменить любой текст, для которого доступна локализация в шаблоне. Имеется ввиду наличие специальных конструкций __( или _e( — без них данный метод не будет работать. Решение максимально простое, но не всеми разработчиками приветствуется.


Руководство #11. Как скорректировать перевод WordPress, темы или плагина под себя

Итак, допустим, вам нужно сделать частичный перевод темы вордпресс, заменив заголовок формы комментариев «Leave a Reply» на текст «Оставить комментарий». Для этого заходим в файл функций functions.php и размещаем следующий код:


poedit

add_filter ( 'gettext' , 'translate_text' ) ; add_filter ( 'ngettext' , 'translate_text' ) ; function translate_text ( $translated ) { $translated = str_ireplace ( 'Leave a Reply' , 'Оставить комментарий' , $translated ) ; return $translated ; }

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

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 может сэкономить вам много нервов и времени. Он актуален, если нужно локализовать несколько элементов на сайте, и у вас либо нет времени, либо не можете найти нужные файлы локализации. «Злоупотреблять» данным хаком для перевода вордпресс темы полностью я бы не советовал.

rss