diff --git a/html/sites/all/modules/features/features.export.inc b/html/sites/all/modules/features/features.export.inc index 7443503..43f4660 100644 --- a/html/sites/all/modules/features/features.export.inc +++ b/html/sites/all/modules/features/features.export.inc @@ -512,19 +512,41 @@ function features_var_export($var, $prefix = '', $init = TRUE) { */ function features_translatables_export($translatables, $indent = '') { $output = ''; - $translatables = array_filter(array_unique($translatables)); + $translatables = array_filter(features_multiarray_unique($translatables)); if (!empty($translatables)) { $output .= "{$indent}// Translatables\n"; $output .= "{$indent}// Included for use with string extractors like potx.\n"; - sort($translatables); foreach ($translatables as $string) { - $output .= "{$indent}t(" . features_var_export($string) . ");\n"; + if(is_array($string)){ + $output .= "{$indent}t(" . features_var_export($string["value"]) . ",array(),array('context' => '".$string["context"]."'));\n"; + }else{ + $output .= "{$indent}t(" . features_var_export($string) . ");\n"; + } } } return $output; } /** + * Helper to remove duplicate item in a multi array (only for the first level) + * @param array $array + * A multi level array + * @return array + * Array with no duplicate item in the first level + */ +function features_multiarray_unique($array){ + $unique_array = array(); + $json_array = array(); + foreach($array as $item){ + if(!in_array(drupal_json_encode($item), $json_array)){ + $json_array[] = drupal_json_encode($item); + $unique_array[] = $item; + } + } + return $unique_array; +} + +/** * Get a summary storage state for a feature. */ function features_get_storage($module_name) { diff --git a/html/sites/all/modules/features/includes/features.field.inc b/html/sites/all/modules/features/includes/features.field.inc index 96b22b4..2c87776 100644 --- a/html/sites/all/modules/features/includes/features.field.inc +++ b/html/sites/all/modules/features/includes/features.field.inc @@ -113,10 +113,10 @@ function field_features_export_render($module, $data, $export = NULL) { // Add label and description to translatables array. if (!empty($field['field_instance']['label'])) { - $translatables[] = $field['field_instance']['label']; + $translatables[] = array("value" => $field['field_instance']['label'], "context" => $field['field_config']['field_name'].':'.$field['field_instance']['bundle'].':label'); } if (!empty($field['field_instance']['description'])) { - $translatables[] = $field['field_instance']['description']; + $translatables[] = array("value" => $field['field_instance']['description'], "context" => $field['field_config']['field_name'].':'.$field['field_instance']['bundle'].':description'); } } } diff --git a/patches/D7-features-translations_field_context.patch b/patches/D7-features-translations_field_context.patch index 830d388..e69de29 100644 --- a/patches/D7-features-translations_field_context.patch +++ b/patches/D7-features-translations_field_context.patch @@ -1,41 +0,0 @@ -diff --git a/html/sites/all/modules/features/features.export.inc b/html/sites/all/modules/features/features.export.inc -index 7443503..532d4a1 100644 ---- a/html/sites/all/modules/features/features.export.inc -+++ b/html/sites/all/modules/features/features.export.inc -@@ -512,13 +512,16 @@ function features_var_export($var, $prefix = '', $init = TRUE) { - */ - function features_translatables_export($translatables, $indent = '') { - $output = ''; -- $translatables = array_filter(array_unique($translatables)); -+ $translatables = array_filter($translatables); - if (!empty($translatables)) { - $output .= "{$indent}// Translatables\n"; - $output .= "{$indent}// Included for use with string extractors like potx.\n"; -- sort($translatables); - foreach ($translatables as $string) { -- $output .= "{$indent}t(" . features_var_export($string) . ");\n"; -+ if(is_array($string)){ -+ $output .= "{$indent}t(" . features_var_export($string["value"]) . ",array(),array('context' => '".$string["context"]."'));\n"; -+ }else{ -+ $output .= "{$indent}t(" . features_var_export($string) . ");\n"; -+ } - } - } - return $output; -diff --git a/html/sites/all/modules/features/includes/features.field.inc b/html/sites/all/modules/features/includes/features.field.inc -index 96b22b4..f4cb999 100644 ---- a/html/sites/all/modules/features/includes/features.field.inc -+++ b/html/sites/all/modules/features/includes/features.field.inc -@@ -113,10 +113,10 @@ function field_features_export_render($module, $data, $export = NULL) { - - // Add label and description to translatables array. - if (!empty($field['field_instance']['label'])) { -- $translatables[] = $field['field_instance']['label']; -+ array_push ( $translatables , array("value" => $field['field_instance']['label'], "context" => $field['field_config']['field_name'].':'.$field['field_instance']['bundle'].':label')); - } - if (!empty($field['field_instance']['description'])) { -- $translatables[] = $field['field_instance']['description']; -+ array_push ( $translatables , array("value" => $field['field_instance']['description'], "context" => $field['field_config']['field_name'].':'.$field['field_instance']['bundle'].':description')); - } - } - }