Je suis juste tombé sur ce même problème aujourd'hui et je l'ai étudié un peu plus. Chris ci-dessus a un bon commentaire, mais il est finalement incorrect. Vous n'avez pas besoin d'utiliser Drupal.behaviors pour que cela fonctionne.
Comme indiqué par JonMcL lui-même dans son dernier commentaire, la fonction _locale_parse_js_file dans locale.inc est responsable de l'analyse des modèles Drupal.t ("somestring") à partir de la ligne 1493 (dans 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);
C'est juste une fonction d'analyse "stupide" qui ne se soucie pas de la sémantique et trouve simplement toutes les instances de Drupal.t ("quelque chose") dans n'importe quel fichier qu'il reçoit.
Ce qui pourrait être un piège commun, c'est que vous devez avoir toute la chaîne dans votre code source sous la forme Drupal.t ("translateme"), car (évidemment) aucun javascript n'est exécuté lorsque le fichier est ouvert via file_get_contents en php. Cela signifie que vous ne pouvez jamais faire Drupal.t (une variable) et espérons que Drupal interceptera toutes les variables javascript contenant des chaînes que vous lancez sur Drupal.t.
Si vous souhaitez traduire "femmes" pour un graphique et donner un contexte à la chaîne, la syntaxe serait:
Drupal.t("women", {}, {context: "charts"}
De plus, si vous avez installé drush, vérifiez que votre fichier js est analysé avec la commande;
drush vget javascript_parsed
Ensuite, vous pouvez nettoyer votre cache avec
drush cc all
... et répétez la commande vget ci-dessus pour vérifier que la liste des fichiers déjà analysés est vide. De cette façon, votre fichier sera analysé lors de la prochaine exécution (vérifiez également).