﻿// ***************************************************************************
// *
// * Copyright (C) 2010 International Business Machines
// * Corporation and others.  All Rights Reserved.
// * Tool: com.ibm.icu.dev.tool.cldr.LDML2ICUConverter.java
// * Source File:<path>/common/main/saq.xml
// *
// ***************************************************************************
/**
 *  ICU <specials> source: <path>/xml/main/saq.xml
 */
saq{
    AuxExemplarCharacters{"[f q x z]"}
    ExemplarCharacters{"[a b c d e g h i j k l m n o p r s t u v w y]"}
    ExemplarCharactersIndex{"[A B C D E G H I J K L M N O P R S T U V W Y]"}
    LocaleScript{
        "Latn",
    }
    NumberPatterns{
        "#,##0.###",
        "¤#,##0.00;(¤#,##0.00)",
        "#,##0%",
        "#E0",
    }
    Version{"2.0.46.70"}
    calendar{
        gregorian{
            AmPmMarkers{
                "Tesiran",
                "Teipa",
            }
            DateTimePatterns{
                "h:mm:ss a zzzz",
                "h:mm:ss a z",
                "h:mm:ss a",
                "h:mm a",
                "EEEE, d MMMM y",
                "d MMMM y",
                "d MMM y",
                "dd/MM/yyyy",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                Hm{"HH:mm"}
                Hms{"HH:mm:ss"}
                M{"L"}
                MEd{"E, M/d"}
                MMM{"LLL"}
                MMMEd{"E, MMM d"}
                MMMMEd{"E, MMMM d"}
                MMMMd{"MMMM d"}
                MMMd{"MMM d"}
                Md{"M/d"}
                d{"d"}
                hm{"h:mm a"}
                ms{"mm:ss"}
                y{"y"}
                yM{"M/y"}
                yMEd{"EEE, M/d/y"}
                yMMM{"MMM y"}
                yMMMEd{"EEE, MMM d, y"}
                yMMMM{"MMMM y"}
                yQ{"Q y"}
                yQQQ{"QQQ y"}
            }
            dayNames{
                format{
                    abbreviated{
                        "Are",
                        "Kun",
                        "Ong",
                        "Ine",
                        "Ile",
                        "Sap",
                        "Kwe",
                    }
                    wide{
                        "Mderot ee are",
                        "Mderot ee kuni",
                        "Mderot ee ong'wan",
                        "Mderot ee inet",
                        "Mderot ee ile",
                        "Mderot ee sapa",
                        "Mderot ee kwe",
                    }
                }
                stand-alone{
                    narrow{
                        "A",
                        "K",
                        "O",
                        "I",
                        "I",
                        "S",
                        "K",
                    }
                }
            }
            eras{
                abbreviated{
                    "KK",
                    "BK",
                }
                wide{
                    "Kabla ya Christo",
                    "Baada ya Christo",
                }
            }
            fields{
                day{
                    dn{"Mpari"}
                    relative{
                        "-1"{"Ng'ole"}
                        "0"{"Duo"}
                        "1"{"Taisere"}
                    }
                }
                dayperiod{
                    dn{"TS/TP"}
                }
                era{
                    dn{"Nyamata"}
                }
                hour{
                    dn{"Saai"}
                }
                minute{
                    dn{"Idakika"}
                }
                month{
                    dn{"Lapa"}
                }
                second{
                    dn{"Isekondi"}
                }
                week{
                    dn{"Saipa napo"}
                }
                weekday{
                    dn{"Mpari"}
                }
                year{
                    dn{"Lari"}
                }
                zone{
                    dn{"Majira ya saa"}
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "Obo",
                        "Waa",
                        "Oku",
                        "Ong",
                        "Ime",
                        "Ile",
                        "Sap",
                        "Isi",
                        "Saa",
                        "Tom",
                        "Tob",
                        "Tow",
                    }
                    wide{
                        "Lapa le obo",
                        "Lapa le waare",
                        "Lapa le okuni",
                        "Lapa le ong'wan",
                        "Lapa le imet",
                        "Lapa le ile",
                        "Lapa le sapa",
                        "Lapa le isiet",
                        "Lapa le saal",
                        "Lapa le tomon",
                        "Lapa le tomon obo",
                        "Lapa le tomon waare",
                    }
                }
                stand-alone{
                    narrow{
                        "O",
                        "W",
                        "O",
                        "O",
                        "I",
                        "I",
                        "S",
                        "I",
                        "S",
                        "T",
                        "T",
                        "T",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "R1",
                        "R2",
                        "R3",
                        "R4",
                    }
                    wide{
                        "Robo e kwe",
                        "Robo le waare",
                        "Robo le waare",
                        "Robo le ong'wan",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"”"}
        alternateQuotationStart{"“"}
        quotationEnd{"'"}
        quotationStart{"'"}
    }
}
