Разные языки для фронтенда и бэкенда
Я использую англоязычный пакет WordPress, и это очень удобно.
Теперь я хотел бы перевести некоторые элементы блога (такие как "опубликовано", "комментарии" и т.д.), но оставить интерфейс панели управления на английском языке.
Существует ли какой-либо механизм для перевода только элементов сайта?
Вы можете сделать следующее:
- Скачать языковой пакет (например,
de_DE.mo) с wordpress.org. Если языковой пакет недоступен для отдельной загрузки, вы также можете использовать файл.mo, который входит в ZIP-архив WordPress для вашего языка. Он находится в папкеwp-content/languages. - Переместить файл
.moв директориюwp-content/languages/вашей стандартной (англоязычной) установки WordPress. - Изменить константу
WPLANGв файлеwp-config.phpна новую локаль (например,de_DE). - Добавить следующий фильтр в ваш файл
functions.php:
functions.php
add_filter('locale', 'wpse27056_setLocale');
function wpse27056_setLocale($locale) {
if ( is_admin() ) {
return 'en_US';
}
return $locale;
}
что вы имеете в виду под "установить языковой пакет"? мне нужно удалить WordPress и установить новую версию, но на французском? я не хочу удалять мой английский WordPress.
serhio
Нет, ничего переустанавливать не нужно. Просто скачайте WordPress на нужном вам языке и скопируйте языковой файл из wp-content/languages/ в вашу оригинальную английскую установку WordPress, затем измените wp-config.php как описано выше. Или просто скачайте файл fr_FR.mo с этого сайта.
Roman
У меня не было папки wp-content/languages/, поэтому мне пришлось её создать. После выполнения этих манипуляций я получил обратный эффект от желаемого. Теперь у меня админ-панель на румынском, а страницы (вход выполнен или нет) — на английском. Возможно, мне нужно перевести тему...
serhio
Конечно, вам нужен перевод темы. Но админка должна быть на английском, а не на румынском, если вы установите is_admin() в фильтре выше.
Roman
Я добавил этот код в конце файла functions.php текущей темы (twenty ten)... Это правильно?
serhio
У меня есть код, основанный на этом, размещение его в functions.php темы не сработает, так как это уже слишком поздно. Я поместил его в mu-плагин и увидел значительное улучшение результатов.
Tom J Nowell
В WordPress 5.x очень просто установить разные языки для фронтенда и админ-панели
Чтобы изменить язык сайта, перейдите в Настройки -> Общие -> Язык сайта и выберите нужный язык.

Для изменения языка админ-панели перейдите в Пользователи -> Ваш профиль и выберите желаемый язык для админки

Таким образом, все предыдущие решения устарели - теперь каждый пользователь может установить свой собственный язык для интерфейса WordPress
Это должен быть выбранный ответ для версий 2019+. Не требуются плагины, а решение настолько простое. Спасибо!
stason
Для этого вы можете использовать плагины: http://wordpress.org/extend/plugins/kau-boys-backend-localization/ или http://wordpress.org/extend/plugins/wp-native-dashboard/
Добро пожаловать на наш сайт. Пожалуйста, добавьте объяснение: Что делают эти плагины, в чем их различия?
fuxia
Я думаю, они делают ровно одно и то же. (Я просто использую первый...) Вы можете установить разные языковые файлы, и с помощью этих плагинов можно изменить язык админки независимо. Оба плагина предоставляют переключатели языка в Дашборде, поле выбора языка на странице входа и дополнение к странице профиля для выбора языка конкретного пользователя.
zodiac1978
Если кто-то все еще ищет решение, вот что нужно делать, начиная с версии 4.7
function wp_noshor_redefine_locale($locale) {
if( is_admin() ):
switch_to_locale('en_US');
endif;
}
add_filter('init','wp_noshor_redefine_locale');
Это заставляет панель управления загружаться на английском языке, после чего вы можете перейти в настройки и выбрать желаемый язык.
Обновлённый ответ для WordPress 4+
Ответ @rofflox всё ещё корректен, но в WordPress произошли некоторые изменения, которые могут повлиять на работу его функции «как есть» начиная с версии 4.0.
Константа wp-config WPLANG была объявлена устаревшей в пользу установки языка сайта через выпадающий список в Настройки->Общие. Это означает, что после изменения языка вашего сайта на Шведский (например), админ-панель сайта будет отображаться на английском... но выпадающий список «Язык сайта» в Настройки->Общие будет предустановлен на Английский (США). Это значит, что если вы позже внесёте изменения в общие настройки и забудете снова выбрать Шведский в качестве языка сайта, весь сайт вернётся к английскому языку.
Я рекомендую создать функции в вашем файле functions.php следующим образом:
// Установка локали; оригинальная функция от @rofflox
function vnmFunctionality_setLocale($locale) {
if (is_admin()) {
return 'en_US';
}
return $locale;
}
add_filter('locale', 'vnmFunctionality_setLocale');
// Подключение скрипта для принудительной установки выпадающего списка языка на странице общих настроек, на случай, если мы забудем об этом позже.
function vnmFunctionality_countryReminderScript($hook) {
if ($hook != 'options-general.php') {
return;
}
wp_enqueue_script('lang-reminder-script', get_template_directory() . '/js/site-language.js', array('jquery'), '1.0.0', true);
wp_localize_script('lang-reminder-script', 'langObject', array(
'lang' => get_option('WPLANG'),
));
}
add_action('admin_enqueue_scripts', 'vnmFunctionality_countryReminderScript');
А затем файл JavaScript под названием site-language.js (сохранённый в папке /js/ вашей темы) следующим образом:
jQuery(document).ready(function($) {
$('select#WPLANG').val(langObject.lang).change();
});
Это должно автоматически предустанавливать текущий язык отображения сайта в выпадающем списке на странице настроек, чтобы вам не приходилось помнить о необходимости делать это вручную каждый раз.
Что вам нужно — это перевести вашу тему. Если у вашей темы есть файл .pot, то перевести её легко. Просто следуйте инструкциям по ссылке:
http://www.appthemes.com/blog/how-to-translate-a-wordpress-theme/
В противном случае вам придётся редактировать файлы темы и изменять слова в каждом случае.
