Ho appena incontrato questo stesso problema oggi e ho studiato un po 'di più. Chris sopra ha un buon commento, ma alla fine non è corretto. Non è necessario utilizzare Drupal.behaviors perché funzioni.
Come notato dallo stesso JonMcL nel suo ultimo commento, la funzione _locale_parse_js_file in locale.inc è responsabile dell'analisi dei pattern di Drupal.t ("somestring") a partire dalla riga 1493 (in 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);
È solo una funzione di analisi "stupida" che non si preoccupa della semantica e trova semplicemente tutte le istanze di Drupal.t ("qualcosa") in qualsiasi file che riceve.
Quello che potrebbe essere un gotcha comune è che devi avere l'intera stringa nel tuo codice sorgente nel modulo Drupal.t ("translateme"), perché (ovviamente) nessun javascript viene eseguito quando il file viene aperto tramite file_get_contents in php. Ciò significa che non puoi mai eseguire Drupal.t (in alcuni casi) e sperare che Drupal rilevi tutte le variabili javascript contenenti stringhe che passi a Drupal.t.
Se vuoi tradurre "donne" per un grafico e dare un contesto alla stringa, la sintassi sarebbe:
Drupal.t("women", {}, {context: "charts"}
Inoltre, se hai installato drush, verifica che il tuo file js sia analizzato con il comando;
drush vget javascript_parsed
Quindi puoi pulire la cache con
drush cc all
... e ripeti il comando vget sopra per verificare che l'elenco dei file già analizzati sia vuoto. In questo modo il tuo file verrà replicato alla prossima esecuzione (verifica anche quello).