﻿// ***************************************************************************
// *
// * Copyright (C) 2015 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/ewo.xml
// *
// ***************************************************************************
ewo{
    AuxExemplarCharacters{"[c j q x]"}
    ExemplarCharacters{
        "[a á à â ǎ b d {dz} e é è ê ě ə {ə\u0301} {ə\u0300} {ə\u0302} {ə\u030C} ɛ {ɛ"
        "\u0301} {ɛ\u0300} {ɛ\u0302} {ɛ\u030C} f g h i í ì î ǐ k {kp} l m n ń ǹ {ng} "
        "{nk} ŋ o ó ò ô ǒ ɔ {ɔ\u0301} {ɔ\u0300} {ɔ\u0302} {ɔ\u030C} p r s t {ts} u ú "
        "ù û ǔ v w y z]"
    }
    ExemplarCharactersIndex{"[A B D E Ə Ɛ F G H I K L M N Ŋ O Ɔ P R S T U V W Y Z]"}
    NumberElements{
        latn{
            patterns{
                currencyFormat{"#,##0.00 ¤"}
                decimalFormat{"#,##0.###"}
                percentFormat{"#,##0%"}
            }
            symbols{
                decimal{","}
                group{" "}
            }
        }
    }
    Version{"2.1.15.45"}
    calendar{
        generic{
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE d MMMM y G",
                "d MMMM y G",
                "d MMM y G",
                "d/M/y GGGGG",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                Ed{"d E"}
                Hm{"HH:mm"}
                Hms{"HH:mm:ss"}
                M{"L"}
                MEd{"E d/M"}
                MMM{"LLL"}
                MMMEd{"E d MMM"}
                MMMd{"d MMM"}
                Md{"d/M"}
                d{"d"}
                hm{"h:mm a"}
                hms{"h:mm:ss a"}
                ms{"m:ss"}
                y{"y"}
                yM{"M/y"}
                yMEd{"E d/M/y"}
                yMMM{"MMM y"}
                yMMMEd{"E d MMM y"}
                yMMMd{"d MMM y"}
                yMd{"d/M/y"}
                yQQQ{"QQQ y"}
                yQQQQ{"QQQQ y"}
            }
        }
        gregorian{
            AmPmMarkers{
                "kíkíríg",
                "ngəgógəle",
            }
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE d MMMM y",
                "d MMMM y",
                "d MMM y",
                "d/M/y",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                Ed{"d E"}
                Hm{"HH:mm"}
                Hms{"HH:mm:ss"}
                M{"L"}
                MEd{"E d/M"}
                MMM{"LLL"}
                MMMEd{"E d MMM"}
                MMMd{"d MMM"}
                Md{"d/M"}
                d{"d"}
                hm{"h:mm a"}
                hms{"h:mm:ss a"}
                ms{"m:ss"}
                y{"y"}
                yM{"M/y"}
                yMEd{"E d/M/y"}
                yMMM{"MMM y"}
                yMMMEd{"E d MMM y"}
                yMMMd{"d MMM y"}
                yMd{"d/M/y"}
                yQQQ{"QQQ y"}
                yQQQQ{"QQQQ y"}
            }
            dayNames{
                format{
                    abbreviated{
                        "sɔ́n",
                        "mɔ́n",
                        "smb",
                        "sml",
                        "smn",
                        "fúl",
                        "sér",
                    }
                    wide{
                        "sɔ́ndɔ",
                        "mɔ́ndi",
                        "sɔ́ndɔ məlú mə́bɛ̌",
                        "sɔ́ndɔ məlú mə́lɛ́",
                        "sɔ́ndɔ məlú mə́nyi",
                        "fúladé",
                        "séradé",
                    }
                }
                stand-alone{
                    narrow{
                        "s",
                        "m",
                        "s",
                        "s",
                        "s",
                        "f",
                        "s",
                    }
                }
            }
            eras{
                abbreviated{
                    "oyk",
                    "ayk",
                }
                wide{
                    "osúsúa Yésus kiri",
                    "ámvus Yésus Kirís",
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "ngo",
                        "ngb",
                        "ngl",
                        "ngn",
                        "ngt",
                        "ngs",
                        "ngz",
                        "ngm",
                        "nge",
                        "nga",
                        "ngad",
                        "ngab",
                    }
                    wide{
                        "ngɔn osú",
                        "ngɔn bɛ̌",
                        "ngɔn lála",
                        "ngɔn nyina",
                        "ngɔn tána",
                        "ngɔn saməna",
                        "ngɔn zamgbála",
                        "ngɔn mwom",
                        "ngɔn ebulú",
                        "ngɔn awóm",
                        "ngɔn awóm ai dziá",
                        "ngɔn awóm ai bɛ̌",
                    }
                }
                stand-alone{
                    narrow{
                        "o",
                        "b",
                        "l",
                        "n",
                        "t",
                        "s",
                        "z",
                        "m",
                        "e",
                        "a",
                        "d",
                        "b",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "nno",
                        "nnb",
                        "nnl",
                        "nnny",
                    }
                    wide{
                        "nsámbá ngɔn asú",
                        "nsámbá ngɔn bɛ̌",
                        "nsámbá ngɔn lála",
                        "nsámbá ngɔn nyina",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"”"}
        alternateQuotationStart{"“"}
        quotationEnd{"»"}
        quotationStart{"«"}
    }
    fields{
        day{
            dn{"Amǒs"}
            relative{
                "-1"{"Angogé"}
                "0"{"Aná"}
                "1"{"Okírí"}
            }
        }
        dayperiod{
            dn{"Kírí / Ngəgógəle"}
        }
        era{
            dn{"Abǒg"}
        }
        hour{
            dn{"Awola"}
        }
        minute{
            dn{"Enútɛn"}
        }
        month{
            dn{"Ngɔn"}
        }
        second{
            dn{"Akábəga"}
        }
        week{
            dn{"Sɔ́ndɔ"}
        }
        weekday{
            dn{"Amǒs yá sɔ́ndɔ"}
        }
        year{
            dn{"M̀bú"}
        }
        zone{
            dn{"Nkɔŋ Awola"}
        }
    }
}
