feat(admin): add Italian (it) locale#2182
Conversation
Add a fully translated Italian admin UI catalog (1932 strings) and enable the it locale in the source-of-truth locale list.
🦋 Changeset detectedLatest commit: 0b9a5ba The changes in this PR will be included in the next version bump. This PR includes changesets to release 17 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Scope checkThis PR changes 8,825 lines across 3 files. Large PRs are harder to review and more likely to be closed without review. If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs. See CONTRIBUTING.md for contribution guidelines. |
|
I have read the CLA Document and I hereby sign the CLA You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot. |
There was a problem hiding this comment.
This is the right change at the right scope: it adds a fully translated Italian admin catalog and enables it in the canonical locale list. There is no architectural, security, or logged-out query-count concern, and the change is additive.
I checked:
packages/admin/src/locales/locales.ts—it(Italiano) is inserted alphabetically betweenidandja, withenabled: trueand default LTR direction (correct)..changeset/italian-locale.md— aminorchangeset for@emdash-cms/admin, led with a present-tense verb, describing the user-facing effect.packages/admin/src/locales/it/messages.po— 1932/1932 entries match the English msgid set exactly, zero emptymsgstr, plural branch shapes (one/other) and#placeholders are preserved, and inline<0>tags are intact. The existingloadMessagesloop overSUPPORTED_LOCALESwill exercise the new locale once catalogs are compiled (pnpm locale:compile).lingui.config.tsandlunaria.config.tspick upitautomatically viaLOCALE_CODES/TARGET_LOCALES, andcopy-locales.jscopies the compiledit/messages.mjswithout any hardcoded list.
The only issue is a data-quality nit in the PO header. Italian has plural messages, so the catalog should declare the Italian plural formula instead of leaving Plural-Forms blank.
| "PO-Revision-Date: \n" | ||
| "Last-Translator: \n" | ||
| "Language-Team: \n" | ||
| "Plural-Forms: \n" |
There was a problem hiding this comment.
[suggestion] The Italian catalog header leaves Plural-Forms empty ("Plural-Forms: \n"). Lingui will infer the one/other rule from the it locale code at compile time, but a complete gettext catalog should declare the plural formula so other PO tooling doesn't have to guess. Sibling catalogs such as de and es-ES already set nplurals=2; plural=(n != 1);, which is exactly the correct formula for Italian.
| "Plural-Forms: \n" | |
| "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/auth-atproto
@emdash-cms/blocks
@emdash-cms/cloudflare
@emdash-cms/contentful-to-portable-text
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/plugin-cli
@emdash-cms/plugin-types
@emdash-cms/registry-client
@emdash-cms/registry-lexicons
@emdash-cms/registry-verification
@emdash-cms/sandbox-workerd
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-field-kit
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
What does this PR do?
Adds Italian (
it) as a supported admin UI language.it(Italiano) inpackages/admin/src/locales/locales.ts, in alphabetical position between Indonesian and Japanese, withenabled: true.packages/admin/src/locales/it/messages.po— all 1932 strings translated (0 emptymsgstr).Translation notes:
one/otherwith correct gender/number agreement;#,{placeholders},<0>…</0>inline tags and escapes are preserved verbatim.No linked issue — per CONTRIBUTING.md, translations are opened directly.
Type of change
Checklist
pnpm typecheckpassespnpm lintpassespnpm testpasses (or targeted tests for my change)pnpm formathas been runloadMessagestest already covers every enabled localeAI-generated code disclosure
Screenshots / test output
Offline catalog validation: