no.ts 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594
  1. import { SubmitKey } from "../store/config";
  2. import type { PartialLocaleType } from "./index";
  3. import { getClientConfig } from "../config/client";
  4. import { SAAS_CHAT_UTM_URL } from "@/app/constant";
  5. const isApp = !!getClientConfig()?.isApp;
  6. const no: PartialLocaleType = {
  7. WIP: "Arbeid pågår ...",
  8. Error: {
  9. Unauthorized: isApp
  10. ? `😆 Samtalen har støtt på noen problemer, ikke bekymre deg:
  11. \\ 1️⃣ Hvis du vil starte uten konfigurasjon, [klikk her for å begynne å chatte umiddelbart 🚀](${SAAS_CHAT_UTM_URL})
  12. \\ 2️⃣ Hvis du vil bruke dine egne OpenAI-ressurser, klikk [her](/#/settings) for å endre innstillingene ⚙️`
  13. : `😆 Samtalen har støtt på noen problemer, ikke bekymre deg:
  14. \ 1️⃣ Hvis du vil starte uten konfigurasjon, [klikk her for å begynne å chatte umiddelbart 🚀](${SAAS_CHAT_UTM_URL})
  15. \ 2️⃣ Hvis du bruker en privat distribusjonsversjon, klikk [her](/#/auth) for å skrive inn tilgangsnøkkelen 🔑
  16. \ 3️⃣ Hvis du vil bruke dine egne OpenAI-ressurser, klikk [her](/#/settings) for å endre innstillingene ⚙️
  17. `,
  18. },
  19. Auth: {
  20. Title: "Passord påkrevd",
  21. Tips: "Administrator har aktivert passordbeskyttelse. Vennligst skriv inn tilgangskoden nedenfor",
  22. SubTips: "Eller skriv inn din OpenAI eller Google API-nøkkel",
  23. Input: "Skriv tilgangskoden her",
  24. Confirm: "Bekreft",
  25. Later: "Kom tilbake senere",
  26. Return: "Tilbake",
  27. SaasTips:
  28. "Konfigurasjonen er for komplisert, jeg vil bruke det med en gang",
  29. TopTips:
  30. "🥳 NextChat AI lanseringstilbud, lås opp OpenAI o1, GPT-4o, Claude-3.5 og de nyeste store modellene nå",
  31. },
  32. ChatItem: {
  33. ChatItemCount: (count: number) => `${count} samtaler`,
  34. },
  35. Chat: {
  36. SubTitle: (count: number) => `Totalt ${count} samtaler`,
  37. EditMessage: {
  38. Title: "Rediger meldingshistorikk",
  39. Topic: {
  40. Title: "Samtaleemne",
  41. SubTitle: "Endre nåværende samtaleemne",
  42. },
  43. },
  44. Actions: {
  45. ChatList: "Vis meldingsliste",
  46. CompressedHistory: "Vis komprimert historikk",
  47. Export: "Eksporter samtaler",
  48. Copy: "Kopier",
  49. Stop: "Stopp",
  50. Retry: "Prøv igjen",
  51. Pin: "Fest",
  52. PinToastContent:
  53. "1 samtale er festet til forhåndsdefinerte oppfordringer",
  54. PinToastAction: "Se",
  55. Delete: "Slett",
  56. Edit: "Rediger",
  57. RefreshTitle: "Oppdater tittel",
  58. RefreshToast: "Forespørsel om titteloppdatering sendt",
  59. },
  60. Commands: {
  61. new: "Ny samtale",
  62. newm: "Start samtale fra maske",
  63. next: "Neste samtale",
  64. prev: "Forrige samtale",
  65. clear: "Rydd kontekst",
  66. del: "Slett samtale",
  67. },
  68. InputActions: {
  69. Stop: "Stopp respons",
  70. ToBottom: "Rull til nyeste",
  71. Theme: {
  72. auto: "Automatisk tema",
  73. light: "Lyst tema",
  74. dark: "Mørkt tema",
  75. },
  76. Prompt: "Hurtigkommando",
  77. Masks: "Alle masker",
  78. Clear: "Rydd samtale",
  79. Settings: "Samtaleinnstillinger",
  80. UploadImage: "Last opp bilde",
  81. },
  82. Rename: "Gi nytt navn til samtale",
  83. Typing: "Skriver…",
  84. Input: (submitKey: string) => {
  85. var inputHints = `${submitKey} send`;
  86. if (submitKey === String(SubmitKey.Enter)) {
  87. inputHints += ",Shift + Enter for linjeskift";
  88. }
  89. return (
  90. inputHints + ",/ for å utløse autoutfylling, : for å utløse kommando"
  91. );
  92. },
  93. Send: "Send",
  94. Config: {
  95. Reset: "Fjern minne",
  96. SaveAs: "Lagre som maske",
  97. },
  98. IsContext: "Forhåndsdefinerte oppfordringer",
  99. },
  100. Export: {
  101. Title: "Del samtalehistorikk",
  102. Copy: "Kopier alt",
  103. Download: "Last ned fil",
  104. Share: "Del til ShareGPT",
  105. MessageFromYou: "Bruker",
  106. MessageFromChatGPT: "ChatGPT",
  107. Format: {
  108. Title: "Eksporterformat",
  109. SubTitle: "Kan eksporteres som Markdown-tekst eller PNG-bilde",
  110. },
  111. IncludeContext: {
  112. Title: "Inkluder maske kontekst",
  113. SubTitle: "Skal maske kontekst vises i meldinger",
  114. },
  115. Steps: {
  116. Select: "Velg",
  117. Preview: "Forhåndsvis",
  118. },
  119. Image: {
  120. Toast: "Genererer skjermbilde",
  121. Modal: "Langtrykk eller høyreklikk for å lagre bilde",
  122. },
  123. },
  124. Select: {
  125. Search: "Søk meldinger",
  126. All: "Velg alle",
  127. Latest: "Siste meldinger",
  128. Clear: "Fjern valg",
  129. },
  130. Memory: {
  131. Title: "Historisk sammendrag",
  132. EmptyContent: "Samtaleinnholdet er for kort, ingen oppsummering nødvendig",
  133. Send: "Automatisk komprimere samtalehistorikk og sende som kontekst",
  134. Copy: "Kopier sammendrag",
  135. Reset: "[unused]",
  136. ResetConfirm: "Er du sikker på at du vil tømme historisk sammendrag?",
  137. },
  138. Home: {
  139. NewChat: "Ny samtale",
  140. DeleteChat: "Er du sikker på at du vil slette den valgte samtalen?",
  141. DeleteToast: "Samtale slettet",
  142. Revert: "Angre",
  143. },
  144. Settings: {
  145. Title: "Innstillinger",
  146. SubTitle: "Alle innstillingsalternativer",
  147. Danger: {
  148. Reset: {
  149. Title: "Tilbakestill alle innstillinger",
  150. SubTitle:
  151. "Tilbakestill alle innstillingsalternativer til standardverdier",
  152. Action: "Tilbakestill nå",
  153. Confirm: "Bekreft tilbakestilling av alle innstillinger?",
  154. },
  155. Clear: {
  156. Title: "Slett alle data",
  157. SubTitle: "Slett alle samtaler og innstillingsdata",
  158. Action: "Slett nå",
  159. Confirm: "Bekreft sletting av alle samtaler og innstillingsdata?",
  160. },
  161. },
  162. Lang: {
  163. Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
  164. All: "Alle språk",
  165. },
  166. Avatar: "Profilbilde",
  167. FontSize: {
  168. Title: "Skriftstørrelse",
  169. SubTitle: "Skriftstørrelse for samtaleinnhold",
  170. },
  171. FontFamily: {
  172. Title: "Chat-skrifttype",
  173. SubTitle:
  174. "Skrifttypen for chatinnhold, la stå tom for å bruke global standardskrifttype",
  175. Placeholder: "Skriftnavn",
  176. },
  177. InjectSystemPrompts: {
  178. Title: "Injiser systemprompter",
  179. SubTitle:
  180. "Tving inn et systemprompt som simulerer ChatGPT i starten av hver forespørsel",
  181. },
  182. InputTemplate: {
  183. Title: "Forhåndsbehandling av brukerinput",
  184. SubTitle:
  185. "Den nyeste meldingen fra brukeren vil bli fylt ut i denne malen",
  186. },
  187. SendKey: "Send-knapp",
  188. Theme: "Tema",
  189. TightBorder: "Ingen ramme-modus",
  190. SendPreviewBubble: {
  191. Title: "Forhåndsvisningsboble",
  192. SubTitle: "Forhåndsvis Markdown-innhold i en forhåndsvisningsboble",
  193. },
  194. AutoGenerateTitle: {
  195. Title: "Automatisk generere tittel",
  196. SubTitle: "Generer en passende tittel basert på samtaleinnholdet",
  197. },
  198. Sync: {
  199. CloudState: "Skydatasynkronisering",
  200. NotSyncYet: "Har ikke blitt synkronisert ennå",
  201. Success: "Synkronisering vellykket",
  202. Fail: "Synkronisering mislyktes",
  203. Config: {
  204. Modal: {
  205. Title: "Konfigurer sky-synkronisering",
  206. Check: "Sjekk tilgjengelighet",
  207. },
  208. SyncType: {
  209. Title: "Synkroniseringstype",
  210. SubTitle: "Velg ønsket synkroniseringsserver",
  211. },
  212. Proxy: {
  213. Title: "Aktiver proxy",
  214. SubTitle:
  215. "Når du synkroniserer i nettleseren, må proxy være aktivert for å unngå CORS-restriksjoner",
  216. },
  217. ProxyUrl: {
  218. Title: "Proxy-URL",
  219. SubTitle: "Kun for prosjektets innebygde CORS-proxy",
  220. },
  221. WebDav: {
  222. Endpoint: "WebDAV-adresse",
  223. UserName: "Brukernavn",
  224. Password: "Passord",
  225. },
  226. UpStash: {
  227. Endpoint: "UpStash Redis REST-URL",
  228. UserName: "Sikkerhetskopinavn",
  229. Password: "UpStash Redis REST-token",
  230. },
  231. },
  232. LocalState: "Lokal data",
  233. Overview: (overview: any) => {
  234. return `${overview.chat} samtaler, ${overview.message} meldinger, ${overview.prompt} oppfordringer, ${overview.mask} masker`;
  235. },
  236. ImportFailed: "Import mislyktes",
  237. },
  238. Mask: {
  239. Splash: {
  240. Title: "Maskestartside",
  241. SubTitle: "Vis maskestartside når du oppretter en ny samtale",
  242. },
  243. Builtin: {
  244. Title: "Skjul innebygde masker",
  245. SubTitle: "Skjul innebygde masker i alle maskelister",
  246. },
  247. },
  248. Prompt: {
  249. Disable: {
  250. Title: "Deaktiver automatisk fullføring av oppfordringer",
  251. SubTitle: "Skriv / i tekstboksen for å utløse automatisk fullføring",
  252. },
  253. List: "Egendefinerte oppfordringer",
  254. ListCount: (builtin: number, custom: number) =>
  255. `Innebygde ${builtin}, brukerdedefinerte ${custom}`,
  256. Edit: "Rediger",
  257. Modal: {
  258. Title: "Oppfordringsliste",
  259. Add: "Ny",
  260. Search: "Søk oppfordringer",
  261. },
  262. EditModal: {
  263. Title: "Rediger oppfordring",
  264. },
  265. },
  266. HistoryCount: {
  267. Title: "Antall historiske meldinger",
  268. SubTitle: "Antall historiske meldinger som sendes med hver forespørsel",
  269. },
  270. CompressThreshold: {
  271. Title: "Kompressterskel for historiske meldinger",
  272. SubTitle:
  273. "Når ukomprimerte historiske meldinger overskrider denne verdien, vil de bli komprimert",
  274. },
  275. Access: {
  276. SaasStart: {
  277. Title: "Bruk NextChat AI",
  278. Label: "(Den mest kostnadseffektive løsningen)",
  279. SubTitle:
  280. "Offisielt vedlikeholdt av NextChat, klar til bruk uten konfigurasjon, støtter de nyeste store modellene som OpenAI o1, GPT-4o og Claude-3.5",
  281. ChatNow: "Chat nå",
  282. },
  283. AccessCode: {
  284. Title: "Adgangskode",
  285. SubTitle: "Administrator har aktivert kryptert tilgang",
  286. Placeholder: "Skriv inn tilgangskoden",
  287. },
  288. CustomEndpoint: {
  289. Title: "Egendefinert API",
  290. SubTitle: "Bruk egendefinerte Azure- eller OpenAI-tjenester",
  291. },
  292. Provider: {
  293. Title: "Modelltilbyder",
  294. SubTitle: "Bytt til forskjellige tilbydere",
  295. },
  296. OpenAI: {
  297. ApiKey: {
  298. Title: "API-nøkkel",
  299. SubTitle:
  300. "Bruk egendefinert OpenAI-nøkkel for å omgå passordtilgangsbegrensninger",
  301. Placeholder: "OpenAI API-nøkkel",
  302. },
  303. Endpoint: {
  304. Title: "API-adresse",
  305. SubTitle: "Må inkludere http(s):// utenom standardadresse",
  306. },
  307. },
  308. Azure: {
  309. ApiKey: {
  310. Title: "API-nøkkel",
  311. SubTitle:
  312. "Bruk egendefinert Azure-nøkkel for å omgå passordtilgangsbegrensninger",
  313. Placeholder: "Azure API-nøkkel",
  314. },
  315. Endpoint: {
  316. Title: "API-adresse",
  317. SubTitle: "Eksempel:",
  318. },
  319. ApiVerion: {
  320. Title: "API-versjon (azure api versjon)",
  321. SubTitle: "Velg en spesifikk delversjon",
  322. },
  323. },
  324. Anthropic: {
  325. ApiKey: {
  326. Title: "API-nøkkel",
  327. SubTitle:
  328. "Bruk egendefinert Anthropic-nøkkel for å omgå passordtilgangsbegrensninger",
  329. Placeholder: "Anthropic API-nøkkel",
  330. },
  331. Endpoint: {
  332. Title: "API-adresse",
  333. SubTitle: "Eksempel:",
  334. },
  335. ApiVerion: {
  336. Title: "API-versjon (claude api versjon)",
  337. SubTitle: "Velg en spesifikk API-versjon",
  338. },
  339. },
  340. Google: {
  341. ApiKey: {
  342. Title: "API-nøkkel",
  343. SubTitle: "Hent din API-nøkkel fra Google AI",
  344. Placeholder: "Skriv inn din Google AI Studio API-nøkkel",
  345. },
  346. Endpoint: {
  347. Title: "Endepunktadresse",
  348. SubTitle: "Eksempel:",
  349. },
  350. ApiVersion: {
  351. Title: "API-versjon (kun for gemini-pro)",
  352. SubTitle: "Velg en spesifikk API-versjon",
  353. },
  354. GoogleSafetySettings: {
  355. Title: "Google sikkerhetsfiltreringsnivå",
  356. SubTitle: "Sett innholdsfiltreringsnivå",
  357. },
  358. },
  359. Baidu: {
  360. ApiKey: {
  361. Title: "API-nøkkel",
  362. SubTitle: "Bruk egendefinert Baidu API-nøkkel",
  363. Placeholder: "Baidu API-nøkkel",
  364. },
  365. SecretKey: {
  366. Title: "Hemmelig nøkkel",
  367. SubTitle: "Bruk egendefinert Baidu hemmelig nøkkel",
  368. Placeholder: "Baidu hemmelig nøkkel",
  369. },
  370. Endpoint: {
  371. Title: "API-adresse",
  372. SubTitle:
  373. "Støtter ikke egendefinerte konfigurasjoner. Se .env-konfigurasjon.",
  374. },
  375. },
  376. ByteDance: {
  377. ApiKey: {
  378. Title: "API-nøkkel",
  379. SubTitle: "Bruk egendefinert ByteDance API-nøkkel",
  380. Placeholder: "ByteDance API-nøkkel",
  381. },
  382. Endpoint: {
  383. Title: "API-adresse",
  384. SubTitle: "Eksempel:",
  385. },
  386. },
  387. Alibaba: {
  388. ApiKey: {
  389. Title: "API-nøkkel",
  390. SubTitle: "Bruk egendefinert Alibaba Cloud API-nøkkel",
  391. Placeholder: "Alibaba Cloud API-nøkkel",
  392. },
  393. Endpoint: {
  394. Title: "API-adresse",
  395. SubTitle: "Eksempel:",
  396. },
  397. },
  398. CustomModel: {
  399. Title: "Egendefinert modellnavn",
  400. SubTitle: "Legg til egendefinerte modellalternativer, skill med komma",
  401. },
  402. AI302: {
  403. ApiKey: {
  404. Title: "API-nøkkel",
  405. SubTitle: "Bruk egendefinert 302.AI API-nøkkel",
  406. Placeholder: "302.AI API-nøkkel",
  407. },
  408. Endpoint: {
  409. Title: "API-adresse",
  410. SubTitle: "Eksempel:",
  411. },
  412. },
  413. },
  414. Model: "Modell",
  415. CompressModel: {
  416. Title: "Komprimeringsmodell",
  417. SubTitle: "Modell brukt for å komprimere historikken",
  418. },
  419. Temperature: {
  420. Title: "Tilfeldighet (temperature)",
  421. SubTitle: "Høyere verdi gir mer tilfeldige svar",
  422. },
  423. TopP: {
  424. Title: "Kjerneprøvetaking (top_p)",
  425. SubTitle:
  426. "Ligner på tilfeldighet, men endre ikke sammen med tilfeldighet",
  427. },
  428. MaxTokens: {
  429. Title: "Maksimalt antall tokens per svar (max_tokens)",
  430. SubTitle: "Maksimalt antall tokens brukt i en enkelt interaksjon",
  431. },
  432. PresencePenalty: {
  433. Title: "Emnens ferskhet (presence_penalty)",
  434. SubTitle:
  435. "Høyere verdi gir større sannsynlighet for å utvide til nye emner",
  436. },
  437. FrequencyPenalty: {
  438. Title: "Frekvensstraff (frequency_penalty)",
  439. SubTitle:
  440. "Høyere verdi gir større sannsynlighet for å redusere gjentakende ord",
  441. },
  442. },
  443. Store: {
  444. DefaultTopic: "Ny samtale",
  445. BotHello: "Hva kan jeg hjelpe deg med?",
  446. Error: "Noe gikk galt, prøv igjen senere",
  447. Prompt: {
  448. History: (content: string) =>
  449. "Dette er oppsummeringen av historiske samtaler som bakgrunn:" +
  450. content,
  451. Topic:
  452. 'Bruk fire til fem ord for å returnere en kort oppsummering av temaet, uten forklaring, uten tegnsetting, uten fyllord, uten ekstra tekst, uten fet skrift. Hvis det ikke er noe tema, returner bare "sladder".',
  453. Summarize:
  454. "Oppsummer samtalen kort som en kontekstuell prompt for fremtidige referanser, hold det innen 200 tegn",
  455. },
  456. },
  457. Copy: {
  458. Success: "Kopiert til utklippstavlen",
  459. Failed: "Kopiering mislyktes, vennligst gi tillatelse til utklippstavlen",
  460. },
  461. Download: {
  462. Success: "Innholdet er lastet ned til katalogen din.",
  463. Failed: "Nedlasting mislyktes.",
  464. },
  465. Context: {
  466. Toast: (x: any) => `Inneholder ${x} forhåndsinnstilte oppfordringer`,
  467. Edit: "Nåværende samtaleinnstillinger",
  468. Add: "Legg til en ny samtale",
  469. Clear: "Konteksten er tømt",
  470. Revert: "Gjenopprett konteksten",
  471. },
  472. Plugin: {
  473. Name: "Plugin",
  474. },
  475. FineTuned: {
  476. Sysmessage: "Du er en assistent",
  477. },
  478. SearchChat: {
  479. Name: "Søk",
  480. Page: {
  481. Title: "Søk i chatthistorikk",
  482. Search: "Skriv inn søkeord",
  483. NoResult: "Ingen resultater funnet",
  484. NoData: "Ingen data",
  485. Loading: "Laster inn",
  486. SubTitle: (count: number) => `Fant ${count} resultater`,
  487. },
  488. Item: {
  489. View: "Vis",
  490. },
  491. },
  492. Mask: {
  493. Name: "Maske",
  494. Page: {
  495. Title: "Forhåndsdefinerte rollemasker",
  496. SubTitle: (count: number) =>
  497. `${count} forhåndsdefinerte rolledefinisjoner`,
  498. Search: "Søk etter rollemasker",
  499. Create: "Opprett ny",
  500. },
  501. Item: {
  502. Info: (count: number) => `Inneholder ${count} forhåndsdefinerte samtaler`,
  503. Chat: "Samtale",
  504. View: "Vis",
  505. Edit: "Rediger",
  506. Delete: "Slett",
  507. DeleteConfirm: "Bekreft sletting?",
  508. },
  509. EditModal: {
  510. Title: (readonly: boolean) =>
  511. `Rediger forhåndsdefinert maske ${readonly ? "(kun lesing)" : ""}`,
  512. Download: "Last ned forhåndsdefinert",
  513. Clone: "Kopier forhåndsdefinert",
  514. },
  515. Config: {
  516. Avatar: "Rollebilde",
  517. Name: "Rolle navn",
  518. Sync: {
  519. Title: "Bruk globale innstillinger",
  520. SubTitle: "Bruker nåværende samtale globale modellinnstillinger",
  521. Confirm:
  522. "De tilpassede innstillingene for den nåværende samtalen vil bli overskrevet automatisk. Bekreft at du vil bruke globale innstillinger?",
  523. },
  524. HideContext: {
  525. Title: "Skjul forhåndsdefinerte samtaler",
  526. SubTitle:
  527. "Når skjult, vil forhåndsdefinerte samtaler ikke vises i chat-grensesnittet",
  528. },
  529. Share: {
  530. Title: "Del denne masken",
  531. SubTitle: "Generer en direkte lenke til denne masken",
  532. Action: "Kopier lenke",
  533. },
  534. },
  535. },
  536. NewChat: {
  537. Return: "Tilbake",
  538. Skip: "Start direkte",
  539. NotShow: "Vis ikke igjen",
  540. ConfirmNoShow:
  541. "Bekreft deaktivering? Du kan aktivere det igjen i innstillingene når som helst.",
  542. Title: "Velg en maske",
  543. SubTitle: "Start nå, og få tanker som kolliderer med sjelen bak masken",
  544. More: "Se alle",
  545. },
  546. URLCommand: {
  547. Code: "Oppdaget at lenken allerede inneholder tilgangskode. Ønsker du å fylle den ut automatisk?",
  548. Settings:
  549. "Oppdaget at lenken inneholder forhåndsinnstillinger. Ønsker du å fylle dem ut automatisk?",
  550. },
  551. UI: {
  552. Confirm: "Bekreft",
  553. Cancel: "Avbryt",
  554. Close: "Lukk",
  555. Create: "Opprett",
  556. Edit: "Rediger",
  557. Export: "Eksporter",
  558. Import: "Importer",
  559. Sync: "Synkroniser",
  560. Config: "Konfigurer",
  561. },
  562. Exporter: {
  563. Description: {
  564. Title: "Bare meldinger etter at konteksten er ryddet vil bli vist",
  565. },
  566. Model: "Modell",
  567. Messages: "Meldinger",
  568. Topic: "Emne",
  569. Time: "Tid",
  570. },
  571. };
  572. export default no;