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'));
- }
- }
- }