﻿// Copyright (c) 1998-2003 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 { "1.0" } // 2002-01-15 


    // Duplicate data has been commented out.
    Languages {
        Fallback{ "en"}
        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
        av	{ "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)
        cr	{ "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
        dv	{ "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
        dz	{ "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
        ff	{ "Fulaħ" }	// Fulah
        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)
        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
        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
        ha	{ "Ħ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
        ja	{ "Ġappuniż" }	// Japanese
        jpr	{ "Lhudi-Persjan" }	// Judeo-Persian
        jrb	{ "Lhudi-Għarbi" }	// Judeo-Arabic
        jv	{ "Ġ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
        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)
        oj	{ "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
        ti	{ "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)
        to	{ "Tongan (Gżejjer ta' Tonga)" }	// Tongan (Tonga Islands)
        tr	{ "Tork" }	// Turkish
        //ts	{ "Tsonga" }	// Tsonga
        tsi	{ "Zimxjan" }	// Tsimshian
        //tt	{ "Tatar" }	// Tatar
        //tum	{ "Tumbuka" }	// Tumbuka
        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
        yo	{ "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
    }

    // Duplicate data has been commented out.
    Countries {
        Fallback{ "en"}
        //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
        TL { "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 // It's now called CD { "Democratic Republic of the Congo" }
        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 yyyy",
        "dd-MMM-yyyy",
        "dd/MM/yy",
        "{1} {0}"
    }
//    Duplicated in parent
//    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

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

//    Variants{
//        PREEURO { "Qabel il-Euro" }
//    }
// Time zone
//CET: 
    zoneStrings {
        {
            "CET", 
            "Ħin ta' L-Ewropa Ċentrali", 
            "CET", 
            "Ħin tas-Sajf fl-Ewropa Ċentrali",
            "CEST"
        }
    }
    LocaleScript{ 
        "Latn",  // ISO 15924 Name 
    }

    ExemplarCharacters { "[[a-z \u00e0 \u00ec \u00f9 \u00e8 \u00f2 ċ ġ ħ {għ} ż]-[cy]]" }

// 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" 
    }



    // Currency display names
    Currencies {
        MTL { "Lm", "MTL" }
    }
}


// -- 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
