В WordPress локализация и перевод — ключевые аспекты для создания сайтов, ориентированных на разные языковые аудитории. Правильное использование локальных языковых файлов (.mo и .po) позволяет оптимизировать работу сайта, снизить нагрузку и избежать конфликтов с плагинами автоматического перевода.
Что такое локальные переводы в WordPress и почему они важны
Локальные переводы – это файлы с переводами, которые хранятся на сервере сайта и загружаются непосредственно WordPress для вывода интерфейса и контента на нужном языке. Обычно это файлы с расширениями .po и .mo, расположенные в папках wp-content/languages или внутри папок плагинов и тем.
Использование локальных переводов позволяет:
- Обеспечить стабильность и контроль над качеством перевода.
- Избежать ошибок, связанных с внешними сервисами или плагинами автоматического перевода.
- Оптимизировать производительность за счет локальной загрузки файлов.
- Произвести кастомизацию перевода без изменений в исходном коде.
Важно понимать, что WordPress загружает локализации в определенном порядке, и если локальные переводы не настроены, может использоваться перевод по умолчанию или автоматический перевод, что не всегда удобно.
Где хранятся локальные языковые файлы и как их правильно подключать
По умолчанию, WordPress ожидает языковые файлы в нескольких местах:
wp-content/languages— общие языковые файлы для ядра, плагинов и тем.wp-content/plugins/your-plugin/languages— языковые файлы конкретного плагина.wp-content/themes/your-theme/languages— языковые файлы для темы.
Для подключения локализации в плагинах и темах используется функция load_textdomain() или более удобные обертки load_plugin_textdomain() и load_theme_textdomain().
Пример подключения локализации в плагине для домена wplang
function wplang_load_plugin_textdomain() {
load_plugin_textdomain('wplang', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'wplang_load_plugin_textdomain');
Этот код загружает языковые файлы из папки /languages/ плагина. Файлы должны называться, например, wplang-ru_RU.mo.
Подключение локализации в теме
function wplang_load_theme_textdomain() {
load_theme_textdomain('wplang', get_template_directory() . '/languages');
}
add_action('after_setup_theme', 'wplang_load_theme_textdomain');
Так вы гарантируете, что при загрузке темы переводы будут корректно подгружены.
Как переопределять локальные переводы и использовать их с приоритетом
Иногда нужно изменить перевод, предоставленный плагином или темой, без редактирования исходных файлов. Для этого можно загрузить ваш кастомный файл перевода с приоритетом выше и использовать фильтр load_textdomain.
Для примера создадим функцию, которая загружает кастомные переводы из папки wp-content/languages/wplang-custom/ и переопределяет стандартные:
function wplang_load_custom_textdomain($domain, $mofile) {
if ($domain === 'wplang') {
$custom_mofile = WP_CONTENT_DIR . '/languages/wplang-custom/' . basename($mofile);
if (file_exists($custom_mofile)) {
unload_textdomain($domain);
load_textdomain($domain, $custom_mofile);
return true;
}
}
return false;
}
add_filter('load_textdomain_mofile', 'wplang_load_custom_textdomain', 10, 2);
Таким образом, вы сможете держать кастомные переводы отдельно и обновлять основной плагин или тему без потери изменений.
Использование плагина Clearfy Pro для управления переводами
Для удобства управления локализациями и оптимизации загрузки языковых файлов можно использовать плагин Clearfy Pro. Он позволяет отключать ненужные языковые файлы, очищать кэш переводов и управлять загрузкой локализаций.
Это особенно полезно для сайтов с большим количеством плагинов и тем, где важно минимизировать нагрузку и контролировать переводы.
Советы по оптимизации локализации для мультиязычных сайтов
Если у вас мультиязычный сайт, важно:
- Хранить языковые файлы в правильных папках для каждой локали.
- Использовать инструменты типа WPML или Polylang, но при этом проверять, что локальные переводы загружаются корректно и не конфликтуют с автоматическими переводами.
- Использовать
localeфильтр для точной настройки локали в зависимости от страницы.
Пример фильтра для смены локали на основе пользовательских условий:
function wplang_custom_locale($locale) {
if (is_admin()) {
return $locale;
}
if (isset($_GET['lang']) && $_GET['lang'] === 'ru') {
return 'ru_RU';
}
return $locale;
}
add_filter('locale', 'wplang_custom_locale');
Это позволит гибко управлять языковыми файлами и локализацией без конфликтов.
Выводы и рекомендации
Работа с локальными переводами в WordPress — важный этап для обеспечения стабильности и производительности сайта. Правильное подключение, переопределение и оптимизация языковых файлов позволяют создавать качественные многоязычные решения без лишней нагрузки и конфликтов.
Используйте стандартные функции WordPress для загрузки текстдомена, храните переводы в правильных папках, а для расширенного управления рассмотрите проверенные плагины, например Clearfy Pro.