diff --git a/includes/locale.inc b/includes/locale.inc index 8e03da4402ac4a4b10f10679c644c4df2e16c90c..e1692ca6792709d5fff803df64760d8cd96172d7 100644 --- a/includes/locale.inc +++ b/includes/locale.inc @@ -2158,35 +2158,12 @@ function _locale_rebuild_js($langcode = NULL) { } // Construct the array for JavaScript translations. - // We sort on plural so that we have all plural forms before singular forms. - $result = db_query("SELECT s.lid, s.source, t.plid, t.plural, t.translation FROM {locales_source} s LEFT JOIN {locales_target} t ON s.lid = t.lid AND t.language = '%s' WHERE s.location LIKE '%%.js%%' AND s.textgroup = 'default' ORDER BY t.plural DESC", $language->language); + // Only add strings with a translation to the translations array. + $result = db_query("SELECT s.lid, s.source, t.translation FROM {locales_source} s INNER JOIN {locales_target} t ON s.lid = t.lid AND t.language = '%s' WHERE s.location LIKE '%%.js%%' AND s.textgroup = 'default'", $language->language); - $translations = $plurals = array(); + $translations = array(); while ($data = db_fetch_object($result)) { - // Only add this to the translations array when there is actually a translation. - if (!empty($data->translation)) { - if ($data->plural) { - // When the translation is a plural form, first add it to another array and - // wait for the singular (parent) translation. - if (!isset($plurals[$data->plid])) { - $plurals[$data->plid] = array($data->plural => $data->translation); - } - else { - $plurals[$data->plid] += array($data->plural => $data->translation); - } - } - elseif (isset($plurals[$data->lid])) { - // There are plural translations for this translation, so get them from - // the plurals array and add them to the final translations array. - $translations[$data->source] = array($data->plural => $data->translation) + $plurals[$data->lid]; - unset($plurals[$data->lid]); - } - else { - // There are no plural forms for this translation, so just add it to - // the translations array. - $translations[$data->source] = $data->translation; - } - } + $translations[$data->source] = $data->translation; } // Construct the JavaScript file, if there are translations. diff --git a/misc/drupal.js b/misc/drupal.js index c140c7cd3d41bd0115ab731c2d55914bd908d837..f29e39810d4470aa25c0b2ee9e4881155a789912 100644 --- a/misc/drupal.js +++ b/misc/drupal.js @@ -149,7 +149,7 @@ Drupal.formatPlural = function(count, singular, plural, args) { else { args['@count['+ index +']'] = args['@count']; delete args['@count']; - return Drupal.t(plural.replace('@count', '@count['+ index +']')); + return Drupal.t(plural.replace('@count', '@count['+ index +']'), args); } }; diff --git a/modules/locale/locale.install b/modules/locale/locale.install index 9c54105a9e06b0d916919c8d0da24984c561963c..e29b6e519ca39f632e8b1c744c7ec7d97e9182c4 100644 --- a/modules/locale/locale.install +++ b/modules/locale/locale.install @@ -224,6 +224,24 @@ function locale_update_6006() { * @} End of "defgroup updates-5.x-to-6.x" */ +/** + * @defgroup updates-6.x-extra Locale updates for 6.x + * @{ + */ + +/** + * Fix Drupal.formatPlural(). + */ +function locale_update_6007() { + locale_inc_callback('_locale_invalidate_js'); + return array(); +} + +/** + * @} End of "defgroup updates-6.x-extra" + * The next series of updates should start at 7000. + */ + /** * Implementation of hook_uninstall(). */