ChatGPT-Next-Web/app/locales/tw.ts
2024-07-20 15:15:46 +08:00

496 lines
15 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { getClientConfig } from "../config/client";
import { SubmitKey } from "../store/config";
const isApp = !!getClientConfig()?.isApp;
const tw = {
WIP: "此功能仍在開發中……",
Error: {
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",
Export: "匯出聊天紀錄",
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: "正在輸入…",
Input: (submitKey: string) => {
var inputHints = `輸入訊息後,按下 ${submitKey} 鍵即可傳送`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter 鍵換行";
}
return inputHints;
},
Send: "傳送",
Config: {
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",
EmptyContent: "",
Copy: "",
Send: "",
Reset: "",
ResetConfirm: "",
},
Home: {
NewChat: "",
DeleteChat: "",
DeleteToast: "",
Revert: "",
},
Settings: {
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: "",
},
Avatar: "",
FontSize: {
Title: "",
SubTitle: "",
},
InjectSystemPrompts: {
Title: "",
SubTitle: " ChatGPT ",
},
InputTemplate: {
Title: "使",
SubTitle: "使",
},
Update: {
Version: (x: string) => `目前版本:${x}`,
IsLatest: "",
CheckUpdate: "",
IsChecking: "...",
FoundUpdate: (x: string) => `發現新版本:${x}`,
GoToUpdate: "",
},
SendKey: "",
Theme: "",
TightBorder: "",
SendPreviewBubble: {
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: {
Title: "",
SubTitle: " / ",
},
List: "",
ListCount: (builtin: number, custom: number) =>
`內建 ${builtin} 條,使用者自訂 ${custom} 條`,
Edit: "",
Modal: {
Title: "",
Add: "",
Search: "",
},
EditModal: {
Title: "",
},
},
HistoryCount: {
Title: "",
SubTitle: "",
},
CompressThreshold: {
Title: "",
SubTitle: "",
},
Usage: {
Title: "",
SubTitle(used: any, total: any) {
return `本月已使用 $${used},訂閱總額 $${total}`;
},
IsChecking: "",
Check: "",
NoAccess: " API Key ",
},
Access: {
AccessCode: {
Title: "",
SubTitle: "",
Placeholder: "",
},
CustomEndpoint: {
Title: " API (Endpoint)",
SubTitle: "使 Azure OpenAI ",
},
Provider: {
Title: "",
SubTitle: "",
},
OpenAI: {
ApiKey: {
Title: "API Key",
SubTitle: "使 OpenAI Key ",
Placeholder: "OpenAI API Key",
},
Endpoint: {
Title: "API (Endpoint) ",
SubTitle: " http(s)://",
},
},
Azure: {
ApiKey: {
Title: "API 金鑰",
SubTitle: "使用自訂 Azure Key 繞過密碼存取限制",
Placeholder: "Azure API Key",
},
Endpoint: {
Title: "API 端點 (Endpoint) 位址",
SubTitle: "範例:",
},
ApiVerion: {
Title: "API 版本 (azure api version)",
SubTitle: "指定一個特定的 API 版本",
},
},
Anthropic: {
ApiKey: {
Title: "API 金鑰",
SubTitle: "從 Anthropic AI 取得您的 API 金鑰",
Placeholder: "Anthropic API Key",
},
Endpoint: {
Title: "端點位址",
SubTitle: "範例:",
},
ApiVerion: {
Title: "API 版本 (claude api version)",
SubTitle: "指定一個特定的 API 版本",
},
},
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 數",
},
PresencePenalty: {
Title: "話題新穎度 (presence_penalty)",
SubTitle: "值越大,越有可能拓展到新話題",
},
FrequencyPenalty: {
Title: "頻率懲罰度 (frequency_penalty)",
SubTitle: "值越大,越有可能降低重複字詞",
},
},
Store: {
DefaultTopic: "新的對話",
BotHello: "請問需要我的協助嗎?",
Error: "出錯了,請稍後再嘗試",
Prompt: {
History: (content: string) =>
"這是 AI 與使用者的歷史聊天總結,作為前情提要:" + content,
Topic:
"Use the language used by the user (e.g. en for english conversation, zh-hant for chinese conversation, etc.) to generate a title (at most 6 words) summarizing our conversation without any lead-in, quotation marks, preamble like 'Title:', direct text copies, single-word replies, quotation marks, translations, or brackets. Remove enclosing quotation marks. The title should make third-party grasp the essence of the conversation in first sight.",
Summarize:
"Use the language used by the user (e.g. en-us for english conversation, zh-hant for chinese conversation, etc.) to summarise the conversation in at most 200 words. The summary will be used as prompt for you to continue the conversation in the future.",
},
},
Copy: {
Success: "已複製到剪貼簿中",
Failed: "複製失敗,請賦予剪貼簿權限",
},
Download: {
Success: "內容已下載到您的目錄。",
Failed: "下載失敗。",
},
Context: {
Toast: (x: any) => `已設定 ${x} 條前置上下文`,
Edit: "前置上下文和歷史記憶",
Add: "新增一則",
Clear: "上下文已清除",
Revert: "恢復上下文",
},
Plugin: { Name: "外掛" },
FineTuned: { Sysmessage: "你是一個助手" },
Mask: {
Name: "角色範本",
Page: {
Title: "預設角色角色範本",
SubTitle: (count: number) => `${count} 個預設角色定義`,
Search: "搜尋角色角色範本",
Create: "新增",
},
Item: {
Info: (count: number) => `包含 ${count} 條預設對話`,
Chat: "對話",
View: "檢視",
Edit: "編輯",
Delete: "刪除",
DeleteConfirm: "確認刪除?",
},
EditModal: {
Title: (readonly: boolean) =>
`編輯預設角色範本 ${readonly ? "(唯讀)" : ""}`,
Download: "下載預設值",
Clone: "以此預設值建立副本",
},
Config: {
Avatar: "角色頭像",
Name: "角色名稱",
Sync: {
Title: "使用全域設定",
SubTitle: "目前對話是否使用全域模型設定",
Confirm: "目前對話的自訂設定將會被自動覆蓋,確認啟用全域設定?",
},
HideContext: {
Title: "隱藏預設對話",
SubTitle: "隱藏後預設對話不會出現在聊天介面",
},
Share: {
Title: "分享此角色範本",
SubTitle: "產生此角色範本的直達連結",
Action: "複製連結",
},
},
},
NewChat: {
Return: "返回",
Skip: "跳過",
NotShow: "不再顯示",
ConfirmNoShow: "確認停用?停用後可以隨時在設定中重新啟用。",
Title: "挑選一個角色範本",
SubTitle: "現在開始,與角色範本背後的靈魂思維碰撞",
More: "搜尋更多",
},
URLCommand: {
Code: "偵測到連結中已經包含存取密碼,是否自動填入?",
Settings: "偵測到連結中包含了預設設定,是否自動填入?",
},
UI: {
Confirm: "確認",
Cancel: "取消",
Close: "關閉",
Create: "新增",
Edit: "編輯",
Export: "匯出",
Import: "匯入",
Sync: "同步",
Config: "設定",
},
Exporter: {
Description: {
Title: "只有清除上下文之後的訊息會被顯示",
},
Model: "模型",
Messages: "訊息",
Topic: "主題",
Time: "時間",
},
};
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