
Перевод темы WordPress на лету, смена локализации программно.
Описание проблемы.
Допустим, у вас стоит плагин перевода wordpress на разные языки и вы хотите автоматически перевести сайт при клике на ссылку.
Вы уже сделали линки вида zalki-lab.ru/?lang=ru . Где в $_GET параметре передаете сокращение нужного вам языка. Так же у вас имеются сгенерированные mo и po файлы ( en_US.po ).
Теперь нам всего лишь нужно подгрузить нужную локаль и тема wordpress будет переводится автоматически. На основании уже готовых файлов перевода.
Код для перевода темы wordpress.
Переходим в файл functions.php вашего шаблона и в самый верх вставляем следующий код.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_filter( 'locale','redefine_locale', 10 ); | |
function redefine_locale( $locale ) { | |
$lang = ( isset( $_GET['lang'] ) ) ? esc_html( $_GET['lang'] ) : ''; | |
switch ( $lang ) { | |
case 'en': | |
$locale = 'en_US'; | |
break; | |
default: | |
$locale = 'de_DE'; | |
break; | |
} | |
return $locale; | |
} |
Подключение textdomain
Самое главное не забудьте убедится, что у вас также подключен textdomain.
load_theme_textdomain( ‘pr’, get_template_directory() . ‘/languages’ );