模块:Multilingual description/sort

求闻百科,共笔求闻
文档图示 模块文档[创建] [跳转到代码]

本模块还没有文档页面。

您可以创建文档以让用户更好地理解本模块的用途。
编者可以在本模块的沙盒创建 | 镜像和测试样例创建页面进行实验。
请将模块自身所属的分类添加在文档中。本模块的子页面
--[[
  The documented sort order is by script, then alphabetically by displayed native name (as generated by {{#language: code}}), using the default DUCET order.
  This allows easier selection by users reading the lists of languages in order to find their own.
  Please test this order, and maintain it as complete as possible, including legacy codes still used in MediaWiki.
  Any missing language will be sorted after all languages listed below, just using its internal language code.
]]
local p = {
-- LTR scripts
  -- Latin alphabets
    --[[A]] 'sma', 'ace', 'ang', 'af', 'agq', 'ak', 'gsw', 'als', 'en-us', 'ase', 'smn', 'an', 'rup', 'roa-rup', 'frp', 'ast', 'atj', 'gn', 'ay', 'az',
    --[[B]] 'ksf', 'bfd', 'bkc', 'abs', 'gor', 'id', 'ms', 'bkh', 'bm', 'bax', 'nan', 'zh-min-nan', 'bjn', 'ban', 'jv-x-bms', 'map-bms', 'bas', 'btm', 'bbc', 'bbc-latn', 'sje', 'bcl', 'bi', 'bar', 'bs', 'brh', 'br', 'en-gb',
    --[[C]] 'en-ca', 'cps', 'ca', 'ceb', 'cs', 'cho', 'ch', 'cbk-zam', 'ny', 'sn', 'tum', 'sei', 'co', 'cy',
    --[[D]] 'dag', 'da', 'se', 'se-no', 'se-se', 'se-fi', 'pdc', 'de', 'de-formal', 'nv', 'dsb', 'non'--[[Dǫnsk tunga]], 'na', 'dua', 'dtp',
    --[[E]] 'mh', 'et', 'etu', 'vmw', 'egl', 'eml', 'en', 'es', 'es-formal', 'es-419', 'eo', 'ext', 'eto', 'eu', 'ee', 'ewo',
    --[[F]] 'wls', 'gur', 'fmp', 'hif', 'hif-latn', 'fil', 'fon', 'fo', 'fr', 'frc', 'fy', 'ff', 'fur',
    --[[G]] 'gaa', 'ga', 'gv', 'sm', 'gag', 'gd', 'gl', 'aln', 'gya', 'gpe', 'bbj', 'ki', 'gom-latn', 'guw',
    --[[H]] 'cnh', 'ha', 'ha-latn', 'haw', 'ho', 'hmn', 'hsb', 'hr', 'hrx',
    --[[I]] 'io', 'ig', 'rw', 'rn', 'ilo', 'hil', 'ia', 'ie', 'ike-latn', 'ik', 'bto', 'xh', 'zu', 'is', 'isu', 'it',
    --[[J]] 'jv', 'smj', 'jut',
    --[[K]] 'rmf', 'kbp', 'kea', 'kl', 'kr', 'pam', 'cak', 'krl', 'csb', 'ker', 'kw', 'krj', 'kiu', 'sw', 'bkm', 'kg', 'avk', 'ses', 'ht', 'kri', 'gcf'--[[kréyòl gwadloupéyen]], 'gcr', 'ku', 'ku-latn', 'kmr', 'kmr-latn', 'fkv', 'kj', 'nmg',
    --[[L]] 'jbo', 'lld', 'lad', 'lns', 'ltg', 'la', 'lv', 'lzz', 'to', 'lb', 'nia', 'lt', 'lij', 'li', 'ln', 'lfn', 'liv', 'olo', 'lmo', 'lg',
    --[[M]] 'mad', 'hu', 'hu-formal', 'vmf', 'mcp', 'mg', 'mt', 'mi', 'mrh', 'arn', 'srq', 'fit', 'byv', 'fat', 'min', 'cdo', 'mwl', 'lus', 'bqz', 'mos', 'mua', 'mus',
    --[[N]] 'fj', 'nah', 'pcm', 'nap', --[['nrm', should be Narom]] 'nmz', 'nnz', 'nl', 'nl-informal', 'nds-nl', 'cr', 'nnh', 'nla', 'nge', 'yrl', 'niu', 'lem', 'frr', 'pih', 'no', 'nb', 'nn', 'nrf'--[[Nouormand]], 'nrm'--[[currently Nouormand, should be Narom instead]], 'nov', 'yas', 'sms', 'nys',
    --[[O]] 'uz-latn', 'uz', 'ann', 'oc', 'ojb', 'om', 'ng', 'de-at', 'hz',
    --[[P]] 'pfl', 'pag', 'ami', 'pap', 'pap-aw', 'jam', 'pcd', 'wes', 'pms', 'pwn', 'nds', 'pdt', 'pl', 'pt', 'pt-br', 'prg',
    --[[Q]] 'aa', 'kaa', 'quc', 'kk-latn', 'kk-tr', 'crh', 'crh-latn',
    --[[R]] 'ty', 'ksh', 'ro', 'rmc', 'rmy', 'rgn', 'rm', 'qug', 'qu', 'nyn',
    --[[S]] 'xsy', 'szy', 'sg', 'sc', 'sro', 'sdc', 'sli', 'de-ch', 'sco', 'trv', 'stq', 'st', 'nso', 'tn', 'sq', 'scn', 'loz', 'simple', 'ss', 'sk', 'sl', 'szl', 'so', 'srn', 'sr-latn', 'sr-el', 'sh'--[[latn/cyrl]], 'sh-latn', 'sh-el', 'su', 'fi', 'sv',
    --[[T]] 'shy', 'shy-latn', 'tl', 'tzl', 'kab', 'scn-x-tara', 'roa-tara', 'rif', 'shi', 'shi-latn', 'tt-latn', 'tay', 'tet', 'din', 'vi', 'tg-latn', 'tpi', 'tokipona', 'chy', 've', 'bag', 'tvu', 'aeb-latn', 'tr', 'tk', 'tru', 'tw', 'kcg',
    --[[U]] 'sju', 'ug-latn',
    --[[V]] 'vot', 'za', 'vec', 'vep', 'ruq', 'ruq-latn', 'vo', 'vro', 'fiu-vro', 'mcn', 'vut',
    --[[W]] 'wa', 'bci', 'guc', 'osa-latn', 'vls', 'war', 'wo', 'wya',
    --[[X]] 'ts',
    --[[Y]] 'yat', 'ybb', 'yav', 'yo',
    --[[Z]] 'diq', 'zea', 'sgs', 'bat-smg',
  -- Greek and Coptic alphabets
    'grc', 'el', 'pnt',
    'cop',
  -- Cyrillic alphabets
    --[[А]] 'av', 'ady', 'ady-cyrl', 'kbd', 'kbd-cyrl', 'ab', 'alt',
    --[[Б]] 'ba', 'be', 'be-tarask', 'be-x-old', 'bxr', 'bg',
    --[[В]] 'ruq-cyrl',
    --[[Г]] 'inh',
    --[[И]] 'os',
    --[[К]] 'sjd', 'kv', 'krc', 'kum', 'crh-cyrl', 'ky', 'mrj', 'kk', 'kk-cyrl', 'kk-kz',
    --[[Л]] 'lbe', 'lez',
    --[[М]] 'mk', 'mdf', 'mo', 'mn',
    --[[Н]] 'gld', 'ce',
    --[[О]] 'mhr',
    --[[П]] 'koi',
    --[[Р]] 'rue', 'rsk', 'ru',
    --[[C]] 'sah', 'sty', 'cu', 'sr-cyrl', 'sr-ec', 'sr'--[[cyrl/latn]], 'sh-cyrl', 'sh-ec',
    --[[Т]] 'tt-cyrl', 'tt', 'tly', 'tly-cyrl', 'tg-cyrl', 'tg', 'tyv',
    --[[У]] 'udm', 'uz-cyrl', 'uk',
    --[[Х]] 'xal',
    --[[Ч]] 'cv',
    --[[Э]] 'myv',
  -- Other European alphabets
    'xmf', 'ka',
    'hyw', 'hy',
  -- Devanagari abugidas
    'anp', 'awa', 'ks-deva', 'ks', 'gom-deva', 'gom', 'dty', 'new', 'ne', 'pi', 'bho', 'bh', 'mag', 'mr', 'rwr', 'mai', 'sa', 'hi',
  -- Bengali abugidas
    'as', 'rkt', 'bn', 'bpy',
  -- Other North Indian abugidas
    'pa',
    'syl',
  -- South Indian abugidas
    'gu',
    'or',
    'ta',
    'te',
    'kn', 'tcy',
    'ml',
    'si',
  -- Tibeto-Burmese abugidas
    'dz', 'bo',
    'mni',
    'ksw', 'blk', 'kjp', 'shn', 'mnw', 'my', 'rki',
  -- Other South-East Asian abugidas
    'km',
    'lo',
    'tdd',
    'nod',
    'th',
    'bug',
    'ban-bali',
    'sat',
  -- North-Western syllabaries
    'chr',
    'ike-cans', 'iu',
    'got',
  -- African syllabaries
    'tzm', 'zgh', 'shi-tfng', 'rif-tfng', 'sjs',
    'ti', 'am',
  -- Asian syllabaries
    'ii',
  -- Korean scripts (alphabet and sinograms)
    'ko-kp', 'ko', 'ko-kr',
  -- Japanese scripts (syllabaries and sinograms)
    'ja', 'ryu',
  -- Sinographic scripts (plus Bopomofo syllabary)
    'zh', 'zh-cn', 'zh-tw', 'zh-sg', 'zh-mo', 'zh-hans', 'zh-hant', 'zh-hk', 'zh-my',
    'wuu', 'hak', 'lzh', 'zh-classical', 'hsn', 'yue', 'zh-yue', 'gan', 'gan-hant', 'gan-hans', 'nan-hani',
-- RTL scripts
  -- Hebrew abjads
    'yi', 'ydd', 'yih', 'he',
  -- Arabic abjads
    --[[ء]] -- [[ٴ]]
    --[[ا]] 'ur', 'ary', 'ar', 'acm', 'acq', 'uz-arab',
      --[[أ]] --[[ٱ]] --[[ٳ]] --[[ٲ]] --[[ا]] --[[آ]]
    --[[ب]] 'bqi', 'bsk', 'bgp' ,'bal', 'ms-arab',
      --[[ب]] --[[ٻ]] --[[ڀ]]
      --[[پ]] 'ps', 'pnb',
      --[[ت]] 'aeb-arab', 'aeb', 'azb',
      --[[ٺ]] --[[ٿ]] --[[ټ]] --[[ٽ]] --[[ٹ]]
    --[[ج]] 'arq', 'bcc',
      --[[ڃ]] --[[ڄ]] --[[چ]] --[[ڇ]] --[[ح]] --[[ځ]] --[[ڂ]] --[[څ]] --[[خ]]
    --[[د]] --[[ڋ]] --[[ڈ]] --[[ډ]] --[[ڊ]] --[[ڍ]] --[[ڎ]] --[[ڏ]] --[[ڐ]] --[[ذ]] --[[ڌ]]
    --[[ر]] 'bgn',
      --[[ڕ]] --[[ڒ]] --[[ڔ]] --[[ږ]] --[[ڗ]] --[[ڑ]] --[[ړ]] --[[ز]] --[[ڙ]] --[[ژ]]
    --[[س]] 'skr', 'skr-arab', 'sd',
      --[[ڛ]] --[[ښ]] --[[ڜ]]
      --[[ش]] 'ajp',
    --[[ص]] --[[ڝ]] --[[ڞ]] --[[ض]]
    --[[ط]] --[[ڟ]] --[[ظ]]
    --[[ع]] 'arb',
      --[[ڠ]] --[[غ]]
    --[[ڡ]]
      --[[ف]] 'fa-af', 'fa', 'prd',
      --[[ڢ]] --[[ڣ]] --[[ڤ]] --[[ڥ]] --[[ڦ]]
    --[[ق]] 'kk-arab', 'kk-cn',
      --[[ڧ]] --[[ڨ]]
    --[[ك]] 'ku-arab', 'kcn', 'kmr-arab',
      --[[ګ]] --[[ڮ]] --[[ڬ]] --[[ڭ]]
      --[[ک]] 'ks-arab', 'pbt', 'khw', 'ckb', 'sdh',
      --[[ڪ]]
      --[[گ]] 'glk',
      --[[ڰ]] --[[ڱ]] --[[ڳ]] --[[ڲ]] --[[ڴ]]
    --[[ل]] 'ota', 'lrc', 'luz', 'lki',
      --[[ڵ]] --[[ڶ]] --[[ڷ]]
    --[[م]] 'mve', 'mzn', 'arz', 'pst',
    --[[ں]] --[[ن]] --[[ڼ]] --[[ڻ]] --[[ڽ]]
    --[[ۃ]]
      --[[ه]] 'ha-arab',
      --[[ہ]] --[[ھ]] --[[ۂ]] --[[ە]] --[[ۀ]]
    --[[و]] 'wne',
      --[[ۄ]] --[[ۆ]] --[[ۅ]] --[[ۇ]] --[[ۈ]] --[[ۉ]]
    --[[ې]] --[[ۍ]] --[[ى]] --[[ي]] --[[ێ]] --[[ۑ]] --[[ے]]
      --[[ی]] 'pbu',
      --[[ئ]] 'ug-arab', 'ug',
      --[[ۓ]]
  -- Other semitics abjads
    'arc', 'syc',
    'dv',
    'nqo',
    'phn', 'xpu',
-- Additional language codes that still need to be sorted by native name can be temporarily placed here
}

setmetatable(p, {
    quickTests = function()
        local s = {}
        for k, lang in pairs(p) do
            if type(k) ~= 'number' or k < 1 or k ~= math.floor(k)
            or type(lang) ~= 'string' or #lang < 2 or #lang > 16
            or (lang):find('^[a-z][%-0-9a-z]*[0-9a-z]$') ~= 1
            or s[lang] then
                return false, ': invalid sequence of distinct lowercase language codes at p[' .. tostring(k) .. '] = "' .. tostring(lang) .. '"'
            end
            s[lang] = true
        end
        return true
    end
})
--[[ To test this module in the Lua console: -- must return true
=getmetatable(p).quickTests()
--]]

return p