Skip to content

Localization

Localization

The interface ships in Traditional Chinese, English and Japanese.

How it is built

Traditional Chinese is the source language — the keys in the front end are the Chinese strings. English and Japanese ship as dictionaries in the bundle, and at load time the app overlays any overrides stored on the server.

A consequence worth knowing: an untranslated string falls back to displaying the Chinese original rather than a blank or a key name. Missing translations look like mixed-language UI, not broken UI.

Progress

Each language shows translated-of-total. Traditional Chinese is always complete by definition. The count moves when the app gains new strings, so a language that was at 100% can drop after an upgrade.

The translation editor

Filter by group — the screens the strings belong to — search text, or show only untranslated entries. Typing a translation applies it to the interface immediately; there is no publish step.

ControlDoes
Import JSONBulk-load translations.
Export JSONTake them away for translation elsewhere.
Clear overridesDrop server-side overrides and fall back to the shipped dictionaries.
Auto-translate missing entriesFills the gaps using the configured AI provider.

Auto-translation is a starting point, not a result — it does not know your product vocabulary. Review before shipping to users.

Adding strings

New interface text is added to Source/Walis.Admin/src/i18n/messages.ts alongside the screen that uses it. Overrides set here are stored on the server and survive upgrades; shipped dictionary entries are replaced by the upgrade.

Released under the MIT License.