commit 9faa5de0ee5c940f7ee0fa98ecd32c0b997b9d0e
Author: Assos Assos <assos+forge@centrale-marseille.fr>
Date:   Wed Apr 28 23:11:45 2021 +0200

    Weekly update of contrib modules

diff --git a/drupal7/sites/all/modules/i18n/i18n.info b/drupal7/sites/all/modules/i18n/i18n.info
index ec7ac182..162f78e8 100644
--- a/drupal7/sites/all/modules/i18n/i18n.info
+++ b/drupal7/sites/all/modules/i18n/i18n.info
@@ -8,8 +8,8 @@ files[] = i18n_object.inc
 files[] = i18n.test
 configure = admin/config/regional/i18n
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n.module b/drupal7/sites/all/modules/i18n/i18n.module
index 4985271f..cf38678b 100644
--- a/drupal7/sites/all/modules/i18n/i18n.module
+++ b/drupal7/sites/all/modules/i18n/i18n.module
@@ -233,7 +233,7 @@ function i18n_langcode($langcode = NULL) {
 /**
  * Implements hook_help().
  */
-function i18n_help($path = 'admin/help#i18n', $arg) {
+function i18n_help($path, $arg) {
   switch ($path) {
     case 'admin/help#i18n' :
       $output = '<p>' . t('This module improves support for multilingual content in Drupal sites:') . '</p>';
diff --git a/drupal7/sites/all/modules/i18n/i18n_block/i18n_block.info b/drupal7/sites/all/modules/i18n/i18n_block/i18n_block.info
index 0a32676e..c90cc2bf 100644
--- a/drupal7/sites/all/modules/i18n/i18n_block/i18n_block.info
+++ b/drupal7/sites/all/modules/i18n/i18n_block/i18n_block.info
@@ -8,8 +8,8 @@ files[] = i18n_block.inc
 files[] = i18n_block.test
 
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_block/i18n_block.module b/drupal7/sites/all/modules/i18n/i18n_block/i18n_block.module
index 6c8c79bb..333457e3 100644
--- a/drupal7/sites/all/modules/i18n/i18n_block/i18n_block.module
+++ b/drupal7/sites/all/modules/i18n/i18n_block/i18n_block.module
@@ -111,7 +111,7 @@ function i18n_block_block_list_alter(&$blocks) {
 }
 
 /**
- * Implements hook_block_view().
+ * Implements hook_block_view_alter().
  */
 function i18n_block_block_view_alter(&$data, $block) {
   if (!empty($block->i18n_mode)) {
diff --git a/drupal7/sites/all/modules/i18n/i18n_contact/i18n_contact.info b/drupal7/sites/all/modules/i18n/i18n_contact/i18n_contact.info
index e1084bdf..a592f71b 100644
--- a/drupal7/sites/all/modules/i18n/i18n_contact/i18n_contact.info
+++ b/drupal7/sites/all/modules/i18n/i18n_contact/i18n_contact.info
@@ -5,8 +5,8 @@ dependencies[] = i18n_string
 package = Multilingual - Internationalization
 core = 7.x
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_field/i18n_field.info b/drupal7/sites/all/modules/i18n/i18n_field/i18n_field.info
index 2c126d89..8c5e2a16 100644
--- a/drupal7/sites/all/modules/i18n/i18n_field/i18n_field.info
+++ b/drupal7/sites/all/modules/i18n/i18n_field/i18n_field.info
@@ -6,8 +6,8 @@ package = Multilingual - Internationalization
 core = 7.x
 files[] = i18n_field.inc
 files[] = i18n_field.test
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_field/i18n_field.module b/drupal7/sites/all/modules/i18n/i18n_field/i18n_field.module
index 6f97006b..fe9f0f01 100644
--- a/drupal7/sites/all/modules/i18n/i18n_field/i18n_field.module
+++ b/drupal7/sites/all/modules/i18n/i18n_field/i18n_field.module
@@ -176,7 +176,7 @@ function i18n_field_field_widget_form_alter(&$element, &$form_state, $context) {
   global $language;
 
   // Don't translate if the widget is being shown on the field edit form.
-  if ($form_state['build_info']['form_id'] == 'field_ui_field_edit_form') {
+  if (isset($form_state['build_info']['form_id']) && $form_state['build_info']['form_id'] == 'field_ui_field_edit_form') {
     return;
   }
 
@@ -398,12 +398,16 @@ function i18n_field_instance_update_strings($instance) {
  *   (number or text), values of the array are the display labels.
  */
 function i18n_field_translate_allowed_values($field, $langcode = NULL) {
-  if (!empty($field['settings']['allowed_values'])) {
-    return i18n_string_translate(array('field', $field['field_name'], '#allowed_values'), $field['settings']['allowed_values'], array('langcode' => $langcode, 'sanitize' => FALSE));
-  }
-  else {
+  $allowed_values = list_allowed_values($field);
+  if (!$allowed_values) {
     return array();
   }
+  // Do not attempt to translate options from a callback.
+  $function = $field['settings']['allowed_values_function'];
+  if (!empty($function) && function_exists($function)) {
+    return $allowed_values;
+  }
+  return i18n_string_translate(array('field', $field['field_name'], '#allowed_values'), $allowed_values, array('langcode' => $langcode, 'sanitize' => FALSE));
 }
 
 /**
diff --git a/drupal7/sites/all/modules/i18n/i18n_forum/i18n_forum.info b/drupal7/sites/all/modules/i18n/i18n_forum/i18n_forum.info
index 249fb66a..4ea84b87 100644
--- a/drupal7/sites/all/modules/i18n/i18n_forum/i18n_forum.info
+++ b/drupal7/sites/all/modules/i18n/i18n_forum/i18n_forum.info
@@ -7,8 +7,8 @@ package = Multilingual - Internationalization
 core = 7.x
 files[] = i18n_forum.test
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_menu/i18n_menu.info b/drupal7/sites/all/modules/i18n/i18n_menu/i18n_menu.info
index 5b210b9c..83af4d2a 100644
--- a/drupal7/sites/all/modules/i18n/i18n_menu/i18n_menu.info
+++ b/drupal7/sites/all/modules/i18n/i18n_menu/i18n_menu.info
@@ -10,8 +10,8 @@ core = 7.x
 files[] = i18n_menu.inc
 files[] = i18n_menu.test
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.info b/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.info
index ba222a1e..c30324f2 100644
--- a/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.info
+++ b/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.info
@@ -9,8 +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 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.module b/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.module
index b6957e8f..29d6ab0d 100644
--- a/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.module
+++ b/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.module
@@ -260,7 +260,7 @@ function i18n_node_permission() {
 function i18n_node_node_view($node, $view_mode, $langcode) {
   if (i18n_node_type_enabled($node)) {
     $extra_fields_display_settings = field_extra_fields_get_display('node', $node->type, $view_mode);
-    if ($extra_fields_display_settings['language']['visible']) {
+    if (isset($extra_fields_display_settings['language']['visible']) && $extra_fields_display_settings['language']['visible']) {
       $node->content['language'] = array(
         '#type' => 'item',
         '#title' => t('Language'),
diff --git a/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc b/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc
index 4e13ba67..f20cfa2b 100644
--- a/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc
+++ b/drupal7/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc
@@ -260,7 +260,7 @@ function i18n_node_nid2autocomplete($nid) {
  *
  * We also handle autocomplete values (title [nid:x]) and validate the form
  */
-function i18n_node_autocomplete2nid($name, $field = NULL, $type, $language) {
+function i18n_node_autocomplete2nid($name, $field, $type, $language) {
   if (!empty($name)) {
     preg_match('/^(?:\s*|(.*) )?\[\s*nid\s*:\s*(\d+)\s*\]$/', $name, $matches);
     if (!empty($matches)) {
diff --git a/drupal7/sites/all/modules/i18n/i18n_path/i18n_path.info b/drupal7/sites/all/modules/i18n/i18n_path/i18n_path.info
index bb3519e0..cc1b8f25 100644
--- a/drupal7/sites/all/modules/i18n/i18n_path/i18n_path.info
+++ b/drupal7/sites/all/modules/i18n/i18n_path/i18n_path.info
@@ -6,8 +6,8 @@ core = 7.x
 
 files[] = i18n_path.inc
 files[] = i18n_path.test
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info b/drupal7/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info
index 2ceeb19c..00117ba0 100644
--- a/drupal7/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info
+++ b/drupal7/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info
@@ -4,8 +4,8 @@ dependencies[] = i18n
 package = Multilingual - Internationalization
 core = 7.x
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_select/i18n_select.info b/drupal7/sites/all/modules/i18n/i18n_select/i18n_select.info
index 5c72eab5..3fa57496 100644
--- a/drupal7/sites/all/modules/i18n/i18n_select/i18n_select.info
+++ b/drupal7/sites/all/modules/i18n/i18n_select/i18n_select.info
@@ -6,8 +6,8 @@ core = 7.x
 configure = admin/config/regional/i18n/select
 files[] = i18n_select.test
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.info b/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.info
index 327539ee..43b7d50e 100644
--- a/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.info
+++ b/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.info
@@ -10,8 +10,8 @@ files[] = i18n_string.inc
 files[] = i18n_string.test
 configure = admin/config/regional/i18n/strings
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.module b/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.module
index 1fe45d6b..d184d7dd 100644
--- a/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.module
+++ b/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.module
@@ -153,6 +153,15 @@ function i18n_string_menu_alter(&$items) {
     'file' => 'i18n_string.pages.inc',
     'file path' => drupal_get_path('module', 'i18n_string'),
   );
+  $items['admin/config/regional/translate/translate'] = array(
+    'title' => 'Translate',
+    'weight' => 10,
+    'type' => MENU_LOCAL_TASK,
+    'page callback' => 'i18n_string_locale_translate_seek_screen',
+    'access arguments' => array('translate interface'),
+    'file' => 'i18n_string.pages.inc',
+    'file path' => drupal_get_path('module', 'i18n_string'),
+  );
 }
 
 /**
diff --git a/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc b/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc
index fd657b5a..7e1410ba 100644
--- a/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc
+++ b/drupal7/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc
@@ -459,3 +459,143 @@ function _i18n_string_translate_format_help($format_id) {
   }
   return $output;
 }
+
+/**
+ * String search & translate screen.
+ *
+ * Almost exactly the same as the core locale module's implementation, but
+ * taking i18n_string_source_language into account for the languages column.
+ */
+function i18n_string_locale_translate_seek_screen() {
+  // Add CSS.
+  drupal_add_css(drupal_get_path('module', 'locale') . '/locale.css');
+
+  $elements = drupal_get_form('locale_translation_filter_form');
+  $output = drupal_render($elements);
+  $output .= _i18n_string_locale_translate_seek();
+  return $output;
+}
+
+/**
+ * Perform a string search and display results in a table
+ */
+function _i18n_string_locale_translate_seek() {
+  $output = '';
+
+  // We have at least one criterion to match
+  if (!($query = _locale_translate_seek_query())) {
+    $query = array(
+      'translation' => 'all',
+      'group' => 'all',
+      'language' => 'all',
+      'string' => '',
+    );
+  }
+
+  $sql_query = db_select('locales_source', 's');
+
+  $limit_language = NULL;
+  if ($query['language'] != 'en' && $query['language'] != 'all') {
+    $sql_query->leftJoin('locales_target', 't', "t.lid = s.lid AND t.language = :langcode", array(':langcode' => $query['language']));
+    $limit_language = $query['language'];
+  }
+  else {
+    $sql_query->leftJoin('locales_target', 't', 't.lid = s.lid');
+  }
+
+  $sql_query->fields('s', array('source', 'location', 'context', 'lid', 'textgroup'));
+  $sql_query->fields('t', array('translation', 'language'));
+
+  // Compute LIKE section.
+  switch ($query['translation']) {
+    case 'translated':
+      $sql_query->condition('t.translation', '%' . db_like($query['string']) . '%', 'LIKE');
+      $sql_query->orderBy('t.translation', 'DESC');
+      break;
+    case 'untranslated':
+      $sql_query->condition(db_and()
+        ->condition('s.source', '%' . db_like($query['string']) . '%', 'LIKE')
+        ->isNull('t.translation')
+      );
+      $sql_query->orderBy('s.source');
+      break;
+    case 'all' :
+    default:
+      $condition = db_or()
+        ->condition('s.source', '%' . db_like($query['string']) . '%', 'LIKE');
+      if ($query['language'] != 'en') {
+        // Only search in translations if the language is not forced to English.
+        $condition->condition('t.translation', '%' . db_like($query['string']) . '%', 'LIKE');
+      }
+      $sql_query->condition($condition);
+      break;
+  }
+
+  // Add a condition on the text group.
+  if (!empty($query['group']) && $query['group'] != 'all') {
+    $sql_query->condition('s.textgroup', $query['group']);
+  }
+
+  $sql_query = $sql_query->extend('PagerDefault')->limit(50);
+  $locales = $sql_query->execute();
+
+  $groups = module_invoke_all('locale', 'groups');
+  $header = array(t('Text group'), t('String'), t('Context'), ($limit_language) ? t('Language') : t('Languages'), array('data' => t('Operations'), 'colspan' => '2'));
+
+  $strings = array();
+  foreach ($locales as $locale) {
+    if (!isset($strings[$locale->lid])) {
+      $strings[$locale->lid] = array(
+        'group' => $locale->textgroup,
+        'languages' => array(),
+        'location' => $locale->location,
+        'source' => $locale->source,
+        'context' => $locale->context,
+      );
+    }
+    if (isset($locale->language)) {
+      $strings[$locale->lid]['languages'][$locale->language] = $locale->translation;
+    }
+  }
+
+  $rows = array();
+  foreach ($strings as $lid => $string) {
+    $rows[] = array(
+      $groups[$string['group']],
+      array('data' => check_plain(truncate_utf8($string['source'], 150, FALSE, TRUE)) . '<br /><small>' . $string['location'] . '</small>'),
+      $string['context'],
+      array('data' => _i18n_string_locale_translate_language_list($string, $limit_language), 'align' => 'center'),
+      array('data' => l(t('edit'), "admin/config/regional/translate/edit/$lid", array('query' => drupal_get_destination())), 'class' => array('nowrap')),
+      array('data' => l(t('delete'), "admin/config/regional/translate/delete/$lid", array('query' => drupal_get_destination())), 'class' => array('nowrap')),
+    );
+  }
+
+  $output .= theme('table', array('header' => $header, 'rows' => $rows, 'empty' => t('No strings available.')));
+  $output .= theme('pager');
+
+  return $output;
+}
+
+/**
+ * List languages in search result table.
+ */
+function _i18n_string_locale_translate_language_list($string, $limit_language) {
+  // Add CSS.
+  drupal_add_css(drupal_get_path('module', 'locale') . '/locale.css');
+
+  // Include both translated and not yet translated target languages in the
+  // list. The source language is English for built-in strings and the default
+  // language for other strings.
+  $languages = language_list();
+  $default = language_default();
+  $omit = $string['group'] == 'default' ? 'en' : variable_get('i18n_string_source_language', $default->language);
+  unset($languages[$omit]);
+  $output = '';
+  foreach ($languages as $langcode => $language) {
+    if (!$limit_language || $limit_language == $langcode) {
+      $output .= (!empty($string['languages'][$langcode])) ? $langcode . ' ' : "<em class=\"locale-untranslated\">$langcode</em> ";
+    }
+  }
+
+  return $output;
+}
diff --git a/drupal7/sites/all/modules/i18n/i18n_sync/i18n_sync.info b/drupal7/sites/all/modules/i18n/i18n_sync/i18n_sync.info
index ec5912f5..eb4cc426 100644
--- a/drupal7/sites/all/modules/i18n/i18n_sync/i18n_sync.info
+++ b/drupal7/sites/all/modules/i18n/i18n_sync/i18n_sync.info
@@ -10,8 +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 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info b/drupal7/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info
index fd5113e2..56e4d318 100644
--- a/drupal7/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info
+++ b/drupal7/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.info
@@ -11,8 +11,8 @@ files[] = i18n_taxonomy.pages.inc
 files[] = i18n_taxonomy.admin.inc
 files[] = i18n_taxonomy.test
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module b/drupal7/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module
index fd2fe58c..642a76e2 100644
--- a/drupal7/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module
+++ b/drupal7/sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module
@@ -383,8 +383,8 @@ function i18n_taxonomy_allowed_values($field) {
     if ($vocabulary = taxonomy_vocabulary_machine_name_load($tree['vocabulary'])) {
       if (i18n_taxonomy_vocabulary_mode($vocabulary->vid) == I18N_MODE_TRANSLATE) {
         $parent = i18n_taxonomy_translation_term_tid($tree['parent'], NULL, $tree['parent']);
-        $language = i18n_language_context();
-        $terms = i18n_taxonomy_get_tree($vocabulary->vid, $language->language, $parent);
+        $context_language = i18n_language_context();
+        $terms = i18n_taxonomy_get_tree($vocabulary->vid, $context_language->language, $parent);
       }
       else {
         $terms = taxonomy_get_tree($vocabulary->vid, $tree['parent']);
diff --git a/drupal7/sites/all/modules/i18n/i18n_translation/README.txt b/drupal7/sites/all/modules/i18n/i18n_translation/README.txt
index 7bafbdb5..6bfd3788 100644
--- a/drupal7/sites/all/modules/i18n/i18n_translation/README.txt
+++ b/drupal7/sites/all/modules/i18n/i18n_translation/README.txt
@@ -12,7 +12,7 @@ an Entity thus leveraging all the power of the Entity API.
 
 It also provides some basic storage for translation sets and a generator of new translation set id.
 However, each module is responsible for storing which objects belong to which translation set for which
-it needs to verride some methods of the base i18n_translation_set class.
+it needs to override some methods of the base i18n_translation_set class.
 
 - load_translations()
 - save_translations()
diff --git a/drupal7/sites/all/modules/i18n/i18n_translation/i18n_translation.info b/drupal7/sites/all/modules/i18n/i18n_translation/i18n_translation.info
index b903330b..c8bcfce0 100644
--- a/drupal7/sites/all/modules/i18n/i18n_translation/i18n_translation.info
+++ b/drupal7/sites/all/modules/i18n/i18n_translation/i18n_translation.info
@@ -6,8 +6,8 @@ core = 7.x
 
 files[] = i18n_translation.inc
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_user/i18n_user.info b/drupal7/sites/all/modules/i18n/i18n_user/i18n_user.info
index b6c8fc01..df376259 100644
--- a/drupal7/sites/all/modules/i18n/i18n_user/i18n_user.info
+++ b/drupal7/sites/all/modules/i18n/i18n_user/i18n_user.info
@@ -4,8 +4,8 @@ core = 7.x
 package = Multilingual - Internationalization
 dependencies[] = i18n_variable
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/i18n_variable/i18n_variable.info b/drupal7/sites/all/modules/i18n/i18n_variable/i18n_variable.info
index 517b843e..e991e80c 100644
--- a/drupal7/sites/all/modules/i18n/i18n_variable/i18n_variable.info
+++ b/drupal7/sites/all/modules/i18n/i18n_variable/i18n_variable.info
@@ -10,8 +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 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
diff --git a/drupal7/sites/all/modules/i18n/tests/i18n_test.info b/drupal7/sites/all/modules/i18n/tests/i18n_test.info
index e196b5c1..38b7d43f 100644
--- a/drupal7/sites/all/modules/i18n/tests/i18n_test.info
+++ b/drupal7/sites/all/modules/i18n/tests/i18n_test.info
@@ -7,8 +7,8 @@ package = Testing
 core = 6.x
 hidden = TRUE
 
-; Information added by Drupal.org packaging script on 2020-06-17
-version = "7.x-1.27"
+; Information added by Drupal.org packaging script on 2021-04-26
+version = "7.x-1.31"
 core = "7.x"
 project = "i18n"
-datestamp = "1592373390"
+datestamp = "1619398284"
