Translates Typeform forms to Facebook Messenger format.
To support international number formats in number fields, add locale to the field description in YAML:
locale: de-DESupported locales:
en-US(default) - US format:1,234.56de-DE- European format:1.234,56ar-SA- Arabic Saudi:١٬٢٣٤٫٥٦ar-MA- Arabic Morocco:1 234,56
For a number field expecting European format input:
locale: de-DEThe validator will then accept 1.234,56 as valid input and correctly parse it as 1234.56.
The parseNumber(str, locale) function parses numeric strings with locale-aware formatting.
const { parseNumber } = require('@vlab-research/translate-typeform')
parseNumber('1,234.56') // 1234.56 (US format, default)
parseNumber('1.234,56', 'de-DE') // 1234.56 (European format)
parseNumber('١٢٣', 'ar-SA') // 123 (Arabic-Indic numerals)| Locale | Thousands | Decimal | Example |
|---|---|---|---|
| en-US (default) | , |
. |
1,234.56 |
| de-DE | . |
, |
1.234,56 |
| ar-SA | ٬ |
٫ |
١٬٢٣٤٫٥٦ |
| ar-MA | (space) |
, |
1 234,56 |
Automatically normalizes digits from 30+ numeral systems:
- Arabic-Indic:
١٢٣->123 - Devanagari:
१२३->123 - Persian:
۱۲۳->123 - Bengali, Tamil, Thai, and many more
Important: The locale determines how separators are interpreted. Mismatched locale and input format will produce incorrect results.
parseNumber('100.50', 'ar-SA') // 100.5 (correct)
parseNumber('1,234.56', 'ar-SA') // 1234.56 (correct)This works because ar-SA separators (٬ thousands, ٫ decimal) normalize to the same ASCII characters as US format (, and .).
parseNumber('١٠٠.٥٠') // 100.5 (correct)
parseNumber('١٬٢٣٤٫٥٦') // 1234.56 (correct)This works because Arabic digits and separators normalize to US-style ASCII.
parseNumber('100.50', 'ar-MA') // 10050 (wrong!)
parseNumber('1,234.56', 'ar-MA') // 1.23456 (wrong!)ar-MA uses European-style formatting (comma=decimal, space=thousands). When given US-style input (dot=decimal, comma=thousands), the parser misinterprets the separators.
Rule: Always ensure the input format matches the specified locale.
number- The parsed numeric valuenull- If parsing fails (invalid input, letters, etc.)