uc_order_mail() looks at its $message argument to determine the language for the mail, which is calculated by uc_store_mail_recipient_language($recipient) in uc_order_mail_invoice_form_submit(). This language is correctly used to translate the e-mail subject.
The body of the e-mail, the invoice itself, is not translated correctly though, but is sent in the current language (i.e. the language the site was in at the time the mail is sent).
To fix this, uc_order_load_invoice(), when called from uc_order_mail(), should also get the $langcode and translate the invoice template accordingly.
PASSED: [[SimpleTest]]: [MySQL] 2,115 pass(es).
FAILED: [[SimpleTest]]: [MySQL] Invalid patch format in ubercart-order_mail_respects_user_preferred_language-622388-11.patch.
FAILED: [[SimpleTest]]: [MySQL] Unable to apply patch invoice_recipient_language-622388-1.patch.