﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/mua.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/mua.xml
 */
mua{
    AuxExemplarCharacters{"[q x]"}
    ExemplarCharacters{"[a ã b ɓ c d ɗ e ë ǝ f g h i ĩ j k l m n ŋ o õ p r s t u 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{
                accountingFormat{"¤#,##0.00;(¤#,##0.00)"}
                currencyFormat{"¤#,##0.00"}
                decimalFormat{"#,##0.###"}
                percentFormat{"#,##0%"}
            }
            symbols{
                decimal{","}
                group{"."}
            }
        }
    }
    Version{"2.1.7.39"}
    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{
                "comme",
                "lilli",
            }
            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{
                        "Cya",
                        "Cla",
                        "Czi",
                        "Cko",
                        "Cka",
                        "Cga",
                        "Cze",
                    }
                    wide{
                        "Com’yakke",
                        "Comlaaɗii",
                        "Comzyiiɗii",
                        "Comkolle",
                        "Comkaldǝɓlii",
                        "Comgaisuu",
                        "Comzyeɓsuu",
                    }
                }
                stand-alone{
                    narrow{
                        "Y",
                        "L",
                        "Z",
                        "O",
                        "A",
                        "G",
                        "E",
                    }
                }
            }
            eras{
                abbreviated{
                    "KK",
                    "PK",
                }
                wide{
                    "KǝPel Kristu",
                    "Pel Kristu",
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "FLO",
                        "CLA",
                        "CKI",
                        "FMF",
                        "MAD",
                        "MBI",
                        "MLI",
                        "MAM",
                        "FDE",
                        "FMU",
                        "FGW",
                        "FYU",
                    }
                    wide{
                        "Fĩi Loo",
                        "Cokcwaklaŋne",
                        "Cokcwaklii",
                        "Fĩi Marfoo",
                        "Madǝǝuutǝbijaŋ",
                        "Mamǝŋgwãafahbii",
                        "Mamǝŋgwãalii",
                        "Madǝmbii",
                        "Fĩi Dǝɓlii",
                        "Fĩi Mundaŋ",
                        "Fĩi Gwahlle",
                        "Fĩi Yuru",
                    }
                }
                stand-alone{
                    narrow{
                        "O",
                        "A",
                        "I",
                        "F",
                        "D",
                        "B",
                        "L",
                        "M",
                        "E",
                        "U",
                        "W",
                        "Y",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "F1",
                        "F2",
                        "F3",
                        "F4",
                    }
                    wide{
                        "Tai fĩi sai ma tǝn kee zah",
                        "Tai fĩi sai zah lǝn gwa ma kee",
                        "Tai fĩi sai zah lǝn sai ma kee",
                        "Tai fĩi sai ma coo kee zah ‘na",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"”"}
        alternateQuotationStart{"“"}
        quotationEnd{"»"}
        quotationStart{"«"}
    }
    fields{
        day{
            dn{"Zah’nane/ Comme"}
            relative{
                "-1"{"Tǝsoo"}
                "0"{"Tǝ’nahko"}
                "1"{"Tǝ’nane"}
            }
        }
        era{
            dn{"Syii ma tãa"}
        }
        hour{
            dn{"Cok comme"}
        }
        minute{
            dn{"Cok comme ma laŋne"}
        }
        month{
            dn{"Fĩi"}
        }
        second{
            dn{"Cok comme ma laŋ tǝ biŋ"}
        }
        week{
            dn{"Luma"}
        }
        weekday{
            dn{"Kǝsyil luma"}
        }
        year{
            dn{"Syii"}
        }
        zone{
            dn{"Waŋ cok comme"}
        }
    }
}
