diff --git a/commerce.module b/commerce.module
index 2494da9..63ee6f0 100644
--- a/commerce.module
+++ b/commerce.module
@@ -384,6 +384,53 @@ function commerce_email_from() {
 }
 
 /**
+ * Implements hook_i18n_string_info().
+ */
+function commerce_i18n_string_info() {
+  $groups['commerce'] = array(
+    'title' => t('Drupal Commerce'),
+    'format' => TRUE,
+  );
+  return $groups;
+}
+
+/**
+ * Helper for using i18n_string().
+ *
+ * @param $name
+ *   Textgroup and context glued with ':'.
+ * @param $default
+ *   String in default language. Default language may or may not be English.
+ * @param $options
+ *   An associative array of additional options, with the following keys:
+ *   - 'langcode' (defaults to the current language) The language code to translate to a language other than what is used to display the page.
+ *   - 'filter' Filtering callback to apply to the translated string only
+ *   - 'format' Input format to apply to the translated string only
+ *   - 'callback' Callback to apply to the result (both to translated or untranslated string
+ *   - 'update' (defaults to FALSE) Whether to update source table
+ *   - 'translate' (defaults to TRUE) Whether to return a translation
+ *
+ * @see i18n_string()
+ */
+function commerce_i18n_string($name, $default, $options = array()) {
+  if (function_exists('i18n_string')) {
+    $result = i18n_string($name, $default, $options);
+  }
+  else {
+    $result = $default;
+    $options += array(
+      'format' => NULL,
+      'sanitize' => FALSE,
+    );
+    if ($options['sanitize']) {
+      $result = check_markup($default, $options['format']);
+    }
+  }
+
+  return $result;
+}
+
+/**
  * Returns the currency code of the site's default currency.
  */
 function commerce_default_currency() {
diff --git a/modules/checkout/commerce_checkout.module b/modules/checkout/commerce_checkout.module
index 8e97c1d..cd88168 100644
--- a/modules/checkout/commerce_checkout.module
+++ b/modules/checkout/commerce_checkout.module
@@ -172,6 +172,22 @@ function commerce_checkout_theme() {
 }
 
 /**
+ * Implements hook_i18n_string_list().
+ */
+function commerce_checkout_i18n_string_list($group) {
+  if ($group == 'commerce') {
+    // Allow the checkout completion message to be translated.
+    $message = commerce_checkout_completion_message_default();
+    if (variable_get('commerce_checkout_completion_message_override', FALSE)) {
+      $message = variable_get('commerce_checkout_completion_message', commerce_checkout_completion_message_default());
+    }
+    $strings['commerce']['checkout']['complete']['message'] = $message['value'];
+
+    return $strings;
+  }
+}
+
+/**
  * Implements hook_forms().
  *
  * Each page of the checkout form is actually a unique form as opposed to a
@@ -889,10 +905,14 @@ function commerce_checkout_create_account($name, $mail, $pass, $status, $notify
  */
 function commerce_checkout_completion_message_default() {
   if (filter_format_load('filtered_html')) {
-    return t('Your order is number [commerce-order:order-number]. You can <a href="[commerce-order:url]">view your order</a> on your account page when logged in.')
-      . "\n\n" . t('<a href="[site:url]">Return to the front page.</a>');
+    $value = 'Your order is number [commerce-order:order-number]. You can <a href="[commerce-order:url]">view your order</a> on your account page when logged in.'
+      . "\n\n" . '<a href="[site:url]">Return to the front page.</a>';
+    $format = 'filtered_html';
   }
   else {
-    return t('Your order is number [commerce-order:order-number]. You can view your order on your account page when logged in.');
+    $value = 'Your order is number [commerce-order:order-number]. You can view your order on your account page when logged in.';
+    $format = filter_fallback_format();
   }
+
+  return array('value' => $value, 'format' => $format);
 }
diff --git a/modules/checkout/includes/commerce_checkout.checkout_pane.inc b/modules/checkout/includes/commerce_checkout.checkout_pane.inc
index aee7534..3429e07 100644
--- a/modules/checkout/includes/commerce_checkout.checkout_pane.inc
+++ b/modules/checkout/includes/commerce_checkout.checkout_pane.inc
@@ -53,37 +53,20 @@ function commerce_checkout_review_pane_checkout_form($form, &$form_state, $check
  * completion message.
  */
 function commerce_checkout_completion_message_pane_settings_form($checkout_pane) {
-  $form = array();
-
-  // Find our default message and text format values.
-  if (!is_null(variable_get('commerce_checkout_completion_message', NULL))) {
-    $data = variable_get('commerce_checkout_completion_message', commerce_checkout_completion_message_default());
-
-    $message = $data['value'];
-    $text_format = $data['format'];
-  }
-  else {
-    $message = commerce_checkout_completion_message_default();
-
-    if (filter_format_load('filtered_html')) {
-      $text_format = 'filtered_html';
-    }
-    else {
-      $text_format = filter_fallback_format();
-    }
-  }
+  $message = variable_get('commerce_checkout_completion_message', commerce_checkout_completion_message_default());
 
+  $form = array();
   $form['commerce_checkout_completion_message_override'] = array(
     '#type' => 'checkbox',
-    '#title' => t('Override the default checkout completion message. This may interfere with translation on multilingual sites.'),
+    '#title' => t('Override the default checkout completion message.'),
     '#default_value' => variable_get('commerce_checkout_completion_message_override', FALSE),
-    '#access' => filter_access(filter_format_load($text_format)),
+    '#access' => filter_access(filter_format_load($message['format'])),
   );
 
   // Use a container to hide completion message settings unless overriden.
   $form['container'] = array(
     '#type' => 'container',
-    '#access' => filter_access(filter_format_load($text_format)),
+    '#access' => filter_access(filter_format_load($message['format'])),
     '#states' => array(
       'visible' => array(
         ':input[name="commerce_checkout_completion_message_override"]' => array('checked' => TRUE),
@@ -94,8 +77,8 @@ function commerce_checkout_completion_message_pane_settings_form($checkout_pane)
   $form['container']['commerce_checkout_completion_message'] = array(
     '#type' => 'text_format',
     '#title' => t('Checkout completion message'),
-    '#default_value' => $message,
-    '#format' => $text_format,
+    '#default_value' => $message['value'],
+    '#format' => $message['format'],
   );
 
   $var_info = array(
@@ -121,32 +104,20 @@ function commerce_checkout_completion_message_pane_settings_form($checkout_pane)
 function commerce_checkout_completion_message_pane_checkout_form($form, &$form_state, $checkout_pane, $order) {
   $pane_form = array();
 
-  // Load the appropriate default completion message.
+  // Load the appropriate completion message.
+  $message = commerce_checkout_completion_message_default();
   if (variable_get('commerce_checkout_completion_message_override', FALSE)) {
-    $data = variable_get('commerce_checkout_completion_message', commerce_checkout_completion_message_default());
-
-    $message = $data['value'];
-    $text_format = $data['format'];
+    $message = variable_get('commerce_checkout_completion_message', commerce_checkout_completion_message_default());
   }
-  else {
-    $message = commerce_checkout_completion_message_default();
 
-    if (filter_format_load('filtered_html')) {
-      $text_format = 'filtered_html';
-    }
-    else {
-      $text_format = filter_fallback_format();
-    }
-  }
+  // Perform translation and apply the proper text format.
+  $message['value'] = commerce_i18n_string('commerce:checkout:complete:message', $message['value'], array('format' => $message['format']));
 
   // Perform token replacement.
-  $message = token_replace($message, array('commerce-order' => $order), array('clear' => TRUE));
-
-  // Apply the proper text format.
-  $message = check_markup($message, $text_format);
+  $message['value'] = token_replace($message['value'], array('commerce-order' => $order), array('clear' => TRUE));
 
   $pane_form['message'] = array(
-    '#markup' => '<div class="checkout-completion-message">' . $message . '</div>',
+    '#markup' => '<div class="checkout-completion-message">' . $message['value'] . '</div>',
   );
 
   return $pane_form;
