Rasmus Erik Voel Jensen 9 сар өмнө
parent
commit
008e339b6d
2 өөрчлөгдсөн 836 нэмэгдсэн , 0 устгасан
  1. 832 0
      app/locales/da.ts
  2. 4 0
      app/locales/index.ts

+ 832 - 0
app/locales/da.ts

@@ -0,0 +1,832 @@
+import { getClientConfig } from "../config/client";
+import { SubmitKey } from "../store/config";
+import { SAAS_CHAT_UTM_URL } from "@/app/constant";
+import { PartialLocaleType } from "./index";
+
+const isApp = !!getClientConfig()?.isApp;
+const da: PartialLocaleType = {
+  WIP: "Der kommer snart mere...",
+  Error: {
+    Unauthorized: isApp
+      ? `Hov, der skete en fejl. Sådan kan du komme videre:
+       \\ 1️⃣ Er du ny her? [Tryk for at starte nu 🚀](${SAAS_CHAT_UTM_URL})
+       \\ 2️⃣ Vil du bruge dine egne OpenAI-nøgler? [Tryk her](/#/settings) for at ændre indstillinger ⚙️`
+      : `Hov, der skete en fejl. Lad os løse det:
+       \\ 1️⃣ Er du ny her? [Tryk for at starte nu 🚀](${SAAS_CHAT_UTM_URL})
+       \\ 2️⃣ Bruger du en privat opsætning? [Tryk her](/#/auth) for at taste din nøgle 🔑
+       \\ 3️⃣ Vil du bruge dine egne OpenAI-nøgler? [Tryk her](/#/settings) for at ændre indstillinger ⚙️
+       `,
+  },
+  Auth: {
+    Return: "Tilbage",
+    Title: "Adgangskode",
+    Tips: "Skriv venligst koden herunder",
+    SubTips: "Eller brug din egen OpenAI- eller Google-nøgle",
+    Input: "Adgangskode",
+    Confirm: "OK",
+    Later: "Senere",
+    SaasTips: "Hvis det er for svært, kan du starte nu",
+  },
+  ChatItem: {
+    ChatItemCount: (count: number) => `${count} beskeder`,
+  },
+  Chat: {
+    SubTitle: (count: number) => `${count} beskeder`,
+    EditMessage: {
+      Title: "Rediger beskeder",
+      Topic: {
+        Title: "Emne",
+        SubTitle: "Skift emne for denne chat",
+      },
+    },
+    Actions: {
+      ChatList: "Gå til chatliste",
+      CompressedHistory: "Komprimeret historie",
+      Export: "Eksporter alle beskeder som Markdown",
+      Copy: "Kopiér",
+      Stop: "Stop",
+      Retry: "Prøv igen",
+      Pin: "Fastgør",
+      PinToastContent: "1 besked er nu fastgjort",
+      PinToastAction: "Se",
+      Delete: "Slet",
+      Edit: "Rediger",
+      FullScreen: "Fuld skærm",
+      RefreshTitle: "Opdatér titel",
+      RefreshToast: "Anmodning om ny titel sendt",
+      Speech: "Afspil",
+      StopSpeech: "Stop",
+    },
+    Commands: {
+      new: "Ny chat",
+      newm: "Ny chat med persona",
+      next: "Næste chat",
+      prev: "Forrige chat",
+      clear: "Ryd alt før",
+      fork: "Kopiér chat",
+      del: "Slet chat",
+    },
+    InputActions: {
+      Stop: "Stop",
+      ToBottom: "Ned til nyeste",
+      Theme: {
+        auto: "Automatisk",
+        light: "Lyst tema",
+        dark: "Mørkt tema",
+      },
+      Prompt: "Prompts",
+      Masks: "Personaer",
+      Clear: "Ryd kontekst",
+      Settings: "Indstillinger",
+      UploadImage: "Upload billeder",
+    },
+    Rename: "Omdøb chat",
+    Typing: "Skriver…",
+    Input: (submitKey: string) => {
+      let inputHints = `${submitKey} for at sende`;
+      if (submitKey === String(SubmitKey.Enter)) {
+        inputHints += ", Shift + Enter for ny linje";
+      }
+      return (
+        inputHints + ", / for at søge i prompts, : for at bruge kommandoer"
+      );
+    },
+    Send: "Send",
+    StartSpeak: "Start oplæsning",
+    StopSpeak: "Stop oplæsning",
+    Config: {
+      Reset: "Nulstil til standard",
+      SaveAs: "Gem som persona",
+    },
+    IsContext: "Ekstra prompt til baggrund",
+    ShortcutKey: {
+      Title: "Hurtigtaster",
+      newChat: "Åbn ny chat",
+      focusInput: "Fokus på tekstfeltet",
+      copyLastMessage: "Kopiér sidste svar",
+      copyLastCode: "Kopiér sidste kodeblok",
+      showShortcutKey: "Vis hurtigtaster",
+      clearContext: "Ryd kontekst",
+    },
+  },
+  Export: {
+    Title: "Eksportér beskeder",
+    Copy: "Kopiér alt",
+    Download: "Download",
+    MessageFromYou: "Fra dig",
+    MessageFromChatGPT: "Fra ChatGPT",
+    Share: "Del til ShareGPT",
+    Format: {
+      Title: "Filformat",
+      SubTitle: "Vælg enten Markdown eller PNG-billede",
+    },
+    IncludeContext: {
+      Title: "Tag baggrund med",
+      SubTitle: "Skal ekstra baggrund (persona) med i eksporten?",
+    },
+    Steps: {
+      Select: "Vælg",
+      Preview: "Forhåndsvis",
+    },
+    Image: {
+      Toast: "Laver billede...",
+      Modal: "Tryk længe eller højreklik for at gemme",
+    },
+    Artifacts: {
+      Title: "Del side",
+      Error: "Fejl ved deling",
+    },
+  },
+  Select: {
+    Search: "Søg",
+    All: "Vælg alle",
+    Latest: "Vælg nyeste",
+    Clear: "Ryd alt",
+  },
+  Memory: {
+    Title: "Huskesætning",
+    EmptyContent: "Ingenting lige nu.",
+    Send: "Send huskesætning",
+    Copy: "Kopiér huskesætning",
+    Reset: "Nulstil chat",
+    ResetConfirm:
+      "Dette sletter nuværende samtale og hukommelse. Er du sikker?",
+  },
+  Home: {
+    NewChat: "Ny Chat",
+    DeleteChat: "Vil du slette den valgte chat?",
+    DeleteToast: "Chat slettet",
+    Revert: "Fortryd",
+  },
+  Settings: {
+    Title: "Indstillinger",
+    SubTitle: "Alle indstillinger",
+    ShowPassword: "Vis kodeord",
+    Danger: {
+      Reset: {
+        Title: "Nulstil alle indstillinger",
+        SubTitle: "Gendan alt til standard",
+        Action: "Nulstil",
+        Confirm: "Vil du virkelig nulstille alt?",
+      },
+      Clear: {
+        Title: "Slet alle data",
+        SubTitle: "Sletter alt om beskeder og indstillinger",
+        Action: "Slet",
+        Confirm: "Er du sikker på, at du vil slette alt?",
+      },
+    },
+    Lang: {
+      Name: "Language",
+      All: "Alle sprog",
+    },
+    Avatar: "Avatar",
+    FontSize: {
+      Title: "Skriftstørrelse",
+      SubTitle: "Vælg, hvor stor teksten skal være",
+    },
+    FontFamily: {
+      Title: "Skrifttype",
+      SubTitle: "Hvis tom, bruger den standard skrifttype",
+      Placeholder: "Skrifttype-navn",
+    },
+    InjectSystemPrompts: {
+      Title: "Tilføj system-prompt",
+      SubTitle: "Læg altid en ekstra prompt først i anmodninger",
+    },
+    InputTemplate: {
+      Title: "Tekstskabelon",
+      SubTitle: "Den seneste besked placeres i denne skabelon",
+    },
+    Update: {
+      Version: (x: string) => `Version: ${x}`,
+      IsLatest: "Du har nyeste version",
+      CheckUpdate: "Tjek efter opdatering",
+      IsChecking: "Tjekker...",
+      FoundUpdate: (x: string) => `Ny version fundet: ${x}`,
+      GoToUpdate: "Opdatér",
+      Success: "Opdatering lykkedes.",
+      Failed: "Opdatering mislykkedes.",
+    },
+    SendKey: "Tast for send",
+    Theme: "Tema",
+    TightBorder: "Stram kant",
+    SendPreviewBubble: {
+      Title: "Forhåndsvisnings-boble",
+      SubTitle: "Vis tekst, før den sendes",
+    },
+    AutoGenerateTitle: {
+      Title: "Lav titel automatisk",
+      SubTitle: "Foreslå en titel ud fra chatten",
+    },
+    Sync: {
+      CloudState: "Seneste opdatering",
+      NotSyncYet: "Endnu ikke synkroniseret",
+      Success: "Synkronisering lykkedes",
+      Fail: "Synkronisering mislykkedes",
+      Config: {
+        Modal: {
+          Title: "Indstil synk",
+          Check: "Tjek forbindelse",
+        },
+        SyncType: {
+          Title: "Synk-type",
+          SubTitle: "Vælg en synk-tjeneste",
+        },
+        Proxy: {
+          Title: "Aktivér proxy",
+          SubTitle: "Brug proxy for at undgå netværksproblemer",
+        },
+        ProxyUrl: {
+          Title: "Proxy-adresse",
+          SubTitle: "Bruges kun til projektets egen proxy",
+        },
+        WebDav: {
+          Endpoint: "WebDAV-adresse",
+          UserName: "Brugernavn",
+          Password: "Kodeord",
+        },
+        UpStash: {
+          Endpoint: "UpStash Redis REST URL",
+          UserName: "Backup-navn",
+          Password: "UpStash Redis REST Token",
+        },
+      },
+      LocalState: "Lokale data",
+      Overview: (overview: any) =>
+        `${overview.chat} chats, ${overview.message} beskeder, ${overview.prompt} prompts, ${overview.mask} personaer`,
+      ImportFailed: "Import mislykkedes",
+    },
+    Mask: {
+      Splash: {
+        Title: "Persona-forside",
+        SubTitle: "Vis denne side, når du opretter ny chat",
+      },
+      Builtin: {
+        Title: "Skjul indbyggede personaer",
+        SubTitle: "Vis ikke de indbyggede personaer i listen",
+      },
+    },
+    Prompt: {
+      Disable: {
+        Title: "Slå auto-forslag fra",
+        SubTitle: "Tast / for at få forslag",
+      },
+      List: "Prompt-liste",
+      ListCount: (builtin: number, custom: number) =>
+        `${builtin} indbygget, ${custom} brugerdefineret`,
+      Edit: "Rediger",
+      Modal: {
+        Title: "Prompt-liste",
+        Add: "Tilføj",
+        Search: "Søg prompts",
+      },
+      EditModal: {
+        Title: "Rediger prompt",
+      },
+    },
+    HistoryCount: {
+      Title: "Antal beskeder, der følger med",
+      SubTitle: "Hvor mange af de tidligere beskeder, der sendes hver gang",
+    },
+    CompressThreshold: {
+      Title: "Komprimeringsgrænse",
+      SubTitle:
+        "Hvis chatten bliver for lang, vil den komprimeres efter dette antal tegn",
+    },
+    Usage: {
+      Title: "Brug og saldo",
+      SubTitle(used: any, total: any) {
+        return `Du har brugt $${used} i denne måned, og din grænse er $${total}.`;
+      },
+      IsChecking: "Tjekker...",
+      Check: "Tjek igen",
+      NoAccess: "Indtast API-nøgle for at se forbrug",
+    },
+    Access: {
+      AccessCode: {
+        Title: "Adgangskode",
+        SubTitle: "Adgangskontrol er slået til",
+        Placeholder: "Skriv kode her",
+      },
+      CustomEndpoint: {
+        Title: "Brugerdefineret adresse",
+        SubTitle: "Brug Azure eller OpenAI fra egen server",
+      },
+      Provider: {
+        Title: "Model-udbyder",
+        SubTitle: "Vælg Azure eller OpenAI",
+      },
+      OpenAI: {
+        ApiKey: {
+          Title: "OpenAI API-nøgle",
+          SubTitle: "Brug din egen nøgle",
+          Placeholder: "sk-xxx",
+        },
+        Endpoint: {
+          Title: "OpenAI Endpoint",
+          SubTitle: "Skal starte med http(s):// eller /api/openai som standard",
+        },
+      },
+      Azure: {
+        ApiKey: {
+          Title: "Azure Api Key",
+          SubTitle: "Hent din nøgle fra Azure-portalen",
+          Placeholder: "Azure Api Key",
+        },
+        Endpoint: {
+          Title: "Azure Endpoint",
+          SubTitle: "F.eks.: ",
+        },
+        ApiVerion: {
+          Title: "Azure Api Version",
+          SubTitle: "Hentet fra Azure-portalen",
+        },
+      },
+      Anthropic: {
+        ApiKey: {
+          Title: "Anthropic API-nøgle",
+          SubTitle: "Brug din egen Anthropic-nøgle",
+          Placeholder: "Anthropic API Key",
+        },
+        Endpoint: {
+          Title: "Endpoint-adresse",
+          SubTitle: "F.eks.: ",
+        },
+        ApiVerion: {
+          Title: "API-version (Claude)",
+          SubTitle: "Vælg den ønskede version",
+        },
+      },
+      Baidu: {
+        ApiKey: {
+          Title: "Baidu-nøgle",
+          SubTitle: "Din egen Baidu-nøgle",
+          Placeholder: "Baidu API Key",
+        },
+        SecretKey: {
+          Title: "Baidu hemmelig nøgle",
+          SubTitle: "Din egen hemmelige nøgle fra Baidu",
+          Placeholder: "Baidu Secret Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "Kan ikke ændres, se .env",
+        },
+      },
+      Tencent: {
+        ApiKey: {
+          Title: "Tencent-nøgle",
+          SubTitle: "Din egen nøgle fra Tencent",
+          Placeholder: "Tencent API Key",
+        },
+        SecretKey: {
+          Title: "Tencent hemmelig nøgle",
+          SubTitle: "Din egen hemmelige nøgle fra Tencent",
+          Placeholder: "Tencent Secret Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "Kan ikke ændres, se .env",
+        },
+      },
+      ByteDance: {
+        ApiKey: {
+          Title: "ByteDance-nøgle",
+          SubTitle: "Din egen nøgle til ByteDance",
+          Placeholder: "ByteDance API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      Alibaba: {
+        ApiKey: {
+          Title: "Alibaba-nøgle",
+          SubTitle: "Din egen Alibaba Cloud-nøgle",
+          Placeholder: "Alibaba Cloud API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      Moonshot: {
+        ApiKey: {
+          Title: "Moonshot-nøgle",
+          SubTitle: "Din egen Moonshot-nøgle",
+          Placeholder: "Moonshot API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      DeepSeek: {
+        ApiKey: {
+          Title: "DeepSeek-nøgle",
+          SubTitle: "Din egen DeepSeek-nøgle",
+          Placeholder: "DeepSeek API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      XAI: {
+        ApiKey: {
+          Title: "XAI-nøgle",
+          SubTitle: "Din egen XAI-nøgle",
+          Placeholder: "XAI API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      ChatGLM: {
+        ApiKey: {
+          Title: "ChatGLM-nøgle",
+          SubTitle: "Din egen ChatGLM-nøgle",
+          Placeholder: "ChatGLM API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      SiliconFlow: {
+        ApiKey: {
+          Title: "SiliconFlow-nøgle",
+          SubTitle: "Din egen SiliconFlow-nøgle",
+          Placeholder: "SiliconFlow API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      Stability: {
+        ApiKey: {
+          Title: "Stability-nøgle",
+          SubTitle: "Din egen Stability-nøgle",
+          Placeholder: "Stability API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      Iflytek: {
+        ApiKey: {
+          Title: "Iflytek API Key",
+          SubTitle: "Nøgle fra Iflytek",
+          Placeholder: "Iflytek API Key",
+        },
+        ApiSecret: {
+          Title: "Iflytek hemmelig nøgle",
+          SubTitle: "Hentet fra Iflytek",
+          Placeholder: "Iflytek API Secret",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+      },
+      CustomModel: {
+        Title: "Egne modelnavne",
+        SubTitle: "Skriv komma-adskilte navne",
+      },
+      Google: {
+        ApiKey: {
+          Title: "Google-nøgle",
+          SubTitle: "Få din nøgle hos Google AI",
+          Placeholder: "Google AI API Key",
+        },
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "F.eks.: ",
+        },
+        ApiVersion: {
+          Title: "API-version (til gemini-pro)",
+          SubTitle: "Vælg en bestemt version",
+        },
+        GoogleSafetySettings: {
+          Title: "Google sikkerhedsindstillinger",
+          SubTitle: "Vælg et niveau for indholdskontrol",
+        },
+      },
+    },
+    Model: "Model",
+    CompressModel: {
+      Title: "Opsummeringsmodel",
+      SubTitle: "Bruges til at korte historik ned og lave titel",
+    },
+    Temperature: {
+      Title: "Temperatur",
+      SubTitle: "Jo højere tal, jo mere kreativt svar",
+    },
+    TopP: {
+      Title: "Top P",
+      SubTitle: "Skal ikke ændres sammen med temperatur",
+    },
+    MaxTokens: {
+      Title: "Maks. længde",
+      SubTitle: "Hvor mange tokens (ord/stykker tekst) der kan bruges",
+    },
+    PresencePenalty: {
+      Title: "Nye emner",
+      SubTitle: "Jo højere tal, jo mere nyt indhold",
+    },
+    FrequencyPenalty: {
+      Title: "Gentagelsesstraf",
+      SubTitle: "Jo højere tal, jo mindre gentagelse",
+    },
+    TTS: {
+      Enable: {
+        Title: "Tænd for oplæsning (TTS)",
+        SubTitle: "Slå tekst-til-tale til",
+      },
+      Autoplay: {
+        Title: "Automatisk oplæsning",
+        SubTitle: "Laver lyd automatisk, hvis TTS er slået til",
+      },
+      Model: "Model",
+      Voice: {
+        Title: "Stemme",
+        SubTitle: "Hvilken stemme der bruges til lyd",
+      },
+      Speed: {
+        Title: "Hastighed",
+        SubTitle: "Hvor hurtigt der oplæses",
+      },
+      Engine: "TTS-motor",
+    },
+    Realtime: {
+      Enable: {
+        Title: "Live-chat",
+        SubTitle: "Slå live-svar til",
+      },
+      Provider: {
+        Title: "Modeludbyder",
+        SubTitle: "Vælg forskellig udbyder",
+      },
+      Model: {
+        Title: "Model",
+        SubTitle: "Vælg en model",
+      },
+      ApiKey: {
+        Title: "API-nøgle",
+        SubTitle: "Din nøgle",
+        Placeholder: "API-nøgle",
+      },
+      Azure: {
+        Endpoint: {
+          Title: "Adresse",
+          SubTitle: "Endpoint til Azure",
+        },
+        Deployment: {
+          Title: "Udrulningsnavn",
+          SubTitle: "Navn for dit Azure-setup",
+        },
+      },
+      Temperature: {
+        Title: "Temperatur",
+        SubTitle: "Højere tal = mere varierede svar",
+      },
+    },
+  },
+  Store: {
+    DefaultTopic: "Ny samtale",
+    BotHello: "Hej! Hvordan kan jeg hjælpe dig i dag?",
+    Error: "Noget gik galt. Prøv igen senere.",
+    Prompt: {
+      History: (content: string) =>
+        "Her er et kort resume af, hvad vi har snakket om: " + content,
+      Topic:
+        "Find en kort overskrift med 4-5 ord om emnet. Ingen tegnsætning eller anførselstegn.",
+      Summarize:
+        "Skriv et kort resumé (under 200 ord) af vores samtale til senere brug.",
+    },
+  },
+  Copy: {
+    Success: "Kopieret",
+    Failed: "Kunne ikke kopiere. Giv adgang til udklipsholder.",
+  },
+  Download: {
+    Success: "Filen er downloadet.",
+    Failed: "Download fejlede.",
+  },
+  Context: {
+    Toast: (x: any) => `Inkluderer ${x} ekstra prompts`,
+    Edit: "Chatindstillinger",
+    Add: "Tilføj prompt",
+    Clear: "Kontekst ryddet",
+    Revert: "Fortryd",
+  },
+  Discovery: {
+    Name: "Oplev",
+  },
+  Mcp: {
+    Name: "MCP",
+  },
+  FineTuned: {
+    Sysmessage: "Du er en hjælper, der skal...",
+  },
+  SearchChat: {
+    Name: "Søg",
+    Page: {
+      Title: "Søg i tidligere chats",
+      Search: "Skriv her for at søge",
+      NoResult: "Ingen resultater",
+      NoData: "Ingen data",
+      Loading: "Henter...",
+      SubTitle: (count: number) => `Fandt ${count} resultater`,
+    },
+    Item: {
+      View: "Vis",
+    },
+  },
+  Plugin: {
+    Name: "Plugin",
+    Page: {
+      Title: "Plugins",
+      SubTitle: (count: number) => `${count} plugins`,
+      Search: "Søg plugin",
+      Create: "Opret nyt",
+      Find: "Du kan finde flere plugins på GitHub: ",
+    },
+    Item: {
+      Info: (count: number) => `${count} metode`,
+      View: "Vis",
+      Edit: "Rediger",
+      Delete: "Slet",
+      DeleteConfirm: "Vil du slette?",
+    },
+    Auth: {
+      None: "Ingen",
+      Basic: "Basic",
+      Bearer: "Bearer",
+      Custom: "Tilpasset",
+      CustomHeader: "Parameternavn",
+      Token: "Token",
+      Proxy: "Brug Proxy",
+      ProxyDescription: "Løs CORS-problemer med Proxy",
+      Location: "Sted",
+      LocationHeader: "Header",
+      LocationQuery: "Query",
+      LocationBody: "Body",
+    },
+    EditModal: {
+      Title: (readonly: boolean) =>
+        `Rediger Plugin ${readonly ? "(skrivebeskyttet)" : ""}`,
+      Download: "Download",
+      Auth: "Godkendelsestype",
+      Content: "OpenAPI Schema",
+      Load: "Hent fra URL",
+      Method: "Metode",
+      Error: "Fejl i OpenAPI Schema",
+    },
+  },
+  Mask: {
+    Name: "Persona",
+    Page: {
+      Title: "Prompts som personaer",
+      SubTitle: (count: number) => `${count} skabeloner`,
+      Search: "Søg skabeloner",
+      Create: "Opret ny",
+    },
+    Item: {
+      Info: (count: number) => `${count} prompts`,
+      Chat: "Chat",
+      View: "Vis",
+      Edit: "Rediger",
+      Delete: "Slet",
+      DeleteConfirm: "Vil du slette?",
+    },
+    EditModal: {
+      Title: (readonly: boolean) =>
+        `Rediger skabelon ${readonly ? "(skrivebeskyttet)" : ""}`,
+      Download: "Download",
+      Clone: "Klon",
+    },
+    Config: {
+      Avatar: "Chat-avatar",
+      Name: "Chat-navn",
+      Sync: {
+        Title: "Brug globale indstillinger",
+        SubTitle: "Gældende for denne chat",
+        Confirm: "Erstat nuværende indstillinger med globale?",
+      },
+      HideContext: {
+        Title: "Skjul ekstra prompts",
+        SubTitle: "Vis dem ikke på chat-skærmen",
+      },
+      Artifacts: {
+        Title: "Brug Artefakter",
+        SubTitle: "Gør det muligt at vise HTML-sider",
+      },
+      CodeFold: {
+        Title: "Fold kode sammen",
+        SubTitle: "Luk/åbn lange kodestykker automatisk",
+      },
+      Share: {
+        Title: "Del denne persona",
+        SubTitle: "Få et link til denne skabelon",
+        Action: "Kopiér link",
+      },
+    },
+  },
+  NewChat: {
+    Return: "Tilbage",
+    Skip: "Start straks",
+    Title: "Vælg en persona",
+    SubTitle: "Chat med den persona, du vælger",
+    More: "Se flere",
+    NotShow: "Vis ikke igen",
+    ConfirmNoShow:
+      "Er du sikker på, at du ikke vil se det igen? Du kan altid slå det til under indstillinger.",
+  },
+  UI: {
+    Confirm: "OK",
+    Cancel: "Fortryd",
+    Close: "Luk",
+    Create: "Opret",
+    Edit: "Rediger",
+    Export: "Eksporter",
+    Import: "Importér",
+    Sync: "Synk",
+    Config: "Konfigurer",
+  },
+  Exporter: {
+    Description: {
+      Title: "Kun beskeder efter sidste rydning vises",
+    },
+    Model: "Model",
+    Messages: "Beskeder",
+    Topic: "Emne",
+    Time: "Tid",
+  },
+  URLCommand: {
+    Code: "Så ud til, at der var en kode i linket. Vil du bruge den?",
+    Settings: "Så ud til, at der var indstillinger i linket. Vil du bruge dem?",
+  },
+  SdPanel: {
+    Prompt: "Prompt",
+    NegativePrompt: "Negativ prompt",
+    PleaseInput: (name: string) => `Indtast: ${name}`,
+    AspectRatio: "Billedformat",
+    ImageStyle: "Stil",
+    OutFormat: "Uddataformat",
+    AIModel: "AI-model",
+    ModelVersion: "Version",
+    Submit: "Send",
+    ParamIsRequired: (name: string) => `${name} er krævet`,
+    Styles: {
+      D3Model: "3d-model",
+      AnalogFilm: "analog-film",
+      Anime: "anime",
+      Cinematic: "cinematisk",
+      ComicBook: "tegneserie",
+      DigitalArt: "digital-art",
+      Enhance: "enhance",
+      FantasyArt: "fantasy-art",
+      Isometric: "isometric",
+      LineArt: "line-art",
+      LowPoly: "low-poly",
+      ModelingCompound: "modeling-compound",
+      NeonPunk: "neon-punk",
+      Origami: "origami",
+      Photographic: "fotografisk",
+      PixelArt: "pixel-art",
+      TileTexture: "tile-texture",
+    },
+  },
+  Sd: {
+    SubTitle: (count: number) => `${count} billeder`,
+    Actions: {
+      Params: "Se indstillinger",
+      Copy: "Kopiér prompt",
+      Delete: "Slet",
+      Retry: "Prøv igen",
+      ReturnHome: "Til forsiden",
+      History: "Historik",
+    },
+    EmptyRecord: "Ingen billeder endnu",
+    Status: {
+      Name: "Status",
+      Success: "Ok",
+      Error: "Fejl",
+      Wait: "Venter",
+      Running: "I gang",
+    },
+    Danger: {
+      Delete: "Vil du slette?",
+    },
+    GenerateParams: "Genereringsvalg",
+    Detail: "Detaljer",
+  },
+};
+
+export default da;

+ 4 - 0
app/locales/index.ts

@@ -2,6 +2,7 @@ import cn from "./cn";
 import en from "./en";
 import pt from "./pt";
 import tw from "./tw";
+import da from "./da";
 import id from "./id";
 import fr from "./fr";
 import es from "./es";
@@ -30,6 +31,7 @@ const ALL_LANGS = {
   en,
   tw,
   pt,
+  da,
   jp,
   ko,
   id,
@@ -56,6 +58,7 @@ export const ALL_LANG_OPTIONS: Record<Lang, string> = {
   en: "English",
   pt: "Português",
   tw: "繁體中文",
+  da: "Dansk",
   jp: "日本語",
   ko: "한국어",
   id: "Indonesia",
@@ -141,6 +144,7 @@ export const STT_LANG_MAP: Record<Lang, string> = {
   en: "en-US",
   pt: "pt-BR",
   tw: "zh-TW",
+  da: "da-DK",
   jp: "ja-JP",
   ko: "ko-KR",
   id: "id-ID",