mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-13 05:23:42 +08:00
Merge remote-tracking branch 'upstream/main' into klaas20240303
This commit is contained in:
@@ -13,7 +13,7 @@ const cn = {
|
||||
Auth: {
|
||||
Title: "需要密码",
|
||||
Tips: "管理员开启了密码验证,请在下方填入访问码",
|
||||
SubTips: "或者输入你的 OpenAI API 密钥",
|
||||
SubTips: "或者输入你的 OpenAI 或 Google API 密钥",
|
||||
Input: "在此处填写访问码",
|
||||
Confirm: "确认",
|
||||
Later: "稍后再说",
|
||||
@@ -63,6 +63,7 @@ const cn = {
|
||||
Masks: "所有面具",
|
||||
Clear: "清除聊天",
|
||||
Settings: "对话设置",
|
||||
UploadImage: "上传图片",
|
||||
},
|
||||
Rename: "重命名对话",
|
||||
Typing: "正在输入…",
|
||||
@@ -312,6 +313,23 @@ const cn = {
|
||||
SubTitle: "选择指定的部分版本",
|
||||
},
|
||||
},
|
||||
Google: {
|
||||
ApiKey: {
|
||||
Title: "API 密钥",
|
||||
SubTitle: "从 Google AI 获取您的 API 密钥",
|
||||
Placeholder: "输入您的 Google AI Studio API 密钥",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "终端地址",
|
||||
SubTitle: "示例:",
|
||||
},
|
||||
|
||||
ApiVersion: {
|
||||
Title: "API 版本(仅适用于 gemini-pro)",
|
||||
SubTitle: "选择一个特定的 API 版本",
|
||||
},
|
||||
},
|
||||
CustomModel: {
|
||||
Title: "自定义模型名",
|
||||
SubTitle: "增加自定义模型可选项,使用英文逗号隔开",
|
||||
@@ -347,7 +365,7 @@ const cn = {
|
||||
Prompt: {
|
||||
History: (content: string) => "这是历史聊天总结作为前情提要:" + content,
|
||||
Topic:
|
||||
"使用四到五个字直接返回这句话的简要主题,不要解释、不要标点、不要语气词、不要多余文本,如果没有主题,请直接返回“闲聊”",
|
||||
"使用四到五个字直接返回这句话的简要主题,不要解释、不要标点、不要语气词、不要多余文本,不要加粗,如果没有主题,请直接返回“闲聊”",
|
||||
Summarize:
|
||||
"简要总结一下对话内容,用作后续的上下文提示 prompt,控制在 200 字以内",
|
||||
},
|
||||
@@ -441,9 +459,9 @@ const cn = {
|
||||
Config: "配置",
|
||||
},
|
||||
Exporter: {
|
||||
Description : {
|
||||
Title: "只有清除上下文之后的消息会被展示"
|
||||
},
|
||||
Description: {
|
||||
Title: "只有清除上下文之后的消息会被展示",
|
||||
},
|
||||
Model: "模型",
|
||||
Messages: "消息",
|
||||
Topic: "主题",
|
||||
|
@@ -15,7 +15,7 @@ const en: LocaleType = {
|
||||
Auth: {
|
||||
Title: "Need Access Code",
|
||||
Tips: "Please enter access code below",
|
||||
SubTips: "Or enter your OpenAI API Key",
|
||||
SubTips: "Or enter your OpenAI or Google API Key",
|
||||
Input: "access code",
|
||||
Confirm: "Confirm",
|
||||
Later: "Later",
|
||||
@@ -65,6 +65,7 @@ const en: LocaleType = {
|
||||
Masks: "Masks",
|
||||
Clear: "Clear Context",
|
||||
Settings: "Settings",
|
||||
UploadImage: "Upload Images",
|
||||
},
|
||||
Rename: "Rename Chat",
|
||||
Typing: "Typing…",
|
||||
@@ -319,6 +320,23 @@ const en: LocaleType = {
|
||||
Title: "Custom Models",
|
||||
SubTitle: "Custom model options, seperated by comma",
|
||||
},
|
||||
Google: {
|
||||
ApiKey: {
|
||||
Title: "API Key",
|
||||
SubTitle: "Obtain your API Key from Google AI",
|
||||
Placeholder: "Enter your Google AI Studio API Key",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "Endpoint Address",
|
||||
SubTitle: "Example:",
|
||||
},
|
||||
|
||||
ApiVersion: {
|
||||
Title: "API Version (specific to gemini-pro)",
|
||||
SubTitle: "Select a specific API version",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Model: "Model",
|
||||
@@ -353,7 +371,7 @@ const en: LocaleType = {
|
||||
History: (content: string) =>
|
||||
"This is a summary of the chat history as a recap: " + content,
|
||||
Topic:
|
||||
"Please generate a four to five word title summarizing our conversation without any lead-in, punctuation, quotation marks, periods, symbols, or additional text. Remove enclosing quotation marks.",
|
||||
"Please generate a four to five word title summarizing our conversation without any lead-in, punctuation, quotation marks, periods, symbols, bold text, or additional text. Remove enclosing quotation marks.",
|
||||
Summarize:
|
||||
"Create a short summary of the dialogue (using 4000 words at max., ideally less), to support contextual continuity for the upcoming dialogue",
|
||||
},
|
||||
@@ -443,8 +461,8 @@ const en: LocaleType = {
|
||||
},
|
||||
Exporter: {
|
||||
Description: {
|
||||
Title: "Only messages after clearing the context will be displayed"
|
||||
},
|
||||
Title: "Only messages after clearing the context will be displayed",
|
||||
},
|
||||
Model: "Model",
|
||||
Messages: "Messages",
|
||||
Topic: "Topic",
|
||||
|
@@ -16,6 +16,7 @@ import cs from "./cs";
|
||||
import ko from "./ko";
|
||||
import ar from "./ar";
|
||||
import bn from "./bn";
|
||||
import sk from "./sk";
|
||||
import { merge } from "../utils/merge";
|
||||
|
||||
import type { LocaleType } from "./cn";
|
||||
@@ -40,6 +41,7 @@ const ALL_LANGS = {
|
||||
no,
|
||||
ar,
|
||||
bn,
|
||||
sk,
|
||||
};
|
||||
|
||||
export type Lang = keyof typeof ALL_LANGS;
|
||||
@@ -65,6 +67,7 @@ export const ALL_LANG_OPTIONS: Record<Lang, string> = {
|
||||
no: "Nynorsk",
|
||||
ar: "العربية",
|
||||
bn: "বাংলা",
|
||||
sk: "Slovensky",
|
||||
};
|
||||
|
||||
const LANG_KEY = "lang";
|
||||
|
@@ -12,6 +12,13 @@ const jp: PartialLocaleType = {
|
||||
},
|
||||
Chat: {
|
||||
SubTitle: (count: number) => `ChatGPTとの ${count} 通のチャット`,
|
||||
EditMessage: {
|
||||
Title: "全てのメッセージを修正",
|
||||
Topic: {
|
||||
Title: "トピック",
|
||||
SubTitle: "このトピックを変える",
|
||||
},
|
||||
},
|
||||
Actions: {
|
||||
ChatList: "メッセージリストを表示",
|
||||
CompressedHistory: "圧縮された履歴プロンプトを表示",
|
||||
@@ -47,6 +54,28 @@ const jp: PartialLocaleType = {
|
||||
Download: "ファイルをダウンロード",
|
||||
MessageFromYou: "あなたからのメッセージ",
|
||||
MessageFromChatGPT: "ChatGPTからのメッセージ",
|
||||
Format: {
|
||||
Title: "フォーマットをエクスポート",
|
||||
SubTitle: "マークダウン形式、PNG画像形式を選択できます。",
|
||||
},
|
||||
IncludeContext: {
|
||||
Title: "コンテキストを含みますか?",
|
||||
SubTitle: "コンテキストを含ませるか否か",
|
||||
},
|
||||
Steps: {
|
||||
Select: "エクスポート設定",
|
||||
Preview: "プレビュー",
|
||||
},
|
||||
Image: {
|
||||
Toast: "画像生成中...",
|
||||
Modal: "長押し、または右クリックで保存してください。",
|
||||
},
|
||||
},
|
||||
Select: {
|
||||
Search: "検索",
|
||||
All: "すべて選択",
|
||||
Latest: "新しいメッセージを選択",
|
||||
Clear: "クリア",
|
||||
},
|
||||
Memory: {
|
||||
Title: "履歴メモリ",
|
||||
@@ -118,6 +147,10 @@ const jp: PartialLocaleType = {
|
||||
Title: "キャラクターページ",
|
||||
SubTitle: "新規チャット作成時にキャラクターページを表示する",
|
||||
},
|
||||
Builtin: {
|
||||
Title: "ビルトインマスクを非表示",
|
||||
SubTitle: "マスクリストからビルトインを非表示する",
|
||||
},
|
||||
},
|
||||
Prompt: {
|
||||
Disable: {
|
||||
@@ -157,7 +190,6 @@ const jp: PartialLocaleType = {
|
||||
Check: "再確認",
|
||||
NoAccess: "APIキーまたはアクセスパスワードを入力して残高を表示",
|
||||
},
|
||||
|
||||
Model: "モデル (model)",
|
||||
Temperature: {
|
||||
Title: "ランダム性 (temperature)",
|
||||
@@ -176,6 +208,10 @@ const jp: PartialLocaleType = {
|
||||
Title: "話題の頻度 (frequency_penalty)",
|
||||
SubTitle: "値が大きいほど、重複語を低減する可能性が高くなります",
|
||||
},
|
||||
AutoGenerateTitle: {
|
||||
Title: "タイトルの自動生成",
|
||||
SubTitle: "会話内容に基づいて適切なタイトルを生成する",
|
||||
},
|
||||
},
|
||||
Store: {
|
||||
DefaultTopic: "新しいチャット",
|
||||
|
482
app/locales/sk.ts
Normal file
482
app/locales/sk.ts
Normal file
@@ -0,0 +1,482 @@
|
||||
import { getClientConfig } from "../config/client";
|
||||
import { SubmitKey } from "../store/config";
|
||||
import { LocaleType } from "./index";
|
||||
import type { PartialLocaleType } from "./index";
|
||||
|
||||
// if you are adding a new translation, please use PartialLocaleType instead of LocaleType
|
||||
|
||||
const isApp = !!getClientConfig()?.isApp;
|
||||
const sk: PartialLocaleType = {
|
||||
WIP: "Už čoskoro...",
|
||||
Error: {
|
||||
Unauthorized: isApp
|
||||
? "Neplatný API kľúč, prosím skontrolujte ho na stránke [Nastavenia](/#/settings)."
|
||||
: "Neoprávnený prístup, prosím zadajte prístupový kód na stránke [auth](/#/auth), alebo zadajte váš OpenAI API kľúč.",
|
||||
},
|
||||
Auth: {
|
||||
Title: "Potrebný prístupový kód",
|
||||
Tips: "Prosím, zadajte prístupový kód nižšie",
|
||||
SubTips: "Alebo zadajte váš OpenAI alebo Google API kľúč",
|
||||
Input: "prístupový kód",
|
||||
Confirm: "Potvrdiť",
|
||||
Later: "Neskôr",
|
||||
},
|
||||
ChatItem: {
|
||||
ChatItemCount: (count: number) => `${count} správ`,
|
||||
},
|
||||
Chat: {
|
||||
SubTitle: (count: number) => `${count} správ`,
|
||||
EditMessage: {
|
||||
Title: "Upraviť všetky správy",
|
||||
Topic: {
|
||||
Title: "Téma",
|
||||
SubTitle: "Zmeniť aktuálnu tému",
|
||||
},
|
||||
},
|
||||
Actions: {
|
||||
ChatList: "Prejsť na zoznam chatov",
|
||||
CompressedHistory: "Komprimovaná história výziev",
|
||||
Export: "Exportovať všetky správy ako Markdown",
|
||||
Copy: "Kopírovať",
|
||||
Stop: "Zastaviť",
|
||||
Retry: "Skúsiť znova",
|
||||
Pin: "Pripnúť",
|
||||
PinToastContent: "Pripnuté 1 správy do kontextových výziev",
|
||||
PinToastAction: "Zobraziť",
|
||||
Delete: "Vymazať",
|
||||
Edit: "Upraviť",
|
||||
},
|
||||
Commands: {
|
||||
new: "Začať nový chat",
|
||||
newm: "Začať nový chat s maskou",
|
||||
next: "Ďalší Chat",
|
||||
prev: "Predchádzajúci Chat",
|
||||
clear: "Vymazať kontext",
|
||||
del: "Vymazať Chat",
|
||||
},
|
||||
InputActions: {
|
||||
Stop: "Zastaviť",
|
||||
ToBottom: "Na najnovšie",
|
||||
Theme: {
|
||||
auto: "Automaticky",
|
||||
light: "Svetlý motív",
|
||||
dark: "Tmavý motív",
|
||||
},
|
||||
Prompt: "Výzvy",
|
||||
Masks: "Masky",
|
||||
Clear: "Vymazať kontext",
|
||||
Settings: "Nastavenia",
|
||||
},
|
||||
Rename: "Premenovať Chat",
|
||||
Typing: "Písanie…",
|
||||
Input: (submitKey: string) => {
|
||||
var inputHints = `${submitKey} na odoslanie`;
|
||||
if (submitKey === String(SubmitKey.Enter)) {
|
||||
inputHints += ", Shift + Enter na zalomenie";
|
||||
}
|
||||
return inputHints + ", / na vyhľadávanie výziev, : na použitie príkazov";
|
||||
},
|
||||
Send: "Odoslať",
|
||||
Config: {
|
||||
Reset: "Resetovať na predvolené",
|
||||
SaveAs: "Uložiť ako masku",
|
||||
},
|
||||
IsContext: "Kontextová výzva",
|
||||
},
|
||||
Export: {
|
||||
Title: "Export správ",
|
||||
Copy: "Kopírovať všetko",
|
||||
Download: "Stiahnuť",
|
||||
MessageFromYou: "Správa od vás",
|
||||
MessageFromChatGPT: "Správa od ChatGPT",
|
||||
Share: "Zdieľať na ShareGPT",
|
||||
Format: {
|
||||
Title: "Formát exportu",
|
||||
SubTitle: "Markdown alebo PNG obrázok",
|
||||
},
|
||||
IncludeContext: {
|
||||
Title: "Vrátane kontextu",
|
||||
SubTitle: "Exportovať kontextové výzvy v maske alebo nie",
|
||||
},
|
||||
Steps: {
|
||||
Select: "Vybrať",
|
||||
Preview: "Náhľad",
|
||||
},
|
||||
Image: {
|
||||
Toast: "Snímanie obrázka...",
|
||||
Modal:
|
||||
"Dlhým stlačením alebo kliknutím pravým tlačidlom myši uložte obrázok",
|
||||
},
|
||||
},
|
||||
Select: {
|
||||
Search: "Hľadať",
|
||||
All: "Vybrať všetko",
|
||||
Latest: "Vybrať najnovšie",
|
||||
Clear: "Vymazať",
|
||||
},
|
||||
Memory: {
|
||||
Title: "Výzva pamäti",
|
||||
EmptyContent: "Zatiaľ nič.",
|
||||
Send: "Odoslať pamäť",
|
||||
Copy: "Kopírovať pamäť",
|
||||
Reset: "Resetovať reláciu",
|
||||
ResetConfirm:
|
||||
"Resetovaním sa vymaže aktuálna história konverzácie a historická pamäť. Ste si istí, že chcete resetovať?",
|
||||
},
|
||||
Home: {
|
||||
NewChat: "Nový Chat",
|
||||
DeleteChat: "Potvrdiť vymazanie vybranej konverzácie?",
|
||||
DeleteToast: "Chat vymazaný",
|
||||
Revert: "Vrátiť späť",
|
||||
},
|
||||
Settings: {
|
||||
Title: "Nastavenia",
|
||||
SubTitle: "Všetky nastavenia",
|
||||
Danger: {
|
||||
Reset: {
|
||||
Title: "Resetovať všetky nastavenia",
|
||||
SubTitle: "Resetovať všetky položky nastavení na predvolené",
|
||||
Action: "Resetovať",
|
||||
Confirm: "Potvrdiť resetovanie všetkých nastavení na predvolené?",
|
||||
},
|
||||
Clear: {
|
||||
Title: "Vymazať všetky údaje",
|
||||
SubTitle: "Vymazať všetky správy a nastavenia",
|
||||
Action: "Vymazať",
|
||||
Confirm: "Potvrdiť vymazanie všetkých správ a nastavení?",
|
||||
},
|
||||
},
|
||||
Lang: {
|
||||
Name: "Jazyk", // POZOR: ak pridávate nový preklad, prosím neprekladajte túto hodnotu, nechajte ju ako "Jazyk"
|
||||
All: "Všetky jazyky",
|
||||
},
|
||||
Avatar: "Avatar",
|
||||
FontSize: {
|
||||
Title: "Veľkosť písma",
|
||||
SubTitle: "Nastaviť veľkosť písma obsahu chatu",
|
||||
},
|
||||
InjectSystemPrompts: {
|
||||
Title: "Vložiť systémové výzvy",
|
||||
SubTitle: "Vložiť globálnu systémovú výzvu pre každú požiadavku",
|
||||
},
|
||||
InputTemplate: {
|
||||
Title: "Šablóna vstupu",
|
||||
SubTitle: "Najnovšia správa bude vyplnená do tejto šablóny",
|
||||
},
|
||||
|
||||
Update: {
|
||||
Version: (x: string) => `Verzia: ${x}`,
|
||||
IsLatest: "Najnovšia verzia",
|
||||
CheckUpdate: "Skontrolovať aktualizácie",
|
||||
IsChecking: "Kontrola aktualizácií...",
|
||||
FoundUpdate: (x: string) => `Nájdená nová verzia: ${x}`,
|
||||
GoToUpdate: "Aktualizovať",
|
||||
},
|
||||
SendKey: "Odoslať kľúč",
|
||||
Theme: "Motív",
|
||||
TightBorder: "Tesný okraj",
|
||||
SendPreviewBubble: {
|
||||
Title: "Bublina náhľadu odoslania",
|
||||
SubTitle: "Náhľad markdownu v bubline",
|
||||
},
|
||||
AutoGenerateTitle: {
|
||||
Title: "Automaticky generovať názov",
|
||||
SubTitle: "Generovať vhodný názov na základe obsahu konverzácie",
|
||||
},
|
||||
Sync: {
|
||||
CloudState: "Posledná aktualizácia",
|
||||
NotSyncYet: "Zatiaľ nesynchronizované",
|
||||
Success: "Synchronizácia úspešná",
|
||||
Fail: "Synchronizácia zlyhala",
|
||||
|
||||
Config: {
|
||||
Modal: {
|
||||
Title: "Konfigurácia synchronizácie",
|
||||
Check: "Skontrolovať pripojenie",
|
||||
},
|
||||
SyncType: {
|
||||
Title: "Typ synchronizácie",
|
||||
SubTitle: "Vyberte svoju obľúbenú službu synchronizácie",
|
||||
},
|
||||
Proxy: {
|
||||
Title: "Povoliť CORS Proxy",
|
||||
SubTitle: "Povoliť proxy na obídenie obmedzení cross-origin",
|
||||
},
|
||||
ProxyUrl: {
|
||||
Title: "Koncový bod Proxy",
|
||||
SubTitle: "Platné len pre vstavaný CORS proxy tohto projektu",
|
||||
},
|
||||
|
||||
WebDav: {
|
||||
Endpoint: "Koncový bod WebDAV",
|
||||
UserName: "Meno používateľa",
|
||||
Password: "Heslo",
|
||||
},
|
||||
|
||||
UpStash: {
|
||||
Endpoint: "URL REST služby UpStash Redis",
|
||||
UserName: "Názov zálohy",
|
||||
Password: "Token REST služby UpStash Redis",
|
||||
},
|
||||
},
|
||||
|
||||
LocalState: "Lokálne údaje",
|
||||
Overview: (overview: any) => {
|
||||
return `${overview.chat} chaty, ${overview.message} správy, ${overview.prompt} výzvy, ${overview.mask} masky`;
|
||||
},
|
||||
ImportFailed: "Import z súboru zlyhal",
|
||||
},
|
||||
Mask: {
|
||||
Splash: {
|
||||
Title: "Úvodná obrazovka masky",
|
||||
SubTitle: "Zobraziť úvodnú obrazovku masky pred začatím nového chatu",
|
||||
},
|
||||
Builtin: {
|
||||
Title: "Skryť vstavané masky",
|
||||
SubTitle: "Skryť vstavané masky v zozname masiek",
|
||||
},
|
||||
},
|
||||
Prompt: {
|
||||
Disable: {
|
||||
Title: "Zakázať automatické dopĺňanie",
|
||||
SubTitle: "Zadajte / na spustenie automatického dopĺňania",
|
||||
},
|
||||
List: "Zoznam výziev",
|
||||
ListCount: (builtin: number, custom: number) =>
|
||||
`${builtin} vstavaných, ${custom} užívateľsky definovaných`,
|
||||
Edit: "Upraviť",
|
||||
Modal: {
|
||||
Title: "Zoznam výziev",
|
||||
Add: "Pridať jednu",
|
||||
Search: "Hľadať výzvy",
|
||||
},
|
||||
EditModal: {
|
||||
Title: "Upraviť výzvu",
|
||||
},
|
||||
},
|
||||
HistoryCount: {
|
||||
Title: "Počet pripojených správ",
|
||||
SubTitle: "Počet odoslaných správ pripojených na požiadavku",
|
||||
},
|
||||
CompressThreshold: {
|
||||
Title: "Práh kompresie histórie",
|
||||
SubTitle:
|
||||
"Bude komprimované, ak dĺžka nekomprimovaných správ presiahne túto hodnotu",
|
||||
},
|
||||
|
||||
Usage: {
|
||||
Title: "Stav účtu",
|
||||
SubTitle(used: any, total: any) {
|
||||
return `Tento mesiac použité ${used}, predplatné ${total}`;
|
||||
},
|
||||
IsChecking: "Kontroluje sa...",
|
||||
Check: "Skontrolovať",
|
||||
NoAccess: "Zadajte API kľúč na skontrolovanie zostatku",
|
||||
},
|
||||
Access: {
|
||||
AccessCode: {
|
||||
Title: "Prístupový kód",
|
||||
SubTitle: "Povolený prístupový kód",
|
||||
Placeholder: "Zadajte kód",
|
||||
},
|
||||
CustomEndpoint: {
|
||||
Title: "Vlastný koncový bod",
|
||||
SubTitle: "Použiť vlastnú službu Azure alebo OpenAI",
|
||||
},
|
||||
Provider: {
|
||||
Title: "Poskytovateľ modelu",
|
||||
SubTitle: "Vyberte Azure alebo OpenAI",
|
||||
},
|
||||
OpenAI: {
|
||||
ApiKey: {
|
||||
Title: "API kľúč OpenAI",
|
||||
SubTitle: "Použiť vlastný API kľúč OpenAI",
|
||||
Placeholder: "sk-xxx",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "Koncový bod OpenAI",
|
||||
SubTitle:
|
||||
"Musí začínať http(s):// alebo použiť /api/openai ako predvolený",
|
||||
},
|
||||
},
|
||||
Azure: {
|
||||
ApiKey: {
|
||||
Title: "API kľúč Azure",
|
||||
SubTitle: "Skontrolujte svoj API kľúč v Azure konzole",
|
||||
Placeholder: "API kľúč Azure",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "Koncový bod Azure",
|
||||
SubTitle: "Príklad: ",
|
||||
},
|
||||
|
||||
ApiVerion: {
|
||||
Title: "Verzia API Azure",
|
||||
SubTitle: "Skontrolujte svoju verziu API v Azure konzole",
|
||||
},
|
||||
},
|
||||
CustomModel: {
|
||||
Title: "Vlastné modely",
|
||||
SubTitle: "Možnosti vlastného modelu, oddelené čiarkou",
|
||||
},
|
||||
Google: {
|
||||
ApiKey: {
|
||||
Title: "API kľúč",
|
||||
SubTitle:
|
||||
"Obísť obmedzenia prístupu heslom pomocou vlastného API kľúča Google AI Studio",
|
||||
Placeholder: "API kľúč Google AI Studio",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "Adresa koncového bodu",
|
||||
SubTitle: "Príklad:",
|
||||
},
|
||||
|
||||
ApiVersion: {
|
||||
Title: "Verzia API (gemini-pro verzia API)",
|
||||
SubTitle: "Vyberte špecifickú verziu časti",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Model: "Model",
|
||||
Temperature: {
|
||||
Title: "Teplota",
|
||||
SubTitle: "Vyššia hodnota robí výstup náhodnejším",
|
||||
},
|
||||
TopP: {
|
||||
Title: "Top P",
|
||||
SubTitle: "Neupravujte túto hodnotu spolu s teplotou",
|
||||
},
|
||||
MaxTokens: {
|
||||
Title: "Maximálny počet tokenov",
|
||||
SubTitle: "Maximálna dĺžka vstupných tokenov a generovaných tokenov",
|
||||
},
|
||||
PresencePenalty: {
|
||||
Title: "Penalizácia za prítomnosť",
|
||||
SubTitle:
|
||||
"Vyššia hodnota zvyšuje pravdepodobnosť hovorenia o nových témach",
|
||||
},
|
||||
FrequencyPenalty: {
|
||||
Title: "Penalizácia za frekvenciu",
|
||||
SubTitle:
|
||||
"Vyššia hodnota znižuje pravdepodobnosť opakovania rovnakej línie",
|
||||
},
|
||||
},
|
||||
Store: {
|
||||
DefaultTopic: "Nová konverzácia",
|
||||
BotHello: "Ahoj! Ako vám dnes môžem pomôcť?",
|
||||
Error: "Niečo sa pokazilo, skúste to prosím neskôr znova.",
|
||||
Prompt: {
|
||||
History: (content: string) =>
|
||||
"Toto je zhrnutie histórie chatu ako rekapitulácia: " + content,
|
||||
Topic:
|
||||
"Prosím, vygenerujte štvor- až päťslovný titul, ktorý zhrnie našu konverzáciu bez akéhokoľvek úvodu, interpunkcie, úvodzoviek, bodiek, symbolov, tučného textu alebo ďalšieho textu. Odstráňte uzatváracie úvodzovky.",
|
||||
Summarize:
|
||||
"Stručne zhrňte diskusiu na menej ako 200 slov, aby ste ju mohli použiť ako výzvu pre budúci kontext.",
|
||||
},
|
||||
},
|
||||
Copy: {
|
||||
Success: "Skopírované do schránky",
|
||||
Failed:
|
||||
"Kopírovanie zlyhalo, prosím udeľte povolenie na prístup k schránke",
|
||||
},
|
||||
Download: {
|
||||
Success: "Obsah stiahnutý do vášho adresára.",
|
||||
Failed: "Stiahnutie zlyhalo.",
|
||||
},
|
||||
Context: {
|
||||
Toast: (x: any) => `S ${x} kontextovými výzvami`,
|
||||
Edit: "Aktuálne nastavenia chatu",
|
||||
Add: "Pridať výzvu",
|
||||
Clear: "Kontext vyčistený",
|
||||
Revert: "Vrátiť späť",
|
||||
},
|
||||
Plugin: {
|
||||
Name: "Plugin",
|
||||
},
|
||||
FineTuned: {
|
||||
Sysmessage: "Ste asistent, ktorý",
|
||||
},
|
||||
Mask: {
|
||||
Name: "Maska",
|
||||
Page: {
|
||||
Title: "Šablóna výziev",
|
||||
SubTitle: (count: number) => `${count} šablón výziev`,
|
||||
Search: "Hľadať šablóny",
|
||||
Create: "Vytvoriť",
|
||||
},
|
||||
Item: {
|
||||
Info: (count: number) => `${count} výziev`,
|
||||
Chat: "Chat",
|
||||
View: "Zobraziť",
|
||||
Edit: "Upraviť",
|
||||
Delete: "Vymazať",
|
||||
DeleteConfirm: "Potvrdiť vymazanie?",
|
||||
},
|
||||
EditModal: {
|
||||
Title: (readonly: boolean) =>
|
||||
`Upraviť šablónu výziev ${readonly ? "(iba na čítanie)" : ""}`,
|
||||
Download: "Stiahnuť",
|
||||
Clone: "Klonovať",
|
||||
},
|
||||
Config: {
|
||||
Avatar: "Avatar robota",
|
||||
Name: "Meno robota",
|
||||
Sync: {
|
||||
Title: "Použiť globálne nastavenia",
|
||||
SubTitle: "Použiť globálne nastavenia v tomto chate",
|
||||
Confirm: "Potvrdiť prepísanie vlastného nastavenia globálnym?",
|
||||
},
|
||||
HideContext: {
|
||||
Title: "Skryť kontextové výzvy",
|
||||
SubTitle: "Nezobrazovať kontextové výzvy v chate",
|
||||
},
|
||||
Share: {
|
||||
Title: "Zdieľať túto masku",
|
||||
SubTitle: "Vygenerovať odkaz na túto masku",
|
||||
Action: "Kopírovať odkaz",
|
||||
},
|
||||
},
|
||||
},
|
||||
NewChat: {
|
||||
Return: "Vrátiť sa",
|
||||
Skip: "Len začať",
|
||||
Title: "Vybrať masku",
|
||||
SubTitle: "Chatovať s dušou za maskou",
|
||||
More: "Nájsť viac",
|
||||
NotShow: "Už nezobrazovať",
|
||||
ConfirmNoShow:
|
||||
"Potvrdiť deaktiváciu? Môžete ju neskôr znova povoliť v nastaveniach.",
|
||||
},
|
||||
|
||||
UI: {
|
||||
Confirm: "Potvrdiť",
|
||||
Cancel: "Zrušiť",
|
||||
Close: "Zavrieť",
|
||||
Create: "Vytvoriť",
|
||||
Edit: "Upraviť",
|
||||
Export: "Exportovať",
|
||||
Import: "Importovať",
|
||||
Sync: "Synchronizovať",
|
||||
Config: "Konfigurácia",
|
||||
},
|
||||
Exporter: {
|
||||
Description: {
|
||||
Title: "Zobrazia sa len správy po vyčistení kontextu",
|
||||
},
|
||||
Model: "Model",
|
||||
Messages: "Správy",
|
||||
Topic: "Téma",
|
||||
Time: "Čas",
|
||||
},
|
||||
|
||||
URLCommand: {
|
||||
Code: "Zistený prístupový kód z URL, potvrdiť na aplikovanie?",
|
||||
Settings: "Zistené nastavenia z URL, potvrdiť na aplikovanie?",
|
||||
},
|
||||
};
|
||||
|
||||
export default sk;
|
@@ -1,16 +1,36 @@
|
||||
import { getClientConfig } from "../config/client";
|
||||
import { SubmitKey } from "../store/config";
|
||||
import type { PartialLocaleType } from "./index";
|
||||
|
||||
const tw: PartialLocaleType = {
|
||||
const isApp = !!getClientConfig()?.isApp;
|
||||
|
||||
const tw = {
|
||||
WIP: "該功能仍在開發中……",
|
||||
Error: {
|
||||
Unauthorized: "目前您的狀態是未授權,請前往[設定頁面](/#/auth)輸入授權碼。",
|
||||
Unauthorized: isApp
|
||||
? "檢測到無效 API Key,請前往[設定](/#/settings)頁檢查 API Key 是否設定正確。"
|
||||
: "訪問密碼不正確或為空,請前往[登入](/#/auth)頁輸入正確的訪問密碼,或者在[設定](/#/settings)頁填入你自己的 OpenAI API Key。",
|
||||
},
|
||||
|
||||
Auth: {
|
||||
Title: "需要密碼",
|
||||
Tips: "管理員開啟了密碼驗證,請在下方填入訪問碼",
|
||||
SubTips: "或者輸入你的 OpenAI 或 Google API 密鑰",
|
||||
Input: "在此處填寫訪問碼",
|
||||
Confirm: "確認",
|
||||
Later: "稍候再說",
|
||||
},
|
||||
ChatItem: {
|
||||
ChatItemCount: (count: number) => `${count} 則對話`,
|
||||
},
|
||||
Chat: {
|
||||
SubTitle: (count: number) => `您已經與 ChatGPT 進行了 ${count} 則對話`,
|
||||
EditMessage: {
|
||||
Title: "編輯消息記錄",
|
||||
Topic: {
|
||||
Title: "聊天主題",
|
||||
SubTitle: "更改當前聊天主題",
|
||||
},
|
||||
},
|
||||
Actions: {
|
||||
ChatList: "檢視訊息列表",
|
||||
CompressedHistory: "檢視壓縮後的歷史 Prompt",
|
||||
@@ -18,7 +38,33 @@ const tw: PartialLocaleType = {
|
||||
Copy: "複製",
|
||||
Stop: "停止",
|
||||
Retry: "重試",
|
||||
Pin: "固定",
|
||||
PinToastContent: "已將 1 條對話固定至預設提示詞",
|
||||
PinToastAction: "查看",
|
||||
Delete: "刪除",
|
||||
Edit: "編輯",
|
||||
},
|
||||
Commands: {
|
||||
new: "新建聊天",
|
||||
newm: "從面具新建聊天",
|
||||
next: "下一個聊天",
|
||||
prev: "上一個聊天",
|
||||
clear: "清除上下文",
|
||||
del: "刪除聊天",
|
||||
},
|
||||
InputActions: {
|
||||
Stop: "停止回應",
|
||||
ToBottom: "移至最新",
|
||||
Theme: {
|
||||
auto: "自動主題",
|
||||
light: "亮色模式",
|
||||
dark: "深色模式",
|
||||
},
|
||||
Prompt: "快捷指令",
|
||||
Masks: "所有面具",
|
||||
Clear: "清除聊天",
|
||||
Settings: "對話設定",
|
||||
UploadImage: "上傳圖片",
|
||||
},
|
||||
Rename: "重新命名對話",
|
||||
Typing: "正在輸入…",
|
||||
@@ -34,13 +80,37 @@ const tw: PartialLocaleType = {
|
||||
Reset: "重設",
|
||||
SaveAs: "另存新檔",
|
||||
},
|
||||
IsContext: "預設提示詞",
|
||||
},
|
||||
Export: {
|
||||
Title: "將聊天記錄匯出為 Markdown",
|
||||
Copy: "複製全部",
|
||||
Download: "下載檔案",
|
||||
Share: "分享到 ShareGPT",
|
||||
MessageFromYou: "來自您的訊息",
|
||||
MessageFromChatGPT: "來自 ChatGPT 的訊息",
|
||||
Format: {
|
||||
Title: "導出格式",
|
||||
SubTitle: "可以導出 Markdown 文本或者 PNG 圖片",
|
||||
},
|
||||
IncludeContext: {
|
||||
Title: "包含面具上下文",
|
||||
SubTitle: "是否在消息中展示面具上下文",
|
||||
},
|
||||
Steps: {
|
||||
Select: "選取",
|
||||
Preview: "預覽",
|
||||
},
|
||||
Image: {
|
||||
Toast: "正在生成截圖",
|
||||
Modal: "長按或右鍵保存圖片",
|
||||
},
|
||||
},
|
||||
Select: {
|
||||
Search: "查詢消息",
|
||||
All: "選取全部",
|
||||
Latest: "最近幾條",
|
||||
Clear: "清除選中",
|
||||
},
|
||||
Memory: {
|
||||
Title: "上下文記憶 Prompt",
|
||||
@@ -60,6 +130,20 @@ const tw: PartialLocaleType = {
|
||||
Title: "設定",
|
||||
SubTitle: "設定選項",
|
||||
|
||||
Danger: {
|
||||
Reset: {
|
||||
Title: "重置所有設定",
|
||||
SubTitle: "重置所有設定項回預設值",
|
||||
Action: "立即重置",
|
||||
Confirm: "確認重置所有設定?",
|
||||
},
|
||||
Clear: {
|
||||
Title: "清除所有資料",
|
||||
SubTitle: "清除所有聊天、設定資料",
|
||||
Action: "立即清除",
|
||||
Confirm: "確認清除所有聊天、設定資料?",
|
||||
},
|
||||
},
|
||||
Lang: {
|
||||
Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
|
||||
All: "所有語言",
|
||||
@@ -73,6 +157,11 @@ const tw: PartialLocaleType = {
|
||||
Title: "匯入系統提示",
|
||||
SubTitle: "強制在每個請求的訊息列表開頭新增一個模擬 ChatGPT 的系統提示",
|
||||
},
|
||||
InputTemplate: {
|
||||
Title: "用戶輸入預處理",
|
||||
SubTitle: "用戶最新的一條消息會填充到此模板",
|
||||
},
|
||||
|
||||
Update: {
|
||||
Version: (x: string) => `目前版本:${x}`,
|
||||
IsLatest: "已是最新版本",
|
||||
@@ -88,11 +177,62 @@ const tw: PartialLocaleType = {
|
||||
Title: "預覽氣泡",
|
||||
SubTitle: "在預覽氣泡中預覽 Markdown 內容",
|
||||
},
|
||||
AutoGenerateTitle: {
|
||||
Title: "自動生成標題",
|
||||
SubTitle: "根據對話內容生成合適的標題",
|
||||
},
|
||||
Sync: {
|
||||
CloudState: "雲端資料",
|
||||
NotSyncYet: "還沒有進行過同步",
|
||||
Success: "同步成功",
|
||||
Fail: "同步失敗",
|
||||
|
||||
Config: {
|
||||
Modal: {
|
||||
Title: "設定雲端同步",
|
||||
Check: "檢查可用性",
|
||||
},
|
||||
SyncType: {
|
||||
Title: "同步類型",
|
||||
SubTitle: "選擇喜愛的同步服務器",
|
||||
},
|
||||
Proxy: {
|
||||
Title: "啟用代理",
|
||||
SubTitle: "在瀏覽器中同步時,必須啟用代理以避免跨域限制",
|
||||
},
|
||||
ProxyUrl: {
|
||||
Title: "代理地址",
|
||||
SubTitle: "僅適用於本項目自帶的跨域代理",
|
||||
},
|
||||
|
||||
WebDav: {
|
||||
Endpoint: "WebDAV 地址",
|
||||
UserName: "用戶名",
|
||||
Password: "密碼",
|
||||
},
|
||||
|
||||
UpStash: {
|
||||
Endpoint: "UpStash Redis REST Url",
|
||||
UserName: "備份名稱",
|
||||
Password: "UpStash Redis REST Token",
|
||||
},
|
||||
},
|
||||
|
||||
LocalState: "本地資料",
|
||||
Overview: (overview: any) => {
|
||||
return `${overview.chat} 次對話,${overview.message} 條消息,${overview.prompt} 條提示詞,${overview.mask} 個面具`;
|
||||
},
|
||||
ImportFailed: "導入失敗",
|
||||
},
|
||||
Mask: {
|
||||
Splash: {
|
||||
Title: "面具啟動頁面",
|
||||
SubTitle: "新增聊天時,呈現面具啟動頁面",
|
||||
},
|
||||
Builtin: {
|
||||
Title: "隱藏內置面具",
|
||||
SubTitle: "在所有面具列表中隱藏內置面具",
|
||||
},
|
||||
},
|
||||
Prompt: {
|
||||
Disable: {
|
||||
@@ -131,11 +271,81 @@ const tw: PartialLocaleType = {
|
||||
NoAccess: "輸入 API Key 檢視餘額",
|
||||
},
|
||||
|
||||
Access: {
|
||||
AccessCode: {
|
||||
Title: "訪問密碼",
|
||||
SubTitle: "管理員已開啟加密訪問",
|
||||
Placeholder: "請輸入訪問密碼",
|
||||
},
|
||||
CustomEndpoint: {
|
||||
Title: "自定義接口 (Endpoint)",
|
||||
SubTitle: "是否使用自定義 Azure 或 OpenAI 服務",
|
||||
},
|
||||
Provider: {
|
||||
Title: "模型服務商",
|
||||
SubTitle: "切換不同的服務商",
|
||||
},
|
||||
OpenAI: {
|
||||
ApiKey: {
|
||||
Title: "API Key",
|
||||
SubTitle: "使用自定義 OpenAI Key 繞過密碼訪問限制",
|
||||
Placeholder: "OpenAI API Key",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "接口(Endpoint) 地址",
|
||||
SubTitle: "除默認地址外,必須包含 http(s)://",
|
||||
},
|
||||
},
|
||||
Azure: {
|
||||
ApiKey: {
|
||||
Title: "接口密鑰",
|
||||
SubTitle: "使用自定義 Azure Key 繞過密碼訪問限制",
|
||||
Placeholder: "Azure API Key",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "接口(Endpoint) 地址",
|
||||
SubTitle: "樣例:",
|
||||
},
|
||||
|
||||
ApiVerion: {
|
||||
Title: "接口版本 (azure api version)",
|
||||
SubTitle: "選擇指定的部分版本",
|
||||
},
|
||||
},
|
||||
Google: {
|
||||
ApiKey: {
|
||||
Title: "API 密鑰",
|
||||
SubTitle: "從 Google AI 獲取您的 API 密鑰",
|
||||
Placeholder: "輸入您的 Google AI Studio API 密鑰",
|
||||
},
|
||||
|
||||
Endpoint: {
|
||||
Title: "終端地址",
|
||||
SubTitle: "示例:",
|
||||
},
|
||||
|
||||
ApiVersion: {
|
||||
Title: "API 版本(僅適用於 gemini-pro)",
|
||||
SubTitle: "選擇一個特定的 API 版本",
|
||||
},
|
||||
},
|
||||
CustomModel: {
|
||||
Title: "自定義模型名",
|
||||
SubTitle: "增加自定義模型可選項,使用英文逗號隔開",
|
||||
},
|
||||
},
|
||||
|
||||
Model: "模型 (model)",
|
||||
Temperature: {
|
||||
Title: "隨機性 (temperature)",
|
||||
SubTitle: "值越大,回應越隨機",
|
||||
},
|
||||
TopP: {
|
||||
Title: "核采樣 (top_p)",
|
||||
SubTitle: "與隨機性類似,但不要和隨機性一起更改",
|
||||
},
|
||||
MaxTokens: {
|
||||
Title: "單次回應限制 (max_tokens)",
|
||||
SubTitle: "單次互動所用的最大 Token 數",
|
||||
@@ -166,10 +376,16 @@ const tw: PartialLocaleType = {
|
||||
Success: "已複製到剪貼簿中",
|
||||
Failed: "複製失敗,請賦予剪貼簿權限",
|
||||
},
|
||||
Download: {
|
||||
Success: "內容已下載到您的目錄。",
|
||||
Failed: "下載失敗。",
|
||||
},
|
||||
Context: {
|
||||
Toast: (x: any) => `已設定 ${x} 條前置上下文`,
|
||||
Edit: "前置上下文和歷史記憶",
|
||||
Add: "新增一條",
|
||||
Clear: "上下文已清除",
|
||||
Revert: "恢復上下文",
|
||||
},
|
||||
Plugin: { Name: "外掛" },
|
||||
FineTuned: { Sysmessage: "你是一個助手" },
|
||||
@@ -198,16 +414,34 @@ const tw: PartialLocaleType = {
|
||||
Config: {
|
||||
Avatar: "角色頭像",
|
||||
Name: "角色名稱",
|
||||
Sync: {
|
||||
Title: "使用全局設定",
|
||||
SubTitle: "當前對話是否使用全局模型設定",
|
||||
Confirm: "當前對話的自定義設定將會被自動覆蓋,確認啟用全局設定?",
|
||||
},
|
||||
HideContext: {
|
||||
Title: "隱藏預設對話",
|
||||
SubTitle: "隱藏後預設對話不會出現在聊天界面",
|
||||
},
|
||||
Share: {
|
||||
Title: "分享此面具",
|
||||
SubTitle: "生成此面具的直達鏈接",
|
||||
Action: "覆制鏈接",
|
||||
},
|
||||
},
|
||||
},
|
||||
NewChat: {
|
||||
Return: "返回",
|
||||
Skip: "跳過",
|
||||
NotShow: "不再呈現",
|
||||
ConfirmNoShow: "確認停用?停用後可以隨時在設定中重新啟用。",
|
||||
Title: "挑選一個面具",
|
||||
SubTitle: "現在開始,與面具背後的靈魂思維碰撞",
|
||||
More: "搜尋更多",
|
||||
NotShow: "不再呈現",
|
||||
ConfirmNoShow: "確認停用?停用後可以隨時在設定中重新啟用。",
|
||||
},
|
||||
URLCommand: {
|
||||
Code: "檢測到連結中已經包含訪問碼,是否自動填入?",
|
||||
Settings: "檢測到連結中包含了預設設定,是否自動填入?",
|
||||
},
|
||||
UI: {
|
||||
Confirm: "確認",
|
||||
@@ -215,8 +449,15 @@ const tw: PartialLocaleType = {
|
||||
Close: "關閉",
|
||||
Create: "新增",
|
||||
Edit: "編輯",
|
||||
Export: "導出",
|
||||
Import: "導入",
|
||||
Sync: "同步",
|
||||
Config: "設定",
|
||||
},
|
||||
Exporter: {
|
||||
Description: {
|
||||
Title: "只有清除上下文之後的消息會被展示",
|
||||
},
|
||||
Model: "模型",
|
||||
Messages: "訊息",
|
||||
Topic: "主題",
|
||||
@@ -224,4 +465,14 @@ const tw: PartialLocaleType = {
|
||||
},
|
||||
};
|
||||
|
||||
type DeepPartial<T> = T extends object
|
||||
? {
|
||||
[P in keyof T]?: DeepPartial<T[P]>;
|
||||
}
|
||||
: T;
|
||||
|
||||
export type LocaleType = typeof tw;
|
||||
export type PartialLocaleType = DeepPartial<typeof tw>;
|
||||
|
||||
export default tw;
|
||||
// Translated by @chunkiuuu, feel free the submit new pr if there are typo/incorrect translations :D
|
Reference in New Issue
Block a user