diff --git a/packages/app/src/context/language.tsx b/packages/app/src/context/language.tsx index e34e399d839c..1e3c85719afb 100644 --- a/packages/app/src/context/language.tsx +++ b/packages/app/src/context/language.tsx @@ -15,6 +15,7 @@ import { dict as ja } from "@/i18n/ja" import { dict as pl } from "@/i18n/pl" import { dict as ru } from "@/i18n/ru" import { dict as ar } from "@/i18n/ar" +import { dict as no } from "@/i18n/no" import { dict as uiEn } from "@opencode-ai/ui/i18n/en" import { dict as uiZh } from "@opencode-ai/ui/i18n/zh" import { dict as uiZht } from "@opencode-ai/ui/i18n/zht" @@ -27,13 +28,14 @@ import { dict as uiJa } from "@opencode-ai/ui/i18n/ja" import { dict as uiPl } from "@opencode-ai/ui/i18n/pl" import { dict as uiRu } from "@opencode-ai/ui/i18n/ru" import { dict as uiAr } from "@opencode-ai/ui/i18n/ar" +import { dict as uiNo } from "@opencode-ai/ui/i18n/no" -export type Locale = "en" | "zh" | "zht" | "ko" | "de" | "es" | "fr" | "da" | "ja" | "pl" | "ru" | "ar" +export type Locale = "en" | "zh" | "zht" | "ko" | "de" | "es" | "fr" | "da" | "ja" | "pl" | "ru" | "ar" | "no" type RawDictionary = typeof en & typeof uiEn type Dictionary = i18n.Flatten -const LOCALES: readonly Locale[] = ["en", "zh", "zht", "ko", "de", "es", "fr", "da", "ja", "pl", "ru", "ar"] +const LOCALES: readonly Locale[] = ["en", "zh", "zht", "ko", "de", "es", "fr", "da", "ja", "pl", "ru", "ar", "no"] function detectLocale(): Locale { if (typeof navigator !== "object") return "en" @@ -54,6 +56,7 @@ function detectLocale(): Locale { if (language.toLowerCase().startsWith("pl")) return "pl" if (language.toLowerCase().startsWith("ru")) return "ru" if (language.toLowerCase().startsWith("ar")) return "ar" + if (language.toLowerCase().startsWith("no") || language.toLowerCase().startsWith("nb") || language.toLowerCase().startsWith("nn")) return "no" } return "en" @@ -81,6 +84,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont if (store.locale === "pl") return "pl" if (store.locale === "ru") return "ru" if (store.locale === "ar") return "ar" + if (store.locale === "no") return "no" return "en" }) @@ -103,6 +107,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont if (locale() === "pl") return { ...base, ...i18n.flatten({ ...pl, ...uiPl }) } if (locale() === "ru") return { ...base, ...i18n.flatten({ ...ru, ...uiRu }) } if (locale() === "ar") return { ...base, ...i18n.flatten({ ...ar, ...uiAr }) } + if (locale() === "no") return { ...base, ...i18n.flatten({ ...no, ...uiNo }) } return { ...base, ...i18n.flatten({ ...ko, ...uiKo }) } }) @@ -121,6 +126,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont pl: "language.pl", ru: "language.ru", ar: "language.ar", + no: "language.no", } const label = (value: Locale) => t(labelKey[value]) @@ -141,4 +147,4 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont }, } }, -}) +}) \ No newline at end of file diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index 627e85a69ad8..86433f16b163 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -304,6 +304,7 @@ export const dict = { "language.ru": "الروسية", "language.pl": "البولندية", "language.ar": "العربية", + "language.no": "النرويجية", "toast.language.title": "لغة", "toast.language.description": "تم التبديل إلى {{language}}", @@ -643,4 +644,4 @@ export const dict = { "workspace.reset.archived.one": "ستتم أرشفة جلسة واحدة.", "workspace.reset.archived.many": "ستتم أرشفة {{count}} جلسات.", "workspace.reset.note": "سيؤدي هذا إلى إعادة تعيين مساحة العمل لتتطابق مع الفرع الافتراضي.", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts index 0021b2cd04fb..8dcfa1ca378a 100644 --- a/packages/app/src/i18n/da.ts +++ b/packages/app/src/i18n/da.ts @@ -287,6 +287,7 @@ export const dict = { "language.ru": "Russisk", "language.pl": "Polsk", "language.ar": "Arabisk", + "language.no": "Norsk", "toast.language.title": "Sprog", "toast.language.description": "Skiftede til {{language}}", @@ -569,4 +570,4 @@ export const dict = { "workspace.reset.archived.one": "1 session vil blive arkiveret.", "workspace.reset.archived.many": "{{count}} sessioner vil blive arkiveret.", "workspace.reset.note": "Dette vil nulstille arbejdsområdet til at matche hovedgrenen.", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index 9a41c5f66ecb..79e47f613dd5 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -292,6 +292,7 @@ export const dict = { "language.ru": "Russisch", "language.pl": "Polnisch", "language.ar": "Arabisch", + "language.no": "Norwegisch", "toast.language.title": "Sprache", "toast.language.description": "Zu {{language}} gewechselt", @@ -578,4 +579,4 @@ export const dict = { "workspace.reset.archived.one": "1 Sitzung wird archiviert.", "workspace.reset.archived.many": "{{count}} Sitzungen werden archiviert.", "workspace.reset.note": "Dadurch wird der Arbeitsbereich auf den Standard-Branch zurückgesetzt.", -} satisfies Partial> +} satisfies Partial> \ No newline at end of file diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 34df35f3d699..f0136250357d 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -304,6 +304,7 @@ export const dict = { "language.ru": "Russian", "language.pl": "Polish", "language.ar": "Arabic", + "language.no": "Norwegian", "toast.language.title": "Language", "toast.language.description": "Switched to {{language}}", @@ -647,4 +648,4 @@ export const dict = { "workspace.reset.archived.one": "1 session will be archived.", "workspace.reset.archived.many": "{{count}} sessions will be archived.", "workspace.reset.note": "This will reset the workspace to match the default branch.", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index 0edf3078ba08..97dd44ffbf13 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -287,6 +287,7 @@ export const dict = { "language.ru": "Ruso", "language.pl": "Polaco", "language.ar": "Árabe", + "language.no": "Noruego", "toast.language.title": "Idioma", "toast.language.description": "Cambiado a {{language}}", @@ -572,4 +573,4 @@ export const dict = { "workspace.reset.archived.one": "1 sesión será archivada.", "workspace.reset.archived.many": "{{count}} sesiones serán archivadas.", "workspace.reset.note": "Esto restablecerá el espacio de trabajo para coincidir con la rama predeterminada.", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index 07e3a00929dc..36af1250175a 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -287,6 +287,7 @@ export const dict = { "language.ru": "Russe", "language.pl": "Polonais", "language.ar": "Arabe", + "language.no": "Norvégien", "toast.language.title": "Langue", "toast.language.description": "Passé à {{language}}", @@ -579,4 +580,4 @@ export const dict = { "workspace.reset.archived.one": "1 session sera archivée.", "workspace.reset.archived.many": "{{count}} sessions seront archivées.", "workspace.reset.note": "Cela réinitialisera l'espace de travail pour correspondre à la branche par défaut.", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index 8f2846328e7e..ef5b62f56159 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -285,6 +285,7 @@ export const dict = { "language.ru": "ロシア語", "language.pl": "ポーランド語", "language.ar": "アラビア語", + "language.no": "ノルウェー語", "toast.language.title": "言語", "toast.language.description": "{{language}}に切り替えました", @@ -566,4 +567,4 @@ export const dict = { "workspace.reset.archived.one": "1つのセッションがアーカイブされます。", "workspace.reset.archived.many": "{{count}}個のセッションがアーカイブされます。", "workspace.reset.note": "これにより、ワークスペースはデフォルトブランチと一致するようにリセットされます。", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index 792c4a5d885f..61c45a5de586 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -289,6 +289,7 @@ export const dict = { "language.ru": "러시아어", "language.pl": "폴란드어", "language.ar": "아랍어", + "language.no": "노르웨이어", "toast.language.title": "언어", "toast.language.description": "{{language}}(으)로 전환됨", @@ -567,4 +568,4 @@ export const dict = { "workspace.reset.archived.one": "1개의 세션이 보관됩니다.", "workspace.reset.archived.many": "{{count}}개의 세션이 보관됩니다.", "workspace.reset.note": "이 작업은 작업 공간을 기본 브랜치와 일치하도록 재설정합니다.", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts new file mode 100644 index 000000000000..63a9055a0472 --- /dev/null +++ b/packages/app/src/i18n/no.ts @@ -0,0 +1,599 @@ +import { dict as en } from "./en" +type Keys = keyof typeof en + +export const dict: Record = { + "command.category.suggested": "Foreslått", + "command.category.view": "Visning", + "command.category.project": "Prosjekt", + "command.category.provider": "Leverandør", + "command.category.server": "Server", + "command.category.session": "Sesjon", + "command.category.theme": "Tema", + "command.category.language": "Språk", + "command.category.file": "Fil", + "command.category.terminal": "Terminal", + "command.category.model": "Modell", + "command.category.mcp": "MCP", + "command.category.agent": "Agent", + "command.category.permissions": "Tillatelser", + "command.category.workspace": "Arbeidsområde", + "command.category.settings": "Innstillinger", + + "theme.scheme.system": "System", + "theme.scheme.light": "Lys", + "theme.scheme.dark": "Mørk", + + "command.sidebar.toggle": "Veksle sidepanel", + "command.project.open": "Åpne prosjekt", + "command.provider.connect": "Koble til leverandør", + "command.server.switch": "Bytt server", + "command.settings.open": "Åpne innstillinger", + "command.session.previous": "Forrige sesjon", + "command.session.next": "Neste sesjon", + "command.session.archive": "Arkiver sesjon", + + "command.palette": "Kommandopalett", + + "command.theme.cycle": "Bytt tema", + "command.theme.set": "Bruk tema: {{theme}}", + "command.theme.scheme.cycle": "Bytt fargevalg", + "command.theme.scheme.set": "Bruk fargevalg: {{scheme}}", + + "command.language.cycle": "Bytt språk", + "command.language.set": "Bruk språk: {{language}}", + + "command.session.new": "Ny sesjon", + "command.file.open": "Åpne fil", + "command.file.open.description": "Søk i filer og kommandoer", + "command.terminal.toggle": "Veksle terminal", + "command.review.toggle": "Veksle gjennomgang", + "command.terminal.new": "Ny terminal", + "command.terminal.new.description": "Opprett en ny terminalfane", + "command.steps.toggle": "Veksle trinn", + "command.steps.toggle.description": "Vis eller skjul trinn for gjeldende melding", + "command.message.previous": "Forrige melding", + "command.message.previous.description": "Gå til forrige brukermelding", + "command.message.next": "Neste melding", + "command.message.next.description": "Gå til neste brukermelding", + "command.model.choose": "Velg modell", + "command.model.choose.description": "Velg en annen modell", + "command.mcp.toggle": "Veksle MCP-er", + "command.mcp.toggle.description": "Veksle MCP-er", + "command.agent.cycle": "Bytt agent", + "command.agent.cycle.description": "Bytt til neste agent", + "command.agent.cycle.reverse": "Bytt agent bakover", + "command.agent.cycle.reverse.description": "Bytt til forrige agent", + "command.model.variant.cycle": "Bytt tenkeinnsats", + "command.model.variant.cycle.description": "Bytt til neste innsatsnivå", + "command.permissions.autoaccept.enable": "Godta endringer automatisk", + "command.permissions.autoaccept.disable": "Slutt å godta endringer automatisk", + "command.session.undo": "Angre", + "command.session.undo.description": "Angre siste melding", + "command.session.redo": "Gjør om", + "command.session.redo.description": "Gjør om siste angrede melding", + "command.session.compact": "Komprimer sesjon", + "command.session.compact.description": "Oppsummer sesjonen for å redusere kontekststørrelsen", + "command.session.fork": "Forgren fra melding", + "command.session.fork.description": "Opprett en ny sesjon fra en tidligere melding", + "command.session.share": "Del sesjon", + "command.session.share.description": "Del denne sesjonen og kopier URL-en til utklippstavlen", + "command.session.unshare": "Slutt å dele sesjon", + "command.session.unshare.description": "Slutt å dele denne sesjonen", + + "palette.search.placeholder": "Søk i filer og kommandoer", + "palette.empty": "Ingen resultater funnet", + "palette.group.commands": "Kommandoer", + "palette.group.files": "Filer", + + "dialog.provider.search.placeholder": "Søk etter leverandører", + "dialog.provider.empty": "Ingen leverandører funnet", + "dialog.provider.group.popular": "Populære", + "dialog.provider.group.other": "Andre", + "dialog.provider.tag.recommended": "Anbefalt", + "dialog.provider.anthropic.note": "Koble til med Claude Pro/Max eller API-nøkkel", + + "dialog.model.select.title": "Velg modell", + "dialog.model.search.placeholder": "Søk etter modeller", + "dialog.model.empty": "Ingen modellresultater", + "dialog.model.manage": "Administrer modeller", + "dialog.model.manage.description": "Tilpass hvilke modeller som vises i modellvelgeren.", + + "dialog.model.unpaid.freeModels.title": "Gratis modeller levert av OpenCode", + "dialog.model.unpaid.addMore.title": "Legg til flere modeller fra populære leverandører", + + "dialog.provider.viewAll": "Vis alle leverandører", + + "provider.connect.title": "Koble til {{provider}}", + "provider.connect.title.anthropicProMax": "Logg inn med Claude Pro/Max", + "provider.connect.selectMethod": "Velg innloggingsmetode for {{provider}}.", + "provider.connect.method.apiKey": "API-nøkkel", + "provider.connect.status.inProgress": "Autorisering pågår...", + "provider.connect.status.waiting": "Venter på autorisering...", + "provider.connect.status.failed": "Autorisering mislyktes: {{error}}", + "provider.connect.apiKey.description": + "Skriv inn din {{provider}} API-nøkkel for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.", + "provider.connect.apiKey.label": "{{provider}} API-nøkkel", + "provider.connect.apiKey.placeholder": "API-nøkkel", + "provider.connect.apiKey.required": "API-nøkkel er påkrevd", + "provider.connect.opencodeZen.line1": + "OpenCode Zen gir deg tilgang til et utvalg av pålitelige optimaliserte modeller for kodeagenter.", + "provider.connect.opencodeZen.line2": + "Med én enkelt API-nøkkel får du tilgang til modeller som Claude, GPT, Gemini, GLM og flere.", + "provider.connect.opencodeZen.visit.prefix": "Besøk ", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.suffix": " for å hente API-nøkkelen din.", + "provider.connect.oauth.code.visit.prefix": "Besøk ", + "provider.connect.oauth.code.visit.link": "denne lenken", + "provider.connect.oauth.code.visit.suffix": + " for å hente autorisasjonskoden din for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.", + "provider.connect.oauth.code.label": "{{method}} autorisasjonskode", + "provider.connect.oauth.code.placeholder": "Autorisasjonskode", + "provider.connect.oauth.code.required": "Autorisasjonskode er påkrevd", + "provider.connect.oauth.code.invalid": "Ugyldig autorisasjonskode", + "provider.connect.oauth.auto.visit.prefix": "Besøk ", + "provider.connect.oauth.auto.visit.link": "denne lenken", + "provider.connect.oauth.auto.visit.suffix": + " og skriv inn koden nedenfor for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.", + "provider.connect.oauth.auto.confirmationCode": "Bekreftelseskode", + "provider.connect.toast.connected.title": "{{provider}} tilkoblet", + "provider.connect.toast.connected.description": "{{provider}}-modeller er nå tilgjengelige.", + + "model.tag.free": "Gratis", + "model.tag.latest": "Nyeste", + "model.provider.anthropic": "Anthropic", + "model.provider.openai": "OpenAI", + "model.provider.google": "Google", + "model.provider.xai": "xAI", + "model.provider.meta": "Meta", + "model.input.text": "tekst", + "model.input.image": "bilde", + "model.input.audio": "lyd", + "model.input.video": "video", + "model.input.pdf": "pdf", + "model.tooltip.allows": "Tillater: {{inputs}}", + "model.tooltip.reasoning.allowed": "Tillater resonnering", + "model.tooltip.reasoning.none": "Ingen resonnering", + "model.tooltip.context": "Kontekstgrense {{limit}}", + + "common.search.placeholder": "Søk", + "common.goBack": "Gå tilbake", + "common.loading": "Laster", + "common.loading.ellipsis": "...", + "common.cancel": "Avbryt", + "common.submit": "Send inn", + "common.save": "Lagre", + "common.saving": "Lagrer...", + "common.default": "Standard", + "common.attachment": "vedlegg", + + "prompt.placeholder.shell": "Skriv inn shell-kommando...", + "prompt.placeholder.normal": 'Spør om hva som helst... "{{example}}"', + "prompt.mode.shell": "Shell", + "prompt.mode.shell.exit": "ESC for å avslutte", + + "prompt.example.1": "Fiks en TODO i kodebasen", + "prompt.example.2": "Hva er teknologistabelen i dette prosjektet?", + "prompt.example.3": "Fiks ødelagte tester", + "prompt.example.4": "Forklar hvordan autentisering fungerer", + "prompt.example.5": "Finn og fiks sikkerhetssårbarheter", + "prompt.example.6": "Legg til enhetstester for brukerservicen", + "prompt.example.7": "Refaktorer denne funksjonen for bedre lesbarhet", + "prompt.example.8": "Hva betyr denne feilen?", + "prompt.example.9": "Hjelp meg med å feilsøke dette problemet", + "prompt.example.10": "Generer API-dokumentasjon", + "prompt.example.11": "Optimaliser databasespørringer", + "prompt.example.12": "Legg til inputvalidering", + "prompt.example.13": "Lag en ny komponent for...", + "prompt.example.14": "Hvordan deployer jeg dette prosjektet?", + "prompt.example.15": "Gjennomgå koden min for beste praksis", + "prompt.example.16": "Legg til feilhåndtering i denne funksjonen", + "prompt.example.17": "Forklar dette regex-mønsteret", + "prompt.example.18": "Konverter dette til TypeScript", + "prompt.example.19": "Legg til logging i hele kodebasen", + "prompt.example.20": "Hvilke avhengigheter er utdaterte?", + "prompt.example.21": "Hjelp meg med å skrive et migreringsskript", + "prompt.example.22": "Implementer caching for dette endepunktet", + "prompt.example.23": "Legg til paginering i denne listen", + "prompt.example.24": "Lag en CLI-kommando for...", + "prompt.example.25": "Hvordan fungerer miljøvariabler her?", + + "prompt.popover.emptyResults": "Ingen matchende resultater", + "prompt.popover.emptyCommands": "Ingen matchende kommandoer", + "prompt.dropzone.label": "Slipp bilder eller PDF-er her", + "prompt.slash.badge.custom": "egendefinert", + "prompt.context.active": "aktiv", + "prompt.context.includeActiveFile": "Inkluder aktiv fil", + "prompt.context.removeActiveFile": "Fjern aktiv fil fra kontekst", + "prompt.context.removeFile": "Fjern fil fra kontekst", + "prompt.action.attachFile": "Legg ved fil", + "prompt.attachment.remove": "Fjern vedlegg", + "prompt.action.send": "Send", + "prompt.action.stop": "Stopp", + + "prompt.toast.pasteUnsupported.title": "Liming ikke støttet", + "prompt.toast.pasteUnsupported.description": "Kun bilder eller PDF-er kan limes inn her.", + "prompt.toast.modelAgentRequired.title": "Velg en agent og modell", + "prompt.toast.modelAgentRequired.description": "Velg en agent og modell før du sender en forespørsel.", + "prompt.toast.worktreeCreateFailed.title": "Kunne ikke opprette worktree", + "prompt.toast.sessionCreateFailed.title": "Kunne ikke opprette sesjon", + "prompt.toast.shellSendFailed.title": "Kunne ikke sende shell-kommando", + "prompt.toast.commandSendFailed.title": "Kunne ikke sende kommando", + "prompt.toast.promptSendFailed.title": "Kunne ikke sende forespørsel", + + "dialog.mcp.title": "MCP-er", + "dialog.mcp.description": "{{enabled}} av {{total}} aktivert", + "dialog.mcp.empty": "Ingen MCP-er konfigurert", + + "mcp.status.connected": "tilkoblet", + "mcp.status.failed": "mislyktes", + "mcp.status.needs_auth": "trenger autentisering", + "mcp.status.disabled": "deaktivert", + + "dialog.fork.empty": "Ingen meldinger å forgrene fra", + + "dialog.directory.search.placeholder": "Søk etter mapper", + "dialog.directory.empty": "Ingen mapper funnet", + + "dialog.server.title": "Servere", + "dialog.server.description": "Bytt hvilken OpenCode-server denne appen kobler til.", + "dialog.server.search.placeholder": "Søk etter servere", + "dialog.server.empty": "Ingen servere ennå", + "dialog.server.add.title": "Legg til en server", + "dialog.server.add.url": "Server-URL", + "dialog.server.add.placeholder": "http://localhost:4096", + "dialog.server.add.error": "Kunne ikke koble til server", + "dialog.server.add.checking": "Sjekker...", + "dialog.server.add.button": "Legg til", + "dialog.server.default.title": "Standardserver", + "dialog.server.default.description": + "Koble til denne serveren ved oppstart i stedet for å starte en lokal server. Krever omstart.", + "dialog.server.default.none": "Ingen server valgt", + "dialog.server.default.set": "Sett gjeldende server som standard", + "dialog.server.default.clear": "Tøm", + "dialog.server.action.remove": "Fjern server", + + "dialog.project.edit.title": "Rediger prosjekt", + "dialog.project.edit.name": "Navn", + "dialog.project.edit.icon": "Ikon", + "dialog.project.edit.icon.alt": "Prosjektikon", + "dialog.project.edit.icon.hint": "Klikk eller dra et bilde", + "dialog.project.edit.icon.recommended": "Anbefalt: 128x128px", + "dialog.project.edit.color": "Farge", + "dialog.project.edit.color.select": "Velg fargen {{color}}", + + "context.breakdown.title": "Kontekstfordeling", + "context.breakdown.note": + 'Omtrentlig fordeling av input-tokens. "Annet" inkluderer verktøydefinisjoner og overhead.', + "context.breakdown.system": "System", + "context.breakdown.user": "Bruker", + "context.breakdown.assistant": "Assistent", + "context.breakdown.tool": "Verktøykall", + "context.breakdown.other": "Annet", + + "context.systemPrompt.title": "Systemprompt", + "context.rawMessages.title": "Rå meldinger", + + "context.stats.session": "Sesjon", + "context.stats.messages": "Meldinger", + "context.stats.provider": "Leverandør", + "context.stats.model": "Modell", + "context.stats.limit": "Kontekstgrense", + "context.stats.totalTokens": "Totalt antall tokens", + "context.stats.usage": "Forbruk", + "context.stats.inputTokens": "Input-tokens", + "context.stats.outputTokens": "Output-tokens", + "context.stats.reasoningTokens": "Resonnerings-tokens", + "context.stats.cacheTokens": "Cache-tokens (les/skriv)", + "context.stats.userMessages": "Brukermeldinger", + "context.stats.assistantMessages": "Assistentmeldinger", + "context.stats.totalCost": "Total kostnad", + "context.stats.sessionCreated": "Sesjon opprettet", + "context.stats.lastActivity": "Siste aktivitet", + + "context.usage.tokens": "Tokens", + "context.usage.usage": "Forbruk", + "context.usage.cost": "Kostnad", + "context.usage.clickToView": "Klikk for å se kontekst", + "context.usage.view": "Se kontekstforbruk", + + "language.en": "Engelsk", + "language.zh": "Kinesisk (forenklet)", + "language.zht": "Kinesisk (tradisjonell)", + "language.ko": "Koreansk", + "language.de": "Tysk", + "language.es": "Spansk", + "language.fr": "Fransk", + "language.ja": "Japansk", + "language.da": "Dansk", + "language.ru": "Russisk", + "language.pl": "Polsk", + "language.ar": "Arabisk", + "language.no": "Norsk", + + "toast.language.title": "Språk", + "toast.language.description": "Byttet til {{language}}", + + "toast.theme.title": "Tema byttet", + "toast.scheme.title": "Fargevalg", + + "toast.permissions.autoaccept.on.title": "Godtar endringer automatisk", + "toast.permissions.autoaccept.on.description": "Redigerings- og skrivetillatelser vil bli godkjent automatisk", + "toast.permissions.autoaccept.off.title": "Sluttet å godta endringer automatisk", + "toast.permissions.autoaccept.off.description": "Redigerings- og skrivetillatelser vil kreve godkjenning", + + "toast.model.none.title": "Ingen modell valgt", + "toast.model.none.description": "Koble til en leverandør for å oppsummere denne sesjonen", + + "toast.file.loadFailed.title": "Kunne ikke laste fil", + + "toast.session.share.copyFailed.title": "Kunne ikke kopiere URL til utklippstavlen", + "toast.session.share.success.title": "Sesjon delt", + "toast.session.share.success.description": "Delings-URL kopiert til utklippstavlen!", + "toast.session.share.failed.title": "Kunne ikke dele sesjon", + "toast.session.share.failed.description": "Det oppstod en feil under deling av sesjonen", + + "toast.session.unshare.success.title": "Deling av sesjon stoppet", + "toast.session.unshare.success.description": "Sesjonen deles ikke lenger!", + "toast.session.unshare.failed.title": "Kunne ikke stoppe deling av sesjon", + "toast.session.unshare.failed.description": "Det oppstod en feil da delingen av sesjonen skulle stoppes", + + "toast.session.listFailed.title": "Kunne ikke laste sesjoner for {{project}}", + + "toast.update.title": "Oppdatering tilgjengelig", + "toast.update.description": "En ny versjon av OpenCode ({{version}}) er nå tilgjengelig for installasjon.", + "toast.update.action.installRestart": "Installer og start på nytt", + "toast.update.action.notYet": "Ikke nå", + + "error.page.title": "Noe gikk galt", + "error.page.description": "Det oppstod en feil under lasting av applikasjonen.", + "error.page.details.label": "Feildetaljer", + "error.page.action.restart": "Start på nytt", + "error.page.action.checking": "Sjekker...", + "error.page.action.checkUpdates": "Se etter oppdateringer", + "error.page.action.updateTo": "Oppdater til {{version}}", + "error.page.report.prefix": "Vennligst rapporter denne feilen til OpenCode-teamet", + "error.page.report.discord": "på Discord", + "error.page.version": "Versjon: {{version}}", + + "error.dev.rootNotFound": + "Rotelement ikke funnet. Glemte du å legge det til i index.html? Eller kanskje id-attributten er feilstavet?", + + "error.globalSync.connectFailed": "Kunne ikke koble til server. Kjører det en server på `{{url}}`?", + + "error.chain.unknown": "Ukjent feil", + "error.chain.causedBy": "Forårsaket av:", + "error.chain.apiError": "API-feil", + "error.chain.status": "Status: {{status}}", + "error.chain.retryable": "Kan prøves på nytt: {{retryable}}", + "error.chain.responseBody": "Responsinnhold:\n{{body}}", + "error.chain.didYouMean": "Mente du: {{suggestions}}", + "error.chain.modelNotFound": "Modell ikke funnet: {{provider}}/{{model}}", + "error.chain.checkConfig": "Sjekk leverandør-/modellnavnene i konfigurasjonen din (opencode.json)", + "error.chain.mcpFailed": 'MCP-server "{{name}}" mislyktes. Merk at OpenCode ikke støtter MCP-autentisering ennå.', + "error.chain.providerAuthFailed": "Leverandørautentisering mislyktes ({{provider}}): {{message}}", + "error.chain.providerInitFailed": + 'Kunne ikke initialisere leverandør "{{provider}}". Sjekk legitimasjon og konfigurasjon.', + "error.chain.configJsonInvalid": "Konfigurasjonsfilen på {{path}} er ikke gyldig JSON(C)", + "error.chain.configJsonInvalidWithMessage": "Konfigurasjonsfilen på {{path}} er ikke gyldig JSON(C): {{message}}", + "error.chain.configDirectoryTypo": + 'Mappen "{{dir}}" i {{path}} er ikke gyldig. Gi mappen nytt navn til "{{suggestion}}" eller fjern den. Dette er en vanlig skrivefeil.', + "error.chain.configFrontmatterError": "Kunne ikke analysere frontmatter i {{path}}:\n{{message}}", + "error.chain.configInvalid": "Konfigurasjonsfilen på {{path}} er ugyldig", + "error.chain.configInvalidWithMessage": "Konfigurasjonsfilen på {{path}} er ugyldig: {{message}}", + + "notification.permission.title": "Tillatelse påkrevd", + "notification.permission.description": "{{sessionTitle}} i {{projectName}} trenger tillatelse", + "notification.question.title": "Spørsmål", + "notification.question.description": "{{sessionTitle}} i {{projectName}} har et spørsmål", + "notification.action.goToSession": "Gå til sesjon", + + "notification.session.responseReady.title": "Svar klart", + "notification.session.error.title": "Sesjonsfeil", + "notification.session.error.fallbackDescription": "Det oppstod en feil", + + "home.recentProjects": "Nylige prosjekter", + "home.empty.title": "Ingen nylige prosjekter", + "home.empty.description": "Kom i gang ved å åpne et lokalt prosjekt", + + "session.tab.session": "Sesjon", + "session.tab.review": "Gjennomgang", + "session.tab.context": "Kontekst", + "session.panel.reviewAndFiles": "Gjennomgang og filer", + "session.review.filesChanged": "{{count}} filer endret", + "session.review.loadingChanges": "Laster endringer...", + "session.review.empty": "Ingen endringer i denne sesjonen ennå", + "session.messages.renderEarlier": "Vis tidligere meldinger", + "session.messages.loadingEarlier": "Laster inn tidligere meldinger...", + "session.messages.loadEarlier": "Last inn tidligere meldinger", + "session.messages.loading": "Laster meldinger...", + "session.messages.jumpToLatest": "Hopp til nyeste", + + "session.context.addToContext": "Legg til {{selection}} i kontekst", + + "session.new.worktree.main": "Hovedgren", + "session.new.worktree.mainWithBranch": "Hovedgren ({{branch}})", + "session.new.worktree.create": "Opprett nytt worktree", + "session.new.lastModified": "Sist endret", + + "session.header.search.placeholder": "Søk i {{project}}", + "session.header.searchFiles": "Søk etter filer", + + "session.share.popover.title": "Publiser på nett", + "session.share.popover.description.shared": + "Denne sesjonen er offentlig på nettet. Den er tilgjengelig for alle med lenken.", + "session.share.popover.description.unshared": + "Del sesjonen offentlig på nettet. Den vil være tilgjengelig for alle med lenken.", + "session.share.action.share": "Del", + "session.share.action.publish": "Publiser", + "session.share.action.publishing": "Publiserer...", + "session.share.action.unpublish": "Avpubliser", + "session.share.action.unpublishing": "Avpubliserer...", + "session.share.action.view": "Vis", + "session.share.copy.copied": "Kopiert", + "session.share.copy.copyLink": "Kopier lenke", + + "lsp.tooltip.none": "Ingen LSP-servere", + "lsp.label.connected": "{{count}} LSP", + + "prompt.loading": "Laster prompt...", + "terminal.loading": "Laster terminal...", + "terminal.title": "Terminal", + "terminal.title.numbered": "Terminal {{number}}", + "terminal.close": "Lukk terminal", + "terminal.connectionLost.title": "Tilkobling mistet", + "terminal.connectionLost.description": + "Terminalforbindelsen ble avbrutt. Dette kan skje når serveren starter på nytt.", + + "common.closeTab": "Lukk fane", + "common.dismiss": "Avvis", + "common.requestFailed": "Forespørsel mislyktes", + "common.moreOptions": "Flere alternativer", + "common.learnMore": "Lær mer", + "common.rename": "Gi nytt navn", + "common.reset": "Tilbakestill", + "common.delete": "Slett", + "common.close": "Lukk", + "common.edit": "Rediger", + "common.loadMore": "Last flere", + "common.key.esc": "ESC", + + "sidebar.menu.toggle": "Veksle meny", + "sidebar.nav.projectsAndSessions": "Prosjekter og sesjoner", + "sidebar.settings": "Innstillinger", + "sidebar.help": "Hjelp", + "sidebar.workspaces.enable": "Aktiver arbeidsområder", + "sidebar.workspaces.disable": "Deaktiver arbeidsområder", + "sidebar.gettingStarted.title": "Kom i gang", + "sidebar.gettingStarted.line1": "OpenCode inkluderer gratis modeller så du kan starte umiddelbart.", + "sidebar.gettingStarted.line2": "Koble til en leverandør for å bruke modeller, inkl. Claude, GPT, Gemini osv.", + "sidebar.project.recentSessions": "Nylige sesjoner", + "sidebar.project.viewAllSessions": "Vis alle sesjoner", + + "settings.section.desktop": "Skrivebord", + "settings.tab.general": "Generelt", + "settings.tab.shortcuts": "Snarveier", + + "settings.general.section.appearance": "Utseende", + "settings.general.section.notifications": "Systemvarsler", + "settings.general.section.sounds": "Lydeffekter", + + "settings.general.row.language.title": "Språk", + "settings.general.row.language.description": "Endre visningsspråket for OpenCode", + "settings.general.row.appearance.title": "Utseende", + "settings.general.row.appearance.description": "Tilpass hvordan OpenCode ser ut på enheten din", + "settings.general.row.theme.title": "Tema", + "settings.general.row.theme.description": "Tilpass hvordan OpenCode er tematisert.", + "settings.general.row.font.title": "Skrift", + "settings.general.row.font.description": "Tilpass mono-skriften som brukes i kodeblokker", + + "settings.general.notifications.agent.title": "Agent", + "settings.general.notifications.agent.description": + "Vis systemvarsel når agenten er ferdig eller trenger oppmerksomhet", + "settings.general.notifications.permissions.title": "Tillatelser", + "settings.general.notifications.permissions.description": "Vis systemvarsel når en tillatelse er påkrevd", + "settings.general.notifications.errors.title": "Feil", + "settings.general.notifications.errors.description": "Vis systemvarsel når det oppstår en feil", + + "settings.general.sounds.agent.title": "Agent", + "settings.general.sounds.agent.description": "Spill av lyd når agenten er ferdig eller trenger oppmerksomhet", + "settings.general.sounds.permissions.title": "Tillatelser", + "settings.general.sounds.permissions.description": "Spill av lyd når en tillatelse er påkrevd", + "settings.general.sounds.errors.title": "Feil", + "settings.general.sounds.errors.description": "Spill av lyd når det oppstår en feil", + + "settings.shortcuts.title": "Tastatursnarveier", + "settings.shortcuts.reset.button": "Tilbakestill til standard", + "settings.shortcuts.reset.toast.title": "Snarveier tilbakestilt", + "settings.shortcuts.reset.toast.description": "Tastatursnarveier er tilbakestilt til standard.", + "settings.shortcuts.conflict.title": "Snarvei allerede i bruk", + "settings.shortcuts.conflict.description": "{{keybind}} er allerede tilordnet til {{titles}}.", + "settings.shortcuts.unassigned": "Ikke tilordnet", + "settings.shortcuts.pressKeys": "Trykk taster", + "settings.shortcuts.search.placeholder": "Søk etter snarveier", + "settings.shortcuts.search.empty": "Ingen snarveier funnet", + + "settings.shortcuts.group.general": "Generelt", + "settings.shortcuts.group.session": "Sesjon", + "settings.shortcuts.group.navigation": "Navigasjon", + "settings.shortcuts.group.modelAndAgent": "Modell og agent", + "settings.shortcuts.group.terminal": "Terminal", + "settings.shortcuts.group.prompt": "Prompt", + + "settings.providers.title": "Leverandører", + "settings.providers.description": "Leverandørinnstillinger vil kunne konfigureres her.", + "settings.models.title": "Modeller", + "settings.models.description": "Modellinnstillinger vil kunne konfigureres her.", + "settings.agents.title": "Agenter", + "settings.agents.description": "Agentinnstillinger vil kunne konfigureres her.", + "settings.commands.title": "Kommandoer", + "settings.commands.description": "Kommandoinnstillinger vil kunne konfigureres her.", + "settings.mcp.title": "MCP", + "settings.mcp.description": "MCP-innstillinger vil kunne konfigureres her.", + + "settings.permissions.title": "Tillatelser", + "settings.permissions.description": "Kontroller hvilke verktøy serveren kan bruke som standard.", + "settings.permissions.section.tools": "Verktøy", + "settings.permissions.toast.updateFailed.title": "Kunne ikke oppdatere tillatelser", + + "settings.permissions.action.allow": "Tillat", + "settings.permissions.action.ask": "Spør", + "settings.permissions.action.deny": "Avslå", + + "settings.permissions.tool.read.title": "Les", + "settings.permissions.tool.read.description": "Lesing av en fil (matcher filbanen)", + "settings.permissions.tool.edit.title": "Rediger", + "settings.permissions.tool.edit.description": "Endre filer, inkludert redigeringer, skriving, patcher og multi-redigeringer", + "settings.permissions.tool.glob.title": "Glob", + "settings.permissions.tool.glob.description": "Match filer ved hjelp av glob-mønstre", + "settings.permissions.tool.grep.title": "Grep", + "settings.permissions.tool.grep.description": "Søk i filinnhold ved hjelp av regulære uttrykk", + "settings.permissions.tool.list.title": "Liste", + "settings.permissions.tool.list.description": "List filer i en mappe", + "settings.permissions.tool.bash.title": "Bash", + "settings.permissions.tool.bash.description": "Kjør shell-kommandoer", + "settings.permissions.tool.task.title": "Oppgave", + "settings.permissions.tool.task.description": "Start underagenter", + "settings.permissions.tool.skill.title": "Ferdighet", + "settings.permissions.tool.skill.description": "Last en ferdighet etter navn", + "settings.permissions.tool.lsp.title": "LSP", + "settings.permissions.tool.lsp.description": "Kjør språkserverforespørsler", + "settings.permissions.tool.todoread.title": "Les gjøremål", + "settings.permissions.tool.todoread.description": "Les gjøremålslisten", + "settings.permissions.tool.todowrite.title": "Skriv gjøremål", + "settings.permissions.tool.todowrite.description": "Oppdater gjøremålslisten", + "settings.permissions.tool.webfetch.title": "Webhenting", + "settings.permissions.tool.webfetch.description": "Hent innhold fra en URL", + "settings.permissions.tool.websearch.title": "Websøk", + "settings.permissions.tool.websearch.description": "Søk på nettet", + "settings.permissions.tool.codesearch.title": "Kodesøk", + "settings.permissions.tool.codesearch.description": "Søk etter kode på nettet", + "settings.permissions.tool.external_directory.title": "Ekstern mappe", + "settings.permissions.tool.external_directory.description": "Få tilgang til filer utenfor prosjektmappen", + "settings.permissions.tool.doom_loop.title": "Doom Loop", + "settings.permissions.tool.doom_loop.description": "Oppdager gjentatte verktøykall med identisk input", + + "workspace.new": "Nytt arbeidsområde", + "workspace.type.local": "lokal", + "workspace.type.sandbox": "sandkasse", + "workspace.create.failed.title": "Kunne ikke opprette arbeidsområde", + "workspace.delete.failed.title": "Kunne ikke slette arbeidsområde", + "workspace.resetting.title": "Tilbakestiller arbeidsområde", + "workspace.resetting.description": "Dette kan ta et minutt.", + "workspace.reset.failed.title": "Kunne ikke tilbakestille arbeidsområde", + "workspace.reset.success.title": "Arbeidsområde tilbakestilt", + "workspace.reset.success.description": "Arbeidsområdet samsvarer nå med standardgrenen.", + "workspace.status.checking": "Sjekker for ikke-sammenslåtte endringer...", + "workspace.status.error": "Kunne ikke bekrefte git-status.", + "workspace.status.clean": "Ingen ikke-sammenslåtte endringer oppdaget.", + "workspace.status.dirty": "Ikke-sammenslåtte endringer oppdaget i dette arbeidsområdet.", + "workspace.delete.title": "Slett arbeidsområde", + "workspace.delete.confirm": 'Slette arbeidsområdet "{{name}}"?', + "workspace.delete.button": "Slett arbeidsområde", + "workspace.reset.title": "Tilbakestill arbeidsområde", + "workspace.reset.confirm": 'Tilbakestille arbeidsområdet "{{name}}"?', + "workspace.reset.button": "Tilbakestill arbeidsområde", + "workspace.reset.archived.none": "Ingen aktive sesjoner vil bli arkivert.", + "workspace.reset.archived.one": "1 sesjon vil bli arkivert.", + "workspace.reset.archived.many": "{{count}} sesjoner vil bli arkivert.", + "workspace.reset.note": "Dette vil tilbakestille arbeidsområdet til å samsvare med standardgrenen.", +} \ No newline at end of file diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index 092ef37960b5..0145835c8b66 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -303,6 +303,7 @@ export const dict = { "language.pl": "Polski", "language.ru": "Rosyjski", "language.ar": "Arabski", + "language.no": "Norweski", "toast.language.title": "Język", "toast.language.description": "Przełączono na {{language}}", @@ -648,4 +649,4 @@ export const dict = { "workspace.reset.archived.one": "1 sesja zostanie zarchiwizowana.", "workspace.reset.archived.many": "{{count}} sesji zostanie zarchiwizowanych.", "workspace.reset.note": "To zresetuje przestrzeń roboczą, aby odpowiadała domyślnej gałęzi.", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts index 21a061db85c2..b038a734c1ba 100644 --- a/packages/app/src/i18n/ru.ts +++ b/packages/app/src/i18n/ru.ts @@ -303,6 +303,7 @@ export const dict = { "language.da": "Датский", "language.ru": "Русский", "language.ar": "Арабский", + "language.no": "Норвежский", "toast.language.title": "Язык", "toast.language.description": "Переключено на {{language}}", @@ -651,4 +652,4 @@ export const dict = { "workspace.reset.archived.one": "1 сессия будет архивирована.", "workspace.reset.archived.many": "{{count}} сессий будет архивировано.", "workspace.reset.note": "Рабочее пространство будет сброшено в соответствие с веткой по умолчанию.", -} +} \ No newline at end of file diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index a8b11869d791..59e37ca5706d 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -285,6 +285,7 @@ export const dict = { "language.ru": "俄语", "language.pl": "波兰语", "language.ar": "阿拉伯语", + "language.no": "挪威语", "toast.language.title": "语言", "toast.language.description": "已切换到{{language}}", @@ -561,4 +562,4 @@ export const dict = { "workspace.reset.archived.one": "将归档 1 个会话。", "workspace.reset.archived.many": "将归档 {{count}} 个会话。", "workspace.reset.note": "这将把工作区重置为与默认分支一致。", -} satisfies Partial> +} satisfies Partial> \ No newline at end of file diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts index 81406d32a4b8..ab64b241763c 100644 --- a/packages/app/src/i18n/zht.ts +++ b/packages/app/src/i18n/zht.ts @@ -281,6 +281,7 @@ export const dict = { "language.ko": "韓語", "language.ru": "俄語", "language.ar": "阿拉伯語", + "language.no": "挪威語", "toast.language.title": "語言", "toast.language.description": "已切換到 {{language}}", @@ -557,4 +558,4 @@ export const dict = { "workspace.reset.archived.one": "將封存 1 個工作階段。", "workspace.reset.archived.many": "將封存 {{count}} 個工作階段。", "workspace.reset.note": "這將把工作區重設為與預設分支一致。", -} satisfies Partial> +} satisfies Partial> \ No newline at end of file diff --git a/packages/ui/src/i18n/no.ts b/packages/ui/src/i18n/no.ts new file mode 100644 index 000000000000..4b9937076d50 --- /dev/null +++ b/packages/ui/src/i18n/no.ts @@ -0,0 +1,95 @@ +import { dict as en } from "./en" +type Keys = keyof typeof en + +export const dict: Record = { + "ui.sessionReview.title": "Sesjonsendringer", + "ui.sessionReview.diffStyle.unified": "Samlet", + "ui.sessionReview.diffStyle.split": "Delt", + "ui.sessionReview.expandAll": "Utvid alle", + "ui.sessionReview.collapseAll": "Fold sammen alle", + + "ui.sessionTurn.steps.show": "Vis trinn", + "ui.sessionTurn.steps.hide": "Skjul trinn", + "ui.sessionTurn.summary.response": "Svar", + "ui.sessionTurn.diff.showMore": "Vis flere endringer ({{count}})", + + "ui.sessionTurn.retry.retrying": "Prøver igjen", + "ui.sessionTurn.retry.inSeconds": "om {{seconds}}s", + + "ui.sessionTurn.status.delegating": "Delegerer arbeid", + "ui.sessionTurn.status.planning": "Planlegger neste trinn", + "ui.sessionTurn.status.gatheringContext": "Samler inn kontekst", + "ui.sessionTurn.status.searchingCodebase": "Søker i kodebasen", + "ui.sessionTurn.status.searchingWeb": "Søker på nettet", + "ui.sessionTurn.status.makingEdits": "Gjør endringer", + "ui.sessionTurn.status.runningCommands": "Kjører kommandoer", + "ui.sessionTurn.status.thinking": "Tenker", + "ui.sessionTurn.status.thinkingWithTopic": "Tenker - {{topic}}", + "ui.sessionTurn.status.gatheringThoughts": "Samler tanker", + "ui.sessionTurn.status.consideringNextSteps": "Vurderer neste trinn", + + "ui.messagePart.diagnostic.error": "Feil", + "ui.messagePart.title.edit": "Rediger", + "ui.messagePart.title.write": "Skriv", + "ui.messagePart.option.typeOwnAnswer": "Skriv ditt eget svar", + "ui.messagePart.review.title": "Gjennomgå svarene dine", + + "ui.list.loading": "Laster", + "ui.list.empty": "Ingen resultater", + "ui.list.clearFilter": "Tøm filter", + "ui.list.emptyWithFilter.prefix": "Ingen resultater for", + "ui.list.emptyWithFilter.suffix": "", + + "ui.messageNav.newMessage": "Ny melding", + + "ui.textField.copyToClipboard": "Kopier til utklippstavlen", + "ui.textField.copied": "Kopiert", + + "ui.imagePreview.alt": "Bildeforhåndsvisning", + + "ui.tool.read": "Les", + "ui.tool.list": "Liste", + "ui.tool.glob": "Glob", + "ui.tool.grep": "Grep", + "ui.tool.webfetch": "Webhenting", + "ui.tool.shell": "Shell", + "ui.tool.patch": "Patch", + "ui.tool.todos": "Gjøremål", + "ui.tool.todos.read": "Les gjøremål", + "ui.tool.questions": "Spørsmål", + "ui.tool.agent": "{{type}}-agent", + + "ui.common.file.one": "fil", + "ui.common.file.other": "filer", + "ui.common.question.one": "spørsmål", + "ui.common.question.other": "spørsmål", + + "ui.common.add": "Legg til", + "ui.common.cancel": "Avbryt", + "ui.common.confirm": "Bekreft", + "ui.common.dismiss": "Avvis", + "ui.common.close": "Lukk", + "ui.common.next": "Neste", + "ui.common.submit": "Send inn", + + "ui.permission.deny": "Avslå", + "ui.permission.allowAlways": "Tillat alltid", + "ui.permission.allowOnce": "Tillat én gang", + + "ui.message.expand": "Utvid melding", + "ui.message.collapse": "Skjul melding", + "ui.message.copy": "Kopier", + "ui.message.copied": "Kopiert!", + "ui.message.attachment.alt": "vedlegg", + + "ui.patch.action.deleted": "Slettet", + "ui.patch.action.created": "Opprettet", + "ui.patch.action.moved": "Flyttet", + "ui.patch.action.patched": "Oppdatert", + + "ui.question.subtitle.answered": "{{count}} besvart", + "ui.question.answer.none": "(ingen svar)", + "ui.question.review.notAnswered": "(ikke besvart)", + "ui.question.multiHint": "(velg alle som gjelder)", + "ui.question.custom.placeholder": "Skriv svaret ditt...", +} \ No newline at end of file