mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-11 17:52:31 +03:00
fix(i18n): completes Vietnamese parity, fixes empty migration query
Two more release/v3.8.50 base-red items, both surfaced while chasing CI failures on unrelated PRs: - vi.json was missing 8 keys that #9539 (NewAPI/Sub2API aggregator balance) added to en.json without a matching i18n:sync-ui run — pt-BR.json already had all 8, only Vietnamese drifted. Added translations for the 6 provider-settings strings, the feature-flag description, and the quota tooltip; verified against tests/unit/i18n-vi-completeness.test.ts (parity, placeholder preservation, ICU parse — all 5 assertions pass). - src/lib/db/migrations/120_interception_rules.sql was pure comments documenting a no-schema-change key_value namespace, with no executable SQL statement — the migration runner logged "FAILED: 120_interception_rules — Query contained no valid SQL statement" on every fresh DB init. 118_provider_param_filters.sql (same pattern, two migrations earlier) already ends with a bare `SELECT 1;` no-op for exactly this reason; 120 was just missing it. Verified directly against better-sqlite3 that the file now executes without error.
This commit is contained in:
committed by
diegosouzapw
parent
165904b9d5
commit
ce5fba4bdd
@@ -1094,8 +1094,6 @@
|
||||
"costsFreeTiersSubtitle": "Hạn mức token miễn phí hàng tháng",
|
||||
"freeProviderRankings": "Xếp hạng nhà cung cấp miễn phí",
|
||||
"freeProviderRankingsSubtitle": "Các nhà cung cấp miễn phí tốt nhất được xếp hạng theo điểm ELO của mô hình",
|
||||
"radar": "Danh mục Radar",
|
||||
"radarSubtitle": "Danh mục mô hình miễn phí được làm phong phú bởi cộng đồng",
|
||||
"costsQuotaShare": "Chia sẻ hạn mức",
|
||||
"costsPricing": "Định giá",
|
||||
"logsProxy": "Nhật ký proxy",
|
||||
@@ -1121,7 +1119,6 @@
|
||||
"runtime": "Thời gian chạy",
|
||||
"consoleLogs": "Nhật ký bảng điều khiển",
|
||||
"logsTimeline": "Timeline",
|
||||
"logsTimelineSubtitle": "Dòng thời gian yêu cầu trực quan",
|
||||
"globalRouting": "Định tuyến toàn cục",
|
||||
"mitmProxy": "MITM Proxy",
|
||||
"oneProxy": "1Proxy",
|
||||
@@ -1167,6 +1164,7 @@
|
||||
"logsSubtitle": "Nhật ký ứng dụng",
|
||||
"logsProxySubtitle": "Nhật ký lưu lượng proxy",
|
||||
"consoleLogsSubtitle": "Đầu ra bảng điều khiển",
|
||||
"logsTimelineSubtitle": "Dòng thời gian yêu cầu trực quan",
|
||||
"logsActivitySubtitle": "Nhật ký hoạt động người dùng",
|
||||
"healthSubtitle": "Kiểm tra tình trạng hệ thống",
|
||||
"costsPricingSubtitle": "Quy tắc định giá theo từng mô hình",
|
||||
@@ -1234,7 +1232,9 @@
|
||||
"discovery": "Khám phá",
|
||||
"discoverySubtitle": "Quét các nhà cung cấp để tìm quyền truy cập miễn phí",
|
||||
"resilienceConnections": "Khả Năng Phục Hồi Kết Nối",
|
||||
"resilienceConnectionsSubtitle": "Cooldown, cầu dao, trạng thái khóa"
|
||||
"resilienceConnectionsSubtitle": "Cooldown, cầu dao, trạng thái khóa",
|
||||
"radar": "Danh mục Radar",
|
||||
"radarSubtitle": "Danh mục mô hình miễn phí được làm phong phú bởi cộng đồng"
|
||||
},
|
||||
"webhooks": {
|
||||
"title": "Webhook",
|
||||
@@ -2979,7 +2979,15 @@
|
||||
"copilotPasteInto": "Dán vào:",
|
||||
"copilotReloadInstruction": "Sau đó tải lại VS Code và nhập khóa API khi được yêu cầu.",
|
||||
"wireApiChatCompletions": "Chat Completions (/chat/completions)",
|
||||
"wireApiResponses": "Responses API (/responses)"
|
||||
"wireApiResponses": "Responses API (/responses)",
|
||||
"ccDiscoveryInfoButton": "Cách bật khám phá mô hình trong Claude Code",
|
||||
"ccDiscoveryInfoTooltip": "Công bố các mô hình không phải Claude dưới dạng id phản chiếu claude/<provider>/<model> để tính năng khám phá mô hình qua gateway của Claude Code có thể liệt kê chúng. Khi bật ở phạm vi toàn cục, số mục trong danh mục tăng gấp đôi với mọi client.",
|
||||
"ccDiscoveryInfoLink": "Mở Feature Flags",
|
||||
"ccOnboardingTitle": "settings.json cho việc khám phá mô hình qua gateway",
|
||||
"ccOnboardingCopy": "Sao chép",
|
||||
"ccOnboardingCopied": "Đã sao chép",
|
||||
"ccOnboardingKeyPlaceholder": "<khóa API OmniRoute của bạn>",
|
||||
"ccOnboardingWindowNote": "Claude Code mặc định coi mọi id mô hình mà nó không nhận ra là có cửa sổ ngữ cảnh 200K. Với mô hình có cửa sổ thực tế khác, hãy thêm CLAUDE_CODE_AUTO_COMPACT_WINDOW ngay bên dưới để việc nén ngữ cảnh tự động không kích hoạt quá sớm."
|
||||
},
|
||||
"combos": {
|
||||
"title": "Combo",
|
||||
@@ -5073,8 +5081,6 @@
|
||||
"noNewModelsAddedExisting": "Không có mô hình mới nào được thêm (tất cả đã tồn tại).",
|
||||
"importDoneCount": "✓ Hoàn tất! {count, plural, one {Đã nhập # mô hình.} other {Đã nhập # mô hình.}}",
|
||||
"unexpectedErrorOccurred": "Đã xảy ra lỗi không mong muốn",
|
||||
"getApiKey": "Lấy khóa API",
|
||||
"getApiKeyDescription": "Đăng ký hoặc tạo tài khoản để nhận khóa API",
|
||||
"connectionCountLabel": "{count, plural, one {# kết nối} other {# kết nối}}",
|
||||
"messagesPath": "messages",
|
||||
"responsesPath": "responses",
|
||||
@@ -5492,12 +5498,12 @@
|
||||
"newApiUserIdPlaceholder": "vd. 12345",
|
||||
"newApiUserIdHint": "Giá trị tiêu đề New-Api-User của AgentRouter, dùng cùng với khóa API console để lấy số dư hạn mức.",
|
||||
"newApiAggregatorToggleLabel": "Cổng tổng hợp",
|
||||
"newApiAggregatorToggleHint": "Bật phát hiện số dư cho các node tổng hợp New-API / One-API / Sub2API. Bảng điều khiển sẽ hiển thị huy hiệu số dư và định tuyến quota-preflight sẽ bỏ qua các tài khoản đã cạn.",
|
||||
"newApiAggregatorConsoleApiKeyHint": "System Access Token cho endpoint /api/user/self của bộ tổng hợp. Không phải khóa API định tuyến.",
|
||||
"newApiAggregatorUserIdHint": "Giá trị header New-Api-User dùng để lấy số dư quota của người dùng bộ tổng hợp.",
|
||||
"newApiAggregatorQuotaPerUnitLabel": "Quota mỗi đơn vị",
|
||||
"newApiAggregatorQuotaPerUnitHint": "Số đơn vị tín dụng New-API cho mỗi 1 USD (mặc định: 500000). Ghi đè nếu bộ tổng hợp của bạn dùng tỷ lệ khác.",
|
||||
"featureFlagNewApiAggregatorBalanceDescription": "Bật phát hiện số dư cho các node tương thích New-API / One-API / Sub2API",
|
||||
"newApiAggregatorToggleHint": "Bật tính năng phát hiện số dư cho các node tổng hợp New-API / One-API / Sub2API. Bảng điều khiển sẽ hiển thị huy hiệu số dư và định tuyến kiểm tra hạn mức trước sẽ bỏ qua các tài khoản đã hết hạn mức.",
|
||||
"newApiAggregatorConsoleApiKeyHint": "Token truy cập hệ thống cho endpoint /api/user/self của bộ tổng hợp. Không phải là khóa API định tuyến.",
|
||||
"newApiAggregatorUserIdHint": "Giá trị tiêu đề New-Api-User dùng để lấy số dư hạn mức của người dùng bộ tổng hợp.",
|
||||
"newApiAggregatorQuotaPerUnitLabel": "Hạn mức trên mỗi đơn vị",
|
||||
"newApiAggregatorQuotaPerUnitHint": "Số đơn vị tín dụng New-API trên mỗi $1 (mặc định: 500000). Ghi đè nếu bộ tổng hợp của bạn sử dụng tỷ lệ khác.",
|
||||
"featureFlagNewApiAggregatorBalanceDescription": "Bật tính năng phát hiện số dư cho các node tương thích với bộ tổng hợp New-API / One-API / Sub2API",
|
||||
"cpaModeDisabledTitle": "Chế độ tương thích CLIProxyAPI đã bị tắt",
|
||||
"cpaModeEnabledTitle": "Chế độ tương thích CLIProxyAPI đã được bật",
|
||||
"customUserAgentHint": "Gợi ý User Agent tùy chỉnh",
|
||||
@@ -5613,7 +5619,7 @@
|
||||
"tagGroupPlaceholder": "Nhập nhóm thẻ...",
|
||||
"testModel": "Kiểm tra mô hình",
|
||||
"testingModel": "Đang kiểm tra mô hình",
|
||||
"modelTestQuotaTooltip": "Đã hết quota — sẽ đặt lại vào ngày mai hoặc cần nạp thêm",
|
||||
"modelTestQuotaTooltip": "Đã hết hạn mức — sẽ được đặt lại vào ngày mai hoặc cần nạp thêm",
|
||||
"toggleOffShort": "Tắt",
|
||||
"toggleOnShort": "Bật",
|
||||
"tokenExpiredBadge": "Nhãn token đã hết hạn",
|
||||
@@ -5783,7 +5789,6 @@
|
||||
"onboardingProviderDescriptions": {
|
||||
"360ai": "Lấy khóa API tại ai.360.cn",
|
||||
"agentrouter": "Nhận 200 USD tín dụng miễn phí tại https://agentrouter.org/register — không cần thẻ tín dụng.",
|
||||
"unorouter": "Tạo khóa API tại https://unorouter.ai, sau đó dán vào đây dưới dạng Bearer token.",
|
||||
"agnes": "Lấy khóa API tại agnes-ai.com",
|
||||
"aimlapi": "Gói miễn phí đã tạm dừng (2026) — AI/ML API hiện chỉ tính phí theo mức sử dụng (nạp tối thiểu 20 USD); không còn tín dụng miễn phí định kỳ.",
|
||||
"ai21": "10 USD tín dụng dùng thử khi đăng ký (có hiệu lực 3 tháng), không cần thẻ tín dụng",
|
||||
@@ -5980,7 +5985,8 @@
|
||||
"kimi-coding": "Kết nối Kimi Coding bằng luồng OAuth hiện có.",
|
||||
"kiro": "Gói miễn phí: 50 tín dụng/tháng (khoảng 25–100 nghìn token). ⚠️ Điều khoản Kiro cấm sử dụng proxy/harness của bên thứ ba.",
|
||||
"codex": "Kết nối OpenAI Codex bằng luồng OAuth hiện có.",
|
||||
"qwen": "Kết nối Qwen Code bằng luồng OAuth hiện có."
|
||||
"qwen": "Kết nối Qwen Code bằng luồng OAuth hiện có.",
|
||||
"unorouter": "Tạo khóa API tại https://unorouter.ai, sau đó dán vào đây dưới dạng Bearer token."
|
||||
},
|
||||
"passthroughModelsDescription": "{provider} chấp nhận ID mô hình gốc của nhà cung cấp. Nhập từ /models hoặc thêm ID tùy chỉnh để định tuyến.",
|
||||
"bedrockModelsDescription": "Các mô hình Amazon Bedrock được giới hạn theo vùng AWS. Nhập từ /models hoặc thêm ID mô hình Bedrock được bật trong vùng đã chọn.",
|
||||
@@ -6032,7 +6038,9 @@
|
||||
"kimiOfficialSupporterTooltip": "Kimi (Moonshot AI) là người bạn mã nguồn mở sáng lập của OmniRoute",
|
||||
"cheaperInferenceSupporterBadge": "Người bạn mã nguồn mở",
|
||||
"cheaperInferenceSupporterTooltip": "Cheaper Inference hỗ trợ OmniRoute với tư cách là người bạn mã nguồn mở",
|
||||
"kimiPartnerLinkNote": "Partner link — supports OmniRoute at no extra cost to you"
|
||||
"kimiPartnerLinkNote": "Partner link — supports OmniRoute at no extra cost to you",
|
||||
"getApiKey": "Lấy khóa API",
|
||||
"getApiKeyDescription": "Đăng ký hoặc tạo tài khoản để nhận khóa API"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Cài đặt",
|
||||
@@ -10798,8 +10806,6 @@
|
||||
"sourceModel": "Mô hình nguồn (agent gốc)",
|
||||
"targetModel": "Mô hình mục tiêu (OmniRoute)",
|
||||
"noMappings": "Chưa cấu hình ánh xạ mô hình. Hãy chạy trình hướng dẫn thiết lập để tự động phát hiện mô hình.",
|
||||
"noMappingsDesc": "Chưa cấu hình ánh xạ mô hình nào. Hãy thêm ánh xạ để định tuyến yêu cầu của agent qua OmniRoute.",
|
||||
"addMapping": "Thêm ánh xạ",
|
||||
"selectModel": "Chọn…",
|
||||
"saveMappings": "Lưu ánh xạ",
|
||||
"setupWizard": "Trình hướng dẫn thiết lập",
|
||||
@@ -10871,7 +10877,9 @@
|
||||
"goNow": "Đi ngay",
|
||||
"message": "MITM Proxy hiện nằm trong AgentBridge.",
|
||||
"title": "Trang này đã được di chuyển"
|
||||
}
|
||||
},
|
||||
"noMappingsDesc": "Chưa cấu hình ánh xạ mô hình nào. Hãy thêm ánh xạ để định tuyến yêu cầu của agent qua OmniRoute.",
|
||||
"addMapping": "Thêm ánh xạ"
|
||||
},
|
||||
"providerStats": {
|
||||
"unknownError": "Lỗi không xác định",
|
||||
@@ -11741,7 +11749,6 @@
|
||||
"danger": "Nguy hiểm",
|
||||
"requiresRestart": "Cần khởi động lại",
|
||||
"source": "Nguồn",
|
||||
"ccDiscoveryAliasesEnvWarning": "Đang bật qua biến môi trường (EXPOSE_CC_DISCOVERY_ALIASES) — giá trị này ghi đè mọi công tắc trong bảng điều khiển bên dưới.",
|
||||
"resetFlag": "Đặt lại {label} về mặc định",
|
||||
"reset": "Đặt lại",
|
||||
"loadFailed": "Không thể tải cờ tính năng",
|
||||
@@ -11898,7 +11905,8 @@
|
||||
"SKILLS_SANDBOX_NETWORK_ENABLED": {
|
||||
"description": "Cho phép môi trường sandbox của kỹ năng truy cập mạng."
|
||||
}
|
||||
}
|
||||
},
|
||||
"ccDiscoveryAliasesEnvWarning": "Đang bật qua biến môi trường (EXPOSE_CC_DISCOVERY_ALIASES) — giá trị này ghi đè mọi công tắc trong bảng điều khiển bên dưới."
|
||||
},
|
||||
"comboControl": {
|
||||
"title": "Trung tâm điều khiển combo",
|
||||
|
||||
@@ -14,3 +14,4 @@
|
||||
-- falls back to the existing native web-search-bypass defaults in webSearchFallback.ts).
|
||||
--
|
||||
-- See: src/lib/db/interceptionRules.ts
|
||||
SELECT 1;
|
||||
|
||||
Reference in New Issue
Block a user