Browse Source

[up] i18n 7.x-1.24

opi 7 years ago
parent
commit
905a493d8e
28 changed files with 199 additions and 85 deletions
  1. 3 4
      sites/all/modules/i18n/i18n.info
  2. 3 4
      sites/all/modules/i18n/i18n_block/i18n_block.info
  3. 3 4
      sites/all/modules/i18n/i18n_contact/i18n_contact.info
  4. 1 1
      sites/all/modules/i18n/i18n_field/i18n_field.i18n.inc
  5. 3 4
      sites/all/modules/i18n/i18n_field/i18n_field.info
  6. 3 0
      sites/all/modules/i18n/i18n_field/i18n_field.module
  7. 3 4
      sites/all/modules/i18n/i18n_forum/i18n_forum.info
  8. 3 4
      sites/all/modules/i18n/i18n_menu/i18n_menu.info
  9. 3 4
      sites/all/modules/i18n/i18n_node/i18n_node.info
  10. 9 6
      sites/all/modules/i18n/i18n_node/i18n_node.module
  11. 3 4
      sites/all/modules/i18n/i18n_path/i18n_path.info
  12. 3 4
      sites/all/modules/i18n/i18n_redirect/i18n_redirect.info
  13. 3 4
      sites/all/modules/i18n/i18n_select/i18n_select.info
  14. 3 4
      sites/all/modules/i18n/i18n_string/i18n_string.info
  15. 15 1
      sites/all/modules/i18n/i18n_string/i18n_string.module
  16. 1 1
      sites/all/modules/i18n/i18n_string/i18n_string.test
  17. 53 1
      sites/all/modules/i18n/i18n_string/i18n_string.variable.inc
  18. 3 4
      sites/all/modules/i18n/i18n_sync/i18n_sync.info
  19. 27 3
      sites/all/modules/i18n/i18n_sync/i18n_sync.module
  20. 3 4
      sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info
  21. 23 1
      sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module
  22. 10 0
      sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.tokens.inc
  23. 3 4
      sites/all/modules/i18n/i18n_translation/i18n_translation.info
  24. 3 4
      sites/all/modules/i18n/i18n_user/i18n_user.info
  25. 5 2
      sites/all/modules/i18n/i18n_user/i18n_user.module
  26. 3 4
      sites/all/modules/i18n/i18n_variable/i18n_variable.info
  27. 3 4
      sites/all/modules/i18n/tests/i18n_test.info
  28. 1 1
      sites/all/modules/i18n/tests/i18n_test.module

+ 3 - 4
sites/all/modules/i18n/i18n.info

@@ -8,9 +8,8 @@ files[] = i18n_object.inc
 files[] = i18n.test
 configure = admin/config/regional/i18n
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/i18n_block/i18n_block.info

@@ -8,9 +8,8 @@ files[] = i18n_block.inc
 files[] = i18n_block.test
 
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/i18n_contact/i18n_contact.info

@@ -5,9 +5,8 @@ dependencies[] = i18n_string
 package = Multilingual - Internationalization
 core = 7.x
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 1 - 1
sites/all/modules/i18n/i18n_field/i18n_field.i18n.inc

@@ -72,7 +72,7 @@ function i18n_field_i18n_string_info() {
     'description' => t('Configurable fields descriptions, defaults, options, etc.'),
     'format' => FALSE, // This group doesn't have formatted strings
     'list' => TRUE, // This group can list all strings
-    'class' => 'i18n_string_textgroup_cached',
+    'class' => variable_get('i18n_string_textgroup_class_field', 'i18n_string_textgroup_cached'),
   );
   return $groups;
 }

+ 3 - 4
sites/all/modules/i18n/i18n_field/i18n_field.info

@@ -6,9 +6,8 @@ package = Multilingual - Internationalization
 core = 7.x
 files[] = i18n_field.inc
 files[] = i18n_field.test
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 0
sites/all/modules/i18n/i18n_field/i18n_field.module

