fluent_typed/
lib.rs

1#![doc = include_str!("../README.md")]
2#[cfg(any(doc, feature = "build"))]
3mod build;
4mod l10n_bundle;
5mod l10n_language_vec;
6
7#[cfg(all(test, feature = "build"))]
8mod tests;
9
10#[cfg(any(doc, feature = "build"))]
11pub use build::{
12    build_from_locales_folder, try_build_from_locales_folder, BuildOptions, FtlOutputOptions,
13};
14
15pub mod prelude {
16    pub use crate::l10n_bundle::L10nBundle;
17    pub use crate::l10n_language_vec::L10nLanguageVec;
18    pub use fluent_bundle::{types::FluentNumber, FluentArgs, FluentValue};
19    #[cfg(feature = "langneg")]
20    pub use icu_locid::{langid, LanguageIdentifier};
21
22    #[cfg(feature = "langneg")]
23    pub fn negotiate_languages<'a, A>(accept_language: &str, available: &'a [A]) -> A
24    where
25        A: 'a + AsRef<LanguageIdentifier> + PartialEq + Default + Copy,
26    {
27        use fluent_langneg::{
28            negotiate_languages, parse_accepted_languages, NegotiationStrategy::Filtering,
29        };
30        let requested = parse_accepted_languages(accept_language);
31
32        negotiate_languages(&requested, available, None, Filtering)
33            .first()
34            .map(|l| **l)
35            .unwrap_or_default()
36    }
37}