accepted_languages.rs |
This function parses Accept-Language string into a list of language tags that
can be later passed to language negotiation functions.
# Example:
```
use fluent_langneg::negotiate_languages;
use fluent_langneg::NegotiationStrategy;
use fluent_langneg::parse_accepted_languages;
use fluent_langneg::convert_vec_str_to_langids_lossy;
use unic_langid::LanguageIdentifier;
let requested = parse_accepted_languages("de-AT;0.9,de-DE;0.8,de;0.7;en-US;0.5");
let available = convert_vec_str_to_langids_lossy(&["fr", "pl", "de", "en-US"]);
let default: LanguageIdentifier = "en-US".parse().expect("Failed to parse a langid.");
let supported = negotiate_languages(
&requested,
&available,
Some(&default),
NegotiationStrategy::Filtering
);
let expected = convert_vec_str_to_langids_lossy(&["de", "en-US"]);
assert_eq!(supported,
expected.iter().map(|t| t.as_ref()).collect::<Vec<&LanguageIdentifier>>());
```
This function ignores the weights associated with the locales, since Fluent Locale
language negotiation only uses the order of locales, not the weights.
|
1449 |
lib.rs |
fluent-langneg is an API for operating on locales and language tags.
It's part of Project Fluent, a localization framework designed to unleash
the expressive power of the natural language.
The primary use of fluent-langneg is to parse/modify/serialize language tags
and to perform language negotiation.
fluent-langneg operates on a subset of [BCP47](http://tools.ietf.org/html/bcp47).
It can parse full BCP47 language tags, and will serialize them back,
but currently only allows for operations on primary subtags and
unicode extension keys.
In result fluent-langneg is not suited to replace full implementations of
BCP47 like [rust-language-tags](https://github.com/pyfisch/rust-language-tags),
but is arguably a better option for use cases involving operations on
language tags and for language negotiation. |
1707 |
negotiate |
|
|