|
|
@@ -576,44 +576,44 @@
|
|
|
"proxyConfigured": "Прокси настроен",
|
|
|
"proxyFallback": "Откат при ошибке прокси",
|
|
|
"proxyFallbackDesc": "Перейти на прямое соединение при ошибке прокси",
|
|
|
- "proxyFallbackLabel": "代理失败时降级到直连",
|
|
|
+ "proxyFallbackLabel": "Откат на прямое соединение при ошибке прокси",
|
|
|
"proxyNotConfigured": "Не настроен",
|
|
|
- "proxyTestButton": "测试连接",
|
|
|
- "proxyTestDesc": "测试通过配置的代理访问供应商 URL(使用 HEAD 请求,不消耗额度)",
|
|
|
- "proxyTestFailed": "连接失败",
|
|
|
- "proxyTestFillUrl": "请先填写供应商 URL",
|
|
|
- "proxyTestLabel": "连接测试",
|
|
|
- "proxyTestNetworkError": "网络错误: {error}",
|
|
|
- "proxyTestProxyError": "代理错误: {error}",
|
|
|
- "proxyTestResponseTime": "响应时间: {time}",
|
|
|
- "proxyTestResultConnectionMethod": "连接方式: {via}",
|
|
|
- "proxyTestResultConnectionMethodDirect": "直连",
|
|
|
- "proxyTestResultConnectionMethodProxy": "代理",
|
|
|
- "proxyTestResultErrorType": "错误类型: {type}",
|
|
|
- "proxyTestResultFailed": "连接失败",
|
|
|
+ "proxyTestButton": "Проверить соединение",
|
|
|
+ "proxyTestDesc": "Тестирование доступа к URL поставщика через настроенный прокси (использует HEAD запрос, не расходует квоту)",
|
|
|
+ "proxyTestFailed": "Соединение не удалось",
|
|
|
+ "proxyTestFillUrl": "Пожалуйста, сначала заполните URL поставщика",
|
|
|
+ "proxyTestLabel": "Тест соединения",
|
|
|
+ "proxyTestNetworkError": "Сетевая ошибка: {error}",
|
|
|
+ "proxyTestProxyError": "Ошибка прокси: {error}",
|
|
|
+ "proxyTestResponseTime": "Время отклика: {time}",
|
|
|
+ "proxyTestResultConnectionMethod": "Способ соединения: {via}",
|
|
|
+ "proxyTestResultConnectionMethodDirect": "Прямое",
|
|
|
+ "proxyTestResultConnectionMethodProxy": "Прокси",
|
|
|
+ "proxyTestResultErrorType": "Тип ошибки: {type}",
|
|
|
+ "proxyTestResultFailed": "Соединение не удалось",
|
|
|
"proxyTestResultMessage": "{message}",
|
|
|
- "proxyTestResultResponseTime": "响应时间: {time}ms",
|
|
|
- "proxyTestResultStatusCode": "状态码: {code}",
|
|
|
- "proxyTestResultSuccess": "连接成功 {via}",
|
|
|
- "proxyTestStatusCode": "| 状态码: {code}",
|
|
|
- "proxyTestSuccess": "连接成功",
|
|
|
- "proxyTestTesting": "测试中...",
|
|
|
- "proxyTestTimeout": "连接超时(5秒)。请检查:\n1. 代理服务器是否可访问\n2. 代理地址和端口是否正确\n3. 代理认证信息是否正确",
|
|
|
- "proxyTestViaDirect": "(直连)",
|
|
|
- "proxyTestViaProxy": "(通过代理)",
|
|
|
+ "proxyTestResultResponseTime": "Время отклика: {time}мс",
|
|
|
+ "proxyTestResultStatusCode": "Код статуса: {code}",
|
|
|
+ "proxyTestResultSuccess": "Соединение успешно {via}",
|
|
|
+ "proxyTestStatusCode": "| Код статуса: {code}",
|
|
|
+ "proxyTestSuccess": "Соединение успешно",
|
|
|
+ "proxyTestTesting": "Тестирование...",
|
|
|
+ "proxyTestTimeout": "Тайм-аут соединения (5 секунд). Проверьте:\n1. Доступен ли прокси-сервер\n2. Правильность адреса и порта прокси\n3. Правильность данных аутентификации прокси",
|
|
|
+ "proxyTestViaDirect": "(прямое)",
|
|
|
+ "proxyTestViaProxy": "(через прокси)",
|
|
|
"proxyUrl": "Адрес прокси",
|
|
|
"proxyUrlPlaceholder": "например: http://proxy.example.com:8080 или socks5://127.0.0.1:1080",
|
|
|
- "rateLimitConfig": "限流配置",
|
|
|
- "rateLimitConfigNone": "无限制",
|
|
|
- "rateLimitConfigSummary": "5h: ${fiveHour}, 周: ${weekly}, 月: ${monthly}, 并发: {concurrent}",
|
|
|
+ "rateLimitConfig": "Конфигурация ограничения скорости",
|
|
|
+ "rateLimitConfigNone": "Без ограничений",
|
|
|
+ "rateLimitConfigSummary": "5ч: ${fiveHour}, Неделя: ${weekly}, Месяц: ${monthly}, Одновременно: {concurrent}",
|
|
|
"remark": "Примечание",
|
|
|
"remarkPlaceholder": "Необязательно: добавить примечание...",
|
|
|
"removeRedirect": "Удалить переправку",
|
|
|
- "routingConfig": "路由配置",
|
|
|
- "routingConfigNone": "未配置",
|
|
|
- "routingConfigSummary": "{models} 个模型白名单, {redirects} 个重定向",
|
|
|
- "scheduleParams": "调度参数",
|
|
|
- "searchClear": "清除搜索",
|
|
|
+ "routingConfig": "Конфигурация маршрутизации",
|
|
|
+ "routingConfigNone": "Не настроено",
|
|
|
+ "routingConfigSummary": "{models} белый список моделей, {redirects} перенаправлений",
|
|
|
+ "scheduleParams": "Параметры планирования",
|
|
|
+ "searchClear": "Очистить поиск",
|
|
|
"searchPlaceholder": "Поиск по имени, URL, примечанию...",
|
|
|
"selectProviderType": "Выбрать тип поставщика",
|
|
|
"sort": "Сортировать поставщиков",
|
|
|
@@ -625,8 +625,8 @@
|
|
|
"sourceModel": "Исходная модель",
|
|
|
"sourceModelPlaceholder": "например: claude-sonnet-4-5-20250929",
|
|
|
"sourceModelRequired": "Имя исходной модели не может быть пустым",
|
|
|
- "successThreshold": "恢复阈值(次)",
|
|
|
- "successThresholdDesc": "半开状态下成功多少次后完全恢复",
|
|
|
+ "successThreshold": "Порог восстановления (раз)",
|
|
|
+ "successThresholdDesc": "Количество успешных попыток в полуоткрытом состоянии для полного восстановления",
|
|
|
"successThresholdPlaceholder": "2",
|
|
|
"targetModel": "Целевая модель",
|
|
|
"targetModelPlaceholder": "например: glm-4.6",
|
|
|
@@ -635,35 +635,35 @@
|
|
|
"testProxyFailed": "Ошибка тестирования прокси",
|
|
|
"testProxyFailedError": "Ошибка проверки соединения:",
|
|
|
"testProxySuccess": "Соединение прокси успешно",
|
|
|
- "validUrlRequired": "请输入有效的 API 地址",
|
|
|
- "websiteUrl": "供应商官网地址",
|
|
|
- "websiteUrlDesc": "供应商官网地址,用于快速跳转管理",
|
|
|
- "websiteUrlInvalid": "请输入有效的供应商官网地址",
|
|
|
+ "validUrlRequired": "Пожалуйста, введите действительный адрес API",
|
|
|
+ "websiteUrl": "Официальный сайт поставщика",
|
|
|
+ "websiteUrlDesc": "Адрес официального сайта поставщика для быстрого перехода к управлению",
|
|
|
+ "websiteUrlInvalid": "Пожалуйста, введите действительный адрес официального сайта поставщика",
|
|
|
"websiteUrlPlaceholder": "https://example.com",
|
|
|
"weight": "Вес",
|
|
|
"weightDesc": "Взвешенная случайная вероятность. В пределах одного приоритета большее число означает выше вероятность выбора.",
|
|
|
- "weightLabel": "权重",
|
|
|
+ "weightLabel": "Вес",
|
|
|
"weightPlaceholder": "1"
|
|
|
},
|
|
|
"guide": {
|
|
|
- "after": "过滤后:",
|
|
|
- "before": "过滤前:",
|
|
|
- "bestPracticesConcurrent": "• 并发控制:根据供应商 API 限制设置 Session 并发数",
|
|
|
- "bestPracticesCost": "• 成本倍率:官方倍率为 1.0,自建服务可设置为 0.8-1.2",
|
|
|
- "bestPracticesLimit": "• 限额设置:根据预算设置 5 小时、7 天、30 天限额",
|
|
|
- "bestPracticesPriority": "• 优先级设置:核心供应商设为 0,备用供应商设为 1-3",
|
|
|
- "bestPracticesTitle": "最佳实践建议",
|
|
|
- "bestPracticesWeight": "• 权重配置:根据供应商容量设置权重(容量大 = 权重高)",
|
|
|
+ "after": "После фильтрации:",
|
|
|
+ "before": "До фильтрации:",
|
|
|
+ "bestPracticesConcurrent": "• Контроль параллелизма: установите количество одновременных сеансов на основе ограничений API поставщика",
|
|
|
+ "bestPracticesCost": "• Множитель стоимости: официальный множитель = 1.0, собственный сервис можно установить 0.8-1.2",
|
|
|
+ "bestPracticesLimit": "• Настройка лимитов: установите лимиты на 5 часов, 7 дней, 30 дней в соответствии с бюджетом",
|
|
|
+ "bestPracticesPriority": "• Настройка приоритета: основные поставщики = 0, резервные = 1-3",
|
|
|
+ "bestPracticesTitle": "Рекомендации по лучшим практикам",
|
|
|
+ "bestPracticesWeight": "• Настройка веса: установите вес в соответствии с емкостью поставщика (большая емкость = больший вес)",
|
|
|
"circuitBreaker": "Проверка автоматического выключателя",
|
|
|
"circuitBreakerOpen": "A отфильтрован, осталось: B, C, D",
|
|
|
"circuitBreakerRecovery": "A автоматически восстанавливается в полуоткрытое после 60 секунд",
|
|
|
"circuitBreakerRecovery5h": "Автоматическое восстановление после 5-часового скользящего окна",
|
|
|
- "costOptimize": "2️⃣ 成本优化:同优先级内,成本倍率低的供应商有更高概率",
|
|
|
+ "costOptimize": "2️⃣ Оптимизация стоимости: в пределах одного приоритета поставщики с низким множителем стоимости имеют более высокую вероятность",
|
|
|
"costSort": "Откат по стоимости",
|
|
|
"costSortExample": "Все поставщики: A (default), B (premium), C (premium), D (economy)",
|
|
|
"costSortProb": "Более дешевый C имеет более высокую вероятность выбора",
|
|
|
"costSortResult": "После сортировки: C (0.8x), A (1.0x)",
|
|
|
- "decision": "决策:",
|
|
|
+ "decision": "Решение:",
|
|
|
"group": "Фильтрация групп пользователей",
|
|
|
"groupDesc": "Если пользователь указал группу поставщиков, система приоритизирует выбор из этой группы",
|
|
|
"groupDowngrade": "Записать предупреждение и выбрать из глобального пула",
|
|
|
@@ -678,120 +678,120 @@
|
|
|
"healthCheckCircuit": "Поставщик A потерпел неудачу 5 раз, статус: открыт",
|
|
|
"healthCheckConcurrent": "Проверить количество активных сеансов на лимит",
|
|
|
"healthCheckConcurrentExample": "Лимит поставщика C 2, активных 2 сеанса",
|
|
|
- "healthFilter": "3️⃣ 健康过滤:自动跳过熔断或超限的供应商",
|
|
|
+ "healthFilter": "3️⃣ Фильтрация здоровья: автоматически пропускать поставщиков с размыканием или превышением лимитов",
|
|
|
"healthFiltered": "B отфильтрован (близко к лимиту), осталось: C, D",
|
|
|
"healthFiltered2": "C отфильтрован (полный), осталось: D",
|
|
|
"history": "Проверить историю запросов",
|
|
|
"historyDesc": "Запрос поставщиков, используемых этим ключом за последние 10 секунд",
|
|
|
"priority": "Приоритизация по уровням",
|
|
|
"priorityExample": "4 включенных поставщика с разными приоритетами",
|
|
|
- "priorityFirst": "1️⃣ 优先级优先:只从最高优先级(数值最小)的供应商中选择",
|
|
|
+ "priorityFirst": "1️⃣ Приоритет в первую очередь: выбирать только из поставщиков с наивысшим приоритетом (наименьшее число)",
|
|
|
"priorityResult": "Отфильтровано к приоритету (0): A, C",
|
|
|
"priorityStep": "Система сначала фильтрует по приоритету, выбирая только из поставщиков с наивысшим приоритетом",
|
|
|
"randomResult": "В конце выбран C",
|
|
|
"randomSelect": "Взвешенный случайный",
|
|
|
"reset": "Ручной сброс автоматического выключателя",
|
|
|
"resetSuccess": "Автоматический выключатель сброшен",
|
|
|
- "scenario1Desc": "系统首先按优先级过滤,只从最高优先级的供应商中选择",
|
|
|
- "scenario1Step1": "初始状态",
|
|
|
- "scenario1Step1After": "筛选出最高优先级(0)的供应商:A, C",
|
|
|
- "scenario1Step1Before": "供应商 A (优先级 0), B (优先级 1), C (优先级 0), D (优先级 2)",
|
|
|
- "scenario1Step1Decision": "只从 A 和 C 中选择,B 和 D 被过滤",
|
|
|
- "scenario1Step1Desc": "有 4 个已启用的供应商,优先级各不相同",
|
|
|
- "scenario1Step2": "成本排序",
|
|
|
- "scenario1Step2After": "排序后:C (0.8x), A (1.0x)",
|
|
|
- "scenario1Step2Before": "A (成本 1.0x), C (成本 0.8x)",
|
|
|
- "scenario1Step2Decision": "成本更低的 C 有更高的被选中概率",
|
|
|
- "scenario1Step2Desc": "在同优先级内,按成本倍率从低到高排序",
|
|
|
- "scenario1Step3": "加权随机",
|
|
|
- "scenario1Step3After": "C 被选中概率 75%, A 被选中概率 25%",
|
|
|
- "scenario1Step3Before": "C (权重 3), A (权重 1)",
|
|
|
- "scenario1Step3Decision": "最终随机选择了 C",
|
|
|
- "scenario1Step3Desc": "使用权重进行随机选择,权重越高被选中概率越大",
|
|
|
- "scenario1Title": "优先级分层选择",
|
|
|
- "scenario2Desc": "如果用户指定了供应商组,系统会优先从该组中选择",
|
|
|
- "scenario2Step1": "检查用户分组",
|
|
|
- "scenario2Step1After": "过滤出 'premium' 组:B, C",
|
|
|
- "scenario2Step1Before": "所有供应商:A (default), B (premium), C (premium), D (economy)",
|
|
|
- "scenario2Step1Decision": "只从 B 和 C 中选择",
|
|
|
- "scenario2Step1Desc": "用户配置了 providerGroup = 'premium'",
|
|
|
- "scenario2Step2": "分组降级",
|
|
|
- "scenario2Step2After": "降级到所有启用的供应商:A, B, C, D",
|
|
|
- "scenario2Step2Before": "用户组 'vip' 内的供应商全部禁用或超限",
|
|
|
- "scenario2Step2Decision": "记录警告并从全局供应商池中选择",
|
|
|
- "scenario2Step2Desc": "如果用户组内没有可用供应商,降级到所有供应商",
|
|
|
- "scenario2Title": "用户分组过滤",
|
|
|
- "scenario3Desc": "系统自动过滤掉熔断或超限的供应商",
|
|
|
- "scenario3Step1": "熔断器检查",
|
|
|
- "scenario3Step1After": "A 被过滤,剩余:B, C, D",
|
|
|
- "scenario3Step1Before": "供应商 A 连续失败 5 次,熔断器状态:open",
|
|
|
- "scenario3Step1Decision": "A 在 60 秒后自动恢复到半开状态",
|
|
|
- "scenario3Step1Desc": "连续失败 5 次后熔断器打开,60 秒内不可用",
|
|
|
- "scenario3Step2": "金额限流",
|
|
|
- "scenario3Step2After": "B 被过滤(接近限额),剩余:C, D",
|
|
|
- "scenario3Step2Before": "供应商 B 的 5 小时限额 $10,已消耗 $9.8",
|
|
|
- "scenario3Step2Decision": "5 小时窗口滑动后自动恢复",
|
|
|
- "scenario3Step2Desc": "检查 5 小时、7 天、30 天的消费额度是否超限",
|
|
|
- "scenario3Step3": "并发 Session 限制",
|
|
|
- "scenario3Step3After": "C 被过滤(已满),剩余:D",
|
|
|
- "scenario3Step3Before": "供应商 C 并发限制 2,当前活跃 Session 数:2",
|
|
|
- "scenario3Step3Decision": "Session 过期(5 分钟)后自动释放",
|
|
|
- "scenario3Step3Desc": "检查当前活跃 Session 数是否超过配置的并发限制",
|
|
|
- "scenario3Title": "健康度过滤(熔断器 + 限流)",
|
|
|
- "scenario4Desc": "连续对话优先使用同一供应商,利用 Claude 的上下文缓存",
|
|
|
- "scenario4Step1": "检查历史请求",
|
|
|
- "scenario4Step1After": "检查 B 是否启用且健康",
|
|
|
- "scenario4Step1Before": "最近一次请求使用了供应商 B",
|
|
|
- "scenario4Step1Decision": "B 可用,直接复用,跳过随机选择",
|
|
|
- "scenario4Step1Desc": "查询该 API Key 最近 10 秒内使用的供应商",
|
|
|
- "scenario4Step2": "复用失效",
|
|
|
- "scenario4Step2After": "进入正常选择流程",
|
|
|
- "scenario4Step2Before": "上次使用的供应商 B 已被禁用或熔断",
|
|
|
- "scenario4Step2Decision": "从其他可用供应商中选择",
|
|
|
- "scenario4Step2Desc": "如果上次使用的供应商不可用,则重新选择",
|
|
|
- "scenario4Title": "会话复用机制",
|
|
|
- "scenariosTitle": "交互式场景演示",
|
|
|
+ "scenario1Desc": "Система сначала фильтрует по приоритету, выбирая только из поставщиков с наивысшим приоритетом",
|
|
|
+ "scenario1Step1": "Начальное состояние",
|
|
|
+ "scenario1Step1After": "Отфильтрованы поставщики с наивысшим приоритетом (0): A, C",
|
|
|
+ "scenario1Step1Before": "Поставщик A (приоритет 0), B (приоритет 1), C (приоритет 0), D (приоритет 2)",
|
|
|
+ "scenario1Step1Decision": "Выбирать только из A и C, B и D отфильтрованы",
|
|
|
+ "scenario1Step1Desc": "Имеется 4 включенных поставщика с разными приоритетами",
|
|
|
+ "scenario1Step2": "Сортировка по стоимости",
|
|
|
+ "scenario1Step2After": "После сортировки: C (0.8x), A (1.0x)",
|
|
|
+ "scenario1Step2Before": "A (стоимость 1.0x), C (стоимость 0.8x)",
|
|
|
+ "scenario1Step2Decision": "C с более низкой стоимостью имеет более высокую вероятность выбора",
|
|
|
+ "scenario1Step2Desc": "В пределах одного приоритета сортировка по множителю стоимости от низкого к высокому",
|
|
|
+ "scenario1Step3": "Взвешенный случайный выбор",
|
|
|
+ "scenario1Step3After": "C имеет вероятность выбора 75%, A имеет вероятность 25%",
|
|
|
+ "scenario1Step3Before": "C (вес 3), A (вес 1)",
|
|
|
+ "scenario1Step3Decision": "В итоге выбран C",
|
|
|
+ "scenario1Step3Desc": "Использование веса для случайного выбора, чем выше вес, тем выше вероятность выбора",
|
|
|
+ "scenario1Title": "Выбор по уровням приоритета",
|
|
|
+ "scenario2Desc": "Если пользователь указал группу поставщиков, система приоритизирует выбор из этой группы",
|
|
|
+ "scenario2Step1": "Проверка группы пользователя",
|
|
|
+ "scenario2Step1After": "Отфильтрована группа 'premium': B, C",
|
|
|
+ "scenario2Step1Before": "Все поставщики: A (default), B (premium), C (premium), D (economy)",
|
|
|
+ "scenario2Step1Decision": "Выбирать только из B и C",
|
|
|
+ "scenario2Step1Desc": "Пользователь настроил providerGroup = 'premium'",
|
|
|
+ "scenario2Step2": "Откат группировки",
|
|
|
+ "scenario2Step2After": "Откат на всех включенных поставщиков: A, B, C, D",
|
|
|
+ "scenario2Step2Before": "Все поставщики в группе пользователя 'vip' отключены или превышены",
|
|
|
+ "scenario2Step2Decision": "Записать предупреждение и выбрать из глобального пула поставщиков",
|
|
|
+ "scenario2Step2Desc": "Если в группе пользователя нет доступных поставщиков, откат на всех поставщиков",
|
|
|
+ "scenario2Title": "Фильтрация группы пользователей",
|
|
|
+ "scenario3Desc": "Система автоматически фильтрует поставщиков с размыканием или превышением лимитов",
|
|
|
+ "scenario3Step1": "Проверка автоматического выключателя",
|
|
|
+ "scenario3Step1After": "A отфильтрован, осталось: B, C, D",
|
|
|
+ "scenario3Step1Before": "Поставщик A потерпел неудачу 5 раз подряд, состояние выключателя: открыт",
|
|
|
+ "scenario3Step1Decision": "A автоматически восстанавливается в полуоткрытое состояние через 60 секунд",
|
|
|
+ "scenario3Step1Desc": "После 5 последовательных сбоев выключатель открывается, недоступен в течение 60 секунд",
|
|
|
+ "scenario3Step2": "Ограничение по сумме",
|
|
|
+ "scenario3Step2After": "B отфильтрован (близко к лимиту), осталось: C, D",
|
|
|
+ "scenario3Step2Before": "Лимит поставщика B за 5 часов $10, потрачено $9.8",
|
|
|
+ "scenario3Step2Decision": "Автоматическое восстановление после сдвига 5-часового окна",
|
|
|
+ "scenario3Step2Desc": "Проверка превышения лимитов расходов за 5 часов, 7 дней, 30 дней",
|
|
|
+ "scenario3Step3": "Ограничение одновременных сеансов",
|
|
|
+ "scenario3Step3After": "C отфильтрован (полон), осталось: D",
|
|
|
+ "scenario3Step3Before": "Лимит одновременных сеансов поставщика C 2, текущее количество активных сеансов: 2",
|
|
|
+ "scenario3Step3Decision": "Автоматическое освобождение после истечения сеанса (5 минут)",
|
|
|
+ "scenario3Step3Desc": "Проверка превышения настроенного лимита одновременных сеансов",
|
|
|
+ "scenario3Title": "Фильтрация здоровья (автоматический выключатель + ограничение)",
|
|
|
+ "scenario4Desc": "Последовательные диалоги приоритетно используют одного поставщика для использования кэша контекста Claude",
|
|
|
+ "scenario4Step1": "Проверка истории запросов",
|
|
|
+ "scenario4Step1After": "Проверить, включен ли B и работоспособен",
|
|
|
+ "scenario4Step1Before": "Последний запрос использовал поставщика B",
|
|
|
+ "scenario4Step1Decision": "B доступен, повторно использовать напрямую, пропустить случайный выбор",
|
|
|
+ "scenario4Step1Desc": "Запрос поставщиков, используемых этим API ключом за последние 10 секунд",
|
|
|
+ "scenario4Step2": "Повторное использование недействительно",
|
|
|
+ "scenario4Step2After": "Вход в нормальный процесс выбора",
|
|
|
+ "scenario4Step2Before": "Последний использованный поставщик B был отключен или разомкнут",
|
|
|
+ "scenario4Step2Decision": "Выбрать из других доступных поставщиков",
|
|
|
+ "scenario4Step2Desc": "Если последний использованный поставщик недоступен, выполнить повторный выбор",
|
|
|
+ "scenario4Title": "Механизм повторного использования сеансов",
|
|
|
+ "scenariosTitle": "Интерактивная демонстрация сценариев",
|
|
|
"session": "Механизм переиспользования сеансов",
|
|
|
"sessionDesc": "Если последний использованный поставщик недоступен, переходим к переполнению",
|
|
|
"sessionExample": "Последний запрос использовал поставщика B",
|
|
|
"sessionExpired": "Сеанс автоматически освобождается после истечения (5 минут)",
|
|
|
"sessionFallback": "Выбрать из других доступных поставщиков",
|
|
|
"sessionLastUsed": "B доступен, переиспользуем, пропускаем случайный выбор",
|
|
|
- "sessionReuse": "4️⃣ 会话复用:连续对话复用同一供应商,节省上下文成本",
|
|
|
+ "sessionReuse": "4️⃣ Повторное использование сеанса: последовательные диалоги повторно используют одного поставщика для экономии затрат на контекст",
|
|
|
"sessionUnavailable": "Последний использованный поставщик B отключен или замкнут",
|
|
|
- "step": "步骤",
|
|
|
- "title": "核心原则",
|
|
|
+ "step": "Шаг",
|
|
|
+ "title": "Основные принципы",
|
|
|
"weight": "Взвешенный случайный выбор по весу",
|
|
|
"weightCalc": "C имеет вероятность 75%, A имеет вероятность 25%",
|
|
|
"weightExample": "C (вес 3), A (вес 1)"
|
|
|
},
|
|
|
- "keyLoading": "加载中...",
|
|
|
- "noProviders": "暂无服务商配置",
|
|
|
- "noProvidersDesc": "添加你的第一个 API 服务商",
|
|
|
+ "keyLoading": "Загрузка...",
|
|
|
+ "noProviders": "Нет настроенных поставщиков",
|
|
|
+ "noProvidersDesc": "Добавьте вашего первого поставщика API",
|
|
|
"notFound": "Поставщики не найдены",
|
|
|
- "official": "官网",
|
|
|
- "resetCircuit": "熔断器已重置",
|
|
|
- "resetCircuitDesc": "供应商 \"{name}\" 的熔断状态已解除",
|
|
|
- "resetCircuitFailed": "重置熔断器失败",
|
|
|
+ "official": "Официальный сайт",
|
|
|
+ "resetCircuit": "Автоматический выключатель сброшен",
|
|
|
+ "resetCircuitDesc": "Состояние размыкания поставщика \"{name}\" снято",
|
|
|
+ "resetCircuitFailed": "Не удалось сбросить автоматический выключатель",
|
|
|
"scheduling": "Подробное объяснение политики планирования",
|
|
|
"schedulingDesc": "Понимание того, как работает выбор поставщика: приоритизация, переиспользование сеансов, балансировка нагрузки и отказоустойчивость",
|
|
|
- "searchNoResults": "未找到匹配的供应商",
|
|
|
- "searchResults": "找到 {count} 个匹配的供应商",
|
|
|
+ "searchNoResults": "Поставщики не найдены",
|
|
|
+ "searchResults": "Найдено {count} поставщиков",
|
|
|
"section": {
|
|
|
- "description": "配置上游服务商的金额限流和并发限制,留空表示无限制。",
|
|
|
- "title": "服务商管理"
|
|
|
+ "description": "Настройка ограничений по расходам и параллельным сеансам для вышестоящих поставщиков. Оставьте пустым для неограниченного доступа.",
|
|
|
+ "title": "Управление поставщиками"
|
|
|
},
|
|
|
"subtitle": "Управление поставщиками",
|
|
|
"subtitleDesc": "Настройка ограничений по расходам и параллельным сеансам. Оставьте пустым для неограниченного доступа.",
|
|
|
"title": "Управление поставщиками",
|
|
|
- "todayUsage": "今日用量",
|
|
|
- "todayUsageCount": "{count} 次",
|
|
|
- "toggleFailed": "状态切换失败",
|
|
|
- "toggleSuccess": "供应商已{status}",
|
|
|
- "toggleSuccessDesc": "供应商 \"{name}\" 状态已更新",
|
|
|
- "updateFailed": "更新服务商失败",
|
|
|
- "viewKey": "查看完整 API Key",
|
|
|
- "viewKeyDesc": "请妥善保管,不要泄露给他人"
|
|
|
+ "todayUsage": "Использование сегодня",
|
|
|
+ "todayUsageCount": "{count} раз",
|
|
|
+ "toggleFailed": "Не удалось переключить статус",
|
|
|
+ "toggleSuccess": "Поставщик {status}",
|
|
|
+ "toggleSuccessDesc": "Статус поставщика \"{name}\" обновлен",
|
|
|
+ "updateFailed": "Не удалось обновить поставщика",
|
|
|
+ "viewKey": "Просмотреть полный API ключ",
|
|
|
+ "viewKeyDesc": "Пожалуйста, храните бережно и не раскрывайте другим"
|
|
|
},
|
|
|
"sensitiveWords": {
|
|
|
"add": "Добавить чувствительное слово",
|