Expand description
day-l10n — the core localization engine (DESIGN.md §12), low enough in the crate graph that even the central crates (day-pieces’ dialogs, menu-role labels) can localize their own UI strings.
Two tiers of Fluent bundles:
- core — a built-in catalog (
catalog/*.ftl) of the standard strings the framework itself emits (dialog OK/Cancel, standard menu commands), shipped in several languages. Always present. - app — the locales an app registers with
install. These take precedence over core, so an app can override anyday-*string, and core is the fallback for keys the app didn’t define.
The current locale is a [Signal], so every format/binding re-runs on a locale switch. The
piece-facing reactive tr() wrapper lives one layer up in day-fluent (which re-exports this).
Structs§
Enums§
Traits§
- IntoF
Arg - Disjoint-marker conversion for
.argvalues (the same E0119 dodge asIntoText). - Into
NumberF Arg - Marker for
IntoFArgvalues that carry a number — required for a Fluent variable used as a plural /selectselector, where CLDR plural rules select on a number (so a string can’t be passed there by mistake). Implemented for the numericIntoFArgtypes only (i64,f64, and theirSignals); the generatedres::str::<key>(…)functions (§18.5) type such parameters asimpl IntoNumberFArginstead ofimpl IntoFArg.
Functions§
- compare
- Compare two strings in the CURRENT locale’s collation order. Reads the locale signal (tracked), so a sort inside a reactive closure re-runs when the locale switches.
- compare_
in - Compare two strings in
locale’s collation order (untracked; accepts-u-co-extensions, e.g."zh-u-co-stroke"). Falls back to code-point order if the locale has no collation data. - format_
in - Resolve
key: app bundle for the locale, then app-default, then the built-in core catalog for the locale, then core English.en-XAresolves against the default and accents the result. Signal args are tracked reads. - install
- Register an app’s locales from
.ftlsources and set the current locale from (1) theDAY_LOCALElaunch override, (2) the platform’sset_launch_localehint, (3)default. Call once, before building the root piece. The built-in core catalog is preserved (and remains the fallback); the app’s strings take precedence over it, and re-registering reuses the existing locale [Signal] so bindings created earlier keep working. - locale
- The current locale (a tracked read inside bindings).
- matches_
search matches_search_inagainst the CURRENT locale. Reads the locale signal (tracked), so a filtered list inside a reactive closure re-filters when the language changes — the same contractcrate::comparehas.- matches_
search_ in - Does
textmatchqueryunderlocale’s rules? (untracked — pass the locale explicitly). - set_
launch_ locale - Record the host’s launch locale before
installruns. Platform glue only — apps pick locales withset_locale. No-op onceinstallhas resolved the initial locale. - set_
locale - Switch the locale at runtime — every
tr/binding re-runs. - sort_
localized - Sort a slice in place in the CURRENT locale’s collation order (tracked, like
compare). - strip_
isolates - Strip Fluent’s FSI/PDI isolation marks (dayscript text comparison, §14.3).
- t
- Resolve
keyin the CURRENT locale (no args) — the one-shot form the framework’s own strings use (dialog buttons, menu-role labels), which are resolved once at present/build time.