From a1371a83ea04b8f4cbbe6a71fa256c4bd29ff945 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 4 Apr 2026 11:10:04 +0200 Subject: [PATCH] uucore: use embedded locale bundles on WASI for l10n support In setup_localization(), use create_wasi_bundle_from_embedded() on WASI to set up the requested locale with English fallback, enabling runtime language switching in the playground. --- src/uucore/src/lib/mods/locale.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/uucore/src/lib/mods/locale.rs b/src/uucore/src/lib/mods/locale.rs index c846b76e1..f25866bc1 100644 --- a/src/uucore/src/lib/mods/locale.rs +++ b/src/uucore/src/lib/mods/locale.rs @@ -481,12 +481,27 @@ pub fn setup_localization(p: &str) -> Result<(), LocalizationError> { // Load both utility-specific and common strings init_localization(&locale, &locales_dir, p)?; } else { - // No locales directory found, use embedded English with common strings directly + // No locales directory found, use embedded locales let default_locale = LanguageIdentifier::from_str(DEFAULT_LOCALE) .expect("Default locale should always be valid"); - let english_bundle: FluentBundle<&'static FluentResource> = - create_english_bundle_from_embedded(&default_locale, p)?; - let localizer = Localizer::new(english_bundle); + + #[cfg(target_os = "wasi")] + let localizer = { + let english_bundle = create_wasi_bundle_from_embedded(&default_locale, p)?; + if locale == default_locale { + Localizer::new(english_bundle) + } else if let Ok(localized) = create_wasi_bundle_from_embedded(&locale, p) { + Localizer::new(localized).with_fallback(english_bundle) + } else { + Localizer::new(english_bundle) + } + }; + + #[cfg(not(target_os = "wasi"))] + let localizer = { + let english_bundle = create_english_bundle_from_embedded(&default_locale, p)?; + Localizer::new(english_bundle) + }; LOCALIZER.with(|lock| { lock.set(localizer)