Just ran into this same issue today and researched it a bit more. Chris above has a good comment, but it's ultimately incorrect. You do not need to use Drupal.behaviors for it to work.
As noted by JonMcL himself in his last comment, the function _locale_parse_js_file in locale.inc is responsible for the parsing of Drupal.t("somestring") patterns starting from row 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);
It's just a "dumb" parsing function that doesn't care about semantics and simply finds all instances of Drupal.t("something") in any file it receives.
What could be a common gotcha is that you need to have the whole string in your source code in the Drupal.t("translateme") form, because (obviously) no javascript gets executed when the file is opened through file_get_contents in php. That means you can never do Drupal.t(somevariable) and hope Drupal will catch all string-containing javascript variables that you throw at Drupal.t.
If you want to translate "women" for a chart and give the string a context, the syntax would be:
Drupal.t("women", {}, {context: "charts"}
Also, if you have drush installed, verify your js file is parsed with the command;
drush vget javascript_parsed
Then you can clean your cache with
drush cc all
... and repeat the vget command above to verify the list of already parsed files is empty. This way your file will get reparsed next run (verify that too).