﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/bas.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/bas.xml
 */
bas{
    AuxExemplarCharacters{"[q x]"}
    ExemplarCharacters{
        "[a á à â ǎ ā {a\u1DC6}{a\u1DC7} b ɓ c d e é è ê ě ē {e\u1DC6}{e\u1DC7} ɛ {ɛ"
        "\u0301} {ɛ\u0300} {ɛ\u0302} {ɛ\u030C} {ɛ\u0304} {ɛ\u1DC6}{ɛ\u1DC7} f g h i í"
        " ì î ǐ ī {i\u1DC6}{i\u1DC7} j k l m n ń ǹ ŋ o ó ò ô ǒ ō {o\u1DC6}{o\u1DC7} ɔ"
        " {ɔ\u0301} {ɔ\u0300} {ɔ\u0302} {ɔ\u030C} {ɔ\u0304} {ɔ\u1DC6}{ɔ\u1DC7} p r s "
        "t u ú ù û ǔ ū {u\u1DC6}{u\u1DC7} v w y z]"
    }
    ExemplarCharactersIndex{"[A B Ɓ C D E Ɛ F G H I J K L M N Ŋ O Ɔ P R S T U V W Y Z]"}
    LocaleScript{
        "Latn",
    }
    NumberElements{
        latn{
            patterns{
                currencyFormat{"#,##0.00 ¤"}
                decimalFormat{"#,##0.###"}
                percentFormat{"#,##0 %"}
            }
            symbols{
                decimal{","}
                group{" "}
            }
        }
    }
    Version{"2.1.6.69"}
    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{
                "I bikɛ̂glà",
                "I ɓugajɔp",
            }
            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{
                        "nɔy",
                        "nja",
                        "uum",
                        "ŋge",
                        "mbɔ",
                        "kɔɔ",
                        "jon",
                    }
                    wide{
                        "ŋgwà nɔ̂y",
                        "ŋgwà njaŋgumba",
                        "ŋgwà ûm",
                        "ŋgwà ŋgê",
                        "ŋgwà mbɔk",
                        "ŋgwà kɔɔ",
                        "ŋgwà jôn",
                    }
                }
                stand-alone{
                    narrow{
                        "n",
                        "n",
                        "u",
                        "ŋ",
                        "m",
                        "k",
                        "j",
                    }
                }
            }
            eras{
                abbreviated{
                    "b.Y.K",
                    "m.Y.K",
                }
                wide{
                    "bisū bi Yesù Krǐstò",
                    "i mbūs Yesù Krǐstò",
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "kɔn",
                        "mac",
                        "mat",
                        "mto",
                        "mpu",
                        "hil",
                        "nje",
                        "hik",
                        "dip",
                        "bio",
                        "may",
                        "liɓ",
                    }
                    wide{
                        "Kɔndɔŋ",
                        "Màcɛ̂l",
                        "Màtùmb",
                        "Màtop",
                        "M̀puyɛ",
                        "Hìlòndɛ̀",
                        "Njèbà",
                        "Hìkaŋ",
                        "Dìpɔ̀s",
                        "Bìòôm",
                        "Màyɛsèp",
                        "Lìbuy li ńyèe",
                    }
                }
                stand-alone{
                    narrow{
                        "k",
                        "m",
                        "m",
                        "m",
                        "m",
                        "h",
                        "n",
                        "h",
                        "d",
                        "b",
                        "m",
                        "l",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "K1s3",
                        "K2s3",
                        "K3s3",
                        "K4s3",
                    }
                    wide{
                        "Kèk bisu i soŋ iaâ",
                        "Kèk i ńyonos biɓaà i soŋ iaâ",
                        "Kèk i ńyonos biaâ i soŋ iaâ",
                        "Kèk i ńyonos binâ i soŋ iaâ",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"“"}
        alternateQuotationStart{"„"}
        quotationEnd{"»"}
        quotationStart{"«"}
    }
    fields{
        day{
            dn{"kɛl"}
            relative{
                "-1"{"yààni"}
                "0"{"lɛ̀n"}
                "1"{"yàni"}
            }
        }
        dayperiod{
            dn{"njǎmùha"}
        }
        era{
            dn{"kèk"}
        }
        hour{
            dn{"ŋgɛŋ"}
        }
        minute{
            dn{"ŋget"}
        }
        month{
            dn{"soŋ"}
        }
        second{
            dn{"hìŋgeŋget"}
        }
        week{
            dn{"sɔndɛ̂"}
        }
        weekday{
            dn{"hìlɔ hi sɔndɛ̂"}
        }
        year{
            dn{"ŋwìi"}
        }
        zone{
            dn{"komboo i ŋgɛŋ"}
        }
    }
}
