﻿// ***************************************************************************
// *
// * Copyright (C) 2016 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/nn.xml
// *
// ***************************************************************************
nn{
    AuxExemplarCharacters{"[á ǎ č ç đ è ê ń ñ ŋ š ŧ ü ž ä ö]"}
    ExemplarCharacters{"[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 æ ø å]"}
    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 Æ Ø Å]"}
    NumberElements{
        latn{
            patterns{
                currencyFormat{"#,##0.00 ¤"}
                decimalFormat{"#,##0.###"}
                percentFormat{"#,##0 %"}
                scientificFormat{"#E0"}
            }
            symbols{
                decimal{","}
                exponential{"E"}
                group{" "}
                infinity{"∞"}
                list{";"}
                minusSign{"−"}
                nan{"NaN"}
                perMille{"‰"}
                percentSign{"%"}
                plusSign{"+"}
                timeSeparator{"."}
            }
        }
    }
    Version{"2.1.23.66"}
    calendar{
        generic{
            DateTimePatterns{
                "'kl'. HH.mm.ss zzzz",
                "HH.mm.ss z",
                "HH.mm.ss",
                "HH.mm",
                "EEEE d. MMMM y G",
                "d. MMMM y G",
                "d. MMM y G",
                "d.M y G",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                Ed{"E d."}
                Gy{"y G"}
                GyMMM{"MMM y G"}
                GyMMMEd{"E d. MMM y G"}
                GyMMMd{"d. MMM y G"}
                H{"HH"}
                Hm{"HH.mm"}
                Hms{"HH.mm.ss"}
                M{"L"}
                MEd{"E d.M"}
                MMM{"LLL"}
                MMMEd{"E d. MMM"}
                MMMd{"d. MMM"}
                MMdd{"d.M."}
                Md{"d.M."}
                d{"d."}
                h{"h a"}
                hm{"h.mm a"}
                hms{"h.mm.ss a"}
                ms{"mm.ss"}
                y{"y G"}
                yyyy{"y G"}
                yyyyM{"M y G"}
                yyyyMEd{"E d.M.y G"}
                yyyyMM{"MM.y G"}
                yyyyMMM{"MMM y G"}
                yyyyMMMEd{"E d. MMM y G"}
                yyyyMMMM{"MMMM y G"}
                yyyyMMMd{"d. MMM y G"}
                yyyyMd{"d.M.y G"}
                yyyyQQQ{"QQQ y G"}
                yyyyQQQQ{"QQQQ y G"}
            }
            intervalFormats{
                H{
                    H{"HH–HH"}
                }
                Hm{
                    H{"HH.mm–HH.mm"}
                    m{"HH.mm–HH.mm"}
                }
                Hmv{
                    H{"HH.mm–HH.mm v"}
                    m{"HH.mm–HH.mm v"}
                }
                Hv{
                    H{"HH–HH v"}
                }
                M{
                    M{"M.–M."}
                }
                MEd{
                    M{"E dd.MM.–E dd.MM."}
                    d{"E dd.MM.–E dd.MM."}
                }
                MMM{
                    M{"MMM–MMM"}
                }
                MMMEd{
                    M{"E d. MMM–E d. MMM"}
                    d{"E d.–E d. MMM"}
                }
                MMMd{
                    M{"d. MMM–d. MMM"}
                    d{"d.–d. MMM"}
                }
                Md{
                    M{"dd.MM.–dd.MM."}
                    d{"dd.MM.–dd.MM."}
                }
                d{
                    d{"d.–d."}
                }
                fallback{"{0} – {1}"}
                h{
                    a{"h a – h a"}
                    h{"h–h a"}
                }
                hm{
                    a{"h.mm a – h.mm a"}
                    h{"h.mm–h.mm a"}
                    m{"h.mm–h.mm a"}
                }
                hmv{
                    a{"h.mm a – h.mm a v"}
                    h{"h.mm–h.mm a v"}
                    m{"h.mm–h.mm a v"}
                }
                hv{
                    a{"h a – h a v"}
                    h{"h–h a v"}
                }
                y{
                    y{"y–y G"}
                }
                yM{
                    M{"MM.y–MM.y G"}
                    y{"MM.y–MM.y G"}
                }
                yMEd{
                    M{"E dd.MM.y–E dd.MM.y G"}
                    d{"E dd.MM.y–E dd.MM.y G"}
                    y{"E dd.MM.y–E dd.MM.y G"}
                }
                yMMM{
                    M{"MMM–MMM y G"}
                    y{"MMM y–MMM y G"}
                }
                yMMMEd{
                    M{"E d. MMM–E d. MMM y G"}
                    d{"E d.–E d. MMM y G"}
                    y{"E d. MMM y–E d. MMM y G"}
                }
                yMMMM{
                    M{"MMMM–MMMM y G"}
                    y{"MMMM y–MMMM y G"}
                }
                yMMMd{
                    M{"d. MMM–d. MMM y G"}
                    d{"d.–d. MMM y G"}
                    y{"d. MMM y–d. MMM y G"}
                }
                yMd{
                    M{"dd.MM.y–dd.MM.y G"}
                    d{"dd.MM.y–dd.MM.y G"}
                    y{"dd.MM.y–dd.MM.y G"}
                }
            }
        }
        gregorian{
            AmPmMarkers{
                "formiddag",
                "ettermiddag",
            }
            AmPmMarkersAbbr{
                "f.m.",
                "e.m.",
            }
            DateTimePatterns{
                "'kl'. HH.mm.ss zzzz",
                "HH.mm.ss z",
                "HH.mm.ss",
                "HH.mm",
                "EEEE d. MMMM y",
                "d. MMMM y",
                "d. MMM y",
                "dd.MM.y",
                "{1}, {0}",
                "{1} {0}",
                "{1} 'kl'. {0}",
                "{1}, {0}",
                "{1}, {0}",
            }
            availableFormats{
                Ed{"E d."}
                Gy{"y G"}
                GyMMM{"MMM y G"}
                GyMMMEd{"E d. MMM y G"}
                GyMMMd{"d. MMM y G"}
                Hm{"HH.mm"}
                Hms{"HH.mm.ss"}
                MEd{"E d.M"}
                MMMEd{"E d. MMM"}
                MMMMd{"d. MMMM"}
                MMMd{"d. MMM"}
                MMdd{"d.M."}
                Md{"d.M."}
                d{"d."}
                hm{"h.mm a"}
                hms{"h.mm.ss a"}
                ms{"mm.ss"}
                yM{"M y"}
                yMEd{"E d.M.y"}
                yMM{"MM.y"}
                yMMM{"MMM y"}
                yMMMEd{"E d. MMM y"}
                yMMMM{"MMMM y"}
                yMMMd{"d. MMM y"}
                yMd{"d.M.y"}
                yQQQ{"QQQ y"}
                yQQQQ{"QQQQ y"}
            }
            dayNames{
                format{
                    abbreviated{
                        "sø.",
                        "må.",
                        "ty.",
                        "on.",
                        "to.",
                        "fr.",
                        "la.",
                    }
                    wide{
                        "søndag",
                        "måndag",
                        "tysdag",
                        "onsdag",
                        "torsdag",
                        "fredag",
                        "laurdag",
                    }
                }
                stand-alone{
                    narrow{
                        "S",
                        "M",
                        "T",
                        "O",
                        "T",
                        "F",
                        "L",
                    }
                }
            }
            eras{
                abbreviated{
                    "f.Kr.",
                    "e.Kr.",
                }
                narrow{
                    "f.Kr.",
                    "e.Kr.",
                }
                wide{
                    "f.Kr.",
                    "e.Kr.",
                }
            }
            intervalFormats{
                Hm{
                    H{"HH.mm–HH.mm"}
                    m{"HH.mm–HH.mm"}
                }
                Hmv{
                    H{"HH.mm–HH.mm v"}
                    m{"HH.mm–HH.mm v"}
                }
                M{
                    M{"M.–M."}
                }
                MEd{
                    M{"E dd.MM.–E dd.MM."}
                    d{"E dd.MM.–E dd.MM."}
                }
                MMM{
                    M{"MMM–MMM"}
                }
                MMMEd{
                    M{"E d. MMM–E d. MMM"}
                    d{"E d.–E d. MMM"}
                }
                MMMd{
                    M{"d. MMM–d. MMM"}
                    d{"d.–d. MMM"}
                }
                Md{
                    M{"dd.MM–dd.MM"}
                    d{"dd.MM–dd.MM"}
                }
                d{
                    d{"d.–d."}
                }
                fallback{"{0} – {1}"}
                h{
                    h{"h–h a"}
                }
                hm{
                    h{"h.mm–h.mm a"}
                    m{"h.mm–h.mm a"}
                }
                hmv{
                    h{"h.mm–h.mm a v"}
                    m{"h.mm–h.mm a v"}
                }
                hv{
                    h{"h–h a v"}
                }
                y{
                    y{"y–y"}
                }
                yM{
                    M{"MM.y–MM.y"}
                    y{"MM.y–MM.y"}
                }
                yMEd{
                    M{"E dd.MM.y–E dd.MM.y"}
                    d{"E dd.MM.y–E dd.MM.y"}
                    y{"E dd.MM.y–E dd.MM.y"}
                }
                yMMM{
                    M{"MMM–MMM y"}
                    y{"MMM y–MMM y"}
                }
                yMMMEd{
                    M{"E d. MMM–E d. MMM y"}
                    d{"E d.–E d. MMM y"}
                    y{"E d. MMM y–E d. MMM y"}
                }
                yMMMM{
                    M{"MMMM–MMMM y"}
                    y{"MMMM y–MMMM y"}
                }
                yMMMd{
                    M{"d. MMM–d. MMM y"}
                    d{"d.–d. MMM y"}
                    y{"d. MMM y–d. MMM y"}
                }
                yMd{
                    M{"dd.MM.y–dd.MM.y"}
                    d{"dd.MM.y–dd.MM.y"}
                    y{"dd.MM.y–dd.MM.y"}
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "jan.",
                        "feb.",
                        "mars",
                        "apr.",
                        "mai",
                        "juni",
                        "juli",
                        "aug.",
                        "sep.",
                        "okt.",
                        "nov.",
                        "des.",
                    }
                    wide{
                        "januar",
                        "februar",
                        "mars",
                        "april",
                        "mai",
                        "juni",
                        "juli",
                        "august",
                        "september",
                        "oktober",
                        "november",
                        "desember",
                    }
                }
                stand-alone{
                    narrow{
                        "J",
                        "F",
                        "M",
                        "A",
                        "M",
                        "J",
                        "J",
                        "A",
                        "S",
                        "O",
                        "N",
                        "D",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "K1",
                        "K2",
                        "K3",
                        "K4",
                    }
                    wide{
                        "1. kvartal",
                        "2. kvartal",
                        "3. kvartal",
                        "4. kvartal",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"’"}
        alternateQuotationStart{"‘"}
        quotationEnd{"»"}
        quotationStart{"«"}
    }
    fields{
        day{
            dn{"dag"}
            relative{
                "-1"{"i går"}
                "-2"{"i forgårs"}
                "0"{"i dag"}
                "1"{"i morgon"}
                "2"{"i overmorgon"}
            }
            relativeTime{
                future{
                    one{"om {0} døgn"}
                    other{"om {0} døgn"}
                }
                past{
                    one{"for {0} døgn siden"}
                    other{"for {0} døgn siden"}
                }
            }
        }
        dayperiod{
            dn{"f.m./e.m.-val"}
        }
        era{
            dn{"æra"}
        }
        hour{
            dn{"time"}
            relativeTime{
                future{
                    one{"om {0} time"}
                    other{"om {0} timer"}
                }
                past{
                    one{"for {0} time siden"}
                    other{"for {0} timer siden"}
                }
            }
        }
        minute{
            dn{"minutt"}
            relativeTime{
                future{
                    one{"om {0} minutt"}
                    other{"om {0} minutter"}
                }
                past{
                    one{"for {0} minutt siden"}
                    other{"for {0} minutter siden"}
                }
            }
        }
        month{
            dn{"månad"}
            relativeTime{
                future{
                    one{"om {0} måned"}
                    other{"om {0} måneder"}
                }
                past{
                    one{"for {0} måned siden"}
                    other{"for {0} måneder siden"}
                }
            }
        }
        second{
            dn{"sekund"}
            relativeTime{
                future{
                    one{"om {0} sekund"}
                    other{"om {0} sekunder"}
                }
                past{
                    one{"for {0} sekund siden"}
                    other{"for {0} sekunder siden"}
                }
            }
        }
        week{
            dn{"veke"}
            relativeTime{
                future{
                    one{"om {0} uke"}
                    other{"om {0} uker"}
                }
                past{
                    one{"for {0} uke siden"}
                    other{"for {0} uker siden"}
                }
            }
        }
        weekday{
            dn{"vekedag"}
        }
        year{
            dn{"år"}
            relativeTime{
                future{
                    one{"om {0} år"}
                    other{"om {0} år"}
                }
                past{
                    one{"for {0} år siden"}
                    other{"for {0} år siden"}
                }
            }
        }
        zone{
            dn{"sone"}
        }
    }
    listPattern{
        standard{
            2{"{0} og {1}"}
            end{"{0} og {1}"}
        }
    }
    measurementSystemNames{
        UK{"engelsk"}
        US{"amerikansk"}
        metric{"metrisk"}
    }
}
