From 3596b2ee8cdcad00c45e071790f32efb26afd55b Mon Sep 17 00:00:00 2001 From: aiongg Date: Fri, 23 Oct 2026 05:39:50 +0000 Subject: [PATCH] i18n: round-trip tests for Windows' equal marks, a chosen digit system and the C locale --- crates/i18n/src/number.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/i18n/src/number.rs b/crates/i18n/src/number.rs index 0b44850e..1120fbe8 100644 --- a/crates/i18n/src/number.rs +++ b/crates/i18n/src/number.rs @@ -377,6 +377,12 @@ mod tests { region.grouping = grouping; formats.push(Format::new(®ion, Digits::Locale)); } + // Windows sets both marks: a decimal comma the user picks arrives beside a grouping comma. + let reg = |pairs: &'static [(&'static str, &'static str)]| move |n: &str| pairs.iter().find(|(k, _)| *k == n).map(|(_, v)| v.to_string()); + let windows = crate::region::from_windows(reg(&[("LocaleName", "en-US"), ("sDecimal", ","), ("sThousand", ",")]), || None); + formats.push(Format::new(&windows, Digits::Locale)); + formats.push(Format::new(&Region::from_tag("ar-EG-u-nu-latn"), Digits::Locale)); + formats.push(Format::new(&Region::from_tag("C"), Digits::Locale)); for f in &formats { for value in [0.0, 1.5, -1234.25, 1_234_567.89, 12.0, 1234.0] { let text = f.number(value, 2);