bcp47-language-tags 1.1.0 → 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.
Files changed (371) hide show
  1. package/README.md +262 -200
  2. package/dist/ar.d.mts +68 -3
  3. package/dist/ar.d.ts +68 -3
  4. package/dist/ar.js +1 -1
  5. package/dist/ar.mjs +1 -1
  6. package/dist/cs.d.mts +833 -0
  7. package/dist/cs.d.ts +833 -0
  8. package/dist/cs.js +1 -0
  9. package/dist/cs.mjs +1 -0
  10. package/dist/da.d.mts +833 -0
  11. package/dist/da.d.ts +833 -0
  12. package/dist/da.js +1 -0
  13. package/dist/da.mjs +1 -0
  14. package/dist/de.d.mts +68 -3
  15. package/dist/de.d.ts +68 -3
  16. package/dist/de.js +1 -1
  17. package/dist/de.mjs +1 -1
  18. package/dist/el.d.mts +833 -0
  19. package/dist/el.d.ts +833 -0
  20. package/dist/el.js +1 -0
  21. package/dist/el.mjs +1 -0
  22. package/dist/en.d.mts +68 -3
  23. package/dist/en.d.ts +68 -3
  24. package/dist/en.js +1 -1
  25. package/dist/en.mjs +1 -1
  26. package/dist/es.d.mts +68 -3
  27. package/dist/es.d.ts +68 -3
  28. package/dist/es.js +1 -1
  29. package/dist/es.mjs +1 -1
  30. package/dist/fi.d.mts +833 -0
  31. package/dist/fi.d.ts +833 -0
  32. package/dist/fi.js +1 -0
  33. package/dist/fi.mjs +1 -0
  34. package/dist/flags/ad.svg +150 -0
  35. package/dist/flags/af-ZA.svg +81 -0
  36. package/dist/flags/ag.svg +14 -0
  37. package/dist/flags/ai.svg +29 -0
  38. package/dist/flags/am.svg +5 -0
  39. package/dist/flags/ao.svg +13 -0
  40. package/dist/flags/aq.svg +5 -0
  41. package/dist/flags/ar-AE.svg +6 -0
  42. package/dist/flags/ar-BH.svg +4 -0
  43. package/dist/flags/ar-DZ.svg +5 -0
  44. package/dist/flags/ar-EG.svg +38 -0
  45. package/dist/flags/ar-IQ.svg +10 -0
  46. package/dist/flags/ar-JO.svg +16 -0
  47. package/dist/flags/ar-KW.svg +13 -0
  48. package/dist/flags/ar-LB.svg +15 -0
  49. package/dist/flags/ar-LY.svg +13 -0
  50. package/dist/flags/ar-MA.svg +4 -0
  51. package/dist/flags/ar-OM.svg +115 -0
  52. package/dist/flags/ar-QA.svg +4 -0
  53. package/dist/flags/ar-SA.svg +25 -0
  54. package/dist/flags/ar-SD.svg +13 -0
  55. package/dist/flags/ar-SY.svg +6 -0
  56. package/dist/flags/ar-TN.svg +4 -0
  57. package/dist/flags/ar-YE.svg +7 -0
  58. package/dist/flags/arab.svg +109 -0
  59. package/dist/flags/as.svg +72 -0
  60. package/dist/flags/asean.svg +13 -0
  61. package/dist/flags/aw.svg +186 -0
  62. package/dist/flags/ax.svg +18 -0
  63. package/dist/flags/az.svg +8 -0
  64. package/dist/flags/ba.svg +12 -0
  65. package/dist/flags/bb.svg +6 -0
  66. package/dist/flags/be-BY.svg +18 -0
  67. package/dist/flags/bf.svg +7 -0
  68. package/dist/flags/bg-BG.svg +5 -0
  69. package/dist/flags/bi.svg +15 -0
  70. package/dist/flags/bj.svg +14 -0
  71. package/dist/flags/bl.svg +5 -0
  72. package/dist/flags/bm.svg +97 -0
  73. package/dist/flags/bn-BD.svg +4 -0
  74. package/dist/flags/bn.svg +36 -0
  75. package/dist/flags/bq.svg +5 -0
  76. package/dist/flags/bs.svg +13 -0
  77. package/dist/flags/bt.svg +89 -0
  78. package/dist/flags/bv.svg +13 -0
  79. package/dist/flags/bw.svg +7 -0
  80. package/dist/flags/cc.svg +19 -0
  81. package/dist/flags/cd.svg +5 -0
  82. package/dist/flags/cefta.svg +13 -0
  83. package/dist/flags/cf.svg +15 -0
  84. package/dist/flags/cg.svg +12 -0
  85. package/dist/flags/ci.svg +7 -0
  86. package/dist/flags/ck.svg +9 -0
  87. package/dist/flags/cm.svg +15 -0
  88. package/dist/flags/cp.svg +7 -0
  89. package/dist/flags/cs-CZ.svg +5 -0
  90. package/dist/flags/cv.svg +13 -0
  91. package/dist/flags/cw.svg +14 -0
  92. package/dist/flags/cx.svg +15 -0
  93. package/dist/flags/cy.svg +6 -0
  94. package/dist/flags/da-DK.svg +5 -0
  95. package/dist/flags/de-AT.svg +4 -0
  96. package/dist/flags/de-CH.svg +9 -0
  97. package/dist/flags/de-DE.svg +5 -0
  98. package/dist/flags/dg.svg +130 -0
  99. package/dist/flags/div-MV.svg +6 -0
  100. package/dist/flags/dj.svg +13 -0
  101. package/dist/flags/dm.svg +152 -0
  102. package/dist/flags/eac.svg +48 -0
  103. package/dist/flags/eh.svg +16 -0
  104. package/dist/flags/el-GR.svg +16 -0
  105. package/dist/flags/en-AU.svg +8 -0
  106. package/dist/flags/en-BZ.svg +145 -0
  107. package/dist/flags/en-CA.svg +4 -0
  108. package/dist/flags/en-GB.svg +7 -0
  109. package/dist/flags/en-IE.svg +7 -0
  110. package/dist/flags/en-IN.svg +25 -0
  111. package/dist/flags/en-JM.svg +8 -0
  112. package/dist/flags/en-NZ.svg +36 -0
  113. package/dist/flags/en-PH.svg +6 -0
  114. package/dist/flags/en-TT.svg +5 -0
  115. package/dist/flags/en-US.svg +9 -0
  116. package/dist/flags/en-ZA.svg +17 -0
  117. package/dist/flags/en-ZW.svg +21 -0
  118. package/dist/flags/er.svg +8 -0
  119. package/dist/flags/es-AR.svg +32 -0
  120. package/dist/flags/es-BO.svg +673 -0
  121. package/dist/flags/es-CL.svg +13 -0
  122. package/dist/flags/es-CO.svg +7 -0
  123. package/dist/flags/es-CR.svg +7 -0
  124. package/dist/flags/es-CU.svg +13 -0
  125. package/dist/flags/es-DO.svg +121 -0
  126. package/dist/flags/es-EC.svg +138 -0
  127. package/dist/flags/es-ES.svg +544 -0
  128. package/dist/flags/es-GT.svg +204 -0
  129. package/dist/flags/es-HN.svg +18 -0
  130. package/dist/flags/es-MX.svg +382 -0
  131. package/dist/flags/es-NI.svg +129 -0
  132. package/dist/flags/es-PA.svg +14 -0
  133. package/dist/flags/es-PE.svg +4 -0
  134. package/dist/flags/es-PR.svg +13 -0
  135. package/dist/flags/es-PY.svg +157 -0
  136. package/dist/flags/es-SV.svg +593 -0
  137. package/dist/flags/es-UY.svg +28 -0
  138. package/dist/flags/es-VE.svg +26 -0
  139. package/dist/flags/es-ct.svg +4 -0
  140. package/dist/flags/es-ga.svg +187 -0
  141. package/dist/flags/es-pv.svg +5 -0
  142. package/dist/flags/et-EE.svg +5 -0
  143. package/dist/flags/et.svg +14 -0
  144. package/dist/flags/eu.svg +28 -0
  145. package/dist/flags/fa-IR.svg +219 -0
  146. package/dist/flags/fj.svg +120 -0
  147. package/dist/flags/fk.svg +90 -0
  148. package/dist/flags/fm.svg +11 -0
  149. package/dist/flags/fo.svg +12 -0
  150. package/dist/flags/fr-BE.svg +7 -0
  151. package/dist/flags/fr-FR.svg +5 -0
  152. package/dist/flags/ga.svg +7 -0
  153. package/dist/flags/gb-eng.svg +5 -0
  154. package/dist/flags/gb-nir.svg +132 -0
  155. package/dist/flags/gb-sct.svg +4 -0
  156. package/dist/flags/gb-wls.svg +9 -0
  157. package/dist/flags/gd.svg +27 -0
  158. package/dist/flags/ge.svg +6 -0
  159. package/dist/flags/gf.svg +5 -0
  160. package/dist/flags/gg.svg +9 -0
  161. package/dist/flags/gh.svg +6 -0
  162. package/dist/flags/gi.svg +32 -0
  163. package/dist/flags/gl.svg +4 -0
  164. package/dist/flags/gm.svg +14 -0
  165. package/dist/flags/gn.svg +7 -0
  166. package/dist/flags/gp.svg +5 -0
  167. package/dist/flags/gq.svg +23 -0
  168. package/dist/flags/gs.svg +133 -0
  169. package/dist/flags/gu.svg +19 -0
  170. package/dist/flags/gw.svg +13 -0
  171. package/dist/flags/gy.svg +9 -0
  172. package/dist/flags/he-IL.svg +14 -0
  173. package/dist/flags/hm.svg +8 -0
  174. package/dist/flags/hr-HR.svg +58 -0
  175. package/dist/flags/ht.svg +116 -0
  176. package/dist/flags/hu-HU.svg +7 -0
  177. package/dist/flags/ic.svg +7 -0
  178. package/dist/flags/id-ID.svg +4 -0
  179. package/dist/flags/im.svg +36 -0
  180. package/dist/flags/io.svg +130 -0
  181. package/dist/flags/is-IS.svg +12 -0
  182. package/dist/flags/it-IT.svg +7 -0
  183. package/dist/flags/ja-JP.svg +11 -0
  184. package/dist/flags/je.svg +62 -0
  185. package/dist/flags/kg.svg +4 -0
  186. package/dist/flags/kh.svg +61 -0
  187. package/dist/flags/ki.svg +36 -0
  188. package/dist/flags/km.svg +16 -0
  189. package/dist/flags/kn.svg +14 -0
  190. package/dist/flags/ko-KP.svg +15 -0
  191. package/dist/flags/ko-KR.svg +24 -0
  192. package/dist/flags/ky.svg +103 -0
  193. package/dist/flags/kz.svg +36 -0
  194. package/dist/flags/la.svg +12 -0
  195. package/dist/flags/lc.svg +8 -0
  196. package/dist/flags/li.svg +43 -0
  197. package/dist/flags/lk.svg +22 -0
  198. package/dist/flags/lr.svg +14 -0
  199. package/dist/flags/ls.svg +8 -0
  200. package/dist/flags/lt-LT.svg +7 -0
  201. package/dist/flags/lu.svg +5 -0
  202. package/dist/flags/lv-LV.svg +6 -0
  203. package/dist/flags/mc.svg +6 -0
  204. package/dist/flags/md.svg +70 -0
  205. package/dist/flags/me.svg +116 -0
  206. package/dist/flags/mf.svg +5 -0
  207. package/dist/flags/mg.svg +7 -0
  208. package/dist/flags/mh.svg +7 -0
  209. package/dist/flags/mk-MK.svg +5 -0
  210. package/dist/flags/ml.svg +7 -0
  211. package/dist/flags/mm.svg +12 -0
  212. package/dist/flags/mn.svg +14 -0
  213. package/dist/flags/mp.svg +86 -0
  214. package/dist/flags/mq.svg +5 -0
  215. package/dist/flags/mr.svg +6 -0
  216. package/dist/flags/ms-MY.svg +26 -0
  217. package/dist/flags/ms.svg +29 -0
  218. package/dist/flags/mt.svg +58 -0
  219. package/dist/flags/mu.svg +8 -0
  220. package/dist/flags/mw.svg +10 -0
  221. package/dist/flags/mz.svg +21 -0
  222. package/dist/flags/na.svg +16 -0
  223. package/dist/flags/nb-NO.svg +7 -0
  224. package/dist/flags/nc.svg +13 -0
  225. package/dist/flags/ne-NP.svg +13 -0
  226. package/dist/flags/ne.svg +6 -0
  227. package/dist/flags/nf.svg +9 -0
  228. package/dist/flags/ng.svg +6 -0
  229. package/dist/flags/nl-NL.svg +5 -0
  230. package/dist/flags/nr.svg +12 -0
  231. package/dist/flags/nu.svg +10 -0
  232. package/dist/flags/pc.svg +33 -0
  233. package/dist/flags/pf.svg +19 -0
  234. package/dist/flags/pg.svg +9 -0
  235. package/dist/flags/pl.svg +6 -0
  236. package/dist/flags/pm.svg +5 -0
  237. package/dist/flags/pn.svg +53 -0
  238. package/dist/flags/ps.svg +15 -0
  239. package/dist/flags/pt-BR.svg +45 -0
  240. package/dist/flags/pt-PT.svg +57 -0
  241. package/dist/flags/pw.svg +11 -0
  242. package/dist/flags/re.svg +5 -0
  243. package/dist/flags/ro-RO.svg +7 -0
  244. package/dist/flags/rs.svg +292 -0
  245. package/dist/flags/ru-RU.svg +5 -0
  246. package/dist/flags/rw.svg +13 -0
  247. package/dist/flags/sb.svg +13 -0
  248. package/dist/flags/sc.svg +7 -0
  249. package/dist/flags/sh-ac.svg +689 -0
  250. package/dist/flags/sh-hl.svg +164 -0
  251. package/dist/flags/sh-ta.svg +76 -0
  252. package/dist/flags/sh.svg +7 -0
  253. package/dist/flags/sj.svg +7 -0
  254. package/dist/flags/sk-SK.svg +9 -0
  255. package/dist/flags/sl-SI.svg +18 -0
  256. package/dist/flags/sl.svg +7 -0
  257. package/dist/flags/sm.svg +75 -0
  258. package/dist/flags/sn.svg +8 -0
  259. package/dist/flags/so.svg +11 -0
  260. package/dist/flags/sq-AL.svg +5 -0
  261. package/dist/flags/sr.svg +6 -0
  262. package/dist/flags/ss.svg +8 -0
  263. package/dist/flags/st.svg +16 -0
  264. package/dist/flags/sv-FI.svg +5 -0
  265. package/dist/flags/sv-SE.svg +4 -0
  266. package/dist/flags/sw-KE.svg +23 -0
  267. package/dist/flags/sx.svg +56 -0
  268. package/dist/flags/sz.svg +34 -0
  269. package/dist/flags/tc.svg +50 -0
  270. package/dist/flags/td.svg +7 -0
  271. package/dist/flags/tf.svg +15 -0
  272. package/dist/flags/tg.svg +14 -0
  273. package/dist/flags/th-TH.svg +7 -0
  274. package/dist/flags/tj.svg +22 -0
  275. package/dist/flags/tk.svg +5 -0
  276. package/dist/flags/tl.svg +13 -0
  277. package/dist/flags/tm.svg +204 -0
  278. package/dist/flags/to.svg +10 -0
  279. package/dist/flags/tr-TR.svg +8 -0
  280. package/dist/flags/tv.svg +9 -0
  281. package/dist/flags/tz.svg +13 -0
  282. package/dist/flags/ug.svg +30 -0
  283. package/dist/flags/uk-UA.svg +6 -0
  284. package/dist/flags/um.svg +9 -0
  285. package/dist/flags/un.svg +16 -0
  286. package/dist/flags/ur-PK.svg +15 -0
  287. package/dist/flags/uz.svg +30 -0
  288. package/dist/flags/va.svg +190 -0
  289. package/dist/flags/vc.svg +8 -0
  290. package/dist/flags/vg.svg +59 -0
  291. package/dist/flags/vi-VN.svg +11 -0
  292. package/dist/flags/vi.svg +28 -0
  293. package/dist/flags/vu.svg +21 -0
  294. package/dist/flags/wf.svg +5 -0
  295. package/dist/flags/ws.svg +7 -0
  296. package/dist/flags/xk.svg +5 -0
  297. package/dist/flags/xx.svg +4 -0
  298. package/dist/flags/yt.svg +5 -0
  299. package/dist/flags/zh-CN.svg +11 -0
  300. package/dist/flags/zh-HK.svg +8 -0
  301. package/dist/flags/zh-MO.svg +9 -0
  302. package/dist/flags/zh-SG.svg +13 -0
  303. package/dist/flags/zh-TW.svg +11 -0
  304. package/dist/flags/zm.svg +27 -0
  305. package/dist/flags.js +722 -0
  306. package/dist/flags.mjs +722 -0
  307. package/dist/fr.d.mts +68 -3
  308. package/dist/fr.d.ts +68 -3
  309. package/dist/fr.js +1 -1
  310. package/dist/fr.mjs +1 -1
  311. package/dist/hi.d.mts +833 -0
  312. package/dist/hi.d.ts +833 -0
  313. package/dist/hi.js +1 -0
  314. package/dist/hi.mjs +1 -0
  315. package/dist/index.d.mts +26 -3
  316. package/dist/index.d.ts +29 -4
  317. package/dist/index.js +1 -1
  318. package/dist/index.mjs +1 -1
  319. package/dist/it.d.mts +68 -3
  320. package/dist/it.d.ts +68 -3
  321. package/dist/it.js +1 -1
  322. package/dist/it.mjs +1 -1
  323. package/dist/jp.d.mts +68 -3
  324. package/dist/jp.d.ts +68 -3
  325. package/dist/jp.js +1 -1
  326. package/dist/jp.mjs +1 -1
  327. package/dist/ko.d.mts +68 -3
  328. package/dist/ko.d.ts +68 -3
  329. package/dist/ko.js +1 -1
  330. package/dist/ko.mjs +1 -1
  331. package/dist/nl.d.mts +68 -3
  332. package/dist/nl.d.ts +68 -3
  333. package/dist/nl.js +1 -1
  334. package/dist/nl.mjs +1 -1
  335. package/dist/pl.d.mts +833 -0
  336. package/dist/pl.d.ts +833 -0
  337. package/dist/pl.js +1 -0
  338. package/dist/pl.mjs +1 -0
  339. package/dist/pt.d.mts +68 -3
  340. package/dist/pt.d.ts +68 -3
  341. package/dist/pt.js +1 -1
  342. package/dist/pt.mjs +1 -1
  343. package/dist/ru.d.mts +68 -3
  344. package/dist/ru.d.ts +68 -3
  345. package/dist/ru.js +1 -1
  346. package/dist/ru.mjs +1 -1
  347. package/dist/sv.d.mts +833 -0
  348. package/dist/sv.d.ts +833 -0
  349. package/dist/sv.js +1 -0
  350. package/dist/sv.mjs +1 -0
  351. package/dist/th.d.mts +833 -0
  352. package/dist/th.d.ts +833 -0
  353. package/dist/th.js +1 -0
  354. package/dist/th.mjs +1 -0
  355. package/dist/tr.d.mts +833 -0
  356. package/dist/tr.d.ts +833 -0
  357. package/dist/tr.js +1 -0
  358. package/dist/tr.mjs +1 -0
  359. package/dist/utils/index.d.mts +16 -0
  360. package/dist/utils/index.d.ts +16 -0
  361. package/dist/utils/index.js +1 -0
  362. package/dist/utils/index.mjs +1 -0
  363. package/dist/vi.d.mts +833 -0
  364. package/dist/vi.d.ts +833 -0
  365. package/dist/vi.js +1 -0
  366. package/dist/vi.mjs +1 -0
  367. package/dist/zh.d.mts +68 -3
  368. package/dist/zh.d.ts +68 -3
  369. package/dist/zh.js +1 -1
  370. package/dist/zh.mjs +1 -1
  371. package/package.json +78 -9
