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

  • StringTable DataAsset (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.
Edited by Bruno Massa