Ich bin heute auf dasselbe Problem gestoßen und habe es ein bisschen genauer untersucht. Chris oben hat einen guten Kommentar, aber er ist letztendlich falsch. Sie müssen Drupal.behaviors nicht verwenden, damit es funktioniert.
Wie JonMcL selbst in seinem letzten Kommentar bemerkt hat, ist die Funktion _locale_parse_js_file in locale.inc für das Parsen von Drupal.t-Mustern ("somestring") ab Zeile 1493 (in Drupal 7.22) verantwortlich:
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);
Es ist nur eine "dumme" Analysefunktion, die sich nicht um die Semantik kümmert und einfach alle Instanzen von Drupal.t ("etwas") in jeder empfangenen Datei findet.
Ein häufiges Problem könnte sein, dass Sie die gesamte Zeichenfolge in Ihrem Quellcode im Formular Drupal.t ("translateme") haben müssen, da (offensichtlich) kein Javascript ausgeführt wird, wenn die Datei über file_get_contents in PHP geöffnet wird. Das bedeutet, dass Sie niemals Drupal.t (eine Variable) ausführen können und hoffen, dass Drupal alle Zeichenfolgen enthaltenden Javascript-Variablen abfängt, die Sie auf Drupal.t werfen.
Wenn Sie "Frauen" für ein Diagramm übersetzen und der Zeichenfolge einen Kontext geben möchten, lautet die Syntax:
Drupal.t("women", {}, {context: "charts"}
Wenn Sie drush installiert haben, überprüfen Sie außerdem, ob Ihre js-Datei mit dem Befehl analysiert wurde.
drush vget javascript_parsed
Dann können Sie Ihren Cache mit bereinigen
drush cc all
... und wiederholen Sie den obigen Befehl vget, um sicherzustellen, dass die Liste der bereits analysierten Dateien leer ist. Auf diese Weise wird Ihre Datei beim nächsten Lauf repariert (überprüfen Sie dies auch).