Как правильно делать перевод JS в Drupal

Матеріал з Wiki.Zina
Перейти до навігації Перейти до пошуку

Переводы могут добавлятся только в js файлы подключенные через вызов drupal_add_js

Перевод добавляется только прямым вызовом Drupal.t в произвольном месте кода

правильно так

Drupal.t('title');
Drupal.t('texture');

неправильно

var t = Drupal.t;
t('title');
t('texture');

Сбрость кеш если стоит модуль admin_menu Flush-all-caches -> Css and javascript

или drush cc css-js

на крайний через Configuration -> perfomance -> clear all caches /admin/config/development/performance

при очистке кеша удалится переменная javascript_parsed variable_del('javascript_parsed') что приведет к парсингу js файлов

Зайти на страницу где подключается js с переводами

Как работает внутри

[ред. | ред. код]
  • drupal_add_js добавляет файлы в массив $javascript = &drupal_static('drupal_add_js', array());
  • при рендеринге страницы вызывается drupal_get_js в котором вызывается hook_js_alter
  • в locale_js_alter проверяется есть ли файл в variable_get('javascript_parsed', array())
  • если нет то файл отдается на парсинг _locale_parse_js_file функция регулярками формирует строки для перевода и добавляет их в БД (таблица locale_source)
  • если появилось что то новое пересобирается файл с переводами sites/add/languages/ru{hash} в _locale_rebuild_js;
  • при вызове Drupal.t строка берется из файла с переводами и подставляются аргументы.