Skip to content

feat(i18n): add Italian (it) locale - #202

Merged
grinev merged 1 commit into
grinev:mainfrom
Johell1NS:feat/i18n-italian
Aug 7, 2026
Merged

feat(i18n): add Italian (it) locale#202
grinev merged 1 commit into
grinev:mainfrom
Johell1NS:feat/i18n-italian

Conversation

@Johell1NS

Copy link
Copy Markdown
Contributor

Description of changes

Adds a complete Italian (it) locale — all 532 keys, following the same shape as the existing locales:

  • New src/i18n/it.ts typed against I18nDictionary (missing/extra keys fail compilation), so key parity with en.ts is enforced at build time.
  • Registered in LOCALE_DEFINITIONS (code: "it", label: "Italiano", dateLocale: "it-IT"), in alphabetical position so the setup-wizard numbering for existing users is unchanged.
  • Selectable via BOT_LOCALE=it or the setup wizard.

Italian is a major Telegram market and one of the most-requested locales, so this closes a real gap.

Translation approach

  • Translated from en.ts; used fr.ts / pt.ts as reference for house tone and button phrasing.
  • Every {placeholder}, emoji and \n escape preserved exactly (verified programmatically, see below).
  • Button labels kept short so they still fit on mobile.
  • Terms Italian users normally keep in English are left untranslated: OpenCode, worktree, token, prompt, MCP, cron, bash. Likewise detached HEAD, which is identical in practice.
  • Consistent informal "tu" register throughout, matching the original English tone.

How it was tested

Gate Result
npm run build (tsc) clean
npm run lint (eslint src tests --max-warnings=0) clean
npm run typecheck clean
npm test 1419/1419 passed (138 files)

The I18nDictionary type is the meaningful gate for key parity. I additionally verified programmatically that the key list is identical to en.ts (532 keys, none missing, none extra) and that every {placeholder} token matches its English counterpart one-for-one.

README.md (all three spots: Languages: line, Supported locales: list, BOT_LOCALE table row) and .env.example (# Supported locales: comment) were updated per docs/LOCALIZATION_GUIDE.md.

Closes issue (optional)

  • n/a

Checklist

  • PR title follows Conventional Commits: <type>(<scope>)?: <description>
  • This PR contains one logically complete change
  • Branch is rebased on the latest main
  • I ran npm run lint, npm run build, and npm test
  • If this PR is OS-sensitive, behavior/limitations for Linux/macOS/Windows are described

@grinev

grinev commented Aug 7, 2026

Copy link
Copy Markdown
Owner

@Johell1NS thanks for contribution!

@grinev
grinev merged commit b78e8b1 into grinev:main Aug 7, 2026
1 check passed
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