SOURCE CODE: Uize.Loc.Plurals.ClassesInfo (view docs)

/*______________
|       ______  |   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.ClassesInfo Package
|   /    / /    |
|  /    / /  /| |    ONLINE : http://www.uize.com
| /____/ /__/_| | COPYRIGHT : (c)2015-2016 UIZE
|          /___ |   LICENSE : Available under MIT License or GNU General Public License
|_______________|             http://www.uize.com/license.html
*/

/* Module Meta Data
  type: Package
  importance: 1
  codeCompleteness: 100
  docCompleteness: 100
*/

/*?
  Introduction
    The =Uize.Loc.Plurals.ClassesInfo= module implements a feature for determining the plural categories supported for a specific language.

    *DEVELOPERS:* `Chris van Rensburg`
*/

Uize.module ({
  name:'Uize.Loc.Plurals.ClassesInfo',
  builder:function () {
    'use strict';

    var
      /*** General Variables ***/
        _classesByLanguage = {
          af:[
            'one',
            'other'
          ],
          ak:[
            'one',
            'other'
          ],
          am:[
            'one',
            'other'
          ],
          ar:[
            'zero',
            'one',
            'two',
            'few',
            'many',
            'other'
          ],
          asa:[
            'one',
            'other'
          ],
          ast:[
            'one',
            'other'
          ],
          az:[
            'one',
            'other'
          ],
          be:[
            'one',
            'few',
            'many',
            'other'
          ],
          bem:[
            'one',
            'other'
          ],
          bez:[
            'one',
            'other'
          ],
          bg:[
            'one',
            'other'
          ],
          bh:[
            'one',
            'other'
          ],
          bm:[
            'other'
          ],
          bn:[
            'one',
            'other'
          ],
          bo:[
            'other'
          ],
          br:[
            'one',
            'two',
            'few',
            'many',
            'other'
          ],
          brx:[
            'one',
            'other'
          ],
          bs:[
            'one',
            'few',
            'other'
          ],
          ca:[
            'one',
            'other'
          ],
          cgg:[
            'one',
            'other'
          ],
          chr:[
            'one',
            'other'
          ],
          ckb:[
            'one',
            'other'
          ],
          cs:[
            'one',
            'few',
            'many',
            'other'
          ],
          cy:[
            'zero',
            'one',
            'two',
            'few',
            'many',
            'other'
          ],
          da:[
            'one',
            'other'
          ],
          de:[
            'one',
            'other'
          ],
          dsb:[
            'one',
            'two',
            'few',
            'other'
          ],
          dv:[
            'one',
            'other'
          ],
          dz:[
            'other'
          ],
          ee:[
            'one',
            'other'
          ],
          el:[
            'one',
            'other'
          ],
          en:[
            'one',
            'other'
          ],
          eo:[
            'one',
            'other'
          ],
          es:[
            'one',
            'other'
          ],
          et:[
            'one',
            'other'
          ],
          eu:[
            'one',
            'other'
          ],
          fa:[
            'one',
            'other'
          ],
          ff:[
            'one',
            'other'
          ],
          fi:[
            'one',
            'other'
          ],
          fil:[
            'one',
            'other'
          ],
          fo:[
            'one',
            'other'
          ],
          fr:[
            'one',
            'other'
          ],
          fur:[
            'one',
            'other'
          ],
          fy:[
            'one',
            'other'
          ],
          ga:[
            'one',
            'two',
            'few',
            'many',
            'other'
          ],
          gd:[
            'one',
            'two',
            'few',
            'other'
          ],
          gl:[
            'one',
            'other'
          ],
          gsw:[
            'one',
            'other'
          ],
          gu:[
            'one',
            'other'
          ],
          guw:[
            'one',
            'other'
          ],
          gv:[
            'one',
            'two',
            'few',
            'many',
            'other'
          ],
          ha:[
            'one',
            'other'
          ],
          haw:[
            'one',
            'other'
          ],
          he:[
            'one',
            'two',
            'many',
            'other'
          ],
          hi:[
            'one',
            'other'
          ],
          hr:[
            'one',
            'few',
            'other'
          ],
          hsb:[
            'one',
            'two',
            'few',
            'other'
          ],
          hu:[
            'one',
            'other'
          ],
          hy:[
            'one',
            'other'
          ],
          id:[
            'other'
          ],
          ig:[
            'other'
          ],
          ii:[
            'other'
          ],
          'in':[
            'other'
          ],
          is:[
            'one',
            'other'
          ],
          it:[
            'one',
            'other'
          ],
          iu:[
            'one',
            'two',
            'other'
          ],
          iw:[
            'one',
            'two',
            'many',
            'other'
          ],
          ja:[
            'other'
          ],
          jbo:[
            'other'
          ],
          jgo:[
            'one',
            'other'
          ],
          ji:[
            'one',
            'other'
          ],
          jmc:[
            'one',
            'other'
          ],
          jv:[
            'other'
          ],
          jw:[
            'other'
          ],
          ka:[
            'one',
            'other'
          ],
          kab:[
            'one',
            'other'
          ],
          kaj:[
            'one',
            'other'
          ],
          kcg:[
            'one',
            'other'
          ],
          kde:[
            'other'
          ],
          kea:[
            'other'
          ],
          kk:[
            'one',
            'other'
          ],
          kkj:[
            'one',
            'other'
          ],
          kl:[
            'one',
            'other'
          ],
          km:[
            'other'
          ],
          kn:[
            'one',
            'other'
          ],
          ko:[
            'other'
          ],
          ks:[
            'one',
            'other'
          ],
          ksb:[
            'one',
            'other'
          ],
          ksh:[
            'zero',
            'one',
            'other'
          ],
          ku:[
            'one',
            'other'
          ],
          kw:[
            'one',
            'two',
            'other'
          ],
          ky:[
            'one',
            'other'
          ],
          lag:[
            'zero',
            'one',
            'other'
          ],
          lb:[
            'one',
            'other'
          ],
          lg:[
            'one',
            'other'
          ],
          lkt:[
            'other'
          ],
          ln:[
            'one',
            'other'
          ],
          lo:[
            'other'
          ],
          lt:[
            'one',
            'few',
            'many',
            'other'
          ],
          lv:[
            'zero',
            'one',
            'other'
          ],
          mas:[
            'one',
            'other'
          ],
          mg:[
            'one',
            'other'
          ],
          mgo:[
            'one',
            'other'
          ],
          mk:[
            'one',
            'other'
          ],
          ml:[
            'one',
            'other'
          ],
          mn:[
            'one',
            'other'
          ],
          mo:[
            'one',
            'few',
            'other'
          ],
          mr:[
            'one',
            'other'
          ],
          ms:[
            'other'
          ],
          mt:[
            'one',
            'few',
            'many',
            'other'
          ],
          my:[
            'other'
          ],
          nah:[
            'one',
            'other'
          ],
          naq:[
            'one',
            'two',
            'other'
          ],
          nb:[
            'one',
            'other'
          ],
          nd:[
            'one',
            'other'
          ],
          ne:[
            'one',
            'other'
          ],
          nl:[
            'one',
            'other'
          ],
          nn:[
            'one',
            'other'
          ],
          nnh:[
            'one',
            'other'
          ],
          no:[
            'one',
            'other'
          ],
          nqo:[
            'other'
          ],
          nr:[
            'one',
            'other'
          ],
          nso:[
            'one',
            'other'
          ],
          ny:[
            'one',
            'other'
          ],
          nyn:[
            'one',
            'other'
          ],
          om:[
            'one',
            'other'
          ],
          or:[
            'one',
            'other'
          ],
          os:[
            'one',
            'other'
          ],
          pa:[
            'one',
            'other'
          ],
          pap:[
            'one',
            'other'
          ],
          pl:[
            'one',
            'few',
            'many',
            'other'
          ],
          prg:[
            'zero',
            'one',
            'other'
          ],
          ps:[
            'one',
            'other'
          ],
          pt:[
            'one',
            'other'
          ],
          'pt-PT':[
            'one',
            'other'
          ],
          rm:[
            'one',
            'other'
          ],
          ro:[
            'one',
            'few',
            'other'
          ],
          rof:[
            'one',
            'other'
          ],
          root:[
            'other'
          ],
          ru:[
            'one',
            'few',
            'many',
            'other'
          ],
          rwk:[
            'one',
            'other'
          ],
          sah:[
            'other'
          ],
          saq:[
            'one',
            'other'
          ],
          se:[
            'one',
            'two',
            'other'
          ],
          seh:[
            'one',
            'other'
          ],
          ses:[
            'other'
          ],
          sg:[
            'other'
          ],
          sh:[
            'one',
            'few',
            'other'
          ],
          shi:[
            'one',
            'few',
            'other'
          ],
          si:[
            'one',
            'other'
          ],
          sk:[
            'one',
            'few',
            'many',
            'other'
          ],
          sl:[
            'one',
            'two',
            'few',
            'other'
          ],
          sma:[
            'one',
            'two',
            'other'
          ],
          smi:[
            'one',
            'two',
            'other'
          ],
          smj:[
            'one',
            'two',
            'other'
          ],
          smn:[
            'one',
            'two',
            'other'
          ],
          sms:[
            'one',
            'two',
            'other'
          ],
          sn:[
            'one',
            'other'
          ],
          so:[
            'one',
            'other'
          ],
          sq:[
            'one',
            'other'
          ],
          sr:[
            'one',
            'few',
            'other'
          ],
          ss:[
            'one',
            'other'
          ],
          ssy:[
            'one',
            'other'
          ],
          st:[
            'one',
            'other'
          ],
          sv:[
            'one',
            'other'
          ],
          sw:[
            'one',
            'other'
          ],
          syr:[
            'one',
            'other'
          ],
          ta:[
            'one',
            'other'
          ],
          te:[
            'one',
            'other'
          ],
          teo:[
            'one',
            'other'
          ],
          th:[
            'other'
          ],
          ti:[
            'one',
            'other'
          ],
          tig:[
            'one',
            'other'
          ],
          tk:[
            'one',
            'other'
          ],
          tl:[
            'one',
            'other'
          ],
          tn:[
            'one',
            'other'
          ],
          to:[
            'other'
          ],
          tr:[
            'one',
            'other'
          ],
          ts:[
            'one',
            'other'
          ],
          tzm:[
            'one',
            'other'
          ],
          ug:[
            'one',
            'other'
          ],
          uk:[
            'one',
            'few',
            'many',
            'other'
          ],
          ur:[
            'one',
            'other'
          ],
          uz:[
            'one',
            'other'
          ],
          ve:[
            'one',
            'other'
          ],
          vi:[
            'other'
          ],
          vo:[
            'one',
            'other'
          ],
          vun:[
            'one',
            'other'
          ],
          wa:[
            'one',
            'other'
          ],
          wae:[
            'one',
            'other'
          ],
          wo:[
            'other'
          ],
          xh:[
            'one',
            'other'
          ],
          xog:[
            'one',
            'other'
          ],
          yi:[
            'one',
            'other'
          ],
          yo:[
            'other'
          ],
          zh:[
            'other'
          ],
          zu:[
            'one',
            'other'
          ]
        }
    ;

    return Uize.package ({
      getPluralClasses:function (_language) {
        return _classesByLanguage [_language] || _classesByLanguage [_language.split ('-') [0]];
      }
    });
  }
});