Issue #504506 by andypost, pillarsdotnet, podarok: Drupal.formatPlural() did not...
authorGábor Hojtsy
Mon, 23 Jan 2012 13:03:11 +0000 (14:03 +0100)
committerGábor Hojtsy
Mon, 23 Jan 2012 13:03:11 +0000 (14:03 +0100)
includes/locale.inc
misc/drupal.js
modules/locale/locale.install

index 8e03da4..e1692ca 100644 (file)
@@ -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.
index c140c7c..f29e398 100644 (file)
@@ -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);
   }
 };
 
index 9c54105..e29b6e5 100644 (file)
@@ -225,6 +225,24 @@ function locale_update_6006() {
  */
 
 /**
+ * @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().
  */
 function locale_uninstall() {