Щойно я натрапив на цю саму проблему сьогодні і вивчив її трохи більше. У Кріса вище хороший коментар, але в кінцевому рахунку це неправильно. Для роботи не потрібно використовувати 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 ("щось") у будь-якому отриманому файлі.
Що може бути загальним gotcha, це те, що вам потрібно мати всю рядок у вихідному коді у формі Drupal.t ("translateme"), тому що (очевидно) жоден JavaScript не виконується, коли файл відкривається через file_get_contents у php. Це означає, що ви ніколи не можете робити Drupal.t (кілька змінних) і сподіваєтесь, що Drupal знайде всі змінні JavaScript-змінні, які ви кинете на Drupal.t.
Якщо ви хочете перекласти "жінки" для діаграми і дати рядку контекст, синтаксис буде таким:
Drupal.t("women", {}, {context: "charts"}
Крім того, якщо у вас встановлено барабан, перевірте, чи ваш файл js розібраний за допомогою команди;
drush vget javascript_parsed
Тоді ви можете очистити кеш
drush cc all
... і повторіть команду vget вище, щоб переконатися, що список вже проаналізованих файлів порожній. Таким чином ваш наступний запуск файлу буде переобрано (переконайтеся і в цьому).