bcp47-language-tags 1.0.9 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +262 -200
- package/dist/ar.d.mts +68 -3
- package/dist/ar.d.ts +68 -3
- package/dist/ar.js +1 -1
- package/dist/ar.mjs +1 -1
- package/dist/cs.d.mts +833 -0
- package/dist/cs.d.ts +833 -0
- package/dist/cs.js +1 -0
- package/dist/cs.mjs +1 -0
- package/dist/da.d.mts +833 -0
- package/dist/da.d.ts +833 -0
- package/dist/da.js +1 -0
- package/dist/da.mjs +1 -0
- package/dist/de.d.mts +68 -3
- package/dist/de.d.ts +68 -3
- package/dist/de.js +1 -1
- package/dist/de.mjs +1 -1
- package/dist/el.d.mts +833 -0
- package/dist/el.d.ts +833 -0
- package/dist/el.js +1 -0
- package/dist/el.mjs +1 -0
- package/dist/en.d.mts +68 -3
- package/dist/en.d.ts +68 -3
- package/dist/en.js +1 -1
- package/dist/en.mjs +1 -1
- package/dist/es.d.mts +68 -3
- package/dist/es.d.ts +68 -3
- package/dist/es.js +1 -1
- package/dist/es.mjs +1 -1
- package/dist/fi.d.mts +833 -0
- package/dist/fi.d.ts +833 -0
- package/dist/fi.js +1 -0
- package/dist/fi.mjs +1 -0
- package/dist/flags/ad.svg +150 -0
- package/dist/flags/af-ZA.svg +81 -0
- package/dist/flags/ag.svg +14 -0
- package/dist/flags/ai.svg +29 -0
- package/dist/flags/am.svg +5 -0
- package/dist/flags/ao.svg +13 -0
- package/dist/flags/aq.svg +5 -0
- package/dist/flags/ar-AE.svg +6 -0
- package/dist/flags/ar-BH.svg +4 -0
- package/dist/flags/ar-DZ.svg +5 -0
- package/dist/flags/ar-EG.svg +38 -0
- package/dist/flags/ar-IQ.svg +10 -0
- package/dist/flags/ar-JO.svg +16 -0
- package/dist/flags/ar-KW.svg +13 -0
- package/dist/flags/ar-LB.svg +15 -0
- package/dist/flags/ar-LY.svg +13 -0
- package/dist/flags/ar-MA.svg +4 -0
- package/dist/flags/ar-OM.svg +115 -0
- package/dist/flags/ar-QA.svg +4 -0
- package/dist/flags/ar-SA.svg +25 -0
- package/dist/flags/ar-SD.svg +13 -0
- package/dist/flags/ar-SY.svg +6 -0
- package/dist/flags/ar-TN.svg +4 -0
- package/dist/flags/ar-YE.svg +7 -0
- package/dist/flags/arab.svg +109 -0
- package/dist/flags/as.svg +72 -0
- package/dist/flags/asean.svg +13 -0
- package/dist/flags/aw.svg +186 -0
- package/dist/flags/ax.svg +18 -0
- package/dist/flags/az.svg +8 -0
- package/dist/flags/ba.svg +12 -0
- package/dist/flags/bb.svg +6 -0
- package/dist/flags/be-BY.svg +18 -0
- package/dist/flags/bf.svg +7 -0
- package/dist/flags/bg-BG.svg +5 -0
- package/dist/flags/bi.svg +15 -0
- package/dist/flags/bj.svg +14 -0
- package/dist/flags/bl.svg +5 -0
- package/dist/flags/bm.svg +97 -0
- package/dist/flags/bn-BD.svg +4 -0
- package/dist/flags/bn.svg +36 -0
- package/dist/flags/bq.svg +5 -0
- package/dist/flags/bs.svg +13 -0
- package/dist/flags/bt.svg +89 -0
- package/dist/flags/bv.svg +13 -0
- package/dist/flags/bw.svg +7 -0
- package/dist/flags/cc.svg +19 -0
- package/dist/flags/cd.svg +5 -0
- package/dist/flags/cefta.svg +13 -0
- package/dist/flags/cf.svg +15 -0
- package/dist/flags/cg.svg +12 -0
- package/dist/flags/ci.svg +7 -0
- package/dist/flags/ck.svg +9 -0
- package/dist/flags/cm.svg +15 -0
- package/dist/flags/cp.svg +7 -0
- package/dist/flags/cs-CZ.svg +5 -0
- package/dist/flags/cv.svg +13 -0
- package/dist/flags/cw.svg +14 -0
- package/dist/flags/cx.svg +15 -0
- package/dist/flags/cy.svg +6 -0
- package/dist/flags/da-DK.svg +5 -0
- package/dist/flags/de-AT.svg +4 -0
- package/dist/flags/de-CH.svg +9 -0
- package/dist/flags/de-DE.svg +5 -0
- package/dist/flags/dg.svg +130 -0
- package/dist/flags/div-MV.svg +6 -0
- package/dist/flags/dj.svg +13 -0
- package/dist/flags/dm.svg +152 -0
- package/dist/flags/eac.svg +48 -0
- package/dist/flags/eh.svg +16 -0
- package/dist/flags/el-GR.svg +16 -0
- package/dist/flags/en-AU.svg +8 -0
- package/dist/flags/en-BZ.svg +145 -0
- package/dist/flags/en-CA.svg +4 -0
- package/dist/flags/en-GB.svg +7 -0
- package/dist/flags/en-IE.svg +7 -0
- package/dist/flags/en-IN.svg +25 -0
- package/dist/flags/en-JM.svg +8 -0
- package/dist/flags/en-NZ.svg +36 -0
- package/dist/flags/en-PH.svg +6 -0
- package/dist/flags/en-TT.svg +5 -0
- package/dist/flags/en-US.svg +9 -0
- package/dist/flags/en-ZA.svg +17 -0
- package/dist/flags/en-ZW.svg +21 -0
- package/dist/flags/er.svg +8 -0
- package/dist/flags/es-AR.svg +32 -0
- package/dist/flags/es-BO.svg +673 -0
- package/dist/flags/es-CL.svg +13 -0
- package/dist/flags/es-CO.svg +7 -0
- package/dist/flags/es-CR.svg +7 -0
- package/dist/flags/es-CU.svg +13 -0
- package/dist/flags/es-DO.svg +121 -0
- package/dist/flags/es-EC.svg +138 -0
- package/dist/flags/es-ES.svg +544 -0
- package/dist/flags/es-GT.svg +204 -0
- package/dist/flags/es-HN.svg +18 -0
- package/dist/flags/es-MX.svg +382 -0
- package/dist/flags/es-NI.svg +129 -0
- package/dist/flags/es-PA.svg +14 -0
- package/dist/flags/es-PE.svg +4 -0
- package/dist/flags/es-PR.svg +13 -0
- package/dist/flags/es-PY.svg +157 -0
- package/dist/flags/es-SV.svg +593 -0
- package/dist/flags/es-UY.svg +28 -0
- package/dist/flags/es-VE.svg +26 -0
- package/dist/flags/es-ct.svg +4 -0
- package/dist/flags/es-ga.svg +187 -0
- package/dist/flags/es-pv.svg +5 -0
- package/dist/flags/et-EE.svg +5 -0
- package/dist/flags/et.svg +14 -0
- package/dist/flags/eu.svg +28 -0
- package/dist/flags/fa-IR.svg +219 -0
- package/dist/flags/fj.svg +120 -0
- package/dist/flags/fk.svg +90 -0
- package/dist/flags/fm.svg +11 -0
- package/dist/flags/fo.svg +12 -0
- package/dist/flags/fr-BE.svg +7 -0
- package/dist/flags/fr-FR.svg +5 -0
- package/dist/flags/ga.svg +7 -0
- package/dist/flags/gb-eng.svg +5 -0
- package/dist/flags/gb-nir.svg +132 -0
- package/dist/flags/gb-sct.svg +4 -0
- package/dist/flags/gb-wls.svg +9 -0
- package/dist/flags/gd.svg +27 -0
- package/dist/flags/ge.svg +6 -0
- package/dist/flags/gf.svg +5 -0
- package/dist/flags/gg.svg +9 -0
- package/dist/flags/gh.svg +6 -0
- package/dist/flags/gi.svg +32 -0
- package/dist/flags/gl.svg +4 -0
- package/dist/flags/gm.svg +14 -0
- package/dist/flags/gn.svg +7 -0
- package/dist/flags/gp.svg +5 -0
- package/dist/flags/gq.svg +23 -0
- package/dist/flags/gs.svg +133 -0
- package/dist/flags/gu.svg +19 -0
- package/dist/flags/gw.svg +13 -0
- package/dist/flags/gy.svg +9 -0
- package/dist/flags/he-IL.svg +14 -0
- package/dist/flags/hm.svg +8 -0
- package/dist/flags/hr-HR.svg +58 -0
- package/dist/flags/ht.svg +116 -0
- package/dist/flags/hu-HU.svg +7 -0
- package/dist/flags/ic.svg +7 -0
- package/dist/flags/id-ID.svg +4 -0
- package/dist/flags/im.svg +36 -0
- package/dist/flags/io.svg +130 -0
- package/dist/flags/is-IS.svg +12 -0
- package/dist/flags/it-IT.svg +7 -0
- package/dist/flags/ja-JP.svg +11 -0
- package/dist/flags/je.svg +62 -0
- package/dist/flags/kg.svg +4 -0
- package/dist/flags/kh.svg +61 -0
- package/dist/flags/ki.svg +36 -0
- package/dist/flags/km.svg +16 -0
- package/dist/flags/kn.svg +14 -0
- package/dist/flags/ko-KP.svg +15 -0
- package/dist/flags/ko-KR.svg +24 -0
- package/dist/flags/ky.svg +103 -0
- package/dist/flags/kz.svg +36 -0
- package/dist/flags/la.svg +12 -0
- package/dist/flags/lc.svg +8 -0
- package/dist/flags/li.svg +43 -0
- package/dist/flags/lk.svg +22 -0
- package/dist/flags/lr.svg +14 -0
- package/dist/flags/ls.svg +8 -0
- package/dist/flags/lt-LT.svg +7 -0
- package/dist/flags/lu.svg +5 -0
- package/dist/flags/lv-LV.svg +6 -0
- package/dist/flags/mc.svg +6 -0
- package/dist/flags/md.svg +70 -0
- package/dist/flags/me.svg +116 -0
- package/dist/flags/mf.svg +5 -0
- package/dist/flags/mg.svg +7 -0
- package/dist/flags/mh.svg +7 -0
- package/dist/flags/mk-MK.svg +5 -0
- package/dist/flags/ml.svg +7 -0
- package/dist/flags/mm.svg +12 -0
- package/dist/flags/mn.svg +14 -0
- package/dist/flags/mp.svg +86 -0
- package/dist/flags/mq.svg +5 -0
- package/dist/flags/mr.svg +6 -0
- package/dist/flags/ms-MY.svg +26 -0
- package/dist/flags/ms.svg +29 -0
- package/dist/flags/mt.svg +58 -0
- package/dist/flags/mu.svg +8 -0
- package/dist/flags/mw.svg +10 -0
- package/dist/flags/mz.svg +21 -0
- package/dist/flags/na.svg +16 -0
- package/dist/flags/nb-NO.svg +7 -0
- package/dist/flags/nc.svg +13 -0
- package/dist/flags/ne-NP.svg +13 -0
- package/dist/flags/ne.svg +6 -0
- package/dist/flags/nf.svg +9 -0
- package/dist/flags/ng.svg +6 -0
- package/dist/flags/nl-NL.svg +5 -0
- package/dist/flags/nr.svg +12 -0
- package/dist/flags/nu.svg +10 -0
- package/dist/flags/pc.svg +33 -0
- package/dist/flags/pf.svg +19 -0
- package/dist/flags/pg.svg +9 -0
- package/dist/flags/pl.svg +6 -0
- package/dist/flags/pm.svg +5 -0
- package/dist/flags/pn.svg +53 -0
- package/dist/flags/ps.svg +15 -0
- package/dist/flags/pt-BR.svg +45 -0
- package/dist/flags/pt-PT.svg +57 -0
- package/dist/flags/pw.svg +11 -0
- package/dist/flags/re.svg +5 -0
- package/dist/flags/ro-RO.svg +7 -0
- package/dist/flags/rs.svg +292 -0
- package/dist/flags/ru-RU.svg +5 -0
- package/dist/flags/rw.svg +13 -0
- package/dist/flags/sb.svg +13 -0
- package/dist/flags/sc.svg +7 -0
- package/dist/flags/sh-ac.svg +689 -0
- package/dist/flags/sh-hl.svg +164 -0
- package/dist/flags/sh-ta.svg +76 -0
- package/dist/flags/sh.svg +7 -0
- package/dist/flags/sj.svg +7 -0
- package/dist/flags/sk-SK.svg +9 -0
- package/dist/flags/sl-SI.svg +18 -0
- package/dist/flags/sl.svg +7 -0
- package/dist/flags/sm.svg +75 -0
- package/dist/flags/sn.svg +8 -0
- package/dist/flags/so.svg +11 -0
- package/dist/flags/sq-AL.svg +5 -0
- package/dist/flags/sr.svg +6 -0
- package/dist/flags/ss.svg +8 -0
- package/dist/flags/st.svg +16 -0
- package/dist/flags/sv-FI.svg +5 -0
- package/dist/flags/sv-SE.svg +4 -0
- package/dist/flags/sw-KE.svg +23 -0
- package/dist/flags/sx.svg +56 -0
- package/dist/flags/sz.svg +34 -0
- package/dist/flags/tc.svg +50 -0
- package/dist/flags/td.svg +7 -0
- package/dist/flags/tf.svg +15 -0
- package/dist/flags/tg.svg +14 -0
- package/dist/flags/th-TH.svg +7 -0
- package/dist/flags/tj.svg +22 -0
- package/dist/flags/tk.svg +5 -0
- package/dist/flags/tl.svg +13 -0
- package/dist/flags/tm.svg +204 -0
- package/dist/flags/to.svg +10 -0
- package/dist/flags/tr-TR.svg +8 -0
- package/dist/flags/tv.svg +9 -0
- package/dist/flags/tz.svg +13 -0
- package/dist/flags/ug.svg +30 -0
- package/dist/flags/uk-UA.svg +6 -0
- package/dist/flags/um.svg +9 -0
- package/dist/flags/un.svg +16 -0
- package/dist/flags/ur-PK.svg +15 -0
- package/dist/flags/uz.svg +30 -0
- package/dist/flags/va.svg +190 -0
- package/dist/flags/vc.svg +8 -0
- package/dist/flags/vg.svg +59 -0
- package/dist/flags/vi-VN.svg +11 -0
- package/dist/flags/vi.svg +28 -0
- package/dist/flags/vu.svg +21 -0
- package/dist/flags/wf.svg +5 -0
- package/dist/flags/ws.svg +7 -0
- package/dist/flags/xk.svg +5 -0
- package/dist/flags/xx.svg +4 -0
- package/dist/flags/yt.svg +5 -0
- package/dist/flags/zh-CN.svg +11 -0
- package/dist/flags/zh-HK.svg +8 -0
- package/dist/flags/zh-MO.svg +9 -0
- package/dist/flags/zh-SG.svg +13 -0
- package/dist/flags/zh-TW.svg +11 -0
- package/dist/flags/zm.svg +27 -0
- package/dist/flags.js +722 -0
- package/dist/flags.mjs +722 -0
- package/dist/fr.d.mts +68 -3
- package/dist/fr.d.ts +68 -3
- package/dist/fr.js +1 -1
- package/dist/fr.mjs +1 -1
- package/dist/hi.d.mts +833 -0
- package/dist/hi.d.ts +833 -0
- package/dist/hi.js +1 -0
- package/dist/hi.mjs +1 -0
- package/dist/index.d.mts +26 -3
- package/dist/index.d.ts +29 -4
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/it.d.mts +68 -3
- package/dist/it.d.ts +68 -3
- package/dist/it.js +1 -1
- package/dist/it.mjs +1 -1
- package/dist/jp.d.mts +68 -3
- package/dist/jp.d.ts +68 -3
- package/dist/jp.js +1 -1
- package/dist/jp.mjs +1 -1
- package/dist/ko.d.mts +68 -3
- package/dist/ko.d.ts +68 -3
- package/dist/ko.js +1 -1
- package/dist/ko.mjs +1 -1
- package/dist/mapper/tencent.d.mts +129 -0
- package/dist/mapper/tencent.d.ts +129 -0
- package/dist/nl.d.mts +68 -3
- package/dist/nl.d.ts +68 -3
- package/dist/nl.js +1 -1
- package/dist/nl.mjs +1 -1
- package/dist/pl.d.mts +833 -0
- package/dist/pl.d.ts +833 -0
- package/dist/pl.js +1 -0
- package/dist/pl.mjs +1 -0
- package/dist/pt.d.mts +68 -3
- package/dist/pt.d.ts +68 -3
- package/dist/pt.js +1 -1
- package/dist/pt.mjs +1 -1
- package/dist/ru.d.mts +68 -3
- package/dist/ru.d.ts +68 -3
- package/dist/ru.js +1 -1
- package/dist/ru.mjs +1 -1
- package/dist/sv.d.mts +833 -0
- package/dist/sv.d.ts +833 -0
- package/dist/sv.js +1 -0
- package/dist/sv.mjs +1 -0
- package/dist/th.d.mts +833 -0
- package/dist/th.d.ts +833 -0
- package/dist/th.js +1 -0
- package/dist/th.mjs +1 -0
- package/dist/tr.d.mts +833 -0
- package/dist/tr.d.ts +833 -0
- package/dist/tr.js +1 -0
- package/dist/tr.mjs +1 -0
- package/dist/utils/index.d.mts +16 -0
- package/dist/utils/index.d.ts +16 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.mjs +1 -0
- package/dist/vi.d.mts +833 -0
- package/dist/vi.d.ts +833 -0
- package/dist/vi.js +1 -0
- package/dist/vi.mjs +1 -0
- package/dist/zh.d.mts +68 -3
- package/dist/zh.d.ts +68 -3
- package/dist/zh.js +1 -1
- package/dist/zh.mjs +1 -1
- package/package.json +102 -33
- /package/dist/{baidu.d.mts → mapper/baidu.d.mts} +0 -0
- /package/dist/{baidu.d.ts → mapper/baidu.d.ts} +0 -0
- /package/dist/{baidu.js → mapper/baidu.js} +0 -0
- /package/dist/{baidu.mjs → mapper/baidu.mjs} +0 -0
- /package/dist/{iso639-1.d.mts → mapper/iso639-1.d.mts} +0 -0
- /package/dist/{iso639-1.d.ts → mapper/iso639-1.d.ts} +0 -0
- /package/dist/{iso639-1.js → mapper/iso639-1.js} +0 -0
- /package/dist/{iso639-1.mjs → mapper/iso639-1.mjs} +0 -0
- /package/dist/{iso639-2.d.mts → mapper/iso639-2.d.mts} +0 -0
- /package/dist/{iso639-2.d.ts → mapper/iso639-2.d.ts} +0 -0
- /package/dist/{iso639-2.js → mapper/iso639-2.js} +0 -0
- /package/dist/{iso639-2.mjs → mapper/iso639-2.mjs} +0 -0
- /package/dist/{iso639-3.d.mts → mapper/iso639-3.d.mts} +0 -0
- /package/dist/{iso639-3.d.ts → mapper/iso639-3.d.ts} +0 -0
- /package/dist/{iso639-3.js → mapper/iso639-3.js} +0 -0
- /package/dist/{iso639-3.mjs → mapper/iso639-3.mjs} +0 -0
- /package/dist/{tencent.js → mapper/tencent.js} +0 -0
- /package/dist/{tencent.mjs → mapper/tencent.mjs} +0 -0
- /package/dist/{xunfei.d.mts → mapper/xunfei.d.mts} +0 -0
- /package/dist/{xunfei.d.ts → mapper/xunfei.d.ts} +0 -0
- /package/dist/{xunfei.js → mapper/xunfei.js} +0 -0
- /package/dist/{xunfei.mjs → mapper/xunfei.mjs} +0 -0
- /package/dist/{youdao.d.mts → mapper/youdao.d.mts} +0 -0
- /package/dist/{youdao.d.ts → mapper/youdao.d.ts} +0 -0
- /package/dist/{youdao.js → mapper/youdao.js} +0 -0
- /package/dist/{youdao.mjs → mapper/youdao.mjs} +0 -0
package/README.md
CHANGED
|
@@ -1,253 +1,315 @@
|
|
|
1
1
|
# bcp47-language-tags
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/bcp47-language-tags)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
[中文](./README_CN.md) | English
|
|
7
|
+
|
|
8
|
+
Complete list of BCP-47 language tags with TypeScript type definitions, translations, and SVG flag assets.
|
|
9
|
+
|
|
10
|
+
## Features
|
|
11
|
+
|
|
12
|
+
- 🌍 **180+ Language Tags** - Comprehensive coverage of BCP-47 standard language tags
|
|
13
|
+
- 🌐 **Multi-language Translations** - Localized language names in 12 languages
|
|
14
|
+
- 🏳️ **SVG Flag Assets** - Built-in SVG flags for all supported languages
|
|
15
|
+
- 🎯 **TypeScript Support** - Full type definitions for type-safe development
|
|
16
|
+
- 🗺️ **Mapper Support** - Convert BCP-47 tags to ISO 639-1/2/3 and platform-specific codes
|
|
17
|
+
- ⚡ **Tree-shakeable** - Import only what you need
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install bcp47-language-tags
|
|
23
|
+
# or
|
|
24
|
+
yarn add bcp47-language-tags
|
|
25
|
+
# or
|
|
26
|
+
bun add bcp47-language-tags
|
|
27
|
+
# or
|
|
28
|
+
pnpm add bcp47-language-tags
|
|
29
|
+
```
|
|
4
30
|
|
|
5
31
|
## Usage
|
|
6
32
|
|
|
7
|
-
###
|
|
33
|
+
### Language Tags List
|
|
34
|
+
|
|
35
|
+
Import language tags with localized names:
|
|
8
36
|
|
|
9
37
|
```typescript
|
|
10
|
-
import { tags } from '
|
|
38
|
+
import { tags } from 'bcp47-language-tags/en';
|
|
11
39
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
console.log(tag);
|
|
40
|
+
for (let tag of tags) {
|
|
41
|
+
console.log(tag);
|
|
15
42
|
}
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// {"tag": "ar-SD", "name": "Arabic (Sudan)", "nativeName": "العربية (السودان)"},
|
|
32
|
-
// .....
|
|
33
|
-
import { tags } from 'bcp-language-tags/zh';
|
|
34
|
-
|
|
35
|
-
for(let tag of tags) {
|
|
36
|
-
console.log(tag);
|
|
43
|
+
// Output:
|
|
44
|
+
// {"tag": "zh-CN", "name": "Chinese (Simplified)", "nativeName": "简体中文", "primary": true}
|
|
45
|
+
// {"tag": "zh-TW", "name": "Chinese (Traditional - Taiwan)", "nativeName": "繁體中文 (臺灣)"}
|
|
46
|
+
// {"tag": "en-US", "name": "English (United States)", "nativeName": "English (United States)", "primary": true}
|
|
47
|
+
// {"tag": "es-ES", "name": "Spanish (Spain)", "nativeName": "Español (España)", "primary": true}
|
|
48
|
+
// ...
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Import with Chinese translations:
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { tags } from 'bcp47-language-tags/zh';
|
|
55
|
+
|
|
56
|
+
for (let tag of tags) {
|
|
57
|
+
console.log(tag);
|
|
37
58
|
}
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
// "zh-CHT": {"tag": "zh-CHT", "name": "繁体中文", "nativeName": "繁體中文 (Traditional Chinese)"},
|
|
43
|
-
// "en-US": {"tag": "en-US", "name": "英语(美国)", "nativeName": "English (United States)", "primary": true},
|
|
44
|
-
// "en-GB": {"tag": "en-GB", "name": "英语(英国)", "nativeName": "English (United Kingdom)"},
|
|
45
|
-
// "en-IN": {"tag": "en-IN", "name": "英语(印度)", "nativeName": "English (India)"},
|
|
46
|
-
// "en-CA": {"tag": "en-CA", "name": "英语(加拿大)", "nativeName": "English (Canada)"},
|
|
47
|
-
// "es-GT": {"tag": "es-GT", "name": "西班牙语(危地马拉)", "nativeName": "Español (Guatemala)"},
|
|
48
|
-
// "ar-SA": {"tag": "ar-SA", "name": "阿拉伯语(沙特阿拉伯)", "nativeName": "العربية (السعودية)"},
|
|
49
|
-
// "ar-DZ": {"tag": "ar-DZ", "name": "阿拉伯语(阿尔及利亚)", "nativeName": "العربية (الجزائر)"},
|
|
50
|
-
// "ar-MA": {"tag": "ar-MA", "name": "阿拉伯语(摩洛哥)", "nativeName": "العربية (المغرب)"},
|
|
51
|
-
// "ar-IQ": {"tag": "ar-IQ", "name": "阿拉伯语(伊拉克)", "nativeName": "العربية (العراق)"},
|
|
52
|
-
// "ar-SD": {"tag": "ar-SD", "name": "阿拉伯语(苏丹)", "nativeName": "العربية (السودان)"},
|
|
53
|
-
// ...
|
|
54
|
-
|
|
55
|
-
// Supoort language :
|
|
56
|
-
import { tags } from 'bcp-language-tags/zh'
|
|
57
|
-
import { tags } from 'bcp-language-tags/de'
|
|
58
|
-
import { tags } from 'bcp-language-tags/en';
|
|
59
|
-
import { tags } from 'bcp-language-tags/es';
|
|
60
|
-
import { tags } from 'bcp-language-tags/fr';
|
|
61
|
-
import { tags } from 'bcp-language-tags/it';
|
|
62
|
-
import { tags } from 'bcp-language-tags/jp';
|
|
63
|
-
import { tags } from 'bcp-language-tags/ko';
|
|
64
|
-
import { tags } from 'bcp-language-tags/ru';
|
|
65
|
-
import { tags } from 'bcp-language-tags/ar';
|
|
66
|
-
import { tags } from 'bcp-language-tags/pt';
|
|
67
|
-
import { tags } from 'bcp-language-tags/nl';
|
|
59
|
+
// Output:
|
|
60
|
+
// {"tag": "zh-CN", "name": "简体中文", "nativeName": "简体中文", "primary": true}
|
|
61
|
+
// {"tag": "zh-TW", "name": "繁体中文(台湾)", "nativeName": "繁體中文 (臺灣)"}
|
|
62
|
+
// {"tag": "en-US", "name": "英语(美国)", "nativeName": "English (United States)", "primary": true}
|
|
68
63
|
```
|
|
69
64
|
|
|
70
|
-
|
|
65
|
+
**Supported Languages:**
|
|
71
66
|
|
|
72
67
|
```typescript
|
|
73
|
-
import
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
//
|
|
68
|
+
import { tags } from "bcp47-language-tags/zh" // Chinese
|
|
69
|
+
import { tags } from "bcp47-language-tags/en" // English
|
|
70
|
+
import { tags } from "bcp47-language-tags/ar" // Arabic
|
|
71
|
+
import { tags } from "bcp47-language-tags/cs" // Czech
|
|
72
|
+
import { tags } from "bcp47-language-tags/da" // Danish
|
|
73
|
+
import { tags } from "bcp47-language-tags/de" // German
|
|
74
|
+
import { tags } from "bcp47-language-tags/el" // Greek
|
|
75
|
+
import { tags } from "bcp47-language-tags/es" // Spanish
|
|
76
|
+
import { tags } from "bcp47-language-tags/fi" // Finnish
|
|
77
|
+
import { tags } from "bcp47-language-tags/fr" // French
|
|
78
|
+
import { tags } from "bcp47-language-tags/hi" // Hindi
|
|
79
|
+
import { tags } from "bcp47-language-tags/it" // Italian
|
|
80
|
+
import { tags } from "bcp47-language-tags/jp" // Japanese
|
|
81
|
+
import { tags } from "bcp47-language-tags/ko" // Korean
|
|
82
|
+
import { tags } from "bcp47-language-tags/nl" // Dutch
|
|
83
|
+
import { tags } from "bcp47-language-tags/pl" // Polish
|
|
84
|
+
import { tags } from "bcp47-language-tags/pt" // Portuguese
|
|
85
|
+
import { tags } from "bcp47-language-tags/ru" // Russian
|
|
86
|
+
import { tags } from "bcp47-language-tags/sv" // Swedish
|
|
87
|
+
import { tags } from "bcp47-language-tags/th" // Thai
|
|
88
|
+
import { tags } from "bcp47-language-tags/tr" // Turkish
|
|
89
|
+
import { tags } from "bcp47-language-tags/vi" // Vietnamese
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Primary Languages
|
|
93
|
+
|
|
94
|
+
This library defines **22 of the most common languages** as Primary Languages. Each primary language has multiple regional variants, with one variant marked as `primary: true` to represent the default/most commonly used variant for that language.
|
|
95
|
+
|
|
96
|
+
**List of Primary Languages:**
|
|
97
|
+
|
|
98
|
+
| Language | Default Variant | Description |
|
|
99
|
+
|----------|-----------------|-------------|
|
|
100
|
+
| Chinese | `zh-CN` | Simplified Chinese (Mainland China) |
|
|
101
|
+
| English | `en-US` | English (United States) |
|
|
102
|
+
| Japanese | `ja-JP` | Japanese (Japan) |
|
|
103
|
+
| Korean | `ko-KR` | Korean (South Korea) |
|
|
104
|
+
| Russian | `ru-RU` | Russian (Russia) |
|
|
105
|
+
| Spanish | `es-ES` | Spanish (Spain) |
|
|
106
|
+
| French | `fr-FR` | French (France) |
|
|
107
|
+
| German | `de-DE` | German (Germany) |
|
|
108
|
+
| Italian | `it-IT` | Italian (Italy) |
|
|
109
|
+
| Arabic | `ar-EG` | Arabic (Egypt) |
|
|
110
|
+
| Portuguese | `pt-PT` | Portuguese (Portugal) |
|
|
111
|
+
| Dutch | `nl-NL` | Dutch (Netherlands) |
|
|
91
112
|
|
|
113
|
+
**Regional Variants Example (Chinese):**
|
|
114
|
+
|
|
115
|
+
| Variant | Tag | primary |
|
|
116
|
+
|---------|-----|---------|
|
|
117
|
+
| Simplified Chinese | `zh-CN` | `true` ✅ |
|
|
118
|
+
| Traditional Chinese (Taiwan) | `zh-TW` | `false` |
|
|
119
|
+
| Traditional Chinese (Hong Kong) | `zh-HK` | `false` |
|
|
120
|
+
| Traditional Chinese (Macau) | `zh-MO` | `false` |
|
|
121
|
+
|
|
122
|
+
**Why Default Variants Matter:**
|
|
123
|
+
|
|
124
|
+
- **Default Selection**: When users specify only the language code (e.g., "zh"), the default variant is returned (zh-CN)
|
|
125
|
+
- **UI Simplification**: Application language selectors typically prioritize displaying default variants
|
|
126
|
+
- **Fallback Logic**: When a specific regional variant is unavailable, the default variant serves as a fallback
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
import { getTag, getPrimaryTags } from 'bcp47-language-tags/en';
|
|
130
|
+
|
|
131
|
+
// Returns the default variant for the language
|
|
132
|
+
getTag('zh'); // { tag: "zh-CN", name: "Chinese (Simplified)", primary: true }
|
|
133
|
+
getTag('en'); // { tag: "en-US", name: "English (United States)", primary: true }
|
|
134
|
+
|
|
135
|
+
// Get all primary languages' default variants
|
|
136
|
+
const primaryTags = getPrimaryTags(); // Returns array of 12 default variants
|
|
92
137
|
```
|
|
93
138
|
|
|
139
|
+
### All Language Tags
|
|
94
140
|
|
|
95
|
-
|
|
141
|
+
Get all language tags organized by primary language:
|
|
96
142
|
|
|
97
143
|
```typescript
|
|
98
|
-
import
|
|
99
|
-
// import type { BCP47LanguageTag } from 'bcp-language-tags/en';
|
|
100
|
-
|
|
101
|
-
// BCP47LanguageTag type
|
|
102
|
-
|
|
103
|
-
export type BCP47LanguageTagName =
|
|
104
|
-
// 简体中文 | 繁体中文(台湾) | 繁体中文(香港) | 繁体中文(澳门) | 简体中文(新加坡) | 简体中文 | 繁体中文 | 英语(美国) | 英语(英国) | 英语(加拿大)
|
|
105
|
-
| "zh-CN" | "zh-TW" | "zh-HK" | "zh-MO" | "zh-SG" | "zh-CHS" | "zh-CHT" | "en-US" | "en-GB" | "en-CA"
|
|
106
|
-
// 英语(澳大利亚) | 英语(印度) | 英语(南非) | 英语(新西兰) | 英语(爱尔兰) | 英语(菲律宾) | 英语(津巴布韦) | 英语(伯利兹) | 英语(加勒比) | 英语(牙买加)
|
|
107
|
-
| "en-AU" | "en-IN" | "en-ZA" | "en-NZ" | "en-IE" | "en-PH" | "en-ZW" | "en-BZ" | "en-CB" | "en-JM"
|
|
108
|
-
// 英语(特立尼达和多巴哥) | 印地语(印度) | 西班牙语(西班牙) | 西班牙语(墨西哥) | 西班牙语(阿根廷) | 西班牙语(哥伦比亚) | 西班牙语(秘鲁) | 西班牙语(委内瑞拉) | 西班牙语(智利) | 西班牙语(厄瓜多尔)
|
|
109
|
-
| "en-TT" | "hi-IN" | "es-ES" | "es-MX" | "es-AR" | "es-CO" | "es-PE" | "es-VE" | "es-CL" | "es-EC"
|
|
110
|
-
// 西班牙语(危地马拉) | 西班牙语(古巴) | 西班牙语(玻利维亚) | 西班牙语(多米尼加共和国) | 西班牙语(洪都拉斯) | 西班牙语(巴拉圭) | 西班牙语(萨尔瓦多) | 西班牙语(尼加拉瓜) | 西班牙语(波多黎各) | 西班牙语(乌拉圭)
|
|
111
|
-
| "es-GT" | "es-CU" | "es-BO" | "es-DO" | "es-HN" | "es-PY" | "es-SV" | "es-NI" | "es-PR" | "es-UY"
|
|
112
|
-
// 西班牙语(巴拿马) | 西班牙语(哥斯达黎加) | 阿拉伯语(埃及) | 阿拉伯语(沙特阿拉伯) | 阿拉伯语(阿尔及利亚) | 阿拉伯语(摩洛哥) | 阿拉伯语(伊拉克) | 阿拉伯语(苏丹) | 阿拉伯语(也门) | 阿拉伯语(叙利亚)
|
|
113
|
-
| "es-PA" | "es-CR" | "ar-EG" | "ar-SA" | "ar-DZ" | "ar-MA" | "ar-IQ" | "ar-SD" | "ar-YE" | "ar-SY"
|
|
114
|
-
// 阿拉伯语(突尼斯) | 阿拉伯语(利比亚) | 阿拉伯语(约旦) | 阿拉伯语(黎巴嫩) | 阿拉伯语(科威特) | 阿拉伯语(阿联酋) | 阿拉伯语(巴林) | 阿拉伯语(卡塔尔) | 阿拉伯语(阿曼) | 葡萄牙语(巴西)
|
|
115
|
-
| "ar-TN" | "ar-LY" | "ar-JO" | "ar-LB" | "ar-KW" | "ar-AE" | "ar-BH" | "ar-QA" | "ar-OM" | "pt-BR"
|
|
116
|
-
// 葡萄牙语(葡萄牙) | 俄语(俄罗斯) | 日语(日本) | 德语(德国) | 德语(奥地利) | 德语(瑞士) | 法语(法国) | 法语(加拿大) | 法语(比利时) | 法语(瑞士)
|
|
117
|
-
| "pt-PT" | "ru-RU" | "ja-JP" | "de-DE" | "de-AT" | "de-CH" | "fr-FR" | "fr-CA" | "fr-BE" | "fr-CH"
|
|
118
|
-
// 法语(卢森堡) | 法语(摩纳哥) | 韩语(韩国) | 意大利语(意大利) | 意大利语(瑞士) | 土耳其语 | 泰语 | 希腊语 | 捷克语 | 瑞典语
|
|
119
|
-
| "fr-LU" | "fr-MC" | "ko-KR" | "it-IT" | "it-CH" | "tr-TR" | "th-TH" | "el-GR" | "cs-CZ" | "sv-SE"
|
|
120
|
-
// 瑞典语(芬兰) | 匈牙利语 | 芬兰语 | 丹麦语 | 挪威博克马尔语 | 挪威尼诺斯克语 | 希伯来语 | 印度尼西亚语 | 马来语(马来西亚) | 马来语(文莱)
|
|
121
|
-
| "sv-FI" | "hu-HU" | "fi-FI" | "da-DK" | "nb-NO" | "nn-NO" | "he-IL" | "id-ID" | "ms-MY" | "ms-BN"
|
|
122
|
-
// 罗马尼亚语 | 保加利亚语 | 乌克兰语 | 斯洛伐克语 | 斯洛文尼亚语 | 克罗地亚语 | 加泰罗尼亚语 | 立陶宛语 | 拉脱维亚语 | 爱沙尼亚语
|
|
123
|
-
| "ro-RO" | "bg-BG" | "uk-UA" | "sk-SK" | "sl-SI" | "hr-HR" | "ca-ES" | "lt-LT" | "lv-LV" | "et-EE"
|
|
124
|
-
// 阿尔巴尼亚语 | 马其顿语 | 白俄罗斯语 | 冰岛语 | 加利西亚语 | 巴斯克语 | 南非荷兰语 | 斯瓦希里语 | 泰米尔语 | 泰卢固语
|
|
125
|
-
| "sq-AL" | "mk-MK" | "be-BY" | "is-IS" | "gl-ES" | "eu-ES" | "af-ZA" | "sw-KE" | "ta-IN" | "te-IN"
|
|
126
|
-
// 卡纳达语 | 马拉地语 | 古吉拉特语 | 旁遮普语 | 孔卡尼语 | 梵语 | 乌尔都语 | 波斯语 | 叙利亚语 | 迪维希语
|
|
127
|
-
| "kn-IN" | "mr-IN" | "gu-IN" | "pa-IN" | "kok-IN" | "sa-IN" | "ur-PK" | "fa-IR" | "syr-SY" | "div-MV"
|
|
128
|
-
// 格鲁吉亚语
|
|
129
|
-
| "ka-GE";
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
export type BCP47LanguageTag = {
|
|
133
|
-
tag: string
|
|
134
|
-
name: string
|
|
135
|
-
nativeName: string
|
|
136
|
-
default?: boolean
|
|
137
|
-
}
|
|
144
|
+
import allTags from 'bcp47-language-tags';
|
|
138
145
|
|
|
139
|
-
|
|
146
|
+
// Access tags for a specific primary language
|
|
147
|
+
const chineseTags = allTags['zh-CN'];
|
|
148
|
+
const englishTags = allTags['en-US'];
|
|
140
149
|
```
|
|
141
150
|
|
|
142
|
-
###
|
|
151
|
+
### Primary Language Flags
|
|
152
|
+
|
|
153
|
+
Get SVG data for primary language flags:
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
import flags from 'bcp47-language-tags/flags';
|
|
157
|
+
|
|
158
|
+
// Access flag SVG data
|
|
159
|
+
console.log(flags.zhCN);
|
|
160
|
+
// <svg xmlns="http://www.w3.org/2000/svg" ...>
|
|
161
|
+
// <path fill="#de2910" d="..."/>
|
|
162
|
+
// ...
|
|
163
|
+
// </svg>
|
|
164
|
+
|
|
165
|
+
// Available flags: zhCN, enUS, jaJP, koKR, ruRU, esES, frFR, deDE, itIT, arEG, ptPT, nlNL
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Non-Primary Language Flags
|
|
143
169
|
|
|
144
|
-
|
|
170
|
+
Import SVG flag files directly (works with Vite and other bundlers that support SVG imports):
|
|
145
171
|
|
|
146
172
|
```typescript
|
|
147
|
-
import
|
|
148
|
-
import
|
|
149
|
-
import
|
|
150
|
-
import tencent from 'bcp-language-tags/mapper/tencent';
|
|
151
|
-
import google from 'bcp-language-tags/mapper/google';
|
|
152
|
-
import iso6391 from 'bcp-language-tags/mapper/iso639-1';
|
|
153
|
-
import iso6392 from 'bcp-language-tags/mapper/iso639-2';
|
|
154
|
-
import iso6393 from 'bcp-language-tags/mapper/iso639-3';
|
|
155
|
-
|
|
156
|
-
baidu['zh-CN'] // zh
|
|
157
|
-
iso6391['zh-CN'] // zh
|
|
158
|
-
iso6392['zh-CN'] // zho
|
|
173
|
+
import zhCN from 'bcp47-language-tags/flags/zh-CN.svg';
|
|
174
|
+
import enUS from 'bcp47-language-tags/flags/en-US.svg';
|
|
175
|
+
import esES from 'bcp47-language-tags/flags/es-ES.svg';
|
|
159
176
|
```
|
|
160
177
|
|
|
178
|
+
> **Note:** Direct SVG import requires build tools with SVG processing support (e.g., Vite with proper plugins).
|
|
179
|
+
|
|
180
|
+
### Mapper
|
|
181
|
+
|
|
182
|
+
Convert BCP-47 language tags to other standards:
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
import {
|
|
186
|
+
baidu,
|
|
187
|
+
youdao,
|
|
188
|
+
tencent,
|
|
189
|
+
xunfei,
|
|
190
|
+
ISO6391,
|
|
191
|
+
ISO6392,
|
|
192
|
+
ISO6393
|
|
193
|
+
} from 'bcp47-language-tags/mapper';
|
|
194
|
+
|
|
195
|
+
// Convert to platform-specific codes
|
|
196
|
+
baidu['zh-CN']; // 'zh'
|
|
197
|
+
youdao['zh-CN']; // 'zh'
|
|
198
|
+
tencent['zh-CN']; // 'zh'
|
|
199
|
+
xunfei['zh-CN']; // 'zh'
|
|
200
|
+
|
|
201
|
+
// Convert to ISO 639 standards
|
|
202
|
+
ISO6391['zh-CN']; // 'zh'
|
|
203
|
+
ISO6392['zh-CN']; // 'zho'
|
|
204
|
+
ISO6393['zh-CN']; // 'zho'
|
|
205
|
+
```
|
|
161
206
|
|
|
162
207
|
## API
|
|
163
208
|
|
|
164
|
-
### getTag(tag: string): BCP47LanguageTag
|
|
209
|
+
### getTag(tag: string): BCP47LanguageTag | undefined
|
|
165
210
|
|
|
166
|
-
|
|
211
|
+
Get a specific language tag. Returns the primary tag for a language if no country code is specified.
|
|
167
212
|
|
|
168
213
|
```typescript
|
|
214
|
+
import { getTag } from 'bcp47-language-tags/en';
|
|
169
215
|
|
|
170
|
-
//
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
//
|
|
176
|
-
getTag('
|
|
177
|
-
// {"tag": "en-US", "name": "English (United States)", "nativeName": "English (United States)", "primary": true}
|
|
178
|
-
getTag('en-US')
|
|
179
|
-
|
|
180
|
-
// return default language tag
|
|
181
|
-
// {"tag": "zh-CN", "name": "Chinese (Simplified)", "nativeName": "简体中文", "primary": true}
|
|
182
|
-
getTag('zh')
|
|
183
|
-
// {"tag": "en-US", "name": "English (United States)", "nativeName": "English (United States)", "primary": true}
|
|
184
|
-
getTag('en')
|
|
216
|
+
// Get specific tag
|
|
217
|
+
getTag('zh-CN'); // { tag: "zh-CN", name: "Chinese (Simplified)", nativeName: "简体中文", primary: true }
|
|
218
|
+
getTag('en-US'); // { tag: "en-US", name: "English (United States)", nativeName: "English (United States)", primary: true }
|
|
219
|
+
|
|
220
|
+
// Get primary tag for language
|
|
221
|
+
getTag('zh'); // Returns primary Chinese tag (zh-CN)
|
|
222
|
+
getTag('en'); // Returns primary English tag (en-US)
|
|
185
223
|
```
|
|
186
224
|
|
|
187
|
-
### getTags(
|
|
225
|
+
### getTags(language?: string | string[]): BCP47LanguageTag[]
|
|
188
226
|
|
|
189
|
-
|
|
227
|
+
Get all tags or filter by language code(s).
|
|
190
228
|
|
|
191
229
|
```typescript
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
//
|
|
195
|
-
|
|
196
|
-
// {"tag": "zh-CN", "name": "Chinese (Simplified)", "nativeName": "简体中文", "primary": true}
|
|
197
|
-
// {"tag": "zh-TW", "name": "Chinese (Traditional - Taiwan)", "nativeName": "繁體中文 (臺灣)"}
|
|
198
|
-
// {"tag": "zh-HK", "name": "Chinese (Traditional - Hong Kong)", "nativeName": "繁體中文(香港)"}
|
|
199
|
-
// {"tag": "zh-MO", "name": "Chinese (Traditional - Macau)", "nativeName": "繁體中文 (Traditional Chinese - Macau)"}
|
|
200
|
-
// {"tag": "zh-SG", "name": "Chinese (Simplified - Singapore)", "nativeName": "简体中文 (Simplified Chinese - Singapore)"}
|
|
201
|
-
// {"tag": "zh-CHS", "name": "Chinese (Simplified)", "nativeName": "简体中文"}
|
|
202
|
-
// {"tag": "zh-CHT", "name": "Chinese (Traditional)", "nativeName": "繁體中文 (Traditional Chinese)"}
|
|
203
|
-
// ]
|
|
204
|
-
|
|
205
|
-
getTags(["zh","en"])
|
|
206
|
-
|
|
207
|
-
getTags(["zh-CN","en-US"])
|
|
230
|
+
import { getTags } from 'bcp47-language-tags/en';
|
|
231
|
+
|
|
232
|
+
// Get all tags
|
|
233
|
+
getTags();
|
|
208
234
|
|
|
235
|
+
// Filter by language
|
|
236
|
+
getTags('zh'); // All Chinese language variants
|
|
237
|
+
getTags(['zh', 'en']); // Chinese and English variants
|
|
238
|
+
getTags(['zh-CN', 'en-US']); // Specific tags
|
|
209
239
|
```
|
|
210
240
|
|
|
211
241
|
### getPrimaryTags(): BCP47LanguageTag[]
|
|
212
242
|
|
|
213
|
-
|
|
243
|
+
Get all primary language tags (one per language).
|
|
214
244
|
|
|
215
245
|
```typescript
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
{"tag": "ko-KR", "name": "Korean (South Korea)", "nativeName": "한국어 (대한민국)", "primary": true },
|
|
227
|
-
{"tag": "ru-RU", "name": "Russian (Russia)", "nativeName": "Русский (Россия)", "primary": true },
|
|
228
|
-
{"tag": "nl-NL", "name": "Dutch (Netherlands)", "nativeName": "Nederlands (Nederland)", "primary": true },
|
|
229
|
-
{"tag": "pt-PT", "name": "Portuguese (Portugal)", "nativeName": "Português (Portugal)", "primary": true },
|
|
230
|
-
{"tag": "ar-EG", "name": "Arabic (Egypt)", "nativeName": "العربية (مصر)", "primary": true }
|
|
231
|
-
]
|
|
246
|
+
import { getPrimaryTags } from 'bcp47-language-tags/en';
|
|
247
|
+
|
|
248
|
+
getPrimaryTags();
|
|
249
|
+
// [
|
|
250
|
+
// { tag: "zh-CN", name: "Chinese (Simplified)", nativeName: "简体中文", primary: true },
|
|
251
|
+
// { tag: "en-US", name: "English (United States)", nativeName: "English (United States)", primary: true },
|
|
252
|
+
// { tag: "es-ES", name: "Spanish (Spain)", nativeName: "Español (España)", primary: true },
|
|
253
|
+
// { tag: "de-DE", name: "German (Germany)", nativeName: "Deutsch (Deutschland)", primary: true },
|
|
254
|
+
// ...
|
|
255
|
+
// ]
|
|
232
256
|
```
|
|
233
257
|
|
|
258
|
+
## TypeScript Types
|
|
259
|
+
|
|
260
|
+
```typescript
|
|
261
|
+
import type {
|
|
262
|
+
BCP47LanguageTag,
|
|
263
|
+
BCP47LanguageTagName,
|
|
264
|
+
BCP47LanguageTags,
|
|
265
|
+
PrimaryLanguageTags
|
|
266
|
+
} from 'bcp47-language-tags';
|
|
267
|
+
|
|
268
|
+
// Language tag structure
|
|
269
|
+
type BCP47LanguageTag = {
|
|
270
|
+
tag: string; // BCP-47 language tag (e.g., "zh-CN")
|
|
271
|
+
name: string; // Localized language name
|
|
272
|
+
nativeName: string; // Native language name
|
|
273
|
+
primary: boolean; // Whether this is the primary tag for the language
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
// All supported language tag names
|
|
277
|
+
type BCP47LanguageTagName =
|
|
278
|
+
| "zh-CN" | "zh-TW" | "zh-HK" | "zh-MO" | "zh-SG" | "zh-CHS" | "zh-CHT"
|
|
279
|
+
| "en-US" | "en-GB" | "en-CA" | "en-AU" | "en-IN" | "en-ZA" | "en-NZ"
|
|
280
|
+
| "es-ES" | "es-MX" | "es-AR" | "es-CO" | "es-PE" | "es-VE" | "es-CL"
|
|
281
|
+
| "ar-EG" | "ar-SA" | "ar-DZ" | "ar-MA" | "ar-IQ" | "ar-SD" | "ar-YE"
|
|
282
|
+
| "ja-JP" | "ko-KR" | "ru-RU" | "de-DE" | "fr-FR" | "it-IT" | "pt-PT" | "pt-BR"
|
|
283
|
+
| "nl-NL" | "tr-TR" | "th-TH" | "el-GR" | "cs-CZ" | "sv-SE" | "hu-HU"
|
|
284
|
+
| "fi-FI" | "da-DK" | "nb-NO" | "nn-NO" | "he-IL" | "id-ID" | "ms-MY"
|
|
285
|
+
| "ro-RO" | "bg-BG" | "uk-UA" | "sk-SK" | "sl-SI" | "hr-HR" | "ca-ES"
|
|
286
|
+
| "lt-LT" | "lv-LV" | "et-EE" | "sq-AL" | "mk-MK" | "be-BY" | "is-IS"
|
|
287
|
+
| "gl-ES" | "eu-ES" | "af-ZA" | "sw-KE" | "ta-IN" | "te-IN" | "kn-IN"
|
|
288
|
+
| "mr-IN" | "gu-IN" | "pa-IN" | "kok-IN" | "sa-IN" | "ur-PK" | "fa-IR"
|
|
289
|
+
| "ka-GE" | "pl-PL" | "vi-VN" | "bn-BD" | "en-NG" | "am-ET" | "my-MM"
|
|
290
|
+
| "en-UG" | "fr-CD";
|
|
291
|
+
|
|
292
|
+
// Primary language tags
|
|
293
|
+
type PrimaryLanguageTags =
|
|
294
|
+
| "zh-CN" | "en-US" | "ja-JP" | "ko-KR" | "ru-RU"
|
|
295
|
+
| "es-ES" | "fr-FR" | "de-DE" | "it-IT" | "ar-EG"
|
|
296
|
+
| "pt-PT" | "nl-NL";
|
|
297
|
+
|
|
298
|
+
// Tags record type
|
|
299
|
+
type BCP47LanguageTags = Record<BCP47LanguageTagName, BCP47LanguageTag>;
|
|
300
|
+
```
|
|
234
301
|
|
|
302
|
+
## License
|
|
235
303
|
|
|
236
|
-
|
|
304
|
+
[MIT](LICENSE)
|
|
237
305
|
|
|
238
|
-
|
|
239
|
-
- [React State Library - AutoStore](https://zhangfisher.github.io/autostore/)
|
|
240
|
-
- [Terminal Interface Development Enhancement Library - Logsets](https://zhangfisher.github.io/logsets/)
|
|
241
|
-
- [Log Output Library - VoerkaLogger](https://zhangfisher.github.io/voerkalogger/)
|
|
242
|
-
- [Decorator Development - FlexDecorators](https://zhangfisher.github.io/flex-decorators/)
|
|
243
|
-
- [Finite State Machine Library - FlexState](https://zhangfisher.github.io/flexstate/)
|
|
244
|
-
- [Universal Function Tool Library - FlexTools](https://zhangfisher.github.io/flex-tools/)
|
|
245
|
-
- [CSS-IN-JS Library - FlexStyled](https://zhangfisher.github.io/flexstyled/)
|
|
246
|
-
- [VSCode Plugin for Adding Comments to JSON Files - json_comments_extension](https://github.com/zhangfisher/json_comments_extension)
|
|
247
|
-
- [Library for Developing Interactive Command Line Programs - mixcli](https://github.com/zhangfisher/mixcli)
|
|
248
|
-
- [Powerful String Interpolation Variable Processing Tool Library - flexvars](https://github.com/zhangfisher/flexvars)
|
|
249
|
-
- [Frontend Link Debugging Assistant Tool - yald](https://github.com/zhangfisher/yald)
|
|
250
|
-
- [Asynchronous Signal - asyncsignal](https://github.com/zhangfisher/asyncsignal)
|
|
251
|
-
- [bundle Vue styles into JavaScript - vite-plugin-vue-style-bundler ](https://github.com/zhangfisher/vite-plugin-vue-style-bundler)
|
|
252
|
-
- [Tree Component- LiteTree](https://github.com/zhangfisher/lite-tree)
|
|
306
|
+
## Related Projects
|
|
253
307
|
|
|
308
|
+
- [VoerkaI18n](https://zhangfisher.github.io/voerka-i18n/) - Internationalization solution for React/Vue/Nodejs/Solidjs
|
|
309
|
+
- [AutoStore](https://zhangfisher.github.io/autostore/) - React state management library
|
|
310
|
+
- [Logsets](https://zhangfisher.github.io/logsets/) - Terminal interface development enhancement library
|
|
311
|
+
- [VoerkaLogger](https://zhangfisher.github.io/voerkalogger/) - Log output library
|
|
312
|
+
- [FlexDecorators](https://zhangfisher.github.io/flex-decorators/) - Decorator development tools
|
|
313
|
+
- [FlexState](https://zhangfisher.github.io/flexstate/) - Finite state machine library
|
|
314
|
+
- [FlexTools](https://zhangfisher.github.io/flex-tools/) - Universal function utility library
|
|
315
|
+
- [FlexStyled](https://zhangfisher.github.io/flexstyled/) - CSS-IN-JS library
|