package/README.md CHANGED
@@ -1,253 +1,315 @@
1
1
  # bcp47-language-tags
2
2
 
3
- list of language tags and typescript type for the `BCP-47` standard.
3
+ [![npm version](https://badge.fury.io/js/bcp47-language-tags.svg)](https://www.npmjs.com/package/bcp47-language-tags)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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
- ### List of language tags
33
+ ### Language Tags List
34
+
35
+ Import language tags with localized names:
8
36
 
9
37
  ```typescript
10
- import { tags } from 'bcp-language-tags/en';
38
+ import { tags } from 'bcp47-language-tags/en';
11
39
 
12
- // list of language tags
13
- for(let tag of tags) {
14
- console.log(tag);
40
+ for (let tag of tags) {
41
+ console.log(tag);
15
42
  }
16
- // output:
17
- // {"tag": "zh-CN", "name": "Chinese (Simplified)", "nativeName": "简体中文", "primary": true},
18
- // {"tag": "zh-TW", "name": "Chinese (Traditional - Taiwan)", "nativeName": "繁體中文 (臺灣)"},
19
- // {"tag": "zh-HK", "name": "Chinese (Traditional - Hong Kong)", "nativeName": "繁體中文(香港)"},
20
- // {"tag": "zh-MO", "name": "Chinese (Traditional - Macau)", "nativeName": "繁體中文 (Traditional Chinese - Macau)"},
21
- // {"tag": "zh-SG", "name": "Chinese (Simplified - Singapore)", "nativeName": "简体中文 (Simplified Chinese - Singapore)"},
22
- // {"tag": "zh-CHS", "name": "Chinese (Simplified)", "nativeName": "简体中文"},
23
- // {"tag": "zh-CHT", "name": "Chinese (Traditional)", "nativeName": "繁體中文 (Traditional Chinese)"},
24
- // {"tag": "en-US", "name": "English (United States)", "nativeName": "English (United States)", "primary": true},
25
- // {"tag": "es-CR", "name": "Spanish (Costa Rica)", "nativeName": "Español (Costa Rica)"},
26
- // {"tag": "ar-EG", "name": "Arabic (Egypt)", "nativeName": "العربية (مصر)", "primary": true},
27
- // {"tag": "ar-SA", "name": "Arabic (Saudi Arabia)", "nativeName": "العربية (السعودية)"},
28
- // {"tag": "ar-DZ", "name": "Arabic (Algeria)", "nativeName": "العربية (الجزائر)"},
29
- // {"tag": "ar-MA", "name": "Arabic (Morocco)", "nativeName": "العربية (المغرب)"},
30
- // {"tag": "ar-IQ", "name": "Arabic (Iraq)", "nativeName": "العربية (العراق)"},
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
- // output:
39
- // "zh-CN": {"tag": "zh-CN", "name": "简体中文", "nativeName": "简体中文", "primary": true},
40
- // "zh-TW": {"tag": "zh-TW", "name": "繁体中文(台湾)", "nativeName": "繁體中文 (臺灣)"},
41
- // "zh-CHS": {"tag": "zh-CHS", "name": "简体中文", "nativeName": "简体中文"},
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
- ### List of all language tags
65
+ **Supported Languages:**
71
66
 
72
67
  ```typescript
73
- import allTags from 'bcp-language-tags';
74
- // {
75
- // "zh-CN": {
76
- // "zh-CN": {"tag": "zh-CN", "name": "简体中文", "nativeName": "简体中文", "primary": true},
77
- // "zh-TW": {"tag": "zh-TW", "name": "繁体中文(台湾)", "nativeName": "繁體中文 (臺灣)"},
78
- // "zh-CHS": {"tag": "zh-CHS", "name": "简体中文", "nativeName": "简体中文"},
79
- // "zh-CHT": {"tag": "zh-CHT", "name": "繁体中文", "nativeName": "繁體中文 (Traditional Chinese)"},
80
- // "en-US": {"tag": "en-US", "name": "英语(美国)", "nativeName": "English (United States)", "primary": true},
81
- // ....
82
- // },
83
- // "en-US": {
84
- // "zh-CN": {"tag": "zh-CN", "name": "Chinese (Simplified)", "nativeName": "简体中文", "primary": true},
85
- // "zh-TW": {"tag": "zh-TW", "name": "Chinese (Traditional - Taiwan)", "nativeName": "繁體中文 (臺灣)"},
86
- // "zh-HK": {"tag": "zh-HK", "name": "Chinese (Traditional - Hong Kong)", "nativeName": "繁體中文(香港)"},
87
- // "zh-MO": {"tag": "zh-MO", "name": "Chinese (Traditional - Macau)", "nativeName": "繁體中文 (Traditional Chinese - Macau)
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
- ### TypeScript
141
+ Get all language tags organized by primary language:
96
142
 
97
143
  ```typescript
98
- import type { BCP47LanguageTag,BCP47LanguageTagName } from 'bcp-language-tags/zh';
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
- export type BCP47LanguageTags = Record<BCP47LanguageTagName,BCP47LanguageTag>
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
- ### Mapper
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
- mapping bcp47 language tag to other language tag.
170
+ Import SVG flag files directly (works with Vite and other bundlers that support SVG imports):
145
171
 
146
172
  ```typescript
147
- import baidu from 'bcp47-language-tags/mapper/baidu';
148
- import google from 'bcp47-language-tags/mapper/google';
149
- import xunfei from 'bcp47-language-tags/mapper/xunfei';
150
- import tencent from 'bcp47-language-tags/mapper/tencent';
151
- import google from 'bcp47-language-tags/mapper/google';
152
- import iso6391 from 'bcp47-language-tags/mapper/iso639-1';
153
- import iso6392 from 'bcp47-language-tags/mapper/iso639-2';
154
- import iso6393 from 'bcp47-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
- get language tag.
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
- // import { getTag,getTags } from 'bcp-language-tags/zh';
171
- import { getTag } from 'bcp-language-tags/en';
172
-
173
- // {"tag": "zh-CN", "name": "Chinese (Simplified)", "nativeName": "简体中文", "primary": true}
174
- getTag('zh-CN')
175
- // {"tag": "zh-TW", "name": "Chinese (Traditional - Taiwan)", "nativeName": "繁體中文 (臺灣)"}
176
- getTag('zh-TW')
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(tag: string): BCP47LanguageTag[]
225
+ ### getTags(language?: string | string[]): BCP47LanguageTag[]
188
226
 
189
- list of language tags.
227
+ Get all tags or filter by language code(s).
190
228
 
191
229
  ```typescript
192
- // return all language tags
193
- getTags("zh")
194
- // output:
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
- list of primary language tags.
243
+ Get all primary language tags (one per language).
214
244
 
215
245
  ```typescript
216
- // return primary language tags
217
- getPrimaryTags()
218
- [
219
- {"tag": "zh-CN", "name": "Chinese (Simplified)", "nativeName": "简体中文", "primary": true},
220
- {"tag": "en-US", "name": "English (United States)", "nativeName": "English (United States)", "primary": true}
221
- {"tag": "es-ES", "name": "Spanish (Spain)", "nativeName": "Español (España)", "primary": true },
222
- {"tag": "de-DE", "name": "German (Germany)", "nativeName": "Deutsch (Deutschland)", "primary": true },
223
- {"tag": "fr-FR", "name": "French (France)", "nativeName": "Français (France)", "primary": true },
224
- {"tag": "it-IT", "name": "Italian (Italy)", "nativeName": "Italiano (Italia)", "primary": true },
225
- {"tag": "ja-JP", "name": "Japanese (Japan)", "nativeName": "日本語 (日本)", "primary": true },
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
- # Recommendation
304
+ [MIT](LICENSE)
237
305
 
238
- - [Internationalization Solution for React/Vue/Nodejs/Solidjs - VoerkaI18n](https://zhangfisher.github.io/voerka-i18n/)
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