@mapbox/model-un

1.0.1 • Public • Published

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)

Readme

Keywords

none

Package Sidebar

Install

npm i @mapbox/model-un

Weekly Downloads

276

Version

1.0.1

License

ISC

Last publish

Collaborators

  • mbx-npm-ci-production
  • mbx-npm-ci-staging
  • mbx-npm-advanced-actions-production
  • mbx-npm-advanced-actions-staging
  • mbx-npm-09-production
  • mbx-npm-08-production
  • mbx-npm-07-production
  • mbx-npm-06-production
  • mbx-npm-05-production
  • mbx-npm-04-production
  • mbx-npm-03-production
  • mbx-npm-02-production
  • mbx-npm-01-production
  • mbx-npm-02-staging
  • mapbox-npm-01
  • mapbox-npm-02
  • mapbox-npm-07
  • mapbox-npm-03
  • mapbox-npm-04
  • mapbox-npm-09
  • mapbox-npm-05
  • mapbox-npm-06
  • mapbox-npm-08
  • mapbox-npm-advanced-actions
  • mapbox-npm-ci
  • mapbox-npm
  • mapbox-admin
  • mapbox-machine-user