Skip to content

fix(i18n): cs.json, extract untranslatable keys, fix Hindi code, add I18N docs - #912

Closed
zen0bit wants to merge 8 commits into
diegosouzapw:release/v3.4.5from
oSoWoSo:i18n-strings
Closed

zen0bit wants to merge 8 commits into
diegosouzapw:release/v3.4.5from
oSoWoSo:i18n-strings

Conversation

@zen0bit

@zen0bit zen0bit commented Apr 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Comprehensive i18n improvements across translations, validation tooling, generator fixes, and documentation.

Changes

🇨🇿 Czech Translation Updates

  • Translated 158 keys in src/i18n/messages/cs.json (previously identical to en.json)
  • User-verified corrections for specific terms (e.g. "Načítám...", "Prompt mezipaměť", "ok")
  • Zero missing keys, zero untranslated after validation

🔧 Validation Tooling

  • Extracted UNTRANSLATABLE_KEYS from inline Python set to scripts/i18n/untranslatable-keys.json (236 keys)
  • Added ignored count to validate_translation.py quick output: Ignored (UNTRANSLATABLE_KEYS): 236
  • Reduces false-positive "untranslated" warnings for brand names, technical terms, and placeholders

🇮🇳 Hindi Code Fix

  • Changed code: "in" → code: "hi" in generate-multilang.mjs LOCALE_SPECS
  • Removed orphaned src/i18n/messages/in.json (duplicate of hi.json with wrong filename)
  • Root cause: upstream commit 952b0b22c used deprecated Google Translate code

📖 I18N Documentation

  • Created docs/I18N.md — comprehensive i18n toolchain documentation (~400 lines)
  • Covers: architecture, auto-translation pipeline, validation/QA tools, CI integration, best practices
  • Registered in DOC_SOURCE_FILES so it gets auto-translated to all 30 locales

Files Changed

  • src/i18n/messages/cs.json — 158 translations applied
  • scripts/validate_translation.py — external JSON loading, ignored count output
  • scripts/i18n/untranslatable-keys.json — new file (236 keys)
  • scripts/i18n/generate-multilang.mjs — in → hi fix, I18N.md added to docs
  • src/i18n/messages/in.json — deleted (orphaned)
  • docs/I18N.md — new documentation

Validation

  • python3 scripts/validate_translation.py quick -l cs → Missing: 0, Untranslated: 0
  • All unit tests pass
  • Lint and typecheck pass

@kilo-code-bot

kilo-code-bot Bot commented Apr 2, 2026 •

Copy link
Copy Markdown

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 0

Changes Reviewed

This incremental update includes:

Documentation:

  • docs/I18N.md (409 lines) - New comprehensive i18n documentation
  • scripts/i18n/untranslatable-keys.json - New file with 241 untranslatable keys (moved from inline Python set)
  • scripts/validate_translation.py - Refactored to use external JSON file, improved formatting
  • scripts/i18n/generate-multilang.mjs - Fixed Hindi locale code from "in" to "hi"

API Routes (Improvements):

  • src/app/api/memory/route.ts - Added Zod schema validation for POST
  • src/app/api/skills/[id]/route.ts - Added Zod schema validation for PUT

i18n Files:

  • src/i18n/messages/in.json - Removed (orphaned duplicate of hi.json)
  • Multiple language files updated with translations and whitelabeling keys

Analysis

Both API route changes add proper input validation using Zod schemas, which is an improvement over the previous minimal validation. The validation helpers are used correctly and error responses follow the expected format.

The orphaned in.json file was properly removed, fixing the Hindi locale issue.

Verification

  • All new code changes use existing patterns (Zod validation helpers)
  • i18n JSON files valid (verified structure)
  • No security issues introduced
