diff --git a/frontend/drupal/sites/all/modules/i18n/i18n.info b/frontend/drupal/sites/all/modules/i18n/i18n.info index ec7ac1824..162f78e81 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n.module b/frontend/drupal/sites/all/modules/i18n/i18n.module index 4985271f4..cf38678bc 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n.module +++ b/frontend/drupal/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 = '
' . t('This module improves support for multilingual content in Drupal sites:') . '
'; diff --git a/frontend/drupal/sites/all/modules/i18n/i18n_block/i18n_block.info b/frontend/drupal/sites/all/modules/i18n/i18n_block/i18n_block.info index 0a32676e7..c90cc2bfe 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_block/i18n_block.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_block/i18n_block.module b/frontend/drupal/sites/all/modules/i18n/i18n_block/i18n_block.module index 6c8c79bb1..333457e3a 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_block/i18n_block.module +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_contact/i18n_contact.info b/frontend/drupal/sites/all/modules/i18n/i18n_contact/i18n_contact.info index e1084bdf1..a592f71b5 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_contact/i18n_contact.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_field/i18n_field.info b/frontend/drupal/sites/all/modules/i18n/i18n_field/i18n_field.info index 2c126d89c..8c5e2a16b 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_field/i18n_field.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_field/i18n_field.module b/frontend/drupal/sites/all/modules/i18n/i18n_field/i18n_field.module index 6f97006b0..fe9f0f01f 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_field/i18n_field.module +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_forum/i18n_forum.info b/frontend/drupal/sites/all/modules/i18n/i18n_forum/i18n_forum.info index 249fb66a0..4ea84b872 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_forum/i18n_forum.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_menu/i18n_menu.info b/frontend/drupal/sites/all/modules/i18n/i18n_menu/i18n_menu.info index 5b210b9c3..83af4d2ad 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_menu/i18n_menu.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.info b/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.info index ba222a1e4..c30324f2d 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.module b/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.module index b6957e8f7..29d6ab0dd 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.module +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc b/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc index 4e13ba676..f20cfa2ba 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_node/i18n_node.pages.inc +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_path/i18n_path.info b/frontend/drupal/sites/all/modules/i18n/i18n_path/i18n_path.info index bb3519e07..cc1b8f25d 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_path/i18n_path.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info b/frontend/drupal/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info index 2ceeb19c5..00117ba0c 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_redirect/i18n_redirect.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_select/i18n_select.info b/frontend/drupal/sites/all/modules/i18n/i18n_select/i18n_select.info index 5c72eab56..3fa57496e 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_select/i18n_select.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.info b/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.info index 327539ee2..43b7d50e6 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.info +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.module b/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.module index 1fe45d6b4..d184d7dd5 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.module +++ b/frontend/drupal/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/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc b/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc index fd657b5a5..7e1410ba8 100644 --- a/frontend/drupal/sites/all/modules/i18n/i18n_string/i18n_string.pages.inc +++ b/frontend/drupal/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)) . '