﻿// ***************************************************************************
// *
// * 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/ne.xml
// *
// ***************************************************************************
/**
 *  ICU <specials> source: <path>/xml/main/ne.xml
 */
ne{
    AuxExemplarCharacters{"[\u200C \u200D]"}
    ExemplarCharacters{
        "[ॐ अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब"
        " भ म य र ल ळ व श ष स ह ़ ँ ं ः ऽ ् ा ि ी ु ू ृ ॄ ॅ े ै ॉ ो ौ]"
    }
    LocaleScript{
        "Deva",
    }
    NumberElements{
        ".",
        ",",
        ";",
        "%",
        "०",
        "#",
        "-",
        "E",
        "‰",
        "∞",
        "NaN",
        "+",
    }
    Version{"2.0.47.63"}
    calendar{
        gregorian{
            AmPmMarkers{
                "पूर्व मध्यान्ह",
                "उत्तर मध्यान्ह",
            }
            dayNames{
                stand-alone{
                    narrow{
                        "१",
                        "२",
                        "३",
                        "४",
                        "५",
                        "६",
                        "७",
                    }
                }
            }
            eras{
                abbreviated{
                    "ईसा पूर्व",
                    "सन्",
                }
            }
            fields{
                day{
                    dn{"बार"}
                    relative{
                        "-1"{"हिजो"}
                        "0"{"आज"}
                        "1"{"भोलि"}
                    }
                }
                dayperiod{
                    dn{"पूर्व मध्यान्ह/उत्तर मध्यान्ह"}
                }
                era{
                    dn{"काल"}
                }
                hour{
                    dn{"घण्टा"}
                }
                minute{
                    dn{"मिनेट"}
                }
                month{
                    dn{"महिना"}
                }
                second{
                    dn{"दोस्रो"}
                }
                week{
                    dn{"हप्ता"}
                }
                weekday{
                    dn{"हप्ताको बार"}
                }
                year{
                    dn{"बर्ष"}
                }
                zone{
                    dn{"क्षेत्र"}
                }
            }
            monthNames{
                stand-alone{
                    narrow{
                        "१",
                        "२",
                        "३",
                        "४",
                        "५",
                        "६",
                        "७",
                        "८",
                        "९",
                        "१०",
                        "११",
                        "१२",
                    }
                }
            }
            quarters{
                stand-alone{
                    narrow{
                        "१",
                        "२",
                        "३",
                        "४",
                    }
                }
            }
        }
    }
    defaultNumberingSystem{"deva"}
    delimiters{
        alternateQuotationEnd{"\""}
        alternateQuotationStart{"\""}
        quotationEnd{"'"}
        quotationStart{"'"}
    }
    units{
        day{
            one{"{0} दिन"}
        }
        hour{
            one{"{0} घण्टा"}
        }
        minute{
            one{"{0} मिनेट"}
        }
        month{
            one{"{0} महिना"}
        }
        second{
            one{"{0} सेकेण्ड"}
        }
        week{
            one{"{0} हप्ता"}
        }
        year{
            one{"{0} बर्ष"}
            other{"{0} बर्ष"}
        }
    }
}
