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}