Skip to content

Add Italian translation - #87

Merged
aghyad97 merged 2 commits into
mainfrom
i18n/italian
Aug 2, 2026
Merged

aghyad97 merged 2 commits into
mainfrom
i18n/italian

Conversation

@aghyad97

@aghyad97 aghyad97 commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Adds messages/it.json, a full Italian translation of messages/en.json. Single new file — no registry wiring, no source changes.

Verification

  • Key parity: 4577 / 4577 leaf keys, 0 missing, 0 extra, same order as en.json.
  • Placeholder parity: 0 mismatches (every {placeholder} preserved byte-for-byte).
  • Foreign-script contamination: 0 (Cyrillic, Devanagari, Arabic, Hangul, CJK, Kana, Hebrew, Thai, Greek all zero).
  • Invariable-loanword plurals: 0 errors (i file, i server, i browser — no -s). The one grep hit is the {bytes} placeholder name.
  • E' instead of È: 0.
  • bunx tsc --noEmit clean; bun run test 164 files / 1317 tests passing, unchanged from the pre-branch baseline.

Conventions chosen

  • Exclamation marks: en.json has 65 strings ending in !, nearly all success toasts. Italian software does not exclaim on routine confirmations, so all 65 are flat in Italian (Copied! → Copiato). No ! was introduced anywhere the source lacks one — the Italian file has zero strings ending in !.
  • Register: bare imperative for buttons and actions (Copia, Scarica, Elimina); impersonal for system messages (Non è stato possibile…, Si è verificato un errore); no tu, no Lei in prose.
  • Gender agreement around interpolation: 31 strings were restructured so an interpolated value never governs an adjective, past participle, or article — colon/head-noun constructions ({label} copied → Copiato: {label}, Added {city} → Città aggiunta: {city}). Where the head noun is known, agreement follows that noun instead.
  • Terminology: English loanwords kept per settled Italian IT usage (browser, file, server, cache, download, password), no calques. AI used throughout rather than IA (normalized; 0 remaining IA).
  • Tool-card name/description use a single register (bare imperative, matching the English) and a single converter naming pattern (Da X a Y).

Worth a native speaker's eye

  • Landing.sponsorTile and CoffeeBanner.message keep second-person pitch copy, the only tu forms left; deliberate, but inconsistent with the impersonal prose rule elsewhere.
  • Common.pause = Pausa (noun) rather than an imperative — settled media-player idiom, but it breaks the button convention.
  • Converter card names were normalized to Da X a Y; X in Y is equally natural Italian if that pattern is preferred.
  • Testa used for the tester tools (regex-tester, keyboard-tester, gamepad-tester); Prova may read better on the hardware ones.
  • Cluster meta descriptions spell numbers out (Tredici, Diciotto) following the English — confirm that is the intended SEO style.
  • Tools.WheelOfNames.winnerLabel = Vincitore: {name} uses a masculine head noun in front of a possibly female name.
  • Pre-existing upstream issue, not fixable in the locale file: Tools.LoremIpsumGenerator.maxCount interpolates {type} with a raw English state value (words/sentences/paragraphs) from src/components/LoremIpsumGenerator.tsx, so it renders "Massimo 1000 words" in every locale.

@vercel

vercel Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
browserytools Ready Ready Preview Aug 2, 2026 11:11am

Request Review

@aghyad97
aghyad97 merged commit 7de89f3 into main Aug 2, 2026
4 checks passed
@aghyad97
aghyad97 deleted the i18n/italian branch August 2, 2026 11:14

This branch was successfully deployed

1 active deployment
Preview — 1673664a Deployed Aug 2, 2026 by vercel[bot]
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