Problem
Every user-facing string is hardcoded in JSX. That is fine today, but several
relevant grant programmes and public-sector buyers operate in non-English
jurisdictions, and retrofitting internationalization across a built dashboard is
substantially more work than structuring for it now.
What to do
This is preparation, not translation — do not commission translations yet:
- Extract user-facing strings into a message catalogue with stable keys.
- Adopt Next.js i18n routing with English as the only active locale for now.
- Use
Intl for dates, numbers, and currency rather than hand-formatting —
this matters immediately, because a compliance export showing 1,000.50 to a
reader expecting 1.000,50 is a real misreading of a financial figure.
- Avoid layouts that break when a string grows 30% longer, which German and
Finnish reliably do.
- Set
lang correctly and keep the door open for right-to-left.
Acceptance criteria
Notes
The Intl formatting is worth doing regardless of whether a second language
ever ships — ambiguous number formatting in a billing product is a correctness
problem, not a localisation one.
Problem
Every user-facing string is hardcoded in JSX. That is fine today, but several
relevant grant programmes and public-sector buyers operate in non-English
jurisdictions, and retrofitting internationalization across a built dashboard is
substantially more work than structuring for it now.
What to do
This is preparation, not translation — do not commission translations yet:
Intlfor dates, numbers, and currency rather than hand-formatting —this matters immediately, because a compliance export showing
1,000.50to areader expecting
1.000,50is a real misreading of a financial figure.Finnish reliably do.
langcorrectly and keep the door open for right-to-left.Acceptance criteria
IntlNotes
The
Intlformatting is worth doing regardless of whether a second languageever ships — ambiguous number formatting in a billing product is a correctness
problem, not a localisation one.