diff --git a/web/public/locales/nb-NO/common.json b/web/public/locales/nb-NO/common.json
new file mode 100644
index 000000000..acef361c3
--- /dev/null
+++ b/web/public/locales/nb-NO/common.json
@@ -0,0 +1,203 @@
+{
+ "time": {
+ "yr": "{{time}} år",
+ "year": "{{time}} år",
+ "minute": "{{time}} minutter",
+ "s": "{{time}}s",
+ "second": "{{time}} sekunder",
+ "formattedTimestampExcludeSeconds": {
+ "24hour": "%-d. %b, %H:%M",
+ "12hour": "%-d. %b, %I:%M %p"
+ },
+ "untilForTime": "Inntil {{time}}",
+ "untilForRestart": "Inntil Frigate starter på nytt.",
+ "untilRestart": "Inntil omstart",
+ "ago": "{{timeAgo}} siden",
+ "justNow": "Akkurat nå",
+ "today": "I dag",
+ "yesterday": "I går",
+ "last7": "Siste 7 dager",
+ "last14": "Siste 14 dager",
+ "last30": "Siste 30 dager",
+ "thisWeek": "Denne uken",
+ "lastWeek": "Forrige uke",
+ "thisMonth": "Denne måneden",
+ "lastMonth": "Forrige måned",
+ "5minutes": "5 minutter",
+ "10minutes": "10 minutter",
+ "30minutes": "30 minutter",
+ "1hour": "1 time",
+ "12hours": "12 timer",
+ "24hours": "24 timer",
+ "pm": "pm",
+ "am": "am",
+ "mo": "{{time}} md",
+ "month": "{{time}} måneder",
+ "d": "{{time}}d",
+ "day": "{{time}} dager",
+ "h": "{{time}}t",
+ "hour": "{{time}} timer",
+ "m": "{{time}}m",
+ "formattedTimestamp": {
+ "12hour": "%-d. %b, %I:%M:%S %p",
+ "24hour": "%-d. %b, %H:%M:%S"
+ },
+ "formattedTimestamp2": {
+ "12hour": "%m/%d %I:%M:%S%P",
+ "24hour": "%d. %b %H:%M:%S"
+ },
+ "formattedTimestampWithYear": {
+ "12hour": "%-d. %b %Y, %I:%M %p",
+ "24hour": "%-d. %b %Y, %H:%M"
+ },
+ "formattedTimestampOnlyMonthAndDay": "%-d. %b"
+ },
+ "button": {
+ "copy": "Kopier",
+ "delete": "Slett",
+ "apply": "Bruk",
+ "reset": "Tilbakestill",
+ "done": "Ferdig",
+ "enabled": "Aktivert",
+ "enable": "Aktiver",
+ "disabled": "Deaktivert",
+ "disable": "Deaktiver",
+ "save": "Lagre",
+ "saving": "Lagrer...",
+ "cancel": "Avbryt",
+ "close": "Lukk",
+ "back": "Tilbake",
+ "history": "Historikk",
+ "fullscreen": "Fullskjerm",
+ "exitFullscreen": "Avslutt fullskjerm",
+ "pictureInPicture": "Bilde-i-bilde",
+ "twoWayTalk": "Toveis tale",
+ "cameraAudio": "Kameralyd",
+ "on": "PÅ",
+ "off": "AV",
+ "edit": "Rediger",
+ "copyCoordinates": "Kopier koordinater",
+ "yes": "Ja",
+ "no": "Nei",
+ "download": "Last ned",
+ "info": "Info",
+ "suspended": "Suspendert",
+ "unsuspended": "Opphev suspensjon",
+ "play": "Spill av",
+ "unselect": "Fjern valg",
+ "export": "Eksporter",
+ "deleteNow": "Slett nå",
+ "next": "Neste"
+ },
+ "menu": {
+ "help": "Hjelp",
+ "documentation": {
+ "title": "Dokumentasjon",
+ "label": "Frigate-dokumentasjon"
+ },
+ "restart": "Start Frigate på nytt",
+ "live": {
+ "title": "Direkte",
+ "allCameras": "Alle kameraer",
+ "cameras": {
+ "title": "Kameraer",
+ "count_one": "{{count}} kamera",
+ "count_other": "{{count}} kameraer"
+ }
+ },
+ "review": "Granske",
+ "explore": "Utforsk",
+ "export": "Eksporter",
+ "uiPlayground": "UI Sandkasse",
+ "faceLibrary": "Ansiktsbibliotek",
+ "user": {
+ "title": "Bruker",
+ "account": "Konto",
+ "current": "Nåværende bruker: {{user}}",
+ "anonymous": "anonym",
+ "logout": "Logg ut",
+ "setPassword": "Angi passord"
+ },
+ "system": "System",
+ "systemMetrics": "Systemmålinger",
+ "configuration": "Konfigurasjon",
+ "systemLogs": "Systemlogger",
+ "settings": "Innstillinger",
+ "configurationEditor": "Konfigurasjonsredigering",
+ "languages": "Språk",
+ "language": {
+ "en": "Engelsk",
+ "zhCN": "简体中文 (Forenklet kinesisk)",
+ "withSystem": {
+ "label": "Bruk systemets språkinnstillinger"
+ }
+ },
+ "appearance": "Utseende",
+ "darkMode": {
+ "label": "Mørk modus",
+ "light": "Lys",
+ "dark": "Mørk",
+ "withSystem": {
+ "label": "Bruk systemets innstillinger for lys eller mørk modus"
+ }
+ },
+ "withSystem": "System",
+ "theme": {
+ "label": "Tema",
+ "blue": "Blå",
+ "green": "Grønn",
+ "nord": "Nord",
+ "red": "Rød",
+ "contrast": "Høy kontrast",
+ "default": "Standard"
+ }
+ },
+ "pagination": {
+ "next": {
+ "title": "Neste",
+ "label": "Gå til neste side"
+ },
+ "label": "paginering",
+ "previous": {
+ "title": "Forrige",
+ "label": "Gå til forrige side"
+ },
+ "more": "Flere sider"
+ },
+ "unit": {
+ "speed": {
+ "mph": "mph",
+ "kph": "km/t"
+ }
+ },
+ "label": {
+ "back": "Gå tilbake"
+ },
+ "toast": {
+ "copyUrlToClipboard": "Nettadresse kopiert til utklippstavlen.",
+ "save": {
+ "title": "Lagre",
+ "error": {
+ "title": "Kunne ikke lagre endringer i konfigurasjonen: {{errorMessage}}",
+ "noMessage": "Kunne ikke lagre endringer i konfigurasjonen"
+ }
+ }
+ },
+ "role": {
+ "title": "Rolle",
+ "admin": "Admin",
+ "viewer": "Visningsbruker",
+ "desc": "Administratorer har full tilgang til alle funksjoner i Frigate UI. Visningsbrukere er begrenset til å se kameraer, gjennomgå hendelser og historisk opptak i UI."
+ },
+ "accessDenied": {
+ "documentTitle": "Ingen tilgang – Frigate",
+ "title": "Ingen tilgang",
+ "desc": "Du har ikke tillatelse til å vise denne siden."
+ },
+ "notFound": {
+ "documentTitle": "Ikke funnet – Frigate",
+ "title": "404",
+ "desc": "Siden ble ikke funnet"
+ },
+ "selectItem": "Velg {{item}}"
+}
diff --git a/web/public/locales/nb-NO/components/camera.json b/web/public/locales/nb-NO/components/camera.json
new file mode 100644
index 000000000..dd37174c7
--- /dev/null
+++ b/web/public/locales/nb-NO/components/camera.json
@@ -0,0 +1,83 @@
+{
+ "group": {
+ "label": "Kameragrupper",
+ "name": {
+ "placeholder": "Skriv inn et navn...",
+ "errorMessage": {
+ "mustLeastCharacters": "Navnet på kameragruppen må være minst 2 tegn.",
+ "exists": "Navnet på kameragruppen finnes allerede.",
+ "nameMustNotPeriod": "Navnet på kameragruppen kan ikke inneholde punktum.",
+ "invalid": "Ugyldig navn på kameragruppe."
+ },
+ "label": "Navn"
+ },
+ "camera": {
+ "setting": {
+ "streamMethod": {
+ "method": {
+ "continuousStreaming": {
+ "label": "Kontinuerlig strømming",
+ "desc": {
+ "title": "Kamerabildet vil alltid være en direktestrøm når det vises på dashbordet, selv om ingen aktivitet oppdages.",
+ "warning": "Kontinuerlig strømming kan føre til høy båndbreddebruk og ytelsesproblemer. Bruk med forsiktighet."
+ }
+ },
+ "noStreaming": {
+ "label": "Ingen strømming",
+ "desc": "Kamerabilder vil bare oppdateres én gang i minuttet, og ingen direktestrømming vil finne sted."
+ },
+ "smartStreaming": {
+ "label": "Smart strømming (anbefalt)",
+ "desc": "Smart strømming oppdaterer kamerabilder én gang i minuttet når ingen aktivitet oppdages, for å spare båndbredde og ressurser. Når aktivitet oppdages, byttes bildet sømløst til direktestrøm."
+ }
+ },
+ "label": "Strømmemetode"
+ },
+ "compatibilityMode": {
+ "label": "Kompatibilitetsmodus",
+ "desc": "Aktiver dette alternativet kun hvis kameraets direktestrøm viser fargeforstyrrelser og har en diagonal linje på høyre side av bildet."
+ },
+ "label": "Innstillinger for kamerastrømming",
+ "title": "{{cameraName}} strømmeinnstillinger",
+ "desc": "Endre direktestrømmingsalternativene for denne kameragruppens dashbord. Disse innstillingene er spesifikke for enhet/nettleser.",
+ "audioIsAvailable": "Lyd er tilgjengelig for denne strømmen",
+ "audioIsUnavailable": "Lyd er ikke tilgjengelig for denne strømmen",
+ "audio": {
+ "tips": {
+ "title": "Lyd må komme fra kameraet ditt og konfigureres i go2rtc for denne strømmen.",
+ "document": "Les dokumentasjonen "
+ }
+ }
+ }
+ },
+ "add": "Legg til kameragruppe",
+ "edit": "Rediger kameragruppe",
+ "delete": {
+ "label": "Slett kameragruppe",
+ "confirm": {
+ "title": "Bekreft sletting",
+ "desc": "Er du sikker på at du vil slette kameragruppen {{name}}?"
+ }
+ },
+ "cameras": {
+ "label": "Kameraer",
+ "desc": "Velg kameraer for denne gruppen."
+ },
+ "icon": "Ikon",
+ "success": "Kameragruppen ({{name}}) er lagret."
+ },
+ "debug": {
+ "options": {
+ "label": "Innstillinger",
+ "title": "Alternativer",
+ "showOptions": "Vis alternativer",
+ "hideOptions": "Skjul alternativer"
+ },
+ "boundingBox": "Avgrensningsboks",
+ "timestamp": "Tidsstempel",
+ "zones": "Soner",
+ "mask": "Maske",
+ "motion": "Bevegelse",
+ "regions": "Regioner"
+ }
+}
diff --git a/web/public/locales/nb-NO/components/dialog.json b/web/public/locales/nb-NO/components/dialog.json
new file mode 100644
index 000000000..a4efe8c6f
--- /dev/null
+++ b/web/public/locales/nb-NO/components/dialog.json
@@ -0,0 +1,113 @@
+{
+ "restart": {
+ "title": "Er du sikker på at du vil starte Frigate på nytt?",
+ "button": "Start på nytt",
+ "restarting": {
+ "title": "Frigate starter på nytt",
+ "button": "Tving omlasting nå",
+ "content": "Denne siden vil lastes inn på nytt om {{countdown}} sekunder."
+ }
+ },
+ "explore": {
+ "plus": {
+ "submitToPlus": {
+ "label": "Send til Frigate+",
+ "desc": "Objekter på steder du vil unngå er ikke falske positiver. Å sende dem som falske positiver vil forvirre modellen."
+ },
+ "review": {
+ "true": {
+ "label": "Bekreft denne merkelappen for Frigate Plus",
+ "true_one": "Dette er en {{label}}",
+ "true_other": "Dette er en {{label}}"
+ },
+ "state": {
+ "submitted": "Sendt inn"
+ },
+ "false": {
+ "label": "Ikke bekreft denne merkelappen for Frigate Plus",
+ "false_one": "Dette er ikke en {{label}}",
+ "false_other": "Dette er ikke en {{label}}"
+ }
+ }
+ },
+ "video": {
+ "viewInHistory": "Vis i historikk"
+ }
+ },
+ "export": {
+ "time": {
+ "lastHour_one": "Siste time",
+ "lastHour_other": "Siste {{count}} timer",
+ "custom": "Tilpasset",
+ "start": {
+ "title": "Starttid",
+ "label": "Velg starttid"
+ },
+ "fromTimeline": "Velg fra tidslinje",
+ "end": {
+ "title": "Sluttid",
+ "label": "Velg sluttid"
+ }
+ },
+ "toast": {
+ "success": "Eksporten startet. Se filen i /exports-mappen.",
+ "error": {
+ "failed": "Klarte ikke å starte eksport: {{error}}",
+ "noVaildTimeSelected": "Ingen gyldig tidsperiode valgt",
+ "endTimeMustAfterStartTime": "Sluttid må være etter starttid"
+ }
+ },
+ "fromTimeline": {
+ "previewExport": "Forhåndsvis eksport",
+ "saveExport": "Lagre eksport"
+ },
+ "name": {
+ "placeholder": "Gi eksporten et navn"
+ },
+ "select": "Velg",
+ "export": "Eksporter",
+ "selectOrExport": "Velg eller eksporter"
+ },
+ "streaming": {
+ "label": "Strøm",
+ "restreaming": {
+ "disabled": "Restrømming er ikke aktivert for dette kameraet.",
+ "desc": {
+ "readTheDocumentation": "Les dokumentasjonen ",
+ "title": "Konfigurer go2rtc for flere direktestrømmingsalternativer og lyd for dette kameraet."
+ }
+ },
+ "showStats": {
+ "label": "Vis strømmestatistikk",
+ "desc": "Aktiver dette alternativet for å vise strømmestatistikk som et overlegg på kamerabildet."
+ },
+ "debugView": "Feilsøkingsvisning"
+ },
+ "search": {
+ "saveSearch": {
+ "button": {
+ "save": {
+ "label": "Lagre dette søket"
+ }
+ },
+ "label": "Lagre søk",
+ "desc": "Skriv inn et navn for dette lagrede søket.",
+ "placeholder": "Skriv inn et navn for søket",
+ "overwrite": "{{searchName}} finnes allerede. Lagring vil overskrive eksisterende verdi.",
+ "success": "Søk ({{searchName}}) er lagret."
+ }
+ },
+ "recording": {
+ "confirmDelete": {
+ "title": "Bekreft sletting",
+ "desc": {
+ "selected": "Er du sikker på at du vil slette alle opptak knyttet til dette vurderingselementet?
Hold inne Shift-tasten for å hoppe over denne dialogen i fremtiden."
+ }
+ },
+ "button": {
+ "export": "Eksportér",
+ "markAsReviewed": "Merk som vurdert",
+ "deleteNow": "Slett nå"
+ }
+ }
+}
diff --git a/web/public/locales/nb-NO/components/filter.json b/web/public/locales/nb-NO/components/filter.json
new file mode 100644
index 000000000..ab8907438
--- /dev/null
+++ b/web/public/locales/nb-NO/components/filter.json
@@ -0,0 +1,124 @@
+{
+ "filter": "Filter",
+ "labels": {
+ "label": "Merkelapper",
+ "all": {
+ "title": "Alle merkelapper",
+ "short": "Merkelapper"
+ },
+ "count": "{{count}} merkelapper"
+ },
+ "features": {
+ "hasVideoClip": "Har et videoklipp",
+ "submittedToFrigatePlus": {
+ "label": "Sendt til Frigate+",
+ "tips": "Du må først filtrere på sporede objekter som har et øyeblikksbilde.
Sporede objekter uten et øyeblikksbilde kan ikke sendes til Frigate+."
+ },
+ "label": "Funksjoner",
+ "hasSnapshot": "Har et øyeblikksbilde"
+ },
+ "sort": {
+ "label": "Sorter",
+ "dateAsc": "Dato (Stigende)",
+ "dateDesc": "Dato (Synkende)",
+ "scoreAsc": "Objektpoengsum (Stigende)",
+ "scoreDesc": "Objektpoengsum (Synkende)",
+ "speedAsc": "Estimert hastighet (Stigende)",
+ "speedDesc": "Estimert hastighet (Synkende)",
+ "relevance": "Relevans"
+ },
+ "explore": {
+ "date": {
+ "selectDateBy": {
+ "label": "Velg en dato å filtrere etter"
+ }
+ },
+ "settings": {
+ "title": "Innstillinger",
+ "defaultView": {
+ "title": "Standard visning",
+ "desc": "Når ingen filtre er valgt, vis et sammendrag av de nyeste sporede objektene per merkelapp, eller vis et ufiltrert rutenett.",
+ "summary": "Sammendrag",
+ "unfilteredGrid": "Ufiltrert rutenett"
+ },
+ "gridColumns": {
+ "title": "Rutenett kolonner",
+ "desc": "Velg antall kolonner i rutenettvisningen."
+ },
+ "searchSource": {
+ "label": "Søkekilde",
+ "desc": "Velg om du vil søke i bildene eller beskrivelsene av de sporede objektene dine.",
+ "options": {
+ "thumbnailImage": "Miniatyrbilde",
+ "description": "Beskrivelse"
+ }
+ }
+ }
+ },
+ "logSettings": {
+ "label": "Filtrer loggnivå",
+ "filterBySeverity": "Filtrer logger etter alvorlighetsgrad",
+ "loading": {
+ "title": "Laster inn",
+ "desc": "Når loggvinduet rulles til bunnen, strømmes nye logger automatisk etter hvert som de legges til."
+ },
+ "disableLogStreaming": "Deaktiver loggstrømming",
+ "allLogs": "Alle logger"
+ },
+ "trackedObjectDelete": {
+ "title": "Bekreft sletting",
+ "desc": "Sletting av disse {{objectLength}} sporede objektene fjerner øyeblikksbildet, eventuelle lagrede innebygginger og tilhørende objekt livssyklusoppføringer. Opptak av disse sporede objektene i Historikkvisning vil IKKE bli slettet.
Er du sikker på at du vil fortsette?
Hold Shift-tasten for å unngå denne dialogboksen i fremtiden.",
+ "toast": {
+ "success": "Sporede objekter ble slettet.",
+ "error": "Kunne ikke slette sporede objekter: {{errorMessage}}"
+ }
+ },
+ "zoneMask": {
+ "filterBy": "Filtrer etter sonemaske"
+ },
+ "recognizedLicensePlates": {
+ "noLicensePlatesFound": "Ingen bilskilt funnet.",
+ "selectPlatesFromList": "Velg ett eller flere bilskilt fra listen.",
+ "title": "Gjenkjente bilskilt",
+ "loadFailed": "Kunne ikke laste inn gjenkjente bilskilt.",
+ "loading": "Laster inn gjenkjente bilskilt...",
+ "placeholder": "Skriv for å søke etter bilskilt..."
+ },
+ "dates": {
+ "all": {
+ "title": "Alle datoer",
+ "short": "Datoer"
+ }
+ },
+ "more": "Flere filtre",
+ "reset": {
+ "label": "Nullstill filtre til standardverdier"
+ },
+ "timeRange": "Tidsrom",
+ "subLabels": {
+ "label": "Under-Merkelapper",
+ "all": "Alle under-Merkelapper"
+ },
+ "score": "Poengsum",
+ "estimatedSpeed": "Estimert hastighet ({{unit}})",
+ "cameras": {
+ "all": {
+ "title": "Alle kameraer",
+ "short": "Kameraer"
+ },
+ "label": "Kamerafilter"
+ },
+ "review": {
+ "showReviewed": "Vis vurdert"
+ },
+ "motion": {
+ "showMotionOnly": "Vis kun bevegelse"
+ },
+ "zones": {
+ "label": "Soner",
+ "all": {
+ "title": "Alle soner",
+ "short": "Soner"
+ }
+ }
+}
diff --git a/web/public/locales/nb-NO/components/player.json b/web/public/locales/nb-NO/components/player.json
new file mode 100644
index 000000000..1e6836e6f
--- /dev/null
+++ b/web/public/locales/nb-NO/components/player.json
@@ -0,0 +1,51 @@
+{
+ "noRecordingsFoundForThisTime": "Ingen opptak funnet for dette tidspunktet",
+ "stats": {
+ "streamType": {
+ "short": "Type",
+ "title": "Strømmetype:"
+ },
+ "droppedFrames": {
+ "short": {
+ "title": "Tapt",
+ "value": "{{droppedFrames}} bilder"
+ },
+ "title": "Tapte bilder:"
+ },
+ "bandwidth": {
+ "title": "Båndbredde:",
+ "short": "Båndbredde"
+ },
+ "latency": {
+ "title": "Forsinkelse:",
+ "value": "{{seconds}} sekunder",
+ "short": {
+ "title": "Forsinkelse",
+ "value": "{{seconds}} sek"
+ }
+ },
+ "totalFrames": "Totalt antall bilder:",
+ "decodedFrames": "Dekodede bilder:",
+ "droppedFrameRate": "Tapte bilder per sekund:"
+ },
+ "noPreviewFound": "Ingen forhåndsvisning funnet",
+ "noPreviewFoundFor": "Ingen forhåndsvisning funnet for {{cameraName}}",
+ "submitFrigatePlus": {
+ "title": "Send dette bildet til Frigate+?",
+ "submit": "Send"
+ },
+ "livePlayerRequiredIOSVersion": "iOS 17.1 eller høyere kreves for denne typen direkte-strømming.",
+ "streamOffline": {
+ "title": "Strømmen er frakoblet",
+ "desc": "Ingen bilder er mottatt på {{cameraName}} detekt
strømmen, sjekk feilloggene"
+ },
+ "cameraDisabled": "Kameraet er deaktivert",
+ "toast": {
+ "success": {
+ "submittedFrigatePlus": "Bildet ble sendt til Frigate+"
+ },
+ "error": {
+ "submitFrigatePlusFailed": "Kunne ikke sende bildet til Frigate+"
+ }
+ }
+}
diff --git a/web/public/locales/nb-NO/views/explore.json b/web/public/locales/nb-NO/views/explore.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/nb-NO/views/explore.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/nb-NO/views/exports.json b/web/public/locales/nb-NO/views/exports.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/nb-NO/views/exports.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/nb-NO/views/faceLibrary.json b/web/public/locales/nb-NO/views/faceLibrary.json
new file mode 100644
index 000000000..4bbe3617e
--- /dev/null
+++ b/web/public/locales/nb-NO/views/faceLibrary.json
@@ -0,0 +1,3 @@
+{
+ "selectItem": "Velg {{item}}"
+}
diff --git a/web/public/locales/nb-NO/views/live.json b/web/public/locales/nb-NO/views/live.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/nb-NO/views/live.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/nb-NO/views/search.json b/web/public/locales/nb-NO/views/search.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/nb-NO/views/search.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/nb-NO/views/settings.json b/web/public/locales/nb-NO/views/settings.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/nb-NO/views/settings.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/nb-NO/views/system.json b/web/public/locales/nb-NO/views/system.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/nb-NO/views/system.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/nb_NO/audio.json b/web/public/locales/nb_NO/audio.json
new file mode 100644
index 000000000..37318c64d
--- /dev/null
+++ b/web/public/locales/nb_NO/audio.json
@@ -0,0 +1,429 @@
+{
+ "bird": "Fugl",
+ "door": "Dør",
+ "sink": "Vask",
+ "blender": "Blender",
+ "bicycle": "Sykkel",
+ "motorcycle": "Motorsykkel",
+ "car": "Bil",
+ "bus": "Buss",
+ "train": "Tog",
+ "boat": "Båt",
+ "cat": "Katt",
+ "dog": "Hund",
+ "horse": "Hest",
+ "sheep": "Sau",
+ "skateboard": "Skateboard",
+ "mouse": "Mus",
+ "keyboard": "Tastatur",
+ "clock": "Klokke",
+ "scissors": "Saks",
+ "hair_dryer": "Hårføner",
+ "toothbrush": "Tannbørste",
+ "vehicle": "Kjøretøy",
+ "animal": "Dyr",
+ "bark": "Bjeff",
+ "goat": "Geit",
+ "groan": "Stønn",
+ "throat_clearing": "Kremting",
+ "sneeze": "Nysing",
+ "applause": "Applaus",
+ "chatter": "Skravling",
+ "crowd": "Folkemengde",
+ "bow_wow": "Voff-voff",
+ "livestock": "Husdyr",
+ "clip_clop": "Klipp-klopp",
+ "cluck": "Kakling",
+ "cock_a_doodle_doo": "Kykeliky",
+ "wild_animals": "Ville dyr",
+ "roaring_cats": "Brølende kattedyr",
+ "dogs": "Hunder",
+ "whale_vocalization": "Hval-vokalisering",
+ "strum": "Strumming",
+ "gong": "Gong",
+ "tuning_fork": "Stemmegaffel",
+ "opera": "Opera",
+ "waterfall": "Foss",
+ "motor_vehicle": "Motorvogn",
+ "emergency_vehicle": "Utrykningskjøretøy",
+ "police_car": "Politibil",
+ "rail_transport": "Jernbanetransport",
+ "fixed-wing_aircraft": "Fly med faste vinger",
+ "engine": "Motor",
+ "bathtub": "Badekar",
+ "toilet_flush": "Toalettskylling",
+ "coin": "Mynt",
+ "mechanisms": "Mekanismer",
+ "field_recording": "Feltinnspilling",
+ "speech": "Tale",
+ "babbling": "Babling",
+ "yell": "Rop",
+ "bellow": "Brøl",
+ "whoop": "Jubelrop",
+ "whispering": "Hvisking",
+ "laughter": "Latter",
+ "snicker": "Fnising",
+ "crying": "Gråt",
+ "sigh": "Sukk",
+ "singing": "Sang",
+ "choir": "Kor",
+ "yodeling": "Jodling",
+ "chant": "Sangrop",
+ "mantra": "Mantra",
+ "child_singing": "Barnesang",
+ "synthetic_singing": "Syntetisk sang",
+ "rapping": "Rapping",
+ "humming": "Nynning",
+ "grunt": "Grynt",
+ "whistling": "Plystring",
+ "breathing": "Pusting",
+ "wheeze": "Hvesing",
+ "snoring": "Snorking",
+ "gasp": "Gisp",
+ "pant": "Pesing",
+ "snort": "Snøfting",
+ "cough": "Hoste",
+ "sniff": "Snufs",
+ "run": "Løping",
+ "shuffle": "Sleping (av føtter)",
+ "footsteps": "Fottrinn",
+ "chewing": "Tygging",
+ "biting": "Biting",
+ "gargling": "Gurgling",
+ "stomach_rumble": "Mageknurr",
+ "burping": "Raping",
+ "hiccup": "Hikke",
+ "fart": "Promp",
+ "hands": "Hender",
+ "finger_snapping": "Fingerknipsing",
+ "clapping": "Applaus",
+ "heartbeat": "Hjerteslag",
+ "heart_murmur": "Hjertelyd (unormal)",
+ "cheering": "Jubel",
+ "children_playing": "Barn som leker",
+ "pets": "Kjæledyr",
+ "yip": "Klynk",
+ "howl": "Uling",
+ "growling": "Knurring",
+ "whimper_dog": "Klynking (hund)",
+ "purr": "Malelyd",
+ "meow": "Mjauing",
+ "hiss": "Fres",
+ "caterwaul": "Kattemjau",
+ "neigh": "Vrinsk",
+ "cattle": "Storfe",
+ "moo": "Rauting",
+ "cowbell": "Kubjelle",
+ "pig": "Gris",
+ "oink": "Nøff",
+ "bleat": "Breking",
+ "fowl": "Fjærfe",
+ "chicken": "Kylling",
+ "turkey": "Kalkun",
+ "gobble": "Kalkunlyd",
+ "duck": "And",
+ "quack": "Kvakking",
+ "goose": "Gås",
+ "honk": "Gåselyd",
+ "roar": "Brøl",
+ "chirp": "Kvitre",
+ "squawk": "Skvatring",
+ "pigeon": "Due",
+ "coo": "Kurre",
+ "crow": "Kråke",
+ "caw": "Krah",
+ "owl": "Ugle",
+ "hoot": "Uglelyd",
+ "flapping_wings": "Vingeslag",
+ "rats": "Rotter",
+ "patter": "Tripping",
+ "insect": "Insekt",
+ "cricket": "Gresshoppe",
+ "mosquito": "Mygg",
+ "fly": "Flue",
+ "buzz": "Summing",
+ "frog": "Frosk",
+ "croak": "Kvekking",
+ "snake": "Slange",
+ "rattle": "Ranglelyd",
+ "music": "Musikk",
+ "musical_instrument": "Musikkinstrument",
+ "plucked_string_instrument": "Klimpreinstrument",
+ "guitar": "Gitar",
+ "electric_guitar": "Elektrisk gitar",
+ "bass_guitar": "Bassgitar",
+ "acoustic_guitar": "Akustisk gitar",
+ "steel_guitar": "Steelgitar",
+ "tapping": "Tapping",
+ "banjo": "Banjo",
+ "sitar": "Sitar",
+ "mandolin": "Mandolin",
+ "zither": "Siter",
+ "ukulele": "Ukulele",
+ "piano": "Piano",
+ "electric_piano": "Elektrisk piano",
+ "organ": "Orgel",
+ "electronic_organ": "Elektronisk orgel",
+ "hammond_organ": "Hammondorgel",
+ "synthesizer": "Synthesizer",
+ "sampler": "Sampler",
+ "harpsichord": "Cembalo",
+ "percussion": "Perkusjon",
+ "drum_kit": "Trommesett",
+ "drum_machine": "Trommemaskin",
+ "drum": "Tromme",
+ "snare_drum": "Skarptromme",
+ "rimshot": "Slag på trommekanten",
+ "drum_roll": "Trommevirvel",
+ "bass_drum": "Basstromme",
+ "timpani": "Pauker",
+ "tabla": "Tabla",
+ "cymbal": "Symbal",
+ "hi_hat": "Hi-hat",
+ "wood_block": "Treblokk",
+ "tambourine": "Tamburin",
+ "maraca": "Maracas",
+ "tubular_bells": "Rørklokker",
+ "mallet_percussion": "Slagverk med køller",
+ "marimba": "Marimba",
+ "glockenspiel": "Glockenspiel",
+ "vibraphone": "Vibrafon",
+ "steelpan": "Steelpan",
+ "orchestra": "Orkester",
+ "brass_instrument": "Messingblåseinstrument",
+ "french_horn": "Valthorn",
+ "trumpet": "Trompet",
+ "trombone": "Trombone",
+ "bowed_string_instrument": "Strykeinstrument",
+ "string_section": "Strykere",
+ "violin": "Fiolin",
+ "pizzicato": "Pizzicato",
+ "cello": "Cello",
+ "double_bass": "Kontrabass",
+ "wind_instrument": "Treblåseinstrument",
+ "flute": "Fløyte",
+ "saxophone": "Saksofon",
+ "clarinet": "Klarinett",
+ "harp": "Harpe",
+ "bell": "Klokke",
+ "church_bell": "Kirkeklokke",
+ "jingle_bell": "Bjelle",
+ "bicycle_bell": "Sykkelbjelle",
+ "chime": "Klokkespill",
+ "wind_chime": "Vindklokke",
+ "harmonica": "Munnspill",
+ "accordion": "Akkordeon",
+ "bagpipes": "Sekkepipe",
+ "didgeridoo": "Didgeridoo",
+ "theremin": "Theremin",
+ "singing_bowl": "Syngeskål",
+ "scratching": "Skraping",
+ "pop_music": "Popmusikk",
+ "hip_hop_music": "Hip-hop musikk",
+ "beatboxing": "Beatboxing",
+ "rock_music": "Rockemusikk",
+ "heavy_metal": "Heavy metal",
+ "punk_rock": "Punkrock",
+ "grunge": "Grunge",
+ "progressive_rock": "Progressiv rock",
+ "rock_and_roll": "Rock and roll",
+ "psychedelic_rock": "Psykedelisk rock",
+ "rhythm_and_blues": "Rhythm and blues",
+ "soul_music": "Soulmusikk",
+ "reggae": "Reggae",
+ "country": "Country",
+ "swing_music": "Swingmusikk",
+ "bluegrass": "Bluegrass",
+ "funk": "Funk",
+ "folk_music": "Folkemusikk",
+ "middle_eastern_music": "Midtøsten-musikk",
+ "jazz": "Jazz",
+ "disco": "Disco",
+ "classical_music": "Klassisk musikk",
+ "electronic_music": "Elektronisk musikk",
+ "house_music": "House-musikk",
+ "techno": "Techno",
+ "dubstep": "Dubstep",
+ "drum_and_bass": "Drum and bass",
+ "electronica": "Electronica",
+ "electronic_dance_music": "Elektronisk dansemusikk",
+ "trance_music": "Trancemusikk",
+ "ambient_music": "Ambient musikk",
+ "music_of_latin_america": "Latinamerikansk musikk",
+ "salsa_music": "Salsamusikk",
+ "flamenco": "Flamenco",
+ "blues": "Blues",
+ "music_for_children": "Musikk for barn",
+ "new-age_music": "New age-musikk",
+ "vocal_music": "Vokalmusikk",
+ "a_capella": "A cappella",
+ "music_of_africa": "Afrikansk musikk",
+ "afrobeat": "Afrobeat",
+ "christian_music": "Kristelig musikk",
+ "gospel_music": "Gospelmusikk",
+ "music_of_asia": "Asiatisk musikk",
+ "carnatic_music": "Karnatisk musikk",
+ "music_of_bollywood": "Bollywood-musikk",
+ "ska": "Ska",
+ "traditional_music": "Tradisjonell musikk",
+ "independent_music": "Indie-musikk",
+ "song": "Sang",
+ "background_music": "Bakgrunnsmusikk",
+ "theme_music": "Temamusikk",
+ "jingle": "Jingle",
+ "soundtrack_music": "Filmmusikk",
+ "lullaby": "Vuggevise",
+ "video_game_music": "Videospillmusikk",
+ "christmas_music": "Julemusikk",
+ "dance_music": "Dansemusikk",
+ "wedding_music": "Bryllupsmusikk",
+ "happy_music": "Glad musikk",
+ "sad_music": "Trist musikk",
+ "tender_music": "Vakker musikk",
+ "exciting_music": "Spennende musikk",
+ "angry_music": "Sint musikk",
+ "scary_music": "Skummel musikk",
+ "wind": "Vind",
+ "rustling_leaves": "Raslende blader",
+ "wind_noise": "Vindstøy",
+ "thunderstorm": "Tordenvær",
+ "thunder": "Torden",
+ "water": "Vann",
+ "rain": "Regn",
+ "raindrop": "Regndråpe",
+ "rain_on_surface": "Regn på overflate",
+ "stream": "Bekkeleie",
+ "ocean": "Hav",
+ "waves": "Bølger",
+ "steam": "Damp",
+ "gurgling": "Gurgling",
+ "fire": "Brann",
+ "crackle": "Knakking",
+ "sailboat": "Seilbåt",
+ "rowboat": "Robåt",
+ "motorboat": "Motorbåt",
+ "ship": "Skip",
+ "toot": "Tuting",
+ "car_alarm": "Bilalarm",
+ "power_windows": "Elektriske vinduer",
+ "skidding": "Skrens",
+ "tire_squeal": "Hvinende dekk",
+ "car_passing_by": "Bil som kjører forbi",
+ "race_car": "Racerbil",
+ "truck": "Lastebil",
+ "air_brake": "Luftbrems",
+ "air_horn": "Lufthorn",
+ "reversing_beeps": "Ryggesignal",
+ "ice_cream_truck": "Iskrembil",
+ "ambulance": "Ambulanse",
+ "fire_engine": "Brannbil",
+ "aircraft_engine": "Flymotor",
+ "traffic_noise": "Trafikkstøy",
+ "train_whistle": "Togfløyte",
+ "train_horn": "Toghorn",
+ "railroad_car": "Jernbanevogn",
+ "train_wheels_squealing": "Hvinende togskinner",
+ "subway": "T-bane",
+ "aircraft": "Fly",
+ "jet_engine": "Jetmotor",
+ "propeller": "Propell",
+ "helicopter": "Helikopter",
+ "light_engine": "Lett motor",
+ "dental_drill's_drill": "Tannlegebor",
+ "lawn_mower": "Gressklipper",
+ "chainsaw": "Motorsag",
+ "medium_engine": "Middels tung motor",
+ "heavy_engine": "Tung motor",
+ "engine_knocking": "Motorbanking",
+ "engine_starting": "Motorstart",
+ "idling": "Tomgang",
+ "accelerating": "Akselerasjon",
+ "doorbell": "Dørklokke",
+ "ding-dong": "Ding-dong",
+ "sliding_door": "Skyvedør",
+ "slam": "Smell",
+ "knock": "Bank",
+ "tap": "Tapp",
+ "squeak": "Knirk",
+ "cupboard_open_or_close": "Skapdør som åpnes eller lukkes",
+ "drawer_open_or_close": "Skuff som åpnes eller lukkes",
+ "dishes": "Oppvask",
+ "cutlery": "Bestikk",
+ "chopping": "Hugging",
+ "frying": "Steking",
+ "microwave_oven": "Mikrobølgeovn",
+ "water_tap": "Vannkran",
+ "electric_toothbrush": "Elektrisk tannbørste",
+ "vacuum_cleaner": "Støvsuger",
+ "zipper": "Glidelås",
+ "keys_jangling": "Klingende nøkler",
+ "electric_shaver": "Elektrisk barbermaskin",
+ "shuffling_cards": "Kortstokk som stokkes",
+ "typing": "Skriving (på tastatur)",
+ "typewriter": "Skrivemaskin",
+ "computer_keyboard": "Datatastatur",
+ "writing": "Skriving",
+ "alarm": "Alarm",
+ "telephone": "Telefon",
+ "telephone_bell_ringing": "Telefon som ringer",
+ "ringtone": "Ringetone",
+ "telephone_dialing": "Telefon som slås",
+ "dial_tone": "Summetone",
+ "busy_signal": "Opptattsignal",
+ "alarm_clock": "Vekkerklokke",
+ "siren": "Sirene",
+ "civil_defense_siren": "Luftsirene",
+ "buzzer": "Summer",
+ "smoke_detector": "Røykvarsler",
+ "fire_alarm": "Brannalarm",
+ "foghorn": "Tåkelur",
+ "whistle": "Fløyte",
+ "steam_whistle": "Dampfløyte",
+ "ratchet": "Skralle",
+ "tick": "Tikk",
+ "tick-tock": "Tikk-takk",
+ "gears": "Tannhjul",
+ "pulleys": "Trinser",
+ "sewing_machine": "Symaskin",
+ "mechanical_fan": "Mekanisk vifte",
+ "air_conditioning": "Klimaanlegg",
+ "cash_register": "Kasseapparat",
+ "printer": "Skriver",
+ "single-lens_reflex_camera": "Speilreflekskamera",
+ "camera": "Kamera",
+ "tools": "Verktøy",
+ "hammer": "Hammer",
+ "jackhammer": "Trykkluftbor",
+ "sawing": "Saging",
+ "filing": "Filing",
+ "sanding": "Pussing",
+ "power_tool": "Elektroverktøy",
+ "drill": "Boremaskin",
+ "explosion": "Eksplosjon",
+ "gunshot": "Skudd",
+ "machine_gun": "Maskingevær",
+ "fusillade": "Salver",
+ "artillery_fire": "Artilleriild",
+ "cap_gun": "Leketøyspistol",
+ "fireworks": "Fyrverkeri",
+ "firecracker": "Kinaputt",
+ "burst": "Spreng",
+ "eruption": "Utslipp",
+ "boom": "Drønn",
+ "wood": "Tre",
+ "chop": "Hakk",
+ "splinter": "Splint",
+ "crack": "Sprekk",
+ "glass": "Glass",
+ "chink": "Klirr",
+ "shatter": "Knuse",
+ "silence": "Stillhet",
+ "sound_effect": "Lydeffekt",
+ "environmental_noise": "Miljøstøy",
+ "static": "Statisk støy",
+ "white_noise": "Hvit støy",
+ "pink_noise": "Rosa støy",
+ "television": "Fjernsyn",
+ "radio": "Radio",
+ "scream": "Skrik"
+}
diff --git a/web/public/locales/nb_NO/components/auth.json b/web/public/locales/nb_NO/components/auth.json
new file mode 100644
index 000000000..8923fe295
--- /dev/null
+++ b/web/public/locales/nb_NO/components/auth.json
@@ -0,0 +1,15 @@
+{
+ "form": {
+ "user": "Brukernavn",
+ "password": "Passord",
+ "login": "Logg inn",
+ "errors": {
+ "usernameRequired": "Brukernavn er påkrevd",
+ "passwordRequired": "Passord er påkrevd",
+ "rateLimit": "Grense for antall forsøk overskredet. Prøv igjen senere.",
+ "loginFailed": "Innlogging mislyktes",
+ "unknownError": "Ukjent feil. Sjekk loggene.",
+ "webUnknownError": "Ukjent feil. Sjekk konsoll-loggene."
+ }
+ }
+}
diff --git a/web/public/locales/nb_NO/components/icons.json b/web/public/locales/nb_NO/components/icons.json
new file mode 100644
index 000000000..9f6fdf9b7
--- /dev/null
+++ b/web/public/locales/nb_NO/components/icons.json
@@ -0,0 +1,8 @@
+{
+ "iconPicker": {
+ "selectIcon": "Velg et ikon",
+ "search": {
+ "placeholder": "Søk etter et ikon..."
+ }
+ }
+}
diff --git a/web/public/locales/nb_NO/components/input.json b/web/public/locales/nb_NO/components/input.json
new file mode 100644
index 000000000..8e9b319af
--- /dev/null
+++ b/web/public/locales/nb_NO/components/input.json
@@ -0,0 +1,10 @@
+{
+ "button": {
+ "downloadVideo": {
+ "label": "Last ned video",
+ "toast": {
+ "success": "Videoen for vurderingsobjektet ditt har startet nedlasting."
+ }
+ }
+ }
+}
diff --git a/web/public/locales/nb_NO/objects.json b/web/public/locales/nb_NO/objects.json
new file mode 100644
index 000000000..7b1e3cedc
--- /dev/null
+++ b/web/public/locales/nb_NO/objects.json
@@ -0,0 +1,120 @@
+{
+ "motorcycle": "Motorsykkel",
+ "airplane": "Fly",
+ "bus": "Buss",
+ "train": "Tog",
+ "boat": "Båt",
+ "traffic_light": "Trafikklys",
+ "wine_glass": "Vinglass",
+ "cup": "Kopp",
+ "chair": "Stol",
+ "couch": "Sofa",
+ "potted_plant": "Potteplante",
+ "bed": "Seng",
+ "gls": "GLS",
+ "person": "Person",
+ "bicycle": "Sykkel",
+ "car": "Bil",
+ "fire_hydrant": "Brannhydrant",
+ "street_sign": "Gateskilt",
+ "stop_sign": "Stoppskilt",
+ "parking_meter": "Parkeringsautomat",
+ "bench": "Benk",
+ "bird": "Fugl",
+ "cat": "Katt",
+ "dog": "Hund",
+ "horse": "Hest",
+ "sheep": "Sau",
+ "cow": "Ku",
+ "elephant": "Elefant",
+ "bear": "Bjørn",
+ "zebra": "Sebra",
+ "giraffe": "Giraff",
+ "hat": "Hatt",
+ "backpack": "Ryggsekk",
+ "umbrella": "Paraply",
+ "shoe": "Sko",
+ "eye_glasses": "Briller",
+ "handbag": "Håndveske",
+ "tie": "Slips",
+ "suitcase": "Koffert",
+ "frisbee": "Frisbee",
+ "skis": "Ski",
+ "snowboard": "Snøbrett",
+ "sports_ball": "Ball",
+ "kite": "Drage",
+ "baseball_bat": "Baseballkølle",
+ "baseball_glove": "Baseballhanske",
+ "skateboard": "Skateboard",
+ "surfboard": "Surfebrett",
+ "tennis_racket": "Tennisracket",
+ "bottle": "Flaske",
+ "plate": "Tallerken",
+ "fork": "Gaffel",
+ "knife": "Kniv",
+ "spoon": "Skje",
+ "bowl": "Bolle",
+ "banana": "Banan",
+ "apple": "Eple",
+ "broccoli": "Brokkoli",
+ "sandwich": "Sandwich",
+ "orange": "Appelsin",
+ "carrot": "Gulrot",
+ "hot_dog": "Pølse i brød",
+ "pizza": "Pizza",
+ "donut": "Donut",
+ "cake": "Kake",
+ "mirror": "Speil",
+ "dining_table": "Spisebord",
+ "window": "Vindu",
+ "desk": "Skrivebord",
+ "toilet": "Toalett",
+ "door": "Dør",
+ "tv": "TV",
+ "laptop": "Bærbar datamaskin",
+ "mouse": "Mus",
+ "remote": "Fjernkontroll",
+ "keyboard": "Tastatur",
+ "cell_phone": "Mobiltelefon",
+ "sink": "Vask",
+ "microwave": "Mikrobølgeovn",
+ "oven": "Ovn",
+ "toaster": "Brødrister",
+ "refrigerator": "Kjøleskap",
+ "blender": "Blender",
+ "book": "Bok",
+ "clock": "Klokke",
+ "vase": "Vase",
+ "scissors": "Saks",
+ "teddy_bear": "Teddybjørn",
+ "hair_dryer": "Hårføner",
+ "toothbrush": "Tannbørste",
+ "hair_brush": "Hårbørste",
+ "vehicle": "Kjøretøy",
+ "squirrel": "Ekorn",
+ "deer": "Hjort",
+ "animal": "Dyr",
+ "bark": "Bjeff",
+ "fox": "Rev",
+ "goat": "Geit",
+ "rabbit": "Kanin",
+ "raccoon": "Vaskebjørn",
+ "robot_lawnmower": "Robotgressklipper",
+ "waste_bin": "Søppelbøtte",
+ "on_demand": "På forespørsel",
+ "face": "Ansikt",
+ "license_plate": "Skiltnummer",
+ "package": "Pakke",
+ "bbq_grill": "Grill",
+ "amazon": "Amazon",
+ "usps": "USPS",
+ "ups": "UPS",
+ "fedex": "FedEx",
+ "dhl": "DHL",
+ "an_post": "An Post",
+ "purolator": "Purolator",
+ "postnl": "PostNL",
+ "nzpost": "NZPost",
+ "postnord": "PostNord",
+ "dpd": "DPD"
+}
diff --git a/web/public/locales/nb_NO/views/configEditor.json b/web/public/locales/nb_NO/views/configEditor.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/nb_NO/views/configEditor.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/nb_NO/views/events.json b/web/public/locales/nb_NO/views/events.json
new file mode 100644
index 000000000..04626bef0
--- /dev/null
+++ b/web/public/locales/nb_NO/views/events.json
@@ -0,0 +1,3 @@
+{
+ "camera": "Kamera"
+}
diff --git a/web/public/locales/nb_NO/views/recording.json b/web/public/locales/nb_NO/views/recording.json
new file mode 100644
index 000000000..db6e4162a
--- /dev/null
+++ b/web/public/locales/nb_NO/views/recording.json
@@ -0,0 +1,3 @@
+{
+ "filter": "Filter"
+}