WordPress как на ладони
wordpress jino

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

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

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

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

Спасибо.

3
Гость 1.3 года назад
  • 2
    Kama4662

    Плагин 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 1.3 года назад

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

    Kama 1.3 года назад

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

    campusboy 1.2 года назад

    Есть, шеф! smile Плюсанул.

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

    Kama 1.2 года назад

    Ммм, я этого и не делал... Не уверен что все хотят иметь постоянную подписку на все темы где был оставлен коммент... Надо подумать на эту тему...

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

    campusboy 1.2 года назад

    Да, галочку как в простых записях, возможность которого даёт Сабскрайб ту комментс. А то человек уточняет по твоему ответу, ждёт, а ты и в ус не дуешь, что у тебя спросили ещё что-то smile

    Комментировать
  • 0

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

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