// ***************************************************************************
// *
// *   Copyright (C) 1997-2003, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************

// Country names in de, de_AT, and de_CH are short names from the
// list of names maintained by the German
// Federal Permanent Committee for Geographic Names,
// Sta"ndiger Ausschuss fu"r Geographische Namen (StAGN),
// as published at its web site at
// http://www.ifag.de/kartographie/Stagn/Staatennamen.htm
// Date there: 1999-apr-19

// Note 2003-sep-19: The site seems to have moved to
// http://www.bkg.bund.de/kartographie/stagn/Staatennamen.htm

de {
    Version{ "3.0" }
    // This shouldn't be used, but valid data should be here.
    // vorm. -> vormittags -> in the morning
    // nachm. -> nachmittags -> in the afternoon
    AmPmMarkers {
        "vorm.",
        "nachm.",
    }
    collations {
        standard { 
            Version { "1.0" }
            Sequence { 
                "&A<<\u00c6/E"
                "&a<<\u00e6/e" 
            }
        }
        phonebook {
            Version { "2.0" }
            Sequence { 
                "&a<<\u00e6/e<<\u00E4/e"
                "&A<<\u00c6/E<<\u00C4/E" 
                "&\u0153<<\u00F6/e"
                "&\u0152<<\u00D6/E" 
                "&u<<\u00FC/e"
                "&U<<\u00DC/E" 
            }
        }
    }
    // Currency display names

    // See for example "W\u00e4hrungscodes" at
    // http://www-cik.uni-paderborn.de/vddk/Dokumentationen/Dokumentation_IDM_1_3/ISO-Tabellen/Wahrungscodes/body_wahrungscodes.html
    // (On the page it says "Quelle: gem\u00e4\u00df ISO 4217 3-alpha-code (Stand: Juli 2000)"
    // and "Verzeichnis der ISO-Codes f\u00FCr W\u00e4hrung mit Land".)

    // See also http://umrechnen.de/
    Currencies {
        AED { "AED", "UAE Dirham" }
        AFA { "AFA", "Afghani" }
        ALL { "ALL", "Lek" }
        AMD { "AMD", "Dram" }
        ANG { "ANG", "Niederl. Antillen Gulden" }
        AOA { "AOA", "Kwanza" }
        AON { "AON", "Neuer Kwanza" }
        AOR { "AOR", "Kwanza Reajustado" }
        ARS { "ARS", "Argentinischer Peso" }
        ATS { "\u00F6S", "\u00D6sterreichischer Schilling" }
        AUD { "AUD", "Australischer Dollar" }
        AWG { "AWG", "Aruba Florin" }
        AZM { "AZM", "Aserbeidschan Manat" }
        BAM { "BAM", "Konvertierbare Mark" }
        BBD { "BBD", "Barbados-Dollar" }
        BDT { "BDT", "Taka" }
        BEF { "BEF", "Belgischer Franken" }
        BGL { "BGL", "Lew" }
        BGN { "BGN", "Bulgarian Lev" }
        BHD { "BHD", "Bahrain-Dinar" }
        BIF { "BIF", "Burundi-Franc" }
        BMD { "BMD", "Bermuda-Dollar" }
        BND { "BND", "Brunei-Dollar" }
        BOB { "BOB", "Boliviano" }
        BOV { "BOV", "Mvdol" } // financial instrument
        BRL { "BRL", "Real" }
        BSD { "BSD", "Bahama-Dollar" }
        BTN { "BTN", "Ngultrum" }
        BWP { "BWP", "Pula" }
        BYB { "BYB", "Belarus Rubel (alt)" }
        BYR { "BYR", "Belarus Rubel (neu)" }
        BZD { "BZD", "Belize-Dollar" }
        CAD { "CAD", "Kanadischer Dollar" }
        CDF { "CDF", "Franc congolais" }
        CHF { "SFr.", "Schweizer Franken" }
        CLF { "CLF", "Unidades de Fomento" }
        CLP { "CLP", "Chilenischer Peso" }
        CNY { "CNY", "Renminbi Yuan" }
        COP { "COP", "Kolumbianischer Peso" }
        CRC { "CRC", "Costa Rica Colon" }
        CUP { "CUP", "Kubanischer Peso" }
        CVE { "CVE", "Kap Verde Escudo" }
        CYP { "CYP", "Zypern Pfund" }
        CZK { "CZK", "Tschechische Krone" }
        DEM { "DM",  "Deutsche Mark" }
        DJF { "DJF", "Dschibuti-Franc" }
        DKK { "DKK", "D\u00E4nische Krone" }
        DOP { "DOP", "Dominikanischer Peso" }
        DZD { "DZD", "Algerischer Dinar" }
        ECS { "ECS", "Ecuadorianischer Sucre" }
        ECV { "ECV", "Verrechnungseinheit f\u00FCr EC" }
        EEK { "EEK", "Estnische Krone" }
        EGP { "EGP", "\u00C4gyptisches Pfund" }
        ERN { "ERN", "Nakfa" }
        ESP { "ESP", "Spanische Pesete" }
        ETB { "ETB", "Birr" }
        EUR { "\u20AC", "Euro" }
        FIM { "FIM", "Finnische Mark" }
        FJD { "FJD", "Fidschi Dollar" }
        FKP { "FKP", "Falkland Pfund" }
        FRF { "FF",  "Franz\u00F6sischer Franc" }
        GBP { "\u00A3", "Pfund Sterling" }
        GEL { "GEL", "Georgischer Lari" }
        GHC { "GHC", "Cedi" }
        GIP { "GIP", "Gibraltar Pfund" }
        GMD { "GMD", "Dalasi" }
        GNF { "GNF", "Guinea Franc" }
        GRD { "GRD", "Griechische Drachme" }
        GTQ { "GTQ", "Quetzal" }
        GWP { "GWP", "Guinea Bissau Peso" }
        GYD { "GYD", "Guyana Dollar" }
        HKD { "HKD", "Hongkong Dollar" }
        HNL { "HNL", "Lempira" }
        HRK { "HRK", "Kuna" }
        HTG { "HTG", "Gourde" }
        HUF { "HUF", "Forint" }
        IDR { "IDR", "Rupiah" }
        IEP { "IEP", "Irisches Pfund" }
        ILS { "ILS", "Schekel" }
        INR { "=0#Rs.|1#Re.|1<Rs.", "Indische Rupie" }
        IQD { "IQD", "Irak Dinar" }
        IRR { "IRR", "Rial" }
        ISK { "ISK", "Isl\u00E4ndische Krone" }
        ITL { "\u20A4", "Italienische Lire" }
        JMD { "JMD", "Jamaika Dollar" }
        JOD { "JOD", "Jordanischer Dinar" }
        JPY { "\u00A5", "Yen" }
        KES { "KES", "Kenia Schilling" }
        // KGS { "KGS", "SOM" } -- not useful, commented out -- markus 20030424
        KHR { "KHR", "Riel" }
        KMF { "KMF", "Komoren Franc" }
        KPW { "KPW", "Nordkoreanischer Won" }
        KRW { "KRW", "S\u00FCdkoreanischer Won" }
        KWD { "KWD", "Kuwait Dinar" }
        KYD { "KYD", "Kaiman-Dollar" }
        KZT { "KZT", "Tenge" }
        LAK { "LAK", "Kip" }
        LBP { "LBP", "Libanesisches Pfund" }
        LKR { "LKR", "Sri Lanka Rupie" }
        LRD { "LRD", "Liberianischer Dollar" }
        LSL { "LSL", "Loti" }
        LTL { "LTL", "Litauischer Litas" }
        LUF { "LUF", "Luxemburgischer Franc" }
        LVL { "LVL", "Lettischer Lats" }
        LYD { "LYD", "Libyscher Dinar" }
        MAD { "MAD", "Marokkanischer Dirham" }
        MDL { "MDL", "Moldau Leu" }
        MGF { "MGF", "Madagaskar Franc" }
        MKD { "MKD", "Denar" }
        MMK { "MMK", "Kyat" }
        MNT { "MNT", "Tugrik" }
        MOP { "MOP", "Pataca" }
        MRO { "MRO", "Ouguiya" }
        MTL { "MTL", "Maltesische Lira" }
        MUR { "MUR", "Mauritius Rupie" }
        MVR { "MVR", "Rufiyaa" }
        MWK { "MWK", "Malawi Kwacha" }
        MXN { "MXN", "Mexikanischer Peso" }
        MXV { "MXV", "Mexican Unidad de Inversion (UDI)" }
        MYR { "MYR", "Malaysischer Ringgit" }
        MZM { "MZM", "Metical" }
        NAD { "NAD", "Namibia Dollar" }
        NGN { "NGN", "Naira" }
        NIO { "NIO", "Gold-Cordoba" }
        NLG { "NLG", "Holl\u00e4ndischer Gulden" }
        NOK { "NOK", "Norwegische Krone" }
        NPR { "NPR", "Nepalesische Rupie" }
        NZD { "NZD", "Neuseeland Dollar" }
        OMR { "OMR", "Rial Omani" }
        PAB { "PAB", "Balboa" }
        PEN { "PEN", "Neuer Sol" }
        PGK { "PGK", "Kina" }
        PHP { "PHP", "Philippinischer Peso" }
        PKR { "PKR", "Pakistanische Rupie" }
        PLN { "PLN", "Zloty" }
        PTE { "PTE", "Portugiesischer Escudo" }
        PYG { "PYG", "Guarani" }
        QAR { "QAR", "Katar Riyal" }
        ROL { "ROL", "Leu" }
        RUB { "RUB", "Russischer Rubel (neu)" }
        RUR { "RUR", "Russischer Rubel (alt)" }
        RWF { "RWF", "Ruanda Franc" }
        SAR { "SAR", "Saudi Riyal" }
        SBD { "SBD", "Salomonen Dollar" }
        SCR { "SCR", "Seychellen Rupie" }
        SDD { "SDD", "Sudanesischer Dinar" }
        SEK { "SEK", "Schwedische Krone" }
        SGD { "SGD", "Singapur Dollar" }
        SHP { "SHP", "St. Helena Pfund" }
        SIT { "SIT", "Tolar" }
        SKK { "SKK", "Slowakische Krone" }
        SLL { "SLL", "Leone" }
        SOS { "SOS", "Somalia Schilling" }
        SRG { "SRG", "Suriname Gulden" }
        STD { "STD", "Dobra" }
        SVC { "SVC", "El Salvador Colon" }
        SYP { "SYP", "Syrisches Pfund" }
        SZL { "SZL", "Lilangeni" }
        THB { "THB", "Baht" }
        TJR { "TJR", "Tadschikistan Rubel" }
        TMM { "TMM", "Turkmenistan-Manat" }
        TND { "TND", "Tunesischer Dinar" }
        TOP { "TOP", "Pa'anga" }
        TPE { "TPE", "Timor Escudo" }
        TRL { "TRL", "T\u00FCrkische Lira" }
        TTD { "TTD", "Trinidad und Tobago Dollar" }
        TWD { "TWD", "Neuer Taiwan Dollar" }
        TZS { "TZS", "Tansania Schilling" }
        UAH { "UAH", "Hryvnia" }
        UGX { "UGX", "Uganda Schilling" }
        USD { "$", "US Dollar" }
        UYU { "UYU", "Uruguayischer Peso" }
        UZS { "UZS", "Usbekistan Sum" }
        VEB { "VEB", "Bolivar" }
        VND { "VND", "Dong" }
        VUV { "VUV", "Vatu" }
        WST { "WST", "Tala" }
        XAF { "XAF", "CFA Franc (\u00C4quatorial)" }
        XCD { "XCD", "Ostkaribischer Dollar" }
        XOF { "XOF", "CFA Franc (West)" }
        XPF { "XPF", "CFP Franc" }
        YER { "YER", "Jemen Rial" }
        YUM { "YUM", "Neuer Dinar" }
        ZAR { "ZAR", "Rand" }
        ZMK { "ZMK", "Kwacha" }
        ZWD { "ZWD", "Simbabwe Dollar" }
    }
    Countries {
        Fallback{ "en"}
        //AD { "Andorra" }
        AE { "Vereinigte Arabische Emirate" }
        //AF { "Afghanistan" }
        AG { "Antigua und Barbuda" }
        //AI { "Anguilla" }
        AL { "Albanien" }
        AM { "Armenien" }
        AN { "Niederl\u00E4ndische Antillen" }
        //AO { "Angola" }
        AQ { "Antarktis" }
        AR { "Argentinien" }
        AS { "Amerikanisch-Samoa" }
        AT { "\u00D6sterreich" }
        AU { "Australien" }
        //AW { "Aruba" }
        AZ { "Aserbaidschan" }

        BA { "Bosnien und Herzegowina" }
        //BB { "Barbados" }
        BD { "Bangladesch" }
        BE { "Belgien" }
        //BF { "Burkina Faso" }
        BG { "Bulgarien" }
        //BH { "Bahrain" }
        //BI { "Burundi" }
        //BJ { "Benin" }
        //BM { "Bermuda" }
        BN { "Brunei Darussalam" }
        BO { "Bolivien" }
        BR { "Brasilien" }
        //BS { "Bahamas" }
        //BT { "Bhutan" }
        BV { "Bouvetinsel" }
        BW { "Botsuana" }
        //BY { "Belarus" }  // AKA Wei\u00DFrussland
        //BZ { "Belize" }

        CA { "Kanada" }
        CC { "Kokosinseln (Keeling)" }
        CD { "Demokratische Republik Kongo" }
        CF { "Zentralafrikanische Republik" }
        CG { "Kongo" }
        CH { "Schweiz" }
        //CI { "C\u00F4te d\u0092Ivoire" }
        CK { "Cookinseln" }
        //CL { "Chile" }
        CM { "Kamerun" }
        //CN { "China" }
        CO { "Kolumbien" }
        //CR { "Costa Rica" }
        CU { "Kuba" }
        CV { "Kap Verde" }
        CX { "Weihnachtsinsel" }
        CY { "Zypern" }
        CZ { "Tschechien" }

        DE { "Deutschland" }
        DJ { "Dschibuti" }
        DK { "D\u00E4nemark" }
        //DM { "Dominica" }
        DO { "Dominikanische Republik" }
        DZ { "Algerien" }

        //EC { "Ecuador" }
        EE { "Estland" }
        EG { "\u00C4gypten" }
        //ER { "Eritrea" }
        ES { "Spanien" }
        ET { "\u00C4thiopien" }

        FI { "Finnland" }
        FJ { "Fidschi" }
        FK { "Falklandinseln" }
        FM { "Mikronesien" }
        FO { "F\u00E4r\u00F6er" }
        FR { "Frankreich" }

        GA { "Gabun" }
        GB { "Vereinigtes K\u00F6nigreich" }
        //GD { "Grenada" }
        GE { "Georgien" }
        GF { "Franz\u00f6sisch-Guayana" }
        //GH { "Ghana" }
        //GI { "Gibraltar" }
        GL { "Gr\u00F6nland" }
        //GM { "Gambia" }
        //GN { "Guinea" }
        //GP { "Guadeloupe" }
        GQ { "\u00C4quatorialguinea" }
        GR { "Griechenland" }
        GS { "S\u00FCdgeorgien und die S\u00FCdlichen Sandwichinseln" }
        //GT { "Guatemala" }
        //GU { "Guam" }
        //GW { "Guinea-Bissau" }
        //GY { "Guyana" }

        HM { "Heard und McDonaldinseln" }
        //HN { "Honduras" }
        HR { "Kroatien" }
        //HT { "Haiti" }
        HU { "Ungarn" }

        ID { "Indonesien" }
        IE { "Irland" }
        //IL { "Israel" }
        IN { "Indien" }
        IO { "Britisches Territorium im Indischen Ozean" }
        IQ { "Irak" }
        //IR { "Iran" }
        IS { "Island" }
        IT { "Italien" }

        JM { "Jamaika" }
        JO { "Jordanien" }
        //JP { "Japan" }

        KE { "Kenia" }
        KG { "Kirgisistan" }
        KH { "Kambodscha" }
        //KI { "Kiribati" }
        KM { "Komoren" }
        KN { "St. Kitts und Nevis" }
        KP { "Demokratische Volksrepublik Korea" }
        KR { "Republik Korea" }
        //KW { "Kuwait" }
        KY { "Kaimaninseln" }
        KZ { "Kasachstan" }

        //LA { "Laos" }
        LB { "Libanon" }
        LC { "St. Lucia" }
        //LI { "Liechtenstein" }
        //LK { "Sri Lanka" }
        //LR { "Liberia" }
        //LS { "Lesotho" }
        LT { "Litauen" }
        LU { "Luxemburg" }
        LV { "Lettland" }
        LY { "Libyen" }

        MA { "Marokko" }
        //MC { "Monaco" }
        MD { "Moldawien" }
        MG { "Madagaskar" }
        MH { "Marshallinseln" }
        MK { "Mazedonien" }
        //ML { "Mali" }
        //MM { "Myanmar" }
        MN { "Mongolei" }
        MO { "Macau S.A.R.,China" }
        MP { "N\u00f6rdliche Marianen" }
        //MQ { "Martinique" }
        MR { "Mauretanien" }
        //MS { "Montserrat" }
        //MT { "Malta" }
        //MU { "Mauritius" }
        MV { "Malediven" }
        //MW { "Malawi" }
        MX { "Mexiko" }
        //MY { "Malaysia" }
        MZ { "Mosambik" }

        //NA { "Namibia" }
        NC { "Neukaledonien" }
        //NE { "Niger" }
        NF { "Norfolkinsel" }
        //NG { "Nigeria" }
        //NI { "Nicaragua" }
        NL { "Niederlande" }
        NO { "Norwegen" }
        //NP { "Nepal" }
        //NR { "Nauru" }
        //NU { "Niue" }
        NZ { "Neuseeland" }

        //OM { "Oman" }

        //PA { "Panama" }
        //PE { "Peru" }
        PF { "Franz\u00F6sisch-Polynesien" }
        PG { "Papua-Neuguinea" }
        PH { "Philippinen" }
        //PK { "Pakistan" }
        PL { "Polen" }
        PM { "St. Pierre und Miquelon" }
        //PN { "Pitcairn" }
        //PR { "Puerto Rico" }
        PS { "Pal\u00E4stina" }
        //PT { "Portugal" }
        //PW { "Palau" }
        //PY { "Paraguay" }

        QA { "Katar" }

        //RE { "R\u00E9union" }
        RO { "Rum\u00E4nien" }
        RU { "Russland" }
        RW { "Ruanda" }

        SA { "Saudi-Arabien" }
        SB { "Salomonen" }
        SC { "Seychellen" }
        //SD { "Sudan" }
        SE { "Schweden" }
        SG { "Singapur" }
        SH { "St. Helena" }
        SI { "Slowenien" }
        SJ { "Svalbard und Jan Mayen" }
        SK { "Slowakei" }
        //SL { "Sierra Leone" }
        //SM { "San Marino" }
        //SN { "Senegal" }
        //SO { "Somalia" }
        //SR { "Suriname" }
        ST { "S\u00E3o Tom\u00E9 und Pr\u00EDncipe" }
        //SV { "El Salvador" }
        SY { "Syrien" }
        SZ { "Swasiland" }

        TC { "Turks- und Caicosinseln" }
        TD { "Tschad" }
        TF { "Franz\u00F6sische S\u00FCd- und Antarktisgebiete" }
        //TG { "Togo" }
        //TH { "Thailand" }
        TJ { "Tadschikistan" }
        //TK { "Tokelau" }
        //TM { "Turkmenistan" }
        TN { "Tunesien" }
        //TO { "Tonga" }
        TR { "T\u00FCrkei" }
        TT { "Trinidad und Tobago" }
        //TV { "Tuvalu" }
        //TW { "Taiwan" }
        TZ { "Tansania" }

        //UA { "Ukraine" }
        //UG { "Uganda" }
        UM { "Amerikanisch-Ozeanien" }
        US { "Vereinigte Staaten" }
        //UY { "Uruguay" }
        UZ { "Usbekistan" }

        VA { "Vatikanstadt" }
        VC { "St. Vincent und die Grenadinen" }
        //VE { "Venezuela" }
        VG { "Britische Jungferninseln" }
        VI { "Amerikanische Jungferninseln" }
        //VN { "Vietnam" }
        //VU { "Vanuatu" }

        WF { "Wallis und Futuna" }
        //WS { "Samoa" }

        YE { "Jemen" }
        //YT { "Mayotte" }
        YU { "Jugoslawien" }

        ZA { "S\u00FCdafrika" }
        ZM { "Sambia" }
        ZW { "Simbabwe" }

        // some entries that are not in the official list:
        EH { "Westsahara" }
        //HK { "Hong Kong S.A.R., China" }
        SP { "Serbien" }
        TL { "Osttimor" }
    }
    DateTimeElements:intvector { 
        2,
        4,
    }
    DateTimePatterns { 
        "H:mm' Uhr 'z",
        "HH:mm:ss z",
        "HH:mm:ss",
        "HH:mm",
        "EEEE, d. MMMM yyyy",
        "d. MMMM yyyy",
        "dd.MM.yyyy",
        "dd.MM.yy",
        "{1} {0}",
    }
    DayAbbreviations { 
        "So",
        "Mo",
        "Di",
        "Mi",
        "Do",
        "Fr",
        "Sa",
    }
    DayNames { 
        "Sonntag",
        "Montag",
        "Dienstag",
        "Mittwoch",
        "Donnerstag",
        "Freitag",
        "Samstag",
    }
    Eras { 
        "v. Chr.",
        "n. Chr.",
    }

    // For the languages, I am trying to use the adjective list in the
    // official list of country names.
    // Sometimes I am guessing.
    //   Markus Scherer, 2000jun01

    // I just found http://suchfix.uni-muenster.de/vifanie/NedGuideDt/help/languagecode.html
    // (which is not entirely reliable, contains some English names).
    // Generally cross-checking with google.de (search for the language name + "Sprache")
    // and with other CLDR data.
    // Markus 2003-dec-12
    Languages {
        // Fallback{ "en" } -- commented out because it's too unreliable
        aa { "Afar" }
        ab { "Abchasisch" }
        af { "Afrikaans" }
        am { "Amharisch" }
        ar { "Arabisch" }
        as { "Assamesisch" }
        ay { "Aymara" }
        az { "Aserbaidschanisch" }
        ba { "Baschkirisch" }
        be { "Wei\u00dfrussisch" }
        bg { "Bulgarisch" }
        bh { "Biharisch" }
        bi { "Bislama" }
        bn { "Bengalisch" }
        bo { "Tibetisch" }
        br { "Bretonisch" }
        ca { "Katalanisch" }
        co { "Korsisch" }
        cs { "Tschechisch" }
        cy { "Walisisch" }
        da { "D\u00e4nisch" }
        de { "Deutsch" }
        dz { "Bhutanisch" }
        el { "Griechisch" }
        en { "Englisch" }
        eo { "Esperanto" }
        es { "Spanisch" }
        et { "Estnisch" }
        eu { "Baskisch" }
        fa { "Persisch" }
        fj { "Fidschianisch" }
        fi { "Finnisch" }
        fo { "F\u00e4r\u00f6isch" }
        fr { "Franz\u00f6sisch" }
        fy { "Friesisch" }
        ga { "Irisch" }
        gd { "Schottisch-G\u00e4lisch" }
        gl { "Galizisch" }
        gn { "Guarani" }
        gu { "Gujarati" }
        gv { "Manx" }
        ha { "Hausa" }
        haw { "Hawaiianisch" }
        he { "Hebr\u00e4isch" }
        hi { "Hindi" }
        hr { "Kroatisch" }
        hu { "Ungarisch" }
        hy { "Armenisch" }
        ia { "Interlingua" }
        id { "Indonesisch" }
        ie { "Interlingue" }
        ik { "Inupiak" }
        //in { "Indonesisch" }  // Use "id" instead
        is { "Isl\u00e4ndisch" }
        it { "Italienisch" }
        iu { "Inukitut" }
        // iw { "Hebr\u00e4isch" }// Use he instead
        ja { "Japanisch" }
        // ji { "Jiddisch" }  // Use "yi" instead
        //jw { "Javanisch" } // Use jv instead
        jv { "Javanisch" } // more google.de hits than Javanesisch
        ka { "Georgisch" }
        kk { "Kasachisch" }
        kl { "Gr\u00f6nl\u00e4ndisch" }
        km { "Kambodschanisch" }
        kn { "Kannada" }
        ko { "Koreanisch" }
        ks { "Kaschmirisch" }
        ku { "Kurdisch" }
        ky { "Kirgisisch" }
        la { "Latein" } // Lateinisch doesn't seem correct
        ln { "Lingala" }
        lo { "Laotisch" }
        lt { "Litauisch" }
        lv { "Lettisch" }
        mg { "Madagassisch" }
        mi { "Maori" }
        mk { "Mazedonisch" }
        ml { "Malayalam" } // do not confuse with ms Malaiisch
        mn { "Mongolisch" }
        mo { "Moldauisch" }
        mr { "Marathi" }
        ms { "Malaiisch" } // less often: Malaysisch, Malayisch
        mt { "Maltesisch" }
        my { "Burmesisch" }
        na { "Nauruisch" }
        nb { "Norwegisch Bokm\u00e5l" }
        ne { "Nepalesisch" }
        nl { "Niederl\u00e4ndisch" } // "Holl\u00e4ndisch" is not correct
        nn { "Norwegisch Nynorsk" }
        no { "Norwegisch" }
        oc { "Okzitanisch" }
        or { "Orija" }
        om { "Oromo" } // also mentioned: Afan, Oromiffa
        pa { "Pandschabisch" }
        pl { "Polnisch" }
        ps { "Afghanisch (Paschtu)" }
        pt { "Portugiesisch" }
        qu { "Quechua" }
        rm { "R\u00e4toromanisch" }
        rn { "Kirundi" }
        ro { "Rum\u00e4nisch" }
        ru { "Russisch" }
        rw { "Ruandisch" } // Kinyarwanda?
        sa { "Sanskrit" }
        sd { "Sindhi" } // less often Zinti
        sg { "Sango" }
        sh { "Serbo-Kroatisch" }
        si { "Singhalesisch" }
        sk { "Slowakisch" }
        sl { "Slowenisch" }
        sm { "Samoanisch" }
        sn { "Shona" } // looks like Shona is a language in Zimbabwe while Schonisch is a Danish dialect
        so { "Somali" } // "Somalisch" is the adjectiv in the country list but less frequent on google.de
        sq { "Albanisch" }
        sr { "Serbisch" }
        ss { "Swazi" }
        st { "Sotho" }
        su { "Sudanesisch" }
        sw { "Suaheli" }
        sv { "Schwedisch" }
        ta { "Tamilisch" }
        te { "Telugu" }
        tg { "Tadschikisch" }
        th { "Thai" }
        ti { "Tigrinja" }
        tk { "Turkmenisch" } // "T\u00fcrkmenisch" is a typo
        tl { "Tagalog" }
        tn { "Setswana" } // language of Botswana, also Tswana, very rarely Tsuana; Sezuan is in China
        to { "Tongaisch" }
        tr { "T\u00fcrkisch" }
        ts { "Tsonga" }
        tt { "Tatarisch" }
        tw { "Twi" } // spoken in Ghana
        ug { "Uigur" }
        uk { "Ukrainisch" }
        ur { "Urdu" }
        uz { "Usbekisch" }
        vi { "Vietnamesisch" }
        vo { "Volap\u00fck" }
        wo { "Wolof" } // in Senegal
        xh { "Xhosa" } // in South Africa
        yi { "Jiddisch" }
        yo { "Joruba" }
        za { "Zhuang" } // in China
        zap { "Zapotekisch" } // in Mexico
        zh { "Chinesisch" }
        zu { "Zulu" }
    }

    MonthAbbreviations { 
        "Jan",
        "Feb",
        "Mrz",
        "Apr",
        "Mai",
        "Jun",
        "Jul",
        "Aug",
        "Sep",
        "Okt",
        "Nov",
        "Dez",
    }
    MonthNames { 
        "Januar",
        "Februar",
        "M\u00E4rz",
        "April",
        "Mai",
        "Juni",
        "Juli",
        "August",
        "September",
        "Oktober",
        "November",
        "Dezember",
    }
    NumberElements {
        ",",
        ".",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
        ",",
        "+",
    }
    localPatternChars { "GjMtkHmsSEDFwWahKzJe" }
    LocaleScript{ 
        "Latn",  // ISO 15924 Name 
    }
    ExemplarCharacters { "[a-z \u00e4 \u00f6 \u00fc \u00df]" }
    // I "verified" each of these by searching www.google.de for
    // "Bopomofo Schrift", "Koptische Schrift", etc.
    // Ones that are commented out and have no further comment I don't know
    // and could not find.
    // Note: The script names in German that are used directly as English or
    // native transliterated names are often used with a dash between them and
    // "Schrift", e.g., "Kannada-Schrift".
    // Other script names are used as in "Arabische Schrift".
    // Sometimes I included "Schrift" in the display name here because it
    // would not make any sense without it, even with "Schrift" in a higher-level
    // menu or similar.
    // markus 2003-nov-20
    Scripts {
        Arab { "Arabisch" }
        Armn { "Armenisch" }
        Beng { "Bengalisch" }
        Bopo { "Bopomofo" }
        Brai { "Blindenschrift" }
        //Buhd { "Buhid" }
        //Cans { "Unified Canadian Aboriginal Symbols" }
        Cher { "Cherokee" }
        Cprt { "Zypriotisch" }
        Cyrl { "Kyrillisch" }
        Deva { "Devanagari" }
        //Dsrt { "Deseret" }
        Ethi { "\u00C4thiopisch" }
        Geor { "Georgisch" }
        Goth { "Gotisch" }
        Grek { "Griechisch" }
        Gujr { "Gujarati" }
        Guru { "Gurmukhi" }
        Hang { "Hangul" }
        //Hano { "Hanunoo" }
        Hani { "Chinesisch" }
        Hans { "Vereinfachte Chinesische Schrift" }
        Hant { "Traditionelle Chinesische Schrift" }
        Hebr { "Hebr\u00e4isch" }
        Hira { "Hiragana" }
        Ital { "Altitalisch" }
        Kana { "Katakana" }
        Khmr { "Khmer" }
        Knda { "Kannada" }
        Laoo { "Laotisch" }
        Latn { "Lateinisch" }
        Limb { "Limbu" }
        Linb { "Linear B" }
        Mlym { "Malaysisch" }
        Mong { "Mongolisch" }
        Mymr { "Burmesisch" }
        Ogam { "Ogham" }
        Orya { "Oriya" }
        Osma { "Osmanisch" }
        Qaac { "Koptisch" }
        Qaai { "Geerbter Schriftwert" }
        Runr { "Runenschrift" }
        //Shaw { "Shavian" }
        Sinh { "Singhalesisch" }
        Syrc { "Syrisch" }
        //Tagb { "Tagbanwa" }
        //Tale { "Tai Le" }
        Taml { "Tamilisch" }
        Telu { "Telugu" }
        Tglg { "Tagalog" }
        //Thaa { "Thaana" }
        //Thai { "Thai" } // Just happens to be a duplicate - in German, too
        Tibt { "Tibetisch" }
        Ugar { "Ugaritisch" }
        Yiii { "Yi" }
        Zyyy { "Unbestimmt" }
    }
    //------------------------------------------------------------
    // Rule Based Number Format Support
    //------------------------------------------------------------

    // * RuleBasedNumberFormat data for German

    // again, I'm not 100% sure of these rules.  I think both "hundert" and
    // "einhundert" are correct or 100, but I'm not sure which is preferable
    // in situations where this framework is likely to be used.  Also, is it
    // really true that numbers are run together into compound words all the
    // time?

    SpelloutRules {
        // 1 is "eins" when by itself, but turns into "ein" in most
        // combinations
        "%alt-ones:\n"
            "-x: minus >>;\n"
            "x.x: << komma >>;\n"
            "null; eins; =%%main=;\n"
        "%%main:\n"
               // words for numbers from 0 to 12.  Notice that the values
               // from 13 to 19 can derived algorithmically, unlike in most
               // other languages
            "null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n"
            "zehn; elf; zw\u00f6lf; >>zehn;\n"
               // rules for the multiples of 10.  Notice that the ones digit
               // goes on the front
            "20: [>>und]zwanzig;\n"
            "30: [>>und]drei\u00dfig;\n"
            "40: [>>und]vierzig;\n"
            "50: [>>und]f\u00fcnfzig;\n"
            "60: [>>und]sechzig;\n"
            "70: [>>und]siebzig;\n"
            "80: [>>und]achtzig;\n"
            "90: [>>und]neunzig;\n"
            "100: hundert[>%alt-ones>];\n"
            "200: <<hundert[>%alt-ones>];\n"
            "1000: tausend[>%alt-ones>];\n"
            "2000: <<tausend[>%alt-ones>];\n"
            "1,000,000: eine Million[ >%alt-ones>];\n"
            "2,000,000: << Millionen[ >%alt-ones>];\n"
            "1,000,000,000: eine Milliarde[ >%alt-ones>];\n"
            "2,000,000,000: << Milliarden[ >%alt-ones>];\n"
            "1,000,000,000,000: eine Billion[ >%alt-ones>];\n"
            "2,000,000,000,000: << Billionen[ >%alt-ones>];\n"
            "1,000,000,000,000,000: =#,##0=;"
        "%%lenient-parse:\n"
            "&\u0000 << ' ' << '-'\n"
            "& ae , \u00e4 & ae , \u00c4\n"
            "& oe , \u00f6 & oe , \u00d6\n"
            "& ue , \u00fc & ue , \u00dc\n"
    }
    Keys{
        collation{ "Sortierung"}
        calendar { "Kalender" }
        currency { "W\u00e4hrung" }
    }
    Types{
        collation{
            phonebook  { "Telefonbuch-Sortierregeln" }
            traditional{ "Traditionelle Sortierregeln" }
            direct     { "Direkte Sortierregeln" }
        }
        calendar{
            japanese  { "Japanischer Kalender" }
            buddhist  { "Buddhistischer Kalender"  }
            islamic   { "Islamischer Kalender" }
            hebrew    { "Hebr\u00e4ischer Kalender" }
            chinese   { "Chinesischer Kalender" }
            gregorian { "Gregorianischer Kalender" }
        }
    }
    Variants{
        Fallback{"en"}
        REVISED { "Revidiert" }
    }
    zoneStrings { 
        {
            "Europe/Berlin", 
            "Mitteleurop\u00E4ische Zeit", 
            "MEZ", 
            "Mitteleurop\u00E4ische Sommerzeit", 
            "MESZ",
            "Berlin",
        }
    }
}