diff --git a/i18n_field/i18n_field.module b/i18n_field/i18n_field.module index 83d13e3..d29e668 100644 --- a/i18n_field/i18n_field.module +++ b/i18n_field/i18n_field.module @@ -177,7 +177,7 @@ function i18n_field_field_widget_form_alter(&$element, &$form_state, $context) { global $language; // Skip the node type edit fields by checking for existing entity - if (empty($element['#entity'])) { + if (empty($element['#entity']) && empty($element['value']['#entity']) && empty($element[0]['#entity']) && empty($element['target_id']['#entity'])) { return; } @@ -191,7 +191,6 @@ function i18n_field_field_widget_form_alter(&$element, &$form_state, $context) { // The field language may affect some variables (default) but not others (description will be in current page language) $i18n_langcode = empty($element['#language']) || $element['#language'] == LANGUAGE_NONE ? $language->language : $element['#language']; - // Translate instance to current page language and set to form_state // so it will be used for validation messages later. $instance_current = i18n_string_object_translate('field_instance', $instance); @@ -202,11 +201,26 @@ function i18n_field_field_widget_form_alter(&$element, &$form_state, $context) { // Translate field title if set and it is the default one. // When cardinality is 1, $element['value'] is used instead. if (!empty($instance_current['label']) && $instance_current['label'] != $instance['label']) { - if (!empty($element['#title']) && $element['#title'] == $instance['label']) { + if ($field['type'] == 'file') { + $element['#title'] = $instance_current['label']; + } + if (!empty($element['#title']) && $element['#title'] == check_plain($instance['label'])) { $element['#title'] = $instance_current['label']; + if (isset($element['value']['#title'])) { + $element['value']['#title'] = $element['#title']; + } + } + if (!empty($element[0]['#title']) && $element[0]['#title'] == check_plain($instance['label'])) { + $element[0]['#title'] = $instance_current['label']; + if (isset($element[0]['value']['#title'])) { + $element[0]['value']['#title'] = $element[0]['#title']; + } } - if (isset($element['value']) && !empty($element['value']['#title']) && $element['value']['#title'] == $instance['label']) { - $element['value']['#title'] = $instance_current['label']; + if (isset($element['value']) && !empty($element['value']['#title']) && $element['value']['#title'] == check_plain($instance['label'])) { + $element['value']['#title'] = check_plain($instance_current['label']); + } + if (isset($element['target_id']) && !empty($element['target_id']['#title']) && $element['target_id']['#title'] == check_plain($instance['label'])) { + $element['target_id']['#title'] = $instance_current['label']; } } @@ -216,22 +230,28 @@ function i18n_field_field_widget_form_alter(&$element, &$form_state, $context) { if (!empty($element['#description']) && $element['#description'] == $instance['description']) { $element['#description'] = $instance_current['description']; } + if (!empty($element[0]['#description'])) { + $element[0]['#description'] = $instance_current['description']; + } if (isset($element['value']) && !empty($element['value']['#description']) && $element['value']['#description'] == $instance['description']) { $element['value']['#description'] = $instance_current['description']; } + if (isset($element['target_id']) && !empty($element['target_id']['#description']) && $element['target_id']['#description'] == $instance['description']) { + $element['target_id']['#description'] = $instance_current['description']; + } } - // Translate list options - if (!empty($element['#options']) && ($translate = i18n_field_type_info($field['type'], 'translate_options')) && !empty($field['settings']['allowed_values'])) { + // Translate list options. + if ((!empty($element['#options']) || $field['type'] == 'list_boolean') && ($translate = i18n_field_type_info($field['type'], 'translate_options')) && !empty($field['settings']['allowed_values'])) { $element['#options'] = $translate($field, $i18n_langcode); if (isset($element['#properties']) && !empty($element['#properties']['empty_option'])) { $label = theme('options_none', array('instance' => $instance, 'option' => $element['#properties']['empty_option'])); $element['#options'] = array('_none' => $label) + $element['#options']; - // For some elements, change title to new translated option - if (!empty($element['#title']) && $field['type'] == 'list_boolean' && !empty($element['#on_value'])) { - $on_value = $element['#on_value']; - $element['#title'] = $element['#options'][$on_value]; - } + } + // For some elements, change title to new translated option. + if (!empty($element['#title']) && $field['type'] == 'list_boolean' && !empty($element['#on_value'])) { + $on_value = $element['#on_value']; + $element['#title'] = $element['#options'][$on_value]; } } @@ -244,8 +264,8 @@ function i18n_field_field_widget_form_alter(&$element, &$form_state, $context) { // Translate default value if exists and the current value is the default if (isset($element['value']['#default_value']) && ($translate = i18n_field_type_info($field['type'], 'translate_default')) && - !empty($instance['default_value'][$delta]['value']) && !empty($items[$delta]['value']) && - $instance['default_value'][$delta]['value'] === $items[$delta]['value']) { + !empty($instance['default_value'][$delta]['value']) && !empty($items[$delta]['value']) && + $instance['default_value'][$delta]['value'] === $items[$delta]['value']) { $element['value']['#default_value'] = $translate($instance, $items[$delta]['value'], $i18n_langcode); } }