Skip to main content

Crate day_l10n

Crate day_l10n 

Source
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 any day-* 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§

SigM
ValM

Enums§

FArg

Traits§

IntoFArg
Disjoint-marker conversion for .arg values (the same E0119 dodge as IntoText).
IntoNumberFArg
Marker for IntoFArg values that carry a number — required for a Fluent variable used as a plural / select selector, where CLDR plural rules select on a number (so a string can’t be passed there by mistake). Implemented for the numeric IntoFArg types only (i64, f64, and their Signals); the generated res::str::<key>(…) functions (§18.5) type such parameters as impl IntoNumberFArg instead of impl 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-XA resolves against the default and accents the result. Signal args are tracked reads.
install
Register an app’s locales from .ftl sources and set the current locale from (1) the DAY_LOCALE launch override, (2) the platform’s set_launch_locale hint, (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_in against the CURRENT locale. Reads the locale signal (tracked), so a filtered list inside a reactive closure re-filters when the language changes — the same contract crate::compare has.
matches_search_in
Does text match query under locale’s rules? (untracked — pass the locale explicitly).
set_launch_locale
Record the host’s launch locale before install runs. Platform glue only — apps pick locales with set_locale. No-op once install has 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 key in 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.
Day API ↩ Guides· daybrite.dev