Skip to content

Localise the 9.2.1 What's New title (#878) - #916

Merged
ryanbr merged 1 commit into
mainfrom
fix/localise-921-whatsnew-title
Jul 28, 2026
Merged

Localise the 9.2.1 What's New title (#878)#916
ryanbr merged 1 commit into
mainfrom
fix/localise-921-whatsnew-title

Conversation

@ryanbr

@ryanbr ryanbr commented Jul 28, 2026

Copy link
Copy Markdown
Owner

main is currently red on the i18n gate, and every open PR inherits it. This fixes that.

What happened

Cutting 9.2.1 added a hardcoded UI string. appchangelog-gen.py writes the Android title as a raw Kotlin literal:

f'            title = "{esc_kt(wn["title"])}",\n'      # appchangelog-gen.py:60

which is precisely what #878 described — "a raw literal fails i18n on every release and red-checks all open PRs". That issue is closed, but the generator was never changed: 9.2.0's title was localised by hand in #886 and the issue closed on the strength of that. So the same manual fix applies here, and #878 wants reopening for the generator itself.

Why nobody saw it

Two things compounded:

  1. The release push produced no CI run at all. fork-release.yml pushes with GITHUB_TOKEN, and GitHub does not trigger workflows on those pushes — so there is no run on 7054aef8 or 21e36a2b. Main went red silently.
  2. The audit is a whole-tree gate, not a diff. So it fails every open PR on a line none of them touched. docs(protocol): document the COMMAND_RESPONSE body (#894, #891) #915 hit it first, which is how it surfaced.

The fix

Key follows the established convention — first six slug words + sha1(value)[:8] — which I verified by reproducing 9.2.0's existing key from its title before generating this one. Translated in all five locales alongside the English, matching how every earlier release title is carried.

The real fix is upstream

This is the second release in a row patched by hand. The generator should emit uiString(R.string.<key>) plus the English resource, and warn loudly listing the locales that still need the title translated — it cannot supply translations itself, but it can turn a silent red into an explicit task. Reopening #878 with that scope rather than filing a duplicate.

Cutting 9.2.1 left main failing the i18n gate. appchangelog-gen.py writes the
Android title as a raw Kotlin literal:

    title = "{esc_kt(wn["title"])}",                       # appchangelog-gen.py:60

so every release adds one hardcoded UI string, which is exactly what #878
described. That issue is closed, but the generator was never changed — 9.2.0's
title was localised by hand in #886 and the issue closed on the strength of it.
Same thing here, so the same manual fix, and #878 reopened for the generator.

Two things made it worse than a normal red check. The release workflow pushes
with GITHUB_TOKEN, and GitHub does not trigger workflows on those pushes, so no
run exists on 7054aef or 21e36a2 — main was red with nothing reporting it. And
the audit is a whole-tree gate rather than a diff, so it red-checks every open PR
on a line none of them touched; #915 hit it first.

Key follows the established convention — first six slug words plus
sha1(value)[:8], verified by reproducing 9.2.0's key from its title — and the
title is translated in all five locales alongside the English, matching how every
earlier release title is carried.
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