﻿// ***************************************************************************
// *
// * Copyright (C) 2013 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/ig.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/ig.xml
 */
ig{
    ExemplarCharacters{
        "[a b {ch} d e ẹ f g {gb} {gh} {gw} h i ị j k {kp} {kw} l m n ṅ {nw} {ny} o ọ"
        " p r s {sh} t u ụ v w y z]"
    }
    ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
    LocaleScript{
        "Latn",
    }
    NumberElements{
        latn{
            patterns{
                currencyFormat{"¤#,##0.00"}
            }
        }
    }
    Version{"2.0.84.55"}
    calendar{
        generic{
            DateTimePatterns{
                "h:mm:ss a zzzz",
                "h:mm:ss a z",
                "h:mm:ss a",
                "h:mm a",
                "EEEE, d MMMM y G",
                "d MMMM y G",
                "d MMM y G",
                "dd/MM/y GGGGG",
                "{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{"E, M/d/y"}
                yMMM{"MMM y"}
                yMMMEd{"E, MMM d, y"}
                yMMMM{"MMMM y"}
                yQQQ{"QQQ y"}
                yQQQQ{"QQQQ y"}
            }
        }
        gregorian{
            AmPmMarkers{
                "A.M.",
                "P.M.",
            }
            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/y",
                "{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{"E, M/d/y"}
                yMMM{"MMM y"}
                yMMMEd{"E, MMM d, y"}
                yMMMM{"MMMM y"}
                yQQQ{"QQQ y"}
                yQQQQ{"QQQQ y"}
            }
            dayNames{
                format{
                    abbreviated{
                        "Ụka",
                        "Mọn",
                        "Tiu",
                        "Wen",
                        "Tọọ",
                        "Fraị",
                        "Sat",
                    }
                    wide{
                        "Mbọsị Ụka",
                        "Mọnde",
                        "Tiuzdee",
                        "Wenezdee",
                        "Tọọzdee",
                        "Fraịdee",
                        "Satọdee",
                    }
                }
            }
            eras{
                abbreviated{
                    "T.K.",
                    "A.K.",
                }
                wide{
                    "Tupu Kristi",
                    "Afọ Kristi",
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "Jen",
                        "Feb",
                        "Maa",
                        "Epr",
                        "Mee",
                        "Juu",
                        "Jul",
                        "Ọgọ",
                        "Sep",
                        "Ọkt",
                        "Nov",
                        "Dis",
                    }
                    wide{
                        "Jenụwarị",
                        "Febrụwarị",
                        "Maachị",
                        "Eprel",
                        "Mee",
                        "Juun",
                        "Julaị",
                        "Ọgọọst",
                        "Septemba",
                        "Ọktoba",
                        "Novemba",
                        "Disemba",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "Ọ1",
                        "Ọ2",
                        "Ọ3",
                        "Ọ4",
                    }
                    wide{
                        "Ọkara 1",
                        "Ọkara 2",
                        "Ọkara 3",
                        "Ọkara 4",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"’"}
        alternateQuotationStart{"‘"}
        quotationEnd{"”"}
        quotationStart{"“"}
    }
    fields{
        day{
            dn{"Ụbọchị"}
            relative{
                "-1"{"Nnyaafụ"}
                "0"{"Taata"}
                "1"{"Echi"}
            }
        }
        dayperiod{
            dn{"N'ụtụtụ/N'anyasị"}
        }
        era{
            dn{"Agba"}
        }
        hour{
            dn{"Elekere"}
        }
        minute{
            dn{"Nkeji"}
        }
        month{
            dn{"Ọnwa"}
        }
        second{
            dn{"Nkejinta"}
        }
        week{
            dn{"Izu"}
        }
        weekday{
            dn{"Ụbọchị izu"}
        }
        year{
            dn{"Afọ"}
        }
        zone{
            dn{"Mpaghara oge"}
        }
    }
}
