From 36f77a971e4c9e2bd9c37b7e72536bc92f903da5 Mon Sep 17 00:00:00 2001 From: jax Date: Mon, 15 Oct 2012 11:29:47 +0200 Subject: [PATCH 1/2] applied patch http://drupal.org/node/1480654#comment-5729730 to make flat rate shipping names translatable with the i18n_string module. --- commerce_flat_rate.i18n.inc | 33 +++++++++++++++++++++++++++++++++ commerce_flat_rate.module | 2 ++ includes/commerce_flat_rate.admin.inc | 9 +++++++++ 3 files changed, 44 insertions(+) create mode 100644 commerce_flat_rate.i18n.inc diff --git a/commerce_flat_rate.i18n.inc b/commerce_flat_rate.i18n.inc new file mode 100644 index 0000000..cb32224 --- /dev/null +++ b/commerce_flat_rate.i18n.inc @@ -0,0 +1,33 @@ + 'name', + 'class' => 'i18n_string_object_wrapper', + 'string translation' => array( + 'textgroup' => 'commerce_flat_rate', + 'type' => 'name', + 'properties' => array( + 'title' => t('Title'), + 'display_title' => t('Display title'), + ), + ), + ); + return $info; +} + +/** + * Implements hook_i18n_string_info(). + */ +function commerce_flat_rate_i18n_string_info() { + $groups['commerce_flat_rate'] = array( + 'title' => t('Commerce flat rate'), + 'description' => t("Commerce flate rate shipping services' titles and display titles."), + 'format' => FALSE, // This group doesn't have strings with format + 'list' => FALSE, // This group cannot list all strings + ); + return $groups; +} diff --git a/commerce_flat_rate.module b/commerce_flat_rate.module index 1dd8f6a..928c226 100644 --- a/commerce_flat_rate.module +++ b/commerce_flat_rate.module @@ -114,6 +114,7 @@ function commerce_flat_rate_commerce_shipping_method_info() { * Implements hook_commerce_shipping_service_info(). */ function commerce_flat_rate_commerce_shipping_service_info() { + global $language; $services = array(); // Look for flat rate services currently defined in the database. @@ -155,6 +156,7 @@ function commerce_flat_rate_commerce_shipping_service_info() { $base_rate['data'] = commerce_price_component_add($base_rate, $tax_rate['price_component'], $component, TRUE); } + $service = i18n_object('commerce_flat_rate', $service)->translate($language->language); // Add the full service array to our return value. $services[$name] = array( 'title' => $service['title'], diff --git a/includes/commerce_flat_rate.admin.inc b/includes/commerce_flat_rate.admin.inc index 40f18f2..b431385 100644 --- a/includes/commerce_flat_rate.admin.inc +++ b/includes/commerce_flat_rate.admin.inc @@ -218,6 +218,15 @@ function commerce_flat_rate_service_form_submit($form, &$form_state) { unset($shipping_service['base_rate']); $op = commerce_flat_rate_service_save($shipping_service); + if (module_exists('i18n_string')) { + $object = new stdclass; + $object->title = $shipping_service['title']; + $object->display_title = $shipping_service['display_title']; + // Prefix with shipping method machine name. + $object->name = $shipping_service['name']; + i18n_string_object_update('commerce_flat_rate', $object); + } + if (!$op) { drupal_set_message(t('The flat rate service failed to save properly. Please review the form and try again.'), 'error'); $form_state['rebuild'] = TRUE; -- 1.7.12.2 From 545d17eb65af65c010c772aa5fd96f542a76eddc Mon Sep 17 00:00:00 2001 From: Christian Spitzlay Date: Mon, 15 Oct 2012 17:26:30 +0200 Subject: [PATCH 2/2] - add a title - make description transatable - add a guard so translation only happens if i18n_string is active - add context to display title (disambiguation) - implement hook_i18n_string_objects so refreshing of strings will work (admin/config/regional/translate/i18n_string) - make sure the edit mode only uses the untranslated strings --- commerce_flat_rate.i18n.inc | 16 +++++++++++++++- commerce_flat_rate.module | 11 ++++++++++- includes/commerce_flat_rate.admin.inc | 9 +++++---- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/commerce_flat_rate.i18n.inc b/commerce_flat_rate.i18n.inc index cb32224..35738a3 100644 --- a/commerce_flat_rate.i18n.inc +++ b/commerce_flat_rate.i18n.inc @@ -5,6 +5,7 @@ */ function commerce_flat_rate_i18n_object_info() { $info['commerce_flat_rate'] = array( + 'title' => t('Commerce flat rate'), 'key' => 'name', 'class' => 'i18n_string_object_wrapper', 'string translation' => array( @@ -12,7 +13,8 @@ function commerce_flat_rate_i18n_object_info() { 'type' => 'name', 'properties' => array( 'title' => t('Title'), - 'display_title' => t('Display title'), + 'display_title' => t('Display title', array(), array('context' => 'title for display purposes')), + 'description' => t('Description'), ), ), ); @@ -31,3 +33,15 @@ function commerce_flat_rate_i18n_string_info() { ); return $groups; } + +/** + * Implements hook_i18n_string_objects(). + */ +function commerce_flat_rate_i18n_string_objects($type) { + if ($type == 'commerce_flat_rate') { + return db_select('commerce_flat_rate_service', 'cfrs') + ->fields('cfrs', array('name', 'title', 'display_title', 'description')) + ->execute() + ->fetchAllAssoc('name', PDO::FETCH_ASSOC); + } +} \ No newline at end of file diff --git a/commerce_flat_rate.module b/commerce_flat_rate.module index 928c226..cff2aa2 100644 --- a/commerce_flat_rate.module +++ b/commerce_flat_rate.module @@ -156,7 +156,15 @@ function commerce_flat_rate_commerce_shipping_service_info() { $base_rate['data'] = commerce_price_component_add($base_rate, $tax_rate['price_component'], $component, TRUE); } - $service = i18n_object('commerce_flat_rate', $service)->translate($language->language); + $untranslated = array( + 'title' => $service['title'], + 'display_title' => !empty($service['display_title']) ? $service['display_title'] : $service['title'], + 'description' => $service['description'], + ); + + if (module_exists('i18n_string')) { + $service = i18n_object('commerce_flat_rate', $service)->translate($language->language); + } // Add the full service array to our return value. $services[$name] = array( 'title' => $service['title'], @@ -170,6 +178,7 @@ function commerce_flat_rate_commerce_shipping_service_info() { ), 'base_rate' => $base_rate, 'data' => $data, + 'untranslated_strings' => $untranslated, ); } } diff --git a/includes/commerce_flat_rate.admin.inc b/includes/commerce_flat_rate.admin.inc index b431385..364bca0 100644 --- a/includes/commerce_flat_rate.admin.inc +++ b/includes/commerce_flat_rate.admin.inc @@ -22,7 +22,7 @@ function commerce_flat_rate_service_form($form, &$form_state, $shipping_service) $form['flat_rate']['title'] = array( '#type' => 'textfield', '#title' => t('Title'), - '#default_value' => $shipping_service['title'], + '#default_value' => $shipping_service['untranslated_strings']['title'], '#description' => t('The administrative title of this flat rate. It is recommended that this title begin with a capital letter and contain only letters, numbers, and spaces.'), '#required' => TRUE, '#size' => 32, @@ -53,8 +53,8 @@ function commerce_flat_rate_service_form($form, &$form_state, $shipping_service) $form['flat_rate']['display_title'] = array( '#type' => 'textfield', - '#title' => t('Display title'), - '#default_value' => $shipping_service['display_title'], + '#title' => t('Display title', array(), array('context' => 'title for display purposes')), + '#default_value' => $shipping_service['untranslated_strings']['display_title'], '#description' => t('The front end display title of this flat rate shown to customers. Leave blank to default to the Title from above.'), '#size' => 32, ); @@ -63,7 +63,7 @@ function commerce_flat_rate_service_form($form, &$form_state, $shipping_service) '#type' => 'textarea', '#title' => t('Description'), '#description' => t('Describe this flat rate if necessary. The text will be displayed in the flat rate services overview table.'), - '#default_value' => $shipping_service['description'], + '#default_value' => $shipping_service['untranslated_strings']['description'], '#rows' => 3, ); @@ -222,6 +222,7 @@ function commerce_flat_rate_service_form_submit($form, &$form_state) { $object = new stdclass; $object->title = $shipping_service['title']; $object->display_title = $shipping_service['display_title']; + $object->description = $shipping_service['description']; // Prefix with shipping method machine name. $object->name = $shipping_service['name']; i18n_string_object_update('commerce_flat_rate', $object); -- 1.7.12.2