﻿// ***************************************************************************
// *
// * Copyright (C) 2009 International Business Machines
// * Corporation and others.  All Rights Reserved.
// * Tool: com.ibm.icu.dev.tool.cldr.LDML2ICUConverter.java
// * Source File:<path>/common/main/af.xml
// *
// ***************************************************************************
/**
 *  ICU <specials > source: <path>/xml/main/af.xml
 */
af{
    Countries{
        AE{"Verenigde Arabiese Emirate"}
        AF{"Afganistan"}
        AG{"Antigua en Barbuda"}
        AL{"Albanië"}
        AM{"Armenië"}
        AR{"Argentinië"}
        AT{"Oostenryk"}
        AU{"Australië"}
        AZ{"Aserbeidjan"}
        BA{"Bosnië en Herzegowina"}
        BD{"Bangladesj"}
        BE{"België"}
        BF{"Boerkina Fasso"}
        BG{"Bulgarye"}
        BH{"Bahrein"}
        BN{"Broenei"}
        BO{"Bolivië"}
        BR{"Brasilië"}
        BT{"Bhoetan"}
        BY{"Wit-Rusland"}
        CA{"Kanada"}
        CF{"Sentraal-Afrikaanse Republiek"}
        CG{"Kongo"}
        CH{"Switserland"}
        CI{"Ivoorkus"}
        CL{"Chili"}
        CM{"Kameroen"}
        CN{"Sjina"}
        CU{"Kuba"}
        CV{"Kaap Verde"}
        CY{"Ciprus"}
        CZ{"Tjeggiese Republiek"}
        DE{"Duitsland"}
        DJ{"Djiboeti"}
        DK{"Denemarke"}
        DO{"Dominikaanse Republiek"}
        DZ{"Algerië"}
        EE{"Estland"}
        EG{"Egipte"}
        EH{"Wes-Sahara"}
        ES{"Spanje"}
        ET{"Ethiopië"}
        FJ{"Fidji"}
        FM{"Mikronesië"}
        FR{"Frankryk"}
        GA{"Gaboen"}
        GB{"Groot-Brittanje"}
        GE{"Georgië"}
        GM{"Gambië"}
        GN{"Guinee"}
        GQ{"Ekwatoriaal-Guinee"}
        GR{"Griekeland"}
        GW{"Guinee-Bissau"}
        HR{"Kroasië"}
        HT{"Haïti"}
        HU{"Hongarye"}
        ID{"Indonesië"}
        IE{"Ierland"}
        IN{"Indië"}
        IQ{"Irak"}
        IS{"Ysland"}
        IT{"Italië"}
        JM{"Jamaika"}
        JO{"Jordanië"}
        JP{"Japan"}
        KE{"Kenia"}
        KG{"Kirgisië"}
        KH{"Kambodja"}
        KM{"Comore"}
        KN{"Saint Kitts en Nevis"}
        KP{"Noord-Korea"}
        KR{"Suid-Korea"}
        KW{"Koeweit"}
        KZ{"Kasakstan"}
        LB{"Libanon"}
        LR{"Liberië"}
        LT{"Litaue"}
        LU{"Luxemburg"}
        LV{"Letland"}
        LY{"Libië"}
        MA{"Marokko"}
        MG{"Madagaskar"}
        MH{"Marshall-eilande"}
        MK{"Macedonië"}
        MN{"Mongolië"}
        MR{"Mouritanië"}
        MV{"Maldive"}
        MX{"Meksiko"}
        MY{"Maleisië"}
        MZ{"Mosambiek"}
        NA{"Namibië"}
        NL{"Nederland"}
        NO{"Noorweë"}
        NR{"Naoeroe"}
        NZ{"Nieu-Seeland"}
        PG{"Papoea Nieu-Guinee"}
        PH{"Filippyne"}
        PL{"Pole"}
        QA{"Katar"}
        RO{"Roemenië"}
        RU{"Rusland"}
        SA{"Saoedi-Arabië"}
        SB{"Solomon Eilande"}
        SC{"Seychelle"}
        SD{"Soedan"}
        SE{"Swede"}
        SG{"Singapoer"}
        SI{"Slowenië"}
        SK{"Slowakye"}
        SO{"Somalië"}
        ST{"Sao Tome en Principe"}
        SV{"Salvador"}
        SY{"Sirië"}
        TD{"Tsjaad"}
        TJ{"Tadjikistan"}
        TM{"Turkmenië"}
        TN{"Tunisië"}
        TO{"Tonga"}
        TR{"Turkye"}
        TT{"Trinidad en Tobago"}
        TZ{"Tanzanië"}
        UA{"Oekraine"}
        US{"Verenigde State van Amerika"}
        UZ{"Oesbekistan"}
        VA{"Vatikaan"}
        VC{"Saint Vincent en die Grenadine"}
        VN{"Viëtnam"}
        YE{"Jemen"}
        ZA{"Suid-Afrika"}
        ZM{"Zambië"}
    }
    Currencies{
        CHF{
            "Fr.",
            "Switserse frank",
        }
        EUR{
            "€",
            "Euro",
        }
        GBP{
            "£",
            "Britse pond",
        }
        ITL{
            "IT₤",
            "Italiaanse lier",
        }
        JPY{
            "JP¥",
            "Japannese jen",
        }
        NAD{
            "N$",
            "Namibiese dollar",
        }
        RUB{
            "RUB",
            "Roebel",
        }
        TRL{
            "TRL",
            "Ou Turkse lier",
        }
        TRY{
            "TL",
            "Turkse lier",
        }
        USD{
            "US$",
            "Amerikaanse dollar",
        }
        XXX{
            "XXX",
            "Onbekende of ongeldige geldeenheid",
        }
        ZAR{
            "R",
            "Rand",
        }
    }
    ExemplarCharacters{"[a á â b-e é è ê ë f-i î ï j-o ô ö p-u û v-z]"}
    Languages{
        af{"Afrikaans"}
        afa{"Ander Afro-Asiaties"}
        am{"Amharies"}
        ar{"Arabies"}
        arc{"Aramees"}
        bg{"Bulgaars"}
        cs{"Tsjeggies"}
        da{"Deens"}
        de{"Duits"}
        egy{"Antieke Egipties"}
        el{"Grieks"}
        en{"Engels"}
        es{"Spaans"}
        es_419{"Latyns-Amerikaanse Spaans"}
        et{"Estnies"}
        fi{"Fins"}
        fr{"Frans"}
        got{"Goties"}
        grc{"Antieke Grieks"}
        he{"Hebreeus"}
        it{"Italiaans"}
        ja{"Japannees"}
        ko{"Koreaans"}
        ku{"Koerdies"}
        nl{"Nederlands"}
        nl_BE{"Vlaams"}
        nn{"Noorweegse Nynorsk"}
        nr{"Suid-Ndebele"}
        pt{"Portugees"}
        pt_BR{"Brasiliaanse Portugees"}
        ro{"Roemeens"}
        ru{"Russies"}
        ss{"Swazi"}
        st{"Suid-Sotho"}
        tk{"Turkmeens"}
        ve{"Venda"}
        xh{"Xhosa"}
        zh{"Sjinees"}
        zu{"Zoeloe"}
    }
    LocaleScript{
        "Latn",
    }
    NumberElements{
        ",",
        " ",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "‰",
        "∞",
        "NaN",
        "+",
    }
    NumberPatterns{
        "#,##0.###",
        "¤#,##0.00",
        "#,##0%",
        "#E0",
    }
    Version{"2.0.42.82"}
    calendar{
        gregorian{
            AmPmMarkers{
                "vm.",
                "nm.",
            }
            DateTimePatterns{
                "h:mm:ss a zzzz",
                "h:mm:ss a z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE dd MMMM y",
                "y MMMM d",
                "y MMM d",
                "yyyy-MM-dd",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            dayNames{
                format{
                    abbreviated{
                        "So",
                        "Ma",
                        "Di",
                        "Wo",
                        "Do",
                        "Vr",
                        "Sa",
                    }
                    wide{
                        "Sondag",
                        "Maandag",
                        "Dinsdag",
                        "Woensdag",
                        "Donderdag",
                        "Vrydag",
                        "Saterdag",
                    }
                }
            }
            eras{
                abbreviated{
                    "v.C.",
                    "n.C.",
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "Jan",
                        "Feb",
                        "Mar",
                        "Apr",
                        "Mei",
                        "Jun",
                        "Jul",
                        "Aug",
                        "Sep",
                        "Okt",
                        "Nov",
                        "Des",
                    }
                    wide{
                        "Januarie",
                        "Februarie",
                        "Maart",
                        "April",
                        "Mei",
                        "Junie",
                        "Julie",
                        "Augustus",
                        "September",
                        "Oktober",
                        "November",
                        "Desember",
                    }
                }
            }
        }
    }
    codePatterns{
        language{"Taal: {0}"}
        script{"Skrif: {0}"}
        territory{"Omgewing: {0}"}
    }
    measurementSystemNames{
        US{"VSA"}
        metric{"Metriek"}
    }
}
