diff --git a/uc_order/templates/uc_order-admin.tpl.php b/uc_order/templates/uc_order-admin.tpl.php
index 0d10c3f..9675c96 100644
--- a/uc_order/templates/uc_order-admin.tpl.php
+++ b/uc_order/templates/uc_order-admin.tpl.php
@@ -7,14 +7,14 @@
 ?>
 
 <p>
-<?php echo t('Order number:'); ?> <?php echo $order_admin_link; ?><br />
-<?php echo t('Customer:'); ?> <?php echo $order_first_name; ?> <?php echo $order_last_name; ?> - <?php echo $order_email; ?><br />
-<?php echo t('Order total:'); ?> <?php echo $order_total; ?><br />
-<?php echo t('Shipping method:'); ?> <?php echo $order_shipping_method; ?>
+<?php echo t('Order number:', array(), $langcode); ?> <?php echo $order_admin_link; ?><br />
+<?php echo t('Customer:', array(), $langcode); ?> <?php echo $order_first_name; ?> <?php echo $order_last_name; ?> - <?php echo $order_email; ?><br />
+<?php echo t('Order total:', array(), $langcode); ?> <?php echo $order_total; ?><br />
+<?php echo t('Shipping method:', array(), $langcode); ?> <?php echo $order_shipping_method; ?>
 </p>
 
 <p>