@@ -194,6 +194,9 @@ function i18n_field_field_widget_form_alter(&$element, &$form_state, $context) {
     // Single-value file fields and image fields.
     $alter_element = &$element[0];
   }
+  elseif ($field['type'] == 'url' && $field['module'] == 'url' && $field['cardinality'] == 1) {
+    $alter_element = &$element;
+  }
   elseif (isset($element['value'])) {
     // Number fields. Single-value text fields.
     $alter_element = &$element['value'];

+ 3 - 4
sites/all/modules/i18n/i18n_forum/i18n_forum.info

@@ -7,9 +7,8 @@ package = Multilingual - Internationalization
 core = 7.x
 files[] = i18n_forum.test
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/i18n_menu/i18n_menu.info

@@ -10,9 +10,8 @@ core = 7.x
 files[] = i18n_menu.inc
 files[] = i18n_menu.test
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/i18n_node/i18n_node.info

@@ -9,9 +9,8 @@ configure = admin/config/regional/i18n/node
 files[]=i18n_node.test
 files[]=i18n_node.variable.inc
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 9 - 6
sites/all/modules/i18n/i18n_node/i18n_node.module

@@ -257,13 +257,16 @@ function i18n_node_permission() {
 /**
  * Implements hook_node_view()
  */
-function i18n_node_node_view($node) {
+function i18n_node_node_view($node, $view_mode, $langcode) {
   if (i18n_node_type_enabled($node)) {
-    $node->content['language'] = array(
-      '#type' => 'item',
-      '#title' => t('Language'),
-      '#markup' => i18n_language_name($node->language),
-    );
+    $extra_fields_display_settings = field_extra_fields_get_display('node', $node->type, $view_mode);
+    if ($extra_fields_display_settings['language']['visible']) {
+      $node->content['language'] = array(
+        '#type' => 'item',
+        '#title' => t('Language'),
+        '#markup' => i18n_language_name($node->language),
+      );
+    }
   }
 }
 

+ 3 - 4
sites/all/modules/i18n/i18n_path/i18n_path.info

@@ -6,9 +6,8 @@ core = 7.x
 
 files[] = i18n_path.inc
 files[] = i18n_path.test
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/i18n_redirect/i18n_redirect.info

@@ -4,9 +4,8 @@ dependencies[] = i18n
 package = Multilingual - Internationalization
 core = 7.x
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/i18n_select/i18n_select.info

@@ -6,9 +6,8 @@ core = 7.x
 configure = admin/config/regional/i18n/select
 files[] = i18n_select.test
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/i18n_string/i18n_string.info

@@ -10,9 +10,8 @@ files[] = i18n_string.inc
 files[] = i18n_string.test
 configure = admin/config/regional/i18n/strings
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 15 - 1
sites/all/modules/i18n/i18n_string/i18n_string.module

@@ -118,13 +118,14 @@ function i18n_string_menu() {
     'file' => 'i18n_string.admin.inc',
     'access arguments' => array('translate interface'),
   );
+
   $items['admin/config/regional/i18n/strings'] = array(
     'title' => 'Strings',
     'description' => 'Options for user defined strings.',
     'weight' => 20,
     'type' => MENU_LOCAL_TASK,
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('variable_edit_form', array('i18n_string_allowed_formats', 'i18n_string_source_language')),
+    'page arguments' => array('variable_edit_form', array('i18n_string_allowed_formats', 'i18n_string_source_language', 'i18n_string_textgroup_class_[textgroup]')),
     'access arguments' => array('administer site configuration'),
   );
   // AJAX callback path for strings.
@@ -519,6 +520,19 @@ function i18n_string_group_info($group = NULL, $property = NULL, $default = NULL
   }
 }
 
+/**
+ * Implements hook_i18n_string_info_alter().
+ *
+ * Set determined classes to use for the text group.
+ */
+function i18n_string_i18n_string_info_alter(&$info) {
+  foreach (array_keys($info) as $name) {
+    // If class is not defined. Classes from other modules, fixed classes and etc.
+    if (!isset($info[$name]['class'])) {
+      $info[$name]['class'] = variable_get('i18n_string_textgroup_class_' . $name, 'i18n_string_textgroup_default');
+    }
+  }
+}
 
 /**
  * Translate / update multiple strings

+ 1 - 1
sites/all/modules/i18n/i18n_string/i18n_string.test

@@ -65,7 +65,7 @@ class i18nStringTestCase extends Drupali18nTestCase {
     $this->drupalPost('admin/config/regional/translate/translate', $search, t('Filter'));
     $this->clickLink(t('edit'));
     // Just add a random translation.
-    $translation = $this->randomString();
+    $translation = $this->randomName();
     $edit = array();
     foreach ($this->getOtherLanguages() as $language) {
       $langcode = $language->language;

+ 53 - 1
sites/all/modules/i18n/i18n_string/i18n_string.variable.inc

@@ -34,10 +34,33 @@ function i18n_string_variable_info($options = array()) {
     'default' => 0,
     'group' => 'debug',
   );
+  $variables['i18n_string_textgroup_class_[textgroup]'] = array(
+    'title' => t('Class to use for the text group'),
+    'description' => t('Determines which the class will be use for string translation in the text group.', array(), $options),
+    'repeat' => array(
+      'type' => 'select',
+      'default' => 'i18n_string_textgroup_default',
+      'options callback' => 'i18n_string_variable_textgroup_class_list',
+    ),
+    'submit callback' => 'i18n_string_variable_textgroup_class_submit_callback',
+    'group' => 'i18n',
+  );
   return $variables;
 }
 
 /**
+ * Implements hook_variable_type_info().
+ */
+function i18n_string_variable_type_info() {
+  $type['textgroup'] = array(
+    'title' => t('Text group'),
+    'type' => 'select',
+    'options callback' => 'i18n_string_variable_textgroup_list',
+  );
+  return $type;
+}
+
+/**
  * Options callback, format list
  */
 function i18n_string_variable_format_list() {
@@ -54,4 +77,33 @@ function i18n_string_variable_format_list() {
  */
 function i18n_string_variable_format_default() {
   return array(filter_fallback_format());
-}
+}
+
+/**
+ * Options callback, text groups list.
+ */
+function i18n_string_variable_textgroup_list() {
+  $groups = array();
+  foreach (i18n_string_group_info() as $name => $info) {
+    $groups[$name] = $info['title'];
+  }
+  return $groups;
+}
+
+/**
+ * Options callback, text group classes list.
+ */
+function i18n_string_variable_textgroup_class_list($variable, $options = array()) {
+  return array(
+    'i18n_string_textgroup_default' => t('Text group handler default.', array(), $options),
+    'i18n_string_textgroup_cached' => t('Text group handler which include persistent caching.', array(), $options),
+  );
+}
+
+/**
+ * Submit callback. Execute Reset the persistent caches after save the text group class variables.
+ */
+function i18n_string_variable_textgroup_class_submit_callback($variable, $options, $form, $form_state) {
+  // Reset the persistent caches.
+  cache_clear_all('i18n:string:' , 'cache', TRUE);
+}

+ 3 - 4
sites/all/modules/i18n/i18n_sync/i18n_sync.info

@@ -10,9 +10,8 @@ files[] = i18n_sync.install
 files[] = i18n_sync.module.inc
 files[] = i18n_sync.node.inc
 files[] = i18n_sync.test
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 27 - 3
sites/all/modules/i18n/i18n_sync/i18n_sync.module

@@ -91,6 +91,7 @@ function i18n_sync_form_node_type_form_alter(&$form, &$form_state) {
 
     $form['i18n_sync']['i18n_sync_node_type'] = array(
       '#tree' => TRUE,
+      '#weight' => 1,
     );
 
     // Each set provides title and options. We build a big checkboxes control for it to be
@@ -121,6 +122,21 @@ function i18n_sync_form_node_type_form_alter(&$form, &$form_state) {
         );
       }
     }
+
+    // Add option to restrict syncing only when editing the translation source.
+    $form['i18n_sync']['i18n_sync_source_description'] = array(
+      '#prefix' => '<div>', '#suffix' => '</div>',
+      '#markup' => t('Restrict synchronization to the translation source.'),
+      '#weight' => 2,
+    );
+    $form['i18n_sync']['i18n_sync_source'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Synchronize translations only when saving the translation source'),
+      '#default_value' => variable_get('i18n_sync_source_' . $type, FALSE),
+      '#disabled' => $disabled,
+      '#weight' => 3,
+      '#description' => t('If not checked each node will trigger the synchronization, whether it\'s the source or not.'),
+    );
   }
 }
 
