Просто столкнулся с этой же проблемой сегодня и исследовал ее немного больше. Крис выше имеет хороший комментарий, но в конечном итоге он неверен. Вам не нужно использовать Drupal.behaviors для его работы.
Как отметил сам JonMcL в своем последнем комментарии, функция _locale_parse_js_file в locale.inc отвечает за синтаксический анализ шаблонов Drupal.t ("somestring"), начиная со строки 1493 (в Drupal 7.22):
preg_match_all('~
[^\w]Drupal\s*\.\s*t\s* # match "Drupal.t" with whitespace
\(\s* # match "(" argument list start
(' . LOCALE_JS_STRING . ')\s* # capture string argument
(?:,\s*' . LOCALE_JS_OBJECT . '\s* # optionally capture str args
(?:,\s*' . LOCALE_JS_OBJECT_CONTEXT . '\s*) # optionally capture context
?)? # close optional args
[,\)] # match ")" or "," to finish
~sx', $file, $t_matches);
Это просто «тупая» функция анализа, которая не заботится о семантике и просто находит все экземпляры Drupal.t («что-то») в любом файле, который она получает.
Что может быть распространенным недостатком, так это то, что вам нужно иметь всю строку в вашем исходном коде в форме Drupal.t ("translateme"), потому что (очевидно) никакой javascript не выполняется, когда файл открывается через file_get_contents в php. Это означает, что вы никогда не сможете использовать Drupal.t (somevariable) и надеяться, что Drupal перехватит все строковые переменные javascript, которые вы выбросили в Drupal.t.
Если вы хотите перевести «женщины» для диаграммы и дать строку контекст, синтаксис будет следующим:
Drupal.t("women", {}, {context: "charts"}
Также, если у вас установлен drush, проверьте, что ваш js-файл анализируется с помощью команды;
drush vget javascript_parsed
Затем вы можете очистить кэш
drush cc all
... и повторите приведенную выше команду vget, чтобы убедиться, что список уже проанализированных файлов пуст. Таким образом, ваш файл будет обработан при следующем запуске (проверьте это тоже).