Skip to content

Launcher: Japanese (values-ja), every translatable string - #3040

Open
LostInInaka wants to merge 1 commit into
Gathin23:mainfrom
LostInInaka:ja-locale
Open

LostInInaka wants to merge 1 commit into
Gathin23:mainfrom
LostInInaka:ja-locale

Conversation

@LostInInaka

Copy link
Copy Markdown
Contributor

The launcher ships thirty translated languages plus English, and Japanese is not one of them — which is
odd for a launcher whose tested list has a Sharp AQUOS and a Sony BRAVIA on it. This adds values-ja with
all 145 strings and the one plurals resource, written for a TV rather than for a desktop: short labels, 設定 and アプリ and
壁紙 where Japanese says them, product names left alone, and the long help strings cut to two or three
sentences so they fit on a tile.

  • date_format_home is not in the file: it is translatable="false" and aliases @string/date_format,
    which is translated.
  • library_app_count keeps quantity="other" only, as values-ko does — Japanese has no plural.
  • Every format argument was checked against the source (%1$s, %1$d, %2$s, %1$.0f, %1$d%%): same
    set, same order. race_next keeps %1$s before %2$s so it reads 「予選まで3時間」.
  • Wired the way the tests ask: res/xml/locales_config.xml, the Languages list in docs/launcher.md,
    NAMES in tests/test_locales_registered.py, and the generated counts. tools/gen_tables.py now reads
    416 TV models, 106 brands and 32 languages, --check exits 0, and the card and its alt text were redrawn
    to match.
  • No fonts.xml: zh and ko ship without one and Android's fallback covers the glyphs.

The size gate, up front. On today's main (3cd274f8) the release APK is 587,437 B without this
locale and 595,709 B with it — 5,885 B past the 589,824 B gate in ci.yml, and main itself carries
only 2,387 B of headroom before this branch starts. docs/workflows/translation.md step 7 says a locale that does
not fit is the maintainer's call rather than something to trim strings for, so nothing has been trimmed.
This is #2545's situation rather than a new one (its 5,149 B over is a shade less than this one's), and I read your answer there — it stays open while you look
for room in the launcher's own images — so this one is here to wait too, and I'll keep it rebased until
there is room. Sizes are from a clean assembleRelease on my machine; your main is documented at
585,489 B where mine builds 587,437 B from the same tree, so treat the figures as ±2 KB and the delta
between them as the real number.

Everything else is green: 2788 tests, one failure, and that one
(test_disable_ps1_refuses_the_bare_names_before_touching_the_tv, a PowerShell colour case) fails
identically on main in the same environment — I ran both to be sure.

It has been through a revision pass on how the Japanese reads, which is where much of the diff comes from: the Dussehra
greeting was ドゥシェラ and is now ダシェラ; デバイスなし for "not connected" became 未接続; TVのシステム設定
became システム設定; 「12時間」/「24時間」 became 「12時間表示」/「24時間表示」; the home-settings help lost its
machine-translated clause order; and a line in README.ja.md that still said the launcher has no Japanese
now says how to set the app's own language to ja. 有線LAN, スタンバイ and フリー走行 were kept
deliberately, so a native speaker may still want to argue about three words.

@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

maintainer-bot review · suggests merge (p2)

Thank you for the careful Japanese translation: the labels are short enough for a TV, and every format argument was checked against the source. This looks ready to merge as a strings-only launcher translation.

Checks

This is a suggestion; a maintainer makes the final call. A maintainer can comment /bot review to run it again.

Reviewed by maintainer-bot · runs on 0G Private Computer

@Gathin23

Gathin23 commented Nov 2, 2026

Copy link
Copy Markdown
Owner

Thank you @LostInInaka, this reads like it was written for a TV: 未接続, 12時間表示, and every format argument checked against the source. It adds about 8.3 KB and goes 5.9 KB past the size gate. That makes it the same maintainer call as #2545, so we're keeping it open alongside that one rather than trimming it. We can't promise when room will come, and thank you for offering to keep it rebased.

… today's main

The launcher ships thirty translated languages and English, and Japanese is not one of them — on a
launcher whose tested list has a Sharp AQUOS and a Sony BRAVIA on it. `values-ja` adds all 145
translatable strings, written for a TV: short labels, product names left alone, help strings cut to two
or three sentences so they fit a tile.

`date_format_home` is absent on purpose: it is `translatable="false"` and aliases the translated
`@string/date_format`. `library_app_count` keeps `quantity="other"`, as `values-ko` does — Japanese has
no plural. Every format argument was checked against the source: same set, same order, and `race_next`
keeps `%1$s` before `%2$s` so it reads 予選まで3時間.

Wired the way the tests ask: `res/xml/locales_config.xml`, the Languages list in `docs/launcher.md`,
`NAMES` in `tests/test_locales_registered.py`, and the generated counts, which now read 407 TV models,
106 brands and 32 languages — the numbers this commit measured, not the ones the branch was cut from.

The size gate, stated plainly: 595,337 B with this locale against 587,065 B on the same main without
it, i.e. 5,513 B past the 589,824 B gate in `ci.yml`. `docs/workflows/translation.md` step 7 makes a
locale that does not fit the maintainer's call rather than something to trim strings for, so nothing
was trimmed. The rest of the suite is green: 2743 tests, one failure — the pre-existing `disable.ps1`
PowerShell colour case, which fails the same way on `main`.
@LostInInaka

LostInInaka commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor Author

@Gathin23 — Rebased onto today's main (d7b0d4a5) and re-measured, since the numbers in the body moved with it:

  • release APK without this locale: 588,061 B
  • with it: 596,333 B — 6,509 B past the 589,824 B gate
  • main itself now carries 1,763 B of headroom

Counts regenerated from the tree: 427 TV models, 111 brands, 32 languages, card and alt text redrawn, gen_tables --check clean. Nothing trimmed, and I will keep it rebased while it waits — no promise needed in return.

@LostInInaka

Copy link
Copy Markdown
Contributor Author

@Gathin23 — the room you were waiting for is in review: #3156 takes 18,764 B back by shipping the bundled Outfit variable font clipped to the four weights res/font/outfit*.xml actually declares, with the glyphs the app can draw. On today's main that is 588,061 → 569,297 B, 20,527 B under the gate.

So I measured this branch with it. Same head as here (aa4586d8), only the font swapped for the trimmed one:

build APK vs 589,824 B
this branch, as it stands 596,333 B 6,509 over
this branch + the font trim 577,569 B 12,255 under

314 launcher cases green, nothing trimmed, gate untouched — docs/workflows/translation.md step 7 stays honoured, because the bytes came out of a typeface rather than out of Japanese.

Which means the gate no longer has to decide this PR, if #3156 goes first. I will keep this rebased either way; if the order happens to be the other way round I will rebase onto it and re-measure.

One housekeeping note on the collision the bot raised: #2545 also takes the language count from 31 to 32, so whichever of the two merges second regenerates the counts (tools/gen_tables.py) — a command, not a design question.

@LostInInaka

Copy link
Copy Markdown
Contributor Author

One correction to the figure I gave you yesterday, because it moved: the typeface trim now keeps weight 100 in its axis (the bare @font/outfit that font_body points at draws the default instance, which is 100 — clipping it away would have thickened every tile subtitle), so it is 18,964 B rather than 18,764.

Same head as here (aa4586d8), font swapped, rebuilt and measured: 596,333 → 577,369 B, 12,455 B under the 589,824 B gate, 314 launcher cases green. The comparison and the conclusion are unchanged; only the last four digits moved.

@LostInInaka

Copy link
Copy Markdown
Contributor Author

@Gathin23 — a heads-up that costs you nothing to ignore: this branch is now 402 commits behind main (3c122bc0), so when the typeface PR lands it will need a real rebase, not a one-click update. Waiting is still the right call — the size question that blocks this resolves once #3156 is in — but I did not want it to look like it sits one button away from green. I will do the rebase myself the day that lands. I have deliberately not re-measured this branch against today's main, so there is no new figure here to chase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot-suggests:merge launcher Changes under launcher/: the Android TV home screen app p2

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants