From 8b0353cb2a559b0e02f9195f08393423e777f63f Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 21 Jan 2026 05:48:44 -0600 Subject: [PATCH] feat(app): danish translations --- packages/app/src/context/language.tsx | 10 +- packages/app/src/i18n/da.ts | 554 ++++++++++++++++++++++++++ packages/app/src/i18n/de.ts | 1 + packages/app/src/i18n/en.ts | 1 + packages/app/src/i18n/es.ts | 1 + packages/app/src/i18n/fr.ts | 1 + packages/app/src/i18n/ja.ts | 1 + packages/app/src/i18n/ko.ts | 1 + packages/app/src/i18n/zh.ts | 1 + packages/ui/src/i18n/da.ts | 90 +++++ 10 files changed, 659 insertions(+), 2 deletions(-) create mode 100644 packages/app/src/i18n/da.ts create mode 100644 packages/ui/src/i18n/da.ts diff --git a/packages/app/src/context/language.tsx b/packages/app/src/context/language.tsx index 7d65af75e..d627997bb 100644 --- a/packages/app/src/context/language.tsx +++ b/packages/app/src/context/language.tsx @@ -9,19 +9,21 @@ import { dict as ko } from "@/i18n/ko" import { dict as de } from "@/i18n/de" import { dict as es } from "@/i18n/es" import { dict as fr } from "@/i18n/fr" +import { dict as da } from "@/i18n/da" import { dict as uiEn } from "@opencode-ai/ui/i18n/en" import { dict as uiZh } from "@opencode-ai/ui/i18n/zh" import { dict as uiKo } from "@opencode-ai/ui/i18n/ko" import { dict as uiDe } from "@opencode-ai/ui/i18n/de" import { dict as uiEs } from "@opencode-ai/ui/i18n/es" import { dict as uiFr } from "@opencode-ai/ui/i18n/fr" +import { dict as uiDa } from "@opencode-ai/ui/i18n/da" -export type Locale = "en" | "zh" | "ko" | "de" | "es" | "fr" +export type Locale = "en" | "zh" | "ko" | "de" | "es" | "fr" | "da" type RawDictionary = typeof en & typeof uiEn type Dictionary = i18n.Flatten -const LOCALES: readonly Locale[] = ["en", "zh", "ko", "de", "es", "fr"] +const LOCALES: readonly Locale[] = ["en", "zh", "ko", "de", "es", "fr", "da"] function detectLocale(): Locale { if (typeof navigator !== "object") return "en" @@ -34,6 +36,7 @@ function detectLocale(): Locale { if (language.toLowerCase().startsWith("de")) return "de" if (language.toLowerCase().startsWith("es")) return "es" if (language.toLowerCase().startsWith("fr")) return "fr" + if (language.toLowerCase().startsWith("da")) return "da" } return "en" @@ -55,6 +58,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont if (store.locale === "de") return "de" if (store.locale === "es") return "es" if (store.locale === "fr") return "fr" + if (store.locale === "da") return "da" return "en" }) @@ -71,6 +75,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont if (locale() === "de") return { ...base, ...i18n.flatten({ ...de, ...uiDe }) } if (locale() === "es") return { ...base, ...i18n.flatten({ ...es, ...uiEs }) } if (locale() === "fr") return { ...base, ...i18n.flatten({ ...fr, ...uiFr }) } + if (locale() === "da") return { ...base, ...i18n.flatten({ ...da, ...uiDa }) } return { ...base, ...i18n.flatten({ ...ko, ...uiKo }) } }) @@ -83,6 +88,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont de: "language.de", es: "language.es", fr: "language.fr", + da: "language.da", } const label = (value: Locale) => t(labelKey[value]) diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts new file mode 100644 index 000000000..237fc060d --- /dev/null +++ b/packages/app/src/i18n/da.ts @@ -0,0 +1,554 @@ +export const dict = { + "command.category.suggested": "Foreslået", + "command.category.view": "Vis", + "command.category.project": "Projekt", + "command.category.provider": "Udbyder", + "command.category.server": "Server", + "command.category.session": "Session", + "command.category.theme": "Tema", + "command.category.language": "Sprog", + "command.category.file": "Fil", + "command.category.terminal": "Terminal", + "command.category.model": "Model", + "command.category.mcp": "MCP", + "command.category.agent": "Agent", + "command.category.permissions": "Tilladelser", + + "theme.scheme.system": "System", + "theme.scheme.light": "Lys", + "theme.scheme.dark": "Mørk", + + "command.sidebar.toggle": "Skift sidebjælke", + "command.project.open": "Åbn projekt", + "command.provider.connect": "Tilslut udbyder", + "command.server.switch": "Skift server", + "command.session.previous": "Forrige session", + "command.session.next": "Næste session", + "command.session.archive": "Arkivér session", + + "command.palette": "Kommandopalette", + + "command.theme.cycle": "Skift tema", + "command.theme.set": "Brug tema: {{theme}}", + "command.theme.scheme.cycle": "Skift farveskema", + "command.theme.scheme.set": "Brug farveskema: {{scheme}}", + + "command.language.cycle": "Skift sprog", + "command.language.set": "Brug sprog: {{language}}", + + "command.session.new": "Ny session", + "command.file.open": "Åbn fil", + "command.file.open.description": "Søg i filer og kommandoer", + "command.terminal.toggle": "Skift terminal", + "command.review.toggle": "Skift gennemgang", + "command.terminal.new": "Ny terminal", + "command.terminal.new.description": "Opret en ny terminalfane", + "command.steps.toggle": "Skift trin", + "command.steps.toggle.description": "Vis eller skjul trin for den aktuelle besked", + "command.message.previous": "Forrige besked", + "command.message.previous.description": "Gå til den forrige brugerbesked", + "command.message.next": "Næste besked", + "command.message.next.description": "Gå til den næste brugerbesked", + "command.model.choose": "Vælg model", + "command.model.choose.description": "Vælg en anden model", + "command.mcp.toggle": "Skift MCP'er", + "command.mcp.toggle.description": "Skift MCP'er", + "command.agent.cycle": "Skift agent", + "command.agent.cycle.description": "Skift til næste agent", + "command.agent.cycle.reverse": "Skift agent baglæns", + "command.agent.cycle.reverse.description": "Skift til forrige agent", + "command.model.variant.cycle": "Skift tænkeindsats", + "command.model.variant.cycle.description": "Skift til næste indsatsniveau", + "command.permissions.autoaccept.enable": "Accepter ændringer automatisk", + "command.permissions.autoaccept.disable": "Stop automatisk accept af ændringer", + "command.session.undo": "Fortryd", + "command.session.undo.description": "Fortryd den sidste besked", + "command.session.redo": "Omgør", + "command.session.redo.description": "Omgør den sidste fortrudte besked", + "command.session.compact": "Komprimér session", + "command.session.compact.description": "Opsummer sessionen for at reducere kontekststørrelsen", + "command.session.fork": "Forgren fra besked", + "command.session.fork.description": "Opret en ny session fra en tidligere besked", + "command.session.share": "Del session", + "command.session.share.description": "Del denne session og kopier URL'en til udklipsholderen", + "command.session.unshare": "Stop deling af session", + "command.session.unshare.description": "Stop med at dele denne session", + + "palette.search.placeholder": "Søg i filer og kommandoer", + "palette.empty": "Ingen resultater fundet", + "palette.group.commands": "Kommandoer", + "palette.group.files": "Filer", + + "dialog.provider.search.placeholder": "Søg udbydere", + "dialog.provider.empty": "Ingen udbydere fundet", + "dialog.provider.group.popular": "Populære", + "dialog.provider.group.other": "Andre", + "dialog.provider.tag.recommended": "Anbefalet", + "dialog.provider.anthropic.note": "Forbind med Claude Pro/Max eller API-nøgle", + + "dialog.model.select.title": "Vælg model", + "dialog.model.search.placeholder": "Søg modeller", + "dialog.model.empty": "Ingen modeller fundet", + "dialog.model.manage": "Administrer modeller", + "dialog.model.manage.description": "Tilpas hvilke modeller der vises i modelvælgeren.", + + "dialog.model.unpaid.freeModels.title": "Gratis modeller leveret af OpenCode", + "dialog.model.unpaid.addMore.title": "Tilføj flere modeller fra populære udbydere", + + "dialog.provider.viewAll": "Vis alle udbydere", + + "provider.connect.title": "Forbind {{provider}}", + "provider.connect.title.anthropicProMax": "Log ind med Claude Pro/Max", + "provider.connect.selectMethod": "Vælg loginmetode for {{provider}}.", + "provider.connect.method.apiKey": "API-nøgle", + "provider.connect.status.inProgress": "Godkendelse i gang...", + "provider.connect.status.waiting": "Venter på godkendelse...", + "provider.connect.status.failed": "Godkendelse mislykkedes: {{error}}", + "provider.connect.apiKey.description": + "Indtast din {{provider}} API-nøgle for at forbinde din konto og bruge {{provider}} modeller i OpenCode.", + "provider.connect.apiKey.label": "{{provider}} API-nøgle", + "provider.connect.apiKey.placeholder": "API-nøgle", + "provider.connect.apiKey.required": "API-nøgle er påkrævet", + "provider.connect.opencodeZen.line1": + "OpenCode Zen giver dig adgang til et udvalg af pålidelige optimerede modeller til kodningsagenter.", + "provider.connect.opencodeZen.line2": + "Med en enkelt API-nøgle får du adgang til modeller som Claude, GPT, Gemini, GLM og flere.", + "provider.connect.opencodeZen.visit.prefix": "Besøg ", + "provider.connect.opencodeZen.visit.suffix": " for at hente din API-nøgle.", + "provider.connect.oauth.code.visit.prefix": "Besøg ", + "provider.connect.oauth.code.visit.link": "dette link", + "provider.connect.oauth.code.visit.suffix": + " for at hente din godkendelseskode for at forbinde din konto og bruge {{provider}} modeller i OpenCode.", + "provider.connect.oauth.code.label": "{{method}} godkendelseskode", + "provider.connect.oauth.code.placeholder": "Godkendelseskode", + "provider.connect.oauth.code.required": "Godkendelseskode er påkrævet", + "provider.connect.oauth.code.invalid": "Ugyldig godkendelseskode", + "provider.connect.oauth.auto.visit.prefix": "Besøg ", + "provider.connect.oauth.auto.visit.link": "dette link", + "provider.connect.oauth.auto.visit.suffix": + " og indtast koden nedenfor for at forbinde din konto og bruge {{provider}} modeller i OpenCode.", + "provider.connect.oauth.auto.confirmationCode": "Bekræftelseskode", + "provider.connect.toast.connected.title": "{{provider}} forbundet", + "provider.connect.toast.connected.description": "{{provider}} modeller er nu tilgængelige.", + + "model.tag.free": "Gratis", + "model.tag.latest": "Nyeste", + + "common.search.placeholder": "Søg", + "common.loading": "Indlæser", + "common.cancel": "Annuller", + "common.submit": "Indsend", + "common.save": "Gem", + "common.saving": "Gemmer...", + "common.default": "Standard", + "common.attachment": "vedhæftning", + + "prompt.placeholder.shell": "Indtast shell-kommando...", + "prompt.placeholder.normal": 'Spørg om hvad som helst... "{{example}}"', + "prompt.mode.shell": "Shell", + "prompt.mode.shell.exit": "esc for at afslutte", + + "prompt.example.1": "Ret en TODO i koden", + "prompt.example.2": "Hvad er teknologistakken for dette projekt?", + "prompt.example.3": "Ret ødelagte tests", + "prompt.example.4": "Forklar hvordan godkendelse fungerer", + "prompt.example.5": "Find og ret sikkerhedshuller", + "prompt.example.6": "Tilføj enhedstests for brugerservice", + "prompt.example.7": "Refaktorer denne funktion så den er mere læsbar", + "prompt.example.8": "Hvad betyder denne fejl?", + "prompt.example.9": "Hjælp mig med at debugge dette problem", + "prompt.example.10": "Generer API-dokumentation", + "prompt.example.11": "Optimer databaseforespørgsler", + "prompt.example.12": "Tilføj validering af input", + "prompt.example.13": "Opret en ny komponent til...", + "prompt.example.14": "Hvordan deployerer jeg dette projekt?", + "prompt.example.15": "Gennemgå min kode for bedste praksis", + "prompt.example.16": "Tilføj fejlhåndtering til denne funktion", + "prompt.example.17": "Forklar dette regex-mønster", + "prompt.example.18": "Konverter dette til TypeScript", + "prompt.example.19": "Tilføj logning i hele koden", + "prompt.example.20": "Hvilke afhængigheder er forældede?", + "prompt.example.21": "Hjælp mig med at skrive et migreringsscript", + "prompt.example.22": "Implementer caching for dette endpoint", + "prompt.example.23": "Tilføj sideinddeling til denne liste", + "prompt.example.24": "Opret en CLI-kommando til...", + "prompt.example.25": "Hvordan fungerer miljøvariabler her?", + + "prompt.popover.emptyResults": "Ingen matchende resultater", + "prompt.popover.emptyCommands": "Ingen matchende kommandoer", + "prompt.dropzone.label": "Slip billeder eller PDF'er her", + "prompt.slash.badge.custom": "brugerdefineret", + "prompt.context.active": "aktiv", + "prompt.context.includeActiveFile": "Inkluder aktiv fil", + "prompt.action.attachFile": "Vedhæft fil", + "prompt.action.send": "Send", + "prompt.action.stop": "Stop", + + "prompt.toast.pasteUnsupported.title": "Ikke understøttet indsæt", + "prompt.toast.pasteUnsupported.description": "Kun billeder eller PDF'er kan indsættes her.", + "prompt.toast.modelAgentRequired.title": "Vælg en agent og model", + "prompt.toast.modelAgentRequired.description": "Vælg en agent og model før du sender en forespørgsel.", + "prompt.toast.worktreeCreateFailed.title": "Kunne ikke oprette worktree", + "prompt.toast.sessionCreateFailed.title": "Kunne ikke oprette session", + "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ørgsel", + + "dialog.mcp.title": "MCP'er", + "dialog.mcp.description": "{{enabled}} af {{total}} aktiveret", + "dialog.mcp.empty": "Ingen MCP'er konfigureret", + + "mcp.status.connected": "forbundet", + "mcp.status.failed": "mislykkedes", + "mcp.status.needs_auth": "kræver godkendelse", + "mcp.status.disabled": "deaktiveret", + + "dialog.fork.empty": "Ingen beskeder at forgrene fra", + + "dialog.directory.search.placeholder": "Søg mapper", + "dialog.directory.empty": "Ingen mapper fundet", + + "dialog.server.title": "Servere", + "dialog.server.description": "Skift hvilken OpenCode-server denne app forbinder til.", + "dialog.server.search.placeholder": "Søg servere", + "dialog.server.empty": "Ingen servere endnu", + "dialog.server.add.title": "Tilføj en server", + "dialog.server.add.url": "Server URL", + "dialog.server.add.placeholder": "http://localhost:4096", + "dialog.server.add.error": "Kunne ikke forbinde til server", + "dialog.server.add.checking": "Tjekker...", + "dialog.server.add.button": "Tilføj", + "dialog.server.default.title": "Standardserver", + "dialog.server.default.description": + "Forbind til denne server ved start af app i stedet for at starte en lokal server. Kræver genstart.", + "dialog.server.default.none": "Ingen server valgt", + "dialog.server.default.set": "Sæt nuværende server som standard", + "dialog.server.default.clear": "Ryd", + + "dialog.project.edit.title": "Rediger projekt", + "dialog.project.edit.name": "Navn", + "dialog.project.edit.icon": "Ikon", + "dialog.project.edit.icon.alt": "Projektikon", + "dialog.project.edit.icon.hint": "Klik eller træk et billede", + "dialog.project.edit.icon.recommended": "Anbefalet: 128x128px", + "dialog.project.edit.color": "Farve", + + "context.breakdown.title": "Kontekstfordeling", + "context.breakdown.note": + 'Omtrentlig fordeling af input-tokens. "Andre" inkluderer værktøjsdefinitioner og overhead.', + "context.breakdown.system": "System", + "context.breakdown.user": "Bruger", + "context.breakdown.assistant": "Assistent", + "context.breakdown.tool": "Værktøjskald", + "context.breakdown.other": "Andre", + + "context.systemPrompt.title": "Systemprompt", + "context.rawMessages.title": "Rå beskeder", + + "context.stats.session": "Session", + "context.stats.messages": "Beskeder", + "context.stats.provider": "Udbyder", + "context.stats.model": "Model", + "context.stats.limit": "Kontekstgrænse", + "context.stats.totalTokens": "Total Tokens", + "context.stats.usage": "Forbrug", + "context.stats.inputTokens": "Input Tokens", + "context.stats.outputTokens": "Output Tokens", + "context.stats.reasoningTokens": "Tænke Tokens", + "context.stats.cacheTokens": "Cache Tokens (læs/skriv)", + "context.stats.userMessages": "Brugerbeskeder", + "context.stats.assistantMessages": "Assistentbeskeder", + "context.stats.totalCost": "Samlede omkostninger", + "context.stats.sessionCreated": "Session oprettet", + "context.stats.lastActivity": "Seneste aktivitet", + + "context.usage.tokens": "Tokens", + "context.usage.usage": "Forbrug", + "context.usage.cost": "Omkostning", + "context.usage.clickToView": "Klik for at se kontekst", + + "language.en": "Engelsk", + "language.zh": "Kinesisk", + "language.ko": "Koreansk", + "language.de": "Tysk", + "language.es": "Spansk", + "language.fr": "Fransk", + "language.ja": "Japansk", + "language.da": "Dansk", + + "toast.language.title": "Sprog", + "toast.language.description": "Skiftede til {{language}}", + + "toast.theme.title": "Tema skiftet", + "toast.scheme.title": "Farveskema", + + "toast.permissions.autoaccept.on.title": "Accepterer ændringer automatisk", + "toast.permissions.autoaccept.on.description": "Redigerings- og skrivetilladelser vil automatisk blive godkendt", + "toast.permissions.autoaccept.off.title": "Stoppede automatisk accept af ændringer", + "toast.permissions.autoaccept.off.description": "Redigerings- og skrivetilladelser vil kræve godkendelse", + + "toast.model.none.title": "Ingen model valgt", + "toast.model.none.description": "Forbind en udbyder for at opsummere denne session", + + "toast.file.loadFailed.title": "Kunne ikke indlæse fil", + + "toast.session.share.copyFailed.title": "Kunne ikke kopiere URL til udklipsholder", + "toast.session.share.success.title": "Session delt", + "toast.session.share.success.description": "Delings-URL kopieret til udklipsholder!", + "toast.session.share.failed.title": "Kunne ikke dele session", + "toast.session.share.failed.description": "Der opstod en fejl under deling af sessionen", + + "toast.session.unshare.success.title": "Deling af session stoppet", + "toast.session.unshare.success.description": "Deling af session blev stoppet!", + "toast.session.unshare.failed.title": "Kunne ikke stoppe deling af session", + "toast.session.unshare.failed.description": "Der opstod en fejl under stop af sessionsdeling", + + "toast.session.listFailed.title": "Kunne ikke indlæse sessioner for {{project}}", + + "toast.update.title": "Opdatering tilgængelig", + "toast.update.description": "En ny version af OpenCode ({{version}}) er nu tilgængelig til installation.", + "toast.update.action.installRestart": "Installer og genstart", + "toast.update.action.notYet": "Ikke endnu", + + "error.page.title": "Noget gik galt", + "error.page.description": "Der opstod en fejl under indlæsning af applikationen.", + "error.page.details.label": "Fejldetaljer", + "error.page.action.restart": "Genstart", + "error.page.action.checking": "Tjekker...", + "error.page.action.checkUpdates": "Tjek for opdateringer", + "error.page.action.updateTo": "Opdater til {{version}}", + "error.page.report.prefix": "Rapporter venligst denne fejl til OpenCode-teamet", + "error.page.report.discord": "på Discord", + "error.page.version": "Version: {{version}}", + + "error.dev.rootNotFound": + "Rodelement ikke fundet. Har du glemt at tilføje det til din index.html? Eller måske er id-attributten stavet forkert?", + + "error.globalSync.connectFailed": "Kunne ikke forbinde til server. Kører der en server på `{{url}}`?", + + "error.chain.unknown": "Ukendt fejl", + "error.chain.causedBy": "Forårsaget af:", + "error.chain.apiError": "API-fejl", + "error.chain.status": "Status: {{status}}", + "error.chain.retryable": "Kan forsøges igen: {{retryable}}", + "error.chain.responseBody": "Svarindhold:\n{{body}}", + "error.chain.didYouMean": "Mente du: {{suggestions}}", + "error.chain.modelNotFound": "Model ikke fundet: {{provider}}/{{model}}", + "error.chain.checkConfig": "Tjek dine konfigurations (opencode.json) udbyder/modelnavne", + "error.chain.mcpFailed": 'MCP-server "{{name}}" fejlede. Bemærk, OpenCode understøtter ikke MCP-godkendelse endnu.', + "error.chain.providerAuthFailed": "Udbydergodkendelse mislykkedes ({{provider}}): {{message}}", + "error.chain.providerInitFailed": + 'Kunne ikke initialisere udbyder "{{provider}}". Tjek legitimationsoplysninger og konfiguration.', + "error.chain.configJsonInvalid": "Konfigurationsfil på {{path}} er ikke gyldig JSON(C)", + "error.chain.configJsonInvalidWithMessage": "Konfigurationsfil på {{path}} er ikke gyldig JSON(C): {{message}}", + "error.chain.configDirectoryTypo": + 'Mappe "{{dir}}" i {{path}} er ikke gyldig. Omdøb mappen til "{{suggestion}}" eller fjern den. Dette er en almindelig slåfejl.', + "error.chain.configFrontmatterError": "Kunne ikke parse frontmatter i {{path}}:\n{{message}}", + "error.chain.configInvalid": "Konfigurationsfil på {{path}} er ugyldig", + "error.chain.configInvalidWithMessage": "Konfigurationsfil på {{path}} er ugyldig: {{message}}", + + "notification.permission.title": "Tilladelse påkrævet", + "notification.permission.description": "{{sessionTitle}} i {{projectName}} kræver tilladelse", + "notification.question.title": "Spørgsmål", + "notification.question.description": "{{sessionTitle}} i {{projectName}} har et spørgsmål", + "notification.action.goToSession": "Gå til session", + + "notification.session.responseReady.title": "Svar klar", + "notification.session.error.title": "Sessionsfejl", + "notification.session.error.fallbackDescription": "Der opstod en fejl", + + "home.recentProjects": "Seneste projekter", + "home.empty.title": "Ingen seneste projekter", + "home.empty.description": "Kom i gang ved at åbne et lokalt projekt", + + "session.tab.session": "Session", + "session.tab.review": "Gennemgang", + "session.tab.context": "Kontekst", + "session.review.filesChanged": "{{count}} Filer ændret", + "session.review.loadingChanges": "Indlæser ændringer...", + "session.review.empty": "Ingen ændringer i denne session endnu", + "session.messages.renderEarlier": "Vis tidligere beskeder", + "session.messages.loadingEarlier": "Indlæser tidligere beskeder...", + "session.messages.loadEarlier": "Indlæs tidligere beskeder", + "session.messages.loading": "Indlæser beskeder...", + + "session.context.addToContext": "Tilføj {{selection}} til kontekst", + + "session.new.worktree.main": "Hovedgren", + "session.new.worktree.mainWithBranch": "Hovedgren ({{branch}})", + "session.new.worktree.create": "Opret nyt worktree", + "session.new.lastModified": "Sidst ændret", + + "session.header.search.placeholder": "Søg {{project}}", + + "session.share.popover.title": "Udgiv på nettet", + "session.share.popover.description.shared": + "Denne session er offentlig på nettet. Den er tilgængelig for alle med linket.", + "session.share.popover.description.unshared": + "Del session offentligt på nettet. Den vil være tilgængelig for alle med linket.", + "session.share.action.share": "Del", + "session.share.action.publish": "Udgiv", + "session.share.action.publishing": "Udgiver...", + "session.share.action.unpublish": "Afpublicer", + "session.share.action.unpublishing": "Afpublicerer...", + "session.share.action.view": "Vis", + "session.share.copy.copied": "Kopieret", + "session.share.copy.copyLink": "Kopier link", + + "lsp.tooltip.none": "Ingen LSP-servere", + "lsp.label.connected": "{{count}} LSP", + + "prompt.loading": "Indlæser prompt...", + "terminal.loading": "Indlæser terminal...", + "terminal.title": "Terminal", + "terminal.title.numbered": "Terminal {{number}}", + + "common.closeTab": "Luk fane", + "common.dismiss": "Afvis", + "common.requestFailed": "Forespørgsel mislykkedes", + "common.moreOptions": "Flere muligheder", + "common.learnMore": "Lær mere", + "common.rename": "Omdøb", + "common.reset": "Nulstil", + "common.delete": "Slet", + "common.close": "Luk", + "common.edit": "Rediger", + "common.loadMore": "Indlæs flere", + + "sidebar.settings": "Indstillinger", + "sidebar.help": "Hjælp", + "sidebar.workspaces.enable": "Aktiver arbejdsområder", + "sidebar.workspaces.disable": "Deaktiver arbejdsområder", + "sidebar.gettingStarted.title": "Kom i gang", + "sidebar.gettingStarted.line1": "OpenCode inkluderer gratis modeller så du kan starte med det samme.", + "sidebar.gettingStarted.line2": "Forbind enhver udbyder for at bruge modeller, inkl. Claude, GPT, Gemini osv.", + "sidebar.project.recentSessions": "Seneste sessioner", + "sidebar.project.viewAllSessions": "Vis alle sessioner", + + "settings.section.desktop": "Desktop", + "settings.tab.general": "Generelt", + "settings.tab.shortcuts": "Genveje", + + "settings.general.section.appearance": "Udseende", + "settings.general.section.notifications": "Systemmeddelelser", + "settings.general.section.sounds": "Lydeffekter", + + "settings.general.row.language.title": "Sprog", + "settings.general.row.language.description": "Ændr visningssproget for OpenCode", + "settings.general.row.appearance.title": "Udseende", + "settings.general.row.appearance.description": "Tilpas hvordan OpenCode ser ud på din enhed", + "settings.general.row.theme.title": "Tema", + "settings.general.row.theme.description": "Tilpas hvordan OpenCode er temabestemt.", + "settings.general.row.font.title": "Skrifttype", + "settings.general.row.font.description": "Tilpas mono-skrifttypen brugt i kodeblokke", + + "settings.general.notifications.agent.title": "Agent", + "settings.general.notifications.agent.description": + "Vis systemmeddelelse når agenten er færdig eller kræver opmærksomhed", + "settings.general.notifications.permissions.title": "Tilladelser", + "settings.general.notifications.permissions.description": "Vis systemmeddelelse når en tilladelse er påkrævet", + "settings.general.notifications.errors.title": "Fejl", + "settings.general.notifications.errors.description": "Vis systemmeddelelse når der opstår en fejl", + + "settings.general.sounds.agent.title": "Agent", + "settings.general.sounds.agent.description": "Afspil lyd når agenten er færdig eller kræver opmærksomhed", + "settings.general.sounds.permissions.title": "Tilladelser", + "settings.general.sounds.permissions.description": "Afspil lyd når en tilladelse er påkrævet", + "settings.general.sounds.errors.title": "Fejl", + "settings.general.sounds.errors.description": "Afspil lyd når der opstår en fejl", + + "settings.shortcuts.title": "Tastaturgenveje", + "settings.shortcuts.reset.button": "Nulstil til standard", + "settings.shortcuts.reset.toast.title": "Genveje nulstillet", + "settings.shortcuts.reset.toast.description": "Tastaturgenveje er blevet nulstillet til standard.", + "settings.shortcuts.conflict.title": "Genvej allerede i brug", + "settings.shortcuts.conflict.description": "{{keybind}} er allerede tildelt til {{titles}}.", + "settings.shortcuts.unassigned": "Ikke tildelt", + "settings.shortcuts.pressKeys": "Tryk på taster", + + "settings.shortcuts.group.general": "Generelt", + "settings.shortcuts.group.session": "Session", + "settings.shortcuts.group.navigation": "Navigation", + "settings.shortcuts.group.modelAndAgent": "Model og agent", + "settings.shortcuts.group.terminal": "Terminal", + "settings.shortcuts.group.prompt": "Prompt", + + "settings.providers.title": "Udbydere", + "settings.providers.description": "Udbyderindstillinger vil kunne konfigureres her.", + "settings.models.title": "Modeller", + "settings.models.description": "Modelindstillinger vil kunne konfigureres her.", + "settings.agents.title": "Agenter", + "settings.agents.description": "Agentindstillinger vil kunne konfigureres her.", + "settings.commands.title": "Kommandoer", + "settings.commands.description": "Kommandoindstillinger vil kunne konfigureres her.", + "settings.mcp.title": "MCP", + "settings.mcp.description": "MCP-indstillinger vil kunne konfigureres her.", + + "settings.permissions.title": "Tilladelser", + "settings.permissions.description": "Styr hvilke værktøjer serveren kan bruge som standard.", + "settings.permissions.section.tools": "Værktøjer", + "settings.permissions.toast.updateFailed.title": "Kunne ikke opdatere tilladelser", + + "settings.permissions.action.allow": "Tillad", + "settings.permissions.action.ask": "Spørg", + "settings.permissions.action.deny": "Afvis", + + "settings.permissions.tool.read.title": "Læs", + "settings.permissions.tool.read.description": "Læsning af en fil (matcher filstien)", + "settings.permissions.tool.edit.title": "Rediger", + "settings.permissions.tool.edit.description": + "Ændre filer, herunder redigeringer, skrivninger, patches og multi-redigeringer", + "settings.permissions.tool.glob.title": "Glob", + "settings.permissions.tool.glob.description": "Match filer ved hjælp af glob-mønstre", + "settings.permissions.tool.grep.title": "Grep", + "settings.permissions.tool.grep.description": "Søg i filindhold ved hjælp af regulære udtryk", + "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": "Kør shell-kommandoer", + "settings.permissions.tool.task.title": "Opgave", + "settings.permissions.tool.task.description": "Start underagenter", + "settings.permissions.tool.skill.title": "Færdighed", + "settings.permissions.tool.skill.description": "Indlæs en færdighed efter navn", + "settings.permissions.tool.lsp.title": "LSP", + "settings.permissions.tool.lsp.description": "Kør sprogserverforespørgsler", + "settings.permissions.tool.todoread.title": "Læs To-do", + "settings.permissions.tool.todoread.description": "Læs to-do listen", + "settings.permissions.tool.todowrite.title": "Skriv To-do", + "settings.permissions.tool.todowrite.description": "Opdater to-do listen", + "settings.permissions.tool.webfetch.title": "Webhentning", + "settings.permissions.tool.webfetch.description": "Hent indhold fra en URL", + "settings.permissions.tool.websearch.title": "Websøgning", + "settings.permissions.tool.websearch.description": "Søg på nettet", + "settings.permissions.tool.codesearch.title": "Kodesøgning", + "settings.permissions.tool.codesearch.description": "Søg kode på nettet", + "settings.permissions.tool.external_directory.title": "Ekstern mappe", + "settings.permissions.tool.external_directory.description": "Få adgang til filer uden for projektmappen", + "settings.permissions.tool.doom_loop.title": "Doom Loop", + "settings.permissions.tool.doom_loop.description": "Opdag gentagne værktøjskald med identisk input", + + "workspace.new": "Nyt arbejdsområde", + "workspace.type.local": "lokal", + "workspace.type.sandbox": "sandkasse", + "workspace.create.failed.title": "Kunne ikke oprette arbejdsområde", + "workspace.delete.failed.title": "Kunne ikke slette arbejdsområde", + "workspace.resetting.title": "Nulstiller arbejdsområde", + "workspace.resetting.description": "Dette kan tage et minut.", + "workspace.reset.failed.title": "Kunne ikke nulstille arbejdsområde", + "workspace.reset.success.title": "Arbejdsområde nulstillet", + "workspace.reset.success.description": "Arbejdsområdet matcher nu hovedgrenen.", + "workspace.status.checking": "Tjekker for uflettede ændringer...", + "workspace.status.error": "Kunne ikke bekræfte git-status.", + "workspace.status.clean": "Ingen uflettede ændringer fundet.", + "workspace.status.dirty": "Uflettede ændringer fundet i dette arbejdsområde.", + "workspace.delete.title": "Slet arbejdsområde", + "workspace.delete.confirm": 'Slet arbejdsområde "{{name}}"?', + "workspace.delete.button": "Slet arbejdsområde", + "workspace.reset.title": "Nulstil arbejdsområde", + "workspace.reset.confirm": 'Nulstil arbejdsområde "{{name}}"?', + "workspace.reset.button": "Nulstil arbejdsområde", + "workspace.reset.archived.none": "Ingen aktive sessioner vil blive arkiveret.", + "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.", +} diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index b7eb69882..9b0035548 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -279,6 +279,7 @@ export const dict = { "language.es": "Spanisch", "language.fr": "Französisch", "language.ja": "Japanisch", + "language.da": "Dänisch", "toast.language.title": "Sprache", "toast.language.description": "Zu {{language}} gewechselt", diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 6525b07be..de5c9a32b 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -273,6 +273,7 @@ export const dict = { "language.es": "Spanish", "language.fr": "French", "language.ja": "Japanese", + "language.da": "Danish", "toast.language.title": "Language", "toast.language.description": "Switched to {{language}}", diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index 39864ce5d..d44792921 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -274,6 +274,7 @@ export const dict = { "language.es": "Español", "language.fr": "Francés", "language.ja": "Japonés", + "language.da": "Danés", "toast.language.title": "Idioma", "toast.language.description": "Cambiado a {{language}}", diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index 9522e10d8..0ac1b94e9 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -274,6 +274,7 @@ export const dict = { "language.es": "Espagnol", "language.fr": "Français", "language.ja": "Japonais", + "language.da": "Danois", "toast.language.title": "Langue", "toast.language.description": "Passé à {{language}}", diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index 4da0c160f..9aaf6d6fa 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -272,6 +272,7 @@ export const dict = { "language.es": "スペイン語", "language.fr": "フランス語", "language.ja": "日本語", + "language.da": "デンマーク語", "toast.language.title": "言語", "toast.language.description": "{{language}}に切り替えました", diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index e2417d579..281e1c55d 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -276,6 +276,7 @@ export const dict = { "language.es": "스페인어", "language.fr": "프랑스어", "language.ja": "일본어", + "language.da": "덴마크어", "toast.language.title": "언어", "toast.language.description": "{{language}}(으)로 전환됨", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index d780dc4c4..e5c2049d6 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -272,6 +272,7 @@ export const dict = { "language.es": "西班牙语", "language.fr": "法语", "language.ja": "日语", + "language.da": "丹麦语", "toast.language.title": "语言", "toast.language.description": "已切换到{{language}}", diff --git a/packages/ui/src/i18n/da.ts b/packages/ui/src/i18n/da.ts new file mode 100644 index 000000000..2b4a9ca07 --- /dev/null +++ b/packages/ui/src/i18n/da.ts @@ -0,0 +1,90 @@ +export const dict = { + "ui.sessionReview.title": "Sessionsændringer", + "ui.sessionReview.diffStyle.unified": "Samlet", + "ui.sessionReview.diffStyle.split": "Opdelt", + "ui.sessionReview.expandAll": "Udvid alle", + "ui.sessionReview.collapseAll": "Skjul alle", + + "ui.sessionTurn.steps.show": "Vis trin", + "ui.sessionTurn.steps.hide": "Skjul trin", + "ui.sessionTurn.summary.response": "Svar", + "ui.sessionTurn.diff.showMore": "Vis flere ændringer ({{count}})", + + "ui.sessionTurn.retry.retrying": "prøver igen", + "ui.sessionTurn.retry.inSeconds": "om {{seconds}}s", + + "ui.sessionTurn.status.delegating": "Delegerer arbejde", + "ui.sessionTurn.status.planning": "Planlægger næste trin", + "ui.sessionTurn.status.gatheringContext": "Indsamler kontekst", + "ui.sessionTurn.status.searchingCodebase": "Søger i koden", + "ui.sessionTurn.status.searchingWeb": "Søger på nettet", + "ui.sessionTurn.status.makingEdits": "Laver ændringer", + "ui.sessionTurn.status.runningCommands": "Kører kommandoer", + "ui.sessionTurn.status.thinking": "Tænker", + "ui.sessionTurn.status.thinkingWithTopic": "Tænker - {{topic}}", + "ui.sessionTurn.status.gatheringThoughts": "Samler tanker", + "ui.sessionTurn.status.consideringNextSteps": "Overvejer næste skridt", + + "ui.messagePart.diagnostic.error": "Fejl", + "ui.messagePart.title.edit": "Rediger", + "ui.messagePart.title.write": "Skriv", + "ui.messagePart.option.typeOwnAnswer": "Skriv dit eget svar", + "ui.messagePart.review.title": "Gennemgå dine svar", + + "ui.list.loading": "Indlæser", + "ui.list.empty": "Ingen resultater", + "ui.list.emptyWithFilter.prefix": "Ingen resultater for", + "ui.list.emptyWithFilter.suffix": "", + + "ui.messageNav.newMessage": "Ny besked", + + "ui.textField.copyToClipboard": "Kopier til udklipsholder", + "ui.textField.copied": "Kopieret", + + "ui.imagePreview.alt": "Billedforhåndsvisning", + + "ui.tool.read": "Læs", + "ui.tool.list": "Liste", + "ui.tool.glob": "Glob", + "ui.tool.grep": "Grep", + "ui.tool.webfetch": "Webhentning", + "ui.tool.shell": "Shell", + "ui.tool.patch": "Patch", + "ui.tool.todos": "To-dos", + "ui.tool.todos.read": "Læs to-dos", + "ui.tool.questions": "Spørgsmål", + "ui.tool.agent": "{{type}} Agent", + + "ui.common.file.one": "fil", + "ui.common.file.other": "filer", + "ui.common.question.one": "spørgsmål", + "ui.common.question.other": "spørgsmål", + + "ui.common.add": "Tilføj", + "ui.common.cancel": "Annuller", + "ui.common.confirm": "Bekræft", + "ui.common.dismiss": "Afvis", + "ui.common.next": "Næste", + "ui.common.submit": "Indsend", + + "ui.permission.deny": "Afvis", + "ui.permission.allowAlways": "Tillad altid", + "ui.permission.allowOnce": "Tillad én gang", + + "ui.message.expand": "Udvid besked", + "ui.message.collapse": "Skjul besked", + "ui.message.copy": "Kopier", + "ui.message.copied": "Kopieret!", + "ui.message.attachment.alt": "vedhæftning", + + "ui.patch.action.deleted": "Slettet", + "ui.patch.action.created": "Oprettet", + "ui.patch.action.moved": "Flyttet", + "ui.patch.action.patched": "Patched", + + "ui.question.subtitle.answered": "{{count}} besvaret", + "ui.question.answer.none": "(intet svar)", + "ui.question.review.notAnswered": "(ikke besvaret)", + "ui.question.multiHint": "(vælg alle der gælder)", + "ui.question.custom.placeholder": "Skriv dit svar...", +}