﻿// ***************************************************************************
// *
// * Copyright (C) 2013 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/yav.xml
// *
// ***************************************************************************
/**
 *  ICU <specials> source: <path>/xml/main/yav.xml
 */
yav{
    AuxExemplarCharacters{"[g j q r x z]"}
    ExemplarCharacters{
        "[a á à â ǎ ā b c d e é è ɛ {ɛ\u0301} {ɛ\u0300} f h i í ì î ī k l m {mb} n {n"
        "y} ŋ {ŋg} o ó ò ô ǒ ō ɔ {ɔ\u0301} {ɔ\u0300} p s t u ú ù û ǔ ū v w y]"
    }
    ExemplarCharactersIndex{"[A B C D E Ɛ F H I K L M N Ŋ O Ɔ P S T U V W Y]"}
    LocaleScript{
        "Latn",
    }
    NumberElements{
        latn{
            patterns{
                currencyFormat{"#,##0.00 ¤;(#,##0.00 ¤)"}
                decimalFormat{"#,##0.###"}
                percentFormat{"#,##0%"}
            }
            symbols{
                decimal{","}
                group{" "}
            }
        }
    }
    Version{"2.0.82.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{"E d"}
                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{
                "kiɛmɛ́ɛm",
                "kisɛ́ndɛ",
            }
            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{"E d"}
                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{
                        "sd",
                        "md",
                        "mw",
                        "et",
                        "kl",
                        "fl",
                        "ss",
                    }
                    wide{
                        "sɔ́ndiɛ",
                        "móndie",
                        "muányáŋmóndie",
                        "metúkpíápɛ",
                        "kúpélimetúkpiapɛ",
                        "feléte",
                        "séselé",
                    }
                }
                stand-alone{
                    narrow{
                        "s",
                        "m",
                        "m",
                        "e",
                        "k",
                        "f",
                        "s",
                    }
                }
            }
            eras{
                abbreviated{
                    "-J.C.",
                    "+J.C.",
                }
                wide{
                    "katikupíen Yésuse",
                    "ékélémkúnupíén n",
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "o.1",
                        "o.2",
                        "o.3",
                        "o.4",
                        "o.5",
                        "o.6",
                        "o.7",
                        "o.8",
                        "o.9",
                        "o.10",
                        "o.11",
                        "o.12",
                    }
                    wide{
                        "pikítíkítie, oólí ú kutúan",
                        "siɛyɛ́, oóli ú kándíɛ",
                        "ɔnsúmbɔl, oóli ú kátátúɛ",
                        "mesiŋ, oóli ú kénie",
                        "ensil, oóli ú kátánuɛ",
                        "ɔsɔn",
                        "efute",
                        "pisuyú",
                        "imɛŋ i puɔs",
                        "imɛŋ i putúk,oóli ú kátíɛ",
                        "makandikɛ",
                        "pilɔndɔ́",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "Q1",
                        "Q2",
                        "Q3",
                        "Q4",
                    }
                    wide{
                        "ndátúɛ 1",
                        "ndátúɛ 2",
                        "ndátúɛ 3",
                        "ndátúɛ 4",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"»"}
        alternateQuotationStart{"«"}
        quotationEnd{"»"}
        quotationStart{"«"}
    }
    fields{
        day{
            dn{"puɔ́sɛ́"}
            relative{
                "-1"{"púyoó"}
                "0"{"ínaan"}
                "1"{"nakinyám"}
            }
        }
        dayperiod{
            dn{"kiɛmɛ́ɛm,kisɛ́ndɛ"}
        }
        era{
            dn{"kipéŋén"}
        }
        hour{
            dn{"kisikɛl,"}
        }
        minute{
            dn{"minít"}
        }
        month{
            dn{"oóli"}
        }
        second{
            dn{"síkɛn"}
        }
        week{
            dn{"sɔ́ndiɛ"}
        }
        weekday{
            dn{"metúk mɔ́sɔ́ndiɛ"}
        }
        year{
            dn{"yɔɔŋ"}
        }
        zone{
            dn{"kinúki kisikɛl ɔ́ pitɔŋ"}
        }
    }
}
