]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fixed JS plural function to be per app
authorVincent Petry <pvince81@owncloud.com>
Mon, 16 Dec 2013 14:59:44 +0000 (15:59 +0100)
committerVincent Petry <pvince81@owncloud.com>
Mon, 16 Dec 2013 15:00:23 +0000 (16:00 +0100)
Some apps might not define the same "nplural" value.
To avoid conflicts, the plural function is now generated per app.

Fixes #6427

core/js/js.js

index 5442039c2949a9480ff3cd78ded3b50b58046412..7a6bfd63cc7565ee4be48ae39fdcb008c9c9cbdd 100644 (file)
@@ -48,8 +48,8 @@ function initL10N(app) {
                        t.cache[app] = [];
                }
        }
-       if (typeof t.plural_function == 'undefined') {
-               t.plural_function = function (n) {
+       if (typeof t.plural_function[app] == 'undefined') {
+               t.plural_function[app] = function (n) {
                        var p = (n != 1) ? 1 : 0;
                        return { 'nplural' : 2, 'plural' : p };
                };
@@ -74,7 +74,7 @@ function initL10N(app) {
                         Gettext._locale_data[domain].head.plural_func = eval("("+code+")");
                         */
                        var code = 'var plural; var nplurals; '+pf+' return { "nplural" : nplurals, "plural" : (plural === true ? 1 : plural ? plural : 0) };';
-                       t.plural_function = new Function("n", code);
+                       t.plural_function[app] = new Function("n", code);
                } else {
                        console.log("Syntax error in language file. Plural-Forms header is invalid ["+t.plural_forms+"]");
                }
@@ -110,6 +110,10 @@ function t(app, text, vars, count){
        }
 }
 t.cache = {};
+// different apps might or might not redefine the nplurals function correctly
+// this is to make sure that a "broken" app doesn't mess up with the
+// other app's plural function
+t.plural_function = {};
 
 /**
  * translate a string
@@ -126,7 +130,7 @@ function n(app, text_singular, text_plural, count, vars) {
        if( typeof( t.cache[app][identifier] ) !== 'undefined' ){
                var translation = t.cache[app][identifier];
                if ($.isArray(translation)) {
-                       var plural = t.plural_function(count);
+                       var plural = t.plural_function[app](count);
                        return t(app, translation[plural.plural], vars, count);
                }
        }