The language constants are loaded when application_top is run. And, since constants are, well, constant, they can't be altered during the same execution cycle.

Definitely that will pose problems for batched scripts like you're doing, where the language is not based on the visitor, but rather is constantly changing due to differences in your input data.

Unfortunately, changing that is a big architectural alteration.

Perhaps consider rewriting your cron job to accept a language parameter, and use that both to set the language id in the session and filter the db queries to just those orders which used that language? Then have additional cron jobs for the other languages you have on your site?