@mapbox/model-un

IETF language tags and country db with official languages

Stats

StarsIssuesVersionUpdatedCreatedSize
@mapbox/model-un
311.0.14 years ago5 years agoMinified + gzip package size for @mapbox/model-un in KB

Readme

model-un

Build Status

A library that provides IETF language tags with English names, and official/common languages/language codes for countries and sovereign states.

Usage:

var mun = require('@mapbox/model-un');

// functions take either:
// a 2-3 letter (ISO 639-1 preferred, 639-2B - 2T fallback) language code or a language name
// or
// a 2 letter (ISO) country code or country name

// language code should conform to the IETF code, but may also be written with an underscore
// e.g. en-US or en_US in order to support postgres column names

mun.hasLanguage('en');
// true
mun.hasLanguage('English');
// true

mun.hasCountry('US');
// true
mun.hasCountry('United States');
// true

mun.getLanguage('ru');
// { type: 'language', subtag: 'ru', description: 'Russian', added: '2005-10-16', 'suppress-script': 'Cyrl', '639_1': 'ru', '639_2B': 'rus', name_en: [ 'Russian' ] }
mun.getLanguage('Russian');
// { type: 'language', subtag: 'ru', description: 'Russian', ...}

// supports IETF subtags
mun.getLanguage('en-US');
// [ 
//   { type: 'language', subtag: 'en', description: 'English', added: '2005-10-16',  'suppress-script': 'Latn', '639_1': 'en', '639_2B': 'eng', name_en: 'English' ] },
//   { type: 'region', subtag: 'US', description: 'United States', added: '2005-10-16' }
// ]

mun.getCountry('us');
// { iso: 'US', iso3: 'USA', country: 'United States', capital: 'Washington',  continent: 'NA', postal_code_format: '#####-####', postal_code_regex: '^\\d{5}(-\\d{4})?$', languages: [ 'en-US', 'es-US', 'haw', 'fr' ] }
mun.getCountry('!!');
// false

mun.getAllLanguagesLike('Chinese');
// [ 'Chinese', 'Achinese', 'Min Dong Chinese'...]
mun.getAllLanguagesLike('Dinosaurese');
// []

mun.getAllCountriesLike('French');
// [ 'French Guiana', 'French Polynesia'...]
mun.getAllCountriesLike('Dinotopia');
// []

mun.getOfficialLanguages('cz');
// [ 'cs', 'sk' ]

mun.getOfficialLanguages('cz', {verbose: true});
// [
//  { type: 'language', subtag: 'cs',  description: 'Czech',  added: '2005-10-16', 'suppress-script': 'Latn', '639_1': 'cs', '639_2B': 'cze', '639_2T': 'ces', name_en: [ 'Czech' ] },
//  { type: 'language', subtag: 'sk', description: 'Slovak', added: '2005-10-16', 'suppress-script': 'Latn', '639_1': 'sk', '639_2B': 'slo', '639_2T': 'slk', name_en: [ 'Slovak' ] } 
// ]

Test:

npm test

Update indices:

npm run updateAll

Data from:

IANA Language Subtag Registry

Geonames with modification (see ./data/countries.json)

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.