(formSectionRefs.current.basicInfo = el)}>
{/* Header: Basic Info */}
diff --git a/web/src/components/table/task-logs/TaskLogsColumnDefs.jsx b/web/src/components/table/task-logs/TaskLogsColumnDefs.jsx
index 530518d18..969977d17 100644
--- a/web/src/components/table/task-logs/TaskLogsColumnDefs.jsx
+++ b/web/src/components/table/task-logs/TaskLogsColumnDefs.jsx
@@ -39,6 +39,7 @@ import {
TASK_ACTION_GENERATE,
TASK_ACTION_REFERENCE_GENERATE,
TASK_ACTION_TEXT_GENERATE,
+ TASK_ACTION_REMIX_GENERATE,
} from '../../../constants/common.constant';
import { CHANNEL_OPTIONS } from '../../../constants/channel.constants';
@@ -125,6 +126,12 @@ const renderType = (type, t) => {
{t('参照生视频')}
);
+ case TASK_ACTION_REMIX_GENERATE:
+ return (
+ }>
+ {t('视频Remix')}
+
+ );
default:
return (
}>
@@ -359,7 +366,8 @@ export const getTaskLogsColumns = ({
record.action === TASK_ACTION_GENERATE ||
record.action === TASK_ACTION_TEXT_GENERATE ||
record.action === TASK_ACTION_FIRST_TAIL_GENERATE ||
- record.action === TASK_ACTION_REFERENCE_GENERATE;
+ record.action === TASK_ACTION_REFERENCE_GENERATE ||
+ record.action === TASK_ACTION_REMIX_GENERATE;
const isSuccess = record.status === 'SUCCESS';
const isUrl = typeof text === 'string' && /^https?:\/\//.test(text);
if (isSuccess && isVideoTask && isUrl) {
diff --git a/web/src/components/table/tokens/TokensColumnDefs.jsx b/web/src/components/table/tokens/TokensColumnDefs.jsx
index 4e092f9cc..ce8eab807 100644
--- a/web/src/components/table/tokens/TokensColumnDefs.jsx
+++ b/web/src/components/table/tokens/TokensColumnDefs.jsx
@@ -88,7 +88,7 @@ const renderStatus = (text, record, t) => {
};
// Render group column
-const renderGroupColumn = (text, t) => {
+const renderGroupColumn = (text, record, t) => {
if (text === 'auto') {
return (
{
position='top'
>
- {' '}
- {t('智能熔断')}{' '}
+ {t('智能熔断')}
+ {record && record.cross_group_retry ? `(${t('跨分组')})` : ''}
);
@@ -455,7 +455,7 @@ export const getTokensColumns = ({
title: t('分组'),
dataIndex: 'group',
key: 'group',
- render: (text) => renderGroupColumn(text, t),
+ render: (text, record) => renderGroupColumn(text, record, t),
},
{
title: t('密钥'),
diff --git a/web/src/components/table/tokens/modals/EditTokenModal.jsx b/web/src/components/table/tokens/modals/EditTokenModal.jsx
index 59a3894af..cc9f51b0e 100644
--- a/web/src/components/table/tokens/modals/EditTokenModal.jsx
+++ b/web/src/components/table/tokens/modals/EditTokenModal.jsx
@@ -73,6 +73,7 @@ const EditTokenModal = (props) => {
model_limits: [],
allow_ips: '',
group: '',
+ cross_group_retry: false,
tokenCount: 1,
});
@@ -377,6 +378,16 @@ const EditTokenModal = (props) => {
/>
)}
+
+
+
{
{
diff --git a/web/src/constants/common.constant.js b/web/src/constants/common.constant.js
index 57fbbbde5..a142a0eb5 100644
--- a/web/src/constants/common.constant.js
+++ b/web/src/constants/common.constant.js
@@ -42,3 +42,4 @@ export const TASK_ACTION_GENERATE = 'generate';
export const TASK_ACTION_TEXT_GENERATE = 'textGenerate';
export const TASK_ACTION_FIRST_TAIL_GENERATE = 'firstTailGenerate';
export const TASK_ACTION_REFERENCE_GENERATE = 'referenceGenerate';
+export const TASK_ACTION_REMIX_GENERATE = 'remixGenerate';
diff --git a/web/src/helpers/api.js b/web/src/helpers/api.js
index b87e5a2f8..6e09bf43c 100644
--- a/web/src/helpers/api.js
+++ b/web/src/helpers/api.js
@@ -231,8 +231,22 @@ export async function getOAuthState() {
}
}
-export async function onDiscordOAuthClicked(client_id) {
- const state = await getOAuthState();
+async function prepareOAuthState(options = {}) {
+ const { shouldLogout = false } = options;
+ if (shouldLogout) {
+ try {
+ await API.get('/api/user/logout', { skipErrorHandler: true });
+ } catch (err) {
+
+ }
+ localStorage.removeItem('user');
+ updateAPI();
+ }
+ return await getOAuthState();
+}
+
+export async function onDiscordOAuthClicked(client_id, options = {}) {
+ const state = await prepareOAuthState(options);
if (!state) return;
const redirect_uri = `${window.location.origin}/oauth/discord`;
const response_type = 'code';
@@ -242,8 +256,13 @@ export async function onDiscordOAuthClicked(client_id) {
);
}
-export async function onOIDCClicked(auth_url, client_id, openInNewTab = false) {
- const state = await getOAuthState();
+export async function onOIDCClicked(
+ auth_url,
+ client_id,
+ openInNewTab = false,
+ options = {},
+) {
+ const state = await prepareOAuthState(options);
if (!state) return;
const url = new URL(auth_url);
url.searchParams.set('client_id', client_id);
@@ -258,16 +277,19 @@ export async function onOIDCClicked(auth_url, client_id, openInNewTab = false) {
}
}
-export async function onGitHubOAuthClicked(github_client_id) {
- const state = await getOAuthState();
+export async function onGitHubOAuthClicked(github_client_id, options = {}) {
+ const state = await prepareOAuthState(options);
if (!state) return;
window.open(
`https://github.com/login/oauth/authorize?client_id=${github_client_id}&state=${state}&scope=user:email`,
);
}
-export async function onLinuxDOOAuthClicked(linuxdo_client_id) {
- const state = await getOAuthState();
+export async function onLinuxDOOAuthClicked(
+ linuxdo_client_id,
+ options = { shouldLogout: false },
+) {
+ const state = await prepareOAuthState(options);
if (!state) return;
window.open(
`https://connect.linux.do/oauth2/authorize?response_type=code&client_id=${linuxdo_client_id}&state=${state}`,
diff --git a/web/src/helpers/render.jsx b/web/src/helpers/render.jsx
index 425abb318..450c5799b 100644
--- a/web/src/helpers/render.jsx
+++ b/web/src/helpers/render.jsx
@@ -1086,9 +1086,12 @@ function renderPriceSimpleCore({
);
const finalGroupRatio = effectiveGroupRatio;
+ const { symbol, rate } = getCurrencyConfig();
if (modelPrice !== -1) {
- return i18next.t('价格:${{price}} * {{ratioType}}:{{ratio}}', {
- price: modelPrice,
+ const displayPrice = (modelPrice * rate).toFixed(6);
+ return i18next.t('价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}}', {
+ symbol: symbol,
+ price: displayPrice,
ratioType: ratioLabel,
ratio: finalGroupRatio,
});
diff --git a/web/src/hooks/channels/useChannelsData.jsx b/web/src/hooks/channels/useChannelsData.jsx
index f3f99f01e..f3df1bcca 100644
--- a/web/src/hooks/channels/useChannelsData.jsx
+++ b/web/src/hooks/channels/useChannelsData.jsx
@@ -26,6 +26,7 @@ import {
showSuccess,
loadChannelModels,
copy,
+ toBoolean,
} from '../../helpers';
import {
CHANNEL_OPTIONS,
@@ -85,6 +86,26 @@ export const useChannelsData = () => {
const [isBatchTesting, setIsBatchTesting] = useState(false);
const [modelTablePage, setModelTablePage] = useState(1);
const [selectedEndpointType, setSelectedEndpointType] = useState('');
+ const [globalPassThroughEnabled, setGlobalPassThroughEnabled] =
+ useState(false);
+
+ const fetchGlobalPassThroughEnabled = async () => {
+ try {
+ const res = await API.get('/api/option/');
+ const { success, data } = res?.data || {};
+ if (!success || !Array.isArray(data)) {
+ return;
+ }
+ const option = data.find(
+ (item) => item?.key === 'global.pass_through_request_enabled',
+ );
+ if (option) {
+ setGlobalPassThroughEnabled(toBoolean(option.value));
+ }
+ } catch (error) {
+ setGlobalPassThroughEnabled(false);
+ }
+ };
// 使用 ref 来避免闭包问题,类似旧版实现
const shouldStopBatchTestingRef = useRef(false);
@@ -140,6 +161,7 @@ export const useChannelsData = () => {
});
fetchGroups().then();
loadChannelModels().then();
+ fetchGlobalPassThroughEnabled().then();
}, []);
// Column visibility management
@@ -1026,6 +1048,7 @@ export const useChannelsData = () => {
enableBatchDelete,
statusFilter,
compactMode,
+ globalPassThroughEnabled,
// UI states
showEdit,
diff --git a/web/src/i18n/i18n.js b/web/src/i18n/i18n.js
index ac441470d..161d0a215 100644
--- a/web/src/i18n/i18n.js
+++ b/web/src/i18n/i18n.js
@@ -42,6 +42,7 @@ i18n
vi: viTranslation,
},
fallbackLng: 'zh',
+ nsSeparator: false,
interpolation: {
escapeValue: false,
},
diff --git a/web/src/i18n/locales/en.json b/web/src/i18n/locales/en.json
index 3f279e13a..fb34544a4 100644
--- a/web/src/i18n/locales/en.json
+++ b/web/src/i18n/locales/en.json
@@ -97,7 +97,7 @@
"Homepage URL 填": "Fill in the Homepage URL",
"ID": "ID",
"IP": "IP",
- "IP白名单": "IP whitelist",
+ "IP白名单(支持CIDR表达式)": "IP whitelist (supports CIDR expressions)",
"IP限制": "IP restrictions",
"IP黑名单": "IP blacklist",
"JSON": "JSON",
@@ -153,6 +153,7 @@
"URL链接": "URL Link",
"USD (美元)": "USD (US Dollar)",
"User Info Endpoint": "User Info Endpoint",
+ "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段": "Vertex AI does not support the functionResponse.id field. When enabled, this field will be automatically removed",
"Webhook 密钥": "Webhook Secret",
"Webhook 签名密钥": "Webhook Signature Key",
"Webhook地址": "Webhook URL",
@@ -548,6 +549,7 @@
"参数值": "Parameter value",
"参数覆盖": "Parameters override",
"参照生视频": "Reference video generation",
+ "视频Remix": "Video remix",
"友情链接": "Friendly links",
"发布日期": "Publish Date",
"发布时间": "Publish Time",
@@ -838,6 +840,9 @@
"开启后,对免费模型(倍率为0,或者价格为0)的模型也会预消耗额度": "After enabling, free models (ratio 0 or price 0) will also pre-consume quota",
"开启后,将定期发送ping数据保持连接活跃": "After enabling, ping data will be sent periodically to keep the connection active",
"开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启": "When enabled, all requests will be directly forwarded to the upstream without any processing (redirects and channel adaptation will also be disabled). Please enable with caution.",
+ "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "Request pass-through is enabled for this channel. Built-in NewAPI features such as parameter overrides, model redirection, and channel adaptation will be disabled. This is not a best practice. If this causes issues, please do not submit an issue.",
+ "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "Global request pass-through is enabled. Built-in NewAPI features such as parameter overrides, model redirection, and channel adaptation will be disabled. This is not a best practice. If this causes issues, please do not submit an issue.",
+ "该渠道已开启请求透传,参数覆写、模型重定向等 NewAPI 内置功能将失效,非最佳实践。": "Request pass-through is enabled for this channel; built-in NewAPI features such as parameter overrides and model redirection will be disabled. This is not a best practice.",
"开启后不限制:必须设置模型倍率": "After enabling, no limit: must set model ratio",
"开启后未登录用户无法访问模型广场": "When enabled, unauthenticated users cannot access the model marketplace",
"开启批量操作": "Enable batch selection",
@@ -1509,6 +1514,7 @@
"私有IP访问详细说明": "⚠️ Security Warning: Enabling this allows access to internal network resources (localhost, private networks). Only enable if you need to access internal services and understand the security implications.",
"私有部署地址": "Private Deployment Address",
"秒": "Second",
+ "移除 functionResponse.id 字段": "Remove functionResponse.id Field",
"移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目": "Removal of One API copyright mark must first be authorized. Project maintenance requires a lot of effort. If this project is meaningful to you, please actively support it.",
"窗口处理": "window handling",
"窗口等待": "window wait",
@@ -1751,7 +1757,7 @@
"请先阅读并同意用户协议和隐私政策": "Please read and agree to the user agreement and privacy policy first",
"请再次输入新密码": "Please enter the new password again",
"请前往个人设置 → 安全设置进行配置。": "Please go to Personal Settings → Security Settings to configure.",
- "请勿过度信任此功能,IP可能被伪造": "Do not over-trust this feature, IP can be spoofed",
+ "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用": "Do not over-trust this feature, IP can be spoofed, please use it in conjunction with gateways such as nginx and CDN",
"请在系统设置页面编辑分组倍率以添加新的分组:": "Please edit Group ratios in system settings to add new groups:",
"请填写完整的产品信息": "Please fill in complete product information",
"请填写完整的管理员账号信息": "Please fill in the complete administrator account information",
@@ -2176,6 +2182,9 @@
"默认区域,如: us-central1": "Default region, e.g.: us-central1",
"默认折叠侧边栏": "Default collapse sidebar",
"默认测试模型": "Default Test Model",
- "默认补全倍率": "Default completion ratio"
+ "默认补全倍率": "Default completion ratio",
+ "跨分组重试": "Cross-group retry",
+ "跨分组": "Cross-group",
+ "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道": "After enabling, when the current group channel fails, it will try the next group's channel in order"
}
}
diff --git a/web/src/i18n/locales/fr.json b/web/src/i18n/locales/fr.json
index ed1df8a83..39b06690e 100644
--- a/web/src/i18n/locales/fr.json
+++ b/web/src/i18n/locales/fr.json
@@ -47,12 +47,12 @@
"API Key 模式下不支持批量创建": "Création en lot non prise en charge en mode clé API",
"API 地址和相关配置": "URL de l'API et configuration associée",
"API 密钥": "Clé API",
- "API 文档": "Documentation de l'API",
- "API 配置": "Configuration de l'API",
- "API令牌管理": "Gestion des jetons d'API",
- "API使用记录": "Enregistrements d'utilisation de l'API",
+ "API 文档": "Docs API",
+ "API 配置": "Config. API",
+ "API令牌管理": "Jetons API",
+ "API使用记录": "Journaux d'API",
"API信息": "Informations sur l'API",
- "API信息管理,可以配置多个API地址用于状态展示和负载均衡(最多50个)": "Gestion des informations de l'API, vous pouvez configurer plusieurs adresses d'API pour l'affichage de l'état et l'équilibrage de charge (maximum 50)",
+ "API信息管理,可以配置多个API地址用于状态展示和负载均衡(最多50个)": "Infos API, vous pouvez configurer plusieurs adresses d'API pour l'affichage de l'état et l'équilibrage de charge (maximum 50)",
"API地址": "URL de base",
"API渠道配置": "Configuration du canal de l'API",
"API端点": "Points de terminaison de l'API",
@@ -99,7 +99,7 @@
"Homepage URL 填": "Remplir l'URL de la page d'accueil",
"ID": "ID",
"IP": "IP",
- "IP白名单": "Liste blanche d'adresses IP",
+ "IP白名单(支持CIDR表达式)": "Liste blanche d'adresses IP (prise en charge des expressions CIDR)",
"IP限制": "Restrictions d'IP",
"IP黑名单": "Liste noire d'adresses IP",
"JSON": "JSON",
@@ -112,7 +112,7 @@
"LinuxDO": "LinuxDO",
"LinuxDO ID": "ID LinuxDO",
"Logo 图片地址": "Adresse de l'image du logo",
- "Midjourney 任务记录": "Enregistrements de tâches Midjourney",
+ "Midjourney 任务记录": "Tâches Midjourney",
"MIT许可证": "Licence MIT",
"New API项目仓库地址:": "Adresse du référentiel du projet New API : ",
"OIDC": "OIDC",
@@ -136,7 +136,7 @@
"SMTP 访问凭证": "Informations d'identification d'accès SMTP",
"SMTP 账户": "Compte SMTP",
"SSRF防护开关详细说明": "L'interrupteur principal contrôle si la protection SSRF est activée. Lorsqu'elle est désactivée, toutes les vérifications SSRF sont contournées, autorisant l'accès à n'importe quelle URL. ⚠️ Ne désactivez cette fonctionnalité que dans des environnements entièrement fiables.",
- "SSRF防护设置": "Paramètres de protection SSRF",
+ "SSRF防护设置": "Protection SSRF",
"SSRF防护详细说明": "La protection SSRF empêche les utilisateurs malveillants d'utiliser votre serveur pour accéder aux ressources du réseau interne. Configurez des listes blanches pour les domaines/IP de confiance et limitez les ports autorisés. S'applique aux téléchargements de fichiers, aux webhooks et aux notifications.",
"store 字段用于授权 OpenAI 存储请求数据以评估和优化产品。默认关闭,开启后可能导致 Codex 无法正常使用": "Le champ store autorise OpenAI à stocker les données de requête pour l'évaluation et l'optimisation du produit. Désactivé par défaut. L'activation peut causer un dysfonctionnement de Codex",
"Stripe 设置": "Paramètres Stripe",
@@ -150,10 +150,11 @@
"Turnstile Site Key": "Clé du site Turnstile",
"Unix时间戳": "Horodatage Unix",
"Uptime Kuma地址": "Adresse Uptime Kuma",
- "Uptime Kuma监控分类管理,可以配置多个监控分类用于服务状态展示(最多20个)": "Gestion des catégories de surveillance Uptime Kuma, vous pouvez configurer plusieurs catégories de surveillance pour l'affichage de l'état du service (maximum 20)",
+ "Uptime Kuma监控分类管理,可以配置多个监控分类用于服务状态展示(最多20个)": "Catégories de surveillance Uptime Kuma, vous pouvez configurer plusieurs catégories de surveillance pour l'affichage de l'état du service (maximum 20)",
"URL链接": "Lien URL",
"USD (美元)": "USD (Dollar US)",
"User Info Endpoint": "Point de terminaison des informations utilisateur",
+ "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段": "Vertex AI ne prend pas en charge le champ functionResponse.id. Lorsqu'il est activé, ce champ sera automatiquement supprimé",
"Webhook 密钥": "Clé Webhook",
"Webhook 签名密钥": "Clé de signature Webhook",
"Webhook地址": "URL du Webhook",
@@ -203,9 +204,9 @@
"个": " individuel",
"个人中心": "Centre personnel",
"个人中心区域": "Zone du centre personnel",
- "个人信息设置": "Paramètres des informations personnelles",
- "个人设置": "Paramètres personnels",
- "个性化设置": "Paramètres de personnalisation",
+ "个人信息设置": "Infos personnelles",
+ "个人设置": "Profil",
+ "个性化设置": "Personnalisation",
"个性化设置左侧边栏的显示内容": "Personnaliser le contenu affiché dans la barre latérale gauche",
"个未配置模型": "modèles non configurés",
"个模型": "modèles",
@@ -263,26 +264,26 @@
"令牌已重置并已复制到剪贴板": "Le jeton a été réinitialisé et copié dans le presse-papiers",
"令牌更新成功!": "Jeton mis à jour avec succès !",
"令牌的额度仅用于限制令牌本身的最大额度使用量,实际的使用受到账户的剩余额度限制": "Le quota du jeton est uniquement utilisé pour limiter l'utilisation maximale du quota du jeton lui-même, et l'utilisation réelle est limitée par le quota restant du compte",
- "令牌管理": "Gestion des jetons",
+ "令牌管理": "Jetons",
"以下上游数据可能不可信:": "Les données en amont suivantes peuvent ne pas être fiables : ",
"以下文件解析失败,已忽略:{{list}}": "L'analyse des fichiers suivants a échoué, ignorés : {{list}}",
"以及": "et",
- "仪表盘设置": "Paramètres du tableau de bord",
+ "仪表盘设置": "Tableau de bord",
"价格": "Tarifs",
"价格:${{price}} * {{ratioType}}:{{ratio}}": "Prix : ${{price}} * {{ratioType}} : {{ratio}}",
- "价格设置": "Paramètres de prix",
+ "价格设置": "Prix",
"价格设置方式": "Méthode de configuration des prix",
"任务 ID": "ID de la tâche",
"任务ID": "ID de la tâche",
- "任务日志": "Journaux de tâches",
+ "任务日志": "Tâches",
"任务状态": "Statut de la tâche",
- "任务记录": "Enregistrements de tâches",
+ "任务记录": "Tâches",
"企业账户为特殊返回格式,需要特殊处理,如果非企业账户,请勿勾选": "Les comptes d'entreprise ont un format de retour spécial et nécessitent un traitement particulier. Si ce n'est pas un compte d'entreprise, veuillez ne pas cocher cette case.",
"优先级": "Priorité",
"优惠": "Remise",
"低于此额度时将发送邮件提醒用户": "Un rappel par e-mail sera envoyé lorsque le quota tombera en dessous de ce seuil",
"余额": "Solde",
- "余额充值管理": "Gestion de la recharge du solde",
+ "余额充值管理": "Recharge du solde",
"你似乎并没有修改什么": "Vous ne semblez rien avoir modifié",
"你可以在“自定义模型名称”处手动添加它们,然后点击填入后再提交,或者直接使用下方操作自动处理。": "Vous pouvez les ajouter manuellement dans « Noms de modèles personnalisés », cliquer sur Remplir puis soumettre, ou utiliser directement les actions ci-dessous pour les traiter automatiquement.",
"使用 Discord 继续": "Continuer avec Discord",
@@ -297,7 +298,7 @@
"使用 用户名 注册": "S'inscrire avec un nom d'utilisateur",
"使用 邮箱或用户名 登录": "Connectez-vous avec votre e-mail ou votre nom d'utilisateur",
"使用ID排序": "Trier par ID",
- "使用日志": "Journaux d'utilisation",
+ "使用日志": "Journaux",
"使用模式": "Mode d'utilisation",
"使用统计": "Statistiques d'utilisation",
"使用认证器应用(如 Google Authenticator、Microsoft Authenticator)扫描下方二维码:": "Utilisez une application d'authentification (telle que Google Authenticator, Microsoft Authenticator) pour scanner le code QR ci-dessous :",
@@ -327,7 +328,7 @@
"供应商名称": "Nom du fournisseur",
"供应商图标": "Icône du fournisseur",
"供应商更新成功!": "Fournisseur mis à jour avec succès !",
- "侧边栏管理(全局控制)": "Gestion de la barre latérale (contrôle global)",
+ "侧边栏管理(全局控制)": "Barre latérale (Global)",
"侧边栏设置保存成功": "Paramètres de la barre latérale enregistrés avec succès",
"保存": "Enregistrer",
"保存 Discord OAuth 设置": "Enregistrer les paramètres OAuth Discord",
@@ -401,7 +402,7 @@
"充值数量": "Quantité de recharge",
"充值数量,最低 ": "Quantité de recharge, minimum ",
"充值数量不能小于": "Le montant de la recharge ne peut pas être inférieur à",
- "充值方式设置": "Paramètres de la méthode de recharge",
+ "充值方式设置": "Méthodes recharge",
"充值方式设置不是合法的 JSON 字符串": "Les paramètres de la méthode de recharge ne sont pas une chaîne JSON valide",
"充值确认": "Confirmation de la recharge",
"充值账单": "Factures de recharge",
@@ -417,8 +418,8 @@
"兑换码创建成功!": "Code d'échange créé avec succès !",
"兑换码将以文本文件的形式下载,文件名为兑换码的名称。": "Le code d'échange sera téléchargé sous forme de fichier texte, le nom de fichier étant le nom du code d'échange.",
"兑换码更新成功!": "Code d'échange mis à jour avec succès !",
- "兑换码生成管理": "Gestion de la génération de codes d'échange",
- "兑换码管理": "Gestion des codes d'échange",
+ "兑换码生成管理": "Génération de codes",
+ "兑换码管理": "Codes d'échange",
"兑换额度": "Utiliser",
"全局控制侧边栏区域和功能显示,管理员隐藏的功能用户无法启用": "Contrôle global des zones et des fonctions de la barre latérale, les utilisateurs ne peuvent pas activer les fonctions masquées par les administrateurs",
"全局设置": "Paramètres globaux",
@@ -447,7 +448,7 @@
"共 {{total}} 项,当前显示 {{start}}-{{end}} 项": "Total {{total}} éléments, affichage actuel {{start}}-{{end}} éléments",
"关": "Fermer",
"关于": "À propos",
- "关于我们": "À propos de nous",
+ "关于我们": "Nous",
"关于系统的详细信息": "Informations détaillées sur le système",
"关于项目": "À propos du projet",
"关键字(id或者名称)": "Mot-clé (id ou nom)",
@@ -459,7 +460,7 @@
"其他": "Autre",
"其他注册选项": "Autres options d'inscription",
"其他登录选项": "Autres options de connexion",
- "其他设置": "Autres paramètres",
+ "其他设置": "Autres",
"其他详情": "Autres détails",
"内容": "Contenu",
"内容较大,已启用性能优化模式": "Le contenu est volumineux, le mode d'optimisation des performances a été activé",
@@ -471,14 +472,14 @@
"准备完成初始化": "Prêt à terminer l'initialisation",
"分类名称": "Nom de la catégorie",
"分组": "Groupe",
- "分组与模型定价设置": "Paramètres de groupe et de tarification du modèle",
+ "分组与模型定价设置": "Groupe et tarification",
"分组价格": "Prix de groupe",
"分组倍率": "Ratio",
- "分组倍率设置": "Paramètres de ratio de groupe",
+ "分组倍率设置": "Ratio de groupe",
"分组倍率设置,可以在此处新增分组或修改现有分组的倍率,格式为 JSON 字符串,例如:{\"vip\": 0.5, \"test\": 1},表示 vip 分组的倍率为 0.5,test 分组的倍率为 1": "Paramètres de ratio de groupe, vous pouvez ajouter de nouveaux groupes ou modifier le ratio des groupes existants ici, au format de chaîne JSON, par exemple : {\"vip\": 0,5, \"test\": 1}, ce qui signifie que le ratio du groupe vip est 0,5 et celui du groupe test est 1",
"分组特殊倍率": "Ratio spécial de groupe",
"分组特殊可用分组": "Groupes spéciaux disponibles",
- "分组设置": "Paramètres de groupe",
+ "分组设置": "Groupe",
"分组速率配置优先级高于全局速率限制。": "La priorité de configuration du taux de groupe est supérieure à la limite de taux globale.",
"分组速率限制": "Limitation du taux de groupe",
"分钟": "minutes",
@@ -491,7 +492,7 @@
"划转金额最低为": "Le montant minimum du virement est de",
"划转额度": "Montant du virement",
"列出的模型将不会自动添加或移除-thinking/-nothinking 后缀": "Les modèles listés ici n'ajouteront ni ne retireront automatiquement le suffixe -thinking/-nothinking.",
- "列设置": "Paramètres de colonne",
+ "列设置": "Colonnes",
"创建令牌默认选择auto分组,初始令牌也将设为auto(否则留空,为用户默认分组)": "Lors de la création d'un jeton, le groupe auto est sélectionné par défaut, et le jeton initial sera également défini sur auto (sinon laisser vide, pour le groupe par défaut de l'utilisateur)",
"创建失败": "Échec de la création",
"创建成功": "Création réussie",
@@ -551,6 +552,7 @@
"参数值": "Valeur du paramètre",
"参数覆盖": "Remplacement des paramètres",
"参照生视频": "Générer une vidéo par référence",
+ "视频Remix": "Remix vidéo",
"友情链接": "Liens amicaux",
"发布日期": "Date de publication",
"发布时间": "Heure de publication",
@@ -569,7 +571,7 @@
"可用端点类型": "Types de points de terminaison pris en charge",
"可用邀请额度": "Quota d'invitation disponible",
"可视化": "Visualisation",
- "可视化倍率设置": "Paramètres de ratio de modèle visuel",
+ "可视化倍率设置": "Ratio visuel",
"可视化编辑": "Édition visuelle",
"可选,公告的补充说明": "Facultatif, informations supplémentaires pour l'avis",
"可选值": "Valeur facultative",
@@ -695,7 +697,7 @@
"字段透传控制": "Contrôle du passage des champs",
"存在重复的键名:": "Il existe des noms de clés en double :",
"安全提醒": "Rappel de sécurité",
- "安全设置": "Paramètres de sécurité",
+ "安全设置": "Sécurité",
"安全验证": "Vérification de sécurité",
"安全验证级别": "Niveau de vérification de la sécurité",
"安装指南": "Guide d'installation",
@@ -718,7 +720,7 @@
"密码修改成功!": "Mot de passe changé avec succès !",
"密码已复制到剪贴板:": "Le mot de passe a été copié dans le presse-papiers : ",
"密码已重置并已复制到剪贴板:": "Le mot de passe a été réinitialisé et copié dans le presse-papiers : ",
- "密码管理": "Gestion des mots de passe",
+ "密码管理": "Mots de passe",
"密码重置": "Réinitialisation du mot de passe",
"密码重置完成": "Réinitialisation du mot de passe terminée",
"密码重置确认": "Confirmation de la réinitialisation du mot de passe",
@@ -760,8 +762,8 @@
"小时": "Heure",
"尚未使用": "Pas encore utilisé",
"局部重绘-提交": "Varier la région",
- "屏蔽词列表": "Liste des mots sensibles",
- "屏蔽词过滤设置": "Paramètres de filtrage des mots sensibles",
+ "屏蔽词列表": "Mots sensibles",
+ "屏蔽词过滤设置": "Filtrage mots sensibles",
"展开": "Développer",
"展开更多": "Développer plus",
"展示价格": "Prix affiché",
@@ -846,6 +848,9 @@
"开启后,对免费模型(倍率为0,或者价格为0)的模型也会预消耗额度": "Après activation, les modèles gratuits (ratio 0 ou prix 0) préconsommeront également du quota",
"开启后,将定期发送ping数据保持连接活跃": "Après activation, des données ping seront envoyées périodiquement pour maintenir la connexion active",
"开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启": "Après activation, toutes les requêtes seront directement transmises en amont sans aucun traitement (la redirection et l'adaptation de canal seront également désactivées), veuillez activer avec prudence",
+ "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "La transmission des requêtes est activée pour ce canal. Les fonctionnalités intégrées de NewAPI (surcharge des paramètres, redirection de modèle, adaptation du canal, etc.) seront désactivées. Ce n'est pas une bonne pratique. Si cela cause des problèmes, merci de ne pas ouvrir d'issue.",
+ "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "La transmission globale des requêtes est activée. Les fonctionnalités intégrées de NewAPI (surcharge des paramètres, redirection de modèle, adaptation du canal, etc.) seront désactivées. Ce n'est pas une bonne pratique. Si cela cause des problèmes, merci de ne pas ouvrir d'issue.",
+ "该渠道已开启请求透传,参数覆写、模型重定向等 NewAPI 内置功能将失效,非最佳实践。": "La transmission des requêtes est activée pour ce canal ; les fonctionnalités intégrées de NewAPI (comme la surcharge des paramètres et la redirection de modèle) seront désactivées. Ce n'est pas une bonne pratique.",
"开启后不限制:必须设置模型倍率": "Après l'activation, aucune limite : le ratio de modèle doit être défini",
"开启后未登录用户无法访问模型广场": "Lorsqu'il est activé, les utilisateurs non authentifiés ne peuvent pas accéder à la place du marché des modèles",
"开启批量操作": "Activer la sélection par lots",
@@ -996,7 +1001,7 @@
"支付地址": "Adresse de paiement",
"支付宝": "Alipay",
"支付方式": "Mode de paiement",
- "支付设置": "Paramètres de paiement",
+ "支付设置": "Paiement",
"支付请求失败": "Échec de la demande de paiement",
"支付金额": "Montant payé",
"支持6位TOTP验证码或8位备用码,可到`个人设置-安全设置-两步验证设置`配置或查看。": "Prend en charge le code de vérification TOTP à 6 chiffres ou le code de sauvegarde à 8 chiffres, peut être configuré ou consulté dans `Paramètres personnels - Paramètres de sécurité - Paramètres d'authentification à deux facteurs`.",
@@ -1026,9 +1031,9 @@
"数据格式错误": "Erreur de format de données",
"数据看板": "Tableau de bord",
"数据看板更新间隔": "Intervalle de mise à jour du tableau de bord des données",
- "数据看板设置": "Paramètres du tableau de bord des données",
+ "数据看板设置": "Tableau de bord",
"数据看板默认时间粒度": "Granularité temporelle par défaut du tableau de bord des données",
- "数据管理和日志查看": "Gestion des données et affichage des journaux",
+ "数据管理和日志查看": "Données et journaux",
"文件上传": "Téléchargement de fichier",
"文件搜索价格:{{symbol}}{{price}} / 1K 次": "Prix de recherche de fichier : {{symbol}}{{price}} / 1K fois",
"文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{price}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}} = {{symbol}}{{total}}": "Invite texte {{input}} tokens / 1M tokens * {{symbol}}{{price}} + Complétion texte {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}} = {{symbol}}{{total}}",
@@ -1064,7 +1069,7 @@
"无限额度": "Quota illimité",
"日志清理失败:": "Échec du nettoyage des journaux :",
"日志类型": "Type de journal",
- "日志设置": "Paramètres du journal",
+ "日志设置": "Config. journaux",
"日志详情": "Détails du journal",
"旧格式(直接覆盖):": "Ancien format (remplacement direct) :",
"旧格式模板": "Modèle d'ancien format",
@@ -1218,7 +1223,7 @@
"模型倍率值": "Valeur du ratio de modèle",
"模型倍率和补全倍率": "Ratio de modèle et ratio de complétion",
"模型倍率和补全倍率同时设置": "Le ratio de modèle et le ratio de complétion sont définis simultanément",
- "模型倍率设置": "Paramètres de ratio de modèle",
+ "模型倍率设置": "Ratio modèle",
"模型关键字": "mot-clé du modèle",
"模型列表已复制到剪贴板": "Liste des modèles copiée dans le presse-papiers",
"模型列表已更新": "La liste des modèles a été mise à jour",
@@ -1228,7 +1233,7 @@
"模型固定价格": "Prix du modèle par appel",
"模型图标": "Icône du modèle",
"模型定价,需要登录访问": "Tarification du modèle, nécessite une connexion pour y accéder",
- "模型广场": "Place du marché des modèles",
+ "模型广场": "Marché des modèles",
"模型支持的接口端点信息": "Informations sur les points de terminaison de l'API pris en charge par le modèle",
"模型数据分析": "Analyse des données du modèle",
"模型映射必须是合法的 JSON 格式!": "Le mappage de modèles doit être au format JSON valide !",
@@ -1240,7 +1245,7 @@
"模型的详细描述和基本特性": "Description détaillée et caractéristiques de base du modèle",
"模型相关设置": "Paramètres liés au modèle",
"模型社区需要大家的共同维护,如发现数据有误或想贡献新的模型数据,请访问:": "La communauté des modèles a besoin de la contribution de tous. Si vous trouvez des données incorrectes ou si vous souhaitez contribuer à de nouvelles données de modèle, veuillez visiter :",
- "模型管理": "Gestion des modèles",
+ "模型管理": "Modèles",
"模型组": "Groupe de modèles",
"模型补全倍率(仅对自定义模型有效)": "Ratio d'achèvement de modèle (uniquement efficace pour les modèles personnalisés)",
"模型请求速率限制": "Limite de débit de requête de modèle",
@@ -1366,7 +1371,7 @@
"渠道的基本配置信息": "Informations de configuration de base du canal",
"渠道的模型测试": "Test de modèle de canal",
"渠道的高级配置选项": "Options de configuration avancées du canal",
- "渠道管理": "Gestion des canaux",
+ "渠道管理": "Canaux",
"渠道额外设置": "Paramètres supplémentaires du canal",
"源地址": "Adresse source",
"演示站点": "Site de démonstration",
@@ -1409,7 +1414,7 @@
"用户信息": "Informations utilisateur",
"用户信息更新成功!": "Informations utilisateur mises à jour avec succès !",
"用户分组": "Votre groupe par défaut",
- "用户分组和额度管理": "Gestion des groupes d'utilisateurs et des quotas",
+ "用户分组和额度管理": "Groupes et quotas",
"用户分组配置": "Configuration du groupe d'utilisateurs",
"用户协议": "Accord utilisateur",
"用户协议已更新": "L'accord utilisateur a été mis à jour",
@@ -1424,10 +1429,10 @@
"用户每周期最多请求次数": "Nombre maximal de requêtes utilisateur par période",
"用户注册时看到的网站名称,比如'我的网站'": "Nom du site Web que les utilisateurs voient lors de l'inscription, par exemple 'Mon site Web'",
"用户的基本账户信息": "Informations de base du compte utilisateur",
- "用户管理": "Gestion des utilisateurs",
+ "用户管理": "Utilisateurs",
"用户组": "Groupe d'utilisateurs",
"用户账户创建成功!": "Compte utilisateur créé avec succès !",
- "用户账户管理": "Gestion des comptes utilisateurs",
+ "用户账户管理": "Comptes utilisateurs",
"用时/首字": "Temps/premier mot",
"留空则使用账号绑定的邮箱": "Si ce champ est laissé vide, l'adresse e-mail liée au compte sera utilisée",
"留空则使用默认端点;支持 {path, method}": "Laissez vide pour utiliser le point de terminaison par défaut ; prend en charge {path, method}",
@@ -1438,7 +1443,7 @@
"登录过期,请重新登录!": "Session expirée, veuillez vous reconnecter !",
"白名单": "Liste blanche",
"的前提下使用。": "doit être utilisé conformément aux conditions.",
- "监控设置": "Paramètres de surveillance",
+ "监控设置": "Surveillance",
"目标用户:{{username}}": "Utilisateur cible : {{username}}",
"直接提交": "Soumettre directement",
"相关项目": "Projets connexes",
@@ -1519,6 +1524,7 @@
"私有IP访问详细说明": "⚠️ Avertissement de sécurité : l'activation de cette option autorise l'accès aux ressources du réseau interne (localhost, réseaux privés). N'activez cette option que si vous devez accéder à des services internes et que vous comprenez les implications en matière de sécurité.",
"私有部署地址": "Adresse de déploiement privée",
"秒": "Seconde",
+ "移除 functionResponse.id 字段": "Supprimer le champ functionResponse.id",
"移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目": "La suppression de la marque de copyright de One API doit d'abord être autorisée. La maintenance du projet demande beaucoup d'efforts. Si ce projet a du sens pour vous, veuillez le soutenir activement.",
"窗口处理": "gestion des fenêtres",
"窗口等待": "attente de la fenêtre",
@@ -1551,14 +1557,14 @@
"精确": "Exact",
"系统": "Système",
"系统令牌已复制到剪切板": "Le jeton système a été copié dans le presse-papiers",
- "系统任务记录": "Enregistrements de tâches système",
+ "系统任务记录": "Tâches système",
"系统信息": "Informations système",
"系统公告": "Avis système",
- "系统公告管理,可以发布系统通知和重要消息(最多100个,前端显示最新20条)": "Gestion des avis système, vous pouvez publier des avis système et des messages importants (maximum 100, afficher les 20 derniers sur le front-end)",
+ "系统公告管理,可以发布系统通知和重要消息(最多100个,前端显示最新20条)": "Avis système, vous pouvez publier des avis système et des messages importants (maximum 100, afficher les 20 derniers sur le front-end)",
"系统初始化": "Initialisation du système",
"系统初始化失败,请重试": "L'initialisation du système a échoué, veuillez réessayer",
"系统初始化成功,正在跳转...": "Initialisation du système réussie, redirection en cours...",
- "系统参数配置": "Configuration des paramètres système",
+ "系统参数配置": "Paramètres système",
"系统名称": "Nom du système",
"系统名称已更新": "Nom du système mis à jour",
"系统名称更新失败": "Échec de la mise à jour du nom du système",
@@ -1569,7 +1575,7 @@
"系统文档和帮助信息": "Documentation système et informations d'aide",
"系统消息": "Messages système",
"系统管理功能": "Fonctions de gestion du système",
- "系统设置": "Paramètres système",
+ "系统设置": "Système",
"系统访问令牌": "Jeton d'accès au système",
"约": "Environ",
"索引": "Index",
@@ -1588,9 +1594,9 @@
"结束时间": "Heure de fin",
"结果图片": "Résultat",
"绘图": "Dessin",
- "绘图任务记录": "Enregistrements de tâches de dessin",
- "绘图日志": "Journaux de dessin",
- "绘图设置": "Paramètres de dessin",
+ "绘图任务记录": "Tâches dessin",
+ "绘图日志": "Dessins",
+ "绘图设置": "Dessin",
"统一的": "La Passerelle",
"统计Tokens": "Jetons statistiques",
"统计次数": "Nombre de statistiques",
@@ -1637,11 +1643,11 @@
"置信度": "Confiance",
"美元": "Dollar américain",
"聊天": "Discuter",
- "聊天会话管理": "Gestion des sessions de discussion",
+ "聊天会话管理": "Sessions de discussion",
"聊天区域": "Zone de discussion",
"聊天应用名称": "Nom de l'application de discussion",
"聊天应用名称已存在,请使用其他名称": "Le nom de l'application de discussion existe déjà, veuillez utiliser un autre nom",
- "聊天设置": "Paramètres de discussion",
+ "聊天设置": "Discussion",
"聊天配置": "Configuration de la discussion",
"聊天链接配置错误,请联系管理员": "Erreur de configuration du lien de discussion, veuillez contacter l'administrateur",
"联系我们": "Contactez-nous",
@@ -1761,7 +1767,7 @@
"请先阅读并同意用户协议和隐私政策": "Veuillez d'abord lire et accepter l'accord utilisateur et la politique de confidentialité",
"请再次输入新密码": "Veuillez saisir à nouveau le nouveau mot de passe",
"请前往个人设置 → 安全设置进行配置。": "Veuillez aller dans Paramètres personnels → Paramètres de sécurité pour configurer.",
- "请勿过度信任此功能,IP可能被伪造": "Ne faites pas trop confiance à cette fonctionnalité, l'IP peut être usurpée",
+ "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用": "Ne faites pas trop confiance à cette fonctionnalité, l'IP peut être usurpée, veuillez l'utiliser en conjonction avec des passerelles telles que nginx et cdn",
"请在系统设置页面编辑分组倍率以添加新的分组:": "Veuillez modifier les ratios de groupe dans les paramètres système pour ajouter de nouveaux groupes :",
"请填写完整的产品信息": "Veuillez renseigner l'ensemble des informations produit",
"请填写完整的管理员账号信息": "Veuillez remplir les informations complètes du compte administrateur",
@@ -1985,19 +1991,19 @@
"输出价格": "Prix de sortie",
"输出价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})": "Prix de sortie : {{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (ratio d'achèvement : {{completionRatio}})",
"输出倍率 {{completionRatio}}": "Ratio de sortie {{completionRatio}}",
- "边栏设置": "Paramètres de la barre latérale",
+ "边栏设置": "Barre latérale",
"过期时间": "Date d'expiration",
"过期时间不能早于当前时间!": "La date d'expiration ne peut pas être antérieure à l'heure actuelle !",
"过期时间快捷设置": "Paramètres rapides de la date d'expiration",
"过期时间格式错误!": "Erreur de format de la date d'expiration !",
- "运营设置": "Paramètres de fonctionnement",
+ "运营设置": "Opérations",
"返回修改": "Revenir pour modifier",
"返回登录": "Retour à la connexion",
"这是重复键中的最后一个,其值将被使用": "Ceci est la dernière clé dupliquée, sa valeur sera utilisée",
"进度": "calendrier",
"进行中": "En cours",
"进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "Lors de cette opération, cela peut entraîner des erreurs d'accès au canal. Veuillez ne l'utiliser que lorsqu'il y a un problème avec la base de données.",
- "连接保活设置": "Paramètres de maintien de connexion",
+ "连接保活设置": "Maintien connexion",
"连接已断开": "Connexion interrompue",
"追加到现有密钥": "Ajouter aux clés existantes",
"追加模式:将新密钥添加到现有密钥列表末尾": "Mode d'ajout : ajouter les nouvelles clés à la fin de la liste de clés existantes",
@@ -2029,7 +2035,7 @@
"选择过期时间(可选,留空为永久)": "Sélectionnez la date d'expiration (facultatif, laissez vide pour permanent)",
"透传请求体": "Corps de transmission",
"通义千问": "Qwen",
- "通用设置": "Paramètres généraux",
+ "通用设置": "Général",
"通知": "Avis",
"通知、价格和隐私相关设置": "Paramètres de notification, de prix et de confidentialité",
"通知内容": "Contenu de la notification",
@@ -2038,13 +2044,13 @@
"通知标题": "Titre de la notification",
"通知类型 (quota_exceed: 额度预警)": "Type de notification (quota_exceed : avertissement de quota)",
"通知邮箱": "E-mail de notification",
- "通知配置": "Configuration des notifications",
+ "通知配置": "Notifications",
"通过划转功能将奖励额度转入到您的账户余额中": "Transférez le montant de la récompense sur le solde de votre compte via la fonction de virement",
"通过密码注册时需要进行邮箱验证": "La vérification par e-mail est requise lors de l'inscription via mot de passe",
"通道 ${name} 余额更新成功!": "Le quota du canal ${name} a été mis à jour avec succès !",
"通道 ${name} 测试成功,模型 ${model} 耗时 ${time.toFixed(2)} 秒。": "Test du canal ${name} réussi, modèle ${model} a pris ${time.toFixed(2)} secondes.",
"通道 ${name} 测试成功,耗时 ${time.toFixed(2)} 秒。": "Test du canal ${name} réussi, a pris ${time.toFixed(2)} secondes.",
- "速率限制设置": "Paramètres de limitation de débit",
+ "速率限制设置": "Limitation débit",
"邀请": "Invitations",
"邀请人": "Inviteur",
"邀请人数": "Nombre de personnes invitées",
@@ -2106,7 +2112,7 @@
"重置邮件发送成功,请检查邮箱!": "L'e-mail de réinitialisation a été envoyé avec succès, veuillez vérifier votre e-mail !",
"重置配置": "Réinitialiser la configuration",
"重试": "Réessayer",
- "钱包管理": "Gestion du portefeuille",
+ "钱包管理": "Portefeuille",
"链接中的{key}将自动替换为sk-xxxx,{address}将自动替换为系统设置的服务器地址,末尾不带/和/v1": "Le {key} dans le lien sera automatiquement remplacé par sk-xxxx, le {address} sera automatiquement remplacé par l'adresse du serveur dans les paramètres système, et la fin n'aura pas / et /v1",
"错误": "Erreur",
"键为分组名称,值为另一个 JSON 对象,键为分组名称,值为该分组的用户的特殊分组倍率,例如:{\"vip\": {\"default\": 0.5, \"test\": 1}},表示 vip 分组的用户在使用default分组的令牌时倍率为0.5,使用test分组时倍率为1": "La clé est le nom du groupe, la valeur est un autre objet JSON, la clé est le nom du groupe, la valeur est le ratio de groupe spécial des utilisateurs de ce groupe, par exemple : {\"vip\": {\"default\": 0.5, \"test\": 1}}, ce qui signifie que les utilisateurs du groupe vip ont un ratio de 0.5 lors de l'utilisation de jetons du groupe default et un ratio de 1 lors de l'utilisation du groupe test",
@@ -2124,7 +2130,7 @@
"隐私政策": "Politique de confidentialité",
"隐私政策已更新": "La politique de confidentialité a été mise à jour",
"隐私政策更新失败": "Échec de la mise à jour de la politique de confidentialité",
- "隐私设置": "Paramètres de confidentialité",
+ "隐私设置": "Confidentialité",
"隐藏操作项": "Masquer les actions",
"隐藏调试": "Masquer le débogage",
"随机": "Aléatoire",
@@ -2145,7 +2151,7 @@
"音频输出补全相关的倍率设置,键为模型名称,值为倍率": "Paramètres de ratio liés à l'achèvement de la sortie audio, la clé est le nom du modèle, la valeur est le ratio",
"页脚": "Pied de page",
"页面未找到,请检查您的浏览器地址是否正确": "Page non trouvée, veuillez vérifier si l'adresse de votre navigateur est correcte",
- "顶栏管理": "Gestion de l'en-tête",
+ "顶栏管理": "En-tête",
"项目": "Élément",
"项目内容": "Contenu de l'élément",
"项目操作按钮组": "Groupe de boutons d'action du projet",
@@ -2160,7 +2166,7 @@
"额度必须大于0": "Le quota doit être supérieur à 0",
"额度提醒阈值": "Seuil de rappel de quota",
"额度查询接口返回令牌额度而非用户额度": "Affiche le quota de jetons au lieu du quota utilisateur",
- "额度设置": "Paramètres de quota",
+ "额度设置": "Quota",
"额度预警阈值": "Seuil d'avertissement de quota",
"首尾生视频": "Vidéo de début et de fin",
"首页": "Accueil",
@@ -2225,6 +2231,9 @@
"默认助手消息": "Bonjour ! Comment puis-je vous aider aujourd'hui ?",
"可选,用于复现结果": "Optionnel, pour des résultats reproductibles",
"随机种子 (留空为随机)": "Graine aléatoire (laisser vide pour aléatoire)",
- "默认补全倍率": "Taux de complétion par défaut"
+ "默认补全倍率": "Taux de complétion par défaut",
+ "跨分组重试": "Nouvelle tentative inter-groupes",
+ "跨分组": "Inter-groupes",
+ "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道": "Après activation, lorsque le canal du groupe actuel échoue, il essaiera le canal du groupe suivant dans l'ordre"
}
}
diff --git a/web/src/i18n/locales/ja.json b/web/src/i18n/locales/ja.json
index 0e4786c68..22e7606dd 100644
--- a/web/src/i18n/locales/ja.json
+++ b/web/src/i18n/locales/ja.json
@@ -82,7 +82,7 @@
"Homepage URL 填": "ホームページURLを入力してください",
"ID": "ID",
"IP": "IP",
- "IP白名单": "IPホワイトリスト",
+ "IP白名单(支持CIDR表达式)": "IPホワイトリスト(CIDR表記に対応)",
"IP限制": "IP制限",
"IP黑名单": "IPブラックリスト",
"JSON": "JSON",
@@ -136,6 +136,7 @@
"Uptime Kuma监控分类管理,可以配置多个监控分类用于服务状态展示(最多20个)": "Uptime Kumaの監視分類管理:サービスステータス表示用に、複数の監視分類を設定できます(最大20個)",
"URL链接": "URL",
"User Info Endpoint": "User Info Endpoint",
+ "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段": "Vertex AIはfunctionResponse.idフィールドをサポートしていません。有効にすると、このフィールドは自動的に削除されます",
"Webhook 签名密钥": "Webhook署名シークレット",
"Webhook地址": "Webhook URL",
"Webhook地址必须以https://开头": "Webhook URLは、https://で始まることが必須です",
@@ -510,6 +511,7 @@
"参数值": "パラメータ値",
"参数覆盖": "パラメータの上書き",
"参照生视频": "参照動画生成",
+ "视频Remix": "動画リミックス",
"友情链接": "関連リンク",
"发布日期": "公開日",
"发布时间": "公開日時",
@@ -794,6 +796,9 @@
"开启后,仅\"消费\"和\"错误\"日志将记录您的客户端IP地址": "有効にすると、「消費」と「エラー」のログにのみ、クライアントIPアドレスが記録されます",
"开启后,将定期发送ping数据保持连接活跃": "有効にすると、接続をアクティブに保つためにpingデータが定期的に送信されます",
"开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启": "有効にすると、すべてのリクエストは直接アップストリームにパススルーされ、いかなる処理も行われません(リダイレクトとチャネルの自動調整も無効になります)。有効にする際はご注意ください",
+ "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "このチャネルではリクエストのパススルーが有効です。パラメータ上書き、モデルリダイレクト、チャネル適応などの NewAPI 内蔵機能は無効になります。ベストプラクティスではありません。これにより問題が発生しても issue を投稿しないでください。",
+ "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "全体のリクエストパススルーが有効です。パラメータ上書き、モデルリダイレクト、チャネル適応などの NewAPI 内蔵機能は無効になります。ベストプラクティスではありません。これにより問題が発生しても issue を投稿しないでください。",
+ "该渠道已开启请求透传,参数覆写、模型重定向等 NewAPI 内置功能将失效,非最佳实践。": "このチャネルではリクエストのパススルーが有効です。パラメータ上書きやモデルリダイレクトなどの NewAPI 内蔵機能は無効になります。ベストプラクティスではありません。",
"开启后不限制:必须设置模型倍率": "有効化後は制限なし:モデル倍率の設定が必須",
"开启后未登录用户无法访问模型广场": "有効にすると、ログインしていないユーザーはモデルマーケットプレイスにアクセスできなくなります",
"开启批量操作": "一括操作を有効にする",
@@ -1439,6 +1444,7 @@
"私有IP访问详细说明": "プライベートIPアクセスの詳細説明",
"私有部署地址": "プライベートデプロイ先URL",
"秒": "秒",
+ "移除 functionResponse.id 字段": "functionResponse.idフィールドを削除",
"移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目": "One APIの著作権表示を削除するには、事前の許可が必要です。プロジェクトの維持には多大な労力がかかります。もしこのプロジェクトがあなたにとって有意義でしたら、積極的なご支援をお願いいたします",
"窗口处理": "ウィンドウ処理",
"窗口等待": "ウィンドウ待機中",
@@ -1668,7 +1674,7 @@
"请先阅读并同意用户协议和隐私政策": "まずユーザー利用規約とプライバシーポリシーをご確認の上、同意してください",
"请再次输入新密码": "新しいパスワードを再入力してください",
"请前往个人设置 → 安全设置进行配置。": "アカウント設定 → セキュリティ設定 にて設定してください。",
- "请勿过度信任此功能,IP可能被伪造": "IPは偽装される可能性があるため、この機能を過信しないでください",
+ "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用": "IPは偽装される可能性があるため、この機能を過信しないでください。nginxやCDNなどのゲートウェイと組み合わせて使用してください。",
"请在系统设置页面编辑分组倍率以添加新的分组:": "新規グループを追加するには、システム設定ページでグループ倍率を編集してください:",
"请填写完整的管理员账号信息": "管理者アカウント情報をすべて入力してください",
"请填写密钥": "APIキーを入力してください",
@@ -2124,6 +2130,9 @@
"默认用户消息": "こんにちは",
"默认助手消息": "こんにちは!何かお手伝いできることはありますか?",
"可选,用于复现结果": "オプション、結果の再現用",
- "随机种子 (留空为随机)": "ランダムシード(空欄でランダム)"
+ "随机种子 (留空为随机)": "ランダムシード(空欄でランダム)",
+ "跨分组重试": "グループ間リトライ",
+ "跨分组": "グループ間",
+ "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道": "有効にすると、現在のグループチャネルが失敗した場合、次のグループのチャネルを順番に試行します"
}
}
diff --git a/web/src/i18n/locales/ru.json b/web/src/i18n/locales/ru.json
index 92171a0c3..d71e12d1b 100644
--- a/web/src/i18n/locales/ru.json
+++ b/web/src/i18n/locales/ru.json
@@ -101,7 +101,7 @@
"Homepage URL 填": "URL домашней страницы:",
"ID": "ID",
"IP": "IP",
- "IP白名单": "Белый список IP",
+ "IP白名单(支持CIDR表达式)": "Белый список IP (поддерживает выражения CIDR)",
"IP限制": "Ограничения IP",
"IP黑名单": "Черный список IP",
"JSON": "JSON",
@@ -156,6 +156,7 @@
"URL链接": "URL ссылка",
"USD (美元)": "USD (доллар США)",
"User Info Endpoint": "Конечная точка информации о пользователе",
+ "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段": "Vertex AI не поддерживает поле functionResponse.id. При включении это поле будет автоматически удалено",
"Webhook 密钥": "Секрет вебхука",
"Webhook 签名密钥": "Ключ подписи Webhook",
"Webhook地址": "Адрес Webhook",
@@ -555,6 +556,7 @@
"参数值": "Значение параметра",
"参数覆盖": "Переопределение параметров",
"参照生视频": "Ссылка на генерацию видео",
+ "视频Remix": "Видео ремикс",
"友情链接": "Дружественные ссылки",
"发布日期": "Дата публикации",
"发布时间": "Время публикации",
@@ -855,6 +857,9 @@
"开启后,对免费模型(倍率为0,或者价格为0)的模型也会预消耗额度": "После включения бесплатные модели (коэффициент 0 или цена 0) тоже будут предварительно расходовать квоту",
"开启后,将定期发送ping数据保持连接活跃": "После включения будет периодически отправляться ping-данные для поддержания активности соединения",
"开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启": "После включения все запросы будут напрямую передаваться upstream без какой-либо обработки (перенаправление и адаптация каналов также будут отключены), включайте с осторожностью",
+ "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "Для этого канала включена сквозная передача запросов. Встроенные возможности NewAPI, такие как переопределение параметров, перенаправление моделей и адаптация канала, будут отключены. Это не является лучшей практикой. Если из-за этого возникнут проблемы, пожалуйста, не создавайте issue.",
+ "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "Глобальная сквозная передача запросов включена. Встроенные возможности NewAPI, такие как переопределение параметров, перенаправление моделей и адаптация канала, будут отключены. Это не является лучшей практикой. Если из-за этого возникнут проблемы, пожалуйста, не создавайте issue.",
+ "该渠道已开启请求透传,参数覆写、模型重定向等 NewAPI 内置功能将失效,非最佳实践。": "Для этого канала включена сквозная передача запросов; встроенные функции NewAPI, такие как переопределение параметров и перенаправление моделей, будут отключены. Это не является лучшей практикой.",
"开启后不限制:必须设置模型倍率": "После включения без ограничений: необходимо установить множители моделей",
"开启后未登录用户无法访问模型广场": "После включения незарегистрированные пользователи не смогут получить доступ к площади моделей",
"开启批量操作": "Включить пакетные операции",
@@ -1530,6 +1535,7 @@
"私有IP访问详细说明": "⚠️ Предупреждение безопасности: включение этой опции позволит доступ к ресурсам внутренней сети (localhost, частные сети). Включайте только при необходимости доступа к внутренним службам и понимании рисков безопасности.",
"私有部署地址": "Адрес частного развёртывания",
"秒": "секунда",
+ "移除 functionResponse.id 字段": "Удалить поле functionResponse.id",
"移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目": "Удаление авторских знаков One API требует предварительного разрешения, поддержка проекта требует больших усилий, если этот проект важен для вас, пожалуйста, поддержите его",
"窗口处理": "Обработка окна",
"窗口等待": "Ожидание окна",
@@ -1772,7 +1778,7 @@
"请先阅读并同意用户协议和隐私政策": "Пожалуйста, сначала прочтите и согласитесь с пользовательским соглашением и политикой конфиденциальности",
"请再次输入新密码": "Пожалуйста, введите новый пароль ещё раз",
"请前往个人设置 → 安全设置进行配置。": "Пожалуйста, перейдите в Личные настройки → Настройки безопасности для конфигурации.",
- "请勿过度信任此功能,IP可能被伪造": "Не доверяйте этой функции чрезмерно, IP может быть подделан",
+ "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用": "Не доверяйте этой функции чрезмерно, IP может быть подделан, используйте её вместе с nginx и CDN и другими шлюзами",
"请在系统设置页面编辑分组倍率以添加新的分组:": "Пожалуйста, отредактируйте коэффициенты групп на странице системных настроек для добавления новой группы:",
"请填写完整的产品信息": "Пожалуйста, заполните всю информацию о продукте",
"请填写完整的管理员账号信息": "Пожалуйста, заполните полную информацию об учётной записи администратора",
@@ -2235,6 +2241,9 @@
"默认用户消息": "Здравствуйте",
"默认助手消息": "Здравствуйте! Чем я могу вам помочь?",
"可选,用于复现结果": "Необязательно, для воспроизводимых результатов",
- "随机种子 (留空为随机)": "Случайное зерно (оставьте пустым для случайного)"
+ "随机种子 (留空为随机)": "Случайное зерно (оставьте пустым для случайного)",
+ "跨分组重试": "Повторная попытка между группами",
+ "跨分组": "Межгрупповой",
+ "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道": "После включения, когда канал текущей группы не работает, он будет пытаться использовать канал следующей группы по порядку"
}
}
diff --git a/web/src/i18n/locales/vi.json b/web/src/i18n/locales/vi.json
index 8af562f7a..51113ff44 100644
--- a/web/src/i18n/locales/vi.json
+++ b/web/src/i18n/locales/vi.json
@@ -82,7 +82,7 @@
"Homepage URL 填": "Điền URL trang chủ",
"ID": "ID",
"IP": "IP",
- "IP白名单": "Danh sách trắng IP",
+ "IP白名单(支持CIDR表达式)": "Danh sách trắng IP (hỗ trợ biểu thức CIDR)",
"IP限制": "Hạn chế IP",
"IP黑名单": "Danh sách đen IP",
"JSON": "JSON",
@@ -136,6 +136,7 @@
"Uptime Kuma监控分类管理,可以配置多个监控分类用于服务状态展示(最多20个)": "Quản lý danh mục giám sát Uptime Kuma, bạn có thể cấu hình nhiều danh mục giám sát để hiển thị trạng thái dịch vụ (tối đa 20)",
"URL链接": "Liên kết URL",
"User Info Endpoint": "User Info Endpoint",
+ "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段": "Vertex AI không hỗ trợ trường functionResponse.id. Khi bật, trường này sẽ tự động bị xóa",
"Webhook 签名密钥": "Khóa chữ ký Webhook",
"Webhook地址": "URL Webhook",
"Webhook地址必须以https://开头": "URL Webhook phải bắt đầu bằng https://",
@@ -510,6 +511,7 @@
"参数值": "Giá trị tham số",
"参数覆盖": "Ghi đè tham số",
"参照生视频": "Tạo video tham chiếu",
+ "视频Remix": "Remix video",
"友情链接": "Liên kết thân thiện",
"发布日期": "Ngày xuất bản",
"发布时间": "Thời gian xuất bản",
@@ -794,6 +796,9 @@
"开启后,仅\"消费\"和\"错误\"日志将记录您的客户端IP地址": "Sau khi bật, chỉ nhật ký \"tiêu thụ\" và \"lỗi\" sẽ ghi lại địa chỉ IP máy khách của bạn",
"开启后,将定期发送ping数据保持连接活跃": "Sau khi bật, dữ liệu ping sẽ được gửi định kỳ để giữ kết nối hoạt động",
"开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启": "Khi bật, tất cả các yêu cầu sẽ được chuyển tiếp trực tiếp đến thượng nguồn mà không cần xử lý (chuyển hướng và thích ứng kênh cũng sẽ bị vô hiệu hóa). Vui lòng bật một cách thận trọng.",
+ "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "Kênh này đã bật truyền qua yêu cầu. Các tính năng tích hợp của NewAPI như ghi đè tham số, chuyển hướng mô hình và thích ứng kênh sẽ bị vô hiệu hóa. Đây không phải là thực hành tốt nhất. Nếu phát sinh vấn đề, vui lòng không gửi issue.",
+ "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "Đã bật truyền qua yêu cầu toàn cục. Các tính năng tích hợp của NewAPI như ghi đè tham số, chuyển hướng mô hình và thích ứng kênh sẽ bị vô hiệu hóa. Đây không phải là thực hành tốt nhất. Nếu phát sinh vấn đề, vui lòng không gửi issue.",
+ "该渠道已开启请求透传,参数覆写、模型重定向等 NewAPI 内置功能将失效,非最佳实践。": "Kênh này đã bật truyền qua yêu cầu; các tính năng tích hợp của NewAPI như ghi đè tham số và chuyển hướng mô hình sẽ bị vô hiệu hóa. Đây không phải là thực hành tốt nhất.",
"开启后不限制:必须设置模型倍率": "Sau khi bật, không giới hạn: phải đặt tỷ lệ mô hình",
"开启后未登录用户无法访问模型广场": "Khi bật, người dùng chưa xác thực không thể truy cập thị trường mô hình",
"开启批量操作": "Bật chọn hàng loạt",
@@ -1986,7 +1991,7 @@
"请先阅读并同意用户协议和隐私政策": "Vui lòng đọc và đồng ý với thỏa thuận người dùng và chính sách bảo mật trước",
"请再次输入新密码": "Vui lòng nhập lại mật khẩu mới",
"请前往个人设置 → 安全设置进行配置。": "Vui lòng truy cập Cài đặt cá nhân → Cài đặt bảo mật để cấu hình.",
- "请勿过度信任此功能,IP可能被伪造": "Đừng quá tin tưởng tính năng này, IP có thể bị giả mạo",
+ "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用": "Đừng quá tin tưởng tính năng này, IP có thể bị giả mạo, vui lòng sử dụng cùng với nginx và các cổng khác như cdn",
"请在系统设置页面编辑分组倍率以添加新的分组:": "Vui lòng chỉnh sửa tỷ lệ nhóm trên trang cài đặt hệ thống để thêm nhóm mới:",
"请填写完整的管理员账号信息": "Vui lòng điền đầy đủ thông tin tài khoản quản trị viên",
"请填写密钥": "Vui lòng điền khóa",
@@ -2647,6 +2652,7 @@
"私有IP访问详细说明": "⚠️ Cảnh báo bảo mật: Bật tính năng này cho phép truy cập vào tài nguyên mạng nội bộ (localhost, mạng riêng). Chỉ bật nếu bạn cần truy cập các dịch vụ nội bộ và hiểu rõ các rủi ro bảo mật.",
"私有部署地址": "Địa chỉ triển khai riêng",
"秒": "Giây",
+ "移除 functionResponse.id 字段": "Xóa trường functionResponse.id",
"移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目": "Việc xóa dấu bản quyền One API trước tiên phải được ủy quyền. Việc bảo trì dự án đòi hỏi rất nhiều nỗ lực. Nếu dự án này có ý nghĩa với bạn, vui lòng chủ động ủng hộ dự án này.",
"窗口处理": "xử lý cửa sổ",
"窗口等待": "chờ cửa sổ",
@@ -2735,6 +2741,9 @@
"默认用户消息": "Xin chào",
"默认助手消息": "Xin chào! Tôi có thể giúp gì cho bạn?",
"可选,用于复现结果": "Tùy chọn, để tái tạo kết quả",
- "随机种子 (留空为随机)": "Hạt giống ngẫu nhiên (để trống cho ngẫu nhiên)"
+ "随机种子 (留空为随机)": "Hạt giống ngẫu nhiên (để trống cho ngẫu nhiên)",
+ "跨分组重试": "Thử lại giữa các nhóm",
+ "跨分组": "Giữa các nhóm",
+ "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道": "Sau khi bật, khi kênh nhóm hiện tại thất bại, nó sẽ thử kênh của nhóm tiếp theo theo thứ tự"
}
}
diff --git a/web/src/i18n/locales/zh.json b/web/src/i18n/locales/zh.json
index a07885638..35ec62ba1 100644
--- a/web/src/i18n/locales/zh.json
+++ b/web/src/i18n/locales/zh.json
@@ -95,7 +95,7 @@
"Homepage URL 填": "Homepage URL 填",
"ID": "ID",
"IP": "IP",
- "IP白名单": "IP白名单",
+ "IP白名单(支持CIDR表达式)": "IP白名单(支持CIDR表达式)",
"IP限制": "IP限制",
"IP黑名单": "IP黑名单",
"JSON": "JSON",
@@ -150,6 +150,7 @@
"URL链接": "URL链接",
"USD (美元)": "USD (美元)",
"User Info Endpoint": "User Info Endpoint",
+ "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段": "Vertex AI 不支持 functionResponse.id 字段,开启后将自动移除该字段",
"Webhook 密钥": "Webhook 密钥",
"Webhook 签名密钥": "Webhook 签名密钥",
"Webhook地址": "Webhook地址",
@@ -543,6 +544,7 @@
"参数值": "参数值",
"参数覆盖": "参数覆盖",
"参照生视频": "参照生视频",
+ "视频Remix": "视频 Remix",
"友情链接": "友情链接",
"发布日期": "发布日期",
"发布时间": "发布时间",
@@ -828,6 +830,9 @@
"开启后,对免费模型(倍率为0,或者价格为0)的模型也会预消耗额度": "开启后,对免费模型(倍率为0,或者价格为0)的模型也会预消耗额度",
"开启后,将定期发送ping数据保持连接活跃": "开启后,将定期发送ping数据保持连接活跃",
"开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启": "开启后,所有请求将直接透传给上游,不会进行任何处理(重定向和渠道适配也将失效),请谨慎开启",
+ "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "该渠道已开启请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。",
+ "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。",
+ "该渠道已开启请求透传,参数覆写、模型重定向等 NewAPI 内置功能将失效,非最佳实践。": "该渠道已开启请求透传,参数覆写、模型重定向等 NewAPI 内置功能将失效,非最佳实践。",
"开启后不限制:必须设置模型倍率": "开启后不限制:必须设置模型倍率",
"开启后未登录用户无法访问模型广场": "开启后未登录用户无法访问模型广场",
"开启批量操作": "开启批量操作",
@@ -1497,6 +1502,7 @@
"私有IP访问详细说明": "⚠️ 安全警告:启用此选项将允许访问内网资源(本地主机、私有网络)。仅在需要访问内部服务且了解安全风险的情况下启用。",
"私有部署地址": "私有部署地址",
"秒": "秒",
+ "移除 functionResponse.id 字段": "移除 functionResponse.id 字段",
"移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目": "移除 One API 的版权标识必须首先获得授权,项目维护需要花费大量精力,如果本项目对你有意义,请主动支持本项目",
"窗口处理": "窗口处理",
"窗口等待": "窗口等待",
@@ -1739,7 +1745,7 @@
"请先阅读并同意用户协议和隐私政策": "请先阅读并同意用户协议和隐私政策",
"请再次输入新密码": "请再次输入新密码",
"请前往个人设置 → 安全设置进行配置。": "请前往个人设置 → 安全设置进行配置。",
- "请勿过度信任此功能,IP可能被伪造": "请勿过度信任此功能,IP可能被伪造",
+ "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用": "请勿过度信任此功能,IP可能被伪造,请配合nginx和cdn等网关使用",
"请在系统设置页面编辑分组倍率以添加新的分组:": "请在系统设置页面编辑分组倍率以添加新的分组:",
"请填写完整的产品信息": "请填写完整的产品信息",
"请填写完整的管理员账号信息": "请填写完整的管理员账号信息",
@@ -2202,6 +2208,9 @@
"默认用户消息": "你好",
"默认助手消息": "你好!有什么我可以帮助你的吗?",
"可选,用于复现结果": "可选,用于复现结果",
- "随机种子 (留空为随机)": "随机种子 (留空为随机)"
+ "随机种子 (留空为随机)": "随机种子 (留空为随机)",
+ "跨分组重试": "跨分组重试",
+ "跨分组": "跨分组",
+ "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道": "开启后,当前分组渠道失败时会按顺序尝试下一个分组的渠道"
}
}
diff --git a/web/src/index.css b/web/src/index.css
index 251bf79c6..dff5360b9 100644
--- a/web/src/index.css
+++ b/web/src/index.css
@@ -108,6 +108,7 @@ code {
display: flex;
flex-direction: column;
transition: width 0.3s ease;
+ background: var(--semi-color-bg-0);
}
.sidebar-nav {
@@ -221,6 +222,22 @@ code {
padding-top: 12px;
}
+@media (max-width: 767px) {
+ .sidebar-container {
+ background: var(--semi-color-bg-1);
+ border-right: 1px solid var(--semi-color-border);
+ }
+
+ .sidebar-nav {
+ background: var(--semi-color-bg-1);
+ }
+
+ .sidebar-collapse-button {
+ background-color: var(--semi-color-bg-1);
+ box-shadow: 0 -10px 10px -5px var(--semi-color-bg-1);
+ }
+}
+
/* ==================== 聊天界面样式 ==================== */
.semi-chat {
padding-top: 0 !important;
diff --git a/web/src/pages/Setting/Model/SettingGeminiModel.jsx b/web/src/pages/Setting/Model/SettingGeminiModel.jsx
index e75a4ca91..75b0f0242 100644
--- a/web/src/pages/Setting/Model/SettingGeminiModel.jsx
+++ b/web/src/pages/Setting/Model/SettingGeminiModel.jsx
@@ -46,6 +46,7 @@ const DEFAULT_GEMINI_INPUTS = {
'gemini.thinking_adapter_enabled': false,
'gemini.thinking_adapter_budget_tokens_percentage': 0.6,
'gemini.function_call_thought_signature_enabled': true,
+ 'gemini.remove_function_response_id_enabled': true,
};
export default function SettingGeminiModel(props) {
@@ -186,6 +187,23 @@ export default function SettingGeminiModel(props) {
/>
+
+
+
+ setInputs({
+ ...inputs,
+ 'gemini.remove_function_response_id_enabled': value,
+ })
+ }
+ />
+
+