{
- if (record.type === 0 || record.type === 2 || record.type === 5) {
+ if (record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6) {
if (record.group) {
return <>{renderGroup(record.group)}>;
} else {
@@ -522,7 +528,7 @@ export const getLogsColumns = ({
title: t('模型'),
dataIndex: 'model_name',
render: (text, record, index) => {
- return record.type === 0 || record.type === 2 || record.type === 5 ? (
+ return record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6 ? (
<>{renderModelName(record, copyText, t)}>
) : (
<>>
@@ -589,7 +595,7 @@ export const getLogsColumns = ({
cacheText = `${t('缓存写')} ${formatTokenCount(cacheSummary.cacheWriteTokens)}`;
}
- return record.type === 0 || record.type === 2 || record.type === 5 ? (
+ return record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6 ? (
{
return parseInt(text) > 0 &&
- (record.type === 0 || record.type === 2 || record.type === 5) ? (
+ (record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6) ? (
<>{ {text} }>
) : (
<>>
@@ -635,7 +641,7 @@ export const getLogsColumns = ({
title: t('花费'),
dataIndex: 'quota',
render: (text, record, index) => {
- if (!(record.type === 0 || record.type === 2 || record.type === 5)) {
+ if (!(record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6)) {
return <>>;
}
const other = getLogOther(record.other);
@@ -722,6 +728,16 @@ export const getLogsColumns = ({
fixed: 'right',
render: (text, record, index) => {
let other = getLogOther(record.other);
+ if (record.type === 6) {
+ return (
+
+ {t('异步任务退款')}
+
+ );
+ }
if (other == null || record.type !== 2) {
return (
{t('管理')}
{t('系统')}
{t('错误')}
+ {t('退款')}
diff --git a/web/src/hooks/usage-logs/useUsageLogsData.jsx b/web/src/hooks/usage-logs/useUsageLogsData.jsx
index 14c021e41..b69a7cf18 100644
--- a/web/src/hooks/usage-logs/useUsageLogsData.jsx
+++ b/web/src/hooks/usage-logs/useUsageLogsData.jsx
@@ -344,7 +344,7 @@ export const useLogsData = () => {
let other = getLogOther(logs[i].other);
let expandDataLocal = [];
- if (isAdminUser && (logs[i].type === 0 || logs[i].type === 2)) {
+ if (isAdminUser && (logs[i].type === 0 || logs[i].type === 2 || logs[i].type === 6)) {
expandDataLocal.push({
key: t('渠道信息'),
value: `${logs[i].channel} - ${logs[i].channel_name || '[未知]'}`,
@@ -535,6 +535,24 @@ export const useLogsData = () => {
});
}
}
+ if (logs[i].type === 6) {
+ if (other?.task_id) {
+ expandDataLocal.push({
+ key: t('任务ID'),
+ value: other.task_id,
+ });
+ }
+ if (other?.reason) {
+ expandDataLocal.push({
+ key: t('失败原因'),
+ value: (
+
+ {other.reason}
+
+ ),
+ });
+ }
+ }
if (other?.request_path) {
expandDataLocal.push({
key: t('请求路径'),
@@ -590,13 +608,13 @@ export const useLogsData = () => {
),
});
}
- if (isAdminUser) {
+ if (isAdminUser && logs[i].type !== 6) {
expandDataLocal.push({
key: t('请求转换'),
value: requestConversionDisplayValue(other?.request_conversion),
});
}
- if (isAdminUser) {
+ if (isAdminUser && logs[i].type !== 6) {
let localCountMode = '';
if (other?.admin_info?.local_count_tokens) {
localCountMode = t('本地计费');
diff --git a/web/src/i18n/locales/en.json b/web/src/i18n/locales/en.json
index 8b2b08529..93b5f18c3 100644
--- a/web/src/i18n/locales/en.json
+++ b/web/src/i18n/locales/en.json
@@ -302,7 +302,6 @@
"价格重新计算中...": "Recalculating price...",
"价格预估": "Price Estimate",
"任务 ID": "Task ID",
- "任务ID": "Task ID",
"任务日志": "Task Logs",
"任务状态": "Status",
"任务记录": "Task Records",
@@ -544,7 +543,6 @@
"创建": "Create",
"创建令牌默认选择auto分组,初始令牌也将设为auto(否则留空,为用户默认分组)": "Create token with auto group by default, initial token will also be set to auto (otherwise leave blank for user default group)",
"创建失败": "Creation failed",
- "创建成功": "Creation successful",
"创建或选择密钥时,将 Project 设置为 io.cloud": "When creating or selecting a key, set Project to io.cloud",
"创建新用户账户": "Create new user account",
"创建新的令牌": "Create New Token",
@@ -787,7 +785,6 @@
"天": "day",
"天前": "days ago",
"失败": "Failed",
- "失败原因": "Failure reason",
"失败时自动禁用通道": "Automatically disable channel on failure",
"失败重试次数": "Failed retry times",
"奖励说明": "Reward description",
@@ -1336,7 +1333,6 @@
"更新失败,请检查输入信息": "Update failed, please check the input information",
"更新容器配置": "Update Container Configuration",
"更新容器配置可能会导致容器重启,请确保在合适的时间进行此操作。": "Updating container configuration may cause the container to restart, please ensure you perform this operation at an appropriate time.",
- "更新成功": "Update successful",
"更新所有已启用通道余额": "Update balance for all enabled channels",
"更新支付设置": "Update payment settings",
"更新时间": "Update time",
@@ -1767,7 +1763,6 @@
"确认清理不活跃的磁盘缓存?": "Confirm cleanup of inactive disk cache?",
"确认禁用": "Confirm disable",
"确认补单": "Confirm Order Completion",
- "确认解绑": "Confirm Unbind",
"确认解绑 Passkey": "Confirm Unbind Passkey",
"确认设置并完成初始化": "Confirm settings and complete initialization",
"确认重置 Passkey": "Confirm Passkey Reset",
@@ -1945,7 +1940,6 @@
"自动分组auto,从第一个开始选择": "Auto grouping auto, select from the first one",
"自动刷新": "Auto Refresh",
"自动刷新中": "Auto refreshing",
- "自动检测": "Auto Detect",
"自动模式": "Auto Mode",
"自动测试所有通道间隔时间": "Auto test interval for all channels",
"自动禁用": "Auto disabled",
@@ -2343,46 +2337,9 @@
"输入验证码完成设置": "Enter verification code to complete setup",
"输出": "Output",
"输出 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}}) * {{ratioType}} {{ratio}}": "Output {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}} * {{ratioType}} {{ratio}}",
- "磁盘缓存设置(磁盘换内存)": "Disk Cache Settings (Disk Swap Memory)",
- "启用磁盘缓存后,大请求体将临时存储到磁盘而非内存,可显著降低内存占用,适用于处理包含大量图片/文件的请求。建议在 SSD 环境下使用。": "When enabled, large request bodies are temporarily stored on disk instead of memory, significantly reducing memory usage. Suitable for requests with large images/files. SSD recommended.",
- "启用磁盘缓存": "Enable Disk Cache",
- "将大请求体临时存储到磁盘": "Store large request bodies temporarily on disk",
- "磁盘缓存阈值 (MB)": "Disk Cache Threshold (MB)",
- "请求体超过此大小时使用磁盘缓存": "Use disk cache when request body exceeds this size",
- "磁盘缓存最大总量 (MB)": "Max Disk Cache Size (MB)",
- "可用空间: {{free}} / 总空间: {{total}}": "Free: {{free}} / Total: {{total}}",
- "磁盘缓存占用的最大空间": "Maximum space occupied by disk cache",
- "留空使用系统临时目录": "Leave empty to use system temp directory",
- "例如 /var/cache/new-api": "e.g. /var/cache/new-api",
- "性能监控": "Performance Monitor",
- "刷新统计": "Refresh Stats",
- "重置统计": "Reset Stats",
- "执行 GC": "Run GC",
- "请求体磁盘缓存": "Request Body Disk Cache",
- "活跃文件": "Active Files",
- "磁盘命中": "Disk Hits",
- "请求体内存缓存": "Request Body Memory Cache",
- "当前缓存大小": "Current Cache Size",
- "活跃缓存数": "Active Cache Count",
- "内存命中": "Memory Hits",
- "缓存目录磁盘空间": "Cache Directory Disk Space",
- "磁盘可用空间小于缓存最大总量设置": "Disk free space is less than max cache size setting",
- "已分配内存": "Allocated Memory",
- "总分配内存": "Total Allocated Memory",
- "系统内存": "System Memory",
- "GC 次数": "GC Count",
- "Goroutine 数": "Goroutine Count",
- "目录文件数": "Directory File Count",
- "目录总大小": "Directory Total Size",
- "磁盘缓存已清理": "Disk cache cleared",
- "清理失败": "Cleanup failed",
- "统计已重置": "Statistics reset",
- "重置失败": "Reset failed",
- "GC 已执行": "GC executed",
"GC 执行失败": "GC execution failed",
"缓存目录": "Cache Directory",
"可用": "Available",
- "输出价格": "Output Price",
"输出价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})": "Output price: {{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (Completion ratio: {{completionRatio}})",
"输出倍率 {{completionRatio}}": "Output ratio {{completionRatio}}",
"边栏设置": "Sidebar Settings",
@@ -2545,6 +2502,11 @@
"销毁容器": "Destroy Container",
"销毁容器失败": "Failed to destroy container",
"错误": "errors",
+ "退款": "Refund",
+ "错误详情": "Error Details",
+ "异步任务退款": "Async Task Refund",
+ "任务ID": "Task ID",
+ "失败原因": "Failure Reason",
"键为分组名称,值为另一个 JSON 对象,键为分组名称,值为该分组的用户的特殊分组倍率,例如:{\"vip\": {\"default\": 0.5, \"test\": 1}},表示 vip 分组的用户在使用default分组的令牌时倍率为0.5,使用test分组时倍率为1": "The key is the group name, and the value is another JSON object. The key is the group name, and the value is the special group ratio for users in that group. For example: {\"vip\": {\"default\": 0.5, \"test\": 1}} means that users in the vip group have a ratio of 0.5 when using tokens from the default group, and a ratio of 1 when using tokens from the test group",
"键为原状态码,值为要复写的状态码,仅影响本地判断": "The key is the original status code, and the value is the status code to override, only affects local judgment",
"键为用户分组名称,值为操作映射对象。内层键以\"+:\"开头表示添加指定分组(键值为分组名称,值为描述),以\"-:\"开头表示移除指定分组(键值为分组名称),不带前缀的键直接添加该分组。例如:{\"vip\": {\"+:premium\": \"高级分组\", \"special\": \"特殊分组\", \"-:default\": \"默认分组\"}},表示 vip 分组的用户可以使用 premium 和 special 分组,同时移除 default 分组的访问权限": "Keys are user group names and values are operation mappings. Inner keys prefixed with \"+:\" add the specified group (key is the group name, value is the description); keys prefixed with \"-:\" remove the specified group; keys without a prefix add that group directly. Example: {\"vip\": {\"+:premium\": \"Advanced group\", \"special\": \"Special group\", \"-:default\": \"Default group\"}} means vip users can access the premium and special groups while removing access to the default group.",
diff --git a/web/src/i18n/locales/fr.json b/web/src/i18n/locales/fr.json
index d4c76db69..702a61dee 100644
--- a/web/src/i18n/locales/fr.json
+++ b/web/src/i18n/locales/fr.json
@@ -304,7 +304,6 @@
"价格重新计算中...": "Recalculating price...",
"价格预估": "Price Estimate",
"任务 ID": "ID de la tâche",
- "任务ID": "ID de la tâche",
"任务日志": "Tâches",
"任务状态": "Statut de la tâche",
"任务记录": "Tâches",
@@ -792,7 +791,6 @@
"天": "Jour",
"天前": "il y a des jours",
"失败": "Échec",
- "失败原因": "Raison de l'échec",
"失败时自动禁用通道": "Désactiver automatiquement le canal en cas d'échec",
"失败重试次数": "Nombre de tentatives en cas d'échec",
"奖励说明": "Description de la récompense",
@@ -2508,6 +2506,11 @@
"销毁容器": "Destroy Container",
"销毁容器失败": "Failed to destroy container",
"错误": "Erreur",
+ "退款": "Remboursement",
+ "错误详情": "Détails de l'erreur",
+ "异步任务退款": "Remboursement de tâche asynchrone",
+ "任务ID": "ID de tâche",
+ "失败原因": "Raison de l'échec",
"键为分组名称,值为另一个 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",
"键为原状态码,值为要复写的状态码,仅影响本地判断": "La clé est le code d'état d'origine, la valeur est le code d'état à réécrire, n'affecte que le jugement local",
"键为用户分组名称,值为操作映射对象。内层键以\"+:\"开头表示添加指定分组(键值为分组名称,值为描述),以\"-:\"开头表示移除指定分组(键值为分组名称),不带前缀的键直接添加该分组。例如:{\"vip\": {\"+:premium\": \"高级分组\", \"special\": \"特殊分组\", \"-:default\": \"默认分组\"}},表示 vip 分组的用户可以使用 premium 和 special 分组,同时移除 default 分组的访问权限": "La clé correspond au nom du groupe d'utilisateurs et la valeur à un objet de mappage des opérations. Les clés internes commençant par \"+:\" ajoutent le groupe indiqué (clé = nom du groupe, valeur = description), celles commençant par \"-:\" retirent le groupe indiqué, et les clés sans préfixe ajoutent directement ce groupe. Exemple : {\"vip\": {\"+:premium\": \"Groupe avancé\", \"special\": \"Groupe spécial\", \"-:default\": \"Groupe par défaut\"}} signifie que les utilisateurs du groupe vip peuvent accéder aux groupes premium et special tout en perdant l'accès au groupe default.",
diff --git a/web/src/i18n/locales/ja.json b/web/src/i18n/locales/ja.json
index 9ab727ec4..d1e770e9e 100644
--- a/web/src/i18n/locales/ja.json
+++ b/web/src/i18n/locales/ja.json
@@ -300,7 +300,6 @@
"价格重新计算中...": "Recalculating price...",
"价格预估": "Price Estimate",
"任务 ID": "タスクID",
- "任务ID": "タスクID",
"任务日志": "タスク履歴",
"任务状态": "タスクステータス",
"任务记录": "タスク履歴",
@@ -783,7 +782,6 @@
"天": "日",
"天前": "日前",
"失败": "失敗",
- "失败原因": "失敗理由",
"失败时自动禁用通道": "失敗時にチャネルを自動的に無効にする",
"失败重试次数": "再試行回数",
"奖励说明": "特典説明",
@@ -2491,6 +2489,11 @@
"销毁容器": "Destroy Container",
"销毁容器失败": "Failed to destroy container",
"错误": "エラー",
+ "退款": "返金",
+ "错误详情": "エラー詳細",
+ "异步任务退款": "非同期タスク返金",
+ "任务ID": "タスクID",
+ "失败原因": "失敗の原因",
"键为分组名称,值为另一个 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 分组的访问权限": "Keys are user group names and values are operation mappings. Inner keys prefixed with \"+:\" add the specified group (key is the group name, value is the description); keys prefixed with \"-:\" remove the specified group; keys without a prefix add that group directly. Example: {\"vip\": {\"+:premium\": \"Advanced group\", \"special\": \"Special group\", \"-:default\": \"Default group\"}} means vip users can access the premium and special groups while removing access to the default group.",
diff --git a/web/src/i18n/locales/ru.json b/web/src/i18n/locales/ru.json
index 97e243d37..e2a529041 100644
--- a/web/src/i18n/locales/ru.json
+++ b/web/src/i18n/locales/ru.json
@@ -307,7 +307,6 @@
"价格重新计算中...": "Recalculating price...",
"价格预估": "Price Estimate",
"任务 ID": "ID задачи",
- "任务ID": "ID задачи",
"任务日志": "Журнал задач",
"任务状态": "Статус задачи",
"任务记录": "Записи задач",
@@ -798,7 +797,6 @@
"天": "день",
"天前": "дней назад",
"失败": "Неудача",
- "失败原因": "Причина неудачи",
"失败时自动禁用通道": "Автоматически отключать канал при неудаче",
"失败重试次数": "Количество повторных попыток при неудаче",
"奖励说明": "Описание награды",
@@ -2521,6 +2519,11 @@
"销毁容器": "Destroy Container",
"销毁容器失败": "Failed to destroy container",
"错误": "Ошибка",
+ "退款": "Возврат",
+ "错误详情": "Детали ошибки",
+ "异步任务退款": "Возврат асинхронной задачи",
+ "任务ID": "ID задачи",
+ "失败原因": "Причина ошибки",
"键为分组名称,值为另一个 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.",
diff --git a/web/src/i18n/locales/vi.json b/web/src/i18n/locales/vi.json
index 8875b1b5f..a311ca9ec 100644
--- a/web/src/i18n/locales/vi.json
+++ b/web/src/i18n/locales/vi.json
@@ -301,7 +301,6 @@
"价格重新计算中...": "Recalculating price...",
"价格预估": "Price Estimate",
"任务 ID": "ID tác vụ",
- "任务ID": "ID tác vụ",
"任务日志": "Nhật ký tác vụ",
"任务状态": "Trạng thái",
"任务记录": "Hồ sơ tác vụ",
@@ -784,7 +783,6 @@
"天": "ngày",
"天前": "ngày trước",
"失败": "Thất bại",
- "失败原因": "Lý do thất bại",
"失败时自动禁用通道": "Tự động vô hiệu hóa kênh khi thất bại",
"失败重试次数": "Số lần thử lại thất bại",
"奖励说明": "Mô tả phần thưởng",
@@ -3060,10 +3058,14 @@
"销毁容器失败": "Failed to destroy container",
"锁定": "Khóa",
"错误": "Lỗi",
+ "退款": "Hoàn tiền",
"错误信息": "Thông tin lỗi",
"错误日志": "Nhật ký lỗi",
"错误码": "Mã lỗi",
"错误详情": "Chi tiết lỗi",
+ "异步任务退款": "Hoàn tiền tác vụ bất đồng bộ",
+ "任务ID": "ID tác vụ",
+ "失败原因": "Nguyên nhân thất bại",
"键为分组名称,值为另一个 JSON 对象,键为分组名称,值为该分组的用户的特殊分组倍率,例如:{\"vip\": {\"default\": 0.5, \"test\": 1}},表示 vip 分组的用户在使用default分组的令牌时倍率为0.5,使用test分组时倍率为1": "Khóa là tên nhóm và giá trị là một đối tượng JSON khác. Khóa là tên nhóm và giá trị là tỷ lệ nhóm đặc biệt cho người dùng trong nhóm đó. Ví dụ: {\"vip\": {\"default\": 0.5, \"test\": 1}} có nghĩa là người dùng trong nhóm vip có tỷ lệ 0.5 khi sử dụng mã thông báo từ nhóm default và tỷ lệ 1 khi sử dụng mã thông báo từ nhóm test.",
"键为原状态码,值为要复写的状态码,仅影响本地判断": "Khóa là mã trạng thái gốc và giá trị là mã trạng thái cần ghi đè, chỉ ảnh hưởng đến phán đoán cục bộ",
"键为用户分组名称,值为操作映射对象。内层键以\"+:\"开头表示添加指定分组(键值为分组名称,值为描述),以\"-:\"开头表示移除指定分组(键值为分组名称),不带前缀的键直接添加该分组。例如:{\"vip\": {\"+:premium\": \"高级分组\", \"special\": \"特殊分组\", \"-:default\": \"默认分组\"}},表示 vip 分组的用户可以使用 premium 和 special 分组,同时移除 default 分组的访问权限": "Keys are user group names and values are operation mappings. Inner keys prefixed with \"+:\" add the specified group (key is the group name, value is the description); keys prefixed with \"-:\" remove the specified group; keys without a prefix add that group directly. Example: {\"vip\": {\"+:premium\": \"Advanced group\", \"special\": \"Special group\", \"-:default\": \"Default group\"}} means vip users can access the premium and special groups while removing access to the default group.",
diff --git a/web/src/i18n/locales/zh-CN.json b/web/src/i18n/locales/zh-CN.json
index 43ce65b7a..a5bace57f 100644
--- a/web/src/i18n/locales/zh-CN.json
+++ b/web/src/i18n/locales/zh-CN.json
@@ -298,7 +298,6 @@
"价格重新计算中...": "价格重新计算中...",
"价格预估": "价格预估",
"任务 ID": "任务 ID",
- "任务ID": "任务ID",
"任务日志": "任务日志",
"任务状态": "任务状态",
"任务记录": "任务记录",
@@ -539,7 +538,6 @@
"创建": "创建",
"创建令牌默认选择auto分组,初始令牌也将设为auto(否则留空,为用户默认分组)": "创建令牌默认选择auto分组,初始令牌也将设为auto(否则留空,为用户默认分组)",
"创建失败": "创建失败",
- "创建成功": "创建成功",
"创建或选择密钥时,将 Project 设置为 io.cloud": "创建或选择密钥时,将 Project 设置为 io.cloud",
"创建新用户账户": "创建新用户账户",
"创建新的令牌": "创建新的令牌",
@@ -782,7 +780,6 @@
"天": "天",
"天前": "天前",
"失败": "失败",
- "失败原因": "失败原因",
"失败时自动禁用通道": "失败时自动禁用通道",
"失败重试次数": "失败重试次数",
"奖励说明": "奖励说明",
@@ -1326,7 +1323,6 @@
"更新失败,请检查输入信息": "更新失败,请检查输入信息",
"更新容器配置": "更新容器配置",
"更新容器配置可能会导致容器重启,请确保在合适的时间进行此操作。": "更新容器配置可能会导致容器重启,请确保在合适的时间进行此操作。",
- "更新成功": "更新成功",
"更新所有已启用通道余额": "更新所有已启用通道余额",
"更新支付设置": "更新支付设置",
"更新时间": "更新时间",
@@ -1754,7 +1750,6 @@
"确认清除历史日志": "确认清除历史日志",
"确认禁用": "确认禁用",
"确认补单": "确认补单",
- "确认解绑": "确认解绑",
"确认解绑 Passkey": "确认解绑 Passkey",
"确认设置并完成初始化": "确认设置并完成初始化",
"确认重置 Passkey": "确认重置 Passkey",
@@ -1932,7 +1927,6 @@
"自动分组auto,从第一个开始选择": "自动分组auto,从第一个开始选择",
"自动刷新": "自动刷新",
"自动刷新中": "自动刷新中",
- "自动检测": "自动检测",
"自动模式": "自动模式",
"自动测试所有通道间隔时间": "自动测试所有通道间隔时间",
"自动禁用": "自动禁用",
@@ -2531,6 +2525,11 @@
"销毁容器": "销毁容器",
"销毁容器失败": "销毁容器失败",
"错误": "错误",
+ "退款": "退款",
+ "错误详情": "错误详情",
+ "异步任务退款": "异步任务退款",
+ "任务ID": "任务ID",
+ "失败原因": "失败原因",
"键为分组名称,值为另一个 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 分组的访问权限",