﻿// Copyright (c) 1998-2001 IBM, Inc. and others.
//
// Maltese locale.
// Maintained by srl@monkey.sbay.org [See below for full credits]
//
// Search for 'Sources' below for source abbreviations

// Hi. This file is now in utf-8. Thank you very much.
// Quick rundown on Maltese Unicode: 
// --------------------------------- 
// ċ = U+010B   Ċ = U+010A  'ch'    
// ġ = U+0121   Ġ = U+0120  soft G
// ħ = U+0127   Ħ = U+0126  voiced H [or 2nd letter of 'silent' għ]
// ż = U+017c   Ż = U+017B  'dz'
//
// COMBINING MARKS:
// There is no combining mark for the slash (h/)
//  but, U+0307 is the DOT ABOVE needed for ż, ċ, and ġ (in collation rules)

mt {
    Version { "0.9.4" } // 2001-11-15 
    ShortLanguage { mlt }

//    "%%PHONEBOOK" { "Bħal lista tat-telefon" }
//    "%%PINYIN" { "Pinyin Order" }
//    "%%TRADITIONAL" { "Traditional" }
//   "%%STROKE" { "Stroke Order" }
//  "%%DIRECT" { "Dritt Order" }
    "%%PREEURO" { "Qabel il-Euro" }

    Languages {
        root    { "Għerq" } // the root locale
//------------------------------------------------
        aa	{ "Afar" }	// Afar
        ab	{ "Abkażjan" }	// Abkhazian
        ace	{ "Aċiniż" }	// Achinese
        ach	{ "Akoli" }	// Acoli
        ada	{ "Adangme" }	// Adangme
        ae	{ "Avestan" }	// Avestan
        af	{ "Afrikans" }	// Afrikaans
        afa	{ "Afro-Asjatiku (Oħra)" }	// Afro-Asiatic (Other)
        afh	{ "Afriħili" }	// Afrihili
        aka	{ "Akan" }	// Akan
        akk	{ "Akkadjen" }	// Akkadien
        ale	{ "Aleut" }	// Aleut
        alg	{ "Lingwi Algonqwinjani" }	// Algonquian Languages
        am	{ "Amħariku" }	// Amharic
        ang	{ "Ingliż, Antik (ca.450-1100)" }	// English, Old (ca.450-1100)
        apa	{ "Lingwi Apaċi" }	// Apache Languages
        ar	{ "Għarbi" }	// Arabic
        arc	{ "Aramajk" }	// Aramaic
        arn	{ "Arawkanjan" }// Araucanian
        arp	{ "Arapaħo" }	// Arapaho
        art	{ "Artifiċjali (Oħra)" }	// Artificial (Other)
        arw	{ "Arawak" }	// Arawak
        as	{ "Assamese" }	// Assamese
        ath	{ "Lingwi Atabaskani" }	// Athapaskan Languages
        aus	{ "Lingwi Awstraljani" }// Australian Languages
        ava	{ "Avarik" }	// Avaric
        awa	{ "Awadħi" }	// Awadhi
        ay	{ "Ajmara" }	// Aymara
        az	{ "Ażerbajġani" }	// Azerbaijani
        ba	{ "Baxkir" }	// Bashkir
        bad	{ "Banda" }	// Banda
        bai	{ "Lingwi Bamileke" }	// Bamileke Languages
        bal	{ "Baluċi" }	// Baluuchi
        bam	{ "Bambara" }	// Bambara
        ban	{ "Baliniż" }	// Balinese
        bas	{ "Basa" }	// Basa
        bat	{ "Baltiku (Oħra)" }	// Baltic (Other)
        be	{ "Belarussu" }	// Belarusian
        bej	{ "Beja" }	// Beja
        bem	{ "Bemba" }	// Bemba
        ber	{ "Beber" }	// Beber
        bg	{ "Bulgaru" }	// Bulgarian
        bh	{ "Biħari" }	// Bihari
        bho	{ "Bojpuri" }	// Bhojpuri
        bi	{ "Bislama" }	// Bislama
        bik	{ "Bikol" }	// Bikol
        bin	{ "Bini" }	// Bini
        bla	{ "Siksika" }	// Siksika
        bn	{ "Bengali" }	// Bengali
        bnt	{ "Bantu" }	// Bantu
        bo	{ "Tibetjan" }	// Tibetan
        br	{ "Brenton" }	// Brenton
        bra	{ "Braj" }	// Braj
        bs	{ "Bosnijan" }	// Bosnian
        btk	{ "Batak" }	// Batak
        bua	{ "Burjat" }	// Buriat
        bug	{ "Buginiż" }	// Buginese
        ca	{ "Katalan" }	// Catalan
        cad	{ "Kaddo" }	// Caddo
        cai	{ "Amerika Ċentrali (Oħra)" }	// Central American Indian (Other)
        car	{ "Karib" }	// Carib
        cau	{ "Kawkasu (Oħra)" }	// Caucasian (Other) 
        ce	{ "Ċeċen" }	// Chechen
        ceb	{ "Sibwano" }	// Cebuano
        cel	{ "Keltiku (Oħra)" }	// Celtic (Other)
        ch	{ "Ċamorro" }	// Chamorro
        chb	{ "Ċibċa" }	// Chibcha
        chg	{ "Ċagataj" }	// Chagatai
        chk	{ "Ċukese" }	// Chuukese
        chm	{ "Mari" }	// Mari
        chn	{ "Ġargon taċ-Ċinuk" }	// Chinook Jargon
        cho	{ "Ċostaw" }	// Choctaw
        chp	{ "Ċipewjan" }	// Chipewyan
        chr	{ "Ċerokij" }	// Cherokee
        chy	{ "Xajenn" }	// Cheyenne
        cmc	{ "Lingwi Ċamiki" }	// Chamic Languages
        co	{ "Korsiku" }	// Corsican
        cop	{ "Koptiku" }	// Coptic
        cpe	{ "Kreoli u Piġini, Bbażat fuq l-Ingliż (Oħra)" }	// Creoles and Pidgins, English-based (Other)
        cpf	{ "Kreoli u Piġini, Bbażat fuq il-Franċiż (Oħra)" }	// Creoles and Pidgins, French-based (Other)
        cre	{ "Krij" }	// Cree
        crp	{ "Kreoli u Piġini (Oħra)" }	// Creoles and Pidgins (Other)
        cs	{ "Ċek" }	// Czech
        cu	{ "Slaviku tal-Knisja" }	// Church Slavic
        cus	{ "Kuxtiku (Oħra)" }	// Cushitic (Other)
        cv	{ "Ċuvax" }	// Chuvash
        cy	{ "Welx" }	// Welsh
        da	{ "Daniż" }	// Danish
        dak	{ "Dakota" }	// Dakota
        day	{ "Dajak" }	// Dayak
        de	{ "Ġermaniż" }	// German
        del	{ "Delawerjan" }	// Delaware
        den	{ "Slav" }	// Slave
        dgr	{ "Dogrib" }	// Dogrib
        din	{ "Dinka" }	// Dinka
        div	{ "Diveħi" }	// Divehi
        doi	{ "Dogri" }	// Dogri
        dra	{ "Dravidjan (Oħra)" }	// Dravidian (Other)
        dua	{ "Dwala" }	// Duala
        dum	{ "Olandiż, Medjevali (ca. 1050-1350)" }	// Dutch, Middle (ca. 1050-1350)
        dyu	{ "Djula" }	// Dyula
        dz	{ "Vutani" }	// Bhutani
        dzo	{ "Dżongka" }	// Dzongkha
        efi	{ "Efik" }	// Efik
        egy	{ "Eġizzjan (Antik)" }	// Egyptian (Ancient)
        eka	{ "Ekajuk" }	// Ekajuk
        el	{ "Grieg" }	// Greek
        elx	{ "Elamit" }	// Elamite
        en	{ "Ingliż" }	// English
        enm	{ "Ingliż, Medjevali (1100-1500)" }	// English, Middle( 1100 -1500)
        eo	{ "Esperanto" }	// Esperanto
        es	{ "Spanjol" }	// Spanish
        et	{ "Estonjan" }	// Estonian
        eu	{ "Bask" }	// Basque
        ewe	{ "Ewe" }	// Ewe
        ewo	{ "Ewondo" }	// Ewondo
        fa	{ "Persjan" }	// Persian
        fan	{ "Fang" }	// Fang
        fat	{ "Fanti" }	// Fanti
        fi	{ "Finlandiż" }	// Finnish
        fiu	{ "Finno - Ugrijan" }	// Finno - Ugrian
        fj	{ "Fiġi" }	// Fiji
        fo	{ "Fawriż" }	// Faeroese
        fon	{ "Fon" }	// Fon
        fr	{ "Franċiż" }	// French
        frm	{ "Franċiż, Medjevali (ca. 1400-1600)" }	// French, Middle (ca.1400-1600)
        fro	{ "Franċiż, Antik (842-ca. 1400)" }	// French, Old (842-ca.1400)
        ful	{ "Fulaħ" }	// Fulah
        fur	{ "Frijuljan" }	// Friulian
        fy	{ "Friżjan" }	// Frisian
        ga	{ "Irlandiż" }	// Irish
        gaa	{ "Ga" }	// Ga
        gay	{ "Gajo" }	// Gayo
        gba	{ "Gbaja" }	// Gbaya
        gd	{ "Galliku Skoċċiż" }	// Scots Gaelic
        gem	{ "Ġermaniku (Oħra)" }	// Germanic (Other)
        gil	{ "Gilbertjan" }	// Gilbertese
        gl	{ "Gallegjan" }	// Gallegan
        gla	{ "Galliku (Skoċċiż)" }	// Gaelic (Scots)
        gmh	{ "Ġermaniku, Medjevali Pulit (ca. 1050-1500)" }	// German, Middle High (ca.1050-1500)
        gn	{ "Gwarani" }	// Guarani
        goh	{ "Ġermaniku, Antik Pulit (ca. 750-1050)" }	// German, Old High (ca.750-1050)
        gon	{ "Gondi" }	// Gondi
        gor	{ "Gorontalo" }	// Gorontalo
        got	{ "Gotiku" }	// Gothic
        grb	{ "Ġerbo" }	// Gerbo
        grc	{ "Grieg, Antik (to 1453)" }	// Greek, Ancient (to 1453)
        gu	{ "Guġarati" }	// Gujarati
        gv	{ "Manks" }	// Manx
        gwi	{ "Gwiċin" }	// Gwich'in
        hai	{ "Ħajda" }	// Haida
        hau	{ "Ħawsa" }	// Hausa
        haw	{ "Ħawajjan" }	// Hawaiian
        he	{ "Ebrajk" }	// Hebrew
        hi	{ "Ħindi" }	// Hindi
        him	{ "Ħimaċali" }	// Himachali
        hit	{ "Ħittit" }	// Hittite
        hmn	{ "Ħmong" }	// Hmong
        ho	{ "Ħiri Motu" }	// Hiri Motu
        hr	{ "Kroat" }	// Croatian
        hu	{ "Ungeriż" }	// Hungarian
        hup	{ "Ħupa" }	// Hupa
        hy	{ "Armenjan" }	// Armenian
        hz	{ "Ħerero" }	// Herero
        ia	{ "Interlingua" }	// Interlingua
        iba	{ "Iban" }	// Iban
        ibo	{ "Igbo" }	// Igbo
        id	{ "Indoneżjan" }	// Indonesian
        ie	{ "Interlingue" }	// Interlingue
        ijo	{ "Iġo" }	// Ijo
        ik	{ "Inupjak" }	// Inupiak
        ilo	{ "Iloko" }	// Iloko
        inc	{ "Indjan (Oħra)" }	// Indic (Other)
        ine	{ "Indo-Ewropew" }	// Indo-European
        ira	{ "Iranjan" }	// Iranian 
        iro	{ "Lingwi Irogwjani" }	// Iroguoian Languages
        is	{ "Iżlandiż" }	// Icelandic
        it	{ "Taljan" }	// Italian
        iu	{ "Inukitut" }	// Inukitut
        iw	{ "Ebrajk" }	// Hebrew
        ja	{ "Ġappuniż" }	// Japanese
        jpr	{ "Lhudi-Persjan" }	// Judeo-Persian
        jrb	{ "Lhudi-Għarbi" }	// Judeo-Arabic
        jw	{ "Ġavaniż" }	// Javanese
        ka	{ "Ġorġjan" }	// Georgian
        kaa	{ "Kara-Kalpak" }	// Kara-Kalpak
        kab	{ "Kabuljan" }	// Kabyle
        kac	{ "Kaċin" }	// Kachin
        kam	{ "Kamba" }	// Kamba
        kar	{ "Karen" }	// Karen
        kau	{ "Kanuri" }	// Kanuri
        kaw	{ "Kawi" }	// Kawi
        kha	{ "Kasi" }	// Khasi
        khi	{ "Kojsan" }	// Khoisan
        kho	{ "Kotaniż" }	// Khotanese
        ki	{ "Kikuju" }	// Kikuyu
        kk	{ "Każak" }	// Kazakh
        kl	{ "Kalallisut" }	// Kalaallisut
        km	{ "Kmer" }	// Khmer
        kmb	{ "Kimbundu" }	// Kimbundu
        kn	{ "Kannada" }	// Kannada
        ko	{ "Korejan" }	// Korean
        kok	{ "Konkani" }	// Konkani
        kon	{ "Kongo" }	// Kongo
        kos	{ "Kosrejan" }	// Kosrean
        kpe	{ "Kpelle" }	// Kpelle
        kro	{ "Kru" }	// Kru
        kru	{ "Kurusk" }	// Kuruckh
        ks	{ "Kaxmiri" }	// Kashmiri
        ku	{ "Kurdiż" }	// Kurdish
        kum	{ "Kumiku" }	// Kumyk
        kut	{ "Kutenaj" }	// Kutenai
        kv	{ "Komi" }	// Komi
        kw	{ "Korniku" }	// Cornish
        ky	{ "Kirgiż" }	// Kirghiz
        la	{ "Latin" }	// Latin
        lad	{ "Ladino" }	// Ladino
        lah	{ "Landa" }	// Lahnda
        lam	{ "Lamba" }	// Lamba
        lb	{ "Letżburgiż" }	// Letzeburgesch
        lez	{ "Leżgjan" }	// Lezghian
        lin	{ "Lingaljan" }	// Lingala
        lit	{ "Litwanjan" }	// Lithuanian
        ln	{ "Lingaljan" }	// Lingala
        lo	{ "Lao" }	// Lao
        lol	{ "Mongo" }	// Mongo
        loz	{ "Lożi" }	// Lozi
        lt	{ "Litwanjan" }	// Lithuanian
        lua	{ "Luba-Luluwa" }	// Luba-Lulua
        lub	{ "Luba-Katanga" }	// Luba-Katanga
        lug	{ "Ganda" }	// Ganda
        lui	{ "Luwisinuż" }	// Luiseeno
        lun	{ "Lunda" }	// Lunda
        luo	{ "Luwa" }	// Lua
        lus	{ "Luxaj" }	// Lushai
        lv	{ "Latvjan (Lettix)" }	// Latvian (Lettish)
        mad	{ "Maduriż" }	// Madurese
        mag	{ "Magaħi" }	// Magahi
        mai	{ "Majtili" }	// Maithili
        mak	{ "Makasar" }	// Makasar
        man	{ "Mandingwan" }	// Mandingue
        map	{ "Awstronesjan" }	// Austronesian
        mas	{ "Masaj" }	// Masai
        mdr	{ "Mandar" }	// Mandar
        men	{ "Mende" }	// Mende
        mg	{ "Malagażi" }	// Malagasy
        mga	{ "Irlandiż, Medjevali (900-1200)" }	// Irish, Middle (900-1200)
        mh	{ "Marxall" }	// Marshall
        mi	{ "Maori" }	// Maori
        mic	{ "Mikmek" }	// Mic-Mac
        min	{ "Minangkabaw" }	// Minangkabau
        mis	{ "Lingwi Oħra" }	// Miscellaneous Languages
        mk	{ "Maċedonjan" }	// Macedonian
        mkh	{ "Mon-Kmer (Oħra)" }	// Mon-Khmer (Other)
        ml	{ "Malajalam" }	// Malayalam
        mn	{ "Mongoljan" }	// Mongolian
        mnc	{ "Manċurjan" }	// Manchu
        mni	{ "Manipuri" }	// Manipuri
        mno	{ "Lingwi Manobo" }	// Manobo Languages
        mo	{ "Moldavjan" }	// Moldavian
        moh	{ "Moħak" }	// Mohawk
        mos	{ "Mossi" }	// Mossi
        mr	{ "Marati" }	// Marathi
        ms	{ "Malajan" }	// Malay
        mt	{ "Malti" }	// Maltese
        mul	{ "Lingwi Diversi" }	// Multiple Languages
        mun	{ "Lingwi tal-Munda" }	// Munda Languages
        mus	{ "Kriek" }	// Creek
        mwr	{ "Marwari" }	// Marwari
        my	{ "Burmiż" }	// Burmese
        myn	{ "Majan" }	// Mayan
        na	{ "Nawuru" }	// Nauru
        nah	{ "Naħwatil" }	// Nahuatl
        nai	{ "Indjan tal-Amerika ta' Fuq (Oħra)" }	// North American Indian (Other)
        nb	{ "Bokmahal Norveġiż" }	// Norwegian Bokmål
        nd	{ "Ndebele, ta' Fuq" }	// Ndebele, North
        nds	{ "Ġermaniż Komuni; Sassonu Komuni" }	// Low German; Low Saxon
        ne	{ "Nepaliż" }	// Nepali
        new	{ "Newari" }	// Newari
        ng	{ "Ndonga" }	// Ndonga
        nia	{ "Nijas" }	// Nias
        nic	{ "Niġerjan - Kordofanjan" }	// Niger - Kordofanian
        niu	{ "Nijuwejan" }	// Niuean
        nl	{ "Olandiż" }	// Dutch
        nn	{ "Ninorsk Norveġiż" }	// Norwegian Nynorsk
        no	{ "Norveġiż" }	// Norwegian
        non	{ "Skandinav, Antik" }	// Norse, Old
        nr	{ "Ndebele, t'Isfel" }	// Ndebele, South
        nso	{ "Soto, ta' Fuq" }	// Sotho, Northern
        nub	{ "Lingwi Nubjani" }	// Nubian Languages
        nv	{ "Navaħo" }	// Navajo
        ny	{ "Ċiċewa; Njanġa" }	// Chichewa; Nyanja
        nym	{ "Njamweżi" }	// Nyamwezi
        nyo	{ "Njoro" }	// Nyoro
        nzi	{ "Nżima" }	// Nzima
        oc	{ "Provenzal (wara 1500)" }	// Provençal; Occitan (post 1500)
        oji	{ "Oġibwa" }	// Ojibwa
        om	{ "Oromo (Afan)" }	// Oromo (Afan)
        or	{ "Orija" }	// Oriya
        os	{ "Ossettiku" }	// Ossetic
        osa	{ "Osaġjan" }	// Osage
        ota	{ "Tork (Imperu Ottoman)" }	// Turkish (Ottoman Empire)
        oto	{ "Lingwi Otomjani" }	// Otomian Languages
        pa	{ "Punġabi" }	// Punjabi
        paa	{ "Papwan (Oħra)" }	// Papuan (Ohter)
        pag	{ "Pangasinjan" }	// Pangasinan
        pal	{ "Paħlavi" }	// Pahlavi
        pam	{ "Pampamga" }	// pampamga?
        pap	{ "Papjamento" }	// Papiamento
        pau	{ "Palawjan" }	// Palauan
        peo	{ "Persjan Antik (ca. 600-400 Q.K.)" }	// Persian Old (ca.600-400 B.C.)
        phi	{ "Filippin (Oħra)" }	// Philippine (Other)
        phn	{ "Feniċju" }	// Phoenician
        pi	{ "Pali" }	// Pali
        pl	{ "Pollakk" }	// Polish
        pon	{ "Ponpejan" }	// Pohnpeian
        pra	{ "Lingwi Prakriti" }	// Prakrit Languages
        pro	{ "Provenzal, Antik (sa l-1500)" }	// Provençal, Old (to 1500)
        ps	{ "Paxtun" }	// Pashto (Pushto)
        pt	{ "Portugiż" }	// Portuguese
        qu	{ "Keċwa" }	// Quechua
        raj	{ "Raġastani" }	// Rajastani
        rap	{ "Rapanwi" }	// Rapanui
        rar	{ "Rarotongani" }	// Rarotongan
        rm	{ "Reto-Romanz" }	// Rhaeto-Romance
        rn	{ "Rundi" }	// Rundi
        ro	{ "Rumen" }	// Romanian
        roa	{ "Romanz (Oħra)" }	// Romance (Other)
        rom	{ "Żingaru" }	// Romany
        ru	{ "Russu" }	// Russian
        rw	{ "Kinjarwanda" }// Kinyarwanda
        sa	{ "Sanskrit" }	// Sanskrit
        sad	{ "Sandawe" }	// Sandawe
        sah	{ "Jakut" }	// Yakut
        sai	{ "Indjan tal-Amerika t'Isfel (Oħra)" }	// South American Indian (Other)
        sal	{ "Salixan" }	// Salishan
        sam	{ "Samritan" }	// Samritan
        sas	{ "Saska" }	// Saska
        sat	{ "Santali" }	// Santali
        sc	{ "Sardinjan" }	// Sardinian
        sco	{ "Skoċċiż" }	// Scots
        sd	{ "Sindi" }	// Sindhi
        se	{ "Sami ta' Fuq" }// Northern Sami
        sel	{ "Selkup" }	// Selkup
        sem	{ "Semitiku" }	// Semitic
        sg	{ "Sango" }	// Sango
        sga	{ "Irlandiż, Antik (sa l-900)" }	// Irish, Old (to 900)
        sgn	{ "Lingwa tas-Sinjali" }	// Sign Languages
        sh	{ "Serbo-Kroat" }	// Serbo-Croatian
        shn	{ "Xan" }	// Shan
        si	{ "Sinħaliż" }	// Sinhalese
        sid	{ "Sidamo" }	// Sidamo
        sio	{ "Lingwi Suwjani" }	// Siouan Languages
        sit	{ "Sino-Tibetjani (Oħra)" }	// Sino-Tibetan (Other)
        sk	{ "Slovakk" }	// Slovak
        sl	{ "Slav" }	// Slovenian
        sm	{ "Samojan" }	// Samoan
        sn	{ "Xona" }	// Shona
        snk	{ "Soninke" }	// Soninke
        so	{ "Somali" }	// Somali
        sog	{ "Sogdien" }	// Sogdien
        son	{ "Songaj" }	// Songhai
        sq	{ "Albaniż" }	// Albanian
        sr	{ "Serb" }	// Serbian
        srr	{ "Serer" }	// Serer
        ss	{ "Swati" }	// Swati
        ssa	{ "Nilo-Saħaram" }	// Nilo-Saharam
        st	{ "Soto, t'Isfel" }	// Sotho, Southern
        su	{ "Sundaniż" }	// Sundanese
        suk	{ "Sukuma" }	// Sukuma
        sus	{ "Susu" }	// Susu
        sux	{ "Sumerjan" }	// Sumerian
        sv	{ "Svediż" }	// Swedish
        sw	{ "Swaħili" }	// Swahili
        syr	{ "Sirjan" }	// Syriac
        ta	{ "Tamil" }	// Tamil
        tai	{ "Tai (Oħra)" }	// Tai (Other)
        te	{ "Telugu" }	// Telugu
        tem	{ "Timne" }	// Timne
        ter	{ "Tereno" }	// Tereno
        tet	{ "Tetum" }	// Tetum
        tg	{ "Taġik" }	// Tajik
        th	{ "Tajlandiż" }	// Thai
        tig	{ "Tigre" }	// Tigre
        tir	{ "Tigrinja" }	// Tigrinya
        tiv	{ "Tiv" }	// Tiv
        tk	{ "Turkmeni" }	// Turkmen
        tl	{ "Tagalog" }	// Tagalog
        tli	{ "Tlingit" }	// Tlingit
        tmh	{ "Tamaxek" }	// Tamashek
        tn	{ "Zwana" }	// Tswana
        tog	{ "Tonga (Njasa)" }	// Tonga (Nyasa)
        ton	{ "Tongan (Gżejjer ta' Tonga)" }	// Tongan (Tonga Islands)
        tr	{ "Tork" }	// Turkish
        ts	{ "Tsonga" }	// Tsonga
        tsi	{ "Zimxjan" }	// Tsimshian
        tt	{ "Tatar" }	// Tatar
        tum	{ "Tumbuka" }	// Tumbuka
        tur	{ "Tork" }	// Turkish
        tut	{ "Altajk (Oħra)" }	// Altaic (Other)
        tvl	{ "Tuvalu" }	// Tuvalu
        tw	{ "Twi" }	// Twi
        ty	{ "Taħitjan" }	// Tahitian
        tyv	{ "Tuvinjan" }	// Tuvinian
        ug	{ "Wigur" }	// Uighur
        uga	{ "Ugaritiku" }	// Ugaritic
        uk	{ "Ukranjan" }	// Ukrainian
        umb	{ "Umbundu" }	// Umbundu
        und	{ "Indeterminat" }	// Undetermined
        ur	{ "Urdu" }	// Urdu
        uz	{ "Użbek" }	// Uzbek
        vai	{ "Vai" }	// Vai
        ven	{ "Venda" }	// Venda
        vi	{ "Vjetnamiż" }	// Vietnamese
        vo	{ "Volapuk" }	// Volapuk
        vot	{ "Votik" }	// Votic
        wak	{ "Lingwi Wakaxani" }	// Wakashan Languages
        wal	{ "Walamo" }	// Walamo
        war	{ "Waraj" }	// Waray
        was	{ "Waxo" }	// Washo
        wen	{ "Lingwi Sorbjani" }	// Sorbian Languages
        wo	{ "Wolof" }	// Wolof
        xh	{ "Ħoża" }	// Xhosa
        yao	{ "Jao" }	// Yao
        yap	{ "Japese" }	// Yapese
        yi	{ "Jiddix" }	// Yiddish
        yor	{ "Joruba" }	// Yoruba
        ypk	{ "Lingwi Jupiċi" }	// Yupik Languages
        za	{ "Żwang" }	// Zhuang
        zap	{ "Żapotek" }	// Zapotec
        zen	{ "Żenaga" }	// Zenaga
        zh	{ "Ċiniż" }	// Chinese
        znd	{ "Żande" }	// Zande
        zu	{ "Żulu" }	// Zulu
        zun	{ "Żuni" }      // Zuni
    }
    Countries {

        AD { "Andorra" } 	// Andorra
        AE { "Emirati Għarab Maqgħuda" } 	// United Arab Emirates
        AF { "Afganistan" } 	// Afghanistan
        AI { "Angwilla" } 	// Anguilla
        AL { "Albanija" } 	// Albania
        AM { "Armenja" } 	// Armenia
        AN { "Antilles Olandiżi" } 	// Netherlands Antilles
        AO { "Angola" } 	// Angola
        AR { "Arġentina" } 	// Argentina
        AS { "Samoa Amerikana" } 	// American Samoa
        AT { "Awstrija" } 	// Austria
        AU { "Awstralja" } 	// Australia
        AW { "Aruba" } 	// Aruba
        AZ { "Ażerbajġan" } 	// Azerbaijan
        BA { "Bożnija Ħerżegovina" } 	// Bosnia and Herzegovina
        BB { "Barbados" } 	// Barbados
        BD { "Bangladexx" } 	// Bangladesh
        BE { "Belġju" } 	// Belgium
        BF { "Burkina Faso" } 	// Burkina Faso
        BG { "Bulgarija" } 	// Bulgaria
        BH { "Baħrajn" } 	// Bahrain
        BI { "Burundi" } 	// Burundi
        BJ { "Benin" } 	// Benin
        BM { "Bermuda" } 	// Bermuda
        BN { "Brunej" } 	// Brunei
        BO { "Bolivja" } 	// Bolivia
        BR { "Brażil" } 	// Brazil
        BS { "Baħamas" } 	// Bahamas
        BT { "Butan" } 	// Bhutan
        BW { "Botswana" } 	// Botswana
        BY { "Bjelorussja" } 	// Belarus
        BZ { "Beliże" } 	// Belize
        CA { "Kanada" } 	// Canada
        CF { "Repubblika Afrikana Ċentrali" } 	// Central African Republic
        CG { "Kongo" } 	// Congo
        CH { "Svizzera" } 	// Switzerland
        CI { "Kosta ta' l-Avorju" } 	// Côte d'Ivoire
        CL { "Ċili" } 	// Chile
        CM { "Kamerun" } 	// Cameroon
        CN { "Ċina" } 	// China
        CO { "Kolumbja" } 	// Colombia
        CR { "Kosta Rika" } 	// Costa Rica
        CU { "Kuba" } 	// Cuba
        CV { "Kape Verde" } 	// Cape Verde
        CY { "Ċipru" } 	// Cyprus
        CZ { "Repubblika Ċeka" } 	// Czech Republic
        DE { "Ġermanja" } 	// Germany
        DJ { "Ġibuti" } 	// Djibouti
        DK { "Danimarka" } 	// Denmark
        DM { "Dominika" } 	// Dominica
        DO { "Republikka Domenikana" } 	// Dominican Republic
        DZ { "Alġerija" } 	// Algeria
        EC { "Ekwador" } 	// Ecuador
        EE { "Estonja" } 	// Estonia
        EG { "Eġittu" } 	// Egypt
        EH { "Sahara tal-Punent" } 	// Western Sahara
        ER { "Eritreja" } 	// Eritrea
        ES { "Spanja" } 	// Spain
        ET { "Etijopja" } 	// Ethiopia
        FI { "Finlandja" } 	// Finland
        FJ { "Fiġi" } 	// Fiji
        FM { "Mikronesja" } 	// Micronesia
        FO { "Gżejjer Faroe" } 	// Faroe Islands
        FR { "Franza" } 	// France
        GA { "Gabon" } 	// Gabon
        GB { "Ingilterra" } 	// United Kingdom
        GE { "Ġorġja" } 	// Georgia
        GF { "Gujana Franċiża" } 	// French Guiana
        GH { "Gana" } 	// Ghana
        GL { "Grinlandja" } 	// Greenland
        GM { "Gambja" } 	// Gambia
        GN { "Gineja" } 	// Guinea
        GP { "Gwadelupe" } 	// Guadeloupe
        GQ { "Ginea Ekwatorjali" } 	// Equatorial Guinea
        GR { "Greċja" } 	// Greece
        GT { "Gwatemala" } 	// Guatemala
        GU { "Gwam" } 	// Guam
        GW { "Ginea-Bissaw" } 	// Guinea-Bissau
        GY { "Gujana" } 	// Guyana
        HK { "Ħong Kong S.A.R., Ċina" } 	// Hong Kong S.A.R., China
        HN { "Ħonduras" } 	// Honduras
        HR { "Kroazja" } 	// Croatia
        HT { "Ħaiti" } 	// Haiti
        HU { "Ungerija" } 	// Hungary
        ID { "Indoneżja" } 	// Indonesia
        IE { "Irlanda" } 	// Ireland
        IL { "Iżrael" } 	// Israel
        IN { "Indja" } 	// India
        IQ { "Iraq" } 	// Iraq
        IR { "Iran" } 	// Iran
        IS { "Islanda" } 	// Iceland
        IT { "Italja" } 	// Italy
        JM { "Ġamajka" } 	// Jamaica
        JO { "Ġordan" } 	// Jordan
        JP { "Ġappun" } 	// Japan
        KE { "Kenja" } 	// Kenya
        KG { "Kirgistan" } 	// Kyrgyzstan
        KH { "Kambodja" } 	// Cambodia
        KI { "Kiribati" } 	// Kiribati
        KM { "Komoros" } 	// Comoros
        KP { "Koreja ta' Fuq" } 	// North Korea
        KR { "Koreja t'Isfel" } 	// South Korea
        KW { "Kuwajt" } 	// Kuwait
        KZ { "Każakstan" } 	// Kazakhstan
        LA { "Laos" } 	// Laos
        LB { "Libanu" } 	// Lebanon
        LI { "Liechtenstein" } 	// Liechtenstein
        LK { "Sri Lanka" } 	// Sri Lanka
        LR { "Liberja" } 	// Liberia
        LS { "Lesoto" } 	// Lesotho
        LT { "Litwanja" } 	// Lithuania
        LU { "Lussemburgu" } 	// Luxembourg
        LV { "Latvja" } 	// Latvia
        LY { "Libja" } 	// Libya
        MA { "Marokk" } 	// Morocco
        MC { "Monako" } 	// Monaco
        MD { "Maldova" } 	// Moldova
        MG { "Madagaskar" } 	// Madagascar
        MH { "Gżejjer ta' Marshall" } 	// Marshall Islands
        MK { "Maċedonja" } 	// Macedonia
        ML { "Mali" } 	// Mali
        MM { "Mjanmar" } 	// Myanmar
        MN { "Mongolja" } 	// Mongolia
        MP { "Gżejjer Marjana ta' Fuq" } 	// Northern Mariana Islands
        MQ { "Martinik" } 	// Martinique
        MR { "Mawritanja" } 	// Mauritania
        MS { "Montserrat" } 	// Montserrat
        MT { "Malta" } 	// Malta
        MU { "Mawrizju" } 	// Mauritius
        MX { "Messiku" } 	// Mexico
        MY { "Malasja" } 	// Malaysia
        MZ { "Możambik" } 	// Mozambique
        NA { "Namibja" } 	// Namibia
        NC { "New Caledonia" } 	// New Caledonia
        NE { "Niġer" } 	// Niger
        NG { "Niġerja" } 	// Nigeria
        NI { "Nikaragwa" } 	// Nicaragua
        NL { "Olanda" } 	// Netherlands
        NO { "Norveġja" } 	// Norway
        NP { "Nepal" } 	// Nepal
        NU { "Niue" } 	// Niue
        NZ { "New Zealand" } 	// New Zealand
        OM { "Oman" } 	// Oman
        PA { "Panama" } 	// Panama
        PE { "Peru" } 	// Peru
        PF { "Polinesja Franċiża" } 	// French Polynesia
        PG { "Papwa-Ginea Ġdida" } 	// Papua New Guinea
        PH { "Filippini" } 	// Philippines
        PK { "Pakistan" } 	// Pakistan
        PL { "Polonja" } 	// Poland
        PR { "Puerto Rico" } 	// Puerto Rico
        PT { "Portugall" } 	// Portugal
        PY { "Paragwaj" } 	// Paraguay
        QA { "Qatar" } 	// Qatar
        RO { "Rumanija" } 	// Romania
        RU { "Russja" } 	// Russia
        RW { "Rwanda" } 	// Rwanda
        SA { "Għarabja Sawdita" } 	// Saudi Arabia
        SC { "Seychelles" } 	// Seychelles
        SD { "Sudan" } 	// Sudan
        SE { "Żvezja" } 	// Sweden
        SG { "Singapor" } 	// Singapore
        SI { "Slovenja" } 	// Slovenia
        SK { "Slovakkja" } 	// Slovakia
        SL { "Sierra Leone" } 	// Sierra Leone
        SN { "Senegal" } 	// Senegal
        SO { "Somalja" } 	// Somalia
        SP { "Serbja" } 	// Serbia
        SR { "Surinam" } 	// Suriname
        SV { "El Salvador" } 	// El Salvador
        SY { "Sirja" } 	// Syria
        SZ { "Sważiland" } 	// Swaziland
        TD { "Ċad" } 	// Chad
        TF { "Territorji Franċiżi ta' Nofsinhar" } 	// French Southern Territories
        TG { "Togo" } 	// Togo
        TH { "Tajlandja" } 	// Thailand
        TJ { "Taġikistan" } 	// Tajikistan
        TK { "Tokelaw" } 	// Tokelau
        TM { "Turkmenistan" } 	// Turkmenistan
        TN { "Tuneż" } 	// Tunisia
        TO { "Tonga" } 	// Tonga
        TP { "Timor tal-Lvant" } 	// East Timor
        TR { "Turkija" } 	// Turkey
        TT { "Trinidad u Tobago" } 	// Trinidad and Tobago
        TW { "Tajwan" } 	// Taiwan
        TZ { "Tanżanija" } 	// Tanzania
        UA { "Ukraina" } 	// Ukraine
        UG { "Uganda" } 	// Uganda
        US { "Stati Uniti" } 	// United States
        UY { "Urugwaj" } 	// Uruguay
        UZ { "Użbekistan" } 	// Uzbekistan
        VA { "Vatikan" } 	// Vatican   
        VE { "Venezwela" } 	// Venezuela
        VG { "British Virgin Islands" } 	// British Virgin Islands
        VI { "U.S. Virgin Islands" } 	// U.S. Virgin Islands
        VN { "Vjetnam" } 	// Vietnam
        VU { "Vanwatu" } 	// Vanuatu
        YE { "Jemen" } 	// Yemen
        YT { "Majotte" } 	// Mayotte
        YU { "Jugoslavja" } 	// Yugoslavia
        ZA { "Afrika t'Isfel" } 	// South Africa
        ZM { "Żambja" } 	// Zambia
        ZR { "Żaire" } 	// Zaire
        ZW { "Żimbabwe" } 	// Zimbabwe

    }
    MonthNames {
        Jannar,
        Frar,
        Marzu,
        April,
        Mejju,
        Ġunju,
        Lulju,
        Awissu,
        Settembru,
        Ottubru,
        Novembru,
        Diċembru
        ""
    }

   MonthAbbreviations {
        "Jan",
        "Fra",
        "Mar",
        "Apr",
        "Mej",
        "Ġun",
        "Lul",
        "Awi",
        "Set",
        "Ott",
        "Nov",
        "Diċ"
        ""
    }
    DayNames {
        "Il-Ħadd",
        "It-Tnejn",
        "It-Tlieta",
        "L-Erbgħa",
        "Il-Ħamis",
        "Il-Ġimgħa",
        "Is-Sibt"
    }

    Eras {
         "QK",  // Quddiem Kristu  [from Il-BIBBJA - it-tieni edijoni,
         "WK"   // Wara Kristu      Ghaqda Biblika Maltija]
    }

    DayAbbreviations { 
        "Ħad",
        "Tne",
        "Tli",
        "Erb", 
        "Ħam",
        "Ġim",
        "Sib"
    }


    NumberElements {
        ".",
        ",",
        ";",
        "%",
        "0",
        "#",
        "-",
        E,
        "‰",
        "∞",
        "�"
    }


// illum is-Sibt, 01 ta'' Awissu, 1998 :)
    DateTimePatterns {
        "h:mm:ss a z",
        "h:mm:ss a z",
        "h:mm:ss a",
        "h:mm a",
        "EEEE, d 'ta''' MMMM, yyyy",
        "d 'ta''' MMMM",
        "dd/MM/yy",
        "dd/MM/yy",
        "{1} {0}"
    }
    DateTimeElements {
        "1",
        "1"
    }

//   Note, that 'c' doesn't exist in Maltese. But I put it here following ċ 
//   for compatibility with foreign words.

// Joseph Felici Pace and "Regolament" says: 
// a b ċ [c] d e f ġ g għ h ħ i ie j k l m n o p q r s t u v w x [y] ż z

// Note that IE is **NOT** sorted as ittra waħda. 
// So says the Akkademja tal-Malta

   CollationElements
   {
        Version { "1.0" }
        Override { "FALSE" }
        Sequence { "& B < ċ , Ċ" // ċ  Ċ
                   "    < c,C"      
                   "& F < ġ, Ġ "              // ġ  Ġ
                   "    < g,G"
                   "    < għ , gĦ , Għ , GĦ "
                   "& H < ħ  , Ħ "           
                   "& Y < ż, Ż"               // ż Ż
                   "    < z,Z" }
   }

// Time zone
//CET: 
    zoneStrings {
        {
        "CET", 
        "Ħin ta' L-Ewropa Ċentrali", 
        "CET", 
        "Ħin tas-Sajf fl-Ewropa Ċentrali",
        "CEST"
        }
    }

    LocaleID {"3A"}
    LocaleScript{ 
        "Latn",  // ISO 15924 Name 
    }

// Spellout rules.  Experimental.

     SpelloutRules {
            // This rule set shows the normal simple formatting rules for English
            "%simplified:\n"
                   // negative number rule.  This rule is used to format negative
                   // numbers.  The result of formatting the number's absolute
                   // value is placed where the >> is.
            "    -x: minus >>;\n"
                   // faction rule.  This rule is used for formatting numbers
                   // with fractional parts.  The result of formatting the
                   // number's integral part is substituted for the <<, and
                   // the result of formatting the number's fractional part
                   // (one digit at a time, e.g., 0.123 is "zero punt one two
                   // three") replaces the >>.
            "    x.x: << punt >>;\n"
                   // the rules for the values from 0 to 19 are simply the
                   // words for those numbers
            "    żero; wieħed; tnejn; tlieta; erbgħa; ħamsa; sitta; sebgħa; tmienja; disgħa;\n"
            "    għaxra; ħdax; tnax; tlettax; erbatax; ħmistax; sittax;\n"
            "        sbatax; tmintax; dsatax;\n"
                   // beginning at 20, we use the >> to mark the position where
                   // the result of formatting the number's ones digit.  Thus,
                   // we only need a new rule at every multiple of 10.  Text in
                   // backets is omitted if the value being formatted is an
                   // even multiple of 10.
            "    20: [>> u ]għoxrin;\n"
            "    30: [>> u ]tletin;\n"
            "    40: [>> u ]erbgħin;\n"
            "    50: [>> u ]ħamsin;\n"
            "    60: [>> u ]sittin;\n"
            "    70: [>> u ]sebgħin;\n"
            "    80: [>> u ]tmenin;\n"
            "    90: [>> u ]disgħin;\n"
                   // beginning at 100, we can use << to mark the position where
                   // the result of formatting the multiple of 100 is to be
                   // inserted.  Notice also that the meaning of >> has shifted:
                   // here, it refers to both the ones place and the tens place.
                   // The meanings of the << and >> tokens depend on the base value
                   // of the rule.  A rule's divisor is (usually) the highest
                   // power of 10 that is less than or equal to the rule's base
                   // value.  The value being formatted is divided by the rule's
                   // divisor, and the integral quotient is used to get the text
                   // for <<, while the remainder is used to produce the text
                   // for >>.  Again, text in brackets is omitted if the value
                   // being formatted is an even multiple of the rule's divisor
                   // (in this case, an even multiple of 100)
            "    100: mija[ u >>];\n"
            "    200: mitejn[ u >>];\n"
                   // The rules for the higher numbers work the same way as the
                   // rule for 100: Again, the << and >> tokens depend on the
                   // rule's divisor, which for all these rules is also the rule's
                   // base value.  To group by thousand, we simply don't have any
                   // rules between 1,000 and 1,000,000.
            "    1000: << elf[ u >>];\n"
            "    2000: << elfejn[ u >>];\n"
            "    3000: tliet elef [ u >>];\n"
            "    1,000,000: << miljun[ u >>];\n"
            "    1,000,000,000: << biljun[ >>];\n"
            "    1,000,000,000,000: << triljun[ >>];\n"
                   // overflow rule.  This rule specifies that values of a
                   // quadrillion or more are shown in numerals rather than words.
                   // The == token means to format (with new rules) the value
                   // being formatted by this rule and place the result where
                   // the == is.  The #,##0 inside the == signs is a
                   // DecimalFormat pattern.  It specifies that the value should
                   // be formatted with a DecimalFormat object, and that it
                   // should be formatted with no decimal places, at least one
                   // digit, and a thousands separator.
            "    1,000,000,000,000,000: =#,##0=;\n"

            // %default is a more elaborate form of %simplified;  It is basically
            // the same, except that it introduces "and" before the ones digit
            // when appropriate (basically, between the tens and ones digits) and
            // separates the thousands groups with commas in values over 100,000.
            "%default:\n"
                   // negative-number and fraction rules.  These are the same
                   // as those for %simplified, but have to be stated here too
                   // because this is an entry point
            "    -x: minus >>;\n"
            "    x.x: << punt >>;\n"
                   // just use %simplified for values below 100
            "    =%simplified=;\n"
                   // for values from 100 to 9,999 use %%and to decide whether or
                   // not to interpose the "and"
            "    100: mija[ >%%and>];\n"
            "    200: mitejn[ >%%and>];\n"
            "    300: tlett mija[ >%%and>];\n"
            "    400: erbgħa mija[ >%%and>];\n"
            "    500: ħames mija[ >%%and>];\n"
            "    600: sitt mija[ >%%and>];\n"
            "    700: sebgħa mija[ >%%and>];\n"
            "    800: tmin mija[ >%%and>];\n"
            "    900: disgħa mija[ >%%and>];\n"
            "    1000: << elf[ >%%and>];\n"
                   // for values of 100,000 and up, use %%commas to interpose the
                   // commas in the right places (and also to interpose the "and")
            "    100,000>>: << thousand[>%%commas>];\n"
            "    1,000,000: << million[>%%commas>];\n"
            "    1,000,000,000: << billion[>%%commas>];\n"
            "    1,000,000,000,000: << trillion[>%%commas>];\n"
            "    1,000,000,000,000,000: =#,##0=;\n"
            // if the value passed to this rule set is greater than 100, don't
            // add the "and"; if it's less than 100, add "and" before the last
            // digits
            "%%and:\n"
            "    u =%default=;\n"
            "    100: =%default=;\n"
            // this rule set is used to place the commas
            "%%commas:\n"
                   // for values below 100, add "and" (the apostrophe at the
                   // beginning is ignored, but causes the space that follows it
                   // to be significant: this is necessary because the rules
                   // calling %%commas don't put a space before it)
            "    ' and =%default=;\n"
                   // put a comma after the thousands (or whatever preceded the
                   // hundreds)
            "    100: , =%default=;\n"
                   // put a comma after the millions (or whatever precedes the
                   // thousands)
            "    1000: , <%default< thousand, >%default>;\n"
                   // and so on...
            "    1,000,000: , =%default=;"
            // %%lenient-parse isn't really a set of number formatting rules;
            // it's a set of collation rules.  Lenient-parse mode uses a Collator
            // object to compare fragments of the text being parsed to the text
            // in the rules, allowing more leeway in the matching text.  This set
            // of rules tells the formatter to ignore commas when parsing (it
            // already ignores spaces, which is why we refer to the space; it also
            // ignores hyphens, making "twenty one" and "twenty-one" parse
            // identically)
            "%%lenient-parse:\n"
            //            "    & ' ' , ',' ;\n"
            "   &\u0000 << ' ' << ',' << '-'; \n"
    }


    DurationRules {
            // main rule set for formatting with words
            "%with-words:\n"
                   // take care of singular and plural forms of "second"
            "    0 sekondi; 1 sekonda; =0= sekondi;\n"
                   // use %%min to format values greater than 60 seconds
            "    60/60: <%%min<[, >>];\n"
                   // use %%hr to format values greater than 3,600 seconds
                   // (the ">>>" below causes us to see the number of minutes
                   // when when there are zero minutes)
            "    3600/60: <%%hr<[, >>>];\n"
            // this rule set takes care of the singular and plural forms
            // of "minute"
            "%%min:\n"
            "    0 minuti; 1 minuta; =0= minuti;\n"
            // this rule set takes care of the singular and plural forms
            // of "hour"
            "%%hr:\n"
            "    0 siegħat; 1 siegħa; =0= siegħat;\n"

            // main rule set for formatting in numerals
            "%in-numerals:\n"
                   // values below 60 seconds are shown with "sec."
            "    =0= sek.;\n"
                   // higher values are shown with colons: %%min-sec is used for
                   // values below 3,600 seconds...
            "    60: =%%min-sec=;\n"
                   // ...and %%hr-min-sec is used for values of 3,600 seconds
                   // and above
            "    3600: =%%hr-min-sec=;\n"
            // this rule causes values of less than 10 minutes to show without
            // a leading zero
            "%%min-sec:\n"
            "    0: :=00=;\n"
            "    60/60: <0<>>;\n"
            // this rule set is used for values of 3,600 or more.  Minutes are always
            // shown, and always shown with two digits
            "%%hr-min-sec:\n"
            "    0: :=00=;\n"
            "    60/60: <00<>>;\n"
            "    3600/60: <#,##0<:>>>;\n"
            // the lenient-parse rules allow several different characters to be used
            // as delimiters between hours, minutes, and seconds
            "%%lenient-parse:\n"
            "    & ':' = '.' = ' ' = '-';\n" 
    }


}


