From 0beee4af3db00c1f7b3df58492eb92ef0c2acfbd Mon Sep 17 00:00:00 2001 From: David Montero Date: Thu, 28 May 2026 20:57:29 +0200 Subject: [PATCH] =?UTF-8?q?i18n:=20add=20quotaModal=20block=20in=20en/es/p?= =?UTF-8?q?t-br/zh-cn=20(10=20keys=20=C3=97=204=20langs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The quota-exhausted modal (rendered by the velxio.dev pro overlay when a free user hits the daily AI cap) was hardcoded English. The modal is seen by users from CN/BR/MX/CO/AR/PE/IN — the audiences most likely to bounce on English-only UX. This adds the four key languages. Keys: titleFree — "You've hit today's free limit" titlePaid — "You've reached your daily limit" bodyFree — explainer + Pro upgrade pitch (interpolates cap/proCap/multiplier) bodyPaid — explainer for paid users who hit their own tier's cap today / thisMonth / resets — stats labels ctaUpgrade — primary CTA ("Upgrade to Pro — $15/mo") ctaSeePlans — fallback CTA for non-free users ctaWait — secondary "Wait until reset" Upstream-only change — the velxio-prod overlay's AgentChatPanel.tsx is wired to consume these via useTranslation in a separate commit. 🤖 Generated with Claude Code Co-Authored-By: Claude Opus 4.7 --- frontend/src/i18n/locales/en/common.json | 14 +++++++++++++- frontend/src/i18n/locales/es/common.json | 14 +++++++++++++- frontend/src/i18n/locales/pt-br/common.json | 14 +++++++++++++- frontend/src/i18n/locales/zh-cn/common.json | 14 +++++++++++++- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/frontend/src/i18n/locales/en/common.json b/frontend/src/i18n/locales/en/common.json index 176ebe32..bbd2db4b 100644 --- a/frontend/src/i18n/locales/en/common.json +++ b/frontend/src/i18n/locales/en/common.json @@ -402,5 +402,17 @@ "failed": "Registration failed." } } + }, + "quotaModal": { + "titleFree": "You've hit today's free limit", + "titlePaid": "You've reached your daily limit", + "bodyFree": "Free accounts get {{cap}} AI messages a day. Pro ($15/mo) gives you {{proCap}}/day — {{multiplier}}× the cap. Or wait until your quota resets.", + "bodyPaid": "Your {{plan}} plan allows {{cap}} messages per day. Upgrade to a higher tier or wait for the reset.", + "today": "Today", + "thisMonth": "This month", + "resets": "Resets", + "ctaUpgrade": "Upgrade to Pro — $15/mo", + "ctaSeePlans": "See plans", + "ctaWait": "Wait until reset" } -} \ No newline at end of file +} diff --git a/frontend/src/i18n/locales/es/common.json b/frontend/src/i18n/locales/es/common.json index 7773cd13..e1e5cbb0 100644 --- a/frontend/src/i18n/locales/es/common.json +++ b/frontend/src/i18n/locales/es/common.json @@ -402,5 +402,17 @@ "failed": "Error al registrarse." } } + }, + "quotaModal": { + "titleFree": "Llegaste al límite gratuito de hoy", + "titlePaid": "Alcanzaste tu límite diario", + "bodyFree": "Las cuentas Free reciben {{cap}} mensajes de IA por día. Pro ($15/mes) te da {{proCap}}/día — {{multiplier}}× el límite. O esperá hasta que se reinicie tu cuota.", + "bodyPaid": "Tu plan {{plan}} permite {{cap}} mensajes por día. Subí a un plan superior o esperá al reinicio.", + "today": "Hoy", + "thisMonth": "Este mes", + "resets": "Se reinicia", + "ctaUpgrade": "Pasar a Pro — $15/mes", + "ctaSeePlans": "Ver planes", + "ctaWait": "Esperar al reinicio" } -} \ No newline at end of file +} diff --git a/frontend/src/i18n/locales/pt-br/common.json b/frontend/src/i18n/locales/pt-br/common.json index 100ee001..5c914815 100644 --- a/frontend/src/i18n/locales/pt-br/common.json +++ b/frontend/src/i18n/locales/pt-br/common.json @@ -402,5 +402,17 @@ "failed": "Falha no registro." } } + }, + "quotaModal": { + "titleFree": "Você atingiu o limite gratuito de hoje", + "titlePaid": "Você atingiu seu limite diário", + "bodyFree": "Contas Free recebem {{cap}} mensagens de IA por dia. O Pro ($15/mês) te dá {{proCap}}/dia — {{multiplier}}× o limite. Ou espere até sua cota reiniciar.", + "bodyPaid": "Seu plano {{plan}} permite {{cap}} mensagens por dia. Faça upgrade ou aguarde o reinício.", + "today": "Hoje", + "thisMonth": "Este mês", + "resets": "Reinicia", + "ctaUpgrade": "Fazer upgrade para Pro — $15/mês", + "ctaSeePlans": "Ver planos", + "ctaWait": "Aguardar reinício" } -} \ No newline at end of file +} diff --git a/frontend/src/i18n/locales/zh-cn/common.json b/frontend/src/i18n/locales/zh-cn/common.json index a1906c11..3a29e424 100644 --- a/frontend/src/i18n/locales/zh-cn/common.json +++ b/frontend/src/i18n/locales/zh-cn/common.json @@ -402,5 +402,17 @@ "failed": "注册失败。" } } + }, + "quotaModal": { + "titleFree": "今日免费额度已用完", + "titlePaid": "已达到每日上限", + "bodyFree": "免费账户每天有 {{cap}} 条 AI 消息。Pro ($15/月) 可享 {{proCap}}/天 —— 是免费版的 {{multiplier}} 倍。或等待配额重置。", + "bodyPaid": "您的 {{plan}} 套餐每天允许 {{cap}} 条消息。升级到更高级别或等待重置。", + "today": "今日", + "thisMonth": "本月", + "resets": "重置时间", + "ctaUpgrade": "升级到 Pro — $15/月", + "ctaSeePlans": "查看套餐", + "ctaWait": "等待重置" } -} \ No newline at end of file +}