# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# Day names

weekday-0-long = Søndag
weekday-1-long = Mandag
weekday-2-long = Tirsdag
weekday-3-long = Onsdag
weekday-4-long = Torsdag
weekday-5-long = Fredag
weekday-6-long = Lørdag

weekday-0-short = Søn
weekday-1-short = Man
weekday-2-short = Tir
weekday-3-short = Ons
weekday-4-short = Tor
weekday-5-short = Fre
weekday-6-short = Lør

# Month names

month-0-long  = Januar
month-1-long  = Februar
month-2-long  = Marts
month-3-long  = April
month-4-long  = Maj
month-5-long  = Juni
month-6-long  = Juli
month-7-long  = August
month-8-long  = September
month-9-long  = Oktober
month-10-long = November
month-11-long = December

month-0-genitive  = januar
month-1-genitive  = februar
month-2-genitive  = marts
month-3-genitive  = april
month-4-genitive  = maj
month-5-genitive  = juni
month-6-genitive  = juli
month-7-genitive  = august
month-8-genitive  = september
month-9-genitive  = oktober
month-10-genitive = november
month-11-genitive = december

month-0-short  = Jan
month-1-short  = Feb
month-2-short  = Mar
month-3-short  = Apr
month-4-short  = Maj
month-5-short  = Jun
month-6-short  = Jul
month-7-short  = Aug
month-8-short  = Sep
month-9-short  = Okt
month-10-short = Nov
month-11-short = Dec

# Relative time ("pretty dates"), normal/long variant

minutes-ago-long={[ plural(value) ]}
minutes-ago-long[zero]  = nu
minutes-ago-long[one]   = for et minut siden
minutes-ago-long[two]   = for {{value}} minutter siden
minutes-ago-long[few]   = for {{value}} minutter siden
minutes-ago-long[many]  = for {{value}} minutter siden
minutes-ago-long[other] = for {{value}} minutter siden

hours-ago-long={[ plural(value) ]}
hours-ago-long[zero]  = nu
hours-ago-long[one]   = for en time siden
hours-ago-long[two]   = for {{value}} timer siden
hours-ago-long[few]   = for {{value}} timer siden
hours-ago-long[many]  = for {{value}} timer siden
hours-ago-long[other] = for {{value}} timer siden

days-ago-long={[ plural(value) ]}
days-ago-long[zero]  = i dag
days-ago-long[one]   = i går
days-ago-long[two]   = for {{value}} dage siden
days-ago-long[few]   = for {{value}} dage siden
days-ago-long[many]  = for {{value}} dage siden
days-ago-long[other] = for {{value}} dage siden

weeks-ago-long={[ plural(value) ]}
weeks-ago-long[zero]  = denne uge
weeks-ago-long[one]   = sidste uge
weeks-ago-long[two]   = for {{value}} uger siden
weeks-ago-long[few]   = for {{value}} uger siden
weeks-ago-long[many]  = for {{value}} uger siden
weeks-ago-long[other] = for {{value}} uger siden

months-ago-long={[ plural(value) ]}
months-ago-long[zero]  = denne måned
months-ago-long[one]   = sidste måned
months-ago-long[two]   = for {{value}} måneder siden
months-ago-long[few]   = for {{value}} måneder siden
months-ago-long[many]  = for {{value}} måneder siden
months-ago-long[other] = for {{value}} måneder siden

years-ago-long={[ plural(value) ]}
years-ago-long[zero]  = dette år
years-ago-long[one]   = sidste år
years-ago-long[two]   = for {{value}} år siden
years-ago-long[few]   = for {{value}} år siden
years-ago-long[many]  = for {{value}} år siden
years-ago-long[other] = for {{value}} år siden

minutes-until-long={[ plural(value) ]}
minutes-until-long[zero]  = nu
minutes-until-long[one]   = om et minut
minutes-until-long[two]   = om {{value}} minutter
minutes-until-long[few]   = om {{value}} minutter
minutes-until-long[many]  = om {{value}} minutter
minutes-until-long[other] = om {{value}} minutter

hours-until-long={[ plural(value) ]}
hours-until-long[zero]  = nu
hours-until-long[one]   = om en time
hours-until-long[two]   = om {{value}} timer
hours-until-long[few]   = om {{value}} timer
hours-until-long[many]  = om {{value}} timer
hours-until-long[other] = om {{value}} timer

days-until-long={[ plural(value) ]}
days-until-long[zero]  = i dag
days-until-long[one]   = i morgen
days-until-long[two]   = om {{value}} dage
days-until-long[few]   = om {{value}} dage
days-until-long[many]  = om {{value}} dage
days-until-long[other] = om {{value}} dage

weeks-until-long={[ plural(value) ]}
weeks-until-long[zero]  = denne uge
weeks-until-long[one]   = næste uge
weeks-until-long[two]   = om {{value}} uger
weeks-until-long[few]   = om {{value}} uger
weeks-until-long[many]  = om {{value}} uger
weeks-until-long[other] = om {{value}} uger

months-until-long={[ plural(value) ]}
months-until-long[zero]  = denne måned
months-until-long[one]   = næste måned
months-until-long[two]   = om {{value}} måneder
months-until-long[few]   = om {{value}} måneder
months-until-long[many]  = om {{value}} måneder
months-until-long[other] = om {{value}} måneder

years-until-long={[ plural(value) ]}
years-until-long[zero]  = i år
years-until-long[one]   = næste år
years-until-long[two]   = om {{value}} år
years-until-long[few]   = om {{value}} år
years-until-long[many]  = om {{value}} år
years-until-long[other] = om {{value}} år


# Relative time ("pretty dates"), short variant
# LOCALIZATION NOTE: the time unit should be as short as possible,
# and the whole string should not exceed a length of ~10 latin characters.
# LOCALIZATION NOTE: the prime (’) can be used to represent minutes for most
# locales, but we use “m” instead for the English locale to prevent a possible
# confusion (35’ ago ≠ 35 feet ago).

minutes-ago-short={[ plural(value) ]}
minutes-ago-short[zero]  = nu
minutes-ago-short[other] = {{value}}m siden

hours-ago-short={[ plural(value) ]}
hours-ago-short[zero]  = nu
hours-ago-short[other] = {{value}}t siden

days-ago-short={[ plural(value) ]}
days-ago-short[zero]  = i dag
days-ago-short[other] = {{value}}d siden

minutes-until-short={[ plural(value) ]}
minutes-until-short[zero]  = nu
minutes-until-short[other] = om {{value}}m

hours-until-short={[ plural(value) ]}
hours-until-short[zero]  = nu
hours-until-short[other] = om {{value}}t

days-until-short={[ plural(value) ]}
days-until-short[zero]  = i dag
days-until-short[other] = om {{value}}d

# Relative time ("pretty dates"), unexpected error

incorrectDate = (forkert dato)

# Date/Time format
# see http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html

dateTimeFormat_%c = %a d. %e. %b %Y %H:%M:%S
dateTimeFormat_%x = %d-%m-%Y
dateTimeFormat_%X = %H:%M:%S

shortTimeFormat = %H:%M
shortDateTimeFormat = %x %H:%M

# Boolean to indicate if weekStarts on Monday (1) or Sunday (0).
weekStartsOnMonday = 1

# Localize “AM" and "PM" used in %p format for time
time_am = AM
time_pm = PM
