Перевод тем и плагинов в WordPress — важный этап создания многоязычного сайта. Однако часто можно столкнуться с проблемой замедления работы сайта из-за неэффективной загрузки языковых файлов. В этой статье разберём, как оптимизировать процесс перевода, чтобы минимизировать нагрузку на сервер и повысить скорость загрузки страниц.
Почему важно оптимизировать переводы в WordPress
Большинство тем и плагинов используют gettext (.po/.mo) файлы для локализации. При загрузке страницы WordPress обращается к этим файлам для вывода переведённого текста. Чем больше языковых файлов и чем тяжелее они, тем дольше происходит обработка, что замедляет сайт.
Оптимизация переводов помогает:
- Сократить время загрузки страниц;
- Уменьшить потребление ресурсов сервера;
- Избежать конфликтов между плагинами и темами;
- Облегчить поддержку и обновление переводов.
Как правильно организовать загрузку языковых файлов темы и плагинов
По умолчанию WordPress ищет языковые файлы по стандартным путям, например, /wp-content/languages/plugins/ или /wp-content/languages/themes/. Но если загружать все переводы без разбора, это приведёт к лишним нагрузкам.
Рекомендуется загружать языковые файлы только для активных плагинов и текущей темы. Для этого можно использовать хук load_textdomain() с проверками.
Пример функции для оптимальной загрузки переводов
function wptranslate_load_textdomain_optimized($domain, $mofile) {
// Загружаем перевод только для активной темы и плагинов
$active_theme = wp_get_theme()->get('TextDomain');
if ($domain === $active_theme) {
return load_textdomain($domain, $mofile);
}
if (in_array($domain, wptranslate_get_active_plugins_textdomains())) {
return load_textdomain($domain, $mofile);
}
// Игнорируем остальные
return false;
}
add_filter('load_textdomain', 'wptranslate_load_textdomain_optimized', 10, 2);
function wptranslate_get_active_plugins_textdomains() {
$active_plugins = get_option('active_plugins', []);
$textdomains = [];
foreach ($active_plugins as $plugin_file) {
$plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
if (!empty($plugin_data['TextDomain'])) {
$textdomains[] = $plugin_data['TextDomain'];
}
}
return $textdomains;
}Эта функция проверяет, принадлежит ли домен перевода активной теме или плагину, и загружает только нужные языковые файлы. Таким образом исключается загрузка ненужных переводов.
Использование плагинов для оптимизации переводов
Кроме ручных решений, существуют плагины, которые помогают управлять языковыми ресурсами и оптимизируют их загрузку.
Clearfy Pro для оптимизации загрузки переводов
Плагин Clearfy Pro позволяет отключать ненужные языковые файлы для плагинов и тем, оптимизируя работу сайта. В настройках Clearfy можно выбрать, какие языковые пакеты загружать, а какие — отключить.
Load Textdomain Optimizer
Этот плагин управляет загрузкой языковых файлов и позволяет включать загрузку переводов только для текущей локали, что уменьшает использование памяти и ускоряет обработку.
Оптимизация переводов с помощью кэширования
Кэширование — один из ключевых способов ускорения загрузки переводов. WordPress кэширует результаты функции __(), но при большом количестве вызовов можно усилить кэширование.
Для этого можно использовать объектный кеш или transient API.
Пример кэширования перевода строки
function wptranslate_translate_with_cache($text, $domain = 'default') {
$cache_key = 'wptranslate_trans_' . md5($text . $domain);
$translated = get_transient($cache_key);
if ($translated === false) {
$translated = __($text, $domain);
set_transient($cache_key, $translated, 12 * HOUR_IN_SECONDS);
}
return $translated;
}Использование такой функции в шаблонах или плагинах позволит значительно снизить нагрузку на сервер при повторных вызовах одних и тех же переводов.
Перевод динамического контента и кеширование AJAX
Если ваш сайт использует AJAX для подгрузки контента, важно, чтобы переводы динамических частей тоже были оптимизированы.
Для этого рекомендуется предварительно локализовать скрипты с помощью wp_localize_script(), передавая необходимые переводы на фронтенд.
function wptranslate_localize_scripts() {
wp_localize_script('my-ajax-script', 'wptranslateData', [
'greeting' => __('Привет!', 'my-text-domain'),
'error' => __('Ошибка загрузки данных', 'my-text-domain')
]);
}
add_action('wp_enqueue_scripts', 'wptranslate_localize_scripts');Так вы исключите необходимость повторно выполнять PHP-функции перевода при каждом AJAX-запросе, что ускорит отклик и снизит нагрузку.
Оптимизация переводов пользовательских плагинов и тем
Если вы разрабатываете собственные темы или плагины, стоит внедрять оптимизированные методы загрузки и кэширования переводов с самого начала.
Рекомендуется:
- Загружать языковые файлы только при необходимости и только для нужных доменов.
- Использовать кэширование результатов перевода для повторного использования.
- Поддерживать стандарты WordPress по локализации, чтобы облегчить совместимость с плагинами для оптимизации.
Пример функции загрузки языкового файла темы с проверкой:
function wptranslate_load_theme_textdomain_optimized() {
$theme = wp_get_theme();
$domain = $theme->get('TextDomain');
$locale = determine_locale();
$mofile = $theme->get_stylesheet_directory() . "/languages/{$domain}-{$locale}.mo";
if (file_exists($mofile)) {
load_textdomain($domain, $mofile);
}
}
add_action('after_setup_theme', 'wptranslate_load_theme_textdomain_optimized');Заключение по оптимизации переводов в WordPress
Оптимизация переводов — важный аспект производительности многоязычных сайтов на WordPress. Правильная организация загрузки языковых файлов, использование кэширования и специальных плагинов, а также грамотная локализация AJAX-запросов позволяют существенно улучшить скорость и стабильность работы сайта.
Для удобства управления переводами и оптимизации рекомендуется обратить внимание на Clearfy Pro — полезный инструмент для комплексной оптимизации WordPress.