Skip to content

feat(l10n): Add Italian localization (part of #12) - #235

Merged
iliyami merged 1 commit into
iliyami:mainfrom
nnevskij:l10n/italian
Oct 17, 2026
Merged

iliyami merged 1 commit into
iliyami:mainfrom
nnevskij:l10n/italian

Conversation

@nnevskij

@nnevskij nnevskij commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Part of #12.

Adds full Italian localization across the entire app (613 strings):

  • Added AppLanguage.it with support for it, it-IT, and it-CH regional identifiers
  • Translated all module names, scan categories, maintenance tasks, alerts, tooltips, and badges
  • Uses informal tone ("tu") consistent with macOS Italian UI and official Apple terminology ("Inizio", "Cestino", "istantanee", "Impostazioni di Sistema", "Accesso completo al disco")
  • Updated per-module localization test loops to include Italian
  • Bumped version to 1.25.4 in VERSION and MCConstants.appVersion
  • All tests pass (including LocalizationTests and BrowserExtensionsLocalizationTests)

@iliyami iliyami left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Thank you @nnevskij, this is excellent work. I went through all 617 entries side by side with the English, German, and French strings. The Italian reads naturally, the "tu" tone is consistent, terminology matches Apple's (Cestino, Accesso completo al disco, Impostazioni di Sistema), every %ld, {browser}, and {url} placeholder is intact, there are no duplicate keys, and nothing German, French, or Traditional Chinese has is missing. Merged with current main, the full suite passes (1,052 tests, 0 failures).

A few things before this can come out of draft:

Housekeeping

  1. Please change "closes #12" to "part of #12" in the title, body, and commit message. #12 tracks every language, so it should stay open after Italian lands.
  2. Version: main is about to move to 1.25.3 (#237 and #238), so please bump VERSION and MCConstants.appVersion to 1.25.4 when you rebase. The PR body also still mentions 520 strings and 1.24.3.
  3. Four entries can never match because their keys contain a literal backslash-n instead of a real line break: Localization.swift lines 2180, 2328, 2404, and 2587. The working versions already exist (around 2026, 2063, 2103, 2115), so these four can simply be deleted.

Tests
4. The per-module localization tests added with the five new modules loop over de/fr/ru/zh-Hant only, so gaps in Italian there wouldn't be caught. Adding .it to those loops is a one-word change each: LocalizationTests.swift around lines 233, 307, 337, and 381, and BrowserExtensionsLocalizationTests.swift:59. I tried it locally and they all pass. Note the line 233 loop also checks for em dashes (see 5).

Wording
5. Em dashes: the app avoids them in translations (German and French use a colon). Seven Italian entries still have one: lines 2155, 2217, 2219, 2225, 2276, 2330, 2392. For example "Scansione completata: nulla da pulire".
6. "保留" (the KEPT badge on duplicates): "CONSERVA" reads like an imperative. "CONSERVATA" (or "CONSERVATO") would describe the state, and the sentence that mentions it ("contrassegnate come CONSERVA") should match.
7. "受保护,无法退出" ("Protected, cannot quit"): "impossibile uscire" sounds like you can't exit. Suggest "Protetto: impossibile forzare l'uscita".
8. Line 2103: "Per cartelle inizio grandi" is a bit awkward. Suggest "Con cartelle Inizio molto grandi possono volerci 5–15 minuti", and capitalizing "Inizio" (the Italian Finder name for Home) in its other uses too (2147, 2164, 2221, 2248, 2436, 2634).
9. "可疑" is "Sospetta" while the description at 2065 says "contrassegnati come Sospetti". Please pick one form.
10. Line 2535 calls System Junk "File di sistema non necessari", but its sidebar name is "File non necessari". Using the sidebar name helps people find it.

Optional, only if you agree: "junk" appears as "non necessari", "inutili", and "superfluo" in different places, and snapshots as both "snapshot" and "istantanee" (Apple uses "istantanee"). One term each would be a nice polish.

A README mention ("Italiano" in the language list and switcher) can come in a follow-up PR, the way French did it in #215.

If you'd rather not deal with some of these, just say so and I'm happy to push the fixes onto your branch myself. Grazie mille!

@nnevskij nnevskij changed the title feat(l10n): Add Italian localization (closes #12) feat(l10n): Add Italian localization (part of #12) Oct 14, 2026
@nnevskij
nnevskij marked this pull request as ready for review October 14, 2026 07:52
@iliyami
iliyami merged commit 42bc14f into iliyami:main Oct 17, 2026
2 checks passed
@iliyami

iliyami commented Oct 17, 2026

Copy link
Copy Markdown
Owner

Merged, grazie mille @nnevskij! You addressed every point quickly and carefully, and Italian is now the seventh interface language. It ships in v1.25.4. If you'd like to add Italian to the README too (the "Interface languages" paragraph and the language switcher, like French did in #215), that would be very welcome as a follow-up PR.

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