При работе с WordPress на мультиязычных сайтах или сайтах с поддержкой нескольких локалей часто накапливаются неиспользуемые языковые файлы (.mo, .po). Они занимают место на сервере, могут замедлять загрузку сайта и создавать путаницу при обновлениях. В этой статье я расскажу, как безопасно и эффективно удалить лишние языковые файлы и переводы в WordPress, а также приведу примеры кода и плагины, которые помогут в этом.
Почему важно удалять неиспользуемые языковые файлы? Оптимизация и безопасность
Неиспользуемые языковые файлы — это лишний «мусор» в структуре сайта. Они увеличивают размер резервных копий, замедляют работу файловых операций и могут привести к конфликтам при обновлениях, если плагины или темы пытаются обратиться к этим файлам. Также избыток языковых файлов усложняет управление переводами, особенно при ручном редактировании.
Кроме того, удаление ненужных языковых файлов помогает снизить нагрузку на хостинг и ускорить бэкапы, что особенно актуально для больших проектов и сайтов с ограниченными ресурсами.
Наконец, поддержание чистоты в языковых файлах снижает вероятность ошибок при локализации плагинов и тем.
Как определить, какие языковые файлы не нужны? Анализ и проверка
Первый шаг — понять, какие языковые файлы реально используются сайтом. Для этого:
- Проверьте текущий язык сайта, установленный в
Settings > General > Site Language. - Используйте FTP или файловый менеджер хостинга, чтобы просмотреть папки
/wp-content/languages/,/wp-content/plugins/и/wp-content/themes/. - Обратите внимание на файлы
.moи.po, например,ru_RU.mo,fr_FR.moи так далее. - Если вы не используете определённый язык ни на сайте, ни в плагинах или темах, эти файлы можно считать неиспользуемыми.
Также для анализа можно установить плагин Clean Up Translations, который показывает статистику используемых языков и помогает удалить ненужные локализации.
Удаление неиспользуемых языковых файлов вручную
Если вы уверены, что определённые языковые файлы не нужны, их можно удалить вручную через FTP или файловый менеджер:
- Подключитесь к серверу через FTP.
- Перейдите в
/wp-content/languages/и удалите ненужные файлы.moи.po. - Аналогично проверьте папки
/wp-content/plugins/и/wp-content/themes/, удалите локализации неиспользуемых языков.
Важно: перед удалением сделайте резервную копию файлов.
Автоматизация очистки языковых файлов с помощью кода
Для разработчиков предлагаю пример функции, которая сканирует папку языков сайта и удаляет файлы, не соответствующие текущему языку сайта. Назовём функцию wplangru_clean_unused_languages():
function wplangru_clean_unused_languages() {
$current_locale = determine_locale(); // Текущий язык сайта
$languages_dir = WP_CONTENT_DIR . '/languages';
if (!is_dir($languages_dir)) {
return;
}
$files = scandir($languages_dir);
foreach ($files as $file) {
if (preg_match('/\.mo$|\.po$/', $file)) {
// Проверяем, содержит ли имя файла текущий язык
if (strpos($file, $current_locale) === false) {
$file_path = $languages_dir . '/' . $file;
@unlink($file_path); // Удаляем файл
}
}
}
}
Эту функцию можно запускать вручную через админ-панель, wp-cli или добавить в отдельный файл плагина для периодической очистки. Обратите внимание, что функция удалит все языковые файлы, которые не совпадают с текущей локалью, так что используйте её с осторожностью и после резервного копирования.
Плагины для управления языковыми файлами
Кроме ручного и программного удаления, существуют плагины для удобного управления языковыми файлами:
- Clean Up Translations — как уже упомянуто, помогает выявить и удалить неиспользуемые языковые файлы.
- Clearfy Pro — многофункциональный плагин оптимизации, который умеет удалять лишние языковые файлы вместе с другими ненужными элементами сайта. Подробнее — на wpshop.ru.
Использование плагинов удобно, если вы не хотите рисковать и предпочитаете графический интерфейс.
Учет переводов плагинов и тем: дополнительные советы
При удалении языковых файлов плагинов и тем учитывайте, что некоторые из них могут подгружать переводы в динамическом режиме, например, через API. Если вы удалите файлы перевода, интерфейс может отображаться на английском или языке по умолчанию.
Поэтому перед удалением проверьте, какие языки нужны для плагинов и тем, которые вы используете. Можно сделать отдельный список исключений и не удалять языковые файлы для них.
Также полезно использовать фильтры WordPress для контроля загрузки языковых файлов. Например, с помощью фильтра load_textdomain_mofile можно программно отключить загрузку ненужных локалей.
Пример использования фильтра для блокировки загрузки языков
Ниже пример, который запрещает загрузку языковых файлов, если они не совпадают с текущей локалью сайта:
add_filter('load_textdomain_mofile', function($mofile, $domain) {
$current_locale = determine_locale();
if (strpos($mofile, $current_locale) === false) {
return false; // Отключаем загрузку
}
return $mofile;
}, 10, 2);
Этот код можно добавить в файл functions.php вашей темы или в кастомный плагин. Он не удаляет файлы с сервера, но предотвращает их загрузку, что тоже помогает оптимизировать работу сайта.
Итоговые рекомендации
- Всегда делайте резервные копии перед удалением языковых файлов.
- Определяйте текущие и нужные языки сайта и плагинов, чтобы не удалить важные переводы.
- Используйте ручное удаление для точечного контроля и плагины для удобства.
- Автоматизируйте очистку с помощью кода, но тщательно тестируйте изменения.
- Используйте фильтры WordPress для контроля загрузки языковых файлов.
Такой подход позволит держать ваш WordPress-сайт чистым, быстрым и оптимизированным с точки зрения языковых ресурсов.