isolang

Crates.ioisolang
lib.rsisolang
version2.4.0
sourcesrc
created_at2017-04-18 23:28:59.062862
updated_at2023-11-26 13:06:46.410719
descriptionEfficient, static lookup table for ISO 639 language codes
homepage
repositoryhttps://github.com/humenda/isolang-rs
max_upload_size
id11122
size3,109,715
Sebastian Humenda (humenda)

documentation

https://docs.rs/isolang

README

ISO 639 language codes

Build Status Crates.io Documentation Licence: Apache 2.0

Introduction

When dealing with different language inputs and APIs, different standards are used to identify a language. Converting between these in an automated way can be tedious. This crate provides an enum which supports conversion from 639-1 and 639-3 and also into these formats, as well as into English names or autonyms (local names).

This crate contains the ISO 639 table in statically embedded tables. This increases binary size, but allows for very efficient look-up if performance matters. If size is a concern, both and the English names and local names can be enabled or disabled individually.

This crate is licensed under the Apache 2.0 license, please see LICENSE.md for the details.

Usage

Cargo.toml:

[dependencies]
isolang = "2.0"

Example

use isolang::Language;

assert_eq!(Language::from_639_1("de").unwrap().to_name(), "German");
assert_eq!(Language::from_639_3("spa").unwrap().to_639_1(), Some("es"));
// undefined language (ISO code und)
assert_eq!(Language::default(), Language::Und);
use isolang::Language;
// `to_name()` is available if compiled with the `english_names` feature.
assert_eq!(Language::from_str("es").unwrap().to_name(), "Spanish");
assert_eq!(Language::from_str("spa").unwrap().to_name(), "Spanish");
// `from_str(lowercase_name)` is available if compiled with the `english_names` and `lowercase_names` features.
assert_eq!(Language::from_str("spanish").unwrap().to_name(), "Spanish");
// `from_str(local_name)` is available if compiled with the `english_names`, `lowercase_names` and `local_names` features.
assert_eq!(Language::from_str("espaƱol").unwrap().to_name(), "Spanish");

Supported Cargo Features

Please take a look at the commented [Cargo.toml)(Cargo.toml) file for a up-to-date list of supported features.

Serde support

This crate also supports serializing the Language enum. To enable this please add the following lines to your Cargo.toml (instead of the above code):

[dependencies.isolang]
features = ["serde"]
version = "2.0"

Data Source

The data is downloaded from https://iso639-3.sil.org/code_tables/download_tables.

Commit count: 130

cargo fmt