juice_i18n 0.2.0
juice_i18n: ^0.2.0 copied to clipboard
Reactive locale selection and translation lookup as a Juice bloc, behind swappable source and persistence seams.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-08-12 #
Changed #
- Require
juice ^1.6.0and declare an explicit concurrency policy for every event. - Serialize explicit and system locale changes through one cross-event FIFO, preventing overlapping translation loads from applying out of request order.
- Coalesce overlapping initialization events with
EventConcurrency.droppable.
0.1.0 - 2026-05-28 #
Added #
- Initial release.
I18nBloc— reactive locale selection + translation lookup; feedstate.localetoMaterialApp.locale.t(key, {args})with{placeholder}interpolation, andplural(key, count)selectingkey.zero/key.one/key.other.TranslationSourceseam —MapTranslationSource(in-memory) andAssetJsonTranslationSource(assets/i18n/<locale>.json) defaults.LocalePersistenceseam —StorageLocalePersistencedefault (remembers locale + follow-system).- Locale resolution (exact → language → fallback), follow-system, and a
configurable
onMissinghook (returns the key by default). - Rebuild groups —
i18n:locale,i18n:translations.
Out of scope #
- Date/number/currency formatting — use
intl. This package routes words.