70 lines
1.9 KiB
Markdown
70 lines
1.9 KiB
Markdown
# unic-langid [](https://travis-ci.org/zbraniecki/unic-locale) [](https://coveralls.io/github/zbraniecki/unic-locale?branch=master)
|
|
|
|
`unic-langid` is an API for managing [Unicode Language Identifiers](http://unicode.org/reports/tr35/#Unicode_language_identifier).
|
|
|
|
The crate provides a way to create a struct from a string, manipulate its fields, canonicalize it, and serialize into a string.
|
|
|
|
Usage
|
|
-----
|
|
|
|
```rust
|
|
use unic_langid::LanguageIdentifier;
|
|
|
|
let loc: LanguageIdentifier = "en-US".parse().expect("Parsing failed.");
|
|
|
|
assert_eq!(loc.language(), "en");
|
|
assert_eq!(loc.script(), None);
|
|
assert_eq!(loc.region(), Some("US"));
|
|
|
|
loc.set_script(Some("latn"));
|
|
|
|
assert_eq!(&loc.to_string(), "en-Latn-US");
|
|
```
|
|
|
|
```rust
|
|
use unic_langid::LanguageIdentifier;
|
|
|
|
let langid = LanguageIdentifier::from_parts(
|
|
Some("en"),
|
|
None,
|
|
None,
|
|
Some(&["nedis", "macos"])
|
|
).expect("Parsing failed.");
|
|
|
|
assert_eq!(&langid.to_string(), "en-macos-nedis")
|
|
```
|
|
|
|
Macros
|
|
------
|
|
|
|
`unic-langid` can be also compiled with `features = ["macros"]` which enables `langid!` macro:
|
|
|
|
```rust
|
|
use unic_langid::langid;
|
|
|
|
// The `const` assignment will currently work only
|
|
// if the langid doesn't contain any variants.
|
|
const EN_US: LanguageIdentifier = langid!("en-US");
|
|
|
|
fn main() {
|
|
let de_at = langid!("de-AT");
|
|
|
|
assert_eq!(&de_at.to_string(), "de-AT")
|
|
assert_eq!(&EN_US.to_string(), "en-US")
|
|
}
|
|
```
|
|
|
|
The macro allows for compile-time parsing and validation of literal language identifiers.
|
|
|
|
Status
|
|
------
|
|
|
|
The crate is mostly complete on the `well-formed` level. The next batch of work will go into
|
|
API maturity.
|
|
|
|
Get Involved
|
|
------------
|
|
|
|
`unic-langid` is open-source, licensed under the Apache License, Version 2.0. We
|
|
encourage everyone to take a look at our code and we'll listen to your
|
|
feedback.
|