﻿// ***************************************************************************
// *
// * Copyright (C) 2015 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <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]"}
    NumberElements{
        latn{
            patterns{
                currencyFormat{"#,##0.00 ¤"}
                decimalFormat{"#,##0.###"}
                percentFormat{"#,##0 %"}
            }
            symbols{
                decimal{","}
                group{" "}
            }
        }
    }
    Version{"2.1.19.14"}
    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ɛŋ"}
        }
    }
}
