Skip to content

fix(i18n): add missing dashboard keys and fix EN fallbacks#2500

Open
Gi99lin wants to merge 2 commits into
diegosouzapw:mainfrom
Gi99lin:omniroute
Open

fix(i18n): add missing dashboard keys and fix EN fallbacks#2500
Gi99lin wants to merge 2 commits into
diegosouzapw:mainfrom
Gi99lin:omniroute

Conversation

@Gi99lin
Copy link
Copy Markdown
Contributor

@Gi99lin Gi99lin commented May 21, 2026

Summary

  • Fix Provider Quota showing Portuguese labels (Crítico, Alerta, Tipo, etc.) when English was selected: keys were missing from en.json and component fallbacks were PT-only.
  • Add 26 missing usage, combos, settings, providers, cache, costs, and contextCaveman keys to en.json and sync to all 41 locales via i18n:sync-ui.
  • Wire dashboard components to t() instead of hardcoded strings (Provider Limits, Provider card, Cache, Costs, Caveman).
  • Add unit tests asserting critical i18n keys exist in en.json.

Test plan

  • Open Provider Quota with locale EN — status cards show Total / Critical / Alert / Healthy; filters show Type / Tier.
  • Open Settings → Codex Fast Tier — tier and model labels render in English (not raw keys).
  • Edit Antigravity provider — Client profile select shows translated label and hint.
  • Switch locale to pt-BR / ru on Provider Quota — verify localized labels where translated.
  • Run node --import tsx --test tests/unit/provider-limits-ui.test.ts

Provider Quota showed Portuguese labels when EN was selected because
keys were missing from en.json and fallbacks were PT-only. Add usage,
combos, settings, and providers keys across locales, wire components to
t(), and extend provider-limits UI tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Gi99lin Gi99lin requested a review from diegosouzapw as a code owner May 21, 2026 15:12
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request externalizes hardcoded strings into translation keys across several dashboard components, including the cache, costs, providers, and usage pages. It also populates internationalization files with missing keys and adds unit tests to ensure these keys are defined in the English locale. Feedback highlights a few remaining hardcoded strings in the Caveman context page description and the 'Fast' tier label in provider cards that should be localized for consistency.

Comment on lines 237 to 239
<p className="mt-1 text-xs text-text-muted">
Rewrite chat history with shorter wording. Reduces input tokens by ~50%.
</p>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The description text for the "Input compression" section is still hardcoded in English. Since this PR aims to wire dashboard components to translation keys, this paragraph should also be externalized to the i18n messages.

Suggested change
<p className="mt-1 text-xs text-text-muted">
Rewrite chat history with shorter wording. Reduces input tokens by ~50%.
</p>
<p className="mt-1 text-xs text-text-muted">
{t("inputCompressionDesc")}
</p>

title={t("codexFastTierActiveChip")}
>
<span className="material-symbols-outlined text-[10px] leading-none">bolt</span>
Fast
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The visible label "Fast" inside the chip remains hardcoded. Since the title attribute was updated to use a translation key (codexFastTierActiveChip), the label itself should also be localized for consistency.

Suggested change
Fast
{t("tierFast")}

@kilo-code-bot
Copy link
Copy Markdown

kilo-code-bot Bot commented May 21, 2026

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 0

Files Reviewed (7 files)

  • src/app/(dashboard)/dashboard/cache/page.tsx - aria-label wired to t() call
  • src/app/(dashboard)/dashboard/context/caveman/CavemanContextPageClient.tsx - section title wired to t() call
  • src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx - legacyFreeLabel prop threaded through components
  • src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx - chip title wired to t() call
  • src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx - Portuguese fallbacks replaced with English in tr() calls; lite filter entry converted from hardcoded label to i18n labelKey
  • src/i18n/messages/en.json - 26 new keys added with proper English translations (verified no __MISSING__: prefix)
  • tests/unit/provider-limits-ui.test.ts - assertions for i18n key existence and non-placeholder values

All 41 non-English locale files receive the same keys with __MISSING__: prefix, which is expected behavior for the i18n sync process and will be resolved by human translators.

The component changes correctly use t() and tr() helpers. The tr() fallback strings are now consistently English instead of mixed Portuguese. The test assertions properly validate that en.json keys exist and are not placeholders.


Reviewed by qwen3.6-plus · 727,505 tokens

Address PR review: externalize input compression description and
provider Fast tier chip text via contextCaveman and providers keys.

Co-authored-by: Cursor <cursoragent@cursor.com>
@kilo-code-bot
Copy link
Copy Markdown

kilo-code-bot Bot commented May 21, 2026

Kilo Code Review could not run — your account is out of credits.

Add credits or switch to a free model to enable reviews on this change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant