diff --git a/i18n_string/i18n_string.inc b/i18n_string/i18n_string.inc index 3136aad..279f5f8 100644 --- a/i18n_string/i18n_string.inc +++ b/i18n_string/i18n_string.inc @@ -1110,10 +1110,16 @@ class i18n_string_object_wrapper extends i18n_object_wrapper { $info = is_array($info) ? $info : array('title' => $info); $field_name = isset($info['field']) ? $info['field'] : $field; $value = $this->get_field($field_name); + if ( is_array($value) && isset($value['value']) ) { + $format = isset($value['format']) ? $value['format'] : NULL; + $value = $value['value']; + } else { + $format = isset($info['format'])? $this->get_field($info['format']) : NULL; + } $strings[$this->get_textgroup()][$string_type][$object_id][$field] = array( 'string' => is_array($value) || isset($info['empty']) && $value === $info['empty'] ? NULL : $value, 'title' => $info['title'], - 'format' => isset($info['format']) ? $this->get_field($info['format']) : NULL, + 'format' => $format, 'name' => array_merge($object_keys, array($field)), ); } diff --git a/i18n_string/i18n_string.module b/i18n_string/i18n_string.module index 9c232c0..4fc1dc2 100644 --- a/i18n_string/i18n_string.module +++ b/i18n_string/i18n_string.module @@ -533,6 +533,9 @@ function i18n_string_multiple($operation, $name, $strings, $options = array()) { * - 'sanitize default' Whether to filter the default value if no translation found, default is FALSE */ function i18n_string_translate($name, $string, $options = array()) { + if ( is_array($string) && isset($string['value']) ) { + $string = $string['value']; + } if (is_array($string)) { return i18n_string_translate_list($name, $string, $options); } diff --git a/i18n_string/i18n_string.pages.inc b/i18n_string/i18n_string.pages.inc index 28005d6..5c50488 100644 --- a/i18n_string/i18n_string.pages.inc +++ b/i18n_string/i18n_string.pages.inc @@ -204,8 +204,9 @@ function i18n_string_translate_page_form_strings($strings, $langcode) { $default_value = $item->format_translation($langcode, array('langcode' => $langcode, 'sanitize' => FALSE, 'debug' => FALSE)); $form[$item->get_name()] = array( '#title' => $item->get_title(), - '#type' => 'textarea', + '#type' => $item->format? 'text_format' : 'textarea', '#default_value' => $default_value, + '#format' => $item->format? $item->format : NULL, '#disabled' => $disabled, '#description' => $description . _i18n_string_translate_format_help($format_id), //'#i18n_string_format' => $source ? $source->format : 0, @@ -226,6 +227,11 @@ function i18n_string_translate_page_form_submit($form, &$form_state) { foreach ($form_state['values']['strings'] as $name => $value) { $count++; list($textgroup, $context) = i18n_string_context(explode(':', $name)); + + if ( is_array($value) && isset($value['value']) ) { + $value = $value['value']; + } + $result = i18n_string_textgroup($textgroup)->update_translation($context, $form_state['values']['langcode'], $value); $success += ($result ? 1 : 0); }