diff --git a/double_field.module b/double_field.module index ebe6c7e..898749d 100644 --- a/double_field.module +++ b/double_field.module @@ -323,6 +323,13 @@ function double_field_field_presave($entity_type, $entity, $field, $instance, $l } /** + * Implements hook_field_create_instance(). + */ +function double_field_field_create_instance($instance) { + double_field_field_update_instance($instance, $instance); +} + +/** * Implements hook_field_update_instance(). */ function double_field_field_update_instance($instance, $prior_instance) { @@ -364,13 +371,22 @@ function double_field_i18n_strings_update($instance) { foreach ($i18n_keys as $i18n_key) { $parents = explode('-', $i18n_key); if ($value = drupal_array_get_nested_value($instance, $parents)) { - i18n_string_update('double_field:' . $instance['bundle'] . '-' . $instance['field_name'] . ':' . $i18n_key, $value); + i18n_string_update('double_field:' . double_field_i18n_strings_prefix($instance) . ':' . $i18n_key, $value); } } } /** + * Builds the prefix for i18n_string from the instance. + * + * Returns a unique prefix for each instance without numeric IDs. + */ +function double_field_i18n_strings_prefix($instance) { + return $instance['entity_type'] . '-' . $instance['bundle'] . '-' . $instance['field_name']; +} + +/** * Translates double field settings. * * @see i18n_string_translate() @@ -625,7 +641,7 @@ function double_field_allowed_values_setting_validate($element, &$form_state) { */ function double_field_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) { $settings = $instance['widget']['settings']; - $i18n_context_prefix = $instance['bundle'] . '-' . $instance['field_name'] . ':widget-settings-'; + $i18n_context_prefix = double_field_i18n_strings_prefix($instance) . ':widget-settings-'; $subfield_types = explode('_&_', $instance['widget']['type']); $double_field = array( @@ -1026,7 +1042,7 @@ function double_field_field_formatter_view($entity_type, $entity, $field, $insta } $settings = $display['settings']; - $i18n_context_prefix = $instance['bundle'] . '-' . $instance['field_name'] . ':display-default-settings-'; + $i18n_context_prefix = double_field_i18n_strings_prefix($instance) . ':display-default-settings-'; $element = array(); foreach ($items as $delta => $item) { @@ -1038,7 +1054,7 @@ function double_field_field_formatter_view($entity_type, $entity, $field, $insta // Show value pair of allowed values on instead of their key value. if (isset($instance['widget']['settings'][$subfield]['select']['allowed_values'])) { $allowed_values = double_field_i18n_strings_translate( - $instance['bundle'] . '-' . $instance['field_name'] . ":widget-settings-$subfield-select-allowed_values", + double_field_i18n_strings_prefix($instance) . ':widget-settings-' . $subfield . '-select-allowed_values', $instance['widget']['settings'][$subfield]['select']['allowed_values'] ); $item[$subfield] = empty($allowed_values[$item[$subfield]]) ?