chore: update Codex channel (#5461)

This commit is contained in:
Seefs
2026-06-12 23:45:15 +08:00
committed by GitHub
parent d0c4305a16
commit 1292b8b2d5
27 changed files with 100 additions and 1039 deletions
@@ -1,172 +0,0 @@
/*
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, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import {
Modal,
Button,
Space,
Typography,
Input,
Banner,
} from '@douyinfe/semi-ui';
import { API, copy, showError, showSuccess } from '../../../../helpers';
const { Text } = Typography;
const CodexOAuthModal = ({ visible, onCancel, onSuccess }) => {
const { t } = useTranslation();
const [loading, setLoading] = useState(false);
const [authorizeUrl, setAuthorizeUrl] = useState('');
const [input, setInput] = useState('');
const startOAuth = async () => {
setLoading(true);
try {
const res = await API.post(
'/api/channel/codex/oauth/start',
{},
{ skipErrorHandler: true },
);
if (!res?.data?.success) {
console.error('Codex OAuth start failed:', res?.data?.message);
throw new Error(t('启动授权失败'));
}
const url = res?.data?.data?.authorize_url || '';
if (!url) {
console.error(
'Codex OAuth start response missing authorize_url:',
res?.data,
);
throw new Error(t('响应缺少授权链接'));
}
setAuthorizeUrl(url);
window.open(url, '_blank', 'noopener,noreferrer');
showSuccess(t('已打开授权页面'));
} catch (error) {
showError(error?.message || t('启动授权失败'));
} finally {
setLoading(false);
}
};
const completeOAuth = async () => {
if (!input || !input.trim()) {
showError(t('请先粘贴回调 URL'));
return;
}
setLoading(true);
try {
const res = await API.post(
'/api/channel/codex/oauth/complete',
{ input },
{ skipErrorHandler: true },
);
if (!res?.data?.success) {
console.error('Codex OAuth complete failed:', res?.data?.message);
throw new Error(t('授权失败'));
}
const key = res?.data?.data?.key || '';
if (!key) {
console.error('Codex OAuth complete response missing key:', res?.data);
throw new Error(t('响应缺少凭据'));
}
onSuccess && onSuccess(key);
showSuccess(t('已生成授权凭据'));
onCancel && onCancel();
} catch (error) {
showError(error?.message || t('授权失败'));
} finally {
setLoading(false);
}
};
useEffect(() => {
if (!visible) return;
setAuthorizeUrl('');
setInput('');
}, [visible]);
return (
<Modal
title={t('Codex 授权')}
visible={visible}
onCancel={onCancel}
maskClosable={false}
closeOnEsc
width={720}
footer={
<Space>
<Button theme='borderless' onClick={onCancel} disabled={loading}>
{t('取消')}
</Button>
<Button
theme='solid'
type='primary'
onClick={completeOAuth}
loading={loading}
>
{t('生成并填入')}
</Button>
</Space>
}
>
<Space vertical spacing='tight' style={{ width: '100%' }}>
<Banner
type='info'
description={t(
'1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。',
)}
/>
<Space wrap>
<Button type='primary' onClick={startOAuth} loading={loading}>
{t('打开授权页面')}
</Button>
<Button
theme='outline'
disabled={!authorizeUrl || loading}
onClick={() => copy(authorizeUrl)}
>
{t('复制授权链接')}
</Button>
</Space>
<Input
value={input}
onChange={(value) => setInput(value)}
placeholder={t('请粘贴完整回调 URL(包含 code 与 state')}
showClear
/>
<Text type='tertiary' size='small'>
{t(
'说明:生成结果是可直接粘贴到渠道密钥里的 JSON(包含 access_token / refresh_token / account_id)。',
)}
</Text>
</Space>
</Modal>
);
};
export default CodexOAuthModal;
@@ -60,7 +60,6 @@ import {
import ModelSelectModal from './ModelSelectModal';
import SingleModelSelectModal from './SingleModelSelectModal';
import OllamaModelModal from './OllamaModelModal';
import CodexOAuthModal from './CodexOAuthModal';
import ParamOverrideEditorModal from './ParamOverrideEditorModal';
import JSONEditor from '../../../common/ui/JSONEditor';
import SecureVerificationModal from '../../../common/modals/SecureVerificationModal';
@@ -381,7 +380,6 @@ const EditChannelModal = (props) => {
}, [inputs.param_override, t]);
const [isIonetChannel, setIsIonetChannel] = useState(false);
const [ionetMetadata, setIonetMetadata] = useState(null);
const [codexOAuthModalVisible, setCodexOAuthModalVisible] = useState(false);
const [codexCredentialRefreshing, setCodexCredentialRefreshing] =
useState(false);
const [paramOverrideEditorVisible, setParamOverrideEditorVisible] =
@@ -1227,11 +1225,6 @@ const EditChannelModal = (props) => {
}
};
const handleCodexOAuthGenerated = (key) => {
handleInputChange('key', key);
formatJsonField('key');
};
const handleRefreshCodexCredential = async () => {
if (!isEdit) return;
@@ -2847,17 +2840,6 @@ const EditChannelModal = (props) => {
</Text>
<Space wrap spacing='tight'>
<Button
size='small'
type='primary'
theme='outline'
onClick={() =>
setCodexOAuthModalVisible(true)
}
disabled={isIonetLocked}
>
{t('Codex 授权')}
</Button>
{isEdit && (
<Button
size='small'
@@ -2897,12 +2879,6 @@ const EditChannelModal = (props) => {
autosize
showClear
/>
<CodexOAuthModal
visible={codexOAuthModalVisible}
onCancel={() => setCodexOAuthModalVisible(false)}
onSuccess={handleCodexOAuthGenerated}
/>
</>
) : inputs.type === 41 &&
(inputs.vertex_key_type || 'json') === 'json' ? (
+1 -1
View File
@@ -187,7 +187,7 @@ export const CHANNEL_OPTIONS = [
{
value: 57,
color: 'blue',
label: 'Codex (OpenAI OAuth)',
label: 'ChatGPT Subscription (Codex)',
},
];
-6
View File
@@ -46,7 +46,6 @@
"0.002-1之间的小数": "Decimal between 0.002-1",
"0.1以上的小数": "Decimal above 0.1",
"1. 管理员在此创建分组并设置倍率": "1. Admin creates groups and sets ratios here",
"1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。": "1) Click \"Open Authorization Page\" to complete login; 2) The browser will redirect to localhost (it's OK if the page doesn't load); 3) Copy the full URL from the address bar and paste it below; 4) Click \"Generate and Fill\".",
"10 - 最高": "10 - Highest",
"1h缓存创建 {{price}} / 1M tokens": "1h cache creation {{price}} / 1M tokens",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "1h cache creation {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
@@ -115,7 +114,6 @@
"Claude请求头追加": "Claude request header append",
"Client ID": "Client ID",
"Client Secret": "Client Secret",
"Codex 授权": "Codex Authorization",
"Codex 渠道不支持批量创建": "Codex channel does not support batch creation",
"common.changeLanguage": "Change Language",
"Completion tokens": "Completion tokens",
@@ -1166,7 +1164,6 @@
"复制所有模型": "Copy all models",
"复制所选令牌": "Copy selected token",
"复制所选兑换码到剪贴板": "Copy selected redemption codes to clipboard",
"复制授权链接": "Copy Authorization Link",
"复制日志": "Copy Logs",
"复制渠道的所有信息": "Copy all information for a channel",
"复制版本号": "Copy Version",
@@ -1392,7 +1389,6 @@
"已开启全局请求透传:参数覆写、模型重定向、渠道适配等 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.",
"已忽略模型": "",
"已成功开始测试所有已启用通道,请刷新页面查看结果。": "Successfully started testing all enabled channels. Please refresh page to view results.",
"已打开授权页面": "Authorization page opened",
"已打开支付页面": "Payment page opened",
"已批量处理上游模型更新:渠道 {{channels}} 个,加入 {{added}} 个,删除 {{removed}} 个,失败 {{fails}} 个": "",
"已提交": "Submitted",
@@ -1415,7 +1411,6 @@
"已清理 {{count}} 个日志文件,释放 {{size}}_other": "",
"已清空": "Cleared",
"已清空测试结果": "Cleared test results",
"已生成授权凭据": "Authorization credentials generated",
"已用": "Used",
"已用/剩余": "Used/Remaining",
"已用额度": "Quota used",
@@ -1599,7 +1594,6 @@
"手动输入": "Manual input",
"打开 CC Switch": "Open CC Switch",
"打开侧边栏": "Open sidebar",
"打开授权页面": "Open Authorization Page",
"扣费": "Charge",
"执行 GC": "Run GC",
"执行中": "processing",
-6
View File
@@ -50,7 +50,6 @@
"0.002-1之间的小数": "Décimal entre 0,002-1",
"0.1以上的小数": "Décimal supérieur à 0,1",
"1. 管理员在此创建分组并设置倍率": "1. Admin creates groups and sets ratios here",
"1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。": "1) Cliquez sur « Ouvrir la page d'autorisation » pour vous connecter ; 2) Le navigateur redirigera vers localhost (ce n'est pas grave si la page ne s'ouvre pas) ; 3) Copiez l'URL complète de la barre d'adresse et collez-la ci-dessous ; 4) Cliquez sur « Générer et remplir ».",
"10 - 最高": "10 - La plus haute",
"1h缓存创建 {{price}} / 1M tokens": "Création de cache 1h {{price}} / 1M tokens",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Création de cache 1h {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
@@ -117,7 +116,6 @@
"Claude请求头追加": "Ajout des en-tetes de requete Claude",
"Client ID": "ID client",
"Client Secret": "Secret client",
"Codex 授权": "Autorisation Codex",
"Codex 渠道不支持批量创建": "Le canal Codex ne prend pas en charge la création par lot",
"common.changeLanguage": "Changer de langue",
"Completion tokens": "Completion tokens",
@@ -1162,7 +1160,6 @@
"复制所有模型": "Copier tous les modèles",
"复制所选令牌": "Copier le jeton sélectionné",
"复制所选兑换码到剪贴板": "Copier les codes d'échange sélectionnés dans le presse-papiers",
"复制授权链接": "Copier le lien d'autorisation",
"复制日志": "Copy Logs",
"复制渠道的所有信息": "Copier toutes les informations d'un canal",
"复制版本号": "Copy Version",
@@ -1394,7 +1391,6 @@
"已开启全局请求透传:参数覆写、模型重定向、渠道适配等 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.",
"已忽略模型": "",
"已成功开始测试所有已启用通道,请刷新页面查看结果。": "Le test de tous les canaux activés a démarré avec succès. Veuillez actualiser la page pour voir les résultats.",
"已打开授权页面": "Page d'autorisation ouverte",
"已打开支付页面": "Page de paiement ouverte",
"已批量处理上游模型更新:渠道 {{channels}} 个,加入 {{added}} 个,删除 {{removed}} 个,失败 {{fails}} 个": "",
"已提交": "Soumis",
@@ -1420,7 +1416,6 @@
"已清理 {{count}} 个日志文件,释放 {{size}}_other": "",
"已清空": "Vidé",
"已清空测试结果": "Résultats de test effacés",
"已生成授权凭据": "Identifiants d'autorisation générés",
"已用": "Used",
"已用/剩余": "Utilisé/Restant",
"已用额度": "Quota utilisé",
@@ -1603,7 +1598,6 @@
"手动输入": "Saisie manuelle",
"打开 CC Switch": "Ouvrir CC Switch",
"打开侧边栏": "Ouvrir la barre latérale",
"打开授权页面": "Ouvrir la page d'autorisation",
"扣费": "Déduction",
"执行 GC": "Exécuter le GC",
"执行中": "En cours",
-6
View File
@@ -44,7 +44,6 @@
"0.002-1之间的小数": "0.0021の小数",
"0.1以上的小数": "0.1以上の小数",
"1. 管理员在此创建分组并设置倍率": "1. 管理者がここでグループを作成しレートを設定",
"1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。": "1) 「認可ページを開く」をクリックしてログインを完了します。2) ブラウザがlocalhostにリダイレクトされます(ページが開かなくても問題ありません)。3) アドレスバーの完全なURLをコピーして下に貼り付けます。4)「生成して入力」をクリックします。",
"10 - 最高": "10 - 最高",
"1h缓存创建 {{price}} / 1M tokens": "1h キャッシュ作成 {{price}} / 1M tokens",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "1h キャッシュ作成 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
@@ -111,7 +110,6 @@
"Claude请求头追加": "Claudeリクエストヘッダーの追加",
"Client ID": "Client ID",
"Client Secret": "Client Secret",
"Codex 授权": "Codex 認可",
"Codex 渠道不支持批量创建": "Codexチャネルはバッチ作成をサポートしていません",
"common.changeLanguage": "common.changeLanguage",
"Completion tokens": "Completion tokens",
@@ -1149,7 +1147,6 @@
"复制所有模型": "すべてのモデルをコピー",
"复制所选令牌": "選択したトークンをコピー",
"复制所选兑换码到剪贴板": "選択した引き換えコードをクリップボードにコピー",
"复制授权链接": "認可リンクをコピー",
"复制日志": "Copy Logs",
"复制渠道的所有信息": "チャネルのすべての情報をコピー",
"复制版本号": "Copy Version",
@@ -1371,7 +1368,6 @@
"已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "全体のリクエストパススルーが有効です。パラメータ上書き、モデルリダイレクト、チャネル適応などの NewAPI 内蔵機能は無効になります。ベストプラクティスではありません。これにより問題が発生しても issue を投稿しないでください。",
"已忽略模型": "",
"已成功开始测试所有已启用通道,请刷新页面查看结果。": "有効なすべてのチャネルのテストを開始しました。ページを更新して結果を確認してください。",
"已打开授权页面": "認可ページを開きました",
"已打开支付页面": "決済ページを開きました",
"已批量处理上游模型更新:渠道 {{channels}} 个,加入 {{added}} 个,删除 {{removed}} 个,失败 {{fails}} 个": "",
"已提交": "送信済み",
@@ -1392,7 +1388,6 @@
"已清理 {{count}} 个日志文件,释放 {{size}}_other": "",
"已清空": "クリア済み",
"已清空测试结果": "テスト結果がクリアされました",
"已生成授权凭据": "認可資格情報が生成されました",
"已用": "Used",
"已用/剩余": "使用済み/残り",
"已用额度": "使用済みクォータ",
@@ -1574,7 +1569,6 @@
"手动输入": "手動入力",
"打开 CC Switch": "CC Switchを開く",
"打开侧边栏": "サイドバーを展開",
"打开授权页面": "認可ページを開く",
"扣费": "課金",
"执行 GC": "GCを実行",
"执行中": "実行中",
-6
View File
@@ -54,7 +54,6 @@
"0.002-1之间的小数": "Десятичное число между 0.002-1",
"0.1以上的小数": "Десятичное число выше 0.1",
"1. 管理员在此创建分组并设置倍率": "1. Admin creates groups and sets ratios here",
"1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。": "1) Нажмите «Открыть страницу авторизации» для входа; 2) Браузер перенаправит на localhost (ничего страшного, если страница не откроется); 3) Скопируйте полный URL из адресной строки и вставьте ниже; 4) Нажмите «Сгенерировать и заполнить».",
"10 - 最高": "10 - Максимум",
"1h缓存创建 {{price}} / 1M tokens": "Создание кэша 1h {{price}} / 1M tokens",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Создание кэша 1h {{tokens}} токенов / 1M токенов * {{symbol}}{{price}}",
@@ -121,7 +120,6 @@
"Claude请求头追加": "Добавление заголовков запроса Claude",
"Client ID": "ID клиента",
"Client Secret": "Секрет клиента",
"Codex 授权": "Авторизация Codex",
"Codex 渠道不支持批量创建": "Канал Codex не поддерживает пакетное создание",
"common.changeLanguage": "common.changeLanguage",
"Completion tokens": "Completion tokens",
@@ -1170,7 +1168,6 @@
"复制所有模型": "Копировать все модели",
"复制所选令牌": "Копировать выбранные токены",
"复制所选兑换码到剪贴板": "Копировать выбранные коды обмена в буфер обмена",
"复制授权链接": "Скопировать ссылку авторизации",
"复制日志": "Copy Logs",
"复制渠道的所有信息": "Копировать всю информацию о канале",
"复制版本号": "Copy Version",
@@ -1408,7 +1405,6 @@
"已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "Глобальная сквозная передача запросов включена. Встроенные возможности NewAPI, такие как переопределение параметров, перенаправление моделей и адаптация канала, будут отключены. Это не является лучшей практикой. Если из-за этого возникнут проблемы, пожалуйста, не создавайте issue.",
"已忽略模型": "",
"已成功开始测试所有已启用通道,请刷新页面查看结果。": "Успешно начато тестирование всех включенных каналов, обновите страницу для просмотра результатов.",
"已打开授权页面": "Страница авторизации открыта",
"已打开支付页面": "Страница оплаты открыта",
"已批量处理上游模型更新:渠道 {{channels}} 个,加入 {{added}} 个,删除 {{removed}} 个,失败 {{fails}} 个": "",
"已提交": "Отправлено",
@@ -1437,7 +1433,6 @@
"已清理 {{count}} 个日志文件,释放 {{size}}_other": "",
"已清空": "Очищено",
"已清空测试结果": "Результаты тестов очищены",
"已生成授权凭据": "Учётные данные авторизации сгенерированы",
"已用": "Used",
"已用/剩余": "Использовано/Осталось",
"已用额度": "Использованная квота",
@@ -1621,7 +1616,6 @@
"手动输入": "Ввести вручную",
"打开 CC Switch": "Открыть CC Switch",
"打开侧边栏": "Открыть боковую панель",
"打开授权页面": "Открыть страницу авторизации",
"扣费": "Списание",
"执行 GC": "Выполнить GC",
"执行中": "Выполняется",
-6
View File
@@ -44,7 +44,6 @@
"0.002-1之间的小数": "Số thập phân giữa 0.002-1",
"0.1以上的小数": "Số thập phân trên 0.1",
"1. 管理员在此创建分组并设置倍率": "1. Admin creates groups and sets ratios here",
"1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。": "1) Nhấn \"Mở trang xác thực\" để đăng nhập; 2) Trình duyệt sẽ chuyển hướng đến localhost (không sao nếu trang không mở được); 3) Sao chép URL đầy đủ từ thanh địa chỉ và dán vào bên dưới; 4) Nhấn \"Tạo và điền\".",
"10 - 最高": "10 - Cao nhất",
"1h缓存创建 {{price}} / 1M tokens": "Tạo bộ nhớ đệm 1h {{price}} / 1M tokens",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Tạo bộ nhớ đệm 1h {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
@@ -111,7 +110,6 @@
"Claude请求头追加": "Thêm tiêu đề yêu cầu Claude",
"Client ID": "Client ID",
"Client Secret": "Client Secret",
"Codex 授权": "Xác thực Codex",
"Codex 渠道不支持批量创建": "Kênh Codex không hỗ trợ tạo hàng loạt",
"common.changeLanguage": "Thay đổi ngôn ngữ",
"Completion tokens": "Completion tokens",
@@ -1150,7 +1148,6 @@
"复制所有模型": "Sao chép tất cả mô hình",
"复制所选令牌": "Sao chép mã thông báo đã chọn",
"复制所选兑换码到剪贴板": "Sao chép mã đổi thưởng đã chọn vào khay nhớ tạm",
"复制授权链接": "Sao chép liên kết xác thực",
"复制日志": "Copy Logs",
"复制渠道的所有信息": "Sao chép tất cả thông tin của kênh",
"复制版本号": "Copy Version",
@@ -1372,7 +1369,6 @@
"已开启全局请求透传:参数覆写、模型重定向、渠道适配等 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.",
"已忽略模型": "",
"已成功开始测试所有已启用通道,请刷新页面查看结果。": "Đã bắt đầu kiểm tra tất cả các kênh đã bật thành công. Vui lòng làm mới trang để xem kết quả.",
"已打开授权页面": "Đã mở trang xác thực",
"已打开支付页面": "Đã mở trang thanh toán",
"已批量处理上游模型更新:渠道 {{channels}} 个,加入 {{added}} 个,删除 {{removed}} 个,失败 {{fails}} 个": "",
"已提交": "Đã gửi",
@@ -1393,7 +1389,6 @@
"已清理 {{count}} 个日志文件,释放 {{size}}_other": "",
"已清空": "Đã xóa sạch",
"已清空测试结果": "Đã xóa kết quả kiểm tra",
"已生成授权凭据": "Đã tạo thông tin xác thực",
"已用": "Used",
"已用/剩余": "Đã dùng/Còn lại",
"已用额度": "Hạn ngạch đã dùng",
@@ -1575,7 +1570,6 @@
"手动输入": "Nhập thủ công",
"打开 CC Switch": "Mở CC Switch",
"打开侧边栏": "Mở thanh bên",
"打开授权页面": "Mở trang xác thực",
"扣费": "Khấu phí",
"执行 GC": "Thực thi GC",
"执行中": "đang xử lý",
-6
View File
@@ -40,7 +40,6 @@
"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缓存创建 {{price}} / 1M tokens": "1h缓存创建 {{price}} / 1M tokens",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
@@ -104,7 +103,6 @@
"Claude请求头追加": "Claude请求头追加",
"Client ID": "Client ID",
"Client Secret": "Client Secret",
"Codex 授权": "Codex 授权",
"Codex 渠道不支持批量创建": "Codex 渠道不支持批量创建",
"common.changeLanguage": "common.changeLanguage",
"Completion tokens": "Completion tokens",
@@ -1139,7 +1137,6 @@
"复制所有模型": "复制所有模型",
"复制所选令牌": "复制所选令牌",
"复制所选兑换码到剪贴板": "复制所选兑换码到剪贴板",
"复制授权链接": "复制授权链接",
"复制日志": "复制日志",
"复制渠道的所有信息": "复制渠道的所有信息",
"复制版本号": "复制版本号",
@@ -1358,7 +1355,6 @@
"已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。",
"已忽略模型": "已忽略模型",
"已成功开始测试所有已启用通道,请刷新页面查看结果。": "已成功开始测试所有已启用通道,请刷新页面查看结果。",
"已打开授权页面": "已打开授权页面",
"已打开支付页面": "已打开支付页面",
"已批量处理上游模型更新:渠道 {{channels}} 个,加入 {{added}} 个,删除 {{removed}} 个,失败 {{fails}} 个": "已批量处理上游模型更新:渠道 {{channels}} 个,加入 {{added}} 个,删除 {{removed}} 个,失败 {{fails}} 个",
"已提交": "已提交",
@@ -1378,7 +1374,6 @@
"已清理 {{count}} 个日志文件,释放 {{size}}_other": "已清理 {{count}} 个日志文件,释放 {{size}}",
"已清空": "已清空",
"已清空测试结果": "已清空测试结果",
"已生成授权凭据": "已生成授权凭据",
"已用": "已用",
"已用/剩余": "已用/剩余",
"已用额度": "已用额度",
@@ -1561,7 +1556,6 @@
"手动输入": "手动输入",
"打开 CC Switch": "打开 CC Switch",
"打开侧边栏": "打开侧边栏",
"打开授权页面": "打开授权页面",
"扣费": "扣费",
"执行 GC": "执行 GC",
"执行中": "执行中",
-6
View File
@@ -43,7 +43,6 @@
"0.002-1之间的小数": "0.002-1之間的小數",
"0.1以上的小数": "0.1以上的小數",
"1. 管理员在此创建分组并设置倍率": "1. 管理員在此建立分組並設定倍率",
"1) 点击「打开授权页面」完成登录;2) 浏览器会跳转到 localhost(页面打不开也没关系);3) 复制地址栏完整 URL 粘贴到下方;4) 点击「生成并填入」。": "",
"10 - 最高": "10 - 最高",
"1h缓存创建 {{price}} / 1M tokens": "1h快取建立 {{price}} / 1M tokens",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "1h快取建立 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
@@ -110,7 +109,6 @@
"Claude请求头追加": "Claude請求頭追加",
"Client ID": "Client ID",
"Client Secret": "Client Secret",
"Codex 授权": "",
"Codex 渠道不支持批量创建": "",
"common.changeLanguage": "common.changeLanguage",
"Completion tokens": "",
@@ -1148,7 +1146,6 @@
"复制所有模型": "複製所有模型",
"复制所选令牌": "複製所選令牌",
"复制所选兑换码到剪贴板": "複製所選兌換碼到剪貼板",
"复制授权链接": "",
"复制日志": "複製日誌",
"复制渠道的所有信息": "複製管道的所有資訊",
"复制版本号": "複製版本號",
@@ -1368,7 +1365,6 @@
"已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。": "已開啟全域請求透傳:參數覆寫、模型重定向、管道相容等 NewAPI 內置功能將失效,非最佳實踐;如因此產生問題,請勿提交 issue 回饋。",
"已忽略模型": "",
"已成功开始测试所有已启用通道,请刷新页面查看结果。": "已成功開始測試所有已啟用通道,請刷新頁面查看結果。",
"已打开授权页面": "",
"已打开支付页面": "已打開支付頁面",
"已批量处理上游模型更新:渠道 {{channels}} 个,加入 {{added}} 个,删除 {{removed}} 个,失败 {{fails}} 个": "",
"已提交": "已提交",
@@ -1388,7 +1384,6 @@
"已清理 {{count}} 个日志文件,释放 {{size}}_other": "",
"已清空": "",
"已清空测试结果": "已清空測試結果",
"已生成授权凭据": "",
"已用": "已用",
"已用/剩余": "已用/剩餘",
"已用额度": "已用額度",
@@ -1571,7 +1566,6 @@
"手动输入": "手動輸入",
"打开 CC Switch": "",
"打开侧边栏": "打開側邊欄",
"打开授权页面": "",
"扣费": "扣費",
"执行 GC": "執行 GC",
"执行中": "執行中",