-<?php echo t('Products:'); ?><br />
+<?php echo t('Products:', array(), $langcode); ?><br />
 <?php
 $context = array(
   'revision' => 'themed',
@@ -31,10 +31,10 @@ foreach ($products as $product) {
   $context['subject']['order_product'] = $product;
 ?>
 - <?php echo $product->qty; ?> x <?php echo $product->title .' - '. uc_price($price_info, $context); ?><br />
-&nbsp;&nbsp;<?php echo t('SKU: ') . $product->model; ?><br />
+&nbsp;&nbsp;<?php echo t('SKU: ', array(), $langcode) . $product->model; ?><br />
     <?php if (isset($product->data['attributes']) && is_array($product->data['attributes']) && count($product->data['attributes']) > 0) {?>
     <?php foreach ($product->data['attributes'] as $attribute => $option) {
-      echo '&nbsp;&nbsp;'. t('@attribute: @options', array('@attribute' => $attribute, '@options' => implode(', ', (array)$option))) .'<br />';
+      echo '&nbsp;&nbsp;'. t('@attribute: @options', array('@attribute' => $attribute, '@options' => implode(', ', (array)$option)), $langcode) .'<br />';
     } ?>
     <?php } ?>
 <br />
@@ -42,6 +42,6 @@ foreach ($products as $product) {
 </p>
 
 <p>
-<?php echo t('Order comments:'); ?><br />
+<?php echo t('Order comments:', array(), $langcode); ?><br />
 <?php echo $order_comments; ?>
 </p>
diff --git a/uc_order/templates/uc_order-customer.tpl.php b/uc_order/templates/uc_order-customer.tpl.php
index c052642..4756050 100644
--- a/uc_order/templates/uc_order-customer.tpl.php
+++ b/uc_order/templates/uc_order-customer.tpl.php
@@ -37,15 +37,15 @@
           <td>
 
             <?php if ($thank_you_message) { ?>
-            <p><b><?php echo t('Thanks for your order, !order_first_name!', array('!order_first_name' => $order_first_name)); ?></b></p>
+            <p><b><?php echo t('Thanks for your order, !order_first_name!', array('!order_first_name' => $order_first_name), $langcode); ?></b></p>
 
             <?php if (isset($_SESSION['new_user'])) { ?>
-            <p><b><?php echo t('An account has been created for you with the following details:'); ?></b></p>
-            <p><b><?php echo t('Username:'); ?></b> <?php echo $new_username; ?><br />
-            <b><?php echo t('Password:'); ?></b> <?php echo $new_password; ?></p>
+            <p><b><?php echo t('An account has been created for you with the following details:', array(), $langcode); ?></b></p>
+            <p><b><?php echo t('Username:', array(), $langcode); ?></b> <?php echo $new_username; ?><br />
+            <b><?php echo t('Password:', array(), $langcode); ?></b> <?php echo $new_password; ?></p>
             <?php } ?>
 
-            <p><b><?php echo t('Want to manage your order online?'); ?></b><br />
+            <p><b><?php echo t('Want to manage your order online?', array(), $langcode); ?></b><br />
             <?php echo t('If you need to check the status of your order, please visit our home page at !store_link and click on "My account" in the menu or login with the following link:', array('!store_link' => $store_link)); ?>
             <br /><br /><?php echo $site_login; ?></p>
             <?php } ?>
@@ -53,12 +53,12 @@
             <table cellpadding="4" cellspacing="0" border="0" width="100%" style="font-family: verdana, arial, helvetica; font-size: small;">
               <tr>
                 <td colspan="2" bgcolor="#006699" style="color: white;">
-                  <b><?php echo t('Purchasing Information:'); ?></b>
+                  <b><?php echo t('Purchasing Information:', array(), $langcode); ?></b>
                 </td>
               </tr>
               <tr>
                 <td nowrap="nowrap">
-                  <b><?php echo t('E-mail Address:'); ?></b>
+                  <b><?php echo t('E-mail Address:', array(), $langcode); ?></b>
                 </td>
                 <td width="98%">
                   <?php echo $order_email; ?>
@@ -70,18 +70,18 @@
                   <table width="100%" cellspacing="0" cellpadding="0" style="font-family: verdana, arial, helvetica; font-size: small;">
                     <tr>
                       <td valign="top" width="50%">
-                        <b><?php echo t('Billing Address:'); ?></b><br />
+                        <b><?php echo t('Billing Address:', array(), $langcode); ?></b><br />
                         <?php echo $order_billing_address; ?><br />
                         <br />
-                        <b><?php echo t('Billing Phone:'); ?></b><br />
+                        <b><?php echo t('Billing Phone:', array(), $langcode); ?></b><br />
                         <?php echo $order_billing_phone; ?><br />
                       </td>
                       <?php if (uc_order_is_shippable($order)) { ?>
                       <td valign="top" width="50%">
-                        <b><?php echo t('Shipping Address:'); ?></b><br />
+                        <b><?php echo t('Shipping Address:', array(), $langcode); ?></b><br />
                         <?php echo $order_shipping_address; ?><br />
                         <br />
-                        <b><?php echo t('Shipping Phone:'); ?></b><br />
+                        <b><?php echo t('Shipping Phone:', array(), $langcode); ?></b><br />
                         <?php echo $order_shipping_phone; ?><br />
                       </td>
                       <?php } ?>
@@ -92,7 +92,7 @@
               </tr>
               <tr>
                 <td nowrap="nowrap">
-                  <b><?php echo t('Order Grand Total:'); ?></b>
+                  <b><?php echo t('Order Grand Total:', array(), $langcode); ?></b>
                 </td>
                 <td width="98%">
                   <b><?php echo $order_total; ?></b>
@@ -100,7 +100,7 @@
               </tr>
               <tr>
                 <td nowrap="nowrap">
-                  <b><?php echo t('Payment Method:'); ?></b>
+                  <b><?php echo t('Payment Method:', array(), $langcode); ?></b>
                 </td>
                 <td width="98%">
                   <?php echo $order_payment_method; ?>
@@ -109,14 +109,14 @@
 
               <tr>
                 <td colspan="2" bgcolor="#006699" style="color: white;">
-                  <b><?php echo t('Order Summary:'); ?></b>
+                  <b><?php echo t('Order Summary:', array(), $langcode); ?></b>
                 </td>
               </tr>
 
               <?php if (uc_order_is_shippable($order)) { ?>
               <tr>
                 <td colspan="2" bgcolor="#EEEEEE">
-                  <font color="#CC6600"><b><?php echo t('Shipping Details:'); ?></b></font>
+                  <font color="#CC6600"><b><?php echo t('Shipping Details:', array(), $langcode); ?></b></font>
                 </td>
               </tr>
               <?php } ?>
@@ -127,7 +127,7 @@
                   <table border="0" cellpadding="1" cellspacing="0" width="100%" style="font-family: verdana, arial, helvetica; font-size: small;">
                     <tr>
                       <td nowrap="nowrap">
-                        <b><?php echo t('Order #:'); ?></b>
+                        <b><?php echo t('Order #:', array(), $langcode); ?></b>
                       </td>
                       <td width="98%">
                         <?php echo $order_link; ?>
@@ -136,7 +136,7 @@
 
                     <tr>
                       <td nowrap="nowrap">
-                        <b><?php echo t('Order Date: '); ?></b>
+                        <b><?php echo t('Order Date: ', array(), $langcode); ?></b>
                       </td>
                       <td width="98%">
                         <?php echo $order_date_created; ?>
@@ -146,7 +146,7 @@
                     <?php if ($shipping_method && uc_order_is_shippable($order)) { ?>
                     <tr>
                       <td nowrap="nowrap">
-                        <b><?php echo t('Shipping Method:'); ?></b>
+                        <b><?php echo t('Shipping Method:', array(), $langcode); ?></b>
                       </td>
                       <td width="98%">
                         <?php echo $order_shipping_method; ?>
@@ -156,7 +156,7 @@
 
                     <tr>
                       <td nowrap="nowrap">
-                        <?php echo t('Products Subtotal:'); ?>&nbsp;
+                        <?php echo t('Products Subtotal:', array(), $langcode); ?>&nbsp;
                       </td>
                       <td width="98%">
                         <?php echo $order_subtotal; ?>
@@ -197,7 +197,7 @@
 
                     <tr>
                       <td nowrap="nowrap">
-                        <b><?php echo t('Total for this Order:'); ?>&nbsp;</b>
+                        <b><?php echo t('Total for this Order:', array(), $langcode); ?>&nbsp;</b>
                       </td>
                       <td>
                         <b><?php echo $order_total; ?></b>
@@ -206,7 +206,7 @@
 
                     <tr>
                       <td colspan="2">
-                        <br /><br /><b><?php echo t('Products on order:'); ?>&nbsp;</b>
+                        <br /><br /><b><?php echo t('Products on order:', array(), $langcode); ?>&nbsp;</b>
 
                         <table width="100%" style="font-family: verdana, arial, helvetica; font-size: small;">
 
@@ -234,10 +234,10 @@
                               <b><?php echo $product->title .' - '. uc_price($price_info, $context); ?></b>
                               <?php if ($product->qty > 1) {
                                 $price_info['qty'] = 1;
-                                echo t('(!price each)', array('!price' => uc_price($price_info, $context)));
+                                echo t('(!price each)', array('!price' => uc_price($price_info, $context)), $langcode);
                               } ?>
                               <br />
-                              <?php echo t('SKU: ') . $product->model; ?><br />
+                              <?php echo t('SKU: ', array(), $langcode) . $product->model; ?><br />
                               <?php if (isset($product->data['attributes']) && is_array($product->data['attributes']) && count($product->data['attributes']) > 0) {?>
                               <?php foreach ($product->data['attributes'] as $attribute => $option) {
                                 echo '<li>'. t('@attribute: @options', array('@attribute' => $attribute, '@options' => implode(', ', (array)$option))) .'</li>';
@@ -263,15 +263,15 @@
                   <hr noshade="noshade" size="1" /><br />
 
                   <?php if ($help_text) { ?>
-                  <p><b><?php echo t('Where can I get help with reviewing my order?'); ?></b><br />
+                  <p><b><?php echo t('Where can I get help with reviewing my order?', array(), $langcode); ?></b><br />
                   <?php echo t('To learn more about managing your orders on !store_link, please visit our <a href="!store_help_url">help page</a>.', array('!store_link' => $store_link, '!store_help_url' => $store_help_url)); ?>
                   <br /></p>
                   <?php } ?>
 
                   <?php if ($email_text) { ?>
-                  <p><?php echo t('Please note: This e-mail message is an automated notification. Please do not reply to this message.'); ?></p>
+                  <p><?php echo t('Please note: This e-mail message is an automated notification. Please do not reply to this message.', array(), $langcode); ?></p>
 
-                  <p><?php echo t('Thanks again for shopping with us.'); ?></p>
+                  <p><?php echo t('Thanks again for shopping with us.', array(), $langcode); ?></p>
                   <?php } ?>
 
                   <?php if ($store_footer) { ?>
diff --git a/uc_order/uc_order.ca.inc b/uc_order/uc_order.ca.inc
index 7ce5aa0..a2e2ae9 100644
--- a/uc_order/uc_order.ca.inc
+++ b/uc_order/uc_order.ca.inc
@@ -1259,15 +1259,37 @@ function uc_order_action_email_invoice($order, $settings) {
     $recipients[] = trim($address);
   }
 
-  $settings['message'] = theme('uc_order', $order, $settings['view'], $settings['template']);
-
   if (empty($recipients)) {
     watchdog('ca', 'Attempted to e-mail an invoice with no recipient.', array(), WATCHDOG_ERROR);
     return;
   }
+  
+  // Determine which languages we will need to generate the invoice template for
+  $languages = array();
+  foreach ($recipients as $email) {
+    $preferred = uc_store_mail_recipient_language($email);
+    $langcode = $preferred->language;
+    if (!in_array($langcode, $languages)) {
+      $languages[] = $langcode;
+    }
+  }
+  
+  // Generate the template and store it to avoid generating a template for the same language twice
+  // We provide the extra argument $langcode to theme() so that the templates can use it
+  $message_translations = array();
+  $subject_translations = array();
+  foreach ($languages as $langcode) {
+    $subject_translations[$langcode] = t($settings['subject'], array(), $langcode);
+    $message_translations[$langcode] = theme('uc_order', $order, $settings['view'], $settings['template'], $langcode);
+  }
 
+  // Fire them off
   foreach ($recipients as $email) {
-    $sent = drupal_mail('uc_order', 'action-mail', $email, uc_store_mail_recipient_language($email), $settings, empty($settings['from']) ? uc_store_email_from() : $settings['from']);
+    $preferred_language = uc_store_mail_recipient_language($email);
+    $settings['subject'] = $subject_translations[$preferred_language->language];
+    $settings['message'] = $message_translations[$preferred_language->language];
+    
+    $sent = drupal_mail('uc_order', 'action-mail', $email, $preferred_language, $settings, empty($settings['from']) ? uc_store_email_from() : $settings['from']);
 
     if (!$sent['result']) {
       watchdog('ca', 'Attempt to e-mail invoice for order @order_id to @email failed.', array('@email' => $email, '@order_id' => $order->order_id), WATCHDOG_ERROR);
diff --git a/uc_order/uc_order.module b/uc_order/uc_order.module
index 2c5a71b..b433a03 100644
--- a/uc_order/uc_order.module
+++ b/uc_order/uc_order.module
@@ -323,6 +323,7 @@ function uc_order_theme() {
         'order' => NULL,
         'op' => 'view',
         'template' => 'customer',
+        'langcode' => NULL,
         'thank_you_message' => FALSE,
         'help_text' => FALSE,
         'email_text' => FALSE,
