Что делает l10n.js в WordPress 3.1 и как его удалить?
Я только что установил WP 3.1 Beta 2 на тестовый сервер. Заметил, что теперь в комплекте идет новый файл l10n.js
, который автоматически добавляется в заголовок.
Немного покопался и выяснил, что он связан с локализацией. Полагаю, многим этот файл не нужен, поэтому интересуюсь - как его можно убрать?
Если его удаление может вызвать проблемы, пожалуйста, сообщите об этом.

Он содержит функцию convertEntities()
, которая (как следует из названия) преобразует HTML-сущности в их реальные значения. В основном она используется для скриптов, которые передают данные локализации из PHP в JavaScript с помощью wp_localize_script()
. Просто найдите l10n_print_after
в кодовой базе, и вы увидите, что она используется очень часто.
Данные, которые вы добавляете в wp_localize_script()
, добавляются перед скриптом, который они переводят (это необходимо, потому что они на него ссылаются). Однако, если вы используете скрипт-конкатенатор (чтобы сделать только один запрос, который возвращает все используемые JS-файлы), этот файл также будет вызываться после всех локализованных данных — но теперь функция convertEntities()
не определена, когда она нам нужна. По этой причине данная функция вынесена из общего файла utils.js
и добавлена с высоким приоритетом в начало.
По этой причине не следует удалять её: все скрипты, использующие переводимые строки, используют её (даже если они всё ещё на английском), и вы можете сломать места, где остались HTML-сущности.

Спасибо за такое подробное объяснение! :) Однако у меня остались некоторые вопросы. Моя главная проблема заключается в добавлении еще одного ненужного запроса для каждого пользователя на фронтенде. Единственный JS, который видят пользователи — это мой простой scripts.js
и jquery
. Меня не беспокоит локализация в админке WordPress, но сайт, над которым я работаю, получает огромный трафик, и я очень требователен к оптимизации. Кто-то упомянул, что причиной может быть панель администратора, но авторов на сайте всего несколько. Мне не важно, если это повлияет на них, но я не хочу, чтобы это замедляло работу остальной части сайта. Что вы посоветуете сделать?

Похоже, что wp_register_script
вызывает загрузку l10n.js
, даже если у меня НОЛЬ .js
файлов в очереди. Меня не беспокоит, если он загружается для авторов, у которых мало трафика, но он загружается на публичных страницах для обычных посетителей, даже если я не отдаю им javascript
. Даже если бы мне понадобился скрипт вроде jquery
, он не должен зависеть от utils.js
. По крайней мере, раньше на фронтенде такого не было.

Похоже, что он подключается при добавлении в очередь скрипта 'comment-reply'. Обратите внимание, что желательно убедиться, что 'comment-reply' загружается только на страницах, где могут быть включены комментарии (например, проверьте is_singular()
перед добавлением скрипта в очередь).

Хм, я не думаю, что это связано со скриптом comment-reply
. На моем тестовом сайте он вообще не подключен в данный момент. Это появляется на каждой странице сайта. Я даже вернулся к WP 3.0.3 для проверки, и проблема исчезла. Возвращается, если я запускаю новую бета-версию 3.1.

Я обнаружил, что в моей установке этот скрипт загружался вместе с новой панелью администратора, и удаление панели администратора также избавило меня от l10n.js (хотя я думаю, что ответ Яна более точно отвечает на вопрос "почему").
Удаление панели было просто...
remove_action( 'init', 'wp_admin_bar_init' );
Это на самом деле не отвечает на вопрос (как видно из других ответов), но если кто-то захочет убрать эту ужасную панель, выше приведён способ, как это сделать..

Хм, что-то еще в моем коде тоже вызывает это. Я создал очень простую тему только с header/footer/index/sidebar.php
, и это удаление действия решило проблему. Но в моей основной теме, даже если я удаляю все enqueue, скрипт все равно загружается. У меня ВООБЩЕ НЕТ JavaScript в head/footer WordPress, кроме Google Analytics, который встроен прямо в шаблон.

При включенной стандартной теме, без плагинов (или с минимумом), я не вижу НИКАКИХ скриптов на фронтенде, когда убираю админ-бар. Думаю, Jan предоставил важную информацию о том, когда и почему этот скрипт вызывается (я говорил только о его удалении и поделился тем, что сработало в моем случае).

Исходный код разработчиков для файла содержит следующее описание:
//Используется для проверки корректности Entities в строках L10N
и примечание к коммиту гласит:
Переносим вспомогательную функцию l10n в отдельный js-файл, чтобы можно было всегда выводить его первым.
Я ещё не работал с 3.1, поэтому не уверен, что заставляет его загружаться на каждой странице.
