WordPress как на ладони
Новые WordPress шаблоны Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Разделение языка сайта и языка админ панели WordPress

Здравствуйте, произошла нужда смены языка админ панели без изменения языка самого сайта.

То есть нужно чтобы язык по умолчанию был "X" для того чтобы все плагины типа контактных форм, woocomerce и тд. подхватывали язык "X" а язык админ панели был "Y" (в данном случае русский). Другими словами: нужно разделить язык внешней части сайта (frontend) от языка админ панели (backend).

Про файлы локализации я знаю, но как сделать чтобы язык "сайта", то есть по умолчанию отличался от языка админки.

Спасибо.

3
Гость
2.1 года назад
  • 2
    Kama7004

    Плагин Backend Localization

    Чтобы не изобретать велосипед, поставьте плагин Backend Localization - это как раз то что нужно.

    Упрощенный вариант (свой плагин)

    Или другой упрощенный вариант. Но решить эту задачу без плагина не получится, потому что хук нужно вешать в момент подключения плагинов, можно раньше...

    Сейчас мы создадим свой мини-плагин. В котором не будет возможности переключать языки в админке (в прочем думаю это и не надо совсем). Также страницы: регистрация wp-register.php и логин wp-login.php будут считаться фронтом, а не админкой как в Backend Localization.

    А в остальном - тот же самый и принцип что и в Backend Localization. Только очень все урезано, и выкинуто 90% плюшек - оставил только ядро, но и его немного ускорил smile

    Шаг 1.

    Создай папку admin-localization, в ней файл admin-localization.php, в этот файл скопируй следующий код:

    <?php
    
    /*
    Plugin Name: Admin Localization
    Description: Жестко устанавливает русский язык для админ панели. Язык можно поменять в файле плагина в константе BACKEND_LOCALE. Чтобы все работало, нужно чтобы в папке локализации были все нужные языковые файлы .mo для этого, переведите сайт на все нужные языки в общих настройках - так WordPress подгрузит в папку languages нужные файлы перевода. Это очень маленький плагин без настроек.
    Version: 0.1
    Author: Kama
    Author URI: http://wp-kama.ru
    */
    
    // локаль (язык) админки
    define('ADMIN_LOCALE', 'ru_RU'); 
    
    // запускаем плагин :)
    add_filter('locale', 'admin_localize');
    function admin_localize( $locale ) {
    	static $admin_url;
    
    	// установим язык если вы в админке
    	if( is_admin() ) {
    		if( $admin_url === null ) $admin_url = admin_url(); // для производительности
    
    		if( ! defined('DOING_AJAX') || ( isset($_SERVER['HTTP_REFERER']) && false !== strpos($_SERVER['HTTP_REFERER'], $admin_url ) /* is admin ajax */ ) )
    			return ADMIN_LOCALE;
    	}
    
    	return $locale;
    }

    Шаг 2.

    Скопируй эту папку в папку плагинов сайта и активируй плагин в админ панели сайта. Или можно зазиповать эту папку и через админку WP установить плагин из zip файла, чтобы в FTP не лезть...

    Все!

    Теперь у тебя админка всегда будет на русском, а все остальное на том языке, который установлен в общих настройках сайта...

    -

    И еще пару слов про настройки.

    Если нужно изменить язык админки, то измени в файле плагина значение константы 'ADMIN_LOCALE'.

    Список локалей относящихся к разным языкам смотри тут: http://svn.automattic.com/wordpress-i18n/

    campusboy 2.1 года назад

    Жаль, что такие фишки затеряются в этом разделе...

    Kama 2.1 года назад

    Плюсани вопрос, его где-тов топе хоть найти можно будет через фильтр smile Вообще, конечно неплохая тема для поста получилась. Но мне и так нравится smile

    z1mak 2.1 года назад

    Большое спасибо !
    Нашел еще один плагин "English wp admin"(около 200 строк кода).
    Думал в нем заменить все en-EN на ru-Ru.
    Но ваш конечно меньше поэтому его и использую, спасибо !

    Avrelkin 3 месяца назад

    Спасибо большое , просто и гениально, лучшее решение, на мой взгляд. Плагин работает !

    Павел месяц назад

    Большое спасибо, всё работает. Однако при установке языка в админке вордпресса после сохранения в графе "язык сайта" продолжает отображаться "русский". По факту же после сохранения весь фронтэнд сайта перевёлся на немецкий.

    Alexs месяц назад

    Отличное решение. Большое спасибо.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация