kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
				
				
				
			
		
			
				
	
	
		
			531 wiersze
		
	
	
		
			13 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			531 wiersze
		
	
	
		
			13 KiB
		
	
	
	
		
			JavaScript
		
	
	
| /* eslint-disable no-tabs */
 | |
| /* global pluralRuleParser */
 | |
| (function ($)
 | |
| {
 | |
|   "use strict";
 | |
| 
 | |
|   // jscs:disable
 | |
|   var language = {
 | |
|     // CLDR plural rules generated using
 | |
|     // libs/CLDRPluralRuleParser/tools/PluralXML2JSON.html
 | |
|     pluralRules: {
 | |
|       ak: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       am: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       },
 | |
|       ar: {
 | |
|         zero: "n = 0",
 | |
|         one: "n = 1",
 | |
|         two: "n = 2",
 | |
|         few: "n % 100 = 3..10",
 | |
|         many: "n % 100 = 11..99"
 | |
|       },
 | |
|       ars: {
 | |
|         zero: "n = 0",
 | |
|         one: "n = 1",
 | |
|         two: "n = 2",
 | |
|         few: "n % 100 = 3..10",
 | |
|         many: "n % 100 = 11..99"
 | |
|       },
 | |
|       as: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       },
 | |
|       be: {
 | |
|         one: "n % 10 = 1 and n % 100 != 11",
 | |
|         few: "n % 10 = 2..4 and n % 100 != 12..14",
 | |
|         many: "n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14"
 | |
|       },
 | |
|       bh: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       bn: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       },
 | |
|       br: {
 | |
|         one: "n % 10 = 1 and n % 100 != 11,71,91",
 | |
|         two: "n % 10 = 2 and n % 100 != 12,72,92",
 | |
|         few: "n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99",
 | |
|         many: "n != 0 and n % 1000000 = 0"
 | |
|       },
 | |
|       bs: {
 | |
|         one: "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11",
 | |
|         few: "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14"
 | |
|       },
 | |
|       cs: {
 | |
|         one: "i = 1 and v = 0",
 | |
|         few: "i = 2..4 and v = 0",
 | |
|         many: "v != 0"
 | |
|       },
 | |
|       cy: {
 | |
|         zero: "n = 0",
 | |
|         one: "n = 1",
 | |
|         two: "n = 2",
 | |
|         few: "n = 3",
 | |
|         many: "n = 6"
 | |
|       },
 | |
|       da: {
 | |
|         one: "n = 1 or t != 0 and i = 0,1"
 | |
|       },
 | |
|       dsb: {
 | |
|         one: "v = 0 and i % 100 = 1 or f % 100 = 1",
 | |
|         two: "v = 0 and i % 100 = 2 or f % 100 = 2",
 | |
|         few: "v = 0 and i % 100 = 3..4 or f % 100 = 3..4"
 | |
|       },
 | |
|       fa: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       },
 | |
|       ff: {
 | |
|         one: "i = 0,1"
 | |
|       },
 | |
|       fil: {
 | |
|         one: "v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9"
 | |
|       },
 | |
|       fr: {
 | |
|         one: "i = 0,1"
 | |
|       },
 | |
|       ga: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2",
 | |
|         few: "n = 3..6",
 | |
|         many: "n = 7..10"
 | |
|       },
 | |
|       gd: {
 | |
|         one: "n = 1,11",
 | |
|         two: "n = 2,12",
 | |
|         few: "n = 3..10,13..19"
 | |
|       },
 | |
|       gu: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       },
 | |
|       guw: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       gv: {
 | |
|         one: "v = 0 and i % 10 = 1",
 | |
|         two: "v = 0 and i % 10 = 2",
 | |
|         few: "v = 0 and i % 100 = 0,20,40,60,80",
 | |
|         many: "v != 0"
 | |
|       },
 | |
|       he: {
 | |
|         one: "i = 1 and v = 0",
 | |
|         two: "i = 2 and v = 0",
 | |
|         many: "v = 0 and n != 0..10 and n % 10 = 0"
 | |
|       },
 | |
|       hi: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       },
 | |
|       hr: {
 | |
|         one: "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11",
 | |
|         few: "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14"
 | |
|       },
 | |
|       hsb: {
 | |
|         one: "v = 0 and i % 100 = 1 or f % 100 = 1",
 | |
|         two: "v = 0 and i % 100 = 2 or f % 100 = 2",
 | |
|         few: "v = 0 and i % 100 = 3..4 or f % 100 = 3..4"
 | |
|       },
 | |
|       hy: {
 | |
|         one: "i = 0,1"
 | |
|       },
 | |
|       is: {
 | |
|         one: "t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0"
 | |
|       },
 | |
|       iu: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       iw: {
 | |
|         one: "i = 1 and v = 0",
 | |
|         two: "i = 2 and v = 0",
 | |
|         many: "v = 0 and n != 0..10 and n % 10 = 0"
 | |
|       },
 | |
|       kab: {
 | |
|         one: "i = 0,1"
 | |
|       },
 | |
|       kn: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       },
 | |
|       kw: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       lag: {
 | |
|         zero: "n = 0",
 | |
|         one: "i = 0,1 and n != 0"
 | |
|       },
 | |
|       ln: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       lt: {
 | |
|         one: "n % 10 = 1 and n % 100 != 11..19",
 | |
|         few: "n % 10 = 2..9 and n % 100 != 11..19",
 | |
|         many: "f != 0"
 | |
|       },
 | |
|       lv: {
 | |
|         zero: "n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19",
 | |
|         one: "n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1"
 | |
|       },
 | |
|       mg: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       mk: {
 | |
|         one: "v = 0 and i % 10 = 1 or f % 10 = 1"
 | |
|       },
 | |
|       mo: {
 | |
|         one: "i = 1 and v = 0",
 | |
|         few: "v != 0 or n = 0 or n != 1 and n % 100 = 1..19"
 | |
|       },
 | |
|       mr: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       },
 | |
|       mt: {
 | |
|         one: "n = 1",
 | |
|         few: "n = 0 or n % 100 = 2..10",
 | |
|         many: "n % 100 = 11..19"
 | |
|       },
 | |
|       naq: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       nso: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       pa: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       pl: {
 | |
|         one: "i = 1 and v = 0",
 | |
|         few: "v = 0 and i % 10 = 2..4 and i % 100 != 12..14",
 | |
|         many: "v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14"
 | |
|       },
 | |
|       prg: {
 | |
|         zero: "n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19",
 | |
|         one: "n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1"
 | |
|       },
 | |
|       pt: {
 | |
|         one: "i = 0..1"
 | |
|       },
 | |
|       ro: {
 | |
|         one: "i = 1 and v = 0",
 | |
|         few: "v != 0 or n = 0 or n != 1 and n % 100 = 1..19"
 | |
|       },
 | |
|       ru: {
 | |
|         one: "v = 0 and i % 10 = 1 and i % 100 != 11",
 | |
|         few: "v = 0 and i % 10 = 2..4 and i % 100 != 12..14",
 | |
|         many: "v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14"
 | |
|       },
 | |
|       se: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       sh: {
 | |
|         one: "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11",
 | |
|         few: "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14"
 | |
|       },
 | |
|       shi: {
 | |
|         one: "i = 0 or n = 1",
 | |
|         few: "n = 2..10"
 | |
|       },
 | |
|       si: {
 | |
|         one: "n = 0,1 or i = 0 and f = 1"
 | |
|       },
 | |
|       sk: {
 | |
|         one: "i = 1 and v = 0",
 | |
|         few: "i = 2..4 and v = 0",
 | |
|         many: "v != 0"
 | |
|       },
 | |
|       sl: {
 | |
|         one: "v = 0 and i % 100 = 1",
 | |
|         two: "v = 0 and i % 100 = 2",
 | |
|         few: "v = 0 and i % 100 = 3..4 or v != 0"
 | |
|       },
 | |
|       sma: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       smi: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       smj: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       smn: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       sms: {
 | |
|         one: "n = 1",
 | |
|         two: "n = 2"
 | |
|       },
 | |
|       sr: {
 | |
|         one: "v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11",
 | |
|         few: "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14"
 | |
|       },
 | |
|       ti: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       tl: {
 | |
|         one: "v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9"
 | |
|       },
 | |
|       tzm: {
 | |
|         one: "n = 0..1 or n = 11..99"
 | |
|       },
 | |
|       uk: {
 | |
|         one: "v = 0 and i % 10 = 1 and i % 100 != 11",
 | |
|         few: "v = 0 and i % 10 = 2..4 and i % 100 != 12..14",
 | |
|         many: "v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14"
 | |
|       },
 | |
|       wa: {
 | |
|         one: "n = 0..1"
 | |
|       },
 | |
|       zu: {
 | |
|         one: "i = 0 or n = 1"
 | |
|       }
 | |
|     },
 | |
|     // jscs:enable
 | |
| 
 | |