// -- BIBLIOGRAPHY --
//
// Maltese alphabet: grazzi, to Mr. Karmenu Attard
// 
//  'colour image's dictionary order (Malta, 1998) -- [CI]
//   a b ċ [c] d e f ġ g għ h ħ i ie j k l m n o p q r s t u v w x y z ż
//   Only Colour Image's dictionary has 'ie' as a separate letter. 
//    (that i have seen so far)
//
// Kapt Pawlu Bugeja's dizzunarju
//  (Kelmet il-Malti) [Grima: Marsa, Malta, 1990) - the orange one     -- [Kelmet]
//   -- same order, but lists ż before z
//
// Lydia Sciriha seems to use the order 'g ġ għ' but 'z ż' in       -- [BM]
//   Beginning Maltese (Uni ta' Malta, 1996) in the lessons,
// but in the word list (at back) it's 'ġ g għ' and 'ż z' [1st ed.]
//
// J. Aquilina in his 'Teach Yourself:Maltese' book                    -- [Ty]
//     (London: Hodder Headline, 1965 and Chicago, NTC Publishing 1995)
// uses the very different 'ġ g h ħ ... n għ o .. x ż z' ordering, 
// placing għ between n and o. (I have heard this is to be similar to the
//  Arabic ordering)
//
// Casha, Charles: 'Kun Af - aktar dwar ilsienna'                       -- [KA]
//   (Blata l-Bajda, Malta: Merlin Library Ltd., 1987)

// CREDITS: above sources and also..
// - Mirka Mifsud Bonnici for much of the initial translation/inspiration
// - Karmenu Attard
// - MaxMan (Manuel)
// - Ramon Casha
// - Angelo Dalli      ( Major updates to ISO lang/country codes)
// - in - in-nazzjon
// - lo - l-orrizont

// Change Log
//2001-11-15 srl 0.9.4  MAJOR updates to ISO lang/cty codes from Angelo,
/                         Number spellout, etc..
//2001-01-02 srl 0.9.2  Converted to UTF-8. Added: AE/GM/NI/OM/PH/SA/KW
//2000-10-09 gr  0.9.1  [shipped in ICU 1.7]
//2000-07-20 srl 0.9.0