@@ -167,9 +183,17 @@ function i18n_sync_node_insert($node) {
  */
 function i18n_sync_node_update($node) {
   // Let's go with field synchronization.
-  if (i18n_sync_node_check($node) && !empty($node->tnid) && ($fields = i18n_sync_node_fields($node->type)) && ($translations = i18n_sync_node_get_translations($node, TRUE))) {
-    module_load_include('node.inc', 'i18n_sync');
-    i18n_sync_node_translation($node, $translations, $fields, 'update');
+  if (i18n_sync_node_check($node) && !empty($node->tnid) && (!variable_get('i18n_sync_source_' . $node->type, TRUE) || $node->tnid == $node->nid) && ($fields = i18n_sync_node_fields($node->type)) && ($translations = i18n_sync_node_get_translations($node, TRUE))) {
+    $do_sync = TRUE;
+    if (module_exists('entity_translation')) {
+      if (entity_translation_enabled_bundle('node', $node->type)) {
+        $do_sync = FALSE;
+      }
+    }
+    if ($do_sync) {
+      module_load_include('node.inc', 'i18n_sync');
+      i18n_sync_node_translation($node, $translations, $fields, 'update');
+    }
   }
 }
 

+ 3 - 4
sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info

@@ -11,9 +11,8 @@ files[] = i18n_taxonomy.pages.inc
 files[] = i18n_taxonomy.admin.inc
 files[] = i18n_taxonomy.test
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 23 - 1
sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module

@@ -756,6 +756,28 @@ function i18n_taxonomy_form_taxonomy_form_term_alter(&$form, &$form_state) {
   // Add language field or not depending on taxonomy mode.
   switch (i18n_taxonomy_vocabulary_mode($vocabulary->vid)) {
     case I18N_MODE_TRANSLATE:
+      // Set $form_state['storage'] default as empty array because we will add
+      // the translation and target from $_GET. So we still have it when the
+      // page partially reloads with ajax.
+      if(!isset($form_state['storage'])) {
+        $form_state['storage'] = array();
+      }
+      // get translation from $_GET or $form_state['storage']
+      $translation = null;
+      if(isset($_GET['translation'])) {
+        $translation = $_GET['translation'];
+        $form_state['storage']['translation'] = $translation;
+      } else if(isset($form_state['storage']) && isset($form_state['storage']['translation'])){
+        $translation = $form_state['storage']['translation'];
+      }
+      // get target from $_GET or $form_state['storage']
+      $target = null;
+      if(isset($_GET['target'])) {
+        $target = $_GET['target'];
+        $form_state['storage']['target'] = $target;
+      } else if(isset($form_state['storage']) && isset($form_state['storage']['target'])){
+        $target = $form_state['storage']['target'];
+      }
       $form['language'] = array(
         '#description' => t('This term belongs to a multilingual vocabulary. You can set a language for it.'),
       ) + i18n_element_language_select($term);
@@ -763,7 +785,7 @@ function i18n_taxonomy_form_taxonomy_form_term_alter(&$form, &$form_state) {
       // If the term to be added will be a translation of a source term,
       // set the default value of the option list to the target language and
       // create a form element for storing the translation set of the source term.
-      if (empty($term->tid) && isset($_GET['translation']) && isset($_GET['target']) && ($source_term = taxonomy_term_load($_GET['translation'])) && ($target_language = i18n_language_object($_GET['target']))) {
+      if (empty($term->tid) && isset($translation) && isset($target) && ($source_term = taxonomy_term_load($translation)) && ($target_language = i18n_language_object($target))) {
         // Set context language to target language.
         i18n_language_context($target_language);
 

+ 10 - 0
sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.tokens.inc

@@ -15,6 +15,10 @@ function i18n_taxonomy_token_info() {
     'name' => t("Name (localized)"),
     'description' => t("The name of the taxonomy term."),
   );
+  $term['localized-name'] = array(
+    'name' => t("Name in current language"),
+    'description' => t("The name of the taxonomy term in current language."),
+  );
   $term['i18n-description'] = array(
     'name' => t("Description (localized)"),
     'description' => t("The optional description of the taxonomy term."),
@@ -69,6 +73,12 @@ function i18n_taxonomy_tokens($type, $tokens, array $data = array(), array $opti
           $replacements[$original] = $sanitize ? check_plain($name) : $name;
           break;
 
+        case 'localized-name':
+          $translated_term = i18n_taxonomy_term_get_translation($term, $langcode);
+          $name = i18n_taxonomy_term_name($translated_term, $langcode);
+          $replacements[$original] = $sanitize ? check_plain($name) : $name;
+          break;
+
         case 'i18n-description':
           $replacements[$original] = i18n_string_text(array('taxonomy', 'term', $term->tid, 'description'), $term->description, array('langcode' => $langcode, 'format' => $term->format, 'sanitize' => $sanitize, 'cache' => TRUE));
           break;

+ 3 - 4
sites/all/modules/i18n/i18n_translation/i18n_translation.info

@@ -6,9 +6,8 @@ core = 7.x
 
 files[] = i18n_translation.inc
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/i18n_user/i18n_user.info

@@ -4,9 +4,8 @@ core = 7.x
 package = Multilingual - Internationalization
 dependencies[] = i18n_variable
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 5 - 2
sites/all/modules/i18n/i18n_user/i18n_user.module

@@ -9,11 +9,14 @@
  */
 function i18n_user_mail_alter(&$message) {
   if ($message['module'] == 'user') {
-    $user_preferred = language_default();
+    $message['language'] = language_default();
     if (isset($message['params']['account'])) {
       $user_preferred = user_preferred_language($message['params']['account']);
+      if (isset($user_preferred)) {
+        $message['language'] = $user_preferred;
+      }
     }
-    $language = (isset($message['language']) ? $message['language'] : $user_preferred);
+    $language = (isset($message['language']) ? $message['language'] : language_default());
     $variables = array('user' => $message['params']['account']);
     $key = $message['key'];
 

+ 3 - 4
sites/all/modules/i18n/i18n_variable/i18n_variable.info

@@ -10,9 +10,8 @@ configure = admin/config/regional/i18n/variable
 files[] = i18n_variable.class.inc
 files[] = i18n_variable.test
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 3 - 4
sites/all/modules/i18n/tests/i18n_test.info

@@ -7,9 +7,8 @@ package = Testing
 core = 6.x
 hidden = TRUE
 
-; Information added by Drupal.org packaging script on 2017-11-26
-version = "7.x-1.22"
+; Information added by Drupal.org packaging script on 2018-04-20
+version = "7.x-1.24"
 core = "7.x"
 project = "i18n"
-datestamp = "1511689989"
-
+datestamp = "1524222489"

+ 1 - 1
sites/all/modules/i18n/tests/i18n_test.module

@@ -40,7 +40,7 @@ function i18n_test_i18n_string_info() {
     'title' => t('Test Cached Strings'),
     'description' => t('Translatable items of a textgroup with caching enabled.'),
     'format' => FALSE, // This group doesn't have strings with format
-    'class' => 'i18n_string_textgroup_cached_logged',
+    'class' => variable_get('i18n_string_textgroup_class_test_cached', 'i18n_string_textgroup_cached_logged'),
   );
   return $groups;
 }