Skip to content

Commit a1371a8

Browse files
committed
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.
1 parent c63a8f9 commit a1371a8

1 file changed

Lines changed: 19 additions & 4 deletions

File tree

src/uucore/src/lib/mods/locale.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -481,12 +481,27 @@ pub fn setup_localization(p: &str) -> Result<(), LocalizationError> {
481481
// Load both utility-specific and common strings
482482
init_localization(&locale, &locales_dir, p)?;
483483
} else {
484-
// No locales directory found, use embedded English with common strings directly
484+
// No locales directory found, use embedded locales
485485
let default_locale = LanguageIdentifier::from_str(DEFAULT_LOCALE)
486486
.expect("Default locale should always be valid");
487-
let english_bundle: FluentBundle<&'static FluentResource> =
488-
create_english_bundle_from_embedded(&default_locale, p)?;
489-
let localizer = Localizer::new(english_bundle);
487+
488+
#[cfg(target_os = "wasi")]
489+
let localizer = {
490+
let english_bundle = create_wasi_bundle_from_embedded(&default_locale, p)?;
491+
if locale == default_locale {
492+
Localizer::new(english_bundle)
493+
} else if let Ok(localized) = create_wasi_bundle_from_embedded(&locale, p) {
494+
Localizer::new(localized).with_fallback(english_bundle)
495+
} else {
496+
Localizer::new(english_bundle)
497+
}
498+
};
499+
500+
#[cfg(not(target_os = "wasi"))]
501+
let localizer = {
502+
let english_bundle = create_english_bundle_from_embedded(&default_locale, p)?;
503+
Localizer::new(english_bundle)
504+
};
490505

491506
LOCALIZER.with(|lock| {
492507
lock.set(localizer)

0 commit comments

Comments
 (0)