Skip to content

i18n(id): complete remaining Indonesian admin translations - #2548

Open
ahliweb wants to merge 4 commits into
emdash-cms:mainfrom
ahliweb:i18n/id-complete-latest-admin-strings
Open

i18n(id): complete remaining Indonesian admin translations#2548
ahliweb wants to merge 4 commits into
emdash-cms:mainfrom
ahliweb:i18n/id-complete-latest-admin-strings

Conversation

@ahliweb

@ahliweb ahliweb commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Completes the Indonesian (id) admin catalog. 112 strings were still untranslated on main; this translates all of them, so locales/id/messages.po now has zero empty and zero fuzzy entries.

The untranslated strings clustered around recently added UI:

  • Image gallery block — gallery settings, add/replace/remove images, columns, captions, empty state
  • Plugin MCP tools — agent access, consent copy, enable/disable, route/permission labels
  • Bylines — byline filters, inferred bylines, selection limits, "No byline assigned"
  • Content locale settings — content locale vs. admin language explanations
  • Taxonomy locale fallbacks — unresolved assignments, locale fallback badges, move/reorder aria labels
  • Scheduled publishing — overdue/heartbeat warnings
  • Editor — subscript/superscript, heading level descriptions, section insert errors, unsupported Portable Text mark warnings

Terminology follows what the catalog already uses (byline untranslated, Sunting for Edit, Bagian for Section, Izin for Permission, Alat for Tool, Kesalahan for Error). Indonesian has a single plural form, so plural messages collapse to {n, plural, other {…}}, matching existing entries in this catalog. Placeholders and <0>…</0> tags are preserved exactly.

Only msgstr lines changed — no msgid or reference-comment churn.

Closes #

Translation supervision

Following Translating EmDash:

  • Fluent-speaker review — every one of the 112 strings was reviewed and approved by the PR author, a native Indonesian speaker, checked against the terminology already established in locales/id/messages.po.
  • Previewed in the running admin UI — the catalog was compiled and loaded into a running emdash-demo instance with the locale set to Bahasa Indonesia, and the affected screens were checked in context: the dashboard, content list, content editor with the content-settings panel (content locale block), the Portable Text heading and slash menus, the gallery block and its detail panel, the plugin manager with the MCP tools section expanded, the API token scope list, and the content-type editor. No truncation or layout breakage was found.
  • The preview changed one string — the editor footer read baca 1 menit next to 12 kata and 68 karakter; number-first matches its siblings, so it now reads 1 menit baca.

Type of change

  • Bug fix
  • Feature (requires maintainer-approved Discussion)
  • Refactor (no behavior change)
  • Translation
  • Documentation
  • Performance improvement
  • Tests
  • Chore (dependencies, CI, tooling)

Checklist

  • I have read CONTRIBUTING.md
  • pnpm typecheck passes
  • pnpm lint passes
  • pnpm test passes (or targeted tests for my change)
  • pnpm format has been run
  • I have added/updated tests for my changes (if applicable)
  • User-visible strings in the admin UI are wrapped for translation (if applicable) — this is a translation PR, so the messages.po change is intended and limited to locales/id/
  • I have added a changeset
  • New features link to an approved Discussion

Also verified: lingui compile succeeds for every locale (validating the ICU in the new plural messages), and no compiled artifacts are committed.

On the failing Integration Tests check: it is migrate-sqlite.test.ts:176, which fails on main itself — see the comment below for the run history. Nothing in this PR touches that code path.

AI-generated code disclosure

  • This PR includes AI-generated code — model/tool: Claude Opus 5 (Claude Code)

The first-pass translations were generated with Claude Opus 5 and then reviewed string by string, and previewed in the admin UI, as described under Translation supervision above.

Screenshots / test output

# packages/admin/src/locales/id/messages.po
untranslated entries   before: 112    after: 0
fuzzy entries                          0

$ pnpm --filter @emdash-cms/admin locale:compile
Compiling message catalogs…
Done in 624ms

Translates the 112 strings that were still untranslated in the Indonesian
catalog: the image gallery block, plugin MCP tool settings and consent
copy, byline filters, content locale settings, taxonomy locale fallbacks,
and scheduled publishing warnings.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Aug 18, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 924f107

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 17 packages
Name Type
@emdash-cms/admin Patch
emdash Patch
@emdash-cms/cloudflare Patch
@emdash-cms/sandbox-workerd Patch
@emdash-cms/plugin-mcp-smoke Patch
@emdash-cms/fixture-perf-site Patch
@emdash-cms/perf-demo-site Patch
@emdash-cms/cache-demo-site Patch
@emdash-cms/do-demo-site Patch
@emdash-cms/do-solo-demo-site Patch
@emdash-cms/auth Patch
@emdash-cms/blocks Patch
@emdash-cms/gutenberg-to-portable-text Patch
@emdash-cms/x402 Patch
create-emdash Patch
@emdash-cms/auth-atproto Patch
@emdash-cms/plugin-embeds Patch

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

@github-actions github-actions Bot added area/admin size/L review/needs-review No maintainer or bot review yet labels Aug 18, 2026
@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Lunaria Status Overview

🌕 This pull request will trigger status changes.

Learn more

By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.

You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

File Note
packages/admin/src/locales/id/messages.po Localization changed, will be marked as complete. 🔄️
Warnings reference
Icon Description
🔄️ The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.

@pkg-pr-new

pkg-pr-new Bot commented Aug 18, 2026

Copy link
Copy Markdown

Open in StackBlitz

@emdash-cms/admin

npm i https://pkg.pr.new/@emdash-cms/admin@2548

@emdash-cms/auth

npm i https://pkg.pr.new/@emdash-cms/auth@2548

@emdash-cms/auth-atproto

