﻿// ***************************************************************************
// *
// * Copyright (C) 2012 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>/xml/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{
                currencyFormat{"¤#,##0.00;(¤#,##0.00)"}
                decimalFormat{"#,##0.###"}
                percentFormat{"#,##0%"}
            }
            symbols{
                decimal{","}
                group{"."}
            }
        }
    }
    Version{"2.0.74.80"}
    calendar{
        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/yyyy",
                "{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"}
                yQ{"Q y"}
                yQQQ{"QQQ 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",
                }
            }
            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"}
                }
            }
            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{"«"}
    }
}
