Fighting Game · Guides & deep dives

Locale-Specific Formatting

Runtime formatting must use Unreal's ICU-backed localization stack:

2sections1 minread

On this page

This document defines locale-specific number/date/currency formatting for TODOS.phase-72.72.11.2.11. The tracked samples cover the launch locale set and prove the expected separator, date order, currency symbol/code, and minor-unit rounding behavior before UI or store surfaces consume formatted values.

The tracked contract is V2/ue/Content/Localization/V2/LocaleSpecificFormatting_V2_Contract.json. The deterministic formatting rules live at V2/ue/Content/Localization/V2/Formatting/LocaleSpecificFormattingRules_V2.json, and the summary report lives at V2/ue/Content/Localization/V2/Formatting/LocaleSpecificFormattingReport_V2.json.

Runtime Contract#

Runtime formatting must use Unreal's ICU-backed localization stack: FInternationalization::SetCurrentCulture, FText::AsNumber, FText::AsCurrency, and FText::AsDate. Gameplay, settings, commerce, and live-ops UI should pass raw numeric/date values plus the resolved locale and platform-store currency code into those APIs instead of assembling separators or symbols by hand.

Sample Generation#

V2/ue/Tools/generate-v2-locale-specific-formatting.py uses Babel CLDR locale data to generate deterministic samples for the canonical number 1234567.89, the date 2026-06-21, and each locale's platform-store currency. The same script carries a curated CLDR fallback table for minimal CI hosts, and the checker compares both paths to the tracked output.

The report explicitly proves the US/Germany contrast behind the task example: en-US formats the sample number as 1,234,567.89, while de-DE formats it as 1.234.567,89. It also records zero-minor-unit currency rounding for JPY/KRW/VND so those rounded currency samples are treated as locale policy, not formatting loss.

V2/ue/Tools/check-v2-locale-specific-formatting.py validates the contract, Babel/CLDR samples, ICU runtime API requirements, number/date/currency coverage, fallback determinism, CI and Horde wiring, and the phase-72 checklist.