npm i https://pkg.pr.new/@emdash-cms/auth-atproto@2548

@emdash-cms/blocks

npm i https://pkg.pr.new/@emdash-cms/blocks@2548

@emdash-cms/cloudflare

npm i https://pkg.pr.new/@emdash-cms/cloudflare@2548

@emdash-cms/contentful-to-portable-text

npm i https://pkg.pr.new/@emdash-cms/contentful-to-portable-text@2548

emdash

npm i https://pkg.pr.new/emdash@2548

create-emdash

npm i https://pkg.pr.new/create-emdash@2548

@emdash-cms/gutenberg-to-portable-text

npm i https://pkg.pr.new/@emdash-cms/gutenberg-to-portable-text@2548

@emdash-cms/plugin-cli

npm i https://pkg.pr.new/@emdash-cms/plugin-cli@2548

@emdash-cms/plugin-types

npm i https://pkg.pr.new/@emdash-cms/plugin-types@2548

@emdash-cms/registry-client

npm i https://pkg.pr.new/@emdash-cms/registry-client@2548

@emdash-cms/registry-lexicons

npm i https://pkg.pr.new/@emdash-cms/registry-lexicons@2548

@emdash-cms/registry-verification

npm i https://pkg.pr.new/@emdash-cms/registry-verification@2548

@emdash-cms/sandbox-workerd

npm i https://pkg.pr.new/@emdash-cms/sandbox-workerd@2548

@emdash-cms/x402

npm i https://pkg.pr.new/@emdash-cms/x402@2548

@emdash-cms/plugin-ai-moderation

npm i https://pkg.pr.new/@emdash-cms/plugin-ai-moderation@2548

@emdash-cms/plugin-atproto

npm i https://pkg.pr.new/@emdash-cms/plugin-atproto@2548

@emdash-cms/plugin-audit-log

npm i https://pkg.pr.new/@emdash-cms/plugin-audit-log@2548

@emdash-cms/plugin-color

npm i https://pkg.pr.new/@emdash-cms/plugin-color@2548

@emdash-cms/plugin-embeds

npm i https://pkg.pr.new/@emdash-cms/plugin-embeds@2548

@emdash-cms/plugin-field-kit

npm i https://pkg.pr.new/@emdash-cms/plugin-field-kit@2548

@emdash-cms/plugin-forms

npm i https://pkg.pr.new/@emdash-cms/plugin-forms@2548

@emdash-cms/plugin-webhook-notifier

npm i https://pkg.pr.new/@emdash-cms/plugin-webhook-notifier@2548

commit: 924f107

@emdashbot emdashbot 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.

This is the right kind of PR for the described problem: a translation-only change that fills the remaining Indonesian (id) admin catalog entries. It touches only packages/admin/src/locales/id/messages.po and a patch changeset for @emdash-cms/admin; there are no source-code, logic, or RTL/Tailwind changes to review.

What I checked:

  • Scope of the diff — only packages/admin/src/locales/id/messages.po and .changeset/lazy-donkeys-translate.md changed. All changes are msgstr line edits (112 insertions / 112 deletions) plus the changeset. No msgid, reference comment, or source-file churn.
  • Empty/fuzzy entries — the resulting id/messages.po has zero empty msgstr entries and zero #, fuzzy flags.
  • Locale configurationid is already listed and enabled: true in packages/admin/src/locales/locales.ts.
  • ICU integrity — every edited message keeps the same named placeholders and <0> tags as its source msgid. Braces are balanced. Plural messages collapse to a single other form, which is correct for Indonesian (nplurals=1). No compiled artifacts are committed.
  • Changeset — correctly targets @emdash-cms/admin with patch and describes an observable user-facing effect.

I cannot verify the naturalness of the Indonesian wording, but the technical constraints Lingui imposes are satisfied. No blocking issues.

@github-actions github-actions Bot added review/needs-rereview Author pushed changes since the last review and removed review/needs-review No maintainer or bot review yet labels Aug 18, 2026
@ahliweb

ahliweb commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

The failing Integration Tests check is not caused by this PR — the same test is failing on main itself.

Failure: tests/integration/cli/migrate-sqlite.test.ts:176bounds real signal cleanup without waiting for in-flight execution

AssertionError: expected null to be 130
- Expected: 130
+ Received: null

The CI run for main at the same commit this branch is based on (4d364cc, run 32185747922, 2026-08-18 21:04Z) failed with the identical assertion on the identical line, about an hour before this PR was opened.

It also looks intermittent rather than permanently broken — CI on main over 2026-08-18:

Run Time (UTC) Result
32132736500 11:38 pass
32136873093 12:26 fail (E2E)
32151188141 14:54 pass
32152586512 15:07 pass
32185747922 21:04 fail (this test)

code === null with signal === "SIGTERM" means the process died from the default signal disposition rather than through the CLI's handler — so the test is sensitive to when the signal lands relative to handler registration.

Correction to my earlier version of this comment: I originally also claimed I had reproduced the failure locally on a clean main. That reproduction was an artifact of my own machine — its node is a wrapper script that runs a different interpreter as a child process, so child.kill("SIGTERM") hit the wrapper instead of the process holding the handler. That says nothing about this repository's code, and I've struck it. The evidence above is from your CI only.

This PR changes packages/admin/src/locales/id/messages.po and a changeset, and touches no code path this test exercises.

Previewing the editor in Indonesian showed "baca 1 menit" sitting next to
"12 kata" and "68 karakter". Number-first matches its siblings.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ahliweb
ahliweb force-pushed the i18n/id-complete-latest-admin-strings branch from 5b7b03d to 59d11e8 Compare August 18, 2026 23:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/admin review/needs-rereview Author pushed changes since the last review size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant