// *******************************************************************************
// *
// *   Copyright (C) 1997-2001, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// *******************************************************************************

nn_NO {
     Version{ "1.0"}
    // Todo: The following data has been placed here until the aliasing mechanism works properly
    // This data is inherited from nn.
    CollationElements {
        Version { "1.0" }
        Override { "FALSE" }
        Sequence { "& Z < \u00E6, \u00C6  < a\u0308, A\u0308< \u00F8, \u00D8"
        " < o\u0308, O\u0308< o\u030B, O\u030B < a\u030A, A\u030A, aa , aA , Aa , AA  & "
        "V, w, W " }
    }
    Countries {
        NO { "Noreg" }
    }
    DateTimeElements {
        "2",
        "4",
    }
    DateTimePatterns {
        "'kl 'HH.mm z",
        "HH:mm:ss z",
        "HH:mm:ss",
        "HH:mm",
        "d. MMMM yyyy",
        "d. MMMM yyyy",
        "dd.MMM.yy",
        "dd.MM.yy",
        "{1} {0}",
    }
    Languages {
        nb { "bokm\u00E5l" }
        nn { "nynorsk" }
        no { "norsk" }
    }
    LocaleString { "no" }
    MonthAbbreviations {
        "jan",
        "feb",
        "mar",
        "apr",
        "mai",
        "jun",
        "jul",
        "aug",
        "sep",
        "okt",
        "nov",
        "des",
        "",
    }
    MonthNames {
        "januar",
        "februar",
        "mars",
        "april",
        "mai",
        "juni",
        "juli",
        "august",
        "september",
        "oktober",
        "november",
        "desember",
        "",
    }
    NumberElements {
        ",",
        "\u00A0",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
    }
    ShortLanguage { "nor" }
    Eras {
        "f.Kr.",
        "e.Kr.",
    }

    zoneStrings {
        {
            "Europe/Oslo",
            "Central European Time",
            "MET",
            "Central European Time (DST)",
            "MET",
            "Oslo"
        }
    }
    DayAbbreviations {
        "su",
        "m\u00E5",
        "ty",
        "on",
        "to",
        "fr",
        "lau",
    }
    DayNames {
        "sundag",
        "m\u00E5ndag",
        "tysdag",
        "onsdag",
        "torsdag",
        "fredag",
        "laurdag",
    }
    // Todo: The above data has been placed here until the aliasing mechanism works properly

    // The following data should only be in this locale
    CurrencyElements {
        "kr",
        "NOK",
        ",",
    }
    NumberPatterns {
        "#,##0.###;-#,##0.###",
        "\u00A4 #,##0.00;\u00A4 -#,##0.00",
        "#,##0%",
    }
    ShortCountry { "NOR" }
    LocaleID { "0814" }
}
