What happened?
On on-chain activity / transaction explore, Input and Output section titles show the raw ICU MessageFormat template instead of resolved copy, e.g. Polish:
{COUNT, PLURAL, ONE {WEJŚCIE} FEW {WEJŚCIA (#)} MANY {WEJŚCIA (#)} OTHER {WEJŚCIA (#)}}
Same class of failure confirmed in French. English and other one/other-only locales look fine.
Expected behavior
Resolved plural labels, e.g. Polish WEJŚCIE / WEJŚCIA (2), French ENTRÉE / ENTRÉES (2).
Steps to Reproduce
- Set app language to Polish or French (Settings → Language).
- Open an on-chain activity that has inputs/outputs.
- Open transaction details / explorer.
- Observe INPUT / OUTPUT headings show raw
{count, plural, ...} text.
Logs / Screenshots / Recordings

Bitkit Version
2.5.0
Device / OS
iPhone 13, iOS (version TBD)
Reproducibility
Always
Additional context
- Android not affected: same ICU strings exist, but Android uses
android.icu.text.MessageFormat via localizedPlural / formatPlural.
- iOS root cause:
LocalizationHelper.formatterPlural in LocalizeHelpers.swift only regex-matches {var, plural, one {...} other {...}}. Patterns with few / many / zero fall through and return the raw pattern. File already has // TODO: implement a ICU message format library.
- UI call site:
ActivityExplorerView.swift via tPlural("wallet__activity_input"|"wallet__activity_output", ...).
- Also at risk via
tPlural: settings__backup__failed_message in Russian (includes few/many) — backup failure toast can show the same raw template.
- Locales with complex activity input/output plurals: cs, es, es-419, fr, pl, pt-BR, ru.
- Locales with simple one/other (likely OK today): ca, de, el, en, it, nl.
What happened?
On on-chain activity / transaction explore, Input and Output section titles show the raw ICU MessageFormat template instead of resolved copy, e.g. Polish:
{COUNT, PLURAL, ONE {WEJŚCIE} FEW {WEJŚCIA (#)} MANY {WEJŚCIA (#)} OTHER {WEJŚCIA (#)}}Same class of failure confirmed in French. English and other
one/other-only locales look fine.Expected behavior
Resolved plural labels, e.g. Polish
WEJŚCIE/WEJŚCIA (2), FrenchENTRÉE/ENTRÉES (2).Steps to Reproduce
{count, plural, ...}text.Logs / Screenshots / Recordings
Bitkit Version
2.5.0
Device / OS
iPhone 13, iOS (version TBD)
Reproducibility
Always
Additional context
android.icu.text.MessageFormatvialocalizedPlural/formatPlural.LocalizationHelper.formatterPluralinLocalizeHelpers.swiftonly regex-matches{var, plural, one {...} other {...}}. Patterns withfew/many/zerofall through and return the raw pattern. File already has// TODO: implement a ICU message format library.ActivityExplorerView.swiftviatPlural("wallet__activity_input"|"wallet__activity_output", ...).tPlural:settings__backup__failed_messagein Russian (includesfew/many) — backup failure toast can show the same raw template.