A bilingual quote tool can display numbers beautifully and still misread what a visitor types. The string1,234 means different things under different conventions. Commission an explicit input grammar and confirmation, not an automatic replacement that silently changes its value.
Primary evidence and claim boundaries
Intl.NumberFormat provides locale-sensitive formatting. Its documented formatting API is not a general locale-aware input parser; parsing rules remain an application decision. Primary reference · Read 18 October 2026.
Filled acceptance example
Original synthetic teaching scenario, not a client case, provider integration test or business result. The example policy needs the actual owner’s approval; scroll the table on narrow screens.
| Input and state | Declared check | Expected output and decision |
|---|---|---|
| Explicit en-AU decimal grammar;1,234.50 | Grouping comma, decimal point | 1234.50; confirm the parsed value before use |
| Explicit de-DE decimal grammar;1.234,50 | Grouping point, decimal comma | 1234.50 under that declared grammar |
| Unknown input locale;1,234 | More than one plausible convention | Ask for clarification; do not assume1234 or 1.234 |
| en-AU declared;12,34.50 | Invalid grouping under this grammar | Reject and retain original input |
Practical handover procedure
- Specify supported input locales, grouping rules, sign, precision and whether grouping is optional. Keep currency identity separate from numeric punctuation.
- Use all four strings as literal fixtures. Require a visible parsed-value confirmation and an explicit invalid or ambiguous result, without discarding the original.
- Compare the stored decimal value with the confirmed value in an isolated test. Test paste and mobile input as well as typed digits; do not infer grammar from browser language alone.
Interpret the outcome
Two different strings intentionally map to the same agreed decimal under two explicit grammars. The unknown-locale row must not share that result by guesswork. Formatting a wrong parsed number consistently only hides the defect; the acceptance record needs the original string and its declared interpretation.
Acceptance decision
Accept only the supported grammar and confirmed stored value; ambiguous and malformed inputs must remain unresolved or rejected.
Limits and unverified work
Synthetic quantity/quote inputs, no payment or financial calculation. This does not define a universal parser, every locale or a rounding policy.
Download the filled bilingual acceptance record — Contains the inputs, steps, expectations and limits. This is a teaching record, not an executable production integration.