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:
nguyenha935
2026-07-21 23:41:02 +07:00
committed by GitHub
parent eab59d4048
commit 4012bac41d
207 changed files with 12021 additions and 5221 deletions

View File

@@ -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",

View File

@@ -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",
},