// *******************************************************************************
// *
// *   Copyright (C) 1997-2000, 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

de {
    Countries {
        AF { "Afghanistan" }
        EG { "\u00c4gypten" }
        AL { "Albanien" }
        DZ { "Algerien" }
        AD { "Andorra" }
        AO { "Angola" }
        AG { "Antigua und Barbuda" }
        GQ { "\u00c4quatorialguinea" }
        AR { "Argentinien" }
        AM { "Armenien" }
        AZ { "Aserbaidschan" }
        ET { "\u00c4thiopien" }
        AU { "Australien" }
        BS { "Bahamas" }
        BH { "Bahrain" }
        BD { "Bangladesch" }
        BB { "Barbados" }
        BE { "Belgien" }
        BZ { "Belize" }
        BJ { "Benin" }
        BT { "Bhutan" }
        BO { "Bolivien" }
        BA { "Bosnien und Herzegowina" }
        BW { "Botsuana" }
        BR { "Brasilien" }
        BN { "Brunei Darussalam" }
        BG { "Bulgarien" }
        BF { "Burkina Faso" }
        BI { "Burundi" }
        CL { "Chile" }
        CN { "China" }
        CR { "Costa Rica" }
        CI { "C\u00f4te d\u0092Ivoire" }
        DK { "D\u00e4nemark" }
        DE { "Deutschland" }
        DM { "Dominica" }
        DO { "Dominikanische Republik" }
        DJ { "Dschibuti" }
        EC { "Ecuador" }
        SV { "El Salvador" }
        ER { "Eritrea" }
        EE { "Estland" }
        FJ { "Fidschi" }
        FI { "Finnland" }
        FR { "Frankreich" }
        GA { "Gabun" }
        GM { "Gambia" }
        GE { "Georgien" }
        GH { "Ghana" }
        GD { "Grenada" }
        GR { "Griechenland" }
        GT { "Guatemala" }
        GN { "Guinea" }
        GW { "Guinea-Bissau" }
        GY { "Guyana" }
        HT { "Haiti" }
        HN { "Honduras" }
        IN { "Indien" }
        ID { "Indonesien" }
        IQ { "Irak" }
        IR { "Iran" }
        IE { "Irland" }
        IS { "Island" }
        IL { "Israel" }
        IT { "Italien" }
        JM { "Jamaika" }
        JP { "Japan" }
        YE { "Jemen" }
        JO { "Jordanien" }
        YU { "Jugoslawien" }
        KH { "Kambodscha" }
        CM { "Kamerun" }
        CA { "Kanada" }
        CV { "Kap Verde" }
        KZ { "Kasachstan" }
        QA { "Katar" }
        KE { "Kenia" }
        KG { "Kirgisistan" }
        KI { "Kiribati" }
        CO { "Kolumbien" }
        KM { "Komoren" }
        CG { "Kongo" }
        CD { "Demokratische Republik Kongo" }
        KP { "Demokratische Volksrepublik Korea" }
        KR { "Republik Korea" }
        HR { "Kroatien" }
        CU { "Kuba" }
        KW { "Kuwait" }
        LA { "Laos" }
        LS { "Lesotho" }
        LV { "Lettland" }
        LB { "Libanon" }
        LR { "Liberia" }
        LY { "Libyen" }
        LI { "Liechtenstein" }
        LT { "Litauen" }
        LU { "Luxemburg" }
        MG { "Madagaskar" }
        MW { "Malawi" }
        MY { "Malaysia" }
        MV { "Malediven" }
        ML { "Mali" }
        MT { "Malta" }
        MA { "Marokko" }
        MH { "Marshallinseln" }
        MR { "Mauretanien" }
        MU { "Mauritius" }
        MK { "Mazedonien" }
        MX { "Mexiko" }
        FM { "Mikronesien" }
        MD { "Moldawien" }
        MC { "Monaco" }
        MN { "Mongolei" }
        MZ { "Mosambik" }
        MM { "Myanmar" }
        NA { "Namibia" }
        NR { "Nauru" }
        NP { "Nepal" }
        NZ { "Neuseeland" }
        NI { "Nicaragua" }
        NL { "Niederlande" }
        NE { "Niger" }
        NG { "Nigeria" }
        NO { "Norwegen" }
        OM { "Oman" }
        AT { "\u00d6sterreich" }
        PK { "Pakistan" }
        PW { "Palau" }
        PA { "Panama" }
        PG { "Papua-Neuguinea" }
        PY { "Paraguay" }
        PE { "Peru" }
        PH { "Philippinen" }
        PL { "Polen" }
        PT { "Portugal" }
        RW { "Ruanda" }
        RO { "Rum\u00e4nien" }
        RU { "Russland" }
        KN { "St. Kitts und Nevis" }
        LC { "St. Lucia" }
        VC { "St. Vincent und die Grenadinen" }
        SB { "Salomonen" }
        ZM { "Sambia" }
        WS { "Samoa" }
        SM { "San Marino" }
        ST { "S\u00e3o Tom\u00e9 und Pr\u00edncipe" }
        SA { "Saudi-Arabien" }
        SE { "Schweden" }
        CH { "Schweiz" }
        SN { "Senegal" }
        SC { "Seychellen" }
        SL { "Sierra Leone" }
        ZW { "Simbabwe" }
        SG { "Singapur" }
        SK { "Slowakei" }
        SI { "Slowenien" }
        SO { "Somalia" }
        ES { "Spanien" }
        LK { "Sri Lanka" }
        ZA { "S\u00fcdafrika" }
        SD { "Sudan" }
        SR { "Suriname" }
        SZ { "Swasiland" }
        SY { "Syrien" }
        TJ { "Tadschikistan" }
        TW { "Taiwan" }
        TZ { "Tansania" }
        TH { "Thailand" }
        TG { "Togo" }
        TO { "Tonga" }
        TT { "Trinidad und Tobago" }
        TD { "Tschad" }
        CZ { "Tschechien" }
        TN { "Tunesien" }
        TR { "T\u00fcrkei" }
        TM { "Turkmenistan" }
        TV { "Tuvalu" }
        UG { "Uganda" }
        UA { "Ukraine" }
        HU { "Ungarn" }
        UY { "Uruguay" }
        UZ { "Usbekistan" }
        VU { "Vanuatu" }
        VA { "Vatikanstadt" }
        VE { "Venezuela" }
        AE { "Vereinigte Arabische Emirate" }
        GB { "Vereinigtes K\u00f6nigreich" }
        US { "Vereinigte Staaten" }
        VN { "Vietnam" }
        BY { "Belarus" }
        CF { "Zentralafrikanische Republik" }
        CY { "Zypern" }

        UM { "Amerikanisch-Ozeanien" }
        AS { "Amerikanisch-Samoa" }
        VI { "Amerikanische Jungferninseln" }
        AI { "Anguilla" }
        AQ { "Antarktis" }
        AW { "Aruba" }
        SJ { "Svalbard und Jan Mayen" }
        BM { "Bermuda" }
        BV { "Bouvetinsel" }
        VG { "Britische Jungferninseln" }
        IO { "Britisches Territorium im Indischen Ozean" }
        CK { "Cookinseln" }
        FK { "Falklandinseln" }
        FO { "F\u00e4r\u00f6er" }
        GF { "Franz\u00f6sisch-Guayana" }
        PF { "Franz\u00f6sisch-Polynesien" }
        TF { "Franz\u00f6sische S\u00fcd- und Antarktisgebiete" }
        GI { "Gibraltar" }
        GL { "Gr\u00f6nland" }
        GP { "Guadeloupe" }
        GU { "Guam" }
        HM { "Heard und McDonaldinseln" }
        KY { "Kaimaninseln" }
        CC { "Kokosinseln" }
        MO { "Macau" }
        MQ { "Martinique" }
        YT { "Mayotte" }
        MS { "Montserrat" }
        NC { "Neukaledonien" }
        AN { "Niederl\u00e4ndische Antillen" }
        NU { "Niue" }
        MP { "N\u00f6rdliche Marianen" }
        NF { "Norfolkinsel" }
        PN { "Pitcairn" }
        PR { "Puerto Rico" }
        RE { "R\u00e9union" }
        SH { "St. Helena" }
        PM { "St. Pierre und Miquelon" }
        GS { "S\u00fcdgeorgien und die S\u00fcdlichen Sandwichinseln" }
        TK { "Tokelau" }
        TC { "Turks- und Caicosinseln" }
        WF { "Wallis und Futuna" }
        CX { "Weihnachtsinsel" }

        // some entries that are not in the official list:
        EH { "West Sahara" }
        // same as in root: HK { "Hong Kong" }
        SP { "Serbien" }
        // Zaire is now the Democratic Republic of Congo (CD)
        // same as in root: ZR { "Zaire" }
    }
    DateTimeElements { 
            "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, many entries have a question mark for
    // further checking.
    //   Markus Scherer, 2000jun01
    Languages {
        ab { "Abchasisch" }
        // ? aa { "Afar" }
        // same as in root? af { "Afrikaans" }
        sq { "Albanisch" }
        am { "Amharisch" } // ?
        ar { "Arabisch" }
        hy { "Armenisch" }
        // ? as { "Assamese" }
        // ? ay { "Aymara" }
        az { "Aserbaidschanisch" }
        // ? ba { "Bashkir" }
        eu { "Baskisch" }
        bn { "Bengalisch" } // ?
        dz { "Bhutanisch" }
        // ? bh { "Bihari" }
        // ? bi { "Bislama" }
        br { "Bretonisch" }
        bg { "Bulgarisch" }
        my { "Burmesisch" }
        be { "Wei\u00dfrussisch" }
        km { "Kkambodschanisch" }
        ca { "Katalanisch" } // Katalonisch?
        zh { "Chinesisch" }
        co { "Korsisch" }
        hr { "Kroatisch" }
        cs { "Tschechisch" }
        da { "D\u00e4nisch" }
        nl { "Holl\u00e4ndisch" }
        en { "Englisch" }
        // same as in root: eo { "Esperanto" }
        et { "Estnisch" }
        fo { "F\u00e4r\u00f6isch" }
        fj { "Fidschianisch" }
        fi { "Finnisch" }
        fr { "Franz\u00f6sisch" }
        fy { "Frisisch" }
        gl { "Galizisch" } // Galizianisch??
        ka { "Georgisch" }
        de { "Deutsch" }
        el { "Griechisch" }
        kl { "Gr\u00f6nl\u00e4ndisch" }
        // ? gn { "Guarani" }
        // ? gu { "Gujarati" }
        // ? ha { "Hausa" }
        he { "Hebr\u00e4isch" }
        iw { "Hebr\u00e4isch" }
        // same as in root? hi { "Hindi" }
        hu { "Ungarisch" }
        is { "Isl\u00e4ndisch" }
        id { "Indonesisch" }
        in { "Indonesisch" }
        // same as in root: ia { "Interlingua" }
        // same as in root: ie { "Interlingue" }
        // ? iu { "Inukitut" }
        // ? ik { "Inupiak" }
        ga { "Irisch" }
        it { "Italienisch" }
        ja { "Japanisch" }
        jw { "Javanesisch" } // ?
        // ? kn { "Kannada" }
        ks { "Kaschmirisch" } // ?
        kk { "Kasachisch" }
        // ? rw { "Kinyarwanda" }
        ky { "Kirgisisch" }
        // ? rn { "Kirundi" }
        ko { "Koreanisch" }
        ku { "Kurdisch" }
        // ? lo { "Laothian" }
        la { "Latein" }
        lv { "Lettisch" }
        // ? ln { "Lingala" }
        lt { "Litauisch" }
        mk { "Mazedonisch" }
        // ? mg { "Malagasy" }
        // ? ms { "Malay" }
        // ? ml { "Malayalam" }
        mt { "Maltesisch" }
        // ? mi { "Maori" }
        // ? mr { "Marathi" }
        mo { "Moldawisch" }
        mn { "Mongolisch" }
        na { "Nauruisch" }
        ne { "Nepalesisch" }
        no { "Norwegisch" }
        // ? oc { "Occitan" }
        // ? or { "Oriya" }
        // ? om { "Oromo (Afan)" }
        // ? ps { "Pashto (Pushto)" }
        fa { "Persisch" }
        pl { "Polnisch" }
        pt { "Portugiesisch" }
        // ? pa { "Punjabi" }
        // ? qu { "Quechua" }
        rm { "R\u00e4toromanisch" }
        ro { "Rum\u00e4nisch" }
        ru { "Russisch" }
        sm { "Samoanisch" }
        // ? sg { "Sangro" }
        // same as in root: sa { "Sanskrit" }
        gd { "Schottisch-G\u00e4lisch" }
        sr { "Serbisch" }
        sh { "Serbo-Kroatisch" }
        // ? st { "Sesotho" }
        // ? tn { "Setswana" }
        // ? sn { "Shona" }
        // ? sd { "Sindhi" }
        // ? si { "Singhalese" }
        // ? ss { "Siswati" }
        sk { "Slowakisch" }
        sl { "Slowenisch" }
        so { "Somalisch" }
        es { "Spanisch" }
        // ? su { "Sundanese" }
        // ? sw { "Swahili" }
        sv { "Schwedisch" }
        // ? tl { "Tagalog" }
        tg { "Tadschikisch" }
        // ? ta { "Tamil" }
        // ? tt { "Tatar" }
        // ? te { "Telugu" }
        // same as in root? th { "Thai" }
        bo { "Tibetisch" }
        // ? ti { "Tigrinya" }
        // ? to { "Tonga" }
        // ? ts { "Tsonga" }
        tr { "T\u00fcrkisch" }
        tk { "T\u00fcrkmenisch" } // Turkmenisch??
        // ? tw { "Twi" }
        // ? ug { "Uighur" }
        uk { "Ukrainisch" }
        // ? ur { "Urdu" }
        uz { "Usbekisch" }
        vi { "Vietnamesisch" }
        vo { "Volap\u00fck" }
        cy { "Walisisch" }
        // ? wo { "Wolof" }
        // ? xh { "Xhosa" }
        ji { "Jiddisch" }
        yi { "Jiddisch" }
        // ? yo { "Yoruba" }
        // ? za { "Zhuang" }
        // same as in root?? zu { "Zulu" }
    }
    LocaleID { "0407" }
    LocaleString { "de" }
    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",
    }
    ShortLanguage { "deu" }
    localPatternChars { "GjMtkHmsSEDFwWahKzJe" }
    zoneStrings { 
        {
        "Europe/Berlin", 
        "Mitteleurop\u00E4ische Zeit", 
        "MEZ", 
        "Mitteleurop\u00E4ische Sommerzeit", 
        "MESZ"
        }
    }
}
