Localization / i18n system (string tables, plural rules, font swap)
Motivation
AAA titles ship in 10+ languages. Without a first-class localization system, every team ends up hand-rolling string tables. Turian should make localisation part of the asset pipeline, not a post-release hack.
Goal
A data-driven localization system: string tables as DataAssets, runtime locale switching, plural rules, font-swap per locale, and an editor workflow that lets a dedicated localization coordinator export/import CSVs or XLIFF without touching code.
Tasks
Asset pipeline
-
StringTableDataAsset (key → translated string, locale-tagged) - Import/export: CSV and XLIFF 1.2 round-trip (for external translation vendors)
- Integration with the AssetDatabase and GUID system
Runtime
-
Locale.get(key)API with fallback chain (locale → region → default) - Plural rules (CLDR-based: one/few/many/other) with format-string substitution
- Runtime locale switch without scene reload (signal/event to refresh UI text)
- Locale stored in game settings (#13 (closed))
Editor
- String Table editor panel (list keys + translations, filter missing, mark fuzzy)
- Missing-translation warning (build step validates all keys exist in all locales)
- "Mark for localization" annotation on Inspector string fields
Fonts
- Per-locale font override (CJK, Arabic RTL, Devanagari)
- Font asset with locale-tagging in the import settings
Acceptance Criteria
- A string can be authored once (key) and display in the active locale at runtime.
- Locale switching works without a scene reload.
- CSV/XLIFF round-trip is lossless.
- Build step warns on missing translations.
Related
- #11 (closed) (DataAsset), #13 (closed) (game settings store active locale), (website docs).
Edited by Bruno Massa