Skip to content

rust-iso/rust_iso639

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rust_iso/iso639

A rust crate providing ISO 639-1, ISO 639-2 and ISO 639-3 support.

What is ISO 639

ISO 639 is a standardized nomenclature used to classify languages. Each language is assigned a two-letter (639-1) and three-letter (639-2 and 639-3) lowercase abbreviation, amended in later versions of the nomenclature.

This table lists all of:

ISO 639-1: two-letter codes, one per language for ISO 639 macrolanguage And some of:

ISO 639-2/T: three-letter codes, for the same languages as 639-1

ISO 639-2/B: three-letter codes, mostly the same as 639-2/T, but with some codes derived from English names rather than native names of languages (in the following table, these differing codes are highlighted in boldface)

ISO 639-3: three-letter codes, the same as 639-2/T for languages, but with distinct codes for each variety of an ISO 639 macrolanguage

-- Wikipedia

Installing

[dependencies]
rust_iso639 = "0.1.0"

Optional features

  • serde — derive-free Serialize/Deserialize for LanguageCode. A value serializes to its canonical code string (preferring 639-3, then 639-2/T, 639-2/B, 639-1) and deserializes case-insensitively via the from_code_* lookups. Enable with cargo add rust_iso639 -F serde.

WebAssembly

By default the crate exposes a plain Rust struct (with public fields) even on wasm32, so it can be used as a normal dependency in WebAssembly projects. To build the JavaScript/npm bindings (#[wasm_bindgen] getters), run:

scripts/build-wasm.sh   # sets RUSTFLAGS="--cfg direct_wasm" and runs wasm-pack

License

rust-iso/rust_iso639 is licensed under the Apache-2.0 license.

Using

See using section of the documentation.

Quick guide:

let lang = rust_iso639::from_code_1("zh");
let lang = rust_iso639::from_code_2t("zho");
let lang = rust_iso639::from_code_2b("chi");
let lang = rust_iso639::from_code_3("zho");

println!("{:?}", rust_iso639::ALL);
println!("{:?}", rust_iso639::ALL_1);
println!("{:?}", rust_iso639::ALL_2T);
println!("{:?}", rust_iso639::ALL_2B);
println!("{:?}", rust_iso639::ALL_3);

println!("{:?}", rust_iso639::ALL_MAP);
println!("{:?}", rust_iso639::ALL_1_MAP);
println!("{:?}", rust_iso639::ALL_2T_MAP);
println!("{:?}", rust_iso639::ALL_2B_MAP);
println!("{:?}", rust_iso639::ALL_3_MAP);

Data sample:

pub struct LanguageCode {
    ///ISO Language Name
    pub name: &'static str,
    ///639-1
    pub code: &'static str,
    ///639-2/T
    pub code_2t: &'static str,
    ///639-2/B
    pub code_2b: &'static str,
    //639-3 Macrolanguage
    pub code_3: &'static str,

    pub individual_languages: &'static [IndividualLanguages],
}

#[derive(Debug, Copy, Clone)]
pub struct IndividualLanguages {
    ///Name
    pub name: &'static str,
    ///Code
    pub code: &'static str,
}

Source(s)

About

No description, website, or topics provided.

Resources

License

Stars

3 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors

Languages