diff --git a/src/lang/cn.ts b/src/lang/cn.ts index 48158dad..33ec2e43 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -1,82 +1,128 @@ export const languageChinese = { "formating": { - "main": "主提示词", - "jailbreak": "越狱提示词", - "chats": "过去的聊天", - "lorebook": "Lorebook", - "globalNote": "全局注释", - "authorNote": "作者注释", - "lastChat": "最后的聊天", - "description": "角色描述", - "personaPrompt": "人物提示词", - "plain": "基础提示" + "main": "主提示词", + "jailbreak": "越狱提示词", + "chats": "过去的聊天", + "lorebook": "Lorebook", + "globalNote": "全局注释", + "authorNote": "作者注释", + "lastChat": "最后的聊天", + "description": "角色描述", + "personaPrompt": "人物提示词", + "plain": "基础提示", + "memory": "Supa/HypaMemory", + "postEverything": "End-Injected Prompts" }, "errors": { - "toomuchtoken": "错误:所需的最低token数超过了最大上下文大小。", - "unknownModel": "错误:选择了未知的模型", - "httpError": "错误:请求中出现错误:", - "noData": "文件中没有数据,或者文件已损坏", - "onlyOneChat": "至少必须有一条聊天记录", - "alreadyCharInGroup": "在该群组中已经有一个同名的角色了。", - "noUserIcon": "你必须先设置你的头像。" + "toomuchtoken": "错误:所需的最低token数超过了最大上下文大小", + "unknownModel": "错误:选择了未知的模型", + "httpError": "错误:请求中出现错误:", + "noData": "档案中没有资料,或者档案已损坏", + "onlyOneChat": "至少必须有一条聊天记录", + "alreadyCharInGroup": "在该群组中已经有一个同名的角色了", + "noUserIcon": "你必须先设置你的头像。", + "emptyText": "文本为空", + "wrongPassword": "密码错误", + "networkFetch": "这发生在网络不稳定或服务器宕机时", + "networkFetchWeb": "这可能是一个CORS错误。这只在使用网页版本时发生,因为浏览器的限制。尝试使用桌面本地版本,或其他版本的RisuAI。", + "networkFetchPlain": "这可以是一个普通的抓取错误。尝试在设置中禁用强制普通抓取选项。", + "requestLogRemoved": "这个请求日志被移除", + "requestLogRemovedDesc": "这个请求日志在客户端刷新或重新加载时移除" }, "showHelp": "显示帮助", "help": { - "model": "模型选项是聊天中使用的主要模型。", - "submodel": "辅助模型是用于分析情绪图像,自动建议等的模型。推荐使用gpt3.5。", - "oaiapikey": "OpenAI的API密钥。你可以在https://platform.openai.com/account/api-keys 处获取。", - "mainprompt": "主提示词选项设定了默认模型的行为。", - "jailbreak": "当角色中启动NSFW(成人模式)/越狱开关时,NSFW(成人模式)/越狱提示词选项将被激活。", - "globalNote": "强烈影响模型行为的全局注释,也被称为UJB。在所有角色中都起作用。", - "autoSuggest": "用于生成自动建议用户回应时的提示词。", - "formatOrder": "提示词的格式化顺序。位置越靠下的模块对模型的影响更大。", - "forceUrl": "如果不为空,请求将会被发送到你输入的URL。", - "tempature": "较低的值能够让角色紧密地遵循提示词,但它更可能像机器一样回应。\n较高的值将使回复更具创造性,但角色的回应可能更容易崩溃。", - "frequencyPenalty": "较高的值能够防止在回应中使用重复的单词,但角色的回应可能更容易崩溃。", - "presensePenalty": "较高的值能够防止在所有上下文中使用重复的单词,但角色的回应可能更容易崩溃。", - "sdProvider": "图像生成的提供商。", - "msgSound": "角色回应时播放*叮*的声音", - "charDesc": "角色的简要描述。这会影响角色的回应。", - "charFirstMessage": "角色的第一条信息。这会极大地影响角色的回应。", - "charNote": "强烈影响模型行为的角色注释。嵌入到当前角色中。也被称为记忆或UJB。", - "toggleNsfw": "启用NSFW(成人模式)/越狱", - "lorebook": "lorebook是用户制作的AI词典。只有当上下文中有激活关键字时,AI才会看到它。", - "loreName": "lorebook的名称。它不会影响AI。", - "loreActivationKey": "如果上下文中存在其中激活关键字,lorebook就会被激活,提示词才会介入。用逗号分隔。", - "loreorder": "lore插入顺序更高,它会更多地影响模型,而当激活的lorebook较多时,它会被剪裁的更少。", - "bias": "偏差是一种修改字符串出现概率的键值数据。\n它可以从-100到100,更高的值会更可能出现,更低的值则不太可能出现\n警告:如果分词器出错,它可能无法正常工作。", - "emotion": "激活情绪图像功能会使系统根据角色的情绪显示图像,该情绪是通过分析角色的回应得出的。你必须输入情绪名称作为单词 *(如 joy,happy,fear 等)*。如果存在,以**neutral**命名的情绪将成为默认情绪。必须有3个以上的图像才能正常工作。", - "imggen": "图像生成功能会从外部程序生成并显示图像。该图像是通过分析当前聊天生成的图像提示词生成的。\n\n图像生成功能是基于键值参数进行分析的,这些参数可以在下面配置。\n\n**'always'** 键总是应用,并且不会改变。**'negative'** 键对于图像生成始终应用负值。\n\n其他键的值将根据随着聊天的进行而改变。\n\n如果一个键的名字前面有特殊字符,它就有特殊的效果。\n- 如果键以 **|** 开始,键的值将不会改变。\n- 如果键以 **$** 开始,键的值更有可能改变。\n\n当图像首次生成时,你只能通过修改下面的'当前图像生成数据'来改变它。", - "regexScript": "正则表达式脚本是一个自定义脚本,它将匹配到的IN字符串替换为OUT。\n\n有四种类型的选项。\n\n- **修改输入**修改用户的输入。\n\n- **修改输出**修改字符的输出。\n\n- **更改请求数据**在发送时修改当前聊天数据。\n\n- **修改显示**只在显示时修改文本,而不修改聊天数据。\n\nIN必须是一个没有标记且开始和结束时没有斜杠的正则表达式。\n\nOUT是一个可以包含替换模式的字符串。这些是模式:\n\n- $$\n\n - 插入$\n\n- $&\n\n - 插入匹配的子字符串。\n\n- $`\n\n - 插入匹配子字符串之前的字符串部分。\n\n- $1\n\n - 插入第一个匹配的组。与其他数字如2,3等一起工作...\n\n- $(name)\n\n - 插入命名的组\n\n如果OUT以 **@@** 开始,它不会替换字符串,而是在找到匹配字符串时产生特殊效果。\n\n- @@emo (情绪名称)\n\n - 如果角色处于情绪图像模式,将(情绪名称)设置为情绪,并阻止默认设置。", - "experimental": "这是一个不稳定的实验性功能。", - "oogaboogaURL": "如果你的WebUI支持旧版本的api,你的url应该像*https:.../run/textgen*\n\n如果你的WebUI支持新版api,你的url应该像*https://.../api/v1/generate* 使用api服务器作为主机,并将--api添加到参数中。", - "exampleMessage": "影响角色输出的示例对话。它不会永久性地使用token。\n\n对话的示例格式:\n\n```\n\n{{user}}: 嗨\n{{char}}: 你好\n\n: 嗨\nHaruhi: 你好\n```\n\n`````` 标记新对话的开始。", - "creatorQuotes": "注意本栏中的内容会在第一条消息的上方出现。用于告知用户有关该角色的信息。它不会进入提示词中。", - "systemPrompt": "如果不为空,将替换设置中的主要提示词。", - "chatNote": "强烈影响模型行为的聊天注释。嵌入到当前聊天中。也被称为记忆或ujb。", - "personality": "关于角色个性的简短描述。\n\n**不建议使用此选项。改为在角色描述中进行描述。**", - "scenario": "关于角色情境的简短描述。\n\n**不建议使用此选项。改为在角色描述中进行描述。**", - "loreSelective": "如果切换选择性的,则激活键和次要键都应有匹配项才能激活lorebook。", - "loreRandomActivation": "如果启用了概率条件,那么当lorebook的其他条件都已满足时,每次发送聊天时lorebook将以“概率”设置的概率被激活。", - "additionalAssets": "在你的聊天中显示的额外资源。\n\n - 使用`{{raw::}}`作为路径\n - 使用`{{img::}}`作为图片\n - 使用`{{video::}}`作为视频\n - 使用`{{audio::}}` 作为音频\n - 建议放在背景 HTML中", - "superMemory": "超级记忆通过给 AI 提供总结数据使你的角色记忆更多信息\n\n超级记忆模型是一个总结文本的模型。推荐使用Davinci,除非是具有超过2000个token数的高度总结能力的未经过滤模型,否则不推荐使用辅助模型。\n\n超级记忆提示决定了应发送什么提示词进行总结。如果你留空,它将使用默认提示词。建议留空。\n\n在所有设置都完成后,你可以在角色的设置中启用它。", - "replaceGlobalNote": "如果不为空,则将当前全局注释替换为此。", - "backgroundHTML": "将被注入聊天屏幕背景的Markdown/HTML数据。\n\n你也可以使用其他资源。例如,你可以使用`{{audio::}}`: 将背景注入资源" + "model": "模型选项是聊天中使用的主要模型。", + "submodel": "辅助模型是用于分析情绪图像,自动建议等的模型。推荐使用gpt3.5。", + "oaiapikey": "OpenAI的API密钥。你可以在https://platform.openai.com/account/api-keys 处获取。", + "mainprompt": "主提示词选项设定了默认模型的行为。", + "jailbreak": "当角色中启动NSFW(成人模式)/越狱开关时,NSFW(成人模式)/越狱提示词选项将被激活。", + "globalNote": "强烈影响模型行为的全局注释,也被称为UJB。在所有角色中都起作用。", + "autoSuggest": "用于生成自动建议用户回应时的提示词。", + "formatOrder": "提示词的格式化顺序。位置越靠下的模组对模型的影响更大。", + "forceUrl": "如果不为空,请求将会被发送到你输入的URL。", + "tempature": "较低的值能够让角色紧密地遵循提示词,但它更可能像机器一样回应。\n较高的值将使回复更具创造性,但角色的回应可能更容易崩溃。", + "frequencyPenalty": "较高的值能够防止在回应中使用重复的单词,但角色的回应可能更容易崩溃。", + "presensePenalty": "较高的值能够防止在所有上下文中使用重复的单词,但角色的回应可能更容易崩溃。", + "sdProvider": "图像生成的提供商。", + "msgSound": "角色回应时播放*叮*的声音", + "charDesc": "角色的简要描述。这会影响角色的回应。", + "charFirstMessage": "角色的第一条信息。这会极大地影响角色的回应。", + "charNote": "强烈影响模型行为的角色注释。嵌入到当前角色中。也被称为记忆或UJB。", + "toggleNsfw": "启用NSFW(成人模式)/越狱", + "lorebook": "lorebook是用户制作的AI词典。只有当上下文中有激活关键字时,AI才会看到它。", + "loreName": "lorebook的名称。它不会影响AI。", + "loreActivationKey": "如果上下文中存在其中激活关键字,lorebook就会被激活,提示词才会介入。用逗号分隔。", + "loreorder": "lore插入顺序更高,它会更多地影响模型,而当激活的lorebook较多时,它会被剪裁的更少。", + "bias": "偏差是一种修改字符串出现概率的键值数据。\n它可以从-100到100,更高的值会更可能出现,更低的值则不太可能出现\n警告:如果分词器出错,它可能无法正常工作。", + "emotion": "激活情绪图像功能会使系统根据角色的情绪显示图像,该情绪是通过分析角色的回应得出的。你必须输入情绪名称作为单词 *(如 joy,happy,fear 等)*。如果存在,以**neutral**命名的情绪将成为默认情绪。必须有3个以上的图像才能正常工作。", + "imggen": "图像生成功能会从外部程序生成并显示图像。该图像是通过分析当前聊天生成的图像提示词生成的。\n\n图像生成功能是基于键值参数进行分析的,这些参数可以在下面配置。\n\n**'always'** 键总是应用,并且不会改变。**'negative'** 键对于图像生成始终应用负值。\n\n其他键的值将根据随着聊天的进行而改变。\n\n如果一个键的名字前面有特殊字符,它就有特殊的效果。\n- 如果键以 **|** 开始,键的值将不会改变。\n- 如果键以 **$** 开始,键的值更有可能改变。\n\n当图像首次生成时,你只能通过修改下面的'当前图像生成数据'来改变它。", + "regexScript": "正则表达式脚本是一个自定义脚本,它将匹配到的IN字符串替换为OUT。\n\n有四种类型的选项。\n\n- **修改输入**修改用户的输入。\n\n- **修改输出**修改字符的输出。\n\n- **更改请求数据**在发送时修改当前聊天数据。\n\n- **修改显示**只在显示时修改文本,而不修改聊天数据。\n\nIN必须是一个没有标记且开始和结束时没有斜杠的正则表达式。\n\nOUT是一个可以包含替换模式的字符串。这些是模式:\n\n- $$\n\n - 插入$\n\n- $&\n\n - 插入匹配的子字符串。\n\n- $`\n\n - 插入匹配子字符串之前的字符串部分。\n\n- $1\n\n - 插入第一个匹配的组。与其他数字如2,3等一起工作...\n\n- $(name)\n\n - 插入命名的组\n\n如果OUT以 **@@** 开始,它不会替换字符串,而是在找到匹配字符串时产生特殊效果。\n\n- @@emo (情绪名称)\n\n - 如果角色处于情绪图像模式,将(情绪名称)设置为情绪,并阻止默认设置。", + "experimental": "这是一个不稳定的实验性功能。", + "oogaboogaURL": "如果你的WebUI支持旧版本的api,你的url应该像*https:.../run/textgen*\n\n如果你的WebUI支持新版api,你的url应该像*https://.../api/v1/generate* 使用api服务器作为主机,并将--api添加到参数中。", + "exampleMessage": "影响角色输出的示例对话。它不会永久性地使用token。\n\n对话的示例格式:\n\n```\n\n{{user}}: 嗨\n{{char}}: 你好\n\n: 嗨\nHaruhi: 你好\n```\n\n`````` 标记新对话的开始。", + "creatorQuotes": "注意本栏中的内容会在第一条消息的上方出现。用于告知用户有关该角色的信息。它不会进入提示词中。", + "systemPrompt": "如果不为空,将替换设置中的主要提示词。", + "chatNote": "强烈影响模型行为的聊天注释。嵌入到当前聊天中。也被称为记忆或ujb。", + "personality": "关于角色个性的简短描述。\n\n**不建议使用此选项。改为在角色描述中进行描述。**", + "scenario": "关于角色情境的简短描述。\n\n**不建议使用此选项。改为在角色描述中进行描述。**", + "utilityBot": "启用后,它将忽略主要提示词、越狱和其他提示词。用于实用程序机器人,而不是用于角色扮演。", + "loreSelective": "如果切换选择性的,则激活键和次要键都应有匹配项才能激活lorebook。", + "loreRandomActivation": "如果启用了概率条件,那么当lorebook的其他条件都已满足时,每次发送聊天时lorebook将以“概率”设置的概率被激活。", + "additionalAssets": "在你的聊天中显示的额外资源。\n\n - 使用`{{raw::}}`作为路径\n - 使用`{{img::}}`作为图片\n - 使用`{{video::}}`作为视频\n - 使用`{{audio::}}` 作为音频\n - 建议放在背景 HTML中", + "superMemory": "超级记忆通过给 AI 提供总结数据使你的角色记忆更多信息\n\n超级记忆模型是一个总结文本的模型。推荐使用Davinci,除非是具有超过2000个token数的高度总结能力的未经过滤模型,否则不推荐使用辅助模型。\n\n超级记忆提示决定了应发送什么提示词进行总结。如果你留空,它将使用默认提示词。建议留空。\n\n在所有设置都完成后,你可以在角色的设置中启用它。", + "replaceGlobalNote": "如果不为空,则将当前全局注释替换为此。", + "backgroundHTML": "将被注入聊天荧幕背景的Markdown/HTML数据。\n\n你也可以使用其他资源。例如,你可以使用`{{audio::}}`: 将背景注入资源", + "additionalText": "当AI认为需要时,将添加到角色描述中的文本,因此你可以在这里放置长文本。用双换行符分隔。", + "charjs": "角色JS是一个会与角色一起运行的Javascript代码。例如,你可以查看`https://github.com/kwaroran/RisuAI/blob/main/src/etc/example-char.js` 目前不建议使用,因为安全原因。导出将不包括此项。", + "romanizer": "Romanizer是一个插件,将非罗马字母字符转换为罗马字母以减少在请求数据时使用非罗马字母字符的token。这可能导致与原始模型不同的输出。当在聊天中使用罗马字母时,不建议使用此插件。", + "oaiRandomUser": "如果启用,将随机uuid放在用户参数上请求,并在刷新时更改。这可以用来防止AI识别用户。", + "inlayImages": "如果启用,图像可以嵌入到聊天中,如果AI支持,它们可以看到它。", + "metrica": "公制系统化器是一个插件,将公制转换为英制单位进行请求,并在输出时反向转换,以在使用英制性能时向用户显示公制系统。当在聊天中使用英制单位时,不建议使用这个插件。", + "lorePlus": "LoreBook+是一个实验性功能,使用vectordb而不仅仅是字符串匹配来提供更好的机器人制作体验和更好的匹配性能。", + "topP": "Top P是一个核心抽样概率阈值。模型考虑拥有top_p概率质量的结果。", + "openAIFixer": "OpenAI Fixer是一个插件,修复了OpenAI的一些问题。", + "sayNothing": "如果启用,当没有字符串输入时将输入'say nothing'。", + "showUnrecommended": "如果启用,将显示不推荐、已过时的设置。强烈建议不要使用这些设置。", + "imageCompression": "如果启用,将在导出角色时压缩图像。如果动画图像不起作用,请尝试禁用此选项。", + "useExperimental": "如果启用,将显示一些实验性功能。", + "forceProxyAsOpenAI": "如果启用,将在使用反向代理时强制使用OpenAI格式。", + "forcePlainFetch": "如果启用,将使用浏览器fetch api代替原生http请求。这可能导致CORS错误。", + "autoFillRequestURL": "如果启用,将自动填充请求url以匹配当前模型。", + "chainOfThought": "如果启用,将添加思维链提示词到提示词中。", + "gptVisionQuality": "此选项用于设置图像检测模型的质量。质量越高,检测越准确,但使用的token也越多。", + "genTimes": "此选项用于设置在支持模型上生成响应的次数。除了第一个响应外,其他响应将作为缓存重新生成。这可以降低模型的成本,但如果你在没有重新生成的情况下使用它,也可以增加成本。", + "requestretrys": "此选项用于设置请求失败时的重试次数。", + "emotionPrompt": "此选项用于设置用于检测情绪的提示词。如果它是空的,将使用默认提示词。", + "removePunctuationHypa": "如果启用,将在执行HypaMemory前移除标点符号。", + "additionalParams": "将添加到请求体的其他参数。如果你想排除一些参数,你可以将`{{none}}`放在值中。如果你想添加标头而不是体,你可以将`header::`放在键的前面,如`header::Authorization`。如果你想将值作为json,你可以将`json::`放在值的前面,如`json::{\"key\":\"value\"}`。否则,值的类型将自动确定。", + "antiClaudeOverload": "如果Claude过载发生,RisuAI会尝试通过继续使用相同的提示词来防止它。只适用于流式响应。这可能不适用于非官方api端点。", + "triggerScript": "触发脚本是一个在条件满足时运行的自定义脚本。它可以用来修改聊天数据、运行命令、更改变量等。其类型取决于它何时被触发。它还可以通过按钮运行,这可以与`{{button::Display::TriggerName}}`,或具有`risu-trigger=\"\"`属性的HTML按钮一起使用。", + "autoContinueChat": "如果启用,将尝试继续聊天,如果它没有以标点结束。不要与不使用标点的语言一起使用。", + "combineTranslation": "如果启用,一个句子但由HTML标签分隔的文本将被组合在一起并翻译,然后将重新应用修改显示脚本来翻译输出。\n这有助于翻译者进行正确的翻译。\n如果在你启用此选项时UI变得奇怪,请关闭此选项并报告。" }, "setup": { - "chooseProvider": "选择AI提供商", - "openaikey": "使用API密钥的OpenAI(推荐)", - "openaiProxy": "OpenAI反向代理", - "setupmodelself": "其他/我将自行设置", - "inputApiKey": "在此输入API密钥", - "apiKeyhelp": "你可以从以下地址获取API KEY:", - "setupSelfHelp": "欢迎界面结束后在设置中自行设置", - "theme": "选择你的主题", - "themeDescWifulike": "不适合移动设备", - "themeDescWifuCut": "适合移动设备", - "themeDescClassic": "适合所有设备", - "texttheme": "选择你的文字颜色", - "inputName": "最后,输入你的昵称。" + "chooseProvider": "选择AI提供商", + "openaikey": "使用API密钥的OpenAI(推荐)", + "openaiProxy": "OpenAI反向代理", + "setupmodelself": "其他/我将自行设置", + "inputApiKey": "在此输入API密钥", + "apiKeyhelp": "你可以从以下地址获取API KEY:", + "setupSelfHelp": "欢迎界面结束后在设置中自行设置", + "theme": "选择你的主题", + "themeDescWifulike": "不适合移动设备", + "themeDescWifuCut": "适合移动设备", + "themeDescClassic": "适合所有设备", + "texttheme": "选择你的文字颜色", + "inputName": "最后,输入你的昵称。", + "welcome": "欢迎来到RisuAI! 在这里,我将指导你进行设置。首先,我该如何称呼你?", + "welcome2": "你好{username}! 在我们开始之前,我会问你一些问题。你可以稍后在设置中更改这些设置。\n\n首先选择AI提供商。", + "openAIProvider": "OpenAI GPT是一个高质量AI模型,但它是付费的并且被过滤。", + "openrouterProvider": "Openrouter拥有很多模型,其中一些未经过滤,有些是免费的,但它不如OpenAI。", + "hordeProvider": "Horde是一个免费提供商,但响应时间长,质量低。", + "setProviderLater": "还有其他提供商,但你可以稍后在设置中设定。如果你想稍后设定,请选择此选项。", + "setupOpenAI": "要使用OpenAI,你需要获得一个API密钥。\n1. 前往 https://beta.openai.com/ \n2. 使用你的帐号登入 \n3. 前往 https://beta.openai.com/account/api-keys \n4. 点击'创建新的API密钥'并命名你的密钥 \n5. 在网站中复制密钥。\n6. 返回RisuAI\n7. 粘贴它,并点击发送按钮。", + "setupOpenrouter": "要使用Openrouter,你需要获得一个API密钥。\n1. 前往 https://openrouter.ai/keys\n2. 点击'创建密钥'\n3. 设定密钥名称无论你喜欢。\n4. 在网站中复制密钥\n5. 返回RisuAI\n6. 粘贴它,并点击发送按钮。", + "allDone": "全部完成!请稍候片刻。" }, "confirm": "确认", "goback": "返回", @@ -95,7 +141,7 @@ export const languageChinese = { "temperature": "温度", "frequencyPenalty": "频率惩罚", "presensePenalty": "存在惩罚", - "advancedSettings": "高级设置", + "advancedSettings": "进阶设置", "advancedSettingsWarn": "警告:如果你不知道该选项的作用,请不要更改它!", "formatingOrder": "格式化顺序", "authorNote": "作者注释", @@ -131,7 +177,7 @@ export const languageChinese = { "activationKeysInfo": "用逗号分隔", "prompt": "提示", "loreBookDepth": "Lorebook搜索深度", - "loreBookToken": "Lorebook最大tokens数", + "loreBookToken": "Lorebook最大token数", "removeCharacter": "删除角色", "removeGroup": "删除群组", "exportCharacter": "导出角色", @@ -264,7 +310,7 @@ export const languageChinese = { "sendWithEnter": "用回车键发送", "clickToEdit": "点击文本以编辑", "setNodePassword": "设置你的密码以确保安全", - "inputNodePassword": "输入你的密码。如果你不记得,请删除服务器文件中的save/__password.txt并重新启动服务器。", + "inputNodePassword": "输入你的密码。如果你不记得,请删除伺服器档案中的save/__password.txt并重新启动伺服器。", "simple": "简易", "advanced": "高级", "askReRollAutoSuggestions": "重新生成自动建议", @@ -304,13 +350,13 @@ export const languageChinese = { "officialWiki": "官方Wiki", "officialWikiDesc": "RisuAI的官方Wiki,随意查看。", "officialDiscord": "官方Discord", - "officialDiscordDesc": "用于讨论RisuAI的官方Discord服务器", - "confirmRecommendedPreset": "该模型有一个推荐设置。你想将设置更改为该推荐设置吗?(你可以在可访问性设置中关闭询问)", + "officialDiscordDesc": "用于讨论RisuAI的官方Discord伺服器", + "confirmRecommendedPreset": "该模型有一个推荐设置。你想将设置更改为该推荐设置吗?(你可以在易访问性设置中关闭询问)", "toggleConfirmRecommendedPreset": "更改模型时询问是否使用推荐设置", "recommendedPreset": "设置为推荐设置", "persona": "用户信息", "icon": "头像", - "account": "账号", + "account": "帐号", "remove": "删除", "creationSuccess": "创建成功", "noweb": "此功能无法在Web版本上使用。", @@ -350,6 +396,10 @@ export const languageChinese = { "triggerEffSysPrompt": "添加系统提示", "triggerEffSetVar": "修改变量", "triggerEffImperson": "发送聊天", + "triggerEffCommand": "Run Command", + "triggerEffRunTrigger": "Run Trigger", + "triggerEffStop": "Stop Sending Prompt", + "triggerEffCall": "Call Trigger", "varableName": "变量名", "role": "角色", "location": "位置", @@ -368,6 +418,7 @@ export const languageChinese = { "isNull": "未设置", "ifChatIndex": "如果聊天索引", "ifRandom": "如果随机", + "ifValue": "If Value", "hideRealm": "隐藏RisuRealm", "popularityLevel": "{} 流行度", "colorScheme": "配色方案", @@ -399,11 +450,121 @@ export const languageChinese = { "import": "导入", "supporterThanks": "支持者感谢", "supporterThanksDesc": "感谢你的支持!", - "donatorPatreonDesc": "默认情况下,不会在列表中显示,以保护隐私。如果你想显示你的昵称,请前往RisuAI的Patreon页面并按下链接按钮。", + "donatorPatreonDesc": "预设情况下,不会在列表中显示,以保护隐私。如果你想显示你的昵称,请前往RisuAI的Patreon页面并按下链接按钮。", "useNamePrefix": "使用名称前缀", "textAdventureNAI": "以NAI模式运行", "appendNameNAI": "在NAI上附加名称", - module: "模块", - modules: "模块", - useAdvancedEditor: "使用高级编辑器", -} \ No newline at end of file + "customStopWords": "自定义停用词", + "defaultPrompt": "默认提示", + "additionalText": "附加描述", + "seed": "Seed", + "charjs": "CharacterJS", + "depthPrompt": "深度提示", + "largePortrait": "大头像", + "lorePlus": "LoreBook+", + "reverseProxyOobaMode": "Ooba模式", + "joinMultiUserRoom": "加入多用户房间", + "exactTokens": "精确Token", + "fixedTokens": "大约Token", + "inlayViewScreen": "嵌入屏幕", + "imgGenPrompt": "图像生成提示", + "imgGenNegatives": "图像生成负面提示", + "imgGenInstructions": "图像生成指令", + "usePlainFetchWarn": "请在使用NovelAI时禁用此选项,因为它可能导致CORS错误。", + "translationPrompt": "翻译提示", + "webdeeplwarn": "此选项不推荐在网页版本中使用,因为它可能导致CORS错误。", + "saveBackupLocal": "本地保存备份", + "loadBackupLocal": "本地加载备份", + "topP": "Top P", + "genTimes": "生成选择", + "cot": "思维链", + "forcePlainFetch": "强制Plain Fetch", + "autoFillRequestURL": "自动填充请求URL", + "newOAIHandle": "新OpenAI处理", + "oaiRandomUser": "放置OAI随机用户", + "inlayImage": "嵌入图像功能", + "nativeAutomark": "实验性原生自动标记", + "assistantPrefill": "助理预填", + "postEndInnerFormat": "帖子结束", + "sendChatAsSystem": "以系统发送聊天", + "sendName": "在非群组聊天中发送名称", + "utilOverride": "实用重写", + "template": "模板", + "chatAsOriginalOnSystem": "作为原始角色发送", + "exportAsDataset": "将保存导出为数据集", + "editTranslationDisplay": "编辑翻译显示", + "selectModel": "选择模型", + "autoRemoveThoughtTag": "移除思维标签", + "customChainOfThought": "自定义思维链", + "maxThoughtTagDepth": "最大思维标签深度", + "openrouterFallback": "Openrouter备用", + "openrouterMiddleOut": "Openrouter中间输出", + "geminiApiKey": "Gemini API密钥", + "removePunctuationHypa": "移除记忆标点", + "memoryLimitThickness": "记忆限制厚度", + "inputCardPassword": "输入卡片密码", + "ccv2Desc": "Character Card V2是聊天机器人程序广泛使用的一种格式。", + "rccDesc": "Risu Refined Character Card是一种具有额外功能的格式,如密码、完整性检查等。", + "password": "密码", + "license": "许可证", + "licenseDesc": "你可以为下载者选择许可证以限制你的卡片提示的使用。", + "passwordDesc": "你可以设置一个密码来保护你的卡片免受未经授权的访问。", + "largePersonaPortrait": "个人肖像", + "module": "模块", + "modules": "模块", + "noModules": "没有安装任何模块。", + "createModule": "创建模块", + "basicInfo": "基本信息", + "moduleContent": "模块内容", + "confirmRemoveModuleFeature": "你真的想要移除这个功能吗?这个操作不能撤销。", + "editModule": "编辑模块", + "importModule": "导入模块", + "download": "下载", + "edit": "编辑", + "enableGlobal": "全球启用", + "chatModulesInfo": "你可以为这个聊天启用或禁用模块。", + "sideMenuRerollButton": "侧菜单重新生成按钮", + "persistentStorage": "持久存储", + "persistentStorageSuccess": "存储成功持久化", + "persistentStorageFail": "存储未持久化。你是否拒绝了请求?或者浏览器不支持?", + "persistentStorageRecommended": "推荐持久存储", + "persistentStorageDesc": "你的浏览器支持持久存储。这被推荐用于更好的性能和用户体验。", + "enable": "启用", + "postFile": "发布文件", + "requestInfoInsideChat": "在聊天中显示请求信息", + "inputTokens": "输入Token", + "outputTokens": "输出Token", + "tokenWarning": "Token计算可能不准确。建议将其用作参考。", + "log": "日志", + "popularityLevelDesc": "人气随着下载等的增加而增加,估计3.7的人气大约是1次下载。", + "additionalParams": "额外参数", + "heightMode": "高度模式", + "useAdvancedEditor": "使用高级编辑器", + "noWaitForTranslate": "不等待翻译", + "updateRealm": "更新到RisuRealm", + "updateRealmDesc": "你正试图将你的角色更新为 RisuRealm。这将会将你的角色更新为 RisuRealm,且无法恢复。", + "antiClaudeOverload": "Anti-Claude Overload (反Claude超载)", + "activeTabChange": "其他标签页已启用,当前标签页已停用。若要启用此标签页,请点击「确定」。", + "maxSupaChunkSize": "最大 SupaMemory 块大小", + "addCharacter": "新增角色", + "importFromRealm": "从 RisuRealm 选择", + "importFromRealmDesc": "从 RisuRealm 选择超过1000个角色", + "random": "随机", + "metaData": "Meta Data(元数据)", + "autoContinueMinTokens": "目标Token数(自动继续)", + "autoContinueChat": "反不完整回应(自动继续)", + "removeIncompleteResponse": "移除不完整句子", + "tokenizer": "Tokenizer(分词器)", + "chatFormating": "聊天格式", + "useInstructPrompt": "使用指令提示", + "hanuraiMemory": "HanuraiMemory", + "playground": "试验场", + "textAreaSize": "输入区大小", + "textAreaTextSize": "输入区文本大小", + "sideBarSize": "侧边栏大小", + "embedding": "嵌入", + "syntax": "Syntax(语法)", + "run": "运行", + "noMessage": "输入一些文字开始聊天。", + "combineTranslation": "合并翻译" + } \ No newline at end of file diff --git a/src/lang/index.ts b/src/lang/index.ts index 69894642..dd730472 100644 --- a/src/lang/index.ts +++ b/src/lang/index.ts @@ -4,6 +4,7 @@ import { languageGerman } from "./de"; import { languageEnglish } from "./en"; import { languageKorean } from "./ko"; import { LanguageVietnamese } from "./vi"; +import { languageChineseTraditional } from "./zh-Hant"; export let language:typeof languageEnglish = languageEnglish @@ -21,6 +22,9 @@ export function changeLanguage(lang:string){ else if(lang === 'vi'){ language = merge(structuredClone(languageEnglish), LanguageVietnamese) } + else if(lang === 'zh-Hant'){ + language = merge(structuredClone(languageEnglish), languageChineseTraditional) + } else{ language = languageEnglish } diff --git a/src/lang/zh-Hant.ts b/src/lang/zh-Hant.ts new file mode 100644 index 00000000..607d5944 --- /dev/null +++ b/src/lang/zh-Hant.ts @@ -0,0 +1,570 @@ +export const languageChineseTraditional = { + "formating": { + "main": "主提示詞", + "jailbreak": "越獄提示詞", + "chats": "過去的聊天", + "lorebook": "Lorebook", + "globalNote": "全域註釋", + "authorNote": "作者註釋", + "lastChat": "最後的聊天", + "description": "角色描述", + "personaPrompt": "人物提示詞", + "plain": "基礎提示", + "memory": "Supa/HypaMemory", + "postEverything": "End-Injected Prompts" + }, + "errors": { + "toomuchtoken": "錯誤:所需的最低token數超過了最大上下文大小", + "unknownModel": "錯誤:選擇了未知的模型", + "httpError": "錯誤:請求中出現錯誤:", + "noData": "檔案中沒有資料,或者檔案已損壞", + "onlyOneChat": "至少必須有一條聊天記錄", + "alreadyCharInGroup": "在該群組中已經有一個同名的角色了", + "noUserIcon": "你必須先設定你的頭貼", + "emptyText": "文字為空", + "wrongPassword": "密碼錯誤", + "networkFetch": "這發生在網路不穩定或伺服器當機時", + "networkFetchWeb": "這可能是一個CORS錯誤。這只在使用網頁版本時發生,因為瀏覽器的限制。嘗試使用桌面本地版本,或其他版本的RisuAI。", + "networkFetchPlain": "這可以是一個普通的抓取錯誤。嘗試在設定中禁用強制普通抓取選項。", + "requestLogRemoved": "這個請求日誌被移除", + "requestLogRemovedDesc": "這個請求日誌在使用者端重新整理或重新載入時移除·" + }, + "showHelp": "顯示幫助", + "help": { + "model": "模型選項是聊天中使用的主要模型。", + "submodel": "輔助模型是用於分析情緒圖像,自動建議等的模型。推薦使用gpt3.5。", + "oaiapikey": "OpenAI的API金鑰。你可以在https://platform.openai.com/account/api-keys處取得。", + "mainprompt": "主提示詞選項設定了預設模型的行為。", + "jailbreak": "當角色中啟動NSFW(成人模式)/越獄開關時,NSFW(成人模式)/越獄提示詞選項將被啟動。", + "globalNote": "強烈影響模型行為的全域註釋,也被稱為UJB。在所有角色中都起作用。", + "autoSuggest": "用於產生自動建議使用者回應時的提示詞。", + "formatOrder": "提示詞的格式化順序。位置越靠下的模組對模型的影響更大。", + "forceUrl": "如果不為空,請求將會被傳送到你輸入的URL。", + "tempature": "較低的值能夠讓角色緊密地遵循提示詞,但它更可能像機器一樣回應。\n較高的值將使回復更具創造性,但角色的回應可能更容易崩潰。", + "frequencyPenalty": "較高的值能夠防止在回應中使用重復的單詞,但角色的回應可能更容易崩潰。", + "presensePenalty": "較高的值能夠防止在所有上下文中使用重復的單詞,但角色的回應可能更容易崩潰。", + "sdProvider": "圖像產生的提供商。", + "msgSound": "角色回應時播放*叮*的聲音", + "charDesc": "角色的簡要描述。這會影響角色的回應。", + "charFirstMessage": "角色的第一條資訊。這會極大地影響角色的回應。", + "charNote": "強烈影響模型行為的角色註釋。嵌入到當前角色中。也被稱為記憶或UJB。", + "toggleNsfw": "啟用NSFW(成人模式)/越獄", + "lorebook": "lorebook是使用者製作的AI詞典。只有當上下文中有啟動關鍵字時,AI才會看到它。", + "loreName": "lorebook的名稱。它不會影響AI。", + "loreActivationKey": "如果上下文中存在其中啟動關鍵字,lorebook就會被啟動,提示詞才會介入。用逗號分隔。", + "loreorder": "lore插入順序更高,它會更多地影響模型,而當啟動的lorebook較多時,它會被縮減的更少。", + "bias": "偏差是一種修改字元串出現機率的鍵值資料。\n它可以從-100到100,更高的值會更可能出現,更低的值則不太可能出現\n警告:如果分詞器出錯,它可能無法正常工作。", + "emotion": "啟動情緒圖像功能會使系統根據角色的情緒顯示圖像,該情緒是通過分析角色的回應得出的。你必須輸入情緒名稱作為單詞 *(如 joy,happy,fear 等)*。如果存在,以**neutral**命名的情緒將成為預設情緒。必須有3個以上的圖像才能正常工作。", + "imggen": "圖像產生功能會從外部程式產生並顯示圖像。該圖像是通過分析當前聊天產生的圖像提示詞產生的。\n\n圖像產生功能是基於鍵值參數進行分析的,這些參數可以在下面設定。\n\n**'always'** 鍵總是應用,並且不會改變。**'negative'** 鍵對於圖像產生始終應用負值。\n\n其他鍵的值將根據隨著聊天的進行而改變。\n\n如果一個鍵的名字前面有特殊字元,它就有特殊的效果。\n- 如果鍵以 **|** 開始,鍵的值將不會改變。\n- 如果鍵以 **$** 開始,鍵的值更有可能改變。\n\n當圖像首次產生時,你只能通過修改下面的'當前圖像產生資料'來改變它。", + "regexScript": "正規表示式指令碼是一個自訂指令碼,它將比對到的IN字元串替換為OUT。\n\n有四種類型的選項。\n\n- **修改輸入**修改使用者的輸入。\n\n- **修改輸出**修改字元的輸出。\n\n- **更改請求資料**在傳送時修改當前聊天資料。\n\n- **修改顯示**只在顯示時修改文字,而不修改聊天資料。\n\nIN必須是一個沒有標記且開始和結束時沒有斜槓的正規表示式。\n\nOUT是一個可以包含替換模式的字元串。這些是模式:\n\n- $$\n\n - 插入$\n\n- $&\n\n - 插入比對的子字元串。\n\n- $`\n\n - 插入比對子字元串之前的字元串部分。\n\n- $1\n\n - 插入第一個比對的組。與其他數字如2,3等一起工作...\n\n- $(name)\n\n - 插入命名的組\n\n如果OUT以 **@@** 開始,它不會替換字元串,而是在找到比對字元串時產生特殊效果。\n\n- @@emo (情緒名稱)\n\n - 如果角色處於情緒圖像模式,將(情緒名稱)設定為情緒,並阻止預設設定。", + "experimental": "這是一個不穩定的實驗性功能。", + "oogaboogaURL": "如果你的WebUI支援舊版本的api,你的url應該像*https:.../run/textgen*\n\n如果你的WebUI支援新版api,你的url應該像*https://.../api/v1/generate* 使用api伺服器作為主機,並將--api添加到參數中。", + "exampleMessage": "影響角色輸出的範例對話。它不會永久性地使用token。\n\n對話的範例格式:\n\n```\n\n{{user}}: 嗨\n{{char}}: 你好\n\n: 嗨\nHaruhi: 你好\n```\n\n`````` 標記新對話的開始。", + "creatorQuotes": "注意本欄中的內容會在第一條訊息的上方出現。用於告知使用者有關該角色的資訊。它不會進入提示詞中。", + "systemPrompt": "如果不為空,將替換設定中的主要提示詞。", + "chatNote": "強烈影響模型行為的聊天註釋。嵌入到當前聊天中。也被稱為記憶或ujb。", + "personality": "關於角色個性的簡短描述。\n\n**不建議使用此選項。改為在角色描述中進行描述。**", + "scenario": "關於角色情境的簡短描述。\n\n**不建議使用此選項。改為在角色描述中進行描述。**", + "utilityBot": "啟用後,它將忽略主要提示詞、越獄和其他提示詞。用於實用程式機器人,而不是用於角色扮演。", + "loreSelective": "如果切換選擇性的,則啟動鍵和次要鍵都應有比對項才能啟動lorebook。", + "loreRandomActivation": "如果啟用了機率條件,那麼當lorebook的其他條件都已滿足時,每次傳送聊天時lorebook將以“機率”設定的機率被啟動。", + "additionalAssets": "在你的聊天中顯示的額外資源。\n\n - 使用`{{raw::}}`作為路徑\n - 使用`{{img::}}`作為圖片\n - 使用`{{video::}}`作為視訊\n - 使用`{{audio::}}` 作為音訊\n - 建議放在背景 HTML中", + "superMemory": "超級記憶通過給 AI 提供總結資料使你的角色記憶更多資訊\n\n超級記憶模型是一個總結文字的模型。推薦使用Davinci,除非是具有超過2000個token數的高度總結能力的未經過濾模型,否則不推薦使用輔助模型。\n\n超級記憶提示決定了應傳送什麼提示詞進行總結。如果你留空,它將使用預設提示詞。建議留空。\n\n在所有設定都完成後,你可以在角色的設定中啟用它。", + "replaceGlobalNote": "如果不為空,則將當前全域註釋替換為此。", + "backgroundHTML": "將被注入聊天螢幕背景的Markdown/HTML資料。\n\n你也可以使用其他資源。例如,你可以使用`{{audio::}}`: 將背景注入資源", + "additionalText": "當AI認為需要時,將添加到角色描述中的文字,因此你可以在這裡放置長文字。用雙換行符分隔。", + "charjs": "角色JS是一個會與角色一起執行的Javascript代碼。例如,你可以檢視`https://github.com/kwaroran/RisuAI/blob/main/src/etc/example-char.js` 目前不建議使用,因為安全原因。匯出將不包括此項。", + "romanizer": "Romanizer是一個外掛程式,將非羅馬字母字元轉換為羅馬字母以減少在請求資料時使用非羅馬字母字元的token。這可能導致與原始模型不同的輸出。當在聊天中使用羅馬字母時,不建議使用此外掛程式。", + "oaiRandomUser": "如果啟用,將隨機uuid放在使用者參數上請求,並在重新整理時更改。這可以用來防止AI辨識使用者。", + "inlayImages": "如果啟用,圖像可以嵌入到聊天中,如果AI支援,它們可以看到它。", + "metrica": "公制系統化器是一個外掛程式,將公制轉換為英制單位進行請求,並在輸出時反向轉換,以在使用英制效能時向使用者顯示公制系統。當在聊天中使用英制單位時,不建議使用這個外掛程式。", + "lorePlus": "LoreBook+是一個實驗性功能,使用vectordb而不僅僅是字元串比對來提供更好的機器人製作體驗和更好的比對效能。", + "topP": "Top P是一個核心抽樣機率門檻值。模型考慮擁有top_p機率品質的結果。", + "openAIFixer": "OpenAI Fixer是一個外掛程式,修復了OpenAI的一些問題。", + "sayNothing": "如果啟用,當沒有字元串輸入時將輸入'say nothing'。", + "showUnrecommended": "如果啟用,將顯示不推薦、已過時的設定。強烈建議不要使用這些設定。", + "imageCompression": "如果啟用,將在匯出角色時壓縮圖像。如果動畫圖像不起作用,請嘗試禁用此選項。", + "useExperimental": "如果啟用,將顯示一些實驗性功能。", + "forceProxyAsOpenAI": "如果啟用,將在使用反向代理時強制使用OpenAI格式。", + "forcePlainFetch": "如果啟用,將使用瀏覽器fetch api代替原生http請求。這可能導致CORS錯誤。", + "autoFillRequestURL": "如果啟用,將自動填充請求url以比對當前模型。", + "chainOfThought": "如果啟用,將添加思維鏈提示詞到提示詞中。", + "gptVisionQuality": "此選項用於設定圖像檢測模型的品質。品質越高,檢測越準確,但使用的token也越多。", + "genTimes": "此選項用於設定在支援模型上產生響應的次數。除了第一個響應外,其他響應將作為快取重新產生。這可以降低模型的成本,但如果你在沒有重新產生的情況下使用它,也可以增加成本。", + "requestretrys": "此選項用於設定請求失敗時的重試次數。", + "emotionPrompt": "此選項用於設定用於檢測情緒的提示詞。如果它是空的,將使用預設提示詞。", + "removePunctuationHypa": "如果啟用,將在執行HypaMemory前移除標點符號。", + "additionalParams": "將添加到請求體的其他參數。如果你想排除一些參數,你可以將`{{none}}`放在值中。如果你想添加檔頭而不是體,你可以將`header::`放在鍵的前面,如`header::Authorization`。如果你想將值作為json,你可以將`json::`放在值的前面,如`json::{\"key\":\"value\"}`。否則,值的類型將自動確定。", + "antiClaudeOverload": "如果Claude過載發生,RisuAI會嘗試通過繼續使用相同的提示詞來防止它。只適用於流式響應。這可能不適用於非官方api端點。", + "triggerScript": "觸發指令碼是一個在條件滿足時執行的自訂指令碼。它可以用來修改聊天資料、執行指令、更改變數等。其類型取決於它何時被觸發。它還可以通過按鈕執行,這可以與`{{button::Display::TriggerName}}`,或具有`risu-trigger=\"\"`屬性的HTML按鈕一起使用。", + "autoContinueChat": "如果啟用,將嘗試繼續聊天,如果它沒有以標點符號結束。不要與不使用標點符號的語言一起使用。", + "combineTranslation": "如果啟用,一個句子但由HTML標籤分隔的文字將被組合在一起並翻譯,然後將重新應用修改顯示指令碼來翻譯輸出。\n這有助於翻譯者進行正確的翻譯。\n如果在你啟用此選項時UI變得奇怪,請關閉此選項並報告。" + }, + "setup": { + "chooseProvider": "選擇AI提供商", + "openaikey": "使用API金鑰的OpenAI(推薦)", + "openaiProxy": "OpenAI反向代理", + "setupmodelself": "其他/我將自行設定", + "inputApiKey": "在此輸入API金鑰", + "apiKeyhelp": "你可以從以下位址取得API KEY:", + "setupSelfHelp": "歡迎界面結束後在設定中自行設定", + "theme": "選擇你的主題", + "themeDescWifulike": "不適合行動裝置", + "themeDescWifuCut": "適合行動裝置", + "themeDescClassic": "適合所有裝置", + "texttheme": "選擇你的文字顏色", + "inputName": "最後,輸入你的暱稱。", + "welcome": "歡迎來到RisuAI! 在這裡,我將指導你進行設定。首先,我該如何稱呼你?", + "welcome2": "你好{username}! 在我們開始之前,我會問你一些問題。你可以稍後在設定中更改這些設定。\n\n首先選擇AI提供商。", + "openAIProvider": "OpenAI GPT是一個高品質AI模型,但它是付費的並且被過濾。", + "openrouterProvider": "Openrouter擁有很多模型,其中一些未經過濾,有些是免費的,但它不如OpenAI。", + "hordeProvider": "Horde是一個免費提供商,但響應時間長,品質低。", + "setProviderLater": "還有其他提供商,但你可以稍後在設定中設定。如果你想稍後設定,請選擇此選項。", + "setupOpenAI": "要使用OpenAI,你需要獲得一個API金鑰。\n1. 前往 https://beta.openai.com/ \n2. 使用你的帳號登入 \n3. 前往 https://beta.openai.com/account/api-keys \n4. 點擊'建立新的API金鑰'並命名你的金鑰 \n5. 在網站中複製金鑰。\n6. 傳回RisuAI\n7. 貼上它,並點擊傳送按鈕。", + "setupOpenrouter": "要使用Openrouter,你需要獲得一個API金鑰。\n1. 前往 https://openrouter.ai/keys\n2. 點擊'建立金鑰'\n3. 設定金鑰名稱無論你喜歡。\n4. 在網站中複製金鑰\n5. 傳回RisuAI\n6. 貼上它,並點擊傳送按鈕。", + "allDone": "全部完成!請稍候片刻。" + }, + "confirm": "確認", + "goback": "傳回", + "botSettings": "機器人設定", + "model": "模型", + "apiKey": "API金鑰", + "providerURL": "請求URL", + "providerJSON": "請求體JSON", + "mainPrompt": "主要提示", + "jailbreakPrompt": "越獄提示", + "globalNote": "全域註釋", + "autoSuggest": "自動建議", + "tokens": "tokens", + "maxContextSize": "最大上下文大小", + "maxResponseSize": "最大響應大小", + "temperature": "溫度", + "frequencyPenalty": "頻率懲罰", + "presensePenalty": "存在懲罰", + "advancedSettings": "進階設定", + "advancedSettingsWarn": "警告:如果你不知道該選項的作用,請不要更改它!", + "formatingOrder": "格式化順序", + "authorNote": "作者註釋", + "firstMessage": "第一條訊息", + "description": "描述", + "jailbreakToggle": "啟用越獄", + "charIcon": "角色頭貼", + "characterDisplay": "角色展示", + "viewScreen": "額外角色螢幕", + "none": "無", + "emotionImage": "情緒圖像", + "noImages": "沒有圖像", + "noBias": "無偏差", + "image": "圖像", + "name": "名稱", + "emotion": "情緒名稱", + "value": "值", + "reroll": "重新產生", + "chatList": "聊天列表", + "removeChat": "刪除這條訊息?", + "loreBook": "Lorebook", + "character": "角色", + "Chat": "聊天", + "globalLoreInfo": "角色Lorebook適用於該角色的所有聊天。", + "group": "群組", + "groupLoreInfo": "群組Lorebook適用於該群組的所有聊天。", + "localLoreInfo": "聊天Lorebook僅適用於當前聊天。", + "removeConfirm": "你真的要刪除: ", + "removeConfirm2": "你真的要刪除: ", + "exportConfirm": "你想要匯出這個嗎?", + "insertOrder": "插入順序", + "activationKeys": "啟動鍵", + "activationKeysInfo": "用逗號分隔", + "prompt": "提示", + "loreBookDepth": "Lorebook搜尋深度", + "loreBookToken": "Lorebook最大token數", + "removeCharacter": "刪除角色", + "removeGroup": "刪除群組", + "exportCharacter": "匯出角色", + "userSetting": "使用者設定", + "username": "你的姓名", + "userIcon": "你的頭貼", + "successExport": "成功匯出並下載到你的下載目錄中", + "successImport": "成功匯入", + "importedCharacter": "已匯入的角色", + "alwaysActive": "始終啟動", + "additionalPrompt": "附加提示", + "descriptionPrefix": "描述字首", + "forceReplaceUrl": "反向代理", + "emotionWarn": "輔助模型正在使用中。", + "plugin": "外掛程式", + "language": "語言", + "UiLanguage": "UI語言", + "createfromScratch": "從頭建立", + "importCharacter": "匯入角色", + "translator": "翻譯器", + "disabled": "已禁用", + "noPluginSelected": "已將模型設定為外掛程式,但未選擇任何外掛程式。", + "text": "文字", + "UISize": "聊天文字大小", + "newVersion": "發現更新,是否要安裝?", + "display": "顯示&音訊", + "useCustomBackground": "自訂背景", + "translateInput": "翻譯輸入", + "autoTranslation": "自動翻譯", + "fullscreen": "全螢幕", + "playMessage": "播放訊息音訊", + "iconSize": "頭貼大小", + "createGroup": "建立群組", + "groupIcon": "群組頭貼", + "single": "單個", + "multiple": "多個", + "useCharLorebook": "在角色中使用Lorebook", + "selectChar": "選擇角色", + "askLoadFirstMsg": "是否載入第一條訊息?", + "theme": "主題", + "editOrder": "編輯順序", + "autoMode": "自動模式", + "submodel": "輔助模型", + "timeOutinSec": "逾時(秒)", + "emotionPrompt": "情緒提示詞", + "singleView": "單角色視圖", + "SpacedView": "多角色視圖", + "emphasizedView": "雙角色視圖", + "pluginWarn": "外掛程式在隔離的環境中執行,但安裝惡意外掛程式可能會導致問題。", + "createGroupImg": "產生群組頭貼", + "waifuWidth": "虛擬伴侶聊天寬度", + "savebackup": "將備份保存到Google", + "loadbackup": "從Google載入備份", + "files": "檔案", + "backupConfirm": "你真的想要保存備份嗎?", + "backupLoadConfirm": "你真的想要載入備份嗎?所有資料將遺失!", + "backupLoadConfirm2": "你真的,真的想要載入備份嗎?所有資料將遺失!", + "pasteAuthCode": "請從彈出視窗中複製授權代碼並貼上到此處:", + "others": "其他", + "presets": "預設", + "imageGeneration": "圖像產生", + "provider": "提供商", + "key": "金鑰", + "noData": "無資料", + "currentImageGeneration": "當前圖像產生資料", + "promptPreprocess": "使用提示詞預處理", + "SwipeRegenerate": "使用滑動箭頭重新產生訊息", + "instantRemove": "在刪除訊息時刪除後續訊息", + "instantRemoveConfirm": "你是否想只刪除一條訊息?如果你選擇否,那麼它下面的訊息也將被刪除。", + "textColor": "文字顏色", + "classicRisu": "經典Risu", + "highcontrast": "高對比度", + "quickPreset": "你可以通過 Ctrl +(預設的索引)快速更改預設", + "requestretrys": "請求失敗時重試", + "utilityBot": "實用機器人", + "ShowLog": "顯示請求日誌", + "waifuWidth2": "虛擬伴侶大小", + "sayNothing": "當沒有字元串輸入時自動傳送'say nothing'", + "regexScript": "正規表示式", + "type": "類型", + "editInput": "修改輸入", + "editOutput": "修改輸出", + "editProcess": "修改請求資料", + "loadLatest": "載入最新的備份", + "loadOthers": "載入其他備份", + "exampleMessage": "範例訊息", + "creatorNotes": "角色創作者的評論", + "systemPrompt": "系統提示詞", + "characterNotes": "角色備註", + "personality": "個性", + "scenario": "情境", + "alternateGreetings": "備用問候語", + "unrecommended": "不推薦", + "chatNotes": "聊天筆記", + "showUnrecommended": "顯示不推薦的設定", + "altGreet": "備選問候語", + "scripts": "指令碼", + "settings": "設定", + "selective": "選擇性的", + "SecondaryKeys": "次要鍵", + "useGlobalSettings": "使用全域設定", + "recursiveScanning": "遞迴掃描", + "creator": "創作者", + "CharVersion": "角色版本", + "Speech": "語音", + "ToggleSuperMemory": "啟用超級記憶", + "SuperMemory": "超級記憶", + "useExperimental": "啟用實驗性功能", + "showMemoryLimit": "顯示記憶限制", + "roundIcons": "圓形頭貼", + "streaming": "流式傳輸", + "chatBot": "聊天機器人", + "otherBots": "其他機器人", + "user": "使用者", + "additionalAssets": "額外資源", + "editDisplay": "修改顯示", + "community": "社群", + "textBackgrounds": "自訂文字螢幕顏色", + "textBorder": "文字輪廓", + "textScreenRound": "圓角文字螢幕", + "textScreenBorder": "文字螢幕邊框", + "ttsReadOnlyQuoted": "TTS僅閱讀引號內的文字", + "ttsStop": "停止TTS(文字轉語音)", + "askRemoval": "刪除訊息時詢問", + "replaceGlobalNote": "替換全域註釋", + "charLoreBook": "角色LoreBook", + "globalLoreBook": "全域LoreBook", + "globalRegexScript": "全域正規表示式", + "accessibility": "輔助功能", + "sendWithEnter": "用Enter鍵傳送", + "clickToEdit": "點擊文字以編輯", + "setNodePassword": "設定你的密碼以確保安全", + "inputNodePassword": "輸入你的密碼。如果你不記得,請刪除伺服器檔案中的save/__password.txt並重新啟動伺服器。", + "simple": "簡易", + "advanced": "進階", + "askReRollAutoSuggestions": "重新產生自動建議", + "creatingSuggestions": "產生建議中...", + "orderByOrder": "按順序交談", + "removeFromGroup": "你真的想從群組中刪除{{char}}嗎?", + "talkness": "健談程度", + "active": "活躍", + "loreRandomActivation": "使用機率條件", + "activationProbability": "機率", + "shareCloud": "分享到RisuRealm", + "hub": "RisuRealm", + "tags": "標籤", + "backgroundHTML": "背景嵌入", + "copied": "已複製", + "useChatCopy": "使用聊天複製", + "useChatSticker": "使用聊天貼紙", + "useAdditionalAssetsPreview": "使用額外資源預覽", + "autoTranslateInput": "自動翻譯輸入", + "enterMessageForTranslateToEnglish": "輸入要翻譯成英語的訊息", + "recent": "最新", + "downloads": "下載量", + "trending": "最流行", + "imageCompression": "圖像壓縮", + "notLoggedIn": "未登入到Risu帳戶", + "googleDriveInfo": "連線到Google Drive以同步你的資料。", + "googleDriveConnection": "Google Drive連線", + "googleDriveConnected": "Google Drive已連線", + "SaveDataInAccount": "在帳戶中保存資料", + "dataSavingInAccount": "在帳戶中保存資料", + "logout": "登出", + "loadDataFromAccount": "從帳戶載入資料", + "saveCurrentDataToAccount": "將當前資料保存到帳戶", + "chatAssumed": "", + "proxyAPIKey": "API金鑰", + "proxyRequestModel": "代理請求模型", + "officialWiki": "官方Wiki", + "officialWikiDesc": "RisuAI的官方Wiki,隨意檢視。", + "officialDiscord": "官方Discord", + "officialDiscordDesc": "用於討論RisuAI的官方Discord伺服器", + "confirmRecommendedPreset": "該模型有一個推薦設定。你想將設定更改為該推薦設定嗎?(你可以在輔助功能設定中關閉詢問)", + "toggleConfirmRecommendedPreset": "更改模型時詢問是否使用推薦設定", + "recommendedPreset": "設定為推薦設定", + "persona": "使用者資訊", + "icon": "頭貼", + "account": "帳號", + "remove": "刪除", + "creationSuccess": "建立成功", + "noweb": "此功能無法在Web版本上使用。", + "createBotInternet": "使用AI從網路建立機器人", + "createBotInternetAlert": "請提供角色的名稱和相應的系列/遊戲。", + "able": "能夠", + "assetWidth": "資源圖像最大寬度", + "animationSpeed": "動畫速度", + "screenshot": "截圖", + "screenshotSaved": "截圖已保存", + "inputBotGenerationPrompt": "輸入機器人產生提示", + "createBotAI": "使用AI建立OC機器人", + "createBotwithAI": "使用AI建立機器人", + "changeFolderName": "輸入新資料夾名稱(留空以取消)", + "cancel": "取消", + "renameFolder": "重新命名資料夾", + "changeFolderColor": "更改資料夾顏色", + "fullWordMatching": "完整單詞比對", + "botSettingAtStart": "啟動時的機器人選單", + "triggerStart": "在聊天傳送時觸發", + "triggerInput": "在使用者輸出時觸發", + "triggerOutput": "在角色輸出時觸發", + "triggerManual": "僅手動觸發", + "triggerCondVar": "如果變數", + "triggerCondExists": "如果聊天中存在文字", + "triggerScript": "觸發指令碼", + "triggerMatchRegex": "與正規表示式比對", + "triggerMatchLoose": "寬松比對", + "triggerMatchStrict": "嚴格比對", + "searchDepth": "搜尋深度", + "equal": "等於", + "notEqual": "不等於", + "greater": "大於", + "less": "小於", + "greaterEqual": "大於或等於", + "lessEqual": "小於或等於", + "triggerEffSysPrompt": "添加系統提示", + "triggerEffSetVar": "修改變數", + "triggerEffImperson": "傳送聊天", + "triggerEffCommand": "Run Command", + "triggerEffRunTrigger": "Run Trigger", + "triggerEffStop": "Stop Sending Prompt", + "triggerEffCall": "Call Trigger", + "varableName": "變數名", + "role": "角色", + "location": "位置", + "promptstart": "提示開始", + "promptend": "提示結束", + "historyend": "歷史結束", + "always": "總是", + "noEffect": "無效果", + "invaildTriggerEffect": "此效果不適用於此觸發器類型。", + "operator": "運算子", + "TriggerSetToVar": "設定為變數", + "TriggerAddToVar": "添加到變數", + "TriggerSubToVar": "從變數中減去", + "TriggerMulToVar": "乘以變數", + "TriggerDivToVar": "除以變數", + "isNull": "未設定", + "ifChatIndex": "如果聊天索引", + "ifRandom": "如果隨機", + "ifValue": "If Value", + "hideRealm": "隱藏RisuRealm", + "popularityLevel": "{} 流行度", + "colorScheme": "配色方案", + "rangeStart": "範圍開始", + "rangeEnd": "範圍結束", + "untilChatEnd": "直到聊天結束", + "usePromptTemplate": "使用提示模板", + "specialType": "特殊類型", + "noSpecialType": "無特殊類型", + "forceProxyAsOpenAI": "強制代理格式為OpenAI", + "promptTemplate": "提示模板", + "customInnerFormat": "自訂內部格式", + "innerFormat": "內部格式", + "HypaMemory": "HypaMemory", + "ToggleHypaMemory": "啟用HypaMemory", + "resetPromptTemplateConfirm": "你確定要重設提示詞模板嗎?", + "emotionMethod": "情緒方法", + "continueResponse": "繼續響應", + "showMenuChatList": "顯示聊天列表", + "translatorLanguage": "翻譯語言", + "translatorType": "翻譯類型", + "deeplKey": "deepl API金鑰", + "deeplFreeKey": "deepl免費API金鑰", + "deeplXUrl": "deepLX URL", + "deeplXToken": "deepLX Token", + "exportPersona": "匯出角色", + "importPersona": "匯入角色", + "export": "匯出", + "import": "匯入", + "supporterThanks": "支援者感謝", + "supporterThanksDesc": "感謝你的支援!", + "donatorPatreonDesc": "預設情況下,不會在列表中顯示,以保護隱私。如果你想顯示你的暱稱,請前往RisuAI的Patreon頁面並按下連結按鈕。", + "useNamePrefix": "使用名稱字首", + "textAdventureNAI": "以NAI模式執行", + "appendNameNAI": "在NAI上附加名稱", + "customStopWords": "自訂停用詞", + "defaultPrompt": "預設提示", + "additionalText": "附加描述", + "seed": "Seed", + "charjs": "CharacterJS", + "depthPrompt": "深度提示", + "largePortrait": "大肖像", + "lorePlus": "LoreBook+", + "reverseProxyOobaMode": "Ooba模式", + "joinMultiUserRoom": "加入多使用者房間", + "exactTokens": "精確Token", + "fixedTokens": "大約Token", + "inlayViewScreen": "嵌入螢幕", + "imgGenPrompt": "圖像產生提示", + "imgGenNegatives": "圖像產生負面提示", + "imgGenInstructions": "圖像產生指令", + "usePlainFetchWarn": "請在使用NovelAI時禁用此選項,因為它可能導致CORS錯誤。", + "translationPrompt": "翻譯提示", + "webdeeplwarn": "此選項不推薦在網頁版本中使用,因為它可能導致CORS錯誤。", + "saveBackupLocal": "本地保存備份", + "loadBackupLocal": "本地載入備份", + "topP": "Top P", + "genTimes": "產生選擇", + "cot": "思維鏈", + "forcePlainFetch": "強制Plain Fetch", + "autoFillRequestURL": "自動填充請求URL", + "newOAIHandle": "新OpenAI處理", + "oaiRandomUser": "放置OAI隨機使用者", + "inlayImage": "嵌入圖像功能", + "nativeAutomark": "實驗性原生自動標記", + "assistantPrefill": "助理預填", + "postEndInnerFormat": "貼文結束", + "sendChatAsSystem": "以系統傳送聊天", + "sendName": "在非群組聊天中傳送名稱", + "utilOverride": "實用重寫", + "template": "模板", + "chatAsOriginalOnSystem": "作為原始角色傳送", + "exportAsDataset": "將保存匯出為資料集", + "editTranslationDisplay": "編輯翻譯顯示", + "selectModel": "選擇模型", + "autoRemoveThoughtTag": "移除思維標籤", + "customChainOfThought": "自訂思維鏈", + "maxThoughtTagDepth": "最大思維標籤深度", + "openrouterFallback": "Openrouter備用", + "openrouterMiddleOut": "Openrouter中間輸出", + "geminiApiKey": "Gemini API金鑰", + "removePunctuationHypa": "移除記憶標點", + "memoryLimitThickness": "記憶限制厚度", + "inputCardPassword": "輸入卡片密碼", + "ccv2Desc": "Character Card V2是聊天機器人程式廣泛使用的一種格式。", + "rccDesc": "Risu Refined Character Card是一種具有額外功能的格式,如密碼、完整性檢查等。", + "password": "密碼", + "license": "許可證", + "licenseDesc": "你可以為下載者選擇許可證以限制你的卡片提示的使用。", + "passwordDesc": "你可以設定一個密碼來保護你的卡片免受未經授權的存取。", + "largePersonaPortrait": "個人肖像", + "module": "模組", + "modules": "模組", + "noModules": "沒有安裝任何模組。", + "createModule": "建立模組", + "basicInfo": "基本資訊", + "moduleContent": "模組內容", + "confirmRemoveModuleFeature": "你真的想要移除這個功能嗎?這個操作不能復原。", + "editModule": "編輯模組", + "importModule": "匯入模組", + "download": "下載", + "edit": "編輯", + "enableGlobal": "全域啟用", + "chatModulesInfo": "你可以為這個聊天啟用或禁用模組。", + "sideMenuRerollButton": "側選單重新產生按鈕", + "persistentStorage": "持久儲存", + "persistentStorageSuccess": "儲存成功持久化", + "persistentStorageFail": "儲存未持久化。你是否拒絕了請求?或者瀏覽器不支援?", + "persistentStorageRecommended": "推薦持久儲存", + "persistentStorageDesc": "你的瀏覽器支援持久儲存。這被推薦用於更好的效能和使用者體驗。", + "enable": "啟用", + "postFile": "公開檔案", + "requestInfoInsideChat": "在聊天中顯示請求資訊", + "inputTokens": "輸入Token", + "outputTokens": "輸出Token", + "tokenWarning": "Token計算可能不準確。建議將其用作參考。", + "log": "日誌", + "popularityLevelDesc": "人氣隨著下載等的增加而增加,估計3.7的人氣大約是1次下載。", + "additionalParams": "額外參數", + "heightMode": "高度模式", + "useAdvancedEditor": "使用進階編輯器", + "noWaitForTranslate": "不等待翻譯", + "updateRealm": "更新到RisuRealm", + "updateRealmDesc": "你正試圖將你的角色更新為RisuRealm。這將會將你的角色更新為RisuRealm,且無法恢復。", + "antiClaudeOverload": "Anti-Claude Overload (反Claude超載)", + "activeTabChange": "其他標籤頁已啟用,當前標籤頁已停用。若要啟用此標籤頁,請點擊「確定」。", + "maxSupaChunkSize": "最大 SupaMemory 塊大小", + "addCharacter": "新增角色", + "importFromRealm": "從 RisuRealm 選擇", + "importFromRealmDesc": "從 RisuRealm 選擇超過1000個角色", + "random": "隨機", + "metaData": "Meta Data(元資料)", + "autoContinueMinTokens": "目標Token數(自動繼續)", + "autoContinueChat": "反不完整回應(自動繼續)", + "removeIncompleteResponse": "移除不完整句子", + "tokenizer": "Tokenizer(分詞器)", + "chatFormating": "聊天格式", + "useInstructPrompt": "使用指令提示", + "hanuraiMemory": "HanuraiMemory", + "playground": "試驗場", + "textAreaSize": "輸入區大小", + "textAreaTextSize": "輸入區文字大小", + "sideBarSize": "側邊欄大小", + "embedding": "嵌入", + "syntax": "Syntax(語法)", + "run": "執行", + "noMessage": "輸入一些文字開始聊天。", + "combineTranslation": "合併翻譯" + } \ No newline at end of file diff --git a/src/lib/Others/WelcomeRisu.svelte b/src/lib/Others/WelcomeRisu.svelte index eb97217a..89e09b19 100644 --- a/src/lib/Others/WelcomeRisu.svelte +++ b/src/lib/Others/WelcomeRisu.svelte @@ -14,7 +14,7 @@ if(step === 0){ const browserLang = navigator.language const browserLangShort = browserLang.split('-')[0] - const usableLangs = ['de', 'en', 'ko', 'cn', 'vi'] + const usableLangs = ['de', 'en', 'ko', 'cn', 'vi', 'zh-Hant'] if(usableLangs.includes(browserLangShort)){ changeLanguage(browserLangShort) $DataBase.language = browserLangShort @@ -120,6 +120,16 @@ $DataBase.language='cn' step = 1 }}>• 中文 + + {:else} diff --git a/src/lib/Setting/Pages/LanguageSettings.svelte b/src/lib/Setting/Pages/LanguageSettings.svelte index 9195f6bf..0974f0af 100644 --- a/src/lib/Setting/Pages/LanguageSettings.svelte +++ b/src/lib/Setting/Pages/LanguageSettings.svelte @@ -30,7 +30,8 @@ 'de', 'ko', 'cn', - 'vi' + 'vi', + 'zh-Hant' ] const lang = parseInt(await alertSelect(langs)) @@ -54,6 +55,7 @@ English 한국어 中文 + 中文(繁體) Tiếng Việt [Translate in your own language] @@ -66,6 +68,9 @@ Korean Russian Chinese + {#if $DataBase.translatorType === 'google'} + Chinese (Traditional) + {/if} Japanese French Spanish