i18n
Irodori Table keeps desktop UI translations in apps/desktop/src/i18n.
Supported Locales
en- English, the fallback locale.ja- Japanese.
The language is selected from Settings -> General -> Language. The selected
locale is saved in local storage as irodori.locale.v1 and is also included in
Settings JSON as locale.
Adding Or Updating Text
- Add the English source string to
apps/desktop/src/i18n/locales/en.ts. - Add the Japanese translation to
apps/desktop/src/i18n/locales/ja.ts. - Use
createTranslator(locale)ortranslate(key, options)at the UI boundary. - Add or update unit coverage in
apps/desktop/src/tests/unit/i18n/i18n.test.ts.
English is the source of truth for message keys. Japanese is typed against the same key set, so missing translations fail during TypeScript checks instead of rendering a blank label.
Interpolated values use {name} style placeholders:
translate("settings.theme.colorMode.customDescription", {
locale: "ja",
values: { name: "Dark+" },
});
Keep translation calls near the React component boundary. Business logic, storage, and query execution code should store stable IDs or raw data, not localized display text.