Bladeren bron

feat: add cc-switch integration and modal for token management

- Introduced a new CCSwitchModal component for managing CCSwitch configurations.
- Updated the TokensPage to include functionality for opening the CCSwitch modal.
- Enhanced the useTokensData hook to handle CCSwitch URLs and trigger the modal.
- Modified chat settings to include a new "CC Switch" entry.
- Updated sidebar logic to skip certain links based on the new configuration.
CaIon 5 dagen geleden
bovenliggende
commit
96264d2f8f

+ 6 - 0
setting/chat.go

@@ -13,9 +13,15 @@ var Chats = []map[string]string{
 	{
 		"Cherry Studio": "cherrystudio://providers/api-keys?v=1&data={cherryConfig}",
 	},
+	//{
+	//	"AionUI": "aionui://provider/add?v=1&data={aionuiConfig}",
+	//},
 	{
 		"流畅阅读": "fluentread",
 	},
+	{
+		"CC Switch": "ccswitch",
+	},
 	{
 		"Lobe Chat 官方示例": "https://chat-preview.lobehub.com/?settings={\"keyVaults\":{\"openai\":{\"apiKey\":\"{key}\",\"baseURL\":\"{address}/v1\"}}}",
 	},

+ 2 - 2
web/src/components/layout/SiderBar.jsx

@@ -251,9 +251,9 @@ const SiderBar = ({ onNavigate = () => {} }) => {
             for (let key in chats[i]) {
               let link = chats[i][key];
               if (typeof link !== 'string') continue; // 确保链接是字符串
-              if (link.startsWith('fluent')) {
+              if (link.startsWith('fluent') || link.startsWith('ccswitch')) {
                 shouldSkip = true;
-                break; // 跳过 Fluent Read
+                break;
               }
               chat.text = key;
               chat.itemKey = 'chat' + i;

+ 23 - 2
web/src/components/table/tokens/index.jsx

@@ -38,6 +38,7 @@ import TokensActions from './TokensActions';
 import TokensFilters from './TokensFilters';
 import TokensDescription from './TokensDescription';
 import EditTokenModal from './modals/EditTokenModal';
+import CCSwitchModal from './modals/CCSwitchModal';
 import { useTokensData } from '../../../hooks/tokens/useTokensData';
 import { useIsMobile } from '../../../hooks/common/useIsMobile';
 import { createCardProPagination } from '../../../helpers/utils';
@@ -45,8 +46,10 @@ import { createCardProPagination } from '../../../helpers/utils';
 function TokensPage() {
   // Define the function first, then pass it into the hook to avoid TDZ errors
   const openFluentNotificationRef = useRef(null);
-  const tokensData = useTokensData((key) =>
-    openFluentNotificationRef.current?.(key),
+  const openCCSwitchModalRef = useRef(null);
+  const tokensData = useTokensData(
+    (key) => openFluentNotificationRef.current?.(key),
+    (key) => openCCSwitchModalRef.current?.(key),
   );
   const isMobile = useIsMobile();
   const latestRef = useRef({
@@ -60,6 +63,8 @@ function TokensPage() {
   const [selectedModel, setSelectedModel] = useState('');
   const [fluentNoticeOpen, setFluentNoticeOpen] = useState(false);
   const [prefillKey, setPrefillKey] = useState('');
+  const [ccSwitchVisible, setCCSwitchVisible] = useState(false);
+  const [ccSwitchKey, setCCSwitchKey] = useState('');
 
   // Keep latest data for handlers inside notifications
   useEffect(() => {
@@ -183,6 +188,15 @@ function TokensPage() {
   // assign after definition so hook callback can call it safely
   openFluentNotificationRef.current = openFluentNotification;
 
+  function openCCSwitchModal(key) {
+    if (modelOptions.length === 0) {
+      loadModels();
+    }
+    setCCSwitchKey(key || '');
+    setCCSwitchVisible(true);
+  }
+  openCCSwitchModalRef.current = openCCSwitchModal;
+
   // Prefill to Fluent handler
   const handlePrefillToFluent = () => {
     const {
@@ -363,6 +377,13 @@ function TokensPage() {
         handleClose={closeEdit}
       />
 
+      <CCSwitchModal
+        visible={ccSwitchVisible}
+        onClose={() => setCCSwitchVisible(false)}
+        tokenKey={ccSwitchKey}
+        modelOptions={modelOptions}
+      />
+
       <CardPro
         type='type1'
         descriptionArea={

+ 195 - 0
web/src/components/table/tokens/modals/CCSwitchModal.jsx

@@ -0,0 +1,195 @@
+/*
+Copyright (C) 2025 QuantumNous
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+For commercial licensing, please contact support@quantumnous.com
+*/
+import React, { useState, useEffect, useMemo } from 'react';
+import {
+  Modal,
+  RadioGroup,
+  Radio,
+  Select,
+  Input,
+  Toast,
+  Typography,
+} from '@douyinfe/semi-ui';
+import { useTranslation } from 'react-i18next';
+import { selectFilter } from '../../../../helpers';
+
+const APP_CONFIGS = {
+  claude: {
+    label: 'Claude',
+    defaultName: 'My Claude',
+    modelFields: [
+      { key: 'model', label: '主模型' },
+      { key: 'haikuModel', label: 'Haiku 模型' },
+      { key: 'sonnetModel', label: 'Sonnet 模型' },
+      { key: 'opusModel', label: 'Opus 模型' },
+    ],
+  },
+  codex: {
+    label: 'Codex',
+    defaultName: 'My Codex',
+    modelFields: [{ key: 'model', label: '主模型' }],
+  },
+  gemini: {
+    label: 'Gemini',
+    defaultName: 'My Gemini',
+    modelFields: [{ key: 'model', label: '主模型' }],
+  },
+};
+
+function getServerAddress() {
+  try {
+    const raw = localStorage.getItem('status');
+    if (raw) {
+      const status = JSON.parse(raw);
+      if (status.server_address) return status.server_address;
+    }
+  } catch (_) {}
+  return window.location.origin;
+}
+
+function buildCCSwitchURL(app, name, models, apiKey) {
+  const serverAddress = getServerAddress();
+  const endpoint = app === 'codex' ? serverAddress + '/v1' : serverAddress;
+  const params = new URLSearchParams();
+  params.set('resource', 'provider');
+  params.set('app', app);
+  params.set('name', name);
+  params.set('endpoint', endpoint);
+  params.set('apiKey', apiKey);
+  for (const [k, v] of Object.entries(models)) {
+    if (v) params.set(k, v);
+  }
+  params.set('homepage', serverAddress);
+  params.set('enabled', 'true');
+  return `ccswitch://v1/import?${params.toString()}`;
+}
+
+export default function CCSwitchModal({
+  visible,
+  onClose,
+  tokenKey,
+  modelOptions,
+}) {
+  const { t } = useTranslation();
+  const [app, setApp] = useState('claude');
+  const [name, setName] = useState(APP_CONFIGS.claude.defaultName);
+  const [models, setModels] = useState({});
+
+  const currentConfig = APP_CONFIGS[app];
+
+  useEffect(() => {
+    if (visible) {
+      setModels({});
+      setApp('claude');
+      setName(APP_CONFIGS.claude.defaultName);
+    }
+  }, [visible]);
+
+  const handleAppChange = (val) => {
+    setApp(val);
+    setName(APP_CONFIGS[val].defaultName);
+    setModels({});
+  };
+
+  const handleModelChange = (field, value) => {
+    setModels((prev) => ({ ...prev, [field]: value }));
+  };
+
+  const handleSubmit = () => {
+    if (!models.model) {
+      Toast.warning(t('请选择主模型'));
+      return;
+    }
+    const apiKey = 'sk-' + tokenKey;
+    const url = buildCCSwitchURL(app, name, models, apiKey);
+    window.open(url, '_blank');
+    onClose();
+  };
+
+  const fieldLabelStyle = useMemo(
+    () => ({
+      marginBottom: 4,
+      fontSize: 13,
+      color: 'var(--semi-color-text-1)',
+    }),
+    [],
+  );
+
+  return (
+    <Modal
+      title={t('填入 CC Switch')}
+      visible={visible}
+      onCancel={onClose}
+      onOk={handleSubmit}
+      okText={t('打开 CC Switch')}
+      cancelText={t('取消')}
+      maskClosable={false}
+      width={480}
+    >
+      <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
+        <div>
+          <div style={fieldLabelStyle}>{t('应用')}</div>
+          <RadioGroup
+            type='button'
+            value={app}
+            onChange={(e) => handleAppChange(e.target.value)}
+            style={{ width: '100%' }}
+          >
+            {Object.entries(APP_CONFIGS).map(([key, cfg]) => (
+              <Radio key={key} value={key}>
+                {cfg.label}
+              </Radio>
+            ))}
+          </RadioGroup>
+        </div>
+
+        <div>
+          <div style={fieldLabelStyle}>{t('名称')}</div>
+          <Input
+            value={name}
+            onChange={setName}
+            placeholder={currentConfig.defaultName}
+          />
+        </div>
+
+        {currentConfig.modelFields.map((field) => (
+          <div key={field.key}>
+            <div style={fieldLabelStyle}>
+              {t(field.label)}
+              {field.key === 'model' && (
+                <Typography.Text type='danger'> *</Typography.Text>
+              )}
+            </div>
+            <Select
+              placeholder={t('请选择模型')}
+              optionList={modelOptions}
+              value={models[field.key] || undefined}
+              onChange={(val) => handleModelChange(field.key, val)}
+              filter={selectFilter}
+              style={{ width: '100%' }}
+              showClear
+              searchable
+              emptyContent={t('暂无数据')}
+            />
+          </div>
+        ))}
+      </div>
+    </Modal>
+  );
+}

+ 15 - 1
web/src/hooks/tokens/useTokensData.jsx

@@ -30,7 +30,7 @@ import {
 import { ITEMS_PER_PAGE } from '../../constants';
 import { useTableCompactMode } from '../common/useTableCompactMode';
 
-export const useTokensData = (openFluentNotification) => {
+export const useTokensData = (openFluentNotification, openCCSwitchModal) => {
   const { t } = useTranslation();
 
   // Basic state
@@ -124,6 +124,10 @@ export const useTokensData = (openFluentNotification) => {
 
   // Open link function for chat integrations
   const onOpenLink = async (type, url, record) => {
+    if (url && url.startsWith('ccswitch')) {
+      openCCSwitchModal(record.key);
+      return;
+    }
     if (url && url.startsWith('fluent')) {
       openFluentNotification(record.key);
       return;
@@ -147,6 +151,16 @@ export const useTokensData = (openFluentNotification) => {
         encodeToBase64(JSON.stringify(cherryConfig)),
       );
       url = url.replaceAll('{cherryConfig}', encodedConfig);
+    } else if (url.includes('{aionuiConfig}') === true) {
+      let aionuiConfig = {
+        platform: 'new-api',
+        baseUrl: serverAddress,
+        apiKey: 'sk-' + record.key,
+      };
+      let encodedConfig = encodeURIComponent(
+        encodeToBase64(JSON.stringify(aionuiConfig)),
+      );
+      url = url.replaceAll('{aionuiConfig}', encodedConfig);
     } else {
       let encodedServerAddress = encodeURIComponent(serverAddress);
       url = url.replaceAll('{address}', encodedServerAddress);

File diff suppressed because it is too large
+ 302 - 10
web/src/i18n/locales/en.json


File diff suppressed because it is too large
+ 293 - 10
web/src/i18n/locales/fr.json


File diff suppressed because it is too large
+ 291 - 10
web/src/i18n/locales/ja.json


File diff suppressed because it is too large
+ 294 - 10
web/src/i18n/locales/ru.json


File diff suppressed because it is too large
+ 291 - 10
web/src/i18n/locales/vi.json


+ 3083 - 0
web/src/i18n/locales/zh.json

@@ -0,0 +1,3083 @@
+{
+  "translation": {
+    " + Web搜索 {{count}}次 / 1K 次 * {{symbol}}{{price}} * {{ratioType}} {{ratio}}_other": " + Web搜索 {{count}}次 / 1K 次 * {{symbol}}{{price}} * {{ratioType}} {{ratio}}",
+    " + 图片生成调用 {{symbol}}{{price}} / 1次 * {{ratioType}} {{ratio}}": " + 图片生成调用 {{symbol}}{{price}} / 1次 * {{ratioType}} {{ratio}}",
+    " + 文件搜索 {{count}}次 / 1K 次 * {{symbol}}{{price}} * {{ratioType}} {{ratio}}_other": " + 文件搜索 {{count}}次 / 1K 次 * {{symbol}}{{price}} * {{ratioType}} {{ratio}}",
+    " 个模型设置相同的值": " 个模型设置相同的值",
+    " 吗?": " 吗?",
+    " 秒": " 秒",
+    " 秒。": " 秒。",
+    ",当前无生效订阅,将自动使用钱包": ",当前无生效订阅,将自动使用钱包",
+    ",时间:": ",时间:",
+    ",点击更新": ",点击更新",
+    "(当前仅支持易支付接口,默认使用上方服务器地址作为回调地址!)": "(当前仅支持易支付接口,默认使用上方服务器地址作为回调地址!)",
+    "(筛选后显示 {{count}} 条)_other": "(筛选后显示 {{count}} 条)",
+    "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}",
+    "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}",
+    "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}",
+    "(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}": "(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}",
+    "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。",
+    "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。",
+    "{\n  \"default\": [200, 100],\n  \"vip\": [0, 1000]\n}": "{\n  \"default\": [200, 100],\n  \"vip\": [0, 1000]\n}",
+    "{{breakdown}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "{{breakdown}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
+    "{{inputDesc}} + {{outputDesc}}{{extraServices}} = {{symbol}}{{total}}": "{{inputDesc}} + {{outputDesc}}{{extraServices}} = {{symbol}}{{total}}",
+    "{{name}} ID": "{{name}} ID",
+    "{{ratioType}} {{ratio}}": "{{ratioType}} {{ratio}}",
+    "• 视频服务商的跨域限制": "• 视频服务商的跨域限制",
+    "• 防盗链保护机制": "• 防盗链保护机制",
+    "• 需要特定的请求头或认证": "• 需要特定的请求头或认证",
+    "© {{currentYear}}": "© {{currentYear}}",
+    "| 基于": "| 基于",
+    "$/1M tokens": "$/1M tokens",
+    "0 - 最低": "0 - 最低",
+    "0 表示不限": "0 表示不限",
+    "0.002-1之间的小数": "0.002-1之间的小数",
+    "0.1以上的小数": "0.1以上的小数",
+    "1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。": "1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。",
+    "10 - 最高": "10 - 最高",
+    "1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}} (倍率: {{ratio}})": "1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}} (倍率: {{ratio}})",
+    "1h缓存创建价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (1h缓存创建倍率: {{cacheCreationRatio1h}})": "1h缓存创建价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (1h缓存创建倍率: {{cacheCreationRatio1h}})",
+    "2 - 低": "2 - 低",
+    "2025年5月10日后添加的渠道,不需要再在部署的时候移除模型名称中的\".\"": "2025年5月10日后添加的渠道,不需要再在部署的时候移除模型名称中的\".\"",
+    "360智脑": "360智脑",
+    "5 - 正常(默认)": "5 - 正常(默认)",
+    "5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}} (倍率: {{ratio}})": "5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}} (倍率: {{ratio}})",
+    "5m缓存创建价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (5m缓存创建倍率: {{cacheCreationRatio5m}})": "5m缓存创建价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (5m缓存创建倍率: {{cacheCreationRatio5m}})",
+    "8 - 高": "8 - 高",
+    "AGPL v3.0协议": "AGPL v3.0协议",
+    "AI 对话": "AI 对话",
+    "AI模型测试环境": "AI模型测试环境",
+    "AI模型配置": "AI模型配置",
+    "AK/SK 模式:使用 AccessKey 和 SecretAccessKey;API Key 模式:使用 API Key": "AK/SK 模式:使用 AccessKey 和 SecretAccessKey;API Key 模式:使用 API Key",
+    "API Key": "API Key",
+    "API Key 模式下不支持批量创建": "API Key 模式下不支持批量创建",
+    "API Key 验证失败": "API Key 验证失败",
+    "API Key 验证成功!连接到 io.net 服务正常": "API Key 验证成功!连接到 io.net 服务正常",
+    "API 地址和相关配置": "API 地址和相关配置",
+    "API 密钥": "API 密钥",
+    "API 文档": "API 文档",
+    "API 配置": "API 配置",
+    "API令牌管理": "API令牌管理",
+    "API使用记录": "API使用记录",
+    "API信息": "API信息",
+    "API信息管理,可以配置多个API地址用于状态展示和负载均衡(最多50个)": "API信息管理,可以配置多个API地址用于状态展示和负载均衡(最多50个)",
+    "API地址": "API地址",
+    "API渠道配置": "API渠道配置",
+    "API端点": "API端点",
+    "Authorization callback URL 填": "Authorization callback URL 填",
+    "Authorization Endpoint": "Authorization Endpoint",
+    "auto分组调用链路": "auto分组调用链路",
+    "Bark推送URL": "Bark推送URL",
+    "Bark推送URL必须以http://或https://开头": "Bark推送URL必须以http://或https://开头",
+    "Bark通知": "Bark通知",
+    "Basic Auth 头": "Basic Auth 头",
+    "Cached tokens": "Cached tokens",
+    "Cached tokens 占比口径由后端返回:Claude 语义按 cached/(prompt+cached),其余按 cached/prompt。": "Cached tokens 占比口径由后端返回:Claude 语义按 cached/(prompt+cached),其余按 cached/prompt。",
+    "Changing batch type to:": "Changing batch type to:",
+    "ChatCompletions→Responses 兼容配置": "ChatCompletions→Responses 兼容配置",
+    "Claude 强制 beta=true": "Claude 强制 beta=true",
+    "Claude思考适配 BudgetTokens = MaxTokens * BudgetTokens 百分比": "Claude思考适配 BudgetTokens = MaxTokens * BudgetTokens 百分比",
+    "Claude设置": "Claude设置",
+    "Claude请求头覆盖": "Claude请求头覆盖",
+    "Client ID": "Client ID",
+    "Client Secret": "Client Secret",
+    "Codex 授权": "Codex 授权",
+    "Codex 渠道不支持批量创建": "Codex 渠道不支持批量创建",
+    "common.changeLanguage": "common.changeLanguage",
+    "Completion tokens": "Completion tokens",
+    "Configuration": "Configuration",
+    "context_int/context_string 从请求上下文读取;gjson 从入口请求的 JSON body 按 gjson path 读取。": "context_int/context_string 从请求上下文读取;gjson 从入口请求的 JSON body 按 gjson path 读取。",
+    "CPU 使用率超过此值时拒绝请求": "CPU 使用率超过此值时拒绝请求",
+    "CPU 阈值 (%)": "CPU 阈值 (%)",
+    "Creem API 密钥,敏感信息不显示": "Creem API 密钥,敏感信息不显示",
+    "Creem Setting Tips": "Creem Setting Tips",
+    "Creem 介绍": "Creem 介绍",
+    "Creem 充值": "Creem 充值",
+    "Creem 设置": "Creem 设置",
+    "default为默认设置,可单独设置每个分类的安全等级": "default为默认设置,可单独设置每个分类的安全等级",
+    "default为默认设置,可单独设置每个模型的版本": "default为默认设置,可单独设置每个模型的版本",
+    "Dify渠道只适配chatflow和agent,并且agent不支持图片!": "Dify渠道只适配chatflow和agent,并且agent不支持图片!",
+    "Discord": "Discord",
+    "Discord Client ID": "Discord Client ID",
+    "Discord Client Secret": "Discord Client Secret",
+    "Discord ID": "Discord ID",
+    "Discovery claims": "Discovery claims",
+    "Discovery scopes": "Discovery scopes",
+    "Discovery 建议 scopes:": "Discovery 建议 scopes:",
+    "EUR (欧元)": "EUR (欧元)",
+    "false": "false",
+    "GC 已执行": "GC 已执行",
+    "GC 执行失败": "GC 执行失败",
+    "GC 次数": "GC 次数",
+    "Gemini安全设置": "Gemini安全设置",
+    "Gemini思考适配 BudgetTokens = MaxTokens * BudgetTokens 百分比": "Gemini思考适配 BudgetTokens = MaxTokens * BudgetTokens 百分比",
+    "Gemini思考适配设置": "Gemini思考适配设置",
+    "Gemini版本设置": "Gemini版本设置",
+    "Gemini设置": "Gemini设置",
+    "GitHub": "GitHub",
+    "GitHub Client ID": "GitHub Client ID",
+    "GitHub Client Secret": "GitHub Client Secret",
+    "GitHub ID": "GitHub ID",
+    "Goroutine 数": "Goroutine 数",
+    "Gotify应用令牌": "Gotify应用令牌",
+    "Gotify服务器地址": "Gotify服务器地址",
+    "Gotify服务器地址必须以http://或https://开头": "Gotify服务器地址必须以http://或https://开头",
+    "Gotify通知": "Gotify通知",
+    "GPU/容器": "GPU/容器",
+    "GPU数量": "GPU数量",
+    "Grok设置": "Grok设置",
+    "Homepage URL 填": "Homepage URL 填",
+    "ID": "ID",
+    "include_obfuscation 用于控制 Responses 流混淆字段。默认关闭以避免客户端关闭该安全保护": "include_obfuscation 用于控制 Responses 流混淆字段。默认关闭以避免客户端关闭该安全保护",
+    "inference_geo 字段用于控制 Claude 数据驻留推理区域。默认关闭以避免未经授权透传地域信息": "inference_geo 字段用于控制 Claude 数据驻留推理区域。默认关闭以避免未经授权透传地域信息",
+    "IP": "IP",
+    "IP白名单": "IP白名单",
+    "IP白名单(支持CIDR表达式)": "IP白名单(支持CIDR表达式)",
+    "IP限制": "IP限制",
+    "IP黑名单": "IP黑名单",
+    "JSON": "JSON",
+    "JSON 已格式化": "JSON 已格式化",
+    "JSON 文本": "JSON 文本",
+    "JSON 无效": "JSON 无效",
+    "JSON 模式": "JSON 模式",
+    "JSON 模式支持手动输入或上传服务账号 JSON": "JSON 模式支持手动输入或上传服务账号 JSON",
+    "JSON格式密钥,请确保格式正确": "JSON格式密钥,请确保格式正确",
+    "JSON格式错误": "JSON格式错误",
+    "JSON编辑": "JSON编辑",
+    "JSON解析错误:": "JSON解析错误:",
+    "Key": "Key",
+    "Key 或 Path": "Key 或 Path",
+    "Key 指纹": "Key 指纹",
+    "Key 摘要": "Key 摘要",
+    "Key 来源": "Key 来源",
+    "Key 来源类型": "Key 来源类型",
+    "Linux DO Client ID": "Linux DO Client ID",
+    "Linux DO Client Secret": "Linux DO Client Secret",
+    "LinuxDO": "LinuxDO",
+    "LinuxDO ID": "LinuxDO ID",
+    "Logo 图片地址": "Logo 图片地址",
+    "Midjourney 任务记录": "Midjourney 任务记录",
+    "MIT许可证": "MIT许可证",
+    "New API项目仓库地址:": "New API项目仓库地址:",
+    "NewAPI 默认不会将入口请求的 User-Agent 透传到上游渠道;该条件仅用于识别访问本站点的客户端。": "NewAPI 默认不会将入口请求的 User-Agent 透传到上游渠道;该条件仅用于识别访问本站点的客户端。",
+    "OAuth Client ID": "OAuth Client ID",
+    "OAuth Client Secret": "OAuth Client Secret",
+    "OAuth 端点": "OAuth 端点",
+    "OIDC": "OIDC",
+    "OIDC ID": "OIDC ID",
+    "Ollama 模型管理": "Ollama 模型管理",
+    "Ollama 版本信息": "Ollama 版本信息",
+    "Passkey": "Passkey",
+    "Passkey 已解绑": "Passkey 已解绑",
+    "Passkey 已重置": "Passkey 已重置",
+    "Passkey 是基于 WebAuthn 标准的无密码身份验证方法,支持指纹、面容、硬件密钥等认证方式": "Passkey 是基于 WebAuthn 标准的无密码身份验证方法,支持指纹、面容、硬件密钥等认证方式",
+    "Passkey 注册失败,请重试": "Passkey 注册失败,请重试",
+    "Passkey 注册成功": "Passkey 注册成功",
+    "Passkey 登录": "Passkey 登录",
+    "Ping间隔(秒)": "Ping间隔(秒)",
+    "POST 参数": "POST 参数",
+    "price_xxx 的商品价格 ID,新建产品后可获得": "price_xxx 的商品价格 ID,新建产品后可获得",
+    "Prompt cache hit tokens": "Prompt cache hit tokens",
+    "Prompt tokens": "Prompt tokens",
+    "Reasoning Effort": "Reasoning Effort",
+    "Request ID": "Request ID",
+    "safety_identifier 字段用于帮助 OpenAI 识别可能违反使用政策的应用程序用户。默认关闭以保护用户隐私": "safety_identifier 字段用于帮助 OpenAI 识别可能违反使用政策的应用程序用户。默认关闭以保护用户隐私",
+    "Scopes(可选)": "Scopes(可选)",
+    "service_tier 字段用于指定服务层级,允许透传可能导致实际计费高于预期。默认关闭以避免额外费用": "service_tier 字段用于指定服务层级,允许透传可能导致实际计费高于预期。默认关闭以避免额外费用",
+    "sk_xxx 或 rk_xxx 的 Stripe 密钥,敏感信息不显示": "sk_xxx 或 rk_xxx 的 Stripe 密钥,敏感信息不显示",
+    "SMTP 发送者邮箱": "SMTP 发送者邮箱",
+    "SMTP 服务器地址": "SMTP 服务器地址",
+    "SMTP 端口": "SMTP 端口",
+    "SMTP 访问凭证": "SMTP 访问凭证",
+    "SMTP 账户": "SMTP 账户",
+    "SSE 事件": "SSE 事件",
+    "SSE数据流": "SSE数据流",
+    "SSRF防护开关详细说明": "SSRF防护开关详细说明",
+    "SSRF防护设置": "SSRF防护设置",
+    "SSRF防护详细说明": "SSRF防护详细说明",
+    "store 字段用于授权 OpenAI 存储请求数据以评估和优化产品。默认关闭,开启后可能导致 Codex 无法正常使用": "store 字段用于授权 OpenAI 存储请求数据以评估和优化产品。默认关闭,开启后可能导致 Codex 无法正常使用",
+    "Stripe 设置": "Stripe 设置",
+    "Stripe/Creem 商品ID(可选)": "Stripe/Creem 商品ID(可选)",
+    "Stripe/Creem 需在第三方平台创建商品并填入 ID": "Stripe/Creem 需在第三方平台创建商品并填入 ID",
+    "Telegram": "Telegram",
+    "Telegram Bot Token": "Telegram Bot Token",
+    "Telegram Bot 名称": "Telegram Bot 名称",
+    "Telegram ID": "Telegram ID",
+    "Token Endpoint": "Token Endpoint",
+    "token 会按倍率换算成“额度/次数”,请求结束后再做差额结算(补扣/返还)。": "token 会按倍率换算成“额度/次数”,请求结束后再做差额结算(补扣/返还)。",
+    "Total tokens": "Total tokens",
+    "true": "true",
+    "TTL(秒,0 表示默认)": "TTL(秒,0 表示默认)",
+    "TTL(秒)": "TTL(秒)",
+    "Turnstile Secret Key": "Turnstile Secret Key",
+    "Turnstile Site Key": "Turnstile Site Key",
+    "Unix时间戳": "Unix时间戳",
+    "Uptime Kuma地址": "Uptime Kuma地址",
+    "Uptime Kuma监控分类管理,可以配置多个监控分类用于服务状态展示(最多20个)": "Uptime Kuma监控分类管理,可以配置多个监控分类用于服务状态展示(最多20个)",
+    "URL 标识,只能包含小写字母、数字和连字符": "URL 标识,只能包含小写字母、数字和连字符",
+    "URL链接": "URL链接",
+    "USD (美元)": "USD (美元)",
+    "User Info Endpoint": "User Info Endpoint",
+    "User-Agent include(每行一个,可不写)": "User-Agent include(每行一个,可不写)",
+    "Value 正则": "Value 正则",
+    "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段": "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段",
+    "Webhook 密钥": "Webhook 密钥",
+    "Webhook 签名密钥": "Webhook 签名密钥",
+    "Webhook地址": "Webhook地址",
+    "Webhook地址必须以https://开头": "Webhook地址必须以https://开头",
+    "Webhook请求结构说明": "Webhook请求结构说明",
+    "Webhook通知": "Webhook通知",
+    "Web搜索价格:{{symbol}}{{price}} / 1K 次": "Web搜索价格:{{symbol}}{{price}} / 1K 次",
+    "WeChat Server 服务器地址": "WeChat Server 服务器地址",
+    "WeChat Server 访问凭证": "WeChat Server 访问凭证",
+    "Well-Known URL": "Well-Known URL",
+    "Well-Known URL 必须以 http:// 或 https:// 开头": "Well-Known URL 必须以 http:// 或 https:// 开头",
+    "whsec_xxx 的 Webhook 签名密钥,敏感信息不显示": "whsec_xxx 的 Webhook 签名密钥,敏感信息不显示",
+    "Worker地址": "Worker地址",
+    "Worker密钥": "Worker密钥",
+    "一个月": "一个月",
+    "一天": "一天",
+    "一小时": "一小时",
+    "一次调用消耗多少刀,优先级大于模型倍率": "一次调用消耗多少刀,优先级大于模型倍率",
+    "一行一个,不区分大小写": "一行一个,不区分大小写",
+    "一行一个屏蔽词,不需要符号分割": "一行一个屏蔽词,不需要符号分割",
+    "一键填充到 FluentRead": "一键填充到 FluentRead",
+    "上一个表单块": "上一个表单块",
+    "上一步": "上一步",
+    "上次保存: ": "上次保存: ",
+    "上游倍率同步": "上游倍率同步",
+    "上游返回": "上游返回",
+    "下一个表单块": "下一个表单块",
+    "下一步": "下一步",
+    "下午好": "下午好",
+    "下载日志": "下载日志",
+    "不再提醒": "不再提醒",
+    "不升级": "不升级",
+    "不同用户分组的价格信息": "不同用户分组的价格信息",
+    "不填则为模型列表第一个": "不填则为模型列表第一个",
+    "不建议使用": "不建议使用",
+    "不支持": "不支持",
+    "不是合法的 JSON 字符串": "不是合法的 JSON 字符串",
+    "不更改": "不更改",
+    "不重置": "不重置",
+    "不限": "不限",
+    "不限制": "不限制",
+    "与本地相同": "与本地相同",
+    "专属倍率": "专属倍率",
+    "两次输入的密码不一致": "两次输入的密码不一致",
+    "两次输入的密码不一致!": "两次输入的密码不一致!",
+    "两步验证": "两步验证",
+    "两步验证(2FA)为您的账户提供额外的安全保护。启用后,登录时需要输入密码和验证器应用生成的验证码。": "两步验证(2FA)为您的账户提供额外的安全保护。启用后,登录时需要输入密码和验证器应用生成的验证码。",
+    "两步验证启用成功!": "两步验证启用成功!",
+    "两步验证已禁用": "两步验证已禁用",
+    "两步验证设置": "两步验证设置",
+    "个": "个",
+    "个GPU": "个GPU",
+    "个人中心": "个人中心",
+    "个人中心区域": "个人中心区域",
+    "个人信息设置": "个人信息设置",
+    "个人设置": "个人设置",
+    "个字段": "个字段",
+    "个实例": "个实例",
+    "个已过期": "个已过期",
+    "个性化设置": "个性化设置",
+    "个月": "个月",
+    "个未配置模型": "个未配置模型",
+    "个模型": "个模型",
+    "个生效中": "个生效中",
+    "个部署吗?此操作不可逆。": "个部署吗?此操作不可逆。",
+    "中午好": "中午好",
+    "为一个 JSON 对象,例如:{\"100\": 0.95, \"200\": 0.9, \"500\": 0.85}": "为一个 JSON 对象,例如:{\"100\": 0.95, \"200\": 0.9, \"500\": 0.85}",
+    "为一个 JSON 数组,例如:[10, 20, 50, 100, 200, 500]": "为一个 JSON 数组,例如:[10, 20, 50, 100, 200, 500]",
+    "为一个 JSON 文本": "为一个 JSON 文本",
+    "为一个 JSON 文本,例如:": "为一个 JSON 文本,例如:",
+    "为一个 JSON 文本,键为分组名称,值为倍率": "为一个 JSON 文本,键为分组名称,值为倍率",
+    "为一个 JSON 文本,键为分组名称,值为分组描述": "为一个 JSON 文本,键为分组名称,值为分组描述",
+    "为一个 JSON 文本,键为模型名称,值为一次调用消耗多少刀,比如 \"gpt-4-gizmo-*\": 0.1,一次消耗0.1刀": "为一个 JSON 文本,键为模型名称,值为一次调用消耗多少刀,比如 \"gpt-4-gizmo-*\": 0.1,一次消耗0.1刀",
+    "为一个 JSON 文本,键为模型名称,值为倍率": "为一个 JSON 文本,键为模型名称,值为倍率",
+    "为一个 JSON 文本,键为模型名称,值为倍率,例如:{\"gpt-4o-audio-preview\": 16}": "为一个 JSON 文本,键为模型名称,值为倍率,例如:{\"gpt-4o-audio-preview\": 16}",
+    "为一个 JSON 文本,键为模型名称,值为倍率,例如:{\"gpt-4o-realtime\": 2}": "为一个 JSON 文本,键为模型名称,值为倍率,例如:{\"gpt-4o-realtime\": 2}",
+    "为一个 JSON 文本,键为模型名称,值为倍率,例如:{\"gpt-image-1\": 2}": "为一个 JSON 文本,键为模型名称,值为倍率,例如:{\"gpt-image-1\": 2}",
+    "为一个 JSON 文本,键为组名称,值为倍率": "为一个 JSON 文本,键为组名称,值为倍率",
+    "为了保护账户安全,请验证您的身份。": "为了保护账户安全,请验证您的身份。",
+    "为保证匹配准确,请确保客户端直连本站点(避免反向代理/网关改写 User-Agent)。": "为保证匹配准确,请确保客户端直连本站点(避免反向代理/网关改写 User-Agent)。",
+    "为空则默认使用服务器地址,多个 Origin 用逗号分隔,例如 https://newapi.pro,https://newapi.com ,注意不能携带[],需使用https": "为空则默认使用服务器地址,多个 Origin 用逗号分隔,例如 https://newapi.pro,https://newapi.com ,注意不能携带[],需使用https",
+    "主页链接填": "主页链接填",
+    "之前的所有日志": "之前的所有日志",
+    "二步验证已重置": "二步验证已重置",
+    "产品ID": "产品ID",
+    "产品ID已存在": "产品ID已存在",
+    "产品名称": "产品名称",
+    "产品配置": "产品配置",
+    "产品配置错误,请联系管理员": "产品配置错误,请联系管理员",
+    "仅为使用OpenAI格式的Gemini/Vertex渠道填充thoughtSignature": "仅为使用OpenAI格式的Gemini/Vertex渠道填充thoughtSignature",
+    "仅会覆盖你勾选的字段,未勾选的字段保持本地不变。": "仅会覆盖你勾选的字段,未勾选的字段保持本地不变。",
+    "仅供参考,以实际扣费为准": "仅供参考,以实际扣费为准",
+    "仅保存": "仅保存",
+    "仅修改展示粒度,统计精确到小时": "仅修改展示粒度,统计精确到小时",
+    "仅密钥": "仅密钥",
+    "仅对自定义模型有效": "仅对自定义模型有效",
+    "仅当前层": "仅当前层",
+    "仅当自动禁用开启时有效,关闭后不会自动禁用该渠道": "仅当自动禁用开启时有效,关闭后不会自动禁用该渠道",
+    "仅支持": "仅支持",
+    "仅支持 JSON 对象,必须包含 access_token 与 account_id": "仅支持 JSON 对象,必须包含 access_token 与 account_id",
+    "仅支持 JSON 文件": "仅支持 JSON 文件",
+    "仅支持 JSON 文件,支持多文件": "仅支持 JSON 文件,支持多文件",
+    "仅支持 OpenAI 接口格式": "仅支持 OpenAI 接口格式",
+    "仅显示已绑定": "仅显示已绑定",
+    "仅显示矛盾倍率": "仅显示矛盾倍率",
+    "仅用于开发环境,生产环境应使用 HTTPS": "仅用于开发环境,生产环境应使用 HTTPS",
+    "仅用于换算,实际保存的是额度": "仅用于换算,实际保存的是额度",
+    "仅用订阅": "仅用订阅",
+    "仅用钱包": "仅用钱包",
+    "仅重置配置": "仅重置配置",
+    "今日关闭": "今日关闭",
+    "今日已签到": "今日已签到",
+    "今日已签到,累计签到": "今日已签到,累计签到",
+    "从官方模型库同步": "从官方模型库同步",
+    "从认证器应用中获取验证码,或使用备用码": "从认证器应用中获取验证码,或使用备用码",
+    "从配置文件同步": "从配置文件同步",
+    "代理地址": "代理地址",
+    "代理设置": "代理设置",
+    "代码已复制到剪贴板": "代码已复制到剪贴板",
+    "令牌": "令牌",
+    "令牌分组": "令牌分组",
+    "令牌分组,默认为用户的分组": "令牌分组,默认为用户的分组",
+    "令牌创建成功,请在列表页面点击复制获取令牌!": "令牌创建成功,请在列表页面点击复制获取令牌!",
+    "令牌名称": "令牌名称",
+    "令牌已重置并已复制到剪贴板": "令牌已重置并已复制到剪贴板",
+    "令牌更新成功!": "令牌更新成功!",
+    "令牌的额度仅用于限制令牌本身的最大额度使用量,实际的使用受到账户的剩余额度限制": "令牌的额度仅用于限制令牌本身的最大额度使用量,实际的使用受到账户的剩余额度限制",
+    "令牌管理": "令牌管理",
+    "以下上游数据可能不可信:": "以下上游数据可能不可信:",
+    "以下文件解析失败,已忽略:{{list}}": "以下文件解析失败,已忽略:{{list}}",
+    "以及": "以及",
+    "仪表盘设置": "仪表盘设置",
+    "价格": "价格",
+    "价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}}": "价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}}",
+    "价格暂时不可用,请稍后重试": "价格暂时不可用,请稍后重试",
+    "价格计算中...": "价格计算中...",
+    "价格计算失败": "价格计算失败",
+    "价格计算失败: ": "价格计算失败: ",
+    "价格设置": "价格设置",
+    "价格设置方式": "价格设置方式",
+    "价格重新计算中...": "价格重新计算中...",
+    "价格预估": "价格预估",
+    "任一满足(OR)": "任一满足(OR)",
+    "任务 ID": "任务 ID",
+    "任务ID": "任务ID",
+    "任务日志": "任务日志",
+    "任务状态": "任务状态",
+    "任务记录": "任务记录",
+    "企业账户为特殊返回格式,需要特殊处理,如果非企业账户,请勿勾选": "企业账户为特殊返回格式,需要特殊处理,如果非企业账户,请勿勾选",
+    "优先级": "优先级",
+    "优先订阅": "优先订阅",
+    "优先钱包": "优先钱包",
+    "优惠": "优惠",
+    "低于此额度时将发送邮件提醒用户": "低于此额度时将发送邮件提醒用户",
+    "余额": "余额",
+    "余额充值管理": "余额充值管理",
+    "作废": "作废",
+    "作废于": "作废于",
+    "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "作废后该订阅将立即失效,历史记录不受影响。是否继续?",
+    "作用域": "作用域",
+    "作用域:包含分组": "作用域:包含分组",
+    "作用域:包含规则名称": "作用域:包含规则名称",
+    "你似乎并没有修改什么": "你似乎并没有修改什么",
+    "你可以在“自定义模型名称”处手动添加它们,然后点击填入后再提交,或者直接使用下方操作自动处理。": "你可以在“自定义模型名称”处手动添加它们,然后点击填入后再提交,或者直接使用下方操作自动处理。",
+    "使用 {{name}} 继续": "使用 {{name}} 继续",
+    "使用 Discord 继续": "使用 Discord 继续",
+    "使用 JSON 对象格式,格式为:{\"组名\": [最多请求次数, 最多请求完成次数]}": "使用 JSON 对象格式,格式为:{\"组名\": [最多请求次数, 最多请求完成次数]}",
+    "使用 LinuxDO 继续": "使用 LinuxDO 继续",
+    "使用 OIDC 继续": "使用 OIDC 继续",
+    "使用 Passkey 实现免密且更安全的登录体验": "使用 Passkey 实现免密且更安全的登录体验",
+    "使用 Passkey 登录": "使用 Passkey 登录",
+    "使用 Passkey 验证": "使用 Passkey 验证",
+    "使用 微信 继续": "使用 微信 继续",
+    "使用 用户名 注册": "使用 用户名 注册",
+    "使用 邮箱或用户名 登录": "使用 邮箱或用户名 登录",
+    "使用ID排序": "使用ID排序",
+    "使用日志": "使用日志",
+    "使用模式": "使用模式",
+    "使用统计": "使用统计",
+    "使用认证器应用(如 Google Authenticator、Microsoft Authenticator)扫描下方二维码:": "使用认证器应用(如 Google Authenticator、Microsoft Authenticator)扫描下方二维码:",
+    "使用认证器应用扫描二维码": "使用认证器应用扫描二维码",
+    "例如 /var/cache/new-api": "例如 /var/cache/new-api",
+    "例如 €, £, Rp, ₩, ₹...": "例如 €, £, Rp, ₩, ₹...",
+    "例如 https://docs.newapi.pro": "例如 https://docs.newapi.pro",
+    "例如:": "例如:",
+    "例如: /bin/bash -c \"python app.py\"": "例如: /bin/bash -c \"python app.py\"",
+    "例如: nginx:latest": "例如: nginx:latest",
+    "例如: socks5://user:pass@host:port": "例如: socks5://user:pass@host:port",
+    "例如:-c": "例如:-c",
+    "例如:/bin/bash": "例如:/bin/bash",
+    "例如:0001": "例如:0001",
+    "例如:1000": "例如:1000",
+    "例如:100000": "例如:100000",
+    "例如:2,就是最低充值2$": "例如:2,就是最低充值2$",
+    "例如:2000": "例如:2000",
+    "例如:4.99": "例如:4.99",
+    "例如:401, 403, 429, 500-599": "例如:401, 403, 429, 500-599",
+    "例如:7,就是7元/美金": "例如:7,就是7元/美金",
+    "例如:email": "例如:email",
+    "例如:example.com": "例如:example.com",
+    "例如:github / si:google / https://example.com/logo.png / 🐱": "例如:github / si:google / https://example.com/logo.png / 🐱",
+    "例如:GitHub Enterprise": "例如:GitHub Enterprise",
+    "例如:github-enterprise": "例如:github-enterprise",
+    "例如:https://example.com/.well-known/openid-configuration": "例如:https://example.com/.well-known/openid-configuration",
+    "例如:https://gitea.example.com": "例如:https://gitea.example.com",
+    "例如:https://yourdomain.com": "例如:https://yourdomain.com",
+    "例如:name、full_name": "例如:name、full_name",
+    "例如:nginx:latest": "例如:nginx:latest",
+    "例如:preferred_username、login": "例如:preferred_username、login",
+    "例如:preview": "例如:preview",
+    "例如:prod_6I8rBerHpPxyoiU9WK4kot": "例如:prod_6I8rBerHpPxyoiU9WK4kot",
+    "例如:sub、id、data.user.id": "例如:sub、id、data.user.id",
+    "例如:基础套餐": "例如:基础套餐",
+    "例如:该请求不满足准入策略": "例如:该请求不满足准入策略",
+    "例如:适合轻度使用": "例如:适合轻度使用",
+    "例如:需要等级 {{required}},你当前等级 {{current}}": "例如:需要等级 {{required}},你当前等级 {{current}}",
+    "例如(全渠道):": "例如(全渠道):",
+    "例如(指定渠道):": "例如(指定渠道):",
+    "例如发卡网站的购买链接": "例如发卡网站的购买链接",
+    "供应商": "供应商",
+    "供应商介绍": "供应商介绍",
+    "供应商信息:": "供应商信息:",
+    "供应商创建成功!": "供应商创建成功!",
+    "供应商删除成功": "供应商删除成功",
+    "供应商名称": "供应商名称",
+    "供应商图标": "供应商图标",
+    "供应商更新成功!": "供应商更新成功!",
+    "侧边栏管理(全局控制)": "侧边栏管理(全局控制)",
+    "侧边栏设置保存成功": "侧边栏设置保存成功",
+    "保存": "保存",
+    "保存 Discord OAuth 设置": "保存 Discord OAuth 设置",
+    "保存 GitHub OAuth 设置": "保存 GitHub OAuth 设置",
+    "保存 Linux DO OAuth 设置": "保存 Linux DO OAuth 设置",
+    "保存 OIDC 设置": "保存 OIDC 设置",
+    "保存 Passkey 设置": "保存 Passkey 设置",
+    "保存 SMTP 设置": "保存 SMTP 设置",
+    "保存 Telegram 登录设置": "保存 Telegram 登录设置",
+    "保存 Turnstile 设置": "保存 Turnstile 设置",
+    "保存 WeChat Server 设置": "保存 WeChat Server 设置",
+    "保存分组倍率设置": "保存分组倍率设置",
+    "保存备用码": "保存备用码",
+    "保存备用码以备不时之需": "保存备用码以备不时之需",
+    "保存失败": "保存失败",
+    "保存失败,请重试": "保存失败,请重试",
+    "保存失败:": "保存失败:",
+    "保存屏蔽词过滤设置": "保存屏蔽词过滤设置",
+    "保存性能设置": "保存性能设置",
+    "保存成功": "保存成功",
+    "保存数据看板设置": "保存数据看板设置",
+    "保存日志设置": "保存日志设置",
+    "保存模型倍率设置": "保存模型倍率设置",
+    "保存模型速率限制": "保存模型速率限制",
+    "保存监控设置": "保存监控设置",
+    "保存签到设置": "保存签到设置",
+    "保存绘图设置": "保存绘图设置",
+    "保存聊天设置": "保存聊天设置",
+    "保存设置": "保存设置",
+    "保存通用设置": "保存通用设置",
+    "保存邮箱域名白名单设置": "保存邮箱域名白名单设置",
+    "保存额度设置": "保存额度设置",
+    "保留原值(目标已有值时不覆盖)": "保留原值(目标已有值时不覆盖)",
+    "修复数据库一致性": "修复数据库一致性",
+    "修改为": "修改为",
+    "修改子渠道优先级": "修改子渠道优先级",
+    "修改子渠道权重": "修改子渠道权重",
+    "修改密码": "修改密码",
+    "修改绑定": "修改绑定",
+    "修改部署名称": "修改部署名称",
+    "倍率": "倍率",
+    "倍率信息": "倍率信息",
+    "倍率是为了方便换算不同价格的模型": "倍率是为了方便换算不同价格的模型",
+    "倍率模式": "倍率模式",
+    "倍率类型": "倍率类型",
+    "偏好设置": "偏好设置",
+    "停止测试": "停止测试",
+    "停止重试": "停止重试",
+    "停用": "停用",
+    "允许 AccountFilter 参数": "允许 AccountFilter 参数",
+    "允许 HTTP 协议图片请求(适用于自部署代理)": "允许 HTTP 协议图片请求(适用于自部署代理)",
+    "允许 inference_geo 透传": "允许 inference_geo 透传",
+    "允许 safety_identifier 透传": "允许 safety_identifier 透传",
+    "允许 service_tier 透传": "允许 service_tier 透传",
+    "允许 stream_options.include_obfuscation 透传": "允许 stream_options.include_obfuscation 透传",
+    "允许 Turnstile 用户校验": "允许 Turnstile 用户校验",
+    "允许不安全的 Origin(HTTP)": "允许不安全的 Origin(HTTP)",
+    "允许回调(会泄露服务器 IP 地址)": "允许回调(会泄露服务器 IP 地址)",
+    "允许在 Stripe 支付中输入促销码": "允许在 Stripe 支付中输入促销码",
+    "允许新用户注册": "允许新用户注册",
+    "允许的 Origins": "允许的 Origins",
+    "允许的IP,一行一个,不填写则不限制": "允许的IP,一行一个,不填写则不限制",
+    "允许的端口": "允许的端口",
+    "允许访问私有IP地址(127.0.0.1、192.168.x.x等内网地址)": "允许访问私有IP地址(127.0.0.1、192.168.x.x等内网地址)",
+    "允许通过 Discord 账户登录 & 注册": "允许通过 Discord 账户登录 & 注册",
+    "允许通过 GitHub 账户登录 & 注册": "允许通过 GitHub 账户登录 & 注册",
+    "允许通过 Linux DO 账户登录 & 注册": "允许通过 Linux DO 账户登录 & 注册",
+    "允许通过 OIDC 进行登录": "允许通过 OIDC 进行登录",
+    "允许通过 Passkey 登录 & 认证": "允许通过 Passkey 登录 & 认证",
+    "允许通过 Telegram 进行登录": "允许通过 Telegram 进行登录",
+    "允许通过密码进行注册": "允许通过密码进行注册",
+    "允许通过密码进行登录": "允许通过密码进行登录",
+    "允许通过微信登录 & 注册": "允许通过微信登录 & 注册",
+    "允许重试": "允许重试",
+    "元": "元",
+    "充值": "充值",
+    "充值价格(x元/美金)": "充值价格(x元/美金)",
+    "充值价格显示": "充值价格显示",
+    "充值分组倍率": "充值分组倍率",
+    "充值分组倍率不是合法的 JSON 字符串": "充值分组倍率不是合法的 JSON 字符串",
+    "充值数量": "充值数量",
+    "充值数量,最低 ": "充值数量,最低 ",
+    "充值数量不能小于": "充值数量不能小于",
+    "充值方式设置": "充值方式设置",
+    "充值方式设置不是合法的 JSON 字符串": "充值方式设置不是合法的 JSON 字符串",
+    "充值确认": "充值确认",
+    "充值账单": "充值账单",
+    "充值金额折扣配置": "充值金额折扣配置",
+    "充值金额折扣配置不是合法的 JSON 对象": "充值金额折扣配置不是合法的 JSON 对象",
+    "充值链接": "充值链接",
+    "充值额度": "充值额度",
+    "先填写配置,再自动填充 OAuth 端点,能显著减少手工输入": "先填写配置,再自动填充 OAuth 端点,能显著减少手工输入",
+    "先搜索,再一键复制字段名或填入当前规则。字段名为系统内部路径,可直接用于路径 / 来源 / 目标。": "先搜索,再一键复制字段名或填入当前规则。字段名为系统内部路径,可直接用于路径 / 来源 / 目标。",
+    "免责声明:仅限个人使用,请勿分发或共享任何凭证。该渠道存在前置条件与使用门槛,请在充分了解流程与风险后使用,并遵守 OpenAI 的相关条款与政策。相关凭证与配置仅限接入 Codex CLI 使用,不适用于其他客户端、平台或渠道。": "免责声明:仅限个人使用,请勿分发或共享任何凭证。该渠道存在前置条件与使用门槛,请在充分了解流程与风险后使用,并遵守 OpenAI 的相关条款与政策。相关凭证与配置仅限接入 Codex CLI 使用,不适用于其他客户端、平台或渠道。",
+    "兑换人ID": "兑换人ID",
+    "兑换成功!": "兑换成功!",
+    "兑换码充值": "兑换码充值",
+    "兑换码创建成功": "兑换码创建成功",
+    "兑换码创建成功,是否下载兑换码?": "兑换码创建成功,是否下载兑换码?",
+    "兑换码创建成功!": "兑换码创建成功!",
+    "兑换码将以文本文件的形式下载,文件名为兑换码的名称。": "兑换码将以文本文件的形式下载,文件名为兑换码的名称。",
+    "兑换码更新成功!": "兑换码更新成功!",
+    "兑换码生成管理": "兑换码生成管理",
+    "兑换码管理": "兑换码管理",
+    "兑换额度": "兑换额度",
+    "全局控制侧边栏区域和功能显示,管理员隐藏的功能用户无法启用": "全局控制侧边栏区域和功能显示,管理员隐藏的功能用户无法启用",
+    "全局设置": "全局设置",
+    "全选": "全选",
+    "全部": "全部",
+    "全部供应商": "全部供应商",
+    "全部分组": "全部分组",
+    "全部地区总可用资源": "全部地区总可用资源",
+    "全部填入": "全部填入",
+    "全部容器": "全部容器",
+    "全部展开": "全部展开",
+    "全部收起": "全部收起",
+    "全部标签": "全部标签",
+    "全部模型": "全部模型",
+    "全部满足(AND)": "全部满足(AND)",
+    "全部状态": "全部状态",
+    "全部硬件总可用资源": "全部硬件总可用资源",
+    "全部端点": "全部端点",
+    "全部类型": "全部类型",
+    "公告": "公告",
+    "公告内容": "公告内容",
+    "公告已更新": "公告已更新",
+    "公告更新失败": "公告更新失败",
+    "公告类型": "公告类型",
+    "共": "共",
+    "共 {{count}} 个密钥_other": "共 {{count}} 个密钥",
+    "共 {{count}} 个模型_other": "共 {{count}} 个模型",
+    "共 {{count}} 条日志_other": "共 {{count}} 条日志",
+    "共 {{total}} 项,当前显示 {{start}}-{{end}} 项": "共 {{total}} 项,当前显示 {{start}}-{{end}} 项",
+    "关": "关",
+    "关于": "关于",
+    "关于我们": "关于我们",
+    "关于系统的详细信息": "关于系统的详细信息",
+    "关于项目": "关于项目",
+    "关键字(id或者名称)": "关键字(id或者名称)",
+    "关闭": "关闭",
+    "关闭侧边栏": "关闭侧边栏",
+    "关闭公告": "关闭公告",
+    "关闭后,此模型将不会被“同步官方”自动覆盖或创建": "关闭后,此模型将不会被“同步官方”自动覆盖或创建",
+    "关闭后将不再显示此提示(仅对当前浏览器生效)。确定要关闭吗?": "关闭后将不再显示此提示(仅对当前浏览器生效)。确定要关闭吗?",
+    "关闭弹窗,已停止批量测试": "关闭弹窗,已停止批量测试",
+    "关闭提示": "关闭提示",
+    "其他": "其他",
+    "其他注册选项": "其他注册选项",
+    "其他登录选项": "其他登录选项",
+    "其他设置": "其他设置",
+    "其他详情": "其他详情",
+    "内存 阈值 (%)": "内存 阈值 (%)",
+    "内存使用率超过此值时拒绝请求": "内存使用率超过此值时拒绝请求",
+    "内存命中": "内存命中",
+    "内存缓存最大条目数。0 表示使用后端默认容量:100000。": "内存缓存最大条目数。0 表示使用后端默认容量:100000。",
+    "内容": "内容",
+    "内容较大,已启用性能优化模式": "内容较大,已启用性能优化模式",
+    "内容较大,部分功能可能受限": "内容较大,部分功能可能受限",
+    "内置": "内置",
+    "内置 Ollama 镜像": "内置 Ollama 镜像",
+    "再次输入部署名称": "再次输入部署名称",
+    "最低": "最低",
+    "最低充值美元数量": "最低充值美元数量",
+    "最后使用时间": "最后使用时间",
+    "最后更新": "最后更新",
+    "最后请求": "最后请求",
+    "最大GPU数量": "最大GPU数量",
+    "最大可用": "最大可用",
+    "最大条目数": "最大条目数",
+    "最终抵扣": "最终抵扣",
+    "最近一次": "最近一次",
+    "最近事件": "最近事件",
+    "写": "写",
+    "准入策略": "准入策略",
+    "准入策略 JSON(可选)": "准入策略 JSON(可选)",
+    "准备中...": "准备中...",
+    "准备完成初始化": "准备完成初始化",
+    "凭证已刷新": "凭证已刷新",
+    "分类名称": "分类名称",
+    "分组": "分组",
+    "分组与模型定价设置": "分组与模型定价设置",
+    "分组价格": "分组价格",
+    "分组倍率": "分组倍率",
+    "分组倍率设置": "分组倍率设置",
+    "分组倍率设置,可以在此处新增分组或修改现有分组的倍率,格式为 JSON 字符串,例如:{\"vip\": 0.5, \"test\": 1},表示 vip 分组的倍率为 0.5,test 分组的倍率为 1": "分组倍率设置,可以在此处新增分组或修改现有分组的倍率,格式为 JSON 字符串,例如:{\"vip\": 0.5, \"test\": 1},表示 vip 分组的倍率为 0.5,test 分组的倍率为 1",
+    "分组特殊倍率": "分组特殊倍率",
+    "分组特殊可用分组": "分组特殊可用分组",
+    "分组设置": "分组设置",
+    "分组速率配置优先级高于全局速率限制。": "分组速率配置优先级高于全局速率限制。",
+    "分组速率限制": "分组速率限制",
+    "分钟": "分钟",
+    "切换为Assistant角色": "切换为Assistant角色",
+    "切换为System角色": "切换为System角色",
+    "切换为单密钥模式": "切换为单密钥模式",
+    "切换主题": "切换主题",
+    "划转到余额": "划转到余额",
+    "划转邀请额度": "划转邀请额度",
+    "划转金额最低为": "划转金额最低为",
+    "划转额度": "划转额度",
+    "列出的模型将不会自动添加或移除-thinking/-nothinking 后缀": "列出的模型将不会自动添加或移除-thinking/-nothinking 后缀",
+    "列设置": "列设置",
+    "创建": "创建",
+    "创建令牌默认选择auto分组,初始令牌也将设为auto(否则留空,为用户默认分组)": "创建令牌默认选择auto分组,初始令牌也将设为auto(否则留空,为用户默认分组)",
+    "创建失败": "创建失败",
+    "创建成功": "创建成功",
+    "创建或选择密钥时,将 Project 设置为 io.cloud": "创建或选择密钥时,将 Project 设置为 io.cloud",
+    "创建新用户账户": "创建新用户账户",
+    "创建新的令牌": "创建新的令牌",
+    "创建新的兑换码": "创建新的兑换码",
+    "创建新的模型": "创建新的模型",
+    "创建新的渠道": "创建新的渠道",
+    "创建新的订阅套餐": "创建新的订阅套餐",
+    "创建新的预填组": "创建新的预填组",
+    "创建时间": "创建时间",
+    "创建用户": "创建用户",
+    "初始化失败,请重试": "初始化失败,请重试",
+    "初始化系统": "初始化系统",
+    "删除": "删除",
+    "删除 Key 来源": "删除 Key 来源",
+    "删除会彻底移除该订阅记录(含权益明细)。是否继续?": "删除会彻底移除该订阅记录(含权益明细)。是否继续?",
+    "删除后无法恢复,确定要删除模型 \"{{name}}\" 吗?": "删除后无法恢复,确定要删除模型 \"{{name}}\" 吗?",
+    "删除失败": "删除失败",
+    "删除密钥失败": "删除密钥失败",
+    "删除成功": "删除成功",
+    "删除所选": "删除所选",
+    "删除所选令牌": "删除所选令牌",
+    "删除所选通道": "删除所选通道",
+    "删除条件": "删除条件",
+    "删除禁用密钥失败": "删除禁用密钥失败",
+    "删除禁用通道": "删除禁用通道",
+    "删除自动禁用密钥": "删除自动禁用密钥",
+    "删除规则": "删除规则",
+    "删除账户": "删除账户",
+    "删除账户确认": "删除账户确认",
+    "删除部署失败": "删除部署失败",
+    "刷新": "刷新",
+    "刷新凭证": "刷新凭证",
+    "刷新失败": "刷新失败",
+    "刷新容器信息": "刷新容器信息",
+    "刷新日志": "刷新日志",
+    "刷新统计": "刷新统计",
+    "刷新缓存统计": "刷新缓存统计",
+    "刷新缓存统计失败": "刷新缓存统计失败",
+    "前往 io.net API Keys": "前往 io.net API Keys",
+    "前往设置": "前往设置",
+    "前往设置页面": "前往设置页面",
+    "前缀": "前缀",
+    "副本数量": "副本数量",
+    "剩余": "剩余",
+    "剩余备用码:": "剩余备用码:",
+    "剩余时间": "剩余时间",
+    "剩余额度": "剩余额度",
+    "剩余额度/总额度": "剩余额度/总额度",
+    "剩余额度$": "剩余额度$",
+    "功能特性": "功能特性",
+    "加入渠道": "加入渠道",
+    "加入预填组": "加入预填组",
+    "加密存储": "加密存储",
+    "加载中...": "加载中...",
+    "加载供应商信息失败": "加载供应商信息失败",
+    "加载关于内容失败...": "加载关于内容失败...",
+    "加载分组失败": "加载分组失败",
+    "加载失败": "加载失败",
+    "加载容器信息中...": "加载容器信息中...",
+    "加载容器详情中...": "加载容器详情中...",
+    "加载日志中...": "加载日志中...",
+    "加载模型信息失败": "加载模型信息失败",
+    "加载模型列表失败": "加载模型列表失败",
+    "加载模型失败": "加载模型失败",
+    "加载用户协议内容失败...": "加载用户协议内容失败...",
+    "加载设置中...": "加载设置中...",
+    "加载详情中...": "加载详情中...",
+    "加载账单失败": "加载账单失败",
+    "加载隐私政策内容失败...": "加载隐私政策内容失败...",
+    "包含": "包含",
+    "包含来自未知或未标明供应商的AI模型,这些模型可能来自小型供应商或开源项目。": "包含来自未知或未标明供应商的AI模型,这些模型可能来自小型供应商或开源项目。",
+    "包括失败请求的次数,0代表不限制": "包括失败请求的次数,0代表不限制",
+    "匹配值": "匹配值",
+    "匹配值(可选)": "匹配值(可选)",
+    "匹配方式": "匹配方式",
+    "匹配类型": "匹配类型",
+    "区域": "区域",
+    "升级分组": "升级分组",
+    "单GPU小时费率": "单GPU小时费率",
+    "历史消耗": "历史消耗",
+    "原价": "原价",
+    "原因:": "原因:",
+    "原密码": "原密码",
+    "原生格式": "原生格式",
+    "原生额度": "原生额度",
+    "去重完成:去重前 {{before}} 个密钥,去重后 {{after}} 个密钥": "去重完成:去重前 {{before}} 个密钥,去重后 {{after}} 个密钥",
+    "参与官方同步": "参与官方同步",
+    "参数": "参数",
+    "参数值": "参数值",
+    "参数覆盖": "参数覆盖",
+    "参数覆盖 JSON 已复制": "参数覆盖 JSON 已复制",
+    "参数覆盖必须是合法的 JSON 对象": "参数覆盖必须是合法的 JSON 对象",
+    "参数覆盖必须是合法的 JSON 格式!": "参数覆盖必须是合法的 JSON 格式!",
+    "参数覆盖模板": "参数覆盖模板",
+    "参数覆盖模板 JSON 格式不正确": "参数覆盖模板 JSON 格式不正确",
+    "参数覆盖模板预览": "参数覆盖模板预览",
+    "参数配置": "参数配置",
+    "参数配置有误": "参数配置有误",
+    "参数错误": "参数错误",
+    "参照生视频": "参照生视频",
+    "友情链接": "友情链接",
+    "发布日期": "发布日期",
+    "发布时间": "发布时间",
+    "发现文档地址(Discovery URL,可选)": "发现文档地址(Discovery URL,可选)",
+    "发行者 URL(Issuer URL)": "发行者 URL(Issuer URL)",
+    "取消": "取消",
+    "取消全选": "取消全选",
+    "取消选择": "取消选择",
+    "变换": "变换",
+    "变焦": "变焦",
+    "变量值": "变量值",
+    "变量名": "变量名",
+    "只包括请求成功的次数": "只包括请求成功的次数",
+    "只支持HTTPS,系统将以POST方式发送通知,请确保地址可以接收POST请求": "只支持HTTPS,系统将以POST方式发送通知,请确保地址可以接收POST请求",
+    "只有当用户设置开启IP记录时,才会进行请求和错误类型日志的IP记录": "只有当用户设置开启IP记录时,才会进行请求和错误类型日志的IP记录",
+    "可信": "可信",
+    "可在设置页面设置关于内容,支持 HTML & Markdown": "可在设置页面设置关于内容,支持 HTML & Markdown",
+    "可手动填写,多个 scope 用空格分隔": "可手动填写,多个 scope 用空格分隔",
+    "可用": "可用",
+    "可用令牌分组": "可用令牌分组",
+    "可用分组": "可用分组",
+    "可用变量:{{provider}} {{field}} {{op}} {{required}} {{current}} 以及 {{current.path}}": "可用变量:{{provider}} {{field}} {{op}} {{required}} {{current}} 以及 {{current.path}}",
+    "可用数量": "可用数量",
+    "可用模型": "可用模型",
+    "可用空间: {{free}} / 总空间: {{total}}": "可用空间: {{free}} / 总空间: {{total}}",
+    "可用端点类型": "可用端点类型",
+    "可用邀请额度": "可用邀请额度",
+    "可留空;留空时会尝试使用 Issuer URL + /.well-known/openid-configuration": "可留空;留空时会尝试使用 Issuer URL + /.well-known/openid-configuration",
+    "可视化": "可视化",
+    "可视化倍率设置": "可视化倍率设置",
+    "可视化编辑": "可视化编辑",
+    "可选,公告的补充说明": "可选,公告的补充说明",
+    "可选,用于复现结果": "可选,用于复现结果",
+    "可选:基于用户信息 JSON 做组合条件准入,条件不满足时返回自定义提示": "可选:基于用户信息 JSON 做组合条件准入,条件不满足时返回自定义提示",
+    "可选:用于自动生成端点或 Discovery URL": "可选:用于自动生成端点或 Discovery URL",
+    "可选。匹配入口请求的 User-Agent;任意一行作为子串匹配(忽略大小写)即命中。": "可选。匹配入口请求的 User-Agent;任意一行作为子串匹配(忽略大小写)即命中。",
+    "可选。对提取到的亲和 Key 做正则校验;不填表示不校验。": "可选。对提取到的亲和 Key 做正则校验;不填表示不校验。",
+    "可选。对请求路径进行匹配;不填表示匹配所有路径。": "可选。对请求路径进行匹配;不填表示匹配所有路径。",
+    "可选值": "可选值",
+    "同时重置消息": "同时重置消息",
+    "同步": "同步",
+    "同步到渠道": "同步到渠道",
+    "同步向导": "同步向导",
+    "同步失败": "同步失败",
+    "同步成功": "同步成功",
+    "同步接口": "同步接口",
+    "同步渠道失败": "同步渠道失败",
+    "同步渠道失败:缺少部署信息": "同步渠道失败:缺少部署信息",
+    "同步端点": "同步端点",
+    "名称": "名称",
+    "名称+密钥": "名称+密钥",
+    "名称不能为空": "名称不能为空",
+    "名称匹配类型": "名称匹配类型",
+    "后端请求失败": "后端请求失败",
+    "后缀": "后缀",
+    "否": "否",
+    "启动": "启动",
+    "启动参数 (Args)": "启动参数 (Args)",
+    "启动命令": "启动命令",
+    "启动命令 (Entrypoint)": "启动命令 (Entrypoint)",
+    "启动授权失败": "启动授权失败",
+    "启动时间": "启动时间",
+    "启动部署失败": "启动部署失败",
+    "启动配置": "启动配置",
+    "启用": "启用",
+    "启用 io.net 部署": "启用 io.net 部署",
+    "启用 io.net 部署开关": "启用 io.net 部署开关",
+    "启用 Prompt 检查": "启用 Prompt 检查",
+    "启用2FA失败": "启用2FA失败",
+    "启用Claude思考适配(-thinking后缀)": "启用Claude思考适配(-thinking后缀)",
+    "启用FunctionCall思维签名填充": "启用FunctionCall思维签名填充",
+    "启用Gemini思考后缀适配": "启用Gemini思考后缀适配",
+    "启用Ping间隔": "启用Ping间隔",
+    "启用SMTP SSL": "启用SMTP SSL",
+    "启用SSRF防护(推荐开启以保护服务器安全)": "启用SSRF防护(推荐开启以保护服务器安全)",
+    "启用供应商": "启用供应商",
+    "启用全部": "启用全部",
+    "启用后可接入 io.net GPU 资源": "启用后可接入 io.net GPU 资源",
+    "启用后可添加图片URL进行多模态对话": "启用后可添加图片URL进行多模态对话",
+    "启用后套餐将在用户端展示。是否继续?": "启用后套餐将在用户端展示。是否继续?",
+    "启用后将优先复用上一次成功的渠道(粘滞选路)。": "启用后将优先复用上一次成功的渠道(粘滞选路)。",
+    "启用后将使用 Creem Test Mode": "启用后将使用 Creem Test Mode",
+    "启用密钥失败": "启用密钥失败",
+    "启用屏蔽词过滤功能": "启用屏蔽词过滤功能",
+    "启用性能监控": "启用性能监控",
+    "启用性能监控后,当系统资源使用率超过设定阈值时,将拒绝新的 Relay 请求 (/v1, /v1beta 等),以保护系统稳定性。": "启用性能监控后,当系统资源使用率超过设定阈值时,将拒绝新的 Relay 请求 (/v1, /v1beta 等),以保护系统稳定性。",
+    "启用所有密钥失败": "启用所有密钥失败",
+    "启用数据看板(实验性)": "启用数据看板(实验性)",
+    "启用此模式后,将使用您自定义的请求体发送API请求,模型配置面板的参数设置将被忽略。": "启用此模式后,将使用您自定义的请求体发送API请求,模型配置面板的参数设置将被忽略。",
+    "启用状态": "启用状态",
+    "启用用户模型请求速率限制(可能会影响高并发性能)": "启用用户模型请求速率限制(可能会影响高并发性能)",
+    "启用磁盘缓存": "启用磁盘缓存",
+    "启用磁盘缓存后,大请求体将临时存储到磁盘而非内存,可显著降低内存占用,适用于处理包含大量图片/文件的请求。建议在 SSD 环境下使用。": "启用磁盘缓存后,大请求体将临时存储到磁盘而非内存,可显著降低内存占用,适用于处理包含大量图片/文件的请求。建议在 SSD 环境下使用。",
+    "启用签到功能": "启用签到功能",
+    "启用绘图功能": "启用绘图功能",
+    "启用请求体透传功能": "启用请求体透传功能",
+    "启用请求透传": "启用请求透传",
+    "启用违规扣费": "启用违规扣费",
+    "启用额度消费日志记录": "启用额度消费日志记录",
+    "启用验证": "启用验证",
+    "周": "周",
+    "命中判定:usage 中存在 cached tokens(例如 cached_tokens/prompt_cache_hit_tokens)即视为命中。": "命中判定:usage 中存在 cached tokens(例如 cached_tokens/prompt_cache_hit_tokens)即视为命中。",
+    "命中率": "命中率",
+    "命中该亲和规则后,会把此模板合并到渠道参数覆盖中(同名键由模板覆盖)。": "命中该亲和规则后,会把此模板合并到渠道参数覆盖中(同名键由模板覆盖)。",
+    "和": "和",
+    "响应": "响应",
+    "响应时间": "响应时间",
+    "响应缺少凭据": "响应缺少凭据",
+    "响应缺少授权链接": "响应缺少授权链接",
+    "商品价格 ID": "商品价格 ID",
+    "回答内容": "回答内容",
+    "回调 URL 填": "回调 URL 填",
+    "回调 URL 格式": "回调 URL 格式",
+    "回调地址": "回调地址",
+    "固定价格": "固定价格",
+    "固定价格(每次)": "固定价格(每次)",
+    "固定价格值": "固定价格值",
+    "图像生成": "图像生成",
+    "图标": "图标",
+    "图标使用 react-icons(Simple Icons)或 URL/emoji,例如:github、gitlab、si:google": "图标使用 react-icons(Simple Icons)或 URL/emoji,例如:github、gitlab、si:google",
+    "图标使用@lobehub/icons库,如:OpenAI、Claude.Color,支持链式参数:OpenAI.Avatar.type={'platform'}、OpenRouter.Avatar.shape={'square'},查询所有可用图标请 ": "图标使用@lobehub/icons库,如:OpenAI、Claude.Color,支持链式参数:OpenAI.Avatar.type={'platform'}、OpenRouter.Avatar.shape={'square'},查询所有可用图标请 ",
+    "图混合": "图混合",
+    "图片功能在自定义请求体模式下不可用": "图片功能在自定义请求体模式下不可用",
+    "图片地址": "图片地址",
+    "图片已添加": "图片已添加",
+    "图片生成调用:{{symbol}}{{price}} / 1次": "图片生成调用:{{symbol}}{{price}} / 1次",
+    "图片输入: {{imageRatio}}": "图片输入: {{imageRatio}}",
+    "图片输入价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (图片倍率: {{imageRatio}})": "图片输入价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (图片倍率: {{imageRatio}})",
+    "图片输入倍率(仅部分模型支持该计费)": "图片输入倍率(仅部分模型支持该计费)",
+    "图片输入相关的倍率设置,键为模型名称,值为倍率,仅部分模型支持该计费": "图片输入相关的倍率设置,键为模型名称,值为倍率,仅部分模型支持该计费",
+    "图生文": "图生文",
+    "图生视频": "图生视频",
+    "在Gotify服务器创建应用后获得的令牌,用于发送通知": "在Gotify服务器创建应用后获得的令牌,用于发送通知",
+    "在Gotify服务器的应用管理中创建新应用": "在Gotify服务器的应用管理中创建新应用",
+    "在找兑换码?": "在找兑换码?",
+    "在新标签页中打开": "在新标签页中打开",
+    "在模型广场向用户展示的端点": "在模型广场向用户展示的端点",
+    "在此输入 Logo 图片地址": "在此输入 Logo 图片地址",
+    "在此输入新的公告内容,支持 Markdown & HTML 代码": "在此输入新的公告内容,支持 Markdown & HTML 代码",
+    "在此输入新的关于内容,支持 Markdown & HTML 代码。如果输入的是一个链接,则会使用该链接作为 iframe 的 src 属性,这允许你设置任意网页作为关于页面": "在此输入新的关于内容,支持 Markdown & HTML 代码。如果输入的是一个链接,则会使用该链接作为 iframe 的 src 属性,这允许你设置任意网页作为关于页面",
+    "在此输入新的页脚,留空则使用默认页脚,支持 HTML 代码": "在此输入新的页脚,留空则使用默认页脚,支持 HTML 代码",
+    "在此输入用户协议内容,支持 Markdown & HTML 代码": "在此输入用户协议内容,支持 Markdown & HTML 代码",
+    "在此输入系统名称": "在此输入系统名称",
+    "在此输入隐私政策内容,支持 Markdown & HTML 代码": "在此输入隐私政策内容,支持 Markdown & HTML 代码",
+    "在此输入首页内容,支持 Markdown & HTML 代码,设置后首页的状态信息将不再显示。如果输入的是一个链接,则会使用该链接作为 iframe 的 src 属性,这允许你设置任意网页作为首页": "在此输入首页内容,支持 Markdown & HTML 代码,设置后首页的状态信息将不再显示。如果输入的是一个链接,则会使用该链接作为 iframe 的 src 属性,这允许你设置任意网页作为首页",
+    "域名IP过滤详细说明": "域名IP过滤详细说明",
+    "域名白名单": "域名白名单",
+    "域名黑名单": "域名黑名单",
+    "基本信息": "基本信息",
+    "填充 Codex CLI / Claude CLI 模版": "填充 Codex CLI / Claude CLI 模版",
+    "填充新模板": "填充新模板",
+    "填充旧模板": "填充旧模板",
+    "填充模板": "填充模板",
+    "填充模板:等级+激活": "填充模板:等级+激活",
+    "填充模板:等级提示": "填充模板:等级提示",
+    "填充模板:组织或角色": "填充模板:组织或角色",
+    "填充模板:组织提示": "填充模板:组织提示",
+    "填充模板(全渠道)": "填充模板(全渠道)",
+    "填充模板(指定渠道)": "填充模板(指定渠道)",
+    "填入": "填入",
+    "填入 CC Switch": "填入 CC Switch",
+    "填入所有模型": "填入所有模型",
+    "填入来源": "填入来源",
+    "填入模板": "填入模板",
+    "填入目标": "填入目标",
+    "填入相关模型": "填入相关模型",
+    "填入路径": "填入路径",
+    "填入透传模版": "填入透传模版",
+    "填写 Issuer URL 后自动生成:": "填写 Issuer URL 后自动生成:",
+    "填写Gotify服务器的完整URL地址": "填写Gotify服务器的完整URL地址",
+    "填写后会自动拼接预设端点": "填写后会自动拼接预设端点",
+    "填写带https的域名,逗号分隔": "填写带https的域名,逗号分隔",
+    "填写用户协议内容后,用户注册时将被要求勾选已阅读用户协议": "填写用户协议内容后,用户注册时将被要求勾选已阅读用户协议",
+    "填写隐私政策内容后,用户注册时将被要求勾选已阅读隐私政策": "填写隐私政策内容后,用户注册时将被要求勾选已阅读隐私政策",
+    "处理中": "处理中",
+    "备份支持": "备份支持",
+    "备份状态": "备份状态",
+    "备注": "备注",
+    "备用恢复代码": "备用恢复代码",
+    "备用码已复制到剪贴板": "备用码已复制到剪贴板",
+    "备用码重新生成成功": "备用码重新生成成功",
+    "复制": "复制",
+    "复制代码": "复制代码",
+    "复制令牌": "复制令牌",
+    "复制全部": "复制全部",
+    "复制名称": "复制名称",
+    "复制失败": "复制失败",
+    "复制失败,请手动复制": "复制失败,请手动复制",
+    "复制失败,请手动选择文本复制": "复制失败,请手动选择文本复制",
+    "复制已选": "复制已选",
+    "复制应用的令牌(Token)并填写到上方的应用令牌字段": "复制应用的令牌(Token)并填写到上方的应用令牌字段",
+    "复制成功": "复制成功",
+    "复制所有代码": "复制所有代码",
+    "复制所有模型": "复制所有模型",
+    "复制所选令牌": "复制所选令牌",
+    "复制所选兑换码到剪贴板": "复制所选兑换码到剪贴板",
+    "复制授权链接": "复制授权链接",
+    "复制日志": "复制日志",
+    "复制渠道的所有信息": "复制渠道的所有信息",
+    "复制版本号": "复制版本号",
+    "复制生成的密钥并粘贴到此处": "复制生成的密钥并粘贴到此处",
+    "复制链接": "复制链接",
+    "外接设备": "外接设备",
+    "多个命令用空格分隔": "多个命令用空格分隔",
+    "多密钥渠道操作项目组": "多密钥渠道操作项目组",
+    "多密钥管理": "多密钥管理",
+    "多种充值方式,安全便捷": "多种充值方式,安全便捷",
+    "大模型接口网关": "大模型接口网关",
+    "天": "天",
+    "天前": "天前",
+    "失败": "失败",
+    "失败原因": "失败原因",
+    "失败后不重试": "失败后不重试",
+    "失败时自动禁用通道": "失败时自动禁用通道",
+    "失败重试次数": "失败重试次数",
+    "奖励说明": "奖励说明",
+    "套餐": "套餐",
+    "套餐副标题": "套餐副标题",
+    "套餐名称": "套餐名称",
+    "套餐标题": "套餐标题",
+    "套餐标题不能为空": "套餐标题不能为空",
+    "套餐的基本信息和定价": "套餐的基本信息和定价",
+    "如:大带宽批量分析图片推荐": "如:大带宽批量分析图片推荐",
+    "如:香港线路": "如:香港线路",
+    "如果亲和到的渠道失败,重试到其他渠道成功后,将亲和更新到成功的渠道。": "如果亲和到的渠道失败,重试到其他渠道成功后,将亲和更新到成功的渠道。",
+    "如果你对接的是上游One API或者New API等转发项目,请使用OpenAI类型,不要使用此类型,除非你知道你在做什么。": "如果你对接的是上游One API或者New API等转发项目,请使用OpenAI类型,不要使用此类型,除非你知道你在做什么。",
+    "如果用户请求中包含系统提示词,则使用此设置拼接到用户的系统提示词前面": "如果用户请求中包含系统提示词,则使用此设置拼接到用户的系统提示词前面",
+    "如果镜像为私有,请填写密码或Token": "如果镜像为私有,请填写密码或Token",
+    "如果镜像为私有,请填写用户名": "如果镜像为私有,请填写用户名",
+    "始终使用浅色主题": "始终使用浅色主题",
+    "始终使用深色主题": "始终使用深色主题",
+    "字段映射": "字段映射",
+    "字段缺失视为命中": "字段缺失视为命中",
+    "字段路径": "字段路径",
+    "字段透传控制": "字段透传控制",
+    "字段速查": "字段速查",
+    "存在惩罚,鼓励讨论新话题": "存在惩罚,鼓励讨论新话题",
+    "存在重复的键名:": "存在重复的键名:",
+    "安全提醒": "安全提醒",
+    "安全设置": "安全设置",
+    "安全验证": "安全验证",
+    "安全验证级别": "安全验证级别",
+    "安装指南": "安装指南",
+    "完成": "完成",
+    "完成初始化": "完成初始化",
+    "完成硬件类型、部署位置、副本数量等配置后,将自动计算价格": "完成硬件类型、部署位置、副本数量等配置后,将自动计算价格",
+    "完成设置并启用两步验证": "完成设置并启用两步验证",
+    "完成进度": "完成进度",
+    "完整的 Base URL,支持变量{model}": "完整的 Base URL,支持变量{model}",
+    "官方": "官方",
+    "官方文档": "官方文档",
+    "官方模型同步": "官方模型同步",
+    "官方说明": "官方说明",
+    "定价模式": "定价模式",
+    "定时测试所有通道": "定时测试所有通道",
+    "定期更改密码可以提高账户安全性": "定期更改密码可以提高账户安全性",
+    "实付": "实付",
+    "实付金额": "实付金额",
+    "实付金额:": "实付金额:",
+    "实际模型": "实际模型",
+    "实际请求体": "实际请求体",
+    "容器": "容器",
+    "容器ID": "容器ID",
+    "容器创建失败: ": "容器创建失败: ",
+    "容器创建成功": "容器创建成功",
+    "容器名称": "容器名称",
+    "容器启动后执行的命令": "容器启动后执行的命令",
+    "容器启动配置": "容器启动配置",
+    "容器实例": "容器实例",
+    "容器对外暴露的端口": "容器对外暴露的端口",
+    "容器对外服务的端口号,可选": "容器对外服务的端口号,可选",
+    "容器总数": "容器总数",
+    "容器数量": "容器数量",
+    "容器日志": "容器日志",
+    "容器时长延长成功": "容器时长延长成功",
+    "容器访问地址无效": "容器访问地址无效",
+    "容器详情": "容器详情",
+    "容器配置": "容器配置",
+    "容器配置更新成功": "容器配置更新成功",
+    "密码": "密码",
+    "密码修改成功!": "密码修改成功!",
+    "密码已复制到剪贴板:": "密码已复制到剪贴板:",
+    "密码已重置并已复制到剪贴板:": "密码已重置并已复制到剪贴板:",
+    "密码管理": "密码管理",
+    "密码重置": "密码重置",
+    "密码重置完成": "密码重置完成",
+    "密码重置确认": "密码重置确认",
+    "密码长度至少为8个字符": "密码长度至少为8个字符",
+    "密钥": "密钥",
+    "密钥 JSON 必须包含 access_token": "密钥 JSON 必须包含 access_token",
+    "密钥 JSON 必须包含 account_id": "密钥 JSON 必须包含 account_id",
+    "密钥(编辑模式下,保存的密钥不会显示)": "密钥(编辑模式下,保存的密钥不会显示)",
+    "密钥去重": "密钥去重",
+    "密钥将以Bearer方式添加到请求头中,用于验证webhook请求的合法性": "密钥将以Bearer方式添加到请求头中,用于验证webhook请求的合法性",
+    "密钥已删除": "密钥已删除",
+    "密钥已启用": "密钥已启用",
+    "密钥已复制到剪贴板": "密钥已复制到剪贴板",
+    "密钥已禁用": "密钥已禁用",
+    "密钥必须是 JSON 对象": "密钥必须是 JSON 对象",
+    "密钥必须是合法的 JSON 格式!": "密钥必须是合法的 JSON 格式!",
+    "密钥文件 (.json)": "密钥文件 (.json)",
+    "密钥更新模式": "密钥更新模式",
+    "密钥格式": "密钥格式",
+    "密钥格式无效,请输入有效的 JSON 格式密钥": "密钥格式无效,请输入有效的 JSON 格式密钥",
+    "密钥环境变量": "密钥环境变量",
+    "密钥聚合模式": "密钥聚合模式",
+    "密钥获取成功": "密钥获取成功",
+    "密钥输入方式": "密钥输入方式",
+    "密钥预览": "密钥预览",
+    "对于官方渠道,new-api已经内置地址,除非是第三方代理站点或者Azure的特殊接入地址,否则不需要填写": "对于官方渠道,new-api已经内置地址,除非是第三方代理站点或者Azure的特殊接入地址,否则不需要填写",
+    "对免费模型启用预消耗": "对免费模型启用预消耗",
+    "对域名启用 IP 过滤(实验性)": "对域名启用 IP 过滤(实验性)",
+    "对外运营模式": "对外运营模式",
+    "对象清理规则": "对象清理规则",
+    "导入": "导入",
+    "导入的配置将覆盖当前设置,是否继续?": "导入的配置将覆盖当前设置,是否继续?",
+    "导入配置": "导入配置",
+    "导入配置失败: ": "导入配置失败: ",
+    "导出": "导出",
+    "导出配置": "导出配置",
+    "导出配置失败: ": "导出配置失败: ",
+    "将 reasoning_content 转换为 <think> 标签拼接到内容中": "将 reasoning_content 转换为 <think> 标签拼接到内容中",
+    "将为选中的 ": "将为选中的 ",
+    "将仅保留第一个密钥文件,其余文件将被移除,是否继续?": "将仅保留第一个密钥文件,其余文件将被移除,是否继续?",
+    "将删除": "将删除",
+    "将删除已使用、已禁用及过期的兑换码,此操作不可撤销。": "将删除已使用、已禁用及过期的兑换码,此操作不可撤销。",
+    "将删除所有仍在内存中的渠道亲和性缓存条目。": "将删除所有仍在内存中的渠道亲和性缓存条目。",
+    "将大请求体临时存储到磁盘": "将大请求体临时存储到磁盘",
+    "将清除所有保存的配置并恢复默认设置,此操作不可撤销。是否继续?": "将清除所有保存的配置并恢复默认设置,此操作不可撤销。是否继续?",
+    "将清除选定时间之前的所有日志": "将清除选定时间之前的所有日志",
+    "将追加 2 条规则到现有规则列表。": "将追加 2 条规则到现有规则列表。",
+    "小时": "小时",
+    "小时费率": "小时费率",
+    "尚未使用": "尚未使用",
+    "局部重绘-提交": "局部重绘-提交",
+    "屏蔽词列表": "屏蔽词列表",
+    "屏蔽词过滤设置": "屏蔽词过滤设置",
+    "展开": "展开",
+    "展开更多": "展开更多",
+    "展示价格": "展示价格",
+    "已为 {{count}} 个模型设置{{type}}_other": "已为 {{count}} 个模型设置{{type}}",
+    "已为 ${count} 个渠道设置标签!": "已为 ${count} 个渠道设置标签!",
+    "已从 Discovery 自动填充配置": "已从 Discovery 自动填充配置",
+    "已从 Discovery 获取配置,可继续手动修改所有字段。": "已从 Discovery 获取配置,可继续手动修改所有字段。",
+    "已作废": "已作废",
+    "已保存偏好为": "已保存偏好为",
+    "已修复 ${success} 个通道,失败 ${fails} 个通道。": "已修复 ${success} 个通道,失败 ${fails} 个通道。",
+    "已停止": "已停止",
+    "已停止批量测试": "已停止批量测试",
+    "已关闭后续提醒": "已关闭后续提醒",
+    "已分配内存": "已分配内存",
+    "已切换为Assistant角色": "已切换为Assistant角色",
+    "已切换为System角色": "已切换为System角色",
+    "已切换至最优倍率视图,每个模型使用其最低倍率分组": "已切换至最优倍率视图,每个模型使用其最低倍率分组",
+    "已初始化": "已初始化",
+    "已删除": "已删除",
+    "已删除 {{count}} 个令牌!_other": "已删除 {{count}} 个令牌!",
+    "已删除 {{count}} 条失效兑换码_other": "已删除 {{count}} 条失效兑换码",
+    "已删除 ${data} 个通道!": "已删除 ${data} 个通道!",
+    "已删除所有禁用渠道,共计 ${data} 个": "已删除所有禁用渠道,共计 ${data} 个",
+    "已删除消息及其回复": "已删除消息及其回复",
+    "已发起支付": "已发起支付",
+    "已发送到 Fluent": "已发送到 Fluent",
+    "已取消 Passkey 注册": "已取消 Passkey 注册",
+    "已同步到渠道": "已同步到渠道",
+    "已启用": "已启用",
+    "已启用 Passkey,无需密码即可登录": "已启用 Passkey,无需密码即可登录",
+    "已启用所有密钥": "已启用所有密钥",
+    "已在自定义模式中忽略": "已在自定义模式中忽略",
+    "已填充提示模板": "已填充提示模板",
+    "已填充模版": "已填充模版",
+    "已填充策略模板": "已填充策略模板",
+    "已备份": "已备份",
+    "已复制": "已复制",
+    "已复制 ${count} 个模型": "已复制 ${count} 个模型",
+    "已复制 ID 到剪贴板": "已复制 ID 到剪贴板",
+    "已复制:": "已复制:",
+    "已复制:{{name}}": "已复制:{{name}}",
+    "已复制全部数据": "已复制全部数据",
+    "已复制到剪切板": "已复制到剪切板",
+    "已复制到剪贴板": "已复制到剪贴板",
+    "已复制到剪贴板!": "已复制到剪贴板!",
+    "已复制字段:{{name}}": "已复制字段:{{name}}",
+    "已复制模型名称": "已复制模型名称",
+    "已复制版本号": "已复制版本号",
+    "已复制自动生成的 API Key": "已复制自动生成的 API Key",
+    "已完成": "已完成",
+    "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。",
+    "已成功开始测试所有已启用通道,请刷新页面查看结果。": "已成功开始测试所有已启用通道,请刷新页面查看结果。",
+    "已打开授权页面": "已打开授权页面",
+    "已打开支付页面": "已打开支付页面",
+    "已提交": "已提交",
+    "已支付金额": "已支付金额",
+    "已新增 {{count}} 个模型:{{list}}_other": "已新增 {{count}} 个模型:{{list}}",
+    "已更新完毕所有已启用通道余额!": "已更新完毕所有已启用通道余额!",
+    "已有保存的配置": "已有保存的配置",
+    "已有模型": "已有模型",
+    "已有的模型": "已有的模型",
+    "已有账户?": "已有账户?",
+    "已服务": "已服务",
+    "已注销": "已注销",
+    "已添加": "已添加",
+    "已添加 {{count}} 个模板_other": "已添加 {{count}} 个模板",
+    "已添加到白名单": "已添加到白名单",
+    "已清空": "已清空",
+    "已清空测试结果": "已清空测试结果",
+    "已生成授权凭据": "已生成授权凭据",
+    "已用": "已用",
+    "已用/剩余": "已用/剩余",
+    "已用额度": "已用额度",
+    "已禁用": "已禁用",
+    "已禁用所有密钥": "已禁用所有密钥",
+    "已绑定": "已绑定",
+    "已绑定渠道": "已绑定渠道",
+    "已结束": "已结束",
+    "已耗尽": "已耗尽",
+    "已解锁豆包自定义 API 地址编辑": "已解锁豆包自定义 API 地址编辑",
+    "已设置": "已设置",
+    "已达上限": "已达上限",
+    "已达到购买上限": "已达到购买上限",
+    "已过期": "已过期",
+    "已运行时间": "已运行时间",
+    "已选择 {{count}} 个模型_other": "已选择 {{count}} 个模型",
+    "已选择 {{selected}} / {{total}}": "已选择 {{selected}} / {{total}}",
+    "已选择 ${count} 个渠道": "已选择 ${count} 个渠道",
+    "已重置为默认配置": "已重置为默认配置",
+    "已销毁": "已销毁",
+    "币种": "币种",
+    "常用上下文 Key(用于 context_*)": "常用上下文 Key(用于 context_*)",
+    "常见问答": "常见问答",
+    "常见问答管理,为用户提供常见问题的答案(最多50个,前端显示最新20条)": "常见问答管理,为用户提供常见问题的答案(最多50个,前端显示最新20条)",
+    "平台": "平台",
+    "平均RPM": "平均RPM",
+    "平均TPM": "平均TPM",
+    "平移": "平移",
+    "年": "年",
+    "应付金额": "应付金额",
+    "应用": "应用",
+    "应用同步": "应用同步",
+    "应用更改": "应用更改",
+    "应用覆盖": "应用覆盖",
+    "延长后总时长": "延长后总时长",
+    "延长容器时长": "延长容器时长",
+    "延长容器时长将会产生额外费用,请确认您有足够的账户余额。": "延长容器时长将会产生额外费用,请确认您有足够的账户余额。",
+    "延长操作一旦确认无法撤销,费用将立即扣除。": "延长操作一旦确认无法撤销,费用将立即扣除。",
+    "延长时长": "延长时长",
+    "延长时长(小时)": "延长时长(小时)",
+    "延长时长不能超过720小时(30天)": "延长时长不能超过720小时(30天)",
+    "延长时长失败": "延长时长失败",
+    "延长时长至少为1小时": "延长时长至少为1小时",
+    "建立连接时发生错误": "建立连接时发生错误",
+    "建议在生产环境中使用 MySQL 或 PostgreSQL 数据库,或确保 SQLite 数据库文件已映射到宿主机的持久化存储。": "建议在生产环境中使用 MySQL 或 PostgreSQL 数据库,或确保 SQLite 数据库文件已映射到宿主机的持久化存储。",
+    "开": "开",
+    "开启之后会清除用户提示词中的": "开启之后会清除用户提示词中的",
+    "开启之后将上游地址替换为服务器地址": "开启之后将上游地址替换为服务器地址",
+    "开启后,using_group 会参与 cache key(不同分组隔离)。": "开启后,using_group 会参与 cache key(不同分组隔离)。",
+    "开启后,仅\"消费\"和\"错误\"日志将记录您的客户端IP地址": "开启后,仅\"消费\"和\"错误\"日志将记录您的客户端IP地址",
+    "开启后,对免费模型(倍率为0,或者价格为0)的模型也会预消耗额度": "开启后,对免费模型(倍率为0,或者价格为0)的模型也会预消耗额度",
+    "开启后,将定期发送ping数据保持连接活跃": "开启后,将定期发送ping数据保持连接活跃",
+    "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道": "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道",
+    "开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启": "开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启",
+    "开启后,若该规则命中且请求失败,将不会切换渠道重试。": "开启后,若该规则命中且请求失败,将不会切换渠道重试。",
+    "开启后,规则名称会参与 cache key(不同规则隔离)。": "开启后,规则名称会参与 cache key(不同规则隔离)。",
+    "开启后,该渠道请求 Claude 时将强制追加 ?beta=true(无需客户端手动传参)": "开启后,该渠道请求 Claude 时将强制追加 ?beta=true(无需客户端手动传参)",
+    "开启后,违规请求将额外扣费。": "开启后,违规请求将额外扣费。",
+    "开启后不限制:必须设置模型倍率": "开启后不限制:必须设置模型倍率",
+    "开启后未登录用户无法访问模型广场": "开启后未登录用户无法访问模型广场",
+    "开启批量操作": "开启批量操作",
+    "开始": "开始",
+    "开始同步": "开始同步",
+    "开始批量测试 ${count} 个模型,已清空上次结果...": "开始批量测试 ${count} 个模型,已清空上次结果...",
+    "开始时间": "开始时间",
+    "异步任务退款": "异步任务退款",
+    "张图片": "张图片",
+    "弱变换": "弱变换",
+    "强制将响应格式化为 OpenAI 标准格式(只适用于OpenAI渠道类型)": "强制将响应格式化为 OpenAI 标准格式(只适用于OpenAI渠道类型)",
+    "强制格式化": "强制格式化",
+    "强制要求": "强制要求",
+    "强变换": "强变换",
+    "当上游通道返回错误中包含这些关键词时(不区分大小写),自动禁用通道": "当上游通道返回错误中包含这些关键词时(不区分大小写),自动禁用通道",
+    "当前 API 密钥已过期,请在设置中更新。": "当前 API 密钥已过期,请在设置中更新。",
+    "当前 Ollama 版本为 ${version}": "当前 Ollama 版本为 ${version}",
+    "当前仅 OpenAI / Claude 语义支持缓存 token 统计,其他通道将隐藏 token 相关字段。": "当前仅 OpenAI / Claude 语义支持缓存 token 统计,其他通道将隐藏 token 相关字段。",
+    "当前余额": "当前余额",
+    "当前值": "当前值",
+    "当前值不是合法 JSON,无法格式化": "当前值不是合法 JSON,无法格式化",
+    "当前分组为 auto,会自动选择最优分组,当一个组不可用时自动降级到下一个组(熔断机制)": "当前分组为 auto,会自动选择最优分组,当一个组不可用时自动降级到下一个组(熔断机制)",
+    "当前剩余": "当前剩余",
+    "当前参数覆盖不是合法的 JSON": "当前参数覆盖不是合法的 JSON",
+    "当前旧格式 JSON 不合法,无法追加模板": "当前旧格式 JSON 不合法,无法追加模板",
+    "当前旧格式不是 JSON 对象,无法追加模板": "当前旧格式不是 JSON 对象,无法追加模板",
+    "当前时间": "当前时间",
+    "当前未开启Midjourney回调,部分项目可能无法获得绘图结果,可在运营设置中开启。": "当前未开启Midjourney回调,部分项目可能无法获得绘图结果,可在运营设置中开启。",
+    "当前查看的分组为:{{group}},倍率为:{{ratio}}": "当前查看的分组为:{{group}},倍率为:{{ratio}}",
+    "当前模型列表为该标签下所有渠道模型列表最长的一个,并非所有渠道的并集,请注意可能导致某些渠道模型丢失。": "当前模型列表为该标签下所有渠道模型列表最长的一个,并非所有渠道的并集,请注意可能导致某些渠道模型丢失。",
+    "当前版本": "当前版本",
+    "当前状态": "当前状态",
+    "当前缓存大小": "当前缓存大小",
+    "当前规则不支持写入到该位置": "当前规则不支持写入到该位置",
+    "当前规则未设置参数覆盖模板": "当前规则未设置参数覆盖模板",
+    "当前计费": "当前计费",
+    "当前设备不支持 Passkey": "当前设备不支持 Passkey",
+    "当前设置类型: ": "当前设置类型: ",
+    "当前跟随系统": "当前跟随系统",
+    "当前配置无法连接到 io.net。": "当前配置无法连接到 io.net。",
+    "当模型没有设置价格时仍接受调用,仅当您信任该网站时使用,可能会产生高额费用": "当模型没有设置价格时仍接受调用,仅当您信任该网站时使用,可能会产生高额费用",
+    "当运行通道全部测试时,超过此时间将自动禁用通道": "当运行通道全部测试时,超过此时间将自动禁用通道",
+    "当钱包或订阅剩余额度低于此数值时,系统将通过选择的方式发送通知": "当钱包或订阅剩余额度低于此数值时,系统将通过选择的方式发送通知",
+    "待使用收益": "待使用收益",
+    "待部署": "待部署",
+    "微信": "微信",
+    "微信公众号二维码图片链接": "微信公众号二维码图片链接",
+    "微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)": "微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)",
+    "微信扫码登录": "微信扫码登录",
+    "微信账户绑定成功!": "微信账户绑定成功!",
+    "必填。对请求的 model 名称进行匹配,任意一条匹配即命中该规则。": "必填。对请求的 model 名称进行匹配,任意一条匹配即命中该规则。",
+    "必须全部满足(AND)": "必须全部满足(AND)",
+    "必须是有效的 JSON 字符串数组,例如:[\"g1\",\"g2\"]": "必须是有效的 JSON 字符串数组,例如:[\"g1\",\"g2\"]",
+    "忘记密码?": "忘记密码?",
+    "快速开始": "快速开始",
+    "快速选择": "快速选择",
+    "思考中...": "思考中...",
+    "思考内容转换": "思考内容转换",
+    "思考过程": "思考过程",
+    "思考适配 BudgetTokens 百分比": "思考适配 BudgetTokens 百分比",
+    "思考预算占比": "思考预算占比",
+    "性能指标": "性能指标",
+    "性能监控": "性能监控",
+    "性能设置": "性能设置",
+    "总 GPU 小时": "总 GPU 小时",
+    "总价:文字价格 {{textPrice}} + 音频价格 {{audioPrice}} = {{symbol}}{{total}}": "总价:文字价格 {{textPrice}} + 音频价格 {{audioPrice}} = {{symbol}}{{total}}",
+    "总分配内存": "总分配内存",
+    "总密钥数": "总密钥数",
+    "总收益": "总收益",
+    "总计": "总计",
+    "总额度": "总额度",
+    "您可以个性化设置侧边栏的要显示功能": "您可以个性化设置侧边栏的要显示功能",
+    "您可以在上方拉取需要的模型": "您可以在上方拉取需要的模型",
+    "您无权访问此页面,请联系管理员": "您无权访问此页面,请联系管理员",
+    "您正在使用 MySQL 数据库。MySQL 是一个可靠的关系型数据库管理系统,适合生产环境使用。": "您正在使用 MySQL 数据库。MySQL 是一个可靠的关系型数据库管理系统,适合生产环境使用。",
+    "您正在使用 PostgreSQL 数据库。PostgreSQL 是一个功能强大的开源关系型数据库系统,提供了出色的可靠性和数据完整性,适合生产环境使用。": "您正在使用 PostgreSQL 数据库。PostgreSQL 是一个功能强大的开源关系型数据库系统,提供了出色的可靠性和数据完整性,适合生产环境使用。",
+    "您正在使用 SQLite 数据库。如果您在容器环境中运行,请确保已正确设置数据库文件的持久化映射,否则容器重启后所有数据将丢失!": "您正在使用 SQLite 数据库。如果您在容器环境中运行,请确保已正确设置数据库文件的持久化映射,否则容器重启后所有数据将丢失!",
+    "您正在删除自己的帐户,将清空所有数据且不可恢复": "您正在删除自己的帐户,将清空所有数据且不可恢复",
+    "您的数据将安全地存储在本地计算机上。所有配置、用户信息和使用记录都会自动保存,关闭应用后不会丢失。": "您的数据将安全地存储在本地计算机上。所有配置、用户信息和使用记录都会自动保存,关闭应用后不会丢失。",
+    "您确定要取消密码登录功能吗?这可能会影响用户的登录方式。": "您确定要取消密码登录功能吗?这可能会影响用户的登录方式。",
+    "您需要先启用两步验证或 Passkey 才能执行此操作": "您需要先启用两步验证或 Passkey 才能执行此操作",
+    "您需要先启用两步验证或 Passkey 才能查看敏感信息。": "您需要先启用两步验证或 Passkey 才能查看敏感信息。",
+    "想起来了?": "想起来了?",
+    "成功": "成功",
+    "成功兑换额度:": "成功兑换额度:",
+    "成功后切换亲和": "成功后切换亲和",
+    "成功时自动启用通道": "成功时自动启用通道",
+    "我已了解禁用两步验证将永久删除所有相关设置和备用码,此操作不可撤销": "我已了解禁用两步验证将永久删除所有相关设置和备用码,此操作不可撤销",
+    "我已阅读并同意": "我已阅读并同意",
+    "我的订阅": "我的订阅",
+    "或": "或",
+    "或其兼容new-api-worker格式的其他版本": "或其兼容new-api-worker格式的其他版本",
+    "或手动输入密钥:": "或手动输入密钥:",
+    "所有上游数据均可信": "所有上游数据均可信",
+    "所有密钥已复制到剪贴板": "所有密钥已复制到剪贴板",
+    "所有编辑均为覆盖操作,留空则不更改": "所有编辑均为覆盖操作,留空则不更改",
+    "所选模板已存在": "所选模板已存在",
+    "手动禁用": "手动禁用",
+    "手动编辑": "手动编辑",
+    "手动输入": "手动输入",
+    "打开 CC Switch": "打开 CC Switch",
+    "打开侧边栏": "打开侧边栏",
+    "打开授权页面": "打开授权页面",
+    "扣费": "扣费",
+    "执行 GC": "执行 GC",
+    "执行中": "执行中",
+    "扫描二维码": "扫描二维码",
+    "批量创建": "批量创建",
+    "批量创建时会在名称后自动添加随机后缀": "批量创建时会在名称后自动添加随机后缀",
+    "批量创建模式下仅支持文件上传,不支持手动输入": "批量创建模式下仅支持文件上传,不支持手动输入",
+    "批量删除": "批量删除",
+    "批量删除令牌": "批量删除令牌",
+    "批量删除失败": "批量删除失败",
+    "批量删除成功": "批量删除成功",
+    "批量删除模型": "批量删除模型",
+    "批量操作": "批量操作",
+    "批量测试${count}个模型": "批量测试${count}个模型",
+    "批量测试完成!成功: ${success}, 失败: ${fail}, 总计: ${total}": "批量测试完成!成功: ${success}, 失败: ${fail}, 总计: ${total}",
+    "批量测试已停止": "批量测试已停止",
+    "批量测试过程中发生错误: ": "批量测试过程中发生错误: ",
+    "批量设置": "批量设置",
+    "批量设置成功": "批量设置成功",
+    "批量设置标签": "批量设置标签",
+    "批量设置模型参数": "批量设置模型参数",
+    "折": "折",
+    "拉取中...": "拉取中...",
+    "拉取新模型": "拉取新模型",
+    "拉取模型": "拉取模型",
+    "拉取进度": "拉取进度",
+    "拒绝提示模板(可选)": "拒绝提示模板(可选)",
+    "拦截原因": "拦截原因",
+    "按K显示单位": "按K显示单位",
+    "按价格设置": "按价格设置",
+    "按倍率类型筛选": "按倍率类型筛选",
+    "按倍率设置": "按倍率设置",
+    "按次计费": "按次计费",
+    "按照如下格式输入:AccessKey|SecretAccessKey|Region": "按照如下格式输入:AccessKey|SecretAccessKey|Region",
+    "按量计费": "按量计费",
+    "按顺序替换content中的变量占位符": "按顺序替换content中的变量占位符",
+    "换脸": "换脸",
+    "授权,需在遵守": "授权,需在遵守",
+    "授权失败": "授权失败",
+    "排序": "排序",
+    "排队中": "排队中",
+    "接受未设置价格模型": "接受未设置价格模型",
+    "接口凭证": "接口凭证",
+    "接口密钥已过期": "接口密钥已过期",
+    "控制台": "控制台",
+    "控制台区域": "控制台区域",
+    "控制输出的随机性和创造性": "控制输出的随机性和创造性",
+    "控制顶栏模块显示状态,全局生效": "控制顶栏模块显示状态,全局生效",
+    "推荐": "推荐",
+    "推荐:用户可以选择是否使用指纹等验证": "推荐:用户可以选择是否使用指纹等验证",
+    "推荐使用(用户可选)": "推荐使用(用户可选)",
+    "描述": "描述",
+    "提交": "提交",
+    "提交时间": "提交时间",
+    "提交结果": "提交结果",
+    "提升": "提升",
+    "提示": "提示",
+    "提示 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "提示 {{input}} tokens / 1M tokens * {{symbol}}{{price}}",
+    "提示:如需备份数据,只需复制上述目录即可": "提示:如需备份数据,只需复制上述目录即可",
+    "提示:此处配置仅用于控制「模型广场」对用户的展示效果,不会影响模型的实际调用与路由。若需配置真实调用行为,请前往「渠道管理」进行设置。": "提示:此处配置仅用于控制「模型广场」对用户的展示效果,不会影响模型的实际调用与路由。若需配置真实调用行为,请前往「渠道管理」进行设置。",
+    "提示:该功能为测试版,未来配置结构与功能行为可能发生变更,请勿在生产环境使用。": "提示:该功能为测试版,未来配置结构与功能行为可能发生变更,请勿在生产环境使用。",
+    "提示:语言偏好会同步到您登录的所有设备,并影响API返回的错误消息语言。": "提示:语言偏好会同步到您登录的所有设备,并影响API返回的错误消息语言。",
+    "提示:链接中的{key}将被替换为API密钥,{address}将被替换为服务器地址": "提示:链接中的{key}将被替换为API密钥,{address}将被替换为服务器地址",
+    "提示价格:{{symbol}}{{price}} / 1M tokens": "提示价格:{{symbol}}{{price}} / 1M tokens",
+    "提示缓存倍率": "提示缓存倍率",
+    "搜索供应商": "搜索供应商",
+    "搜索关键字": "搜索关键字",
+    "搜索失败": "搜索失败",
+    "搜索字段名 / 中文说明": "搜索字段名 / 中文说明",
+    "搜索无结果": "搜索无结果",
+    "搜索日志内容": "搜索日志内容",
+    "搜索条件": "搜索条件",
+    "搜索模型": "搜索模型",
+    "搜索模型...": "搜索模型...",
+    "搜索模型名称": "搜索模型名称",
+    "搜索模型失败": "搜索模型失败",
+    "搜索渠道名称或地址": "搜索渠道名称或地址",
+    "搜索聊天应用名称": "搜索聊天应用名称",
+    "搜索规则(类型 / 路径 / 来源 / 目标)": "搜索规则(类型 / 路径 / 来源 / 目标)",
+    "搜索部署名称": "搜索部署名称",
+    "操作": "操作",
+    "操作失败": "操作失败",
+    "操作失败,请重试": "操作失败,请重试",
+    "操作成功完成!": "操作成功完成!",
+    "操作暂时被禁用": "操作暂时被禁用",
+    "操作类型": "操作类型",
+    "操练场": "操练场",
+    "操练场和聊天功能": "操练场和聊天功能",
+    "支付": "支付",
+    "支付地址": "支付地址",
+    "支付失败": "支付失败",
+    "支付宝": "支付宝",
+    "支付方式": "支付方式",
+    "支付渠道": "支付渠道",
+    "支付设置": "支付设置",
+    "支付请求失败": "支付请求失败",
+    "支付金额": "支付金额",
+    "支持 Ctrl+V 粘贴图片": "支持 Ctrl+V 粘贴图片",
+    "支持CIDR格式,如:8.8.8.8, 192.168.1.0/24": "支持CIDR格式,如:8.8.8.8, 192.168.1.0/24",
+    "支持HTTP和HTTPS,填写Gotify服务器的完整URL地址": "支持HTTP和HTTPS,填写Gotify服务器的完整URL地址",
+    "支持HTTP和HTTPS,模板变量: {{title}} (通知标题), {{content}} (通知内容)": "支持HTTP和HTTPS,模板变量: {{title}} (通知标题), {{content}} (通知内容)",
+    "支持众多的大模型供应商": "支持众多的大模型供应商",
+    "支持单个端口和端口范围,如:80, 443, 8000-8999": "支持单个端口和端口范围,如:80, 443, 8000-8999",
+    "支持变量:": "支持变量:",
+    "支持周期性重置套餐权益额度": "支持周期性重置套餐权益额度",
+    "支持填写单个状态码或范围(含首尾),使用逗号分隔": "支持填写单个状态码或范围(含首尾),使用逗号分隔",
+    "支持填写单个状态码或范围(含首尾),使用逗号分隔;504 和 524 始终不重试,不受此处配置影响": "支持填写单个状态码或范围(含首尾),使用逗号分隔;504 和 524 始终不重试,不受此处配置影响",
+    "支持备份": "支持备份",
+    "支持拉取 Ollama 官方模型库中的所有模型,拉取过程可能需要几分钟时间": "支持拉取 Ollama 官方模型库中的所有模型,拉取过程可能需要几分钟时间",
+    "支持搜索用户的 ID、用户名、显示名称和邮箱地址": "支持搜索用户的 ID、用户名、显示名称和邮箱地址",
+    "支持的图像模型": "支持的图像模型",
+    "支持通配符格式,如:example.com, *.api.example.com": "支持通配符格式,如:example.com, *.api.example.com",
+    "支持逻辑 and/or 与嵌套 groups;操作符支持 eq/ne/gt/gte/lt/lte/in/not_in/contains/exists": "支持逻辑 and/or 与嵌套 groups;操作符支持 eq/ne/gt/gte/lt/lte/in/not_in/contains/exists",
+    "收益": "收益",
+    "收益统计": "收益统计",
+    "收起": "收起",
+    "收起侧边栏": "收起侧边栏",
+    "收起内容": "收起内容",
+    "放大": "放大",
+    "放大编辑": "放大编辑",
+    "敏感信息不会发送到前端显示": "敏感信息不会发送到前端显示",
+    "数据传输中断": "数据传输中断",
+    "数据存储位置:": "数据存储位置:",
+    "数据库信息": "数据库信息",
+    "数据库检查": "数据库检查",
+    "数据库类型": "数据库类型",
+    "数据库警告": "数据库警告",
+    "数据格式错误": "数据格式错误",
+    "数据看板": "数据看板",
+    "数据看板更新间隔": "数据看板更新间隔",
+    "数据看板设置": "数据看板设置",
+    "数据看板默认时间粒度": "数据看板默认时间粒度",
+    "数据管理和日志查看": "数据管理和日志查看",
+    "文件上传": "文件上传",
+    "文件搜索价格:{{symbol}}{{price}} / 1K 次": "文件搜索价格:{{symbol}}{{price}} / 1K 次",
+    "文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{price}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}} = {{symbol}}{{total}}": "文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{price}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}} = {{symbol}}{{total}}",
+    "文字提示 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}} = {{symbol}}{{total}}": "文字提示 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}} = {{symbol}}{{total}}",
+    "文字输入": "文字输入",
+    "文字输出": "文字输出",
+    "文心一言": "文心一言",
+    "文档": "文档",
+    "文档地址": "文档地址",
+    "文生视频": "文生视频",
+    "新增 Key 来源": "新增 Key 来源",
+    "新增供应商": "新增供应商",
+    "新增失败": "新增失败",
+    "新增成功": "新增成功",
+    "新增条件": "新增条件",
+    "新增规则": "新增规则",
+    "新增订阅": "新增订阅",
+    "新密码": "新密码",
+    "新密码需要和原密码不一致!": "新密码需要和原密码不一致!",
+    "新建": "新建",
+    "新建套餐": "新建套餐",
+    "新建容器": "新建容器",
+    "新建容器部署": "新建容器部署",
+    "新建数量": "新建数量",
+    "新建组": "新建组",
+    "新格式(支持条件判断与json自定义):": "新格式(支持条件判断与json自定义):",
+    "新格式(规则 + 条件)": "新格式(规则 + 条件)",
+    "新格式模板": "新格式模板",
+    "新版本": "新版本",
+    "新用户使用邀请码奖励额度": "新用户使用邀请码奖励额度",
+    "新用户初始额度": "新用户初始额度",
+    "新的备用恢复代码": "新的备用恢复代码",
+    "新的备用码已生成": "新的备用码已生成",
+    "新获取的模型": "新获取的模型",
+    "新额度:": "新额度:",
+    "无": "无",
+    "无GPU": "无GPU",
+    "无冲突项": "无冲突项",
+    "无效的部署信息": "无效的部署信息",
+    "无效的重置链接,请重新发起密码重置请求": "无效的重置链接,请重新发起密码重置请求",
+    "无法发起 Passkey 注册": "无法发起 Passkey 注册",
+    "无法复制到剪贴板,请手动复制": "无法复制到剪贴板,请手动复制",
+    "无法添加图片": "无法添加图片",
+    "无法获取容器详情": "无法获取容器详情",
+    "无法连接 io.net": "无法连接 io.net",
+    "无生效": "无生效",
+    "无邀请人": "无邀请人",
+    "无限制": "无限制",
+    "无限额度": "无限额度",
+    "日": "日",
+    "日志已下载": "日志已下载",
+    "日志已加载": "日志已加载",
+    "日志已复制到剪贴板": "日志已复制到剪贴板",
+    "日志流": "日志流",
+    "日志清理失败:": "日志清理失败:",
+    "日志类型": "日志类型",
+    "日志设置": "日志设置",
+    "日志详情": "日志详情",
+    "旧格式(JSON 对象)": "旧格式(JSON 对象)",
+    "旧格式(直接覆盖):": "旧格式(直接覆盖):",
+    "旧格式必须是 JSON 对象": "旧格式必须是 JSON 对象",
+    "旧格式模板": "旧格式模板",
+    "旧的备用码已失效,请保存新的备用码": "旧的备用码已失效,请保存新的备用码",
+    "早上好": "早上好",
+    "时间": "时间",
+    "时间信息": "时间信息",
+    "时间粒度": "时间粒度",
+    "易支付": "易支付",
+    "易支付商户ID": "易支付商户ID",
+    "易支付商户密钥": "易支付商户密钥",
+    "是": "是",
+    "是否为企业账户": "是否为企业账户",
+    "是否同时重置对话消息?选择\"是\"将清空所有对话记录并恢复默认示例;选择\"否\"将保留当前对话记录。": "是否同时重置对话消息?选择\"是\"将清空所有对话记录并恢复默认示例;选择\"否\"将保留当前对话记录。",
+    "是否将该订单标记为成功并为用户入账?": "是否将该订单标记为成功并为用户入账?",
+    "是否确认充值?": "是否确认充值?",
+    "是否自动禁用": "是否自动禁用",
+    "是否要求指纹/面容等生物识别": "是否要求指纹/面容等生物识别",
+    "显示倍率": "显示倍率",
+    "显示最新20条": "显示最新20条",
+    "显示名称": "显示名称",
+    "显示名称字段(可选)": "显示名称字段(可选)",
+    "显示完整内容": "显示完整内容",
+    "显示操作项": "显示操作项",
+    "显示更多": "显示更多",
+    "显示第": "显示第",
+    "显示设置": "显示设置",
+    "显示调试": "显示调试",
+    "晚上好": "晚上好",
+    "普通环境变量": "普通环境变量",
+    "普通用户": "普通用户",
+    "智能体ID": "智能体ID",
+    "智能熔断": "智能熔断",
+    "智谱": "智谱",
+    "暂存错误": "暂存错误",
+    "暂无": "暂无",
+    "暂无API信息": "暂无API信息",
+    "暂无SSE响应数据": "暂无SSE响应数据",
+    "暂无产品配置": "暂无产品配置",
+    "暂无保存的配置": "暂无保存的配置",
+    "暂无充值记录": "暂无充值记录",
+    "暂无公告": "暂无公告",
+    "暂无匹配模型": "暂无匹配模型",
+    "暂无可复制 JSON": "暂无可复制 JSON",
+    "暂无可复制的版本信息": "暂无可复制的版本信息",
+    "暂无可展示数据": "暂无可展示数据",
+    "暂无可用的支付方式,请联系管理员配置": "暂无可用的支付方式,请联系管理员配置",
+    "暂无可购买套餐": "暂无可购买套餐",
+    "暂无响应数据": "暂无响应数据",
+    "暂无容器信息": "暂无容器信息",
+    "暂无容器详情": "暂无容器详情",
+    "暂无密钥数据": "暂无密钥数据",
+    "暂无差异化倍率显示": "暂无差异化倍率显示",
+    "暂无已绑定项": "暂无已绑定项",
+    "暂无常见问答": "暂无常见问答",
+    "暂无成功模型": "暂无成功模型",
+    "暂无数据": "暂无数据",
+    "暂无数据,点击下方按钮添加键值对": "暂无数据,点击下方按钮添加键值对",
+    "暂无日志": "暂无日志",
+    "暂无日志可下载": "暂无日志可下载",
+    "暂无日志可复制": "暂无日志可复制",
+    "暂无机密环境变量": "暂无机密环境变量",
+    "暂无模型": "暂无模型",
+    "暂无模型描述": "暂无模型描述",
+    "暂无环境变量": "暂无环境变量",
+    "暂无监控数据": "暂无监控数据",
+    "暂无系统公告": "暂无系统公告",
+    "暂无缺失模型": "暂无缺失模型",
+    "暂无自定义 OAuth 提供商": "暂无自定义 OAuth 提供商",
+    "暂无订阅套餐": "暂无订阅套餐",
+    "暂无订阅记录": "暂无订阅记录",
+    "暂无请求数据": "暂无请求数据",
+    "暂无项目": "暂无项目",
+    "暂无预填组": "暂无预填组",
+    "暴露倍率接口": "暴露倍率接口",
+    "更多信息请参考": "更多信息请参考",
+    "更多参数请参考": "更多参数请参考",
+    "更好的价格,更好的稳定性,只需要将模型基址替换为:": "更好的价格,更好的稳定性,只需要将模型基址替换为:",
+    "更新": "更新",
+    "更新 Creem 设置": "更新 Creem 设置",
+    "更新 Stripe 设置": "更新 Stripe 设置",
+    "更新SSRF防护设置": "更新SSRF防护设置",
+    "更新Worker设置": "更新Worker设置",
+    "更新令牌信息": "更新令牌信息",
+    "更新兑换码信息": "更新兑换码信息",
+    "更新失败": "更新失败",
+    "更新失败,请检查输入信息": "更新失败,请检查输入信息",
+    "更新套餐信息": "更新套餐信息",
+    "更新容器配置": "更新容器配置",
+    "更新容器配置可能会导致容器重启,请确保在合适的时间进行此操作。": "更新容器配置可能会导致容器重启,请确保在合适的时间进行此操作。",
+    "更新成功": "更新成功",
+    "更新所有已启用通道余额": "更新所有已启用通道余额",
+    "更新支付设置": "更新支付设置",
+    "更新时间": "更新时间",
+    "更新服务器地址": "更新服务器地址",
+    "更新模型信息": "更新模型信息",
+    "更新渠道信息": "更新渠道信息",
+    "更新部署名称失败": "更新部署名称失败",
+    "更新配置": "更新配置",
+    "更新配置后,容器可能需要重启以应用新的设置。请确保您了解这些更改的影响。": "更新配置后,容器可能需要重启以应用新的设置。请确保您了解这些更改的影响。",
+    "更新配置失败": "更新配置失败",
+    "更新预填组": "更新预填组",
+    "月": "月",
+    "有 Reasoning": "有 Reasoning",
+    "有效期": "有效期",
+    "有效期单位": "有效期单位",
+    "有效期数值": "有效期数值",
+    "有效期设置": "有效期设置",
+    "服务可用性": "服务可用性",
+    "服务商": "服务商",
+    "服务器地址": "服务器地址",
+    "服务显示名称": "服务显示名称",
+    "未匹配到模型,按回车键可将「{{name}}」作为自定义模型名添加": "未匹配到模型,按回车键可将「{{name}}」作为自定义模型名添加",
+    "未发现新增模型": "未发现新增模型",
+    "未发现重复密钥": "未发现重复密钥",
+    "未启动": "未启动",
+    "未启用": "未启用",
+    "未命名": "未命名",
+    "未在 Discovery 响应中找到可用的 OAuth 端点": "未在 Discovery 响应中找到可用的 OAuth 端点",
+    "未备份": "未备份",
+    "未开始": "未开始",
+    "未找到匹配的模型": "未找到匹配的模型",
+    "未找到可用的容器访问地址": "未找到可用的容器访问地址",
+    "未找到差异化倍率,无需同步": "未找到差异化倍率,无需同步",
+    "未授权": "未授权",
+    "未提交": "未提交",
+    "未检测到 Fluent 容器": "未检测到 Fluent 容器",
+    "未检测到 FluentRead(流畅阅读),请确认扩展已启用": "未检测到 FluentRead(流畅阅读),请确认扩展已启用",
+    "未测试": "未测试",
+    "未添加附加条件时,仅使用上方 type 进行清理。": "未添加附加条件时,仅使用上方 type 进行清理。",
+    "未登录或登录已过期,请重新登录": "未登录或登录已过期,请重新登录",
+    "未知": "未知",
+    "未知供应商": "未知供应商",
+    "未知品牌": "未知品牌",
+    "未知模型": "未知模型",
+    "未知渠道": "未知渠道",
+    "未知状态": "未知状态",
+    "未知类型": "未知类型",
+    "未知身份": "未知身份",
+    "未知部署": "未知部署",
+    "未知错误": "未知错误",
+    "未绑定": "未绑定",
+    "未获取到授权码": "未获取到授权码",
+    "未设置": "未设置",
+    "未设置倍率模型": "未设置倍率模型",
+    "未设置路径": "未设置路径",
+    "未配置模型": "未配置模型",
+    "未配置的模型列表": "未配置的模型列表",
+    "本地": "本地",
+    "本地数据存储": "本地数据存储",
+    "本地计费": "本地计费",
+    "本月获得": "本月获得",
+    "本设备:手机指纹/面容,外接:USB安全密钥": "本设备:手机指纹/面容,外接:USB安全密钥",
+    "本设备内置": "本设备内置",
+    "本项目根据": "本项目根据",
+    "机密环境变量": "机密环境变量",
+    "机密环境变量将被加密存储,适用于存储密码、API密钥等敏感信息。": "机密环境变量将被加密存储,适用于存储密码、API密钥等敏感信息。",
+    "机密环境变量说明": "机密环境变量说明",
+    "权重": "权重",
+    "权限设置": "权限设置",
+    "条": "条",
+    "条 - 第": "条 - 第",
+    "条,共": "条,共",
+    "条件取反": "条件取反",
+    "条件数": "条件数",
+    "条件规则": "条件规则",
+    "条件项设置": "条件项设置",
+    "条日志已清理!": "条日志已清理!",
+    "来源": "来源",
+    "来源于 IO.NET 部署": "来源于 IO.NET 部署",
+    "来源端点": "来源端点",
+    "来自模型重定向,尚未加入模型列表": "来自模型重定向,尚未加入模型列表",
+    "某些配置更改可能需要几分钟才能生效。": "某些配置更改可能需要几分钟才能生效。",
+    "查看": "查看",
+    "查看关联部署": "查看关联部署",
+    "查看图片": "查看图片",
+    "查看密钥": "查看密钥",
+    "查看所有可用的AI模型供应商,包括众多知名供应商的模型。": "查看所有可用的AI模型供应商,包括众多知名供应商的模型。",
+    "查看日志": "查看日志",
+    "查看渠道密钥": "查看渠道密钥",
+    "查看详情": "查看详情",
+    "查询": "查询",
+    "标签": "标签",
+    "标签不能为空!": "标签不能为空!",
+    "标签信息": "标签信息",
+    "标签名称": "标签名称",
+    "标签的基本配置": "标签的基本配置",
+    "标签组": "标签组",
+    "标签聚合": "标签聚合",
+    "标签聚合模式": "标签聚合模式",
+    "标识颜色": "标识颜色",
+    "核采样,控制词汇选择的多样性": "核采样,控制词汇选择的多样性",
+    "根据 Anthropic 协定,/v1/messages 的输入 tokens 仅统计非缓存输入,不包含缓存读取与缓存写入 tokens。": "根据 Anthropic 协定,/v1/messages 的输入 tokens 仅统计非缓存输入,不包含缓存读取与缓存写入 tokens。",
+    "根据模型名称和匹配规则查找模型元数据,优先级:精确 > 前缀 > 后缀 > 包含": "根据模型名称和匹配规则查找模型元数据,优先级:精确 > 前缀 > 后缀 > 包含",
+    "格式化": "格式化",
+    "格式化 JSON": "格式化 JSON",
+    "格式正确": "格式正确",
+    "格式示例:": "格式示例:",
+    "格式错误": "格式错误",
+    "检查更新": "检查更新",
+    "检测到 FluentRead(流畅阅读)": "检测到 FluentRead(流畅阅读)",
+    "检测到多个密钥,您可以单独复制每个密钥,或点击复制全部获取完整内容。": "检测到多个密钥,您可以单独复制每个密钥,或点击复制全部获取完整内容。",
+    "检测到该消息后有AI回复,是否删除后续回复并重新生成?": "检测到该消息后有AI回复,是否删除后续回复并重新生成?",
+    "检测必须等待绘图成功才能进行放大等操作": "检测必须等待绘图成功才能进行放大等操作",
+    "模型": "模型",
+    "模型: {{ratio}}": "模型: {{ratio}}",
+    "模型专用区域": "模型专用区域",
+    "模型价格": "模型价格",
+    "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}",
+    "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}",
+    "模型倍率": "模型倍率",
+    "模型倍率 {{modelRatio}}": "模型倍率 {{modelRatio}}",
+    "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}",
+    "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}},Web 搜索调用 {{webSearchCallCount}} 次": "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}},Web 搜索调用 {{webSearchCallCount}} 次",
+    "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},图片输入倍率 {{imageRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},图片输入倍率 {{imageRatio}},{{ratioType}} {{ratio}}",
+    "模型倍率值": "模型倍率值",
+    "模型倍率和补全倍率": "模型倍率和补全倍率",
+    "模型倍率和补全倍率同时设置": "模型倍率和补全倍率同时设置",
+    "模型倍率设置": "模型倍率设置",
+    "模型关键字": "模型关键字",
+    "模型列表已复制到剪贴板": "模型列表已复制到剪贴板",
+    "模型列表已更新": "模型列表已更新",
+    "模型列表已追加更新": "模型列表已追加更新",
+    "模型创建成功!": "模型创建成功!",
+    "模型删除失败": "模型删除失败",
+    "模型删除失败: {{error}}": "模型删除失败: {{error}}",
+    "模型删除成功": "模型删除成功",
+    "模型名称": "模型名称",
+    "模型名称已存在": "模型名称已存在",
+    "模型固定价格": "模型固定价格",
+    "模型图标": "模型图标",
+    "模型定价,需要登录访问": "模型定价,需要登录访问",
+    "模型广场": "模型广场",
+    "模型拉取失败: {{error}}": "模型拉取失败: {{error}}",
+    "模型支持的接口端点信息": "模型支持的接口端点信息",
+    "模型数据分析": "模型数据分析",
+    "模型映射必须是合法的 JSON 格式!": "模型映射必须是合法的 JSON 格式!",
+    "模型更新成功!": "模型更新成功!",
+    "模型未加入列表,可能无法调用": "模型未加入列表,可能无法调用",
+    "模型正则": "模型正则",
+    "模型正则(每行一个)": "模型正则(每行一个)",
+    "模型正则不能为空": "模型正则不能为空",
+    "模型消耗分布": "模型消耗分布",
+    "模型消耗趋势": "模型消耗趋势",
+    "模型版本": "模型版本",
+    "模型的详细描述和基本特性": "模型的详细描述和基本特性",
+    "模型相关设置": "模型相关设置",
+    "模型社区需要大家的共同维护,如发现数据有误或想贡献新的模型数据,请访问:": "模型社区需要大家的共同维护,如发现数据有误或想贡献新的模型数据,请访问:",
+    "模型管理": "模型管理",
+    "模型组": "模型组",
+    "模型补全倍率(仅对自定义模型有效)": "模型补全倍率(仅对自定义模型有效)",
+    "模型请求速率限制": "模型请求速率限制",
+    "模型调用次数占比": "模型调用次数占比",
+    "模型调用次数排行": "模型调用次数排行",
+    "模型选择和映射设置": "模型选择和映射设置",
+    "模型部署": "模型部署",
+    "模型部署服务未启用": "模型部署服务未启用",
+    "模型部署管理": "模型部署管理",
+    "模型部署设置": "模型部署设置",
+    "模型配置": "模型配置",
+    "模型重定向": "模型重定向",
+    "模型重定向里的下列模型尚未添加到“模型”列表,调用时会因为缺少可用模型而失败:": "模型重定向里的下列模型尚未添加到“模型”列表,调用时会因为缺少可用模型而失败:",
+    "模型限制列表": "模型限制列表",
+    "模式": "模式",
+    "模板": "模板",
+    "模板应用失败": "模板应用失败",
+    "模板示例": "模板示例",
+    "模糊搜索模型名称": "模糊搜索模型名称",
+    "次": "次",
+    "欢迎使用,请完成以下设置以开始使用系统": "欢迎使用,请完成以下设置以开始使用系统",
+    "欧元": "欧元",
+    "正在加载可用部署位置...": "正在加载可用部署位置...",
+    "正在加载签到状态...": "正在加载签到状态...",
+    "正在处理大内容...": "正在处理大内容...",
+    "正在提交": "正在提交",
+    "正在构造请求体预览...": "正在构造请求体预览...",
+    "正在检查 io.net 连接...": "正在检查 io.net 连接...",
+    "正在测试第 ${current} - ${end} 个模型 (共 ${total} 个)": "正在测试第 ${current} - ${end} 个模型 (共 ${total} 个)",
+    "正在跟随最新日志": "正在跟随最新日志",
+    "正在跳转...": "正在跳转...",
+    "此代理仅用于图片请求转发,Webhook通知发送等,AI API请求仍然由服务器直接发出,可在渠道设置中单独配置代理": "此代理仅用于图片请求转发,Webhook通知发送等,AI API请求仍然由服务器直接发出,可在渠道设置中单独配置代理",
+    "此修改将不可逆": "此修改将不可逆",
+    "此操作不可恢复,请仔细确认时间后再操作!": "此操作不可恢复,请仔细确认时间后再操作!",
+    "此操作不可撤销,将永久删除已自动禁用的密钥": "此操作不可撤销,将永久删除已自动禁用的密钥",
+    "此操作不可撤销,将永久删除该密钥": "此操作不可撤销,将永久删除该密钥",
+    "此操作不可逆,所有数据将被永久删除": "此操作不可逆,所有数据将被永久删除",
+    "此操作具有风险,请确认要继续执行": "此操作具有风险,请确认要继续执行",
+    "此操作将启用用户账户": "此操作将启用用户账户",
+    "此操作将提升用户的权限级别": "此操作将提升用户的权限级别",
+    "此操作将禁用用户账户": "此操作将禁用用户账户",
+    "此操作将禁用该用户当前的两步验证配置,下次登录将不再强制输入验证码,直到用户重新启用。": "此操作将禁用该用户当前的两步验证配置,下次登录将不再强制输入验证码,直到用户重新启用。",
+    "此操作将解绑用户当前的 Passkey,下次登录需要重新注册。": "此操作将解绑用户当前的 Passkey,下次登录需要重新注册。",
+    "此操作将降低用户的权限级别": "此操作将降低用户的权限级别",
+    "此支付方式最低充值金额为": "此支付方式最低充值金额为",
+    "此渠道由 IO.NET 自动同步,类型、密钥和 API 地址已锁定。": "此渠道由 IO.NET 自动同步,类型、密钥和 API 地址已锁定。",
+    "此设置用于系统内部计算,默认值500000是为了精确到6位小数点设计,不推荐修改。": "此设置用于系统内部计算,默认值500000是为了精确到6位小数点设计,不推荐修改。",
+    "此页面仅显示未设置价格或倍率的模型,设置后将自动从列表中移除": "此页面仅显示未设置价格或倍率的模型,设置后将自动从列表中移除",
+    "此项可选,用于修改请求体中的模型名称,为一个 JSON 字符串,键为请求中模型名称,值为要替换的模型名称,例如:": "此项可选,用于修改请求体中的模型名称,为一个 JSON 字符串,键为请求中模型名称,值为要替换的模型名称,例如:",
+    "此项可选,用于修改请求体中的模型名称,为一个 JSON 字符串,键为请求中模型名称,值为要替换的模型名称,留空则不更改": "此项可选,用于修改请求体中的模型名称,为一个 JSON 字符串,键为请求中模型名称,值为要替换的模型名称,留空则不更改",
+    "此项可选,用于复写返回的状态码,仅影响本地判断,不修改返回到上游的状态码,比如将claude渠道的400错误复写为500(用于重试),请勿滥用该功能,例如:": "此项可选,用于复写返回的状态码,仅影响本地判断,不修改返回到上游的状态码,比如将claude渠道的400错误复写为500(用于重试),请勿滥用该功能,例如:",
+    "此项可选,用于覆盖请求参数。不支持覆盖 stream 参数": "此项可选,用于覆盖请求参数。不支持覆盖 stream 参数",
+    "此项可选,用于覆盖请求头参数": "此项可选,用于覆盖请求头参数",
+    "此项可选,用于通过自定义API地址来进行 API 调用,末尾不要带/v1和/": "此项可选,用于通过自定义API地址来进行 API 调用,末尾不要带/v1和/",
+    "每个用户最多可创建的令牌数量,默认 1000,设置过大可能会影响性能": "每个用户最多可创建的令牌数量,默认 1000,设置过大可能会影响性能",
+    "每周": "每周",
+    "每天": "每天",
+    "每容器GPU数": "每容器GPU数",
+    "每日仅可签到一次,请勿重复签到": "每日仅可签到一次,请勿重复签到",
+    "每日签到": "每日签到",
+    "每日签到可获得随机额度奖励": "每日签到可获得随机额度奖励",
+    "每月": "每月",
+    "每隔多少分钟测试一次所有通道": "每隔多少分钟测试一次所有通道",
+    "永不过期": "永不过期",
+    "永久删除您的两步验证设置": "永久删除您的两步验证设置",
+    "永久删除所有备用码(包括未使用的)": "永久删除所有备用码(包括未使用的)",
+    "没有匹配的字段": "没有匹配的字段",
+    "没有匹配的日志条目": "没有匹配的日志条目",
+    "没有匹配的规则": "没有匹配的规则",
+    "没有可用令牌用于填充": "没有可用令牌用于填充",
+    "没有找到匹配的模型": "没有找到匹配的模型",
+    "没有未设置的模型": "没有未设置的模型",
+    "没有条件时,默认总是执行该操作。": "没有条件时,默认总是执行该操作。",
+    "没有模型可以复制": "没有模型可以复制",
+    "没有账户?": "没有账户?",
+    "注 册": "注 册",
+    "注册": "注册",
+    "注册 Passkey": "注册 Passkey",
+    "注意": "注意",
+    "注意:JSON中重复的键只会保留最后一个同名键的值": "注意:JSON中重复的键只会保留最后一个同名键的值",
+    "注意非Chat API,请务必填写正确的API地址,否则可能导致无法使用": "注意非Chat API,请务必填写正确的API地址,否则可能导致无法使用",
+    "注销": "注销",
+    "注销成功!": "注销成功!",
+    "活跃文件": "活跃文件",
+    "活跃缓存数": "活跃缓存数",
+    "流": "流",
+    "流式": "流式",
+    "流式响应完成": "流式响应完成",
+    "流式输出": "流式输出",
+    "流量端口": "流量端口",
+    "浅色": "浅色",
+    "浅色模式": "浅色模式",
+    "测活": "测活",
+    "测试": "测试",
+    "测试中": "测试中",
+    "测试中...": "测试中...",
+    "测试单个渠道操作项目组": "测试单个渠道操作项目组",
+    "测试失败": "测试失败",
+    "测试失败:": "测试失败:",
+    "测试所有未手动禁用渠道": "测试所有未手动禁用渠道",
+    "测试所有渠道的最长响应时间": "测试所有渠道的最长响应时间",
+    "测试模式": "测试模式",
+    "测试连接": "测试连接",
+    "测速": "测速",
+    "消息优先级": "消息优先级",
+    "消息优先级,范围0-10,默认为5": "消息优先级,范围0-10,默认为5",
+    "消息已删除": "消息已删除",
+    "消息已复制到剪贴板": "消息已复制到剪贴板",
+    "消息已更新": "消息已更新",
+    "消息已编辑": "消息已编辑",
+    "消耗分布": "消耗分布",
+    "消耗趋势": "消耗趋势",
+    "消耗额度": "消耗额度",
+    "消费": "消费",
+    "深色": "深色",
+    "深色模式": "深色模式",
+    "添加": "添加",
+    "添加 OAuth 提供商": "添加 OAuth 提供商",
+    "添加API": "添加API",
+    "添加产品": "添加产品",
+    "添加令牌": "添加令牌",
+    "添加兑换码": "添加兑换码",
+    "添加公告": "添加公告",
+    "添加分类": "添加分类",
+    "添加后提交": "添加后提交",
+    "添加启动参数": "添加启动参数",
+    "添加启动命令": "添加启动命令",
+    "添加密钥环境变量": "添加密钥环境变量",
+    "添加成功": "添加成功",
+    "添加模型": "添加模型",
+    "添加模型区域": "添加模型区域",
+    "添加渠道": "添加渠道",
+    "添加环境变量": "添加环境变量",
+    "添加用户": "添加用户",
+    "添加聊天配置": "添加聊天配置",
+    "添加键值对": "添加键值对",
+    "添加问答": "添加问答",
+    "添加额度": "添加额度",
+    "清理不活跃缓存": "清理不活跃缓存",
+    "清理失败": "清理失败",
+    "清空": "清空",
+    "清空全部缓存": "清空全部缓存",
+    "清空该规则缓存": "清空该规则缓存",
+    "清空重定向": "清空重定向",
+    "清除历史日志": "清除历史日志",
+    "清除失效兑换码": "清除失效兑换码",
+    "清除所有模型": "清除所有模型",
+    "渠道": "渠道",
+    "渠道 ID": "渠道 ID",
+    "渠道ID,名称,密钥,API地址": "渠道ID,名称,密钥,API地址",
+    "渠道亲和性": "渠道亲和性",
+    "渠道亲和性:上游缓存命中": "渠道亲和性:上游缓存命中",
+    "渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。",
+    "渠道优先级": "渠道优先级",
+    "渠道信息": "渠道信息",
+    "渠道创建成功!": "渠道创建成功!",
+    "渠道复制失败": "渠道复制失败",
+    "渠道复制失败: ": "渠道复制失败: ",
+    "渠道复制成功": "渠道复制成功",
+    "渠道密钥": "渠道密钥",
+    "渠道密钥信息": "渠道密钥信息",
+    "渠道密钥列表": "渠道密钥列表",
+    "渠道更新成功!": "渠道更新成功!",
+    "渠道权重": "渠道权重",
+    "渠道标签": "渠道标签",
+    "渠道模型信息不完整": "渠道模型信息不完整",
+    "渠道的基本配置信息": "渠道的基本配置信息",
+    "渠道的模型测试": "渠道的模型测试",
+    "渠道的高级配置选项": "渠道的高级配置选项",
+    "渠道管理": "渠道管理",
+    "渠道额外设置": "渠道额外设置",
+    "源地址": "源地址",
+    "满足任一条件(OR)": "满足任一条件(OR)",
+    "演示站点": "演示站点",
+    "演示站点模式": "演示站点模式",
+    "点击 + 按钮添加图片URL进行多模态对话": "点击 + 按钮添加图片URL进行多模态对话",
+    "点击\"确认延长\"后将立即扣除费用并延长容器运行时间": "点击\"确认延长\"后将立即扣除费用并延长容器运行时间",
+    "点击上传文件或拖拽文件到这里": "点击上传文件或拖拽文件到这里",
+    "点击下方按钮通过 Telegram 完成绑定": "点击下方按钮通过 Telegram 完成绑定",
+    "点击复制ID": "点击复制ID",
+    "点击复制模型名称": "点击复制模型名称",
+    "点击查看差异": "点击查看差异",
+    "点击此处": "点击此处",
+    "点击预览视频": "点击预览视频",
+    "点击预览音乐": "点击预览音乐",
+    "点击验证按钮,使用您的生物特征或安全密钥": "点击验证按钮,使用您的生物特征或安全密钥",
+    "版权所有": "版权所有",
+    "状态": "状态",
+    "状态码": "状态码",
+    "状态码复写": "状态码复写",
+    "状态码复写包含无效的状态码": "状态码复写包含无效的状态码",
+    "状态筛选": "状态筛选",
+    "状态页面Slug": "状态页面Slug",
+    "环境变量": "环境变量",
+    "生成令牌": "生成令牌",
+    "生成并填入": "生成并填入",
+    "生成数量": "生成数量",
+    "生成数量必须大于0": "生成数量必须大于0",
+    "生成新的备用码": "生成新的备用码",
+    "生成歌词": "生成歌词",
+    "生成音乐": "生成音乐",
+    "生效": "生效",
+    "用于API调用的身份验证令牌,请妥善保管": "用于API调用的身份验证令牌,请妥善保管",
+    "用于唯一标识用户的字段路径": "用于唯一标识用户的字段路径",
+    "用于配置网络代理,支持 socks5 协议": "用于配置网络代理,支持 socks5 协议",
+    "用于验证回调 new-api 的 webhook 请求的密钥,敏感信息不显示": "用于验证回调 new-api 的 webhook 请求的密钥,敏感信息不显示",
+    "用以支持基于 WebAuthn 的无密码登录注册": "用以支持基于 WebAuthn 的无密码登录注册",
+    "用以支持用户校验": "用以支持用户校验",
+    "用以支持系统的邮件发送": "用以支持系统的邮件发送",
+    "用以支持通过 Discord 进行登录注册": "用以支持通过 Discord 进行登录注册",
+    "用以支持通过 GitHub 进行登录注册": "用以支持通过 GitHub 进行登录注册",
+    "用以支持通过 Linux DO 进行登录注册": "用以支持通过 Linux DO 进行登录注册",
+    "用以支持通过 OIDC 登录,例如 Okta、Auth0 等兼容 OIDC 协议的 IdP": "用以支持通过 OIDC 登录,例如 Okta、Auth0 等兼容 OIDC 协议的 IdP",
+    "用以支持通过 Telegram 进行登录注册": "用以支持通过 Telegram 进行登录注册",
+    "用以支持通过微信进行登录注册": "用以支持通过微信进行登录注册",
+    "用以防止恶意用户利用临时邮箱批量注册": "用以防止恶意用户利用临时邮箱批量注册",
+    "用户": "用户",
+    "用户 ID 字段(可选)": "用户 ID 字段(可选)",
+    "用户个人功能": "用户个人功能",
+    "用户主页,展示系统信息": "用户主页,展示系统信息",
+    "用户优先:如果用户在请求中指定了系统提示词,将优先使用用户的设置": "用户优先:如果用户在请求中指定了系统提示词,将优先使用用户的设置",
+    "用户信息": "用户信息",
+    "用户信息更新成功!": "用户信息更新成功!",
+    "用户信息缺失": "用户信息缺失",
+    "用户最大令牌数量": "用户最大令牌数量",
+    "用户分组": "用户分组",
+    "用户分组和额度管理": "用户分组和额度管理",
+    "用户分组配置": "用户分组配置",
+    "用户协议": "用户协议",
+    "用户协议已更新": "用户协议已更新",
+    "用户协议更新失败": "用户协议更新失败",
+    "用户可选分组": "用户可选分组",
+    "用户名": "用户名",
+    "用户名字段(可选)": "用户名字段(可选)",
+    "用户名或邮箱": "用户名或邮箱",
+    "用户名称": "用户名称",
+    "用户控制面板,管理账户": "用户控制面板,管理账户",
+    "用户新建令牌时可选的分组,格式为 JSON 字符串,例如:{\"vip\": \"VIP 用户\", \"test\": \"测试\"},表示用户可以选择 vip 分组和 test 分组": "用户新建令牌时可选的分组,格式为 JSON 字符串,例如:{\"vip\": \"VIP 用户\", \"test\": \"测试\"},表示用户可以选择 vip 分组和 test 分组",
+    "用户每周期最多请求完成次数": "用户每周期最多请求完成次数",
+    "用户每周期最多请求次数": "用户每周期最多请求次数",
+    "用户注册时看到的网站名称,比如'我的网站'": "用户注册时看到的网站名称,比如'我的网站'",
+    "用户的基本账户信息": "用户的基本账户信息",
+    "用户管理": "用户管理",
+    "用户组": "用户组",
+    "用户订阅管理": "用户订阅管理",
+    "用户账户创建成功!": "用户账户创建成功!",
+    "用户账户管理": "用户账户管理",
+    "用时/首字": "用时/首字",
+    "由全站货币展示设置统一控制": "由全站货币展示设置统一控制",
+    "由订阅抵扣": "由订阅抵扣",
+    "界面语言和其他个人偏好": "界面语言和其他个人偏好",
+    "留空使用系统临时目录": "留空使用系统临时目录",
+    "留空则使用账号绑定的邮箱": "留空则使用账号绑定的邮箱",
+    "留空则使用默认端点;支持 {path, method}": "留空则使用默认端点;支持 {path, method}",
+    "留空则保持原有密钥": "留空则保持原有密钥",
+    "留空则默认使用服务器地址,注意不能携带http://或者https://": "留空则默认使用服务器地址,注意不能携带http://或者https://",
+    "登 录": "登 录",
+    "登录": "登录",
+    "登录成功!": "登录成功!",
+    "登录过期,请重新登录!": "登录过期,请重新登录!",
+    "白名单": "白名单",
+    "的前提下使用。": "的前提下使用。",
+    "监控设置": "监控设置",
+    "目录总大小": "目录总大小",
+    "目录文件数": "目录文件数",
+    "目标用户:{{username}}": "目标用户:{{username}}",
+    "目标端点": "目标端点",
+    "目标路径(可选)": "目标路径(可选)",
+    "直接提交": "直接提交",
+    "直接编辑 JSON 文本,保存时会校验格式。": "直接编辑 JSON 文本,保存时会校验格式。",
+    "相关项目": "相关项目",
+    "相当于删除用户,此修改将不可逆": "相当于删除用户,此修改将不可逆",
+    "矛盾": "矛盾",
+    "知识库 ID": "知识库 ID",
+    "硬件": "硬件",
+    "硬件与性能": "硬件与性能",
+    "硬件类型": "硬件类型",
+    "硬件配置": "硬件配置",
+    "确定": "确定",
+    "确定?": "确定?",
+    "确定删除此组?": "确定删除此组?",
+    "确定导入": "确定导入",
+    "确定是否要修复数据库一致性?": "确定是否要修复数据库一致性?",
+    "确定是否要删除所选通道?": "确定是否要删除所选通道?",
+    "确定是否要删除此令牌?": "确定是否要删除此令牌?",
+    "确定是否要删除此兑换码?": "确定是否要删除此兑换码?",
+    "确定是否要删除此模型?": "确定是否要删除此模型?",
+    "确定是否要删除此渠道?": "确定是否要删除此渠道?",
+    "确定是否要删除禁用通道?": "确定是否要删除禁用通道?",
+    "确定是否要复制此渠道?": "确定是否要复制此渠道?",
+    "确定是否要注销此用户?": "确定是否要注销此用户?",
+    "确定清除所有失效兑换码?": "确定清除所有失效兑换码?",
+    "确定要修改所有子渠道优先级为 ": "确定要修改所有子渠道优先级为 ",
+    "确定要修改所有子渠道权重为 ": "确定要修改所有子渠道权重为 ",
+    "确定要充值 $": "确定要充值 $",
+    "确定要删除供应商 \"{{name}}\" 吗?此操作不可撤销。": "确定要删除供应商 \"{{name}}\" 吗?此操作不可撤销。",
+    "确定要删除所有已自动禁用的密钥吗?": "确定要删除所有已自动禁用的密钥吗?",
+    "确定要删除所选的 {{count}} 个令牌吗?_other": "确定要删除所选的 {{count}} 个令牌吗?",
+    "确定要删除所选的 {{count}} 个模型吗?_other": "确定要删除所选的 {{count}} 个模型吗?",
+    "确定要删除此 OAuth 提供商吗?": "确定要删除此 OAuth 提供商吗?",
+    "确定要删除此API信息吗?": "确定要删除此API信息吗?",
+    "确定要删除此公告吗?": "确定要删除此公告吗?",
+    "确定要删除此分类吗?": "确定要删除此分类吗?",
+    "确定要删除此密钥吗?": "确定要删除此密钥吗?",
+    "确定要删除此问答吗?": "确定要删除此问答吗?",
+    "确定要删除这条消息吗?": "确定要删除这条消息吗?",
+    "确定要删除选中的": "确定要删除选中的",
+    "确定要启用所有密钥吗?": "确定要启用所有密钥吗?",
+    "确定要启用此用户吗?": "确定要启用此用户吗?",
+    "确定要提升此用户吗?": "确定要提升此用户吗?",
+    "确定要更新所有已启用通道余额吗?": "确定要更新所有已启用通道余额吗?",
+    "确定要测试所有未手动禁用渠道吗?": "确定要测试所有未手动禁用渠道吗?",
+    "确定要禁用所有的密钥吗?": "确定要禁用所有的密钥吗?",
+    "确定要禁用此用户吗?": "确定要禁用此用户吗?",
+    "确定要解绑 {{name}} 吗?": "确定要解绑 {{name}} 吗?",
+    "确定要降级此用户吗?": "确定要降级此用户吗?",
+    "确定重置": "确定重置",
+    "确定重置模型倍率吗?": "确定重置模型倍率吗?",
+    "确认": "确认",
+    "确认作废": "确认作废",
+    "确认关闭提示": "确认关闭提示",
+    "确认冲突项修改": "确认冲突项修改",
+    "确认删除": "确认删除",
+    "确认删除模型": "确认删除模型",
+    "确认取消密码登录": "确认取消密码登录",
+    "确认启用": "确认启用",
+    "确认密码": "确认密码",
+    "确认导入配置": "确认导入配置",
+    "确认延长": "确认延长",
+    "确认延长容器时长": "确认延长容器时长",
+    "确认操作": "确认操作",
+    "确认新密码": "确认新密码",
+    "确认清理不活跃的磁盘缓存?": "确认清理不活跃的磁盘缓存?",
+    "确认清空全部渠道亲和性缓存": "确认清空全部渠道亲和性缓存",
+    "确认清空该规则缓存": "确认清空该规则缓存",
+    "确认清除历史日志": "确认清除历史日志",
+    "确认禁用": "确认禁用",
+    "确认补单": "确认补单",
+    "确认解绑": "确认解绑",
+    "确认解绑 Passkey": "确认解绑 Passkey",
+    "确认设置并完成初始化": "确认设置并完成初始化",
+    "确认重置 Passkey": "确认重置 Passkey",
+    "确认重置两步验证": "确认重置两步验证",
+    "确认重置密码": "确认重置密码",
+    "磁盘 阈值 (%)": "磁盘 阈值 (%)",
+    "磁盘使用率超过此值时拒绝请求": "磁盘使用率超过此值时拒绝请求",
+    "磁盘可用空间小于缓存最大总量设置": "磁盘可用空间小于缓存最大总量设置",
+    "磁盘命中": "磁盘命中",
+    "磁盘缓存最大总量 (MB)": "磁盘缓存最大总量 (MB)",
+    "磁盘缓存占用的最大空间": "磁盘缓存占用的最大空间",
+    "磁盘缓存已清理": "磁盘缓存已清理",
+    "磁盘缓存设置(磁盘换内存)": "磁盘缓存设置(磁盘换内存)",
+    "磁盘缓存阈值 (MB)": "磁盘缓存阈值 (MB)",
+    "示例": "示例",
+    "示例:{\"default\": [200, 100], \"vip\": [0, 1000]}。": "示例:{\"default\": [200, 100], \"vip\": [0, 1000]}。",
+    "视频": "视频",
+    "视频Remix": "视频Remix",
+    "视频无法在当前浏览器中播放,这可能是由于:": "视频无法在当前浏览器中播放,这可能是由于:",
+    "禁用": "禁用",
+    "禁用 store 透传": "禁用 store 透传",
+    "禁用2FA失败": "禁用2FA失败",
+    "禁用两步验证": "禁用两步验证",
+    "禁用全部": "禁用全部",
+    "禁用原因": "禁用原因",
+    "禁用后用户端不再展示,但历史订单不受影响。是否继续?": "禁用后用户端不再展示,但历史订单不受影响。是否继续?",
+    "禁用后的影响:": "禁用后的影响:",
+    "禁用密钥失败": "禁用密钥失败",
+    "禁用思考处理的模型列表": "禁用思考处理的模型列表",
+    "禁用所有密钥失败": "禁用所有密钥失败",
+    "禁用时间": "禁用时间",
+    "私有IP访问详细说明": "私有IP访问详细说明",
+    "私有部署地址": "私有部署地址",
+    "私有镜像仓库的密码": "私有镜像仓库的密码",
+    "私有镜像仓库的用户名": "私有镜像仓库的用户名",
+    "秒": "秒",
+    "移除 functionResponse.id 字段": "移除 functionResponse.id 字段",
+    "移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目": "移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目",
+    "窗口处理": "窗口处理",
+    "窗口等待": "窗口等待",
+    "立即签到": "立即签到",
+    "立即订阅": "立即订阅",
+    "站点额度展示类型及汇率": "站点额度展示类型及汇率",
+    "端口号必须在1-65535之间": "端口号必须在1-65535之间",
+    "端口配置详细说明": "端口配置详细说明",
+    "端点": "端点",
+    "端点 URL 必须是完整地址(以 http:// 或 https:// 开头)": "端点 URL 必须是完整地址(以 http:// 或 https:// 开头)",
+    "端点映射": "端点映射",
+    "端点类型": "端点类型",
+    "端点组": "端点组",
+    "第 {{line}} 条 prune_objects 缺少条件": "第 {{line}} 条 prune_objects 缺少条件",
+    "第 {{line}} 条 prune_objects 需要至少一个匹配条件": "第 {{line}} 条 prune_objects 需要至少一个匹配条件",
+    "第 {{line}} 条 return_error 需要 message 字段": "第 {{line}} 条 return_error 需要 message 字段",
+    "第 {{line}} 条操作缺少值": "第 {{line}} 条操作缺少值",
+    "第 {{line}} 条操作缺少来源字段": "第 {{line}} 条操作缺少来源字段",
+    "第 {{line}} 条操作缺少目标字段": "第 {{line}} 条操作缺少目标字段",
+    "第 {{line}} 条操作缺少目标路径": "第 {{line}} 条操作缺少目标路径",
+    "第 {{line}} 条请求头透传格式无效": "第 {{line}} 条请求头透传格式无效",
+    "第 {{line}} 条请求头透传缺少请求头名称": "第 {{line}} 条请求头透传缺少请求头名称",
+    "第三方支付配置": "第三方支付配置",
+    "等价金额:": "等价金额:",
+    "等待中": "等待中",
+    "等待获取邮箱信息...": "等待获取邮箱信息...",
+    "筛选": "筛选",
+    "签到最大额度": "签到最大额度",
+    "签到最小额度": "签到最小额度",
+    "签到功能允许用户每日签到获取随机额度奖励": "签到功能允许用户每日签到获取随机额度奖励",
+    "签到失败": "签到失败",
+    "签到奖励将直接添加到您的账户余额": "签到奖励将直接添加到您的账户余额",
+    "签到奖励的最大额度": "签到奖励的最大额度",
+    "签到奖励的最小额度": "签到奖励的最小额度",
+    "签到成功!获得": "签到成功!获得",
+    "签到设置": "签到设置",
+    "简洁": "简洁",
+    "简洁模式:按 type 全量清理对象,例如 redacted_thinking。": "简洁模式:按 type 全量清理对象,例如 redacted_thinking。",
+    "简洁模式仅返回 message;状态码和错误类型将使用系统默认值。": "简洁模式仅返回 message;状态码和错误类型将使用系统默认值。",
+    "管理": "管理",
+    "管理 Ollama 模型的拉取和删除": "管理 Ollama 模型的拉取和删除",
+    "管理你的 LinuxDO OAuth App": "管理你的 LinuxDO OAuth App",
+    "管理员": "管理员",
+    "管理员区域": "管理员区域",
+    "管理员暂时未设置任何关于内容": "管理员暂时未设置任何关于内容",
+    "管理员未开启 Creem 充值!": "管理员未开启 Creem 充值!",
+    "管理员未开启Stripe充值!": "管理员未开启Stripe充值!",
+    "管理员未开启在线充值!": "管理员未开启在线充值!",
+    "管理员未开启在线充值功能,请联系管理员开启或使用兑换码充值。": "管理员未开启在线充值功能,请联系管理员开启或使用兑换码充值。",
+    "管理员未开启在线支付功能,请联系管理员配置。": "管理员未开启在线支付功能,请联系管理员配置。",
+    "管理员未设置用户可选分组": "管理员未设置用户可选分组",
+    "管理员设置了外部链接,点击下方按钮访问": "管理员设置了外部链接,点击下方按钮访问",
+    "管理员账号": "管理员账号",
+    "管理员账号已经初始化过,请继续设置其他参数": "管理员账号已经初始化过,请继续设置其他参数",
+    "管理模型、标签、端点等预填组": "管理模型、标签、端点等预填组",
+    "管理用户已绑定的第三方账户,支持筛选与解绑": "管理用户已绑定的第三方账户,支持筛选与解绑",
+    "管理绑定": "管理绑定",
+    "类型": "类型",
+    "类型(常用)": "类型(常用)",
+    "粘贴图片失败": "粘贴图片失败",
+    "精确": "精确",
+    "系统": "系统",
+    "系统令牌已复制到剪切板": "系统令牌已复制到剪切板",
+    "系统任务记录": "系统任务记录",
+    "系统信息": "系统信息",
+    "系统公告": "系统公告",
+    "系统公告管理,可以发布系统通知和重要消息(最多100个,前端显示最新20条)": "系统公告管理,可以发布系统通知和重要消息(最多100个,前端显示最新20条)",
+    "系统内存": "系统内存",
+    "系统初始化": "系统初始化",
+    "系统初始化失败,请重试": "系统初始化失败,请重试",
+    "系统初始化成功,正在跳转...": "系统初始化成功,正在跳转...",
+    "系统参数配置": "系统参数配置",
+    "系统名称": "系统名称",
+    "系统名称已更新": "系统名称已更新",
+    "系统名称更新失败": "系统名称更新失败",
+    "系统已为该部署准备 Ollama 镜像与随机 API Key": "系统已为该部署准备 Ollama 镜像与随机 API Key",
+    "系统性能监控": "系统性能监控",
+    "系统提示覆盖": "系统提示覆盖",
+    "系统提示词": "系统提示词",
+    "系统提示词拼接": "系统提示词拼接",
+    "系统数据统计": "系统数据统计",
+    "系统文档和帮助信息": "系统文档和帮助信息",
+    "系统消息": "系统消息",
+    "系统管理功能": "系统管理功能",
+    "系统设置": "系统设置",
+    "系统访问令牌": "系统访问令牌",
+    "约": "约",
+    "索引": "索引",
+    "紧凑列表": "紧凑列表",
+    "累计签到": "累计签到",
+    "累计获得": "累计获得",
+    "线路描述": "线路描述",
+    "组列表": "组列表",
+    "组名": "组名",
+    "组织": "组织",
+    "组织,不填则为默认组织": "组织,不填则为默认组织",
+    "终止中": "终止中",
+    "终止请求中": "终止请求中",
+    "绑定": "绑定",
+    "绑定 Telegram": "绑定 Telegram",
+    "绑定信息": "绑定信息",
+    "绑定微信账户": "绑定微信账户",
+    "绑定成功!": "绑定成功!",
+    "绑定邮箱地址": "绑定邮箱地址",
+    "结束": "结束",
+    "结束时间": "结束时间",
+    "结果图片": "结果图片",
+    "结算差额": "结算差额",
+    "绘图": "绘图",
+    "绘图任务记录": "绘图任务记录",
+    "绘图日志": "绘图日志",
+    "绘图设置": "绘图设置",
+    "统一的": "统一的",
+    "统计Tokens": "统计Tokens",
+    "统计已重置": "统计已重置",
+    "统计次数": "统计次数",
+    "统计额度": "统计额度",
+    "继续": "继续",
+    "缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}} (倍率: {{ratio}})": "缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}} (倍率: {{ratio}})",
+    "缓存 Tokens": "缓存 Tokens",
+    "缓存: {{cacheRatio}}": "缓存: {{cacheRatio}}",
+    "缓存价格:{{symbol}}{{price}} * {{cacheRatio}} = {{symbol}}{{total}} / 1M tokens (缓存倍率: {{cacheRatio}})": "缓存价格:{{symbol}}{{price}} * {{cacheRatio}} = {{symbol}}{{total}} / 1M tokens (缓存倍率: {{cacheRatio}})",
+    "缓存价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (缓存倍率: {{cacheRatio}})": "缓存价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (缓存倍率: {{cacheRatio}})",
+    "缓存倍率": "缓存倍率",
+    "缓存倍率 {{cacheRatio}}": "缓存倍率 {{cacheRatio}}",
+    "缓存写": "缓存写",
+    "缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}} (倍率: {{ratio}})": "缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}} (倍率: {{ratio}})",
+    "缓存创建 Tokens": "缓存创建 Tokens",
+    "缓存创建: {{cacheCreationRatio}}": "缓存创建: {{cacheCreationRatio}}",
+    "缓存创建: 1h {{cacheCreationRatio1h}}": "缓存创建: 1h {{cacheCreationRatio1h}}",
+    "缓存创建: 5m {{cacheCreationRatio5m}}": "缓存创建: 5m {{cacheCreationRatio5m}}",
+    "缓存创建: 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "缓存创建: 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
+    "缓存创建价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (缓存创建倍率: {{cacheCreationRatio}})": "缓存创建价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (缓存创建倍率: {{cacheCreationRatio}})",
+    "缓存创建价格合计:5m {{symbol}}{{five}} + 1h {{symbol}}{{one}} = {{symbol}}{{total}} / 1M tokens": "缓存创建价格合计:5m {{symbol}}{{five}} + 1h {{symbol}}{{one}} = {{symbol}}{{total}} / 1M tokens",
+    "缓存创建倍率": "缓存创建倍率",
+    "缓存创建倍率 {{cacheCreationRatio}}": "缓存创建倍率 {{cacheCreationRatio}}",
+    "缓存创建倍率 1h {{cacheCreationRatio1h}}": "缓存创建倍率 1h {{cacheCreationRatio1h}}",
+    "缓存创建倍率 5m {{cacheCreationRatio5m}}": "缓存创建倍率 5m {{cacheCreationRatio5m}}",
+    "缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
+    "缓存条目数": "缓存条目数",
+    "缓存目录": "缓存目录",
+    "缓存目录磁盘空间": "缓存目录磁盘空间",
+    "缓存读": "缓存读",
+    "编辑": "编辑",
+    "编辑 OAuth 提供商": "编辑 OAuth 提供商",
+    "编辑API": "编辑API",
+    "编辑产品": "编辑产品",
+    "编辑供应商": "编辑供应商",
+    "编辑公告": "编辑公告",
+    "编辑公告内容": "编辑公告内容",
+    "编辑分类": "编辑分类",
+    "编辑成功": "编辑成功",
+    "编辑方式": "编辑方式",
+    "编辑标签": "编辑标签",
+    "编辑模型": "编辑模型",
+    "编辑模式": "编辑模式",
+    "编辑用户": "编辑用户",
+    "编辑聊天配置": "编辑聊天配置",
+    "编辑规则": "编辑规则",
+    "编辑问答": "编辑问答",
+    "缩词": "缩词",
+    "缺省 MaxTokens": "缺省 MaxTokens",
+    "网站地址": "网站地址",
+    "网站域名标识": "网站域名标识",
+    "网络连接失败,请检查网络设置或稍后重试": "网络连接失败,请检查网络设置或稍后重试",
+    "网络配置": "网络配置",
+    "网络错误": "网络错误",
+    "置信度": "置信度",
+    "美元": "美元",
+    "聊天": "聊天",
+    "聊天会话管理": "聊天会话管理",
+    "聊天区域": "聊天区域",
+    "聊天应用名称": "聊天应用名称",
+    "聊天应用名称已存在,请使用其他名称": "聊天应用名称已存在,请使用其他名称",
+    "聊天设置": "聊天设置",
+    "聊天配置": "聊天配置",
+    "聊天链接配置错误,请联系管理员": "聊天链接配置错误,请联系管理员",
+    "联系我们": "联系我们",
+    "腾讯混元": "腾讯混元",
+    "自动分组auto,从第一个开始选择": "自动分组auto,从第一个开始选择",
+    "自动刷新": "自动刷新",
+    "自动刷新中": "自动刷新中",
+    "自动填充字段": "自动填充字段",
+    "自动检测": "自动检测",
+    "自动模式": "自动模式",
+    "自动测试所有通道间隔时间": "自动测试所有通道间隔时间",
+    "自动生成:": "自动生成:",
+    "自动禁用": "自动禁用",
+    "自动禁用关键词": "自动禁用关键词",
+    "自动禁用状态码": "自动禁用状态码",
+    "自动禁用状态码格式不正确": "自动禁用状态码格式不正确",
+    "自动重试状态码": "自动重试状态码",
+    "自动重试状态码格式不正确": "自动重试状态码格式不正确",
+    "自定义": "自定义",
+    "自定义 JSON": "自定义 JSON",
+    "自定义 OAuth 提供商": "自定义 OAuth 提供商",
+    "自定义充值数量选项": "自定义充值数量选项",
+    "自定义充值数量选项不是合法的 JSON 数组": "自定义充值数量选项不是合法的 JSON 数组",
+    "自定义变焦-提交": "自定义变焦-提交",
+    "自定义模型名称": "自定义模型名称",
+    "自定义模式下不可用": "自定义模式下不可用",
+    "自定义秒数": "自定义秒数",
+    "自定义请求体模式": "自定义请求体模式",
+    "自定义货币": "自定义货币",
+    "自定义货币符号": "自定义货币符号",
+    "自定义错误响应": "自定义错误响应",
+    "自定义镜像": "自定义镜像",
+    "自用模式": "自用模式",
+    "自适应列表": "自适应列表",
+    "至": "至",
+    "节省": "节省",
+    "花费": "花费",
+    "花费时间": "花费时间",
+    "若你的 OIDC Provider 支持 Discovery Endpoint,你可以仅填写 OIDC Well-Known URL,系统会自动获取 OIDC 配置": "若你的 OIDC Provider 支持 Discovery Endpoint,你可以仅填写 OIDC Well-Known URL,系统会自动获取 OIDC 配置",
+    "获取 Discovery 配置": "获取 Discovery 配置",
+    "获取 Discovery 配置失败:": "获取 Discovery 配置失败:",
+    "获取 io.net API Key": "获取 io.net API Key",
+    "获取 OIDC 配置失败,请检查网络状况和 Well-Known URL 是否正确": "获取 OIDC 配置失败,请检查网络状况和 Well-Known URL 是否正确",
+    "获取 OIDC 配置成功!": "获取 OIDC 配置成功!",
+    "获取 Ollama 版本失败": "获取 Ollama 版本失败",
+    "获取2FA状态失败": "获取2FA状态失败",
+    "获取初始化状态失败": "获取初始化状态失败",
+    "获取可用资源失败: ": "获取可用资源失败: ",
+    "获取启用模型失败": "获取启用模型失败",
+    "获取启用模型失败:": "获取启用模型失败:",
+    "获取容器信息失败": "获取容器信息失败",
+    "获取容器列表失败": "获取容器列表失败",
+    "获取容器详情失败": "获取容器详情失败",
+    "获取密钥": "获取密钥",
+    "获取密钥失败": "获取密钥失败",
+    "获取密钥状态失败": "获取密钥状态失败",
+    "获取日志失败": "获取日志失败",
+    "获取未配置模型失败": "获取未配置模型失败",
+    "获取模型列表": "获取模型列表",
+    "获取模型列表失败": "获取模型列表失败",
+    "获取渠道失败:": "获取渠道失败:",
+    "获取硬件类型失败: ": "获取硬件类型失败: ",
+    "获取签到状态失败": "获取签到状态失败",
+    "获取组列表失败": "获取组列表失败",
+    "获取绑定信息失败": "获取绑定信息失败",
+    "获取自定义 OAuth 提供商列表失败": "获取自定义 OAuth 提供商列表失败",
+    "获取详情失败": "获取详情失败",
+    "获取部署列表失败": "获取部署列表失败",
+    "获取金额失败": "获取金额失败",
+    "获取验证码": "获取验证码",
+    "获得": "获得",
+    "补全": "补全",
+    "补全 {{completion}} tokens / 1M tokens * {{symbol}}{{price}}": "补全 {{completion}} tokens / 1M tokens * {{symbol}}{{price}}",
+    "补全价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})": "补全价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})",
+    "补全价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens": "补全价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens",
+    "补全倍率": "补全倍率",
+    "补全倍率值": "补全倍率值",
+    "补单": "补单",
+    "补单失败": "补单失败",
+    "补单成功": "补单成功",
+    "表单引用错误,请刷新页面重试": "表单引用错误,请刷新页面重试",
+    "表格视图": "表格视图",
+    "覆盖模式:将完全替换现有的所有密钥": "覆盖模式:将完全替换现有的所有密钥",
+    "覆盖模板": "覆盖模板",
+    "覆盖现有密钥": "覆盖现有密钥",
+    "规则": "规则",
+    "规则 JSON": "规则 JSON",
+    "规则 JSON 格式不正确": "规则 JSON 格式不正确",
+    "规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。",
+    "规则为 JSON 数组;可视化与 JSON 模式共用同一份数据。": "规则为 JSON 数组;可视化与 JSON 模式共用同一份数据。",
+    "规则名称(可读性更好,也会出现在管理侧日志中)。": "规则名称(可读性更好,也会出现在管理侧日志中)。",
+    "规则导航": "规则导航",
+    "规则未找到,请刷新后重试": "规则未找到,请刷新后重试",
+    "角色": "角色",
+    "解析响应数据时发生错误": "解析响应数据时发生错误",
+    "解析密钥文件失败: {{msg}}": "解析密钥文件失败: {{msg}}",
+    "解析错误": "解析错误",
+    "解绑": "解绑",
+    "解绑 Passkey": "解绑 Passkey",
+    "解绑后将无法使用 Passkey 登录,确定要继续吗?": "解绑后将无法使用 Passkey 登录,确定要继续吗?",
+    "解绑成功": "解绑成功",
+    "计价币种": "计价币种",
+    "计算中": "计算中",
+    "计算成本": "计算成本",
+    "计算费用中...": "计算费用中...",
+    "计费开始": "计费开始",
+    "计费模式": "计费模式",
+    "计费类型": "计费类型",
+    "计费过程": "计费过程",
+    "订单号": "订单号",
+    "订阅": "订阅",
+    "订阅剩余": "订阅剩余",
+    "订阅套餐": "订阅套餐",
+    "订阅套餐管理": "订阅套餐管理",
+    "订阅实例": "订阅实例",
+    "订阅抵扣": "订阅抵扣",
+    "订阅管理": "订阅管理",
+    "订阅结算": "订阅结算",
+    "订阅说明": "订阅说明",
+    "认证方式": "认证方式",
+    "讯飞星火": "讯飞星火",
+    "记录请求与错误日志IP": "记录请求与错误日志IP",
+    "设备": "设备",
+    "设备类型偏好": "设备类型偏好",
+    "设置 Logo": "设置 Logo",
+    "设置2FA失败": "设置2FA失败",
+    "设置不同充值金额对应的折扣,键为充值金额,值为折扣率,例如:{\"100\": 0.95, \"200\": 0.9, \"500\": 0.85}": "设置不同充值金额对应的折扣,键为充值金额,值为折扣率,例如:{\"100\": 0.95, \"200\": 0.9, \"500\": 0.85}",
+    "设置两步验证": "设置两步验证",
+    "设置令牌可用额度和数量": "设置令牌可用额度和数量",
+    "设置令牌的基本信息": "设置令牌的基本信息",
+    "设置令牌的访问限制": "设置令牌的访问限制",
+    "设置保存失败": "设置保存失败",
+    "设置保存成功": "设置保存成功",
+    "设置兑换码的基本信息": "设置兑换码的基本信息",
+    "设置兑换码的额度和数量": "设置兑换码的额度和数量",
+    "设置公告": "设置公告",
+    "设置关于": "设置关于",
+    "设置已保存": "设置已保存",
+    "设置模型的基本信息": "设置模型的基本信息",
+    "设置用于接收额度预警的邮箱地址,不填则使用账号绑定的邮箱": "设置用于接收额度预警的邮箱地址,不填则使用账号绑定的邮箱",
+    "设置用户协议": "设置用户协议",
+    "设置用户可选择的充值数量选项,例如:[10, 20, 50, 100, 200, 500]": "设置用户可选择的充值数量选项,例如:[10, 20, 50, 100, 200, 500]",
+    "设置管理员登录信息": "设置管理员登录信息",
+    "设置类型": "设置类型",
+    "设置系统名称": "设置系统名称",
+    "设置过短会影响数据库性能": "设置过短会影响数据库性能",
+    "设置隐私政策": "设置隐私政策",
+    "设置页脚": "设置页脚",
+    "设置预填组的基本信息": "设置预填组的基本信息",
+    "设置首页内容": "设置首页内容",
+    "设置默认地区和特定模型的专用地区": "设置默认地区和特定模型的专用地区",
+    "设计与开发由": "设计与开发由",
+    "访问 io.net 控制台的 API Keys 页面": "访问 io.net 控制台的 API Keys 页面",
+    "访问容器": "访问容器",
+    "访问模型部署功能需要先启用 io.net 部署服务": "访问模型部署功能需要先启用 io.net 部署服务",
+    "访问限制": "访问限制",
+    "该供应商提供多种AI模型,适用于不同的应用场景。": "该供应商提供多种AI模型,适用于不同的应用场景。",
+    "该域名已存在于白名单中": "该域名已存在于白名单中",
+    "该套餐未配置 Creem": "该套餐未配置 Creem",
+    "该套餐未配置 Stripe": "该套餐未配置 Stripe",
+    "该数据可能不可信,请谨慎使用": "该数据可能不可信,请谨慎使用",
+    "该服务器地址将影响支付回调地址以及默认首页展示的地址,请确保正确配置": "该服务器地址将影响支付回调地址以及默认首页展示的地址,请确保正确配置",
+    "该模型存在固定价格与倍率计费方式冲突,请确认选择": "该模型存在固定价格与倍率计费方式冲突,请确认选择",
+    "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。",
+    "该规则未启用“作用域:包含规则名称”,无法按规则清空缓存。": "该规则未启用“作用域:包含规则名称”,无法按规则清空缓存。",
+    "该规则未设置参数覆盖模板": "该规则未设置参数覆盖模板",
+    "该规则的缓存保留时长;0 表示使用默认 TTL:": "该规则的缓存保留时长;0 表示使用默认 TTL:",
+    "该记录不包含可用的 token 统计口径。": "该记录不包含可用的 token 统计口径。",
+    "详情": "详情",
+    "语言偏好": "语言偏好",
+    "语言偏好已保存": "语言偏好已保存",
+    "语音输入": "语音输入",
+    "语音输出": "语音输出",
+    "说明": "说明",
+    "说明:": "说明:",
+    "说明:本页测试为非流式请求;若渠道仅支持流式返回,可能出现测试失败,请以实际使用为准。": "说明:本页测试为非流式请求;若渠道仅支持流式返回,可能出现测试失败,请以实际使用为准。",
+    "说明:生成结果是可直接粘贴到渠道密钥里的 JSON(包含 access_token / refresh_token / account_id)。": "说明:生成结果是可直接粘贴到渠道密钥里的 JSON(包含 access_token / refresh_token / account_id)。",
+    "说明信息": "说明信息",
+    "请上传密钥文件": "请上传密钥文件",
+    "请上传密钥文件!": "请上传密钥文件!",
+    "请为渠道命名": "请为渠道命名",
+    "请使用 Project 为 io.cloud 的密钥": "请使用 Project 为 io.cloud 的密钥",
+    "请先在设置中启用图片功能": "请先在设置中启用图片功能",
+    "请先填写 API Key": "请先填写 API Key",
+    "请先填写 Discovery URL 或 Issuer URL": "请先填写 Discovery URL 或 Issuer URL",
+    "请先填写 Issuer URL,以自动生成完整的端点 URL": "请先填写 Issuer URL,以自动生成完整的端点 URL",
+    "请先填写 Ollama API 地址": "请先填写 Ollama API 地址",
+    "请先填写服务器地址": "请先填写服务器地址",
+    "请先粘贴回调 URL": "请先粘贴回调 URL",
+    "请先输入密钥": "请先输入密钥",
+    "请先选择一条规则": "请先选择一条规则",
+    "请先选择同步渠道": "请先选择同步渠道",
+    "请先选择模型!": "请先选择模型!",
+    "请先选择硬件类型": "请先选择硬件类型",
+    "请先选择要删除的令牌!": "请先选择要删除的令牌!",
+    "请先选择要删除的通道!": "请先选择要删除的通道!",
+    "请先选择要设置标签的渠道!": "请先选择要设置标签的渠道!",
+    "请先选择需要批量设置的模型": "请先选择需要批量设置的模型",
+    "请先阅读并同意用户协议和隐私政策": "请先阅读并同意用户协议和隐私政策",
+    "请再次输入新密码": "请再次输入新密码",
+    "请前往个人设置 → 安全设置进行配置。": "请前往个人设置 → 安全设置进行配置。",
+    "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用": "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用",
+    "请在系统设置页面编辑分组倍率以添加新的分组:": "请在系统设置页面编辑分组倍率以添加新的分组:",
+    "请填写完整的产品信息": "请填写完整的产品信息",
+    "请填写完整的管理员账号信息": "请填写完整的管理员账号信息",
+    "请填写密钥": "请填写密钥",
+    "请填写渠道名称和渠道密钥!": "请填写渠道名称和渠道密钥!",
+    "请填写部署地区": "请填写部署地区",
+    "请妥善保管密钥信息,不要泄露给他人。如有安全疑虑,请及时更换密钥。": "请妥善保管密钥信息,不要泄露给他人。如有安全疑虑,请及时更换密钥。",
+    "请尝试其他搜索关键词": "请尝试其他搜索关键词",
+    "请检查渠道配置或刷新重试": "请检查渠道配置或刷新重试",
+    "请检查表单填写是否正确": "请检查表单填写是否正确",
+    "请检查输入": "请检查输入",
+    "请求体 JSON": "请求体 JSON",
+    "请求体内存缓存": "请求体内存缓存",
+    "请求体磁盘缓存": "请求体磁盘缓存",
+    "请求体超过此大小时使用磁盘缓存": "请求体超过此大小时使用磁盘缓存",
+    "请求参数无效": "请求参数无效",
+    "请求发生错误": "请求发生错误",
+    "请求发生错误: ": "请求发生错误: ",
+    "请求后端接口失败:": "请求后端接口失败:",
+    "请求失败": "请求失败",
+    "请求头覆盖": "请求头覆盖",
+    "请求并计费模型": "请求并计费模型",
+    "请求时长: ${time}s": "请求时长: ${time}s",
+    "请求次数": "请求次数",
+    "请求结束后多退少补": "请求结束后多退少补",
+    "请求路径": "请求路径",
+    "请求转换": "请求转换",
+    "请求预扣费额度": "请求预扣费额度",
+    "请点击我": "请点击我",
+    "请确认以下设置信息,点击\"初始化系统\"开始配置": "请确认以下设置信息,点击\"初始化系统\"开始配置",
+    "请确认您已了解禁用两步验证的后果": "请确认您已了解禁用两步验证的后果",
+    "请确认管理员密码": "请确认管理员密码",
+    "请稍后几秒重试,Turnstile 正在检查用户环境!": "请稍后几秒重试,Turnstile 正在检查用户环境!",
+    "请粘贴完整回调 URL(包含 code 与 state)": "请粘贴完整回调 URL(包含 code 与 state)",
+    "请联系管理员在系统设置中配置API信息": "请联系管理员在系统设置中配置API信息",
+    "请联系管理员在系统设置中配置Uptime": "请联系管理员在系统设置中配置Uptime",
+    "请联系管理员在系统设置中配置公告信息": "请联系管理员在系统设置中配置公告信息",
+    "请联系管理员在系统设置中配置常见问答": "请联系管理员在系统设置中配置常见问答",
+    "请联系管理员配置聊天链接": "请联系管理员配置聊天链接",
+    "请至少选择一个令牌!": "请至少选择一个令牌!",
+    "请至少选择一个兑换码!": "请至少选择一个兑换码!",
+    "请至少选择一个模型": "请至少选择一个模型",
+    "请至少选择一个模型!": "请至少选择一个模型!",
+    "请至少选择一个渠道": "请至少选择一个渠道",
+    "请输入 API Key,一行一个,格式:APIKey|Region": "请输入 API Key,一行一个,格式:APIKey|Region",
+    "请输入 API Key,格式:APIKey|Region": "请输入 API Key,格式:APIKey|Region",
+    "请输入 Authorization Endpoint": "请输入 Authorization Endpoint",
+    "请输入 AZURE_OPENAI_ENDPOINT,例如:https://docs-test-001.openai.azure.com": "请输入 AZURE_OPENAI_ENDPOINT,例如:https://docs-test-001.openai.azure.com",
+    "请输入 Client ID": "请输入 Client ID",
+    "请输入 Client Secret": "请输入 Client Secret",
+    "请输入 io.net API Key(敏感信息不显示)": "请输入 io.net API Key(敏感信息不显示)",
+    "请输入 JSON 格式的 OAuth 凭据,例如:\n{\n  \"access_token\": \"...\",\n  \"account_id\": \"...\" \n}": "请输入 JSON 格式的 OAuth 凭据,例如:\n{\n  \"access_token\": \"...\",\n  \"account_id\": \"...\" \n}",
+    "请输入 JSON 格式的密钥内容,例如:\n{\n  \"type\": \"service_account\",\n  \"project_id\": \"your-project-id\",\n  \"private_key_id\": \"...\",\n  \"private_key\": \"...\",\n  \"client_email\": \"...\",\n  \"client_id\": \"...\",\n  \"auth_uri\": \"...\",\n  \"token_uri\": \"...\",\n  \"auth_provider_x509_cert_url\": \"...\",\n  \"client_x509_cert_url\": \"...\"\n}": "请输入 JSON 格式的密钥内容,例如:\n{\n  \"type\": \"service_account\",\n  \"project_id\": \"your-project-id\",\n  \"private_key_id\": \"...\",\n  \"private_key\": \"...\",\n  \"client_email\": \"...\",\n  \"client_id\": \"...\",\n  \"auth_uri\": \"...\",\n  \"token_uri\": \"...\",\n  \"auth_provider_x509_cert_url\": \"...\",\n  \"client_x509_cert_url\": \"...\"\n}",
+    "请输入 OIDC 的 Well-Known URL": "请输入 OIDC 的 Well-Known URL",
+    "请输入 Slug": "请输入 Slug",
+    "请输入 Token Endpoint": "请输入 Token Endpoint",
+    "请输入 User Info Endpoint": "请输入 User Info Endpoint",
+    "请输入6位验证码或8位备用码": "请输入6位验证码或8位备用码",
+    "请输入API地址": "请输入API地址",
+    "请输入API地址!": "请输入API地址!",
+    "请输入Bark推送URL": "请输入Bark推送URL",
+    "请输入Bark推送URL,例如: https://api.day.app/yourkey/{{title}}/{{content}}": "请输入Bark推送URL,例如: https://api.day.app/yourkey/{{title}}/{{content}}",
+    "请输入Gotify应用令牌": "请输入Gotify应用令牌",
+    "请输入Gotify服务器地址": "请输入Gotify服务器地址",
+    "请输入Gotify服务器地址,例如: https://gotify.example.com": "请输入Gotify服务器地址,例如: https://gotify.example.com",
+    "请输入Uptime Kuma地址": "请输入Uptime Kuma地址",
+    "请输入Uptime Kuma服务地址,如:https://status.example.com": "请输入Uptime Kuma服务地址,如:https://status.example.com",
+    "请输入URL链接": "请输入URL链接",
+    "请输入Webhook地址": "请输入Webhook地址",
+    "请输入Webhook地址,例如: https://example.com/webhook": "请输入Webhook地址,例如: https://example.com/webhook",
+    "请输入你的账户名以确认删除!": "请输入你的账户名以确认删除!",
+    "请输入供应商名称": "请输入供应商名称",
+    "请输入供应商名称,如:OpenAI": "请输入供应商名称,如:OpenAI",
+    "请输入供应商描述": "请输入供应商描述",
+    "请输入兑换码": "请输入兑换码",
+    "请输入兑换码!": "请输入兑换码!",
+    "请输入公告内容": "请输入公告内容",
+    "请输入公告内容(支持 Markdown/HTML)": "请输入公告内容(支持 Markdown/HTML)",
+    "请输入分类名称": "请输入分类名称",
+    "请输入分类名称,如:OpenAI、Claude等": "请输入分类名称,如:OpenAI、Claude等",
+    "请输入到 /suno 前的路径,通常就是域名,例如:https://api.example.com": "请输入到 /suno 前的路径,通常就是域名,例如:https://api.example.com",
+    "请输入副本数量": "请输入副本数量",
+    "请输入原密码": "请输入原密码",
+    "请输入原密码!": "请输入原密码!",
+    "请输入名称": "请输入名称",
+    "请输入回答内容": "请输入回答内容",
+    "请输入回答内容(支持 Markdown/HTML)": "请输入回答内容(支持 Markdown/HTML)",
+    "请输入图标名称": "请输入图标名称",
+    "请输入填充值": "请输入填充值",
+    "请输入备注(仅管理员可见)": "请输入备注(仅管理员可见)",
+    "请输入套餐标题": "请输入套餐标题",
+    "请输入完整的 JSON 格式密钥内容": "请输入完整的 JSON 格式密钥内容",
+    "请输入完整的URL,例如:https://api.openai.com/v1/chat/completions": "请输入完整的URL,例如:https://api.openai.com/v1/chat/completions",
+    "请输入完整的URL链接": "请输入完整的URL链接",
+    "请输入容器名称": "请输入容器名称",
+    "请输入密码": "请输入密码",
+    "请输入密钥": "请输入密钥",
+    "请输入密钥,一行一个": "请输入密钥,一行一个",
+    "请输入密钥,一行一个,格式:AccessKey|SecretAccessKey|Region": "请输入密钥,一行一个,格式:AccessKey|SecretAccessKey|Region",
+    "请输入密钥!": "请输入密钥!",
+    "请输入延长时长": "请输入延长时长",
+    "请输入总额度": "请输入总额度",
+    "请输入您的密码": "请输入您的密码",
+    "请输入您的用户名以确认删除": "请输入您的用户名以确认删除",
+    "请输入您的用户名或邮箱地址": "请输入您的用户名或邮箱地址",
+    "请输入您的邮箱地址": "请输入您的邮箱地址",
+    "请输入您的问题...": "请输入您的问题...",
+    "请输入数值": "请输入数值",
+    "请输入数字": "请输入数字",
+    "请输入新密码": "请输入新密码",
+    "请输入新密码!": "请输入新密码!",
+    "请输入新建数量": "请输入新建数量",
+    "请输入新标签,留空则解散标签": "请输入新标签,留空则解散标签",
+    "请输入新的剩余额度": "请输入新的剩余额度",
+    "请输入新的密码,最短 8 位": "请输入新的密码,最短 8 位",
+    "请输入新的显示名称": "请输入新的显示名称",
+    "请输入新的用户名": "请输入新的用户名",
+    "请输入新的部署名称": "请输入新的部署名称",
+    "请输入显示名称": "请输入显示名称",
+    "请输入有效的JSON格式的请求体。您可以参考预览面板中的默认请求体格式。": "请输入有效的JSON格式的请求体。您可以参考预览面板中的默认请求体格式。",
+    "请输入有效的数字": "请输入有效的数字",
+    "请输入有效的镜像地址": "请输入有效的镜像地址",
+    "请输入标签名称": "请输入标签名称",
+    "请输入模型倍率": "请输入模型倍率",
+    "请输入模型倍率和补全倍率": "请输入模型倍率和补全倍率",
+    "请输入模型名称": "请输入模型名称",
+    "请输入模型名称,例如: llama3.2, qwen2.5:7b": "请输入模型名称,例如: llama3.2, qwen2.5:7b",
+    "请输入模型名称,如:gpt-4": "请输入模型名称,如:gpt-4",
+    "请输入模型描述": "请输入模型描述",
+    "请输入消息内容...": "请输入消息内容...",
+    "请输入状态页面Slug": "请输入状态页面Slug",
+    "请输入状态页面的Slug,如:my-status": "请输入状态页面的Slug,如:my-status",
+    "请输入生成数量": "请输入生成数量",
+    "请输入用户名": "请输入用户名",
+    "请输入私有部署地址,格式为:https://fastgpt.run/api/openapi": "请输入私有部署地址,格式为:https://fastgpt.run/api/openapi",
+    "请输入秒数": "请输入秒数",
+    "请输入管理员密码": "请输入管理员密码",
+    "请输入管理员用户名": "请输入管理员用户名",
+    "请输入线路描述": "请输入线路描述",
+    "请输入组名": "请输入组名",
+    "请输入组描述": "请输入组描述",
+    "请输入组织org-xxx": "请输入组织org-xxx",
+    "请输入聊天应用名称": "请输入聊天应用名称",
+    "请输入补全倍率": "请输入补全倍率",
+    "请输入要延长的小时数": "请输入要延长的小时数",
+    "请输入要设置的标签名称": "请输入要设置的标签名称",
+    "请输入认证器验证码": "请输入认证器验证码",
+    "请输入认证器验证码或备用码": "请输入认证器验证码或备用码",
+    "请输入说明": "请输入说明",
+    "请输入运行时长": "请输入运行时长",
+    "请输入邮箱!": "请输入邮箱!",
+    "请输入邮箱地址": "请输入邮箱地址",
+    "请输入邮箱验证码!": "请输入邮箱验证码!",
+    "请输入部署名称": "请输入部署名称",
+    "请输入部署名称以完成二次确认": "请输入部署名称以完成二次确认",
+    "请输入部署地区,例如:us-central1\n支持使用模型映射格式\n{\n    \"default\": \"us-central1\",\n    \"claude-3-5-sonnet-20240620\": \"europe-west1\"\n}": "请输入部署地区,例如:us-central1\n支持使用模型映射格式\n{\n    \"default\": \"us-central1\",\n    \"claude-3-5-sonnet-20240620\": \"europe-west1\"\n}",
+    "请输入金额": "请输入金额",
+    "请输入镜像地址": "请输入镜像地址",
+    "请输入问题标题": "请输入问题标题",
+    "请输入预警阈值": "请输入预警阈值",
+    "请输入预警额度": "请输入预警额度",
+    "请输入额度": "请输入额度",
+    "请输入验证码": "请输入验证码",
+    "请输入验证码或备用码": "请输入验证码或备用码",
+    "请输入默认 API 版本,例如:2025-04-01-preview": "请输入默认 API 版本,例如:2025-04-01-preview",
+    "请选择API地址": "请选择API地址",
+    "请选择一条规则进行编辑。": "请选择一条规则进行编辑。",
+    "请选择主模型": "请选择主模型",
+    "请选择产品": "请选择产品",
+    "请选择你的复制方式": "请选择你的复制方式",
+    "请选择使用模式": "请选择使用模式",
+    "请选择分组": "请选择分组",
+    "请选择发布日期": "请选择发布日期",
+    "请选择可以使用该渠道的分组": "请选择可以使用该渠道的分组",
+    "请选择可以使用该渠道的分组,留空则不更改": "请选择可以使用该渠道的分组,留空则不更改",
+    "请选择同步语言": "请选择同步语言",
+    "请选择名称匹配类型": "请选择名称匹配类型",
+    "请选择多密钥使用策略": "请选择多密钥使用策略",
+    "请选择密钥更新模式": "请选择密钥更新模式",
+    "请选择密钥格式": "请选择密钥格式",
+    "请选择支付方式": "请选择支付方式",
+    "请选择日志记录时间": "请选择日志记录时间",
+    "请选择模型": "请选择模型",
+    "请选择模型。": "请选择模型。",
+    "请选择消息优先级": "请选择消息优先级",
+    "请选择渠道类型": "请选择渠道类型",
+    "请选择硬件类型": "请选择硬件类型",
+    "请选择组类型": "请选择组类型",
+    "请选择至少一个部署位置": "请选择至少一个部署位置",
+    "请选择订阅套餐": "请选择订阅套餐",
+    "请选择该令牌支持的模型,留空支持所有模型": "请选择该令牌支持的模型,留空支持所有模型",
+    "请选择该渠道所支持的模型": "请选择该渠道所支持的模型",
+    "请选择该渠道所支持的模型,留空则不更改": "请选择该渠道所支持的模型,留空则不更改",
+    "请选择过期时间": "请选择过期时间",
+    "请选择通知方式": "请选择通知方式",
+    "调用次数": "调用次数",
+    "调用次数分布": "调用次数分布",
+    "调用次数排行": "调用次数排行",
+    "调试信息": "调试信息",
+    "谨慎": "谨慎",
+    "警告": "警告",
+    "警告:启用保活后,如果已经写入保活数据后渠道出错,系统无法重试,如果必须开启,推荐设置尽可能大的Ping间隔": "警告:启用保活后,如果已经写入保活数据后渠道出错,系统无法重试,如果必须开启,推荐设置尽可能大的Ping间隔",
+    "警告:禁用两步验证将永久删除您的验证设置和所有备用码,此操作不可撤销!": "警告:禁用两步验证将永久删除您的验证设置和所有备用码,此操作不可撤销!",
+    "豆包": "豆包",
+    "账单": "账单",
+    "账户充值": "账户充值",
+    "账户已删除!": "账户已删除!",
+    "账户已锁定": "账户已锁定",
+    "账户数据": "账户数据",
+    "账户管理": "账户管理",
+    "账户绑定": "账户绑定",
+    "账户绑定、安全设置和身份验证": "账户绑定、安全设置和身份验证",
+    "账户绑定管理": "账户绑定管理",
+    "账户统计": "账户统计",
+    "货币": "货币",
+    "货币单位": "货币单位",
+    "购买上限": "购买上限",
+    "购买兑换码": "购买兑换码",
+    "购买套餐后即可享受模型权益": "购买套餐后即可享受模型权益",
+    "购买或手动新增订阅会升级到该分组;当套餐失效/过期或手动作废/删除后,将回退到升级前分组。回退不会立即生效,通常会有几分钟延迟。": "购买或手动新增订阅会升级到该分组;当套餐失效/过期或手动作废/删除后,将回退到升级前分组。回退不会立即生效,通常会有几分钟延迟。",
+    "购买订阅套餐": "购买订阅套餐",
+    "费用信息": "费用信息",
+    "费用预估": "费用预估",
+    "资源消耗": "资源消耗",
+    "起始时间": "起始时间",
+    "超级管理员": "超级管理员",
+    "超级管理员未设置充值链接!": "超级管理员未设置充值链接!",
+    "超过阈值时拒绝新请求": "超过阈值时拒绝新请求",
+    "跟随日志": "跟随日志",
+    "跟随系统主题设置": "跟随系统主题设置",
+    "跨分组": "跨分组",
+    "跨分组重试": "跨分组重试",
+    "路径正则": "路径正则",
+    "路径正则(每行一个)": "路径正则(每行一个)",
+    "跳转": "跳转",
+    "轮询": "轮询",
+    "轮询模式": "轮询模式",
+    "轮询模式必须搭配Redis和内存缓存功能使用,否则性能将大幅降低,并且无法实现轮询功能": "轮询模式必须搭配Redis和内存缓存功能使用,否则性能将大幅降低,并且无法实现轮询功能",
+    "输入": "输入",
+    "输入 OIDC 的 Authorization Endpoint": "输入 OIDC 的 Authorization Endpoint",
+    "输入 OIDC 的 Client ID": "输入 OIDC 的 Client ID",
+    "输入 OIDC 的 Token Endpoint": "输入 OIDC 的 Token Endpoint",
+    "输入 OIDC 的 Userinfo Endpoint": "输入 OIDC 的 Userinfo Endpoint",
+    "输入IP地址后回车,如:8.8.8.8": "输入IP地址后回车,如:8.8.8.8",
+    "输入JSON对象": "输入JSON对象",
+    "输入价格": "输入价格",
+    "输入价格:{{symbol}}{{price}} / 1M tokens{{audioPrice}}": "输入价格:{{symbol}}{{price}} / 1M tokens{{audioPrice}}",
+    "输入你注册的 LinuxDO OAuth APP 的 ID": "输入你注册的 LinuxDO OAuth APP 的 ID",
+    "输入你的账户名{{username}}以确认删除": "输入你的账户名{{username}}以确认删除",
+    "输入域名后回车": "输入域名后回车",
+    "输入域名后回车,如:example.com": "输入域名后回车,如:example.com",
+    "输入密码,最短 8 位,最长 20 位": "输入密码,最短 8 位,最长 20 位",
+    "输入数字": "输入数字",
+    "输入标签或使用\",\"分隔多个标签": "输入标签或使用\",\"分隔多个标签",
+    "输入模型倍率": "输入模型倍率",
+    "输入每次价格": "输入每次价格",
+    "输入端口后回车,如:80 或 8000-8999": "输入端口后回车,如:80 或 8000-8999",
+    "输入系统提示词,用户的系统提示词将优先于此设置": "输入系统提示词,用户的系统提示词将优先于此设置",
+    "输入自定义模型名称": "输入自定义模型名称",
+    "输入补全价格": "输入补全价格",
+    "输入补全倍率": "输入补全倍率",
+    "输入要添加的邮箱域名": "输入要添加的邮箱域名",
+    "输入认证器应用显示的6位数字验证码": "输入认证器应用显示的6位数字验证码",
+    "输入邮箱地址": "输入邮箱地址",
+    "输入金额": "输入金额",
+    "输入项目名称,按回车添加": "输入项目名称,按回车添加",
+    "输入额度": "输入额度",
+    "输入验证码": "输入验证码",
+    "输入验证码完成设置": "输入验证码完成设置",
+    "输出": "输出",
+    "输出 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}}) * {{ratioType}} {{ratio}}": "输出 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}}) * {{ratioType}} {{ratio}}",
+    "输出价格": "输出价格",
+    "输出价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})": "输出价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})",
+    "输出倍率 {{completionRatio}}": "输出倍率 {{completionRatio}}",
+    "边栏设置": "边栏设置",
+    "过期于": "过期于",
+    "过期时间": "过期时间",
+    "过期时间不能早于当前时间!": "过期时间不能早于当前时间!",
+    "过期时间快捷设置": "过期时间快捷设置",
+    "过期时间格式错误!": "过期时间格式错误!",
+    "运营设置": "运营设置",
+    "运行中": "运行中",
+    "运行命令 (Command)": "运行命令 (Command)",
+    "运行时长": "运行时长",
+    "运行时长(小时)": "运行时长(小时)",
+    "返回修改": "返回修改",
+    "返回登录": "返回登录",
+    "这将删除超过 10 分钟未使用的临时缓存文件": "这将删除超过 10 分钟未使用的临时缓存文件",
+    "这是基础金额,实际扣费 = 基础金额 x 系统分组倍率。": "这是基础金额,实际扣费 = 基础金额 x 系统分组倍率。",
+    "这是重复键中的最后一个,其值将被使用": "这是重复键中的最后一个,其值将被使用",
+    "这里直接编辑 JSON 对象。适合简单覆盖参数的场景。": "这里直接编辑 JSON 对象。适合简单覆盖参数的场景。",
+    "进度": "进度",
+    "进行中": "进行中",
+    "进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用",
+    "违规扣费": "违规扣费",
+    "违规扣费金额": "违规扣费金额",
+    "连接保活设置": "连接保活设置",
+    "连接已断开": "连接已断开",
+    "连接测试中...": "连接测试中...",
+    "追加到现有密钥": "追加到现有密钥",
+    "追加模式:将新密钥添加到现有密钥列表末尾": "追加模式:将新密钥添加到现有密钥列表末尾",
+    "追加模式:新密钥将添加到现有密钥列表的末尾": "追加模式:新密钥将添加到现有密钥列表的末尾",
+    "追加模板": "追加模板",
+    "退出": "退出",
+    "退款": "退款",
+    "适用于个人使用的场景,不需要设置模型价格": "适用于个人使用的场景,不需要设置模型价格",
+    "适用于为多个用户提供服务的场景": "适用于为多个用户提供服务的场景",
+    "适用于展示系统功能的场景,提供基础功能演示": "适用于展示系统功能的场景,提供基础功能演示",
+    "适配 -thinking、-thinking-预算数字 和 -nothinking 后缀": "适配 -thinking、-thinking-预算数字 和 -nothinking 后缀",
+    "选择充值额度": "选择充值额度",
+    "选择分组": "选择分组",
+    "选择同步来源": "选择同步来源",
+    "选择同步渠道": "选择同步渠道",
+    "选择同步语言": "选择同步语言",
+    "选择容器": "选择容器",
+    "选择您的首选界面语言,设置将自动保存并同步到所有设备": "选择您的首选界面语言,设置将自动保存并同步到所有设备",
+    "选择成功": "选择成功",
+    "选择支付方式": "选择支付方式",
+    "选择支持的认证设备类型": "选择支持的认证设备类型",
+    "选择方式": "选择方式",
+    "选择时间": "选择时间",
+    "选择模型": "选择模型",
+    "选择模型供应商": "选择模型供应商",
+    "选择模型后可一键填充当前选中令牌(或本页第一个令牌)。": "选择模型后可一键填充当前选中令牌(或本页第一个令牌)。",
+    "选择模型开始对话": "选择模型开始对话",
+    "选择状态": "选择状态",
+    "选择硬件类型": "选择硬件类型",
+    "选择端点类型": "选择端点类型",
+    "选择系统运行模式": "选择系统运行模式",
+    "选择组类型": "选择组类型",
+    "选择要覆盖的冲突项": "选择要覆盖的冲突项",
+    "选择订阅套餐": "选择订阅套餐",
+    "选择语言": "选择语言",
+    "选择过期时间(可选,留空为永久)": "选择过期时间(可选,留空为永久)",
+    "选择部署位置(可多选)": "选择部署位置(可多选)",
+    "选择预设模板(可选)": "选择预设模板(可选)",
+    "透传请求体": "透传请求体",
+    "递归": "递归",
+    "递归策略": "递归策略",
+    "通义千问": "通义千问",
+    "通用设置": "通用设置",
+    "通知": "通知",
+    "通知、价格和隐私相关设置": "通知、价格和隐私相关设置",
+    "通知内容": "通知内容",
+    "通知内容,支持 {{value}} 变量占位符": "通知内容,支持 {{value}} 变量占位符",
+    "通知方式": "通知方式",
+    "通知标题": "通知标题",
+    "通知类型 (quota_exceed: 额度预警)": "通知类型 (quota_exceed: 额度预警)",
+    "通知邮箱": "通知邮箱",
+    "通知配置": "通知配置",
+    "通过划转功能将奖励额度转入到您的账户余额中": "通过划转功能将奖励额度转入到您的账户余额中",
+    "通过密码注册时需要进行邮箱验证": "通过密码注册时需要进行邮箱验证",
+    "通道 ${name} 余额更新成功!": "通道 ${name} 余额更新成功!",
+    "通道 ${name} 测试成功,模型 ${model} 耗时 ${time.toFixed(2)} 秒。": "通道 ${name} 测试成功,模型 ${model} 耗时 ${time.toFixed(2)} 秒。",
+    "通道 ${name} 测试成功,耗时 ${time.toFixed(2)} 秒。": "通道 ${name} 测试成功,耗时 ${time.toFixed(2)} 秒。",
+    "速率限制设置": "速率限制设置",
+    "逻辑": "逻辑",
+    "邀请": "邀请",
+    "邀请人": "邀请人",
+    "邀请人数": "邀请人数",
+    "邀请信息": "邀请信息",
+    "邀请奖励": "邀请奖励",
+    "邀请好友注册,好友充值后您可获得相应奖励": "邀请好友注册,好友充值后您可获得相应奖励",
+    "邀请好友获得额外奖励": "邀请好友获得额外奖励",
+    "邀请新用户奖励额度": "邀请新用户奖励额度",
+    "邀请的好友越多,获得的奖励越多": "邀请的好友越多,获得的奖励越多",
+    "邀请码": "邀请码",
+    "邀请获得额度": "邀请获得额度",
+    "邀请链接": "邀请链接",
+    "邀请链接已复制到剪切板": "邀请链接已复制到剪切板",
+    "邮件通知": "邮件通知",
+    "邮箱": "邮箱",
+    "邮箱地址": "邮箱地址",
+    "邮箱域名格式不正确,请输入有效的域名,如 gmail.com": "邮箱域名格式不正确,请输入有效的域名,如 gmail.com",
+    "邮箱域名白名单格式不正确": "邮箱域名白名单格式不正确",
+    "邮箱字段(可选)": "邮箱字段(可选)",
+    "邮箱账户绑定成功!": "邮箱账户绑定成功!",
+    "部分保存失败": "部分保存失败",
+    "部分保存失败,请重试": "部分保存失败,请重试",
+    "部分渠道测试失败:": "部分渠道测试失败:",
+    "部署 ID": "部署 ID",
+    "部署ID": "部署ID",
+    "部署中": "部署中",
+    "部署位置": "部署位置",
+    "部署位置加载中...": "部署位置加载中...",
+    "部署删除成功": "部署删除成功",
+    "部署名称": "部署名称",
+    "部署名称不匹配,请检查后重新输入": "部署名称不匹配,请检查后重新输入",
+    "部署名称只能包含字母、数字、横线、下划线和中文": "部署名称只能包含字母、数字、横线、下划线和中文",
+    "部署名称更新成功": "部署名称更新成功",
+    "部署启动成功": "部署启动成功",
+    "部署地区": "部署地区",
+    "部署请求中": "部署请求中",
+    "部署配置": "部署配置",
+    "部署重启成功": "部署重启成功",
+    "配置": "配置",
+    "配置 Discord OAuth": "配置 Discord OAuth",
+    "配置 GitHub OAuth App": "配置 GitHub OAuth App",
+    "配置 Linux DO OAuth": "配置 Linux DO OAuth",
+    "配置 OIDC": "配置 OIDC",
+    "配置 Passkey": "配置 Passkey",
+    "配置 SMTP": "配置 SMTP",
+    "配置 Telegram 登录": "配置 Telegram 登录",
+    "配置 Turnstile": "配置 Turnstile",
+    "配置 WeChat Server": "配置 WeChat Server",
+    "配置和消息已全部重置": "配置和消息已全部重置",
+    "配置套餐的有效时长": "配置套餐的有效时长",
+    "配置如何从用户信息 API 响应中提取用户数据,支持 JSONPath 语法": "配置如何从用户信息 API 响应中提取用户数据,支持 JSONPath 语法",
+    "配置完成后刷新页面即可使用模型部署功能": "配置完成后刷新页面即可使用模型部署功能",
+    "配置导入成功": "配置导入成功",
+    "配置已导出到下载文件夹": "配置已导出到下载文件夹",
+    "配置已重置,对话消息已保留": "配置已重置,对话消息已保留",
+    "配置文件同步": "配置文件同步",
+    "配置更新确认": "配置更新确认",
+    "配置有效的 io.net API Key": "配置有效的 io.net API Key",
+    "配置服务器端请求伪造(SSRF)防护,用于保护内网资源安全": "配置服务器端请求伪造(SSRF)防护,用于保护内网资源安全",
+    "配置模型部署服务提供商的API密钥和启用状态": "配置模型部署服务提供商的API密钥和启用状态",
+    "配置登录注册": "配置登录注册",
+    "配置自定义 OAuth 提供商,支持 GitHub Enterprise、GitLab、Gitea、Nextcloud、Keycloak、ORY 等兼容 OAuth 2.0 协议的身份提供商": "配置自定义 OAuth 提供商,支持 GitHub Enterprise、GitLab、Gitea、Nextcloud、Keycloak、ORY 等兼容 OAuth 2.0 协议的身份提供商",
+    "配置说明": "配置说明",
+    "配置邮箱域名白名单": "配置邮箱域名白名单",
+    "重启部署失败": "重启部署失败",
+    "重命名部署": "重命名部署",
+    "重复提交": "重复提交",
+    "重复的键名": "重复的键名",
+    "重复的键名,此值将被后面的同名键覆盖": "重复的键名,此值将被后面的同名键覆盖",
+    "重定向 URL 填": "重定向 URL 填",
+    "重新发送": "重新发送",
+    "重新生成": "重新生成",
+    "重新生成备用码": "重新生成备用码",
+    "重新生成备用码失败": "重新生成备用码失败",
+    "重新生成备用码将使现有的备用码失效,请确保您已保存了当前的备用码。": "重新生成备用码将使现有的备用码失效,请确保您已保存了当前的备用码。",
+    "重绘": "重绘",
+    "重置": "重置",
+    "重置 2FA": "重置 2FA",
+    "重置 Passkey": "重置 Passkey",
+    "重置为默认": "重置为默认",
+    "重置周期": "重置周期",
+    "重置失败": "重置失败",
+    "重置模型倍率": "重置模型倍率",
+    "重置统计": "重置统计",
+    "重置选项": "重置选项",
+    "重置邮件发送成功,请检查邮箱!": "重置邮件发送成功,请检查邮箱!",
+    "重置配置": "重置配置",
+    "重要提醒": "重要提醒",
+    "重试": "重试",
+    "重试建议": "重试建议",
+    "重试连接": "重试连接",
+    "金额": "金额",
+    "钱包管理": "钱包管理",
+    "链接中的{key}将自动替换为sk-xxxx,{address}将自动替换为系统设置的服务器地址,末尾不带/和/v1": "链接中的{key}将自动替换为sk-xxxx,{address}将自动替换为系统设置的服务器地址,末尾不带/和/v1",
+    "销毁容器": "销毁容器",
+    "错误": "错误",
+    "错误代码(可选)": "错误代码(可选)",
+    "错误消息(必填)": "错误消息(必填)",
+    "错误类型(可选)": "错误类型(可选)",
+    "键为分组名称,值为另一个 JSON 对象,键为分组名称,值为该分组的用户的特殊分组倍率,例如:{\"vip\": {\"default\": 0.5, \"test\": 1}},表示 vip 分组的用户在使用default分组的令牌时倍率为0.5,使用test分组时倍率为1": "键为分组名称,值为另一个 JSON 对象,键为分组名称,值为该分组的用户的特殊分组倍率,例如:{\"vip\": {\"default\": 0.5, \"test\": 1}},表示 vip 分组的用户在使用default分组的令牌时倍率为0.5,使用test分组时倍率为1",
+    "键为原状态码,值为要复写的状态码,仅影响本地判断": "键为原状态码,值为要复写的状态码,仅影响本地判断",
+    "键为用户分组名称,值为操作映射对象。内层键以\"+:\"开头表示添加指定分组(键值为分组名称,值为描述),以\"-:\"开头表示移除指定分组(键值为分组名称),不带前缀的键直接添加该分组。例如:{\"vip\": {\"+:premium\": \"高级分组\", \"special\": \"特殊分组\", \"-:default\": \"默认分组\"}},表示 vip 分组的用户可以使用 premium 和 special 分组,同时移除 default 分组的访问权限": "键为用户分组名称,值为操作映射对象。内层键以\"+:\"开头表示添加指定分组(键值为分组名称,值为描述),以\"-:\"开头表示移除指定分组(键值为分组名称),不带前缀的键直接添加该分组。例如:{\"vip\": {\"+:premium\": \"高级分组\", \"special\": \"特殊分组\", \"-:default\": \"默认分组\"}},表示 vip 分组的用户可以使用 premium 和 special 分组,同时移除 default 分组的访问权限",
+    "键为端点类型,值为路径和方法对象": "键为端点类型,值为路径和方法对象",
+    "键为请求中的模型名称,值为要替换的模型名称": "键为请求中的模型名称,值为要替换的模型名称",
+    "键名": "键名",
+    "镜像仓库密码": "镜像仓库密码",
+    "镜像仓库用户名": "镜像仓库用户名",
+    "镜像仓库配置": "镜像仓库配置",
+    "镜像地址": "镜像地址",
+    "镜像选择": "镜像选择",
+    "镜像配置": "镜像配置",
+    "问题标题": "问题标题",
+    "队列中": "队列中",
+    "附加条件": "附加条件",
+    "降低您账户的安全性": "降低您账户的安全性",
+    "降级": "降级",
+    "限制周期": "限制周期",
+    "限制周期统一使用上方配置的“限制周期”值。": "限制周期统一使用上方配置的“限制周期”值。",
+    "限流": "限流",
+    "限购": "限购",
+    "隐私政策": "隐私政策",
+    "隐私政策已更新": "隐私政策已更新",
+    "隐私政策更新失败": "隐私政策更新失败",
+    "隐私设置": "隐私设置",
+    "隐藏操作项": "隐藏操作项",
+    "隐藏调试": "隐藏调试",
+    "随机": "随机",
+    "随机模式": "随机模式",
+    "随机种子 (留空为随机)": "随机种子 (留空为随机)",
+    "零一万物": "零一万物",
+    "需要安全验证": "需要安全验证",
+    "需要登录访问": "需要登录访问",
+    "需要配置的项目": "需要配置的项目",
+    "需要重新完整设置才能再次启用": "需要重新完整设置才能再次启用",
+    "非必要,不建议启用模型限制": "非必要,不建议启用模型限制",
+    "非流": "非流",
+    "音乐预览": "音乐预览",
+    "音频倍率(仅部分模型支持该计费)": "音频倍率(仅部分模型支持该计费)",
+    "音频提示 {{input}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{completion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} = {{symbol}}{{total}}": "音频提示 {{input}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{completion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} = {{symbol}}{{total}}",
+    "音频提示价格:{{symbol}}{{price}} * {{audioRatio}} = {{symbol}}{{total}} / 1M tokens (音频倍率: {{audioRatio}})": "音频提示价格:{{symbol}}{{price}} * {{audioRatio}} = {{symbol}}{{total}} / 1M tokens (音频倍率: {{audioRatio}})",
+    "音频无法播放": "音频无法播放",
+    "音频补全价格:{{symbol}}{{price}} * {{audioRatio}} * {{audioCompRatio}} = {{symbol}}{{total}} / 1M tokens (音频补全倍率: {{audioCompRatio}})": "音频补全价格:{{symbol}}{{price}} * {{audioRatio}} * {{audioCompRatio}} = {{symbol}}{{total}} / 1M tokens (音频补全倍率: {{audioCompRatio}})",
+    "音频补全倍率(仅部分模型支持该计费)": "音频补全倍率(仅部分模型支持该计费)",
+    "音频输入相关的倍率设置,键为模型名称,值为倍率": "音频输入相关的倍率设置,键为模型名称,值为倍率",
+    "音频输出补全相关的倍率设置,键为模型名称,值为倍率": "音频输出补全相关的倍率设置,键为模型名称,值为倍率",
+    "页脚": "页脚",
+    "页面未找到,请检查您的浏览器地址是否正确": "页面未找到,请检查您的浏览器地址是否正确",
+    "顶栏管理": "顶栏管理",
+    "项": "项",
+    "项目": "项目",
+    "项目内容": "项目内容",
+    "项目操作按钮组": "项目操作按钮组",
+    "预估总费用": "预估总费用",
+    "预估费用仅供参考,实际费用可能略有差异": "预估费用仅供参考,实际费用可能略有差异",
+    "预填组管理": "预填组管理",
+    "预扣": "预扣",
+    "预览失败": "预览失败",
+    "预览更新": "预览更新",
+    "预览模板": "预览模板",
+    "预览请求体": "预览请求体",
+    "预计结束": "预计结束",
+    "预设模板": "预设模板",
+    "预警阈值必须为正数": "预警阈值必须为正数",
+    "频率惩罚,减少重复词汇的出现": "频率惩罚,减少重复词汇的出现",
+    "频率限制的周期(分钟)": "频率限制的周期(分钟)",
+    "颜色": "颜色",
+    "额度": "额度",
+    "额度充值": "额度充值",
+    "额度必须大于0": "额度必须大于0",
+    "额度提醒阈值": "额度提醒阈值",
+    "额度查询接口返回令牌额度而非用户额度": "额度查询接口返回令牌额度而非用户额度",
+    "额度设置": "额度设置",
+    "额度重置": "额度重置",
+    "额度预警阈值": "额度预警阈值",
+    "首尾生视频": "首尾生视频",
+    "首页": "首页",
+    "首页内容": "首页内容",
+    "验证": "验证",
+    "验证 Passkey": "验证 Passkey",
+    "验证失败,请重试": "验证失败,请重试",
+    "验证成功": "验证成功",
+    "验证数据库连接状态": "验证数据库连接状态",
+    "验证码": "验证码",
+    "验证码发送成功,请检查邮箱!": "验证码发送成功,请检查邮箱!",
+    "验证设置": "验证设置",
+    "验证身份": "验证身份",
+    "验证配置错误": "验证配置错误",
+    "高级": "高级",
+    "高级文本编辑": "高级文本编辑",
+    "高级设置": "高级设置",
+    "高级选项": "高级选项",
+    "高级配置": "高级配置",
+    "黑名单": "黑名单",
+    "默认": "默认",
+    "默认 API 版本": "默认 API 版本",
+    "默认 Responses API 版本,为空则使用上方版本": "默认 Responses API 版本,为空则使用上方版本",
+    "默认 TTL(秒)": "默认 TTL(秒)",
+    "默认为 5m 缓存创建倍率;1h 缓存创建倍率按固定乘法自动计算(当前为 1.6x)": "默认为 5m 缓存创建倍率;1h 缓存创建倍率按固定乘法自动计算(当前为 1.6x)",
+    "默认使用系统名称": "默认使用系统名称",
+    "默认助手消息": "默认助手消息",
+    "默认区域": "默认区域",
+    "默认区域,如: us-central1": "默认区域,如: us-central1",
+    "默认折叠侧边栏": "默认折叠侧边栏",
+    "默认测试模型": "默认测试模型",
+    "默认用户消息": "默认用户消息",
+    "默认补全倍率": "默认补全倍率"
+  }
+}

+ 94 - 40
web/src/pages/Setting/Chat/SettingsChats.jsx

@@ -21,6 +21,7 @@ import React, { useEffect, useState, useRef } from 'react';
 import {
   Banner,
   Button,
+  Dropdown,
   Form,
   Space,
   Spin,
@@ -37,6 +38,7 @@ import {
   IconDelete,
   IconSearch,
   IconSaveStroked,
+  IconBolt,
 } from '@douyinfe/semi-icons';
 import {
   compareObjects,
@@ -64,6 +66,37 @@ export default function SettingsChats(props) {
   const [searchText, setSearchText] = useState('');
   const modalFormRef = useRef();
 
+  const BUILTIN_TEMPLATES = [
+    { name: 'Cherry Studio', url: 'cherrystudio://providers/api-keys?v=1&data={cherryConfig}' },
+    { name: '流畅阅读', url: 'fluentread' },
+    { name: 'CC Switch', url: 'ccswitch' },
+    { name: 'Lobe Chat', url: 'https://chat-preview.lobehub.com/?settings={"keyVaults":{"openai":{"apiKey":"{key}","baseURL":"{address}/v1"}}}' },
+    { name: 'AI as Workspace', url: 'https://aiaw.app/set-provider?provider={"type":"openai","settings":{"apiKey":"{key}","baseURL":"{address}/v1","compatibility":"strict"}}' },
+    { name: 'AMA 问天', url: 'ama://set-api-key?server={address}&key={key}' },
+    { name: 'OpenCat', url: 'opencat://team/join?domain={address}&token={key}' },
+  ];
+
+  const addTemplates = (templates) => {
+    const existingNames = new Set(chatConfigs.map((c) => c.name));
+    const toAdd = templates.filter((tpl) => !existingNames.has(tpl.name));
+    if (toAdd.length === 0) {
+      showWarning(t('所选模板已存在'));
+      return;
+    }
+    let maxId = chatConfigs.length > 0
+      ? Math.max(...chatConfigs.map((c) => c.id))
+      : -1;
+    const newItems = toAdd.map((tpl) => ({
+      id: ++maxId,
+      name: tpl.name,
+      url: tpl.url,
+    }));
+    const newConfigs = [...chatConfigs, ...newItems];
+    setChatConfigs(newConfigs);
+    syncConfigsToJson(newConfigs);
+    showSuccess(t('已添加 {{count}} 个模板', { count: toAdd.length }));
+  };
+
   const jsonToConfigs = (jsonString) => {
     try {
       const configs = JSON.parse(jsonString);
@@ -105,49 +138,47 @@ export default function SettingsChats(props) {
 
   async function onSubmit() {
     try {
-      console.log('Starting validation...');
-      await refForm.current
-        .validate()
-        .then(() => {
-          console.log('Validation passed');
-          const updateArray = compareObjects(inputs, inputsRow);
-          if (!updateArray.length)
-            return showWarning(t('你似乎并没有修改什么'));
-          const requestQueue = updateArray.map((item) => {
-            let value = '';
-            if (typeof inputs[item.key] === 'boolean') {
-              value = String(inputs[item.key]);
-            } else {
-              value = inputs[item.key];
-            }
-            return API.put('/api/option/', {
-              key: item.key,
-              value,
-            });
-          });
-          setLoading(true);
-          Promise.all(requestQueue)
-            .then((res) => {
-              if (requestQueue.length === 1) {
-                if (res.includes(undefined)) return;
-              } else if (requestQueue.length > 1) {
-                if (res.includes(undefined))
-                  return showError(t('部分保存失败,请重试'));
-              }
-              showSuccess(t('保存成功'));
-              props.refresh();
-            })
-            .catch(() => {
-              showError(t('保存失败,请重试'));
-            })
-            .finally(() => {
-              setLoading(false);
-            });
-        })
-        .catch((error) => {
+      if (editMode === 'json' && refForm.current) {
+        try {
+          await refForm.current.validate();
+        } catch (error) {
           console.error('Validation failed:', error);
           showError(t('请检查输入'));
+          return;
+        }
+      }
+
+      const updateArray = compareObjects(inputs, inputsRow);
+      if (!updateArray.length)
+        return showWarning(t('你似乎并没有修改什么'));
+      const requestQueue = updateArray.map((item) => {
+        let value = '';
+        if (typeof inputs[item.key] === 'boolean') {
+          value = String(inputs[item.key]);
+        } else {
+          value = inputs[item.key];
+        }
+        return API.put('/api/option/', {
+          key: item.key,
+          value,
         });
+      });
+      setLoading(true);
+      try {
+        const res = await Promise.all(requestQueue);
+        if (res.includes(undefined)) {
+          if (requestQueue.length > 1) {
+            showError(t('部分保存失败,请重试'));
+          }
+          return;
+        }
+        showSuccess(t('保存成功'));
+        props.refresh();
+      } catch {
+        showError(t('保存失败,请重试'));
+      } finally {
+        setLoading(false);
+      }
     } catch (error) {
       showError(t('请检查输入'));
       console.error(error);
@@ -390,6 +421,29 @@ export default function SettingsChats(props) {
                 >
                   {t('添加聊天配置')}
                 </Button>
+                <Dropdown
+                  trigger='click'
+                  position='bottomLeft'
+                  menu={[
+                    ...BUILTIN_TEMPLATES.map((tpl, idx) => ({
+                      node: 'item',
+                      key: String(idx),
+                      name: tpl.name,
+                      onClick: () => addTemplates([tpl]),
+                    })),
+                    { node: 'divider', key: 'divider' },
+                    {
+                      node: 'item',
+                      key: 'all',
+                      name: t('全部填入'),
+                      onClick: () => addTemplates(BUILTIN_TEMPLATES),
+                    },
+                  ]}
+                >
+                  <Button icon={<IconBolt />}>
+                    {t('填入模板')}
+                  </Button>
+                </Dropdown>
                 <Button
                   type='primary'
                   theme='solid'

Some files were not shown because too many files changed in this diff