diff --git a/modules/product/commerce_product_ui.module b/modules/product/commerce_product_ui.module index 9904af3..048ab22 100644 --- a/modules/product/commerce_product_ui.module +++ b/modules/product/commerce_product_ui.module @@ -527,8 +527,12 @@ function commerce_product_ui_product_form_submit($form, &$form_state) { */ function commerce_product_ui_product_form_translation_submit($form, &$form_state) { // Get an array of available languages. + $product = $form_state['commerce_product']; $available_languages = field_content_languages(); - list(, , $bundle) = entity_extract_ids('commerce_product', $form_state['commerce_product']); + list(, , $bundle) = entity_extract_ids('commerce_product', $product); + $product->language = $form_state['values']['language']; + // Entity translation might be switching the form language. + $current_language = entity_language('commerce_product', $product); foreach (field_info_instances('commerce_product', $bundle) as $instance) { $field_name = $instance['field_name']; @@ -537,8 +541,8 @@ function commerce_product_ui_product_form_translation_submit($form, &$form_state // Handle a possible language change; new language values are inserted and // the previous values are deleted. - if ($field['translatable'] && $previous_language != $form_state['values']['language']) { - $form_state['values'][$field_name][$form_state['values']['language']] = $form_state['commerce_product']->{$field_name}[$previous_language]; + if ($field['translatable'] && $previous_language != $current_language) { + $form_state['values'][$field_name][$current_language] = $product->{$field_name}[$previous_language]; $form_state['values'][$field_name][$previous_language] = array(); } } diff --git a/modules/product/includes/commerce_product.forms.inc b/modules/product/includes/commerce_product.forms.inc index ccf0022..8766e37 100644 --- a/modules/product/includes/commerce_product.forms.inc +++ b/modules/product/includes/commerce_product.forms.inc @@ -14,7 +14,8 @@ * with only a product type defined. */ function commerce_product_product_form($form, &$form_state, $product) { - $language = !empty($product->language) ? $product->language : LANGUAGE_NONE; + $language = entity_language('commerce_product', $product); + $language = !empty($language) ? $language : LANGUAGE_NONE; // Ensure this include file is loaded when the form is rebuilt from the cache. $form_state['build_info']['files']['form'] = drupal_get_path('module', 'commerce_product') . '/includes/commerce_product.forms.inc'; diff --git a/modules/product/includes/commerce_product.translation_handler.inc b/modules/product/includes/commerce_product.translation_handler.inc index a1d38ad..c3be5fb 100644 --- a/modules/product/includes/commerce_product.translation_handler.inc +++ b/modules/product/includes/commerce_product.translation_handler.inc @@ -41,6 +41,22 @@ class EntityTranslationCommerceProductHandler extends EntityTranslationDefaultHa } /** + * Tweaks the product form to support multilingual elements. + */ + public function entityForm(&$form, &$form_state) { + parent::entityForm($form, $form_state); + $form['actions']['delete_translation']['#suffix'] = $form['actions']['submit']['#suffix']; + unset($form['actions']['submit']['#suffix']); + } + + /** + * @see EntityTranslationDefaultHandler::entityFormTitle() + */ + protected function entityFormTitle() { + return commerce_product_ui_product_title($this->entity); + } + + /** * Returns whether the product is active (TRUE) or disabled (FALSE). */ protected function getStatus() {