﻿// ***************************************************************************
// *
// * 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{
        default{"deva"}
        latn{
            symbols{
                decimal{"."}
                group{","}
                list{";"}
                minusSign{"-"}
            }
        }
    }
    Version{"2.0.50.94"}
    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{
                        "१",
                        "२",
                        "३",
                        "४",
                    }
                }
            }
        }
    }
    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} बर्ष"}
        }
    }
}
