mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-05 06:42:12 +03:00
fix(i18n): preserve remaining Vietnamese localization (#7935)
* fix(i18n): preserve remaining Vietnamese localization * chore(quality): rebaseline file-size cap for 9 dashboard components (i18n wiring) Restoring the Vietnamese localization on 9 dashboard components (useTranslations wiring + t()/tc() call-site swaps for previously hardcoded strings) grows each file by a small, irreducible amount. Bumps the frozen file-size-baseline.json caps to match, with a justification entry per the project's own ratchet policy. Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com> * fix(i18n): wire weekday localization + add missing qwen CLI description Two gaps left by this PR's own new contract tests, caught while reconciling the branch against the release tip: - CostOverviewTab.tsx added formatWeekdayLabel() but never called it; the Weekly Usage Pattern chart still showed raw English day abbreviations regardless of locale. Now maps weeklyPattern rows through it before handing them to WeeklyPatternCard. - cliTools.toolDescriptions was missing an entry for "qwen" (a baseUrlSupport:"full" tool) in both en.json and vi.json, failing the PR's own cli-catalog-display-contract.test.ts. Covered by the PR's existing tests/unit/dashboard-localization-contract.test.ts and tests/unit/cli-catalog-display-contract.test.ts (both now pass). Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com> * i18n(vi): backfill the 4 proxySubscription keys #7299 added to en.json #7299 (proxy subscriptions) merged while this branch was rebasing, adding settings.proxySubscriptionsTab and settings.proxySubscription.error.{LOCAL_CORE_ENDPOINT_INVALID, NEEDS_CORE_NOT_CONFIGURED,NO_USABLE_NODES} to en.json. This PR's own i18n-vi-completeness contract asserts full en↔vi key parity, so the merge of the current release tip surfaced them as missing. Adds the Vietnamese translations, keeping the SS/VMess/Trojan/VLESS/SOCKS5 technical terms verbatim. Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com> --------- Co-authored-by: nguyenha935 <208228297+nguyenha935@users.noreply.github.com> Co-authored-by: Diego Rodrigues de Sa e Souza <diegosouza.pw@gmail.com> Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com> Co-authored-by: nguyenha935 <nguyenha935@users.noreply.github.com>
This commit is contained in:
@@ -9,7 +9,7 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
|
||||
claude: {
|
||||
id: "claude",
|
||||
name: "Claude Code",
|
||||
icon: "terminal",
|
||||
image: "/providers/claude.svg",
|
||||
color: "#D97757",
|
||||
description: "Anthropic Claude Code CLI — ANTHROPIC_BASE_URL points to OmniRoute",
|
||||
docsUrl: "https://docs.anthropic.com/en/docs/claude-code/overview",
|
||||
@@ -71,6 +71,7 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
|
||||
codex: {
|
||||
id: "codex",
|
||||
name: "OpenAI Codex CLI",
|
||||
image: "/providers/codex.svg",
|
||||
color: "#10A37F",
|
||||
description: "OpenAI Codex CLI — OpenAI-compatible base URL targets OmniRoute",
|
||||
docsUrl: "https://github.com/openai/codex",
|
||||
@@ -98,7 +99,7 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
|
||||
openclaw: {
|
||||
id: "openclaw",
|
||||
name: "Open Claw",
|
||||
image: "/providers/openclaw.png",
|
||||
image: "/providers/openclaw.svg",
|
||||
color: "#FF6B35",
|
||||
description: "Open Claw — open-source multi-backend agent CLI (OSS, P. Steinberger)",
|
||||
docsUrl: "/docs?section=cli-tools&tool=openclaw",
|
||||
@@ -112,7 +113,7 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
|
||||
cursor: {
|
||||
id: "cursor",
|
||||
name: "Cursor",
|
||||
image: "/providers/cursor.png",
|
||||
image: "/providers/cursor.svg",
|
||||
color: "#000000",
|
||||
// Cursor App routes via its own cloud server — local base URL not supported.
|
||||
// Use cursor-cli entry for headless/agent CLI mode with custom endpoint.
|
||||
@@ -144,6 +145,7 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
|
||||
cline: {
|
||||
id: "cline",
|
||||
name: "Cline",
|
||||
image: "/providers/cline.svg",
|
||||
color: "#00D1B2",
|
||||
description: "Cline — open-source VS Code coding agent with OpenAI-compatible base URL",
|
||||
docsUrl: "https://docs.cline.bot/",
|
||||
@@ -171,7 +173,7 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
|
||||
continue: {
|
||||
id: "continue",
|
||||
name: "Continue",
|
||||
image: "/providers/continue.png",
|
||||
image: "/providers/continue.svg",
|
||||
color: "#7C3AED",
|
||||
description: "Continue — open-source AI coding assistant with full provider config",
|
||||
docsUrl: "https://docs.continue.dev/",
|
||||
@@ -242,7 +244,7 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
|
||||
copilot: {
|
||||
id: "copilot",
|
||||
name: "GitHub Copilot",
|
||||
image: "/providers/copilot.png",
|
||||
image: "/providers/copilot.svg",
|
||||
color: "#1F6FEB",
|
||||
// D-nota: copilot suporta COPILOT_PROVIDER_BASE_URL desde v1.0.19+
|
||||
description: "GitHub Copilot Chat — VS Code extension with COPILOT_PROVIDER_BASE_URL support",
|
||||
@@ -402,7 +404,7 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
|
||||
qwen: {
|
||||
id: "qwen",
|
||||
name: "Qwen Code",
|
||||
icon: "psychology",
|
||||
image: "/providers/qwen.svg",
|
||||
color: "#10B981",
|
||||
description: "Qwen Code CLI — current V4 OpenAI-compatible model provider via OmniRoute",
|
||||
docsUrl: "https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/",
|
||||
@@ -512,7 +514,7 @@ aider --openai-api-base "{{baseUrl}}" --model "{{model}}"`,
|
||||
"cursor-cli": {
|
||||
id: "cursor-cli",
|
||||
name: "Cursor Agent CLI",
|
||||
icon: "terminal",
|
||||
image: "/providers/cursor.svg",
|
||||
color: "#000000",
|
||||
description: "Cursor Agent CLI — headless agent mode with custom provider endpoint",
|
||||
docsUrl: "https://docs.cursor.com/advanced/api",
|
||||
@@ -536,7 +538,7 @@ aider --openai-api-base "{{baseUrl}}" --model "{{model}}"`,
|
||||
roo: {
|
||||
id: "roo",
|
||||
name: "Roo Code",
|
||||
icon: "terminal",
|
||||
image: "/providers/roocode.svg",
|
||||
color: "#7C3AED",
|
||||
description: "Roo Code AI Assistant — VS Code extension with OpenAI-compatible custom base URL",
|
||||
docsUrl: "https://docs.roocode.com/",
|
||||
@@ -579,7 +581,7 @@ aider --openai-api-base "{{baseUrl}}" --model "{{model}}"`,
|
||||
"deepseek-tui": {
|
||||
id: "deepseek-tui",
|
||||
name: "DeepSeek TUI",
|
||||
icon: "terminal",
|
||||
image: "/providers/deepseek.svg",
|
||||
color: "#4F46E5",
|
||||
description: "DeepSeek TUI — Rust-based coding agent CLI with OPENAI_BASE_URL support",
|
||||
docsUrl: "https://github.com/hunterbown/deepseek-tui",
|
||||
|
||||
@@ -59,6 +59,7 @@ const OMNI_PROXY_ITEMS: readonly SidebarItemDefinition[] = [
|
||||
href: "/dashboard/combos/live",
|
||||
i18nKey: "combosLive",
|
||||
labelFallback: "Combo Studio",
|
||||
subtitleKey: "combosLiveSubtitle",
|
||||
subtitleFallback: "Live routing cascade",
|
||||
icon: "account_tree",
|
||||
},
|
||||
@@ -90,6 +91,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/settings",
|
||||
i18nKey: "contextSettings",
|
||||
labelFallback: "Compression Settings",
|
||||
subtitleKey: "contextSettingsSubtitle",
|
||||
subtitleFallback: "Global defaults",
|
||||
icon: "settings",
|
||||
},
|
||||
@@ -119,6 +121,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/headroom",
|
||||
i18nKey: "contextHeadroom",
|
||||
labelFallback: "Headroom",
|
||||
subtitleKey: "contextHeadroomSubtitle",
|
||||
subtitleFallback: "Tabular compaction",
|
||||
icon: "table_rows",
|
||||
},
|
||||
@@ -127,6 +130,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/session-dedup",
|
||||
i18nKey: "contextSessionDedup",
|
||||
labelFallback: "Session Dedup",
|
||||
subtitleKey: "contextSessionDedupSubtitle",
|
||||
subtitleFallback: "Cross-turn dedup",
|
||||
icon: "content_copy",
|
||||
},
|
||||
@@ -135,6 +139,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/ccr",
|
||||
i18nKey: "contextCcr",
|
||||
labelFallback: "CCR",
|
||||
subtitleKey: "contextCcrSubtitle",
|
||||
subtitleFallback: "Retrieve markers",
|
||||
icon: "archive",
|
||||
},
|
||||
@@ -143,6 +148,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/llmlingua",
|
||||
i18nKey: "contextLlmlingua",
|
||||
labelFallback: "LLMLingua",
|
||||
subtitleKey: "contextLlmlinguaSubtitle",
|
||||
subtitleFallback: "Semantic pruning",
|
||||
icon: "psychology",
|
||||
},
|
||||
@@ -151,6 +157,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/lite",
|
||||
i18nKey: "contextLite",
|
||||
labelFallback: "Lite",
|
||||
subtitleKey: "contextLiteSubtitle",
|
||||
subtitleFallback: "Fast whitespace cleanup",
|
||||
icon: "compress",
|
||||
},
|
||||
@@ -159,6 +166,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/aggressive",
|
||||
i18nKey: "contextAggressive",
|
||||
labelFallback: "Aggressive",
|
||||
subtitleKey: "contextAggressiveSubtitle",
|
||||
subtitleFallback: "Summary + aging",
|
||||
icon: "speed",
|
||||
},
|
||||
@@ -167,6 +175,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/ultra",
|
||||
i18nKey: "contextUltra",
|
||||
labelFallback: "Ultra",
|
||||
subtitleKey: "contextUltraSubtitle",
|
||||
subtitleFallback: "Heuristic pruning",
|
||||
icon: "bolt",
|
||||
},
|
||||
@@ -175,6 +184,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/context/omniglyph",
|
||||
i18nKey: "contextOmniglyph",
|
||||
labelFallback: "OmniGlyph",
|
||||
subtitleKey: "contextOmniglyphSubtitle",
|
||||
subtitleFallback: "Context-as-image",
|
||||
icon: "grain",
|
||||
},
|
||||
@@ -183,6 +193,7 @@ export const COMPRESSION_CONTEXT_GROUP: SidebarItemGroup = {
|
||||
href: "/dashboard/compression/studio",
|
||||
i18nKey: "compressionStudio",
|
||||
labelFallback: "Compression Studio",
|
||||
subtitleKey: "compressionStudioSubtitle",
|
||||
subtitleFallback: "Live engine cascade",
|
||||
icon: "monitoring",
|
||||
},
|
||||
@@ -520,6 +531,7 @@ const AGENTIC_FEATURES_ITEMS: readonly SidebarSectionChild[] = [
|
||||
href: "/dashboard/chaos",
|
||||
i18nKey: "chaosConfig",
|
||||
labelFallback: "Chaos Mode",
|
||||
subtitleKey: "chaosConfigSubtitle",
|
||||
subtitleFallback: "Multi-model parallel execution",
|
||||
icon: "blender",
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user