All Projects → wooorm → bcp-47-normalize

wooorm / bcp-47-normalize

Licence: MIT license
Normalize, canonicalize, and format BCP 47 tags

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to bcp-47-normalize

bcp-47
Parse and stringify BCP 47 language tags
Stars: ✭ 51 (+218.75%)
Mutual labels:  i18n, code, iana, tag, bcp, language-tags, subtags, bcp47, 47
language-subtag-registry
BCP 47/IANA language subtag data in JSON format.
Stars: ✭ 53 (+231.25%)
Mutual labels:  i18n, language-tags, subtags
language-tags
A Swiss Army knife for language tags.
Stars: ✭ 46 (+187.5%)
Mutual labels:  i18n, language-tags, subtags
React Phone Input 2
📞 Highly customizable phone input component with auto formatting
Stars: ✭ 446 (+2687.5%)
Mutual labels:  i18n, format
Mix Format.el
Emacs package to format Elixir code in Emacs with elixir-mode
Stars: ✭ 46 (+187.5%)
Mutual labels:  code, format
Translatedjs
Internationalization and localization for JavaScript and Node.js
Stars: ✭ 17 (+6.25%)
Mutual labels:  i18n, format
elm-format-number
✨Format numbers as pretty strings
Stars: ✭ 56 (+250%)
Mutual labels:  i18n, format
vue-translated
Internationalization (i18n) and localization (l10n) library for Vue.js v2.
Stars: ✭ 19 (+18.75%)
Mutual labels:  i18n, format
generator-react-web
Yeoman generator for creating interactive web sites with React and Redux + Webpack, Flow, ES7+, Babel, Yarn, npm Scripts, i18n, Redux Saga, SCSS, CSS Modules
Stars: ✭ 35 (+118.75%)
Mutual labels:  i18n
BeautifulMakie
https://lazarusa.github.io/BeautifulMakie/
Stars: ✭ 281 (+1656.25%)
Mutual labels:  code
hackdisrupt
[private beta] comece a aprender programação com uma experiência nova
Stars: ✭ 14 (-12.5%)
Mutual labels:  code
dev-log
A comprehensive list of links and resources about anything programming related
Stars: ✭ 55 (+243.75%)
Mutual labels:  code
react-tag-manager
Google Tag Manager for React
Stars: ✭ 24 (+50%)
Mutual labels:  tag
malwinx
Just a normal flask web app to understand win32api with code snippets and references.
Stars: ✭ 76 (+375%)
Mutual labels:  code
ar-variation
Variation behavior for ActiveRecord
Stars: ✭ 46 (+187.5%)
Mutual labels:  i18n
Snippet-Share
This is a snippet sharing app that can be used to share snippets of code and more.
Stars: ✭ 41 (+156.25%)
Mutual labels:  code
arabic-mathjax
Beautiful Arabic Math on all browsers. An extension for MathJax v2.
Stars: ✭ 12 (-25%)
Mutual labels:  i18n
react-native-codeditor
React Native component to display code editor using WebView and CodeMirror
Stars: ✭ 21 (+31.25%)
Mutual labels:  code
audio-tag-analyzer
Extracts metadata music metadata found in audio files
Stars: ✭ 18 (+12.5%)
Mutual labels:  tag
mobility-actiontext
Translate Rails Action Text rich text with Mobility.
Stars: ✭ 27 (+68.75%)
Mutual labels:  i18n

bcp-47-normalize

Build Coverage Downloads Size

Normalize, canonicalize, and format BCP 47 tags.

Contents

What is this?

This package takes BCP 47 tags and makes them uniform. It removes unneeded info (en-us -> en) and replaces deprecated, overlong, and otherwise unpreferred values with preferred values (en-bu -> en-MM). It works by applying Unicode CLDR suggestions.

When should I use this?

You can use this package when dealing with user-provided language tags and want to normalize and clean them.

Install

This package is ESM only. In Node.js (version 12.20+, 14.14+, or 16.0+), install with npm:

npm install bcp-47-normalize

In Deno with esm.sh:

import {bcp47Normalize} from 'https://esm.sh/bcp-47-normalize@2'

In browsers with esm.sh:

<script type="module">
  import {bcp47Normalize} from 'https://esm.sh/bcp-47-normalize@2?bundle'
</script>

Use

import {bcp47Normalize} from 'bcp-47-normalize'

const tags = [
  'de-de-1901',
  'en-gb',
  'en-us',
  'en-bu',
  'hy-arevmda',
  'nld-nl',
  'no-nyn',
  'pt-br',
  'pt-pt',
  'zh-hans-cn'
]

tags.forEach((tag) => console.log('%s -> %s', tag, bcp47Normalize(tag)))

Yields:

de-de-1901 -> de-1901
en-gb -> en-GB
en-us -> en
en-bu -> en-MM
hy-arevmda -> hyw
nld-nl -> nl
no-nyn -> nn
pt-br -> pt
pt-pt -> pt-PT
zh-hans-cn -> zh

API

This package exports the following identifier: bcp47Normalize. There is no default export.

bcp47Normalize(tag[, options])

Normalize the given BCP 47 tag according to Unicode CLDR suggestions.

Parameters
  • tag (string) — BCP 47 tag

  • options.forgiving (boolean, default: false) — passed to bcp-47 as options.forgiving

  • options.warning (Function?, default: undefined) — passed to bcp-47 as options.warning

    One additional warning is given:

    code reason
    7 Deprecated region CURRENT, expected one of SUGGESTIONS

    This warning is only given if the region cannot be automatically fixed (when regions split into multiple regions).

Returns

Normal, canonical, and pretty BCP 47 tag (string).

Types

This package is fully typed with TypeScript. It exports additional Options and Warning types that model their respective interfaces.

Compatibility

This package is at least compatible with all maintained versions of Node.js. As of now, that is Node.js 12.20+, 14.14+, and 16.0+. It also works in Deno and modern browsers.

Security

This package is safe.

Related

Contribute

Yes please! See How to Contribute to Open Source.

License

MIT © Titus Wormer

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].