16 releases (8 breaking)

new 0.9.5 May 11, 2024
0.9.4 Dec 13, 2023
0.9.1 Oct 19, 2022
0.9.0 May 6, 2020
0.4.1 Jul 29, 2019

#10 in Internationalization (i18n)

Download history 28804/week @ 2024-01-25 34790/week @ 2024-02-01 35198/week @ 2024-02-08 37745/week @ 2024-02-15 33011/week @ 2024-02-22 32728/week @ 2024-02-29 36750/week @ 2024-03-07 35236/week @ 2024-03-14 37960/week @ 2024-03-21 36976/week @ 2024-03-28 33300/week @ 2024-04-04 34431/week @ 2024-04-11 35648/week @ 2024-04-18 34143/week @ 2024-04-25 37800/week @ 2024-05-02 31916/week @ 2024-05-09

145,143 downloads per month
Used in 274 crates (81 directly)

MIT/Apache

605KB
12K SLoC

unic-langid Build Status Coverage Status

unic-langid is an API for managing Unicode Language Identifiers.

The crate provides a way to create a struct from a string, manipulate its fields, canonicalize it, and serialize into a string.

Usage

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");
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:

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.

Dependencies

~0.4–0.9MB
~20K SLoC