Files Reviewed (12 files)
  • docs/I18N.md
  • scripts/i18n/generate-multilang.mjs
  • scripts/i18n/untranslatable-keys.json
  • scripts/validate_translation.py
  • src/app/api/memory/route.ts
  • src/app/api/skills/[id]/route.ts
  • src/i18n/messages/in.json (removed)
  • src/i18n/messages/*.json (32 files)

Reviewed by minimax-m2.5-20260211 · 478,056 tokens

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

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.

Code Review

This pull request introduces new localization keys for branding and whitelabeling features across multiple language files. Several review comments correctly identify that these new strings were added in English and require translation into their respective target languages. Additionally, one comment highlights a duplicate key issue in the Hindi localization file that was partially addressed, and others point out non-standard or deprecated language codes in the Filipino and Indonesian files that should be corrected for better standardization.

Comment thread src/i18n/messages/ms.json Outdated
Comment thread src/i18n/messages/nl.json Outdated
Comment thread src/i18n/messages/cs.json Outdated
Comment thread src/i18n/messages/da.json Outdated
Comment thread src/i18n/messages/de.json Outdated
Comment thread src/i18n/messages/th.json Outdated
Comment thread src/i18n/messages/tr.json Outdated
Comment thread src/i18n/messages/uk-UA.json Outdated
Comment thread src/i18n/messages/vi.json Outdated
Comment thread src/i18n/messages/hi.json
zen0bit added 7 commits April 2, 2026 07:19
Move hardcoded ignore list from validate_translation.py into
scripts/i18n/untranslatable-keys.json for easier maintenance.
Add ignored count to quick-check output.
Update list to 236 keys covering all intentionally untranslated strings.
The generator used deprecated Google Translate code 'in' instead of
ISO 639-1 'hi', creating an orphaned in.json duplicate of hi.json.
Fix code to 'hi' and remove the orphaned in.json file.
Create comprehensive i18n toolchain documentation covering:
- Architecture, runtime flow, supported locales table
- Auto-translation pipeline (Google Translate + LLM)
- Validation & QA tools with examples
- Untranslatable keys management
- CI integration, best practices, known issues

Add I18N.md to DOC_SOURCE_FILES so it gets auto-translated
to docs/i18n/{locale}/docs/I18N.md for all 30 locales.
Update validate_translation.py quick output to show ignored count.
@zen0bit zen0bit changed the title fix(i18n): Add missing strings fix(i18n): cs.json translations, extract untranslatable keys, fix Hindi code, add I18N docs Apr 2, 2026
@zen0bit zen0bit changed the title fix(i18n): cs.json translations, extract untranslatable keys, fix Hindi code, add I18N docs fix(i18n): cs.json, extract untranslatable keys, fix Hindi code, add I18N docs Apr 2, 2026
@diegosouzapw
diegosouzapw changed the base branch from main to release/v3.4.5 April 2, 2026 17:36
@diegosouzapw

Copy link
Copy Markdown
Owner

Thanks @zen0bit for this great contribution! 🎉 This PR has been integrated into the release/v3.4.5 branch and will be part of the next release. We appreciate your effort!

diegosouzapw added a commit that referenced this pull request Apr 2, 2026
@diegosouzapw

Copy link
Copy Markdown
Owner

Integrated manually into release/v3.4.5 due to base branch merge conflicts. Will be released as part of v3.4.5. Thank you!

@zen0bit
zen0bit deleted the i18n-strings branch April 8, 2026 11:34
@diegosouzapw diegosouzapw mentioned this pull request Apr 22, 2026
This was referenced Apr 30, 2026
diegosouzapw pushed a commit that referenced this pull request Jun 22, 2026
…ted base-reds

- Reconcile [3.8.33] CHANGELOG to 1:1 commit coverage (51 bullets) + env contract
  (QUOTA_PREFLIGHT_CUTOFF_ENABLED, KIRO_VERIFY_FULL_CRC) + README What's New range.
- fix(translator): dedupe the duplicate input_audio handler in geminiHelper; mp3
  normalizes to canonical audio/mpeg and the data: prefix is stripped (#912/#913).
- fix(auth): wire admin-configured maxCooldownMs to all 4 markAccountUnavailable
  model-lockout sites (#4530 follow-up — combo.ts sites were already covered).
- fix(api): add src/models/ to package.json files so the published --mcp closure
  ships it (#3578 gate).
- test: align stale expectations to intentional code (10 essential MCP tools incl.
  web_fetch; busy_timeout 2s cap from v3.8.32).
- chore(quality): rebaseline file-size for auth.ts 2279->2289 + db-core-init.test.ts.
Poid-ZA pushed a commit to Poid-ZA/OmniRoute that referenced this pull request Aug 5, 2026
tkgo11 pushed a commit to tkgo11/OmniRoute that referenced this pull request Sep 23, 2026
…ted base-reds

- Reconcile [3.8.33] CHANGELOG to 1:1 commit coverage (51 bullets) + env contract
  (QUOTA_PREFLIGHT_CUTOFF_ENABLED, KIRO_VERIFY_FULL_CRC) + README What's New range.
- fix(translator): dedupe the duplicate input_audio handler in geminiHelper; mp3
  normalizes to canonical audio/mpeg and the data: prefix is stripped (diegosouzapw#912/diegosouzapw#913).
- fix(auth): wire admin-configured maxCooldownMs to all 4 markAccountUnavailable
  model-lockout sites (diegosouzapw#4530 follow-up — combo.ts sites were already covered).
- fix(api): add src/models/ to package.json files so the published --mcp closure
  ships it (diegosouzapw#3578 gate).
- test: align stale expectations to intentional code (10 essential MCP tools incl.
  web_fetch; busy_timeout 2s cap from v3.8.32).
- chore(quality): rebaseline file-size for auth.ts 2279->2289 + db-core-init.test.ts.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
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.

2 participants