|     /**
 | |
| 		 * Plural form transformations, needed for some languages.
 | |
| 		 *
 | |
| 		 * @param {integer} count
 | |
| 		 *            Non-localized quantifier
 | |
| 		 * @param {Array} forms
 | |
| 		 *            List of plural forms
 | |
| 		 * @return {string} Correct form for quantifier in this language
 | |
| 		 */
 | |
|     convertPlural: function (count, forms)
 | |
|     {
 | |
|       var pluralRules,
 | |
|         pluralFormIndex,
 | |
|         index,
 | |
|         explicitPluralPattern = /\d+=/i,
 | |
|         formCount,
 | |
|         form;
 | |
| 
 | |
|       if (!forms || forms.length === 0)
 | |
|       {
 | |
|         return "";
 | |
|       }
 | |
| 
 | |
|       // Handle for Explicit 0= & 1= values
 | |
|       for (index = 0; index < forms.length; index++)
 | |
|       {
 | |
|         form = forms[index];
 | |
|         if (explicitPluralPattern.test(form))
 | |
|         {
 | |
|           formCount = parseInt(form.slice(0, form.indexOf("=")), 10);
 | |
|           if (formCount === count)
 | |
|           {
 | |
|             return (form.slice(form.indexOf("=") + 1));
 | |
|           }
 | |
|           forms[index] = undefined;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       forms = $.map(forms, function (form)
 | |
|       {
 | |
|         if (form !== undefined)
 | |
|         {
 | |
|           return form;
 | |
|         }
 | |
|       });
 | |
| 
 | |
|       pluralRules = this.pluralRules[$.i18n().locale];
 | |
| 
 | |
|       if (!pluralRules)
 | |
|       {
 | |
|         // default fallback.
 | |
|         return (count === 1) ? forms[0] : forms[1];
 | |
|       }
 | |
| 
 | |
|       pluralFormIndex = this.getPluralForm(count, pluralRules);
 | |
|       pluralFormIndex = Math.min(pluralFormIndex, forms.length - 1);
 | |
| 
 | |
|       return forms[pluralFormIndex];
 | |
|     },
 | |
| 
 | |
|     /**
 | |
| 		 * For the number, get the plural for index
 | |
| 		 *
 | |
| 		 * @param {integer} number
 | |
| 		 * @param {Object} pluralRules
 | |
| 		 * @return {integer} plural form index
 | |
| 		 */
 | |
|     getPluralForm: function (number, pluralRules)
 | |
|     {
 | |
|       var i,
 | |
|         pluralForms = ["zero", "one", "two", "few", "many", "other"],
 | |
|         pluralFormIndex = 0;
 | |
| 
 | |
|       for (i = 0; i < pluralForms.length; i++)
 | |
|       {
 | |
|         if (pluralRules[pluralForms[i]])
 | |
|         {
 | |
|           if (pluralRuleParser(pluralRules[pluralForms[i]], number))
 | |
|           {
 | |
|             return pluralFormIndex;
 | |
|           }
 | |
| 
 | |
|           pluralFormIndex++;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       return pluralFormIndex;
 | |
|     },
 | |
| 
 | |
|     /**
 | |
| 		 * Converts a number using digitTransformTable.
 | |
| 		 *
 | |
| 		 * @param {number} num Value to be converted
 | |
| 		 * @param {boolean} integer Convert the return value to an integer
 | |
| 		 * @return {string} The number converted into a String.
 | |
| 		 */
 | |
|     convertNumber: function (num, integer)
 | |
|     {
 | |
|       var tmp, item, i,
 | |
|         transformTable, numberString, convertedNumber;
 | |
| 
 | |
|       // Set the target Transform table:
 | |
|       transformTable = this.digitTransformTable($.i18n().locale);
 | |
|       numberString = String(num);
 | |
|       convertedNumber = "";
 | |
| 
 | |
|       if (!transformTable)
 | |
|       {
 | |
|         return num;
 | |
|       }
 | |
| 
 | |
|       // Check if the restore to Latin number flag is set:
 | |
|       if (integer)
 | |
|       {
 | |
|         if (parseFloat(num, 10) === num)
 | |
|         {
 | |
|           return num;
 | |
|         }
 | |
| 
 | |
|         tmp = [];
 | |
| 
 | |
|         for (item in transformTable)
 | |
|         {
 | |
|           tmp[transformTable[item]] = item;
 | |
|         }
 | |
| 
 | |
|         transformTable = tmp;
 | |
|       }
 | |
| 
 | |
|       for (i = 0; i < numberString.length; i++)
 | |
|       {
 | |
|         if (transformTable[numberString[i]])
 | |
|         {
 | |
|           convertedNumber += transformTable[numberString[i]];
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|           convertedNumber += numberString[i];
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       return integer ? parseFloat(convertedNumber, 10) : convertedNumber;
 | |
|     },
 | |
| 
 | |
|     /**
 | |
| 		 * Grammatical transformations, needed for inflected languages.
 | |
| 		 * Invoked by putting {{grammar:form|word}} in a message.
 | |
| 		 * Override this method for languages that need special grammar rules
 | |
| 		 * applied dynamically.
 | |
| 		 *
 | |
| 		 * @param {string} word
 | |
| 		 * @param {string} form
 | |
| 		 * @return {string}
 | |
| 		 */
 | |
|     // eslint-disable-next-line no-unused-vars
 | |
|     convertGrammar: function (word, form)
 | |
|     {
 | |
|       return word;
 | |
|     },
 | |
| 
 | |
|     /**
 | |
| 		 * Provides an alternative text depending on specified gender. Usage
 | |
| 		 * {{gender:[gender|user object]|masculine|feminine|neutral}}. If second
 | |
| 		 * or third parameter are not specified, masculine is used.
 | |
| 		 *
 | |
| 		 * These details may be overriden per language.
 | |
| 		 *
 | |
| 		 * @param {string} gender
 | |
| 		 *      male, female, or anything else for neutral.
 | |
| 		 * @param {Array} forms
 | |
| 		 *      List of gender forms
 | |
| 		 *
 | |
| 		 * @return {string}
 | |
| 		 */
 | |
|     gender: function (gender, forms)
 | |
|     {
 | |
|       if (!forms || forms.length === 0)
 | |
|       {
 | |
|         return "";
 | |
|       }
 | |
| 
 | |
|       while (forms.length < 2)
 | |
|       {
 | |
|         forms.push(forms[forms.length - 1]);
 | |
|       }
 | |
| 
 | |
|       if (gender === "male")
 | |
|       {
 | |
|         return forms[0];
 | |
|       }
 | |
| 
 | |
|       if (gender === "female")
 | |
|       {
 | |
|         return forms[1];
 | |
|       }
 | |
| 
 | |
|       return (forms.length === 3) ? forms[2] : forms[0];
 | |
|     },
 | |
| 
 | |
|     /**
 | |
| 		 * Get the digit transform table for the given language
 | |
| 		 * See http://cldr.unicode.org/translation/numbering-systems
 | |
| 		 *
 | |
| 		 * @param {string} language
 | |
| 		 * @return {Array|boolean} List of digits in the passed language or false
 | |
| 		 * representation, or boolean false if there is no information.
 | |
| 		 */
 | |
|     digitTransformTable: function (language)
 | |
|     {
 | |
|       var tables = {
 | |
|         ar: "٠١٢٣٤٥٦٧٨٩",
 | |
|         fa: "۰۱۲۳۴۵۶۷۸۹",
 | |
|         ml: "൦൧൨൩൪൫൬൭൮൯",
 | |
|         kn: "೦೧೨೩೪೫೬೭೮೯",
 | |
|         lo: "໐໑໒໓໔໕໖໗໘໙",
 | |
|         or: "୦୧୨୩୪୫୬୭୮୯",
 | |
|         kh: "០១២៣៤៥៦៧៨៩",
 | |
|         nqo: "߀߁߂߃߄߅߆߇߈߉", // Note that the digits go right to left
 | |
|         pa: "੦੧੨੩੪੫੬੭੮੯",
 | |
|         gu: "૦૧૨૩૪૫૬૭૮૯",
 | |
|         hi: "०१२३४५६७८९",
 | |
|         my: "၀၁၂၃၄၅၆၇၈၉",
 | |
|         ta: "௦௧௨௩௪௫௬௭௮௯",
 | |
|         te: "౦౧౨౩౪౫౬౭౮౯",
 | |
|         th: "๐๑๒๓๔๕๖๗๘๙", // FIXME use iso 639 codes
 | |
|         bo: "༠༡༢༣༤༥༦༧༨༩" // FIXME use iso 639 codes
 | |
|       };
 | |
| 
 | |
|       if (!tables[language])
 | |
|       {
 | |
|         return false;
 | |
|       }
 | |
| 
 | |
|       return tables[language].split("");
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   $.extend($.i18n.languages, {
 | |
|     default: language
 | |
|   });
 | |
| }(jQuery));
 |