Repository navigation
Show Icarus in Japanese and Simplified Chinese - #545
Merged
Merged
Conversation
Every word the app shows now comes from lib/l10n/app_en.arb and its translations, read through the generated AppLocalizations. The app follows the system language and settings has a picker to override it. Text that is saved, sent or compared stays English where it is produced and is put into words where it is drawn: sync reasons in the outbox, startup reasons, replay decoder codes. Agent, ability, weapon and map names come from the game's own text (tool/fetch_game_names.dart).
The library strip's menus had fixed widths sized for English, which cut every Japanese label short. Confirming an unnamed page's name unchanged saved its translation; it keeps the saved "Page 3" now. The welcome tour's picture names its map as the game does.
Pre-merge checks:
|
The screenshot and video dialogs listed an unnamed page as "Page 1" beside a pages bar that read it in the viewer's language. Confirming such a page's translated name unchanged leaves it unnamed, where it used to save a name teammates would read in the wrong language.
SunkenInTime
marked this pull request as ready for review
November 11, 2026 09:38
lib/const spells the agent "Kayo" for its asset folder, which matched no name in the game's table, so Japanese and Chinese read "Kayo".
A screenshot or video of an unnamed page printed "Page 1" in its corner and was saved as "Page 1.png" beside a dialog that named it in the viewer's language.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Icarus was English only. Players in Japan and China can now read it in their own language: it opens in the system's language (the browser's on web), and settings has a Language section to pick another.
What existed before
Every string was an English literal in the widget, provider or service that produced it, about 1,270 of them across 200 files.
What this does
lib/l10n/app_en.arbis the source;app_ja.arbandapp_zh.arbhold the same keys. Flutter'sgen-l10nbuilds a typedAppLocalizationsfrom them on everypub getand build (the output is git-ignored). Widgets readcontext.l10n, code without a widget readsl10nProvider. A mistyped key does not compile.test/l10n_test.dartfails when a language is missing a key or drops a placeholder..icastay English, byte for byte, where they are produced, stored and matched. The words a user reads are chosen where they are drawn:friendlyCloudSyncErrorand its two siblings moved fromlib/collabtolib/l10n/cloud_sync_error_text.dartwith the same branch order.lib/collabstill imports no UI, andconvex/is not touched.lib/l10n/official_game_names.dartbytool/fetch_game_names.dart(run it when a new agent ships). Icarus's data keeps its English names; the lookup happens at draw time.languageCodeonAppPreferences(Hive field 28). Old records read as null, which means "follow the system"; a test writes a record without the field and reads it back.English text and behaviour are meant to be unchanged. The lineup conflict summary ("renamed, notes edited") became typed change kinds, because it was glued from English fragments.
How far this got in a running app
Not covered
tool/drive/scriptsfind controls by their English text, so a driver run needs an English system or English picked in settings.ci: analyze test web desktop


Confidence Score: 5/5
The PR appears safe to merge; no new blocking issue was found.Summary
Adds Japanese and Simplified Chinese throughout Icarus, with a saved language choice and translated game names. The latest changes also translate automatic page names inside screenshots and video frames.
Reviews (7) · Last reviewed commit: "Stamp exports with the page name as the ..." · Reviewed by Greptile