/*______________ | ______ | U I Z E J A V A S C R I P T F R A M E W O R K | / / | --------------------------------------------------- | / O / | MODULE : Uize.Loc.Plurals.Langs.tl Package | / / / | | / / / /| | ONLINE : http://uize.com | /____/ /__/_| | COPYRIGHT : (c)2015-2016 UIZE | /___ | LICENSE : Available under MIT License or GNU General Public License |_______________| http://uize.com/license.html */ /* Module Meta Data type: Package importance: 1 codeCompleteness: 100 docCompleteness: 100 */ /*? Introduction The =Uize.Loc.Plurals.Langs.tl= module implements a feature for determining a plural category from a number value for the tl language. *DEVELOPERS:* `Chris van Rensburg` Plural Categories ........................................................ << table >> title: Plural Categories data: :| Category | Rule | :| 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 @integer 0~3, 5, 7, 8, 10~13, 15, 17, 18, 20, 21, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.3, 0.5, 0.7, 0.8, 1.0~1.3, 1.5, 1.7, 1.8, 2.0, 2.1, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … | :| other | @integer 4, 6, 9, 14, 16, 19, 24, 26, 104, 1004, … @decimal 0.4, 0.6, 0.9, 1.4, 1.6, 1.9, 2.4, 2.6, 10.4, 100.4, 1000.4, … | ........................................................ */ Uize.module ({ name:'Uize.Loc.Plurals.Langs.tl', required:'Uize.Loc.Plurals.Util', builder:function () { 'use strict'; return Uize.package ({ getPluralCategory:function (_value) { return Uize.Loc.Plurals.Util.getPluralCategory ( _value, function (n,i,f,t,v,w,within) { return v == 0 && within (i,[1,2,3]) || v == 0 && !within (i % 10,[4,6,9]) || v != 0 && !within (f % 10,[4,6,9]) ? 'one' : 'other'; } ); } }); } });