﻿// ***************************************************************************
// *
// * Copyright (C) 2006 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ë"}
        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{
        ZAR{
            "R",
            "Rand",
        }
    }
    ExemplarCharacters{"[a á â b-e é è ê ë f-i î ï j-o ô ö p-u û v-z ŉ]"}
    Languages{
        af{"Afrikaans"}
        de{"Duits"}
        en{"Engels"}
        es{"Spaans"}
        fr{"Frans"}
        he{"Hebreeus"}
        it{"Italiaans"}
        ja{"Japannees"}
        pt{"Portugees"}
        ru{"Russies"}
        zh{"Sjinees"}
    }
    LocaleScript{
        "Latn",
    }
    NumberElements{
        ",",
        " ",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "‰",
        "∞",
        "NaN",
        "+",
    }
    Version{"1.48"}
    calendar{
        gregorian{
            AmPmMarkers{
                "vm.",
                "nm.",
            }
            DateTimePatterns{
                "HH:mm:ss z",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE, yyyy MMMM dd",
                "yyyy MMMM d",
                "yyyy MMM d",
                "yy/MM/dd",
                "{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.",
                }
            }
            fields{
                day{
                    dn{"Dag"}
                }
                era{
                    dn{"Tydperk"}
                }
                hour{
                    dn{"Uur"}
                }
                minute{
                    dn{"Minuut"}
                }
                month{
                    dn{"Maand"}
                }
                second{
                    dn{"Sekonde"}
                }
                week{
                    dn{"Week"}
                }
                weekday{
                    dn{"Dag van die week"}
                }
                year{
                    dn{"Jaar"}
                }
                zone{
                    dn{"Tydsone"}
                }
            }
            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",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "K1",
                        "K2",
                        "K3",
                        "K4",
                    }
                    wide{
                        "1ste kwartaal",
                        "2de kwartaal",
                        "3de kwartaal",
                        "4de kwartaal",
                    }
                }
            }
        }
    }
}
