Language tag parser. Parse language tags into subtags.
subtag(tag)
parse tag into subtags objectsubtag.split(tag)
split tag into subtags arraysubtag.language(tag)
get primary language subtagsubtag.extlang(tag)
get extended language subtagsubtag.script(tag)
get script subtagsubtag.region(tag)
get region subtag
- parsing is done via regex
- unpresent subtags will be an empty string
- separator can be dashes (standard) or underscores
npm install subtag --save
yarn add subtag
var subtag = require('subtag')
import subtag from 'subtag'
subtag('ja-JP') // {language: 'ja', extlang: '', script: '', region: 'JP'}
subtag('es-AR') // {language: 'es', extlang: '', script: '', region: 'AR'}
subtag.split('yue') // ["yue"]
subtag.split('es-419') // ["es", "419"]
subtag.split('zh-Hant-HK') // ["zh", "Hant", "HK"]
subtag.split('en-90210') // ["en"] because 90210 is fake
subtag.language('en') // 'en'
subtag.extlang('en') // ''
subtag.script('en') // ''
subtag.region('en') // ''
subtag.language('en-US') // 'en'
subtag.extlang('en-US') // ''
subtag.script('en-US') // ''
subtag.region('en-US') // 'US'
subtag.language('zh-yue') // 'zh'
subtag.extlang('zh-yue') // 'yue'
subtag.script('zh-yue') // ''
subtag.region('zh-yue') // ''
subtag.language('zh-Hans') // 'zh'
subtag.extlang('zh-Hans') // ''
subtag.script('zh-Hans') // 'Hans'
subtag.region('zh-Hans') // ''
language-extlang-script-region-variant-extension-privateuse
type | pattern | convention |
---|---|---|
language | 2-letter or 3-letter | lowercase |
extlang | 3-letter | lowercase |
script | 4-letter | titlecase |
region | 2-letter or 3-number | uppercase |
Regex patterns are exposed for validation
subtag.language.pattern.test('en') // true
subtag.language.pattern.test('ast') // true
subtag.language.pattern.test('fake') // false
subtag.extlang.pattern.test('yue') // true
subtag.script.pattern.test('Hans') // true
subtag.region.pattern.test('US') // true
subtag.region.pattern.test('005') // true
subtag.region.pattern.test('90210') // false
Works in Node.js and ES5+ browsers