npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

i18n-use

v1.0.0

Published

#### 介绍 i18n 国际化解决方案

Downloads

28

Readme

i18n-use

介绍

i18n-use 是一套多语言国际化解决方案。具有简单易用、适配任何前端框架、零依赖、精悍强大、高度定制化。压缩后仅不到 2KB,性能优越等特性。当你不需要很复杂的翻译功能,这款通用的语言工具包是不二之选。

安装

npm i i18n-use  -S

# yarn 安装
yarn add i18n-use  -S

快速上手

Vite 框架

main.tsx 入口文件

import "./index.css";
import { createRoot } from "react-dom/client";
import App from "./App.tsx";
import "./i18n"; // 引入多语言

createRoot(document.getElementById("root")!).render(<App />);

i18n目录

// index.ts
import { initI18n, getModuleByMetaGlob } from "i18n-use";

initI18n({
  //locales: getModuleByMetaGlob(import.meta.globEager('./modules/**/*.json')), // vite4以下低版本
  locales: getModuleByMetaGlob(import.meta.glob('./modules/**/*.json', { eager: true })), // 必填项(其他都非必填)
  defaultLocale: 'in', // 默认语言(非必填)
  useLocales: ['en', 'zh', "in"] // 使用的哪些语言(非必填)
}); // 初始化i18n
modules 翻译文件目录
i18n
├─ index.ts        # 初始化多语言
└─ modules
    ├─ login # 登陆页     
      ├─ zh.json   # 中文翻译文件
      ├─ en.json   # 英文翻译文件
      └─ in.json   # 印尼翻译文件
    └─ home # 首页      
      ├─ zh.json   # 中文翻译文件
      ├─ en.json   # 英文翻译文件
      └─ in.json   # 印尼翻译文件
首页 home 的翻译文件
// zh.json - 中文
{
  "姓名": "姓名",
}
// en.json - 英语
{
  "姓名": "Name",
}
// in.json - 印尼语
{
  "姓名": "Nama",
}

页面中使用

// App.tsx
import { useLang, setLanguage, getLanguage } from "i18n-use";

function App() {

  const { 
    t, 
    defaultLocale, 
    locale, 
    locales,
    localeId,
    useLocales 
  } = useLang("home"); // 如果是多个翻译文件,可配置 useLang(["home", "common"]);

  useEffect(()=> {
    const lang = getLanguage(); 
    console.log(lang) // 可通过 getLanguage 方法获取当前语言
    console.log(defaultLocale) // 或通过 defaultLocale 也可以获取
    console.log(locale) // 获取当前语言的所有翻译内容
    console.log(locales) // 获取所有语言的翻译内容
    console.log(localeId) // 获取cookie中的语言标识符
    console.log(useLocales) // 获取正在使用的语言集合,例如["zh", "en", "in"]
  },[])

  return (
    <div>
      <h3>i18n-use 使用例子</h3>
      <span>当前的翻译:{t("姓名")}</span>
      <span>当前的语言:{defaultLocale}</span>
      <span onClick={()=> setLanguage(defaultLocale == "zh" ? "in" : "zh")}>切换语言</span>
    </div>
  )
}
export default App;

Webpack 框架

main.tsx 入口文件

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import "./i18n"; // 引入多语言

ReactDOM.createRoot(document.getElementById("app") as HTMLElement).render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);


createRoot(document.getElementById("root")!).render(<App />);

i18n目录

// index.tsx
import { initI18n, getModuleByRequireContext } from "i18n-use";

initI18n({
  locales: getModuleByRequireContext(require.context('./modules/', true, /\.json/)),
  defaultLocale: 'in', // 默认语言
  useLocales: ['en', 'zh', "in"] // 使用的哪些语言
}); // 初始化i18n
modules 翻译文件目录 (同上)

options 参数说明

locales

  • Type: Object
  • Default: {}

所有的翻译文件内容。

defaultLocale

  • Type: string
  • Default: zh

默认的语言。

locale

  • Type: Object
  • Default: {}

当前选中的语言翻译内容(例如选中英文en,返回英文翻译内容)。

localeId

  • Type: string
  • Default: languageId

存在 cookie 里的语言标识符。

useLocales

  • Type: Array
  • Default: languageCodes

使用到的语言集合(默认集常用的 167 种语言,可参考下面的语言代码)。

常见的 i18n(国际化)语言代码:

languageCodes

en:英语(English)
zh:中文(Chinese)
fr:法语(French)
de:德语(German)
es:西班牙语(Spanish)
it:意大利语(Italian)
ja:日语(Japanese)
ko:韩语(Korean)
pt:葡萄牙语(Portuguese)
ru:俄语(Russian)
ar:阿拉伯语(Arabic)
这只是一小部分常见的语言代码,实际上还有许多其他语言的代码,例如:
nl:荷兰语(Dutch)
sv:瑞典语(Swedish)
th:泰语(Thai)
tr:土耳其语(Turkish)
语言代码通常遵循 ISO 639 标准。在实际的国际化项目中,根据具体的需求,可能需要支持更多种类的语言。
您是在进行国际化相关的开发工作吗?
i18n(国际化)所有的语言代码
以下是较为完整的 ISO 639 语言代码列表,但并非涵盖所有可能的情况:
af:阿非利卡语(Afrikaans)
sq:阿尔巴尼亚语(Albanian)
am:阿姆哈拉语(Amharic)
ar:阿拉伯语(Arabic)
hy:亚美尼亚语(Armenian)
as:阿萨姆语(Assamese)
ay:艾马拉语(Aymara)
az:阿塞拜疆语(Azerbaijani)
bm:班巴拉语(Bambara)
ba:巴什基尔语(Bashkir)
eu:巴斯克语(Basque)
be:白俄罗斯语(Belarusian)
bn:孟加拉语(Bengali)
bh:比哈尔语(Bihari languages)
bi:比斯拉马语(Bislama)
bs:波斯尼亚语(Bosnian)
br:布列塔尼语(Breton)
bg:保加利亚语(Bulgarian)
my:缅甸语(Burmese)
ca:加泰罗尼亚语(Catalan)
ch:查莫罗语(Chamorro)
ce:车臣语(Chechen)
ny:切瓦语(Chewa)
zh:中文(Chinese)
cv:楚瓦什语(Chuvash)
kw:康沃尔语(Cornish)
co:科西嘉语(Corsican)
cr:克里语(Cree)
hr:克罗地亚语(Croatian)
cs:捷克语(Czech)
da:丹麦语(Danish)
dv:迪维希语(Divehi)
nl:荷兰语(Dutch)
dz:宗喀语(Dzongkha)
en:英语(English)
eo:世界语(Esperanto)
et:爱沙尼亚语(Estonian)
ee:埃维语(Ewe)
fo:法罗语(Faroese)
fj:斐济语(Fijian)
fi:芬兰语(Finnish)
fr:法语(French)
fy:弗里西语(Frisian)
ga:爱尔兰语(Irish)
gd:苏格兰盖尔语(Scottish Gaelic)
gl:加利西亚语(Galician)
lg:卢干达语(Ganda)
ka:格鲁吉亚语(Georgian)
de:德语(German)
ki:基库尤语(Kikuyu)
el:希腊语(Greek)
gn:瓜拉尼语(Guarani)
gu:古吉拉特语(Gujarati)
ht:海地克里奥尔语(Haitian Creole)
ha:豪萨语(Hausa)
he:希伯来语(Hebrew)
hz:赫雷罗语(Herero)
hi:印地语(Hindi)
ho:希里莫图语(Hiri Motu)
hu:匈牙利语(Hungarian)
is:冰岛语(Icelandic)
ig:伊博语(Igbo)
id:印尼语(Indonesian)
ia:国际语(Interlingua)
ie:国际辅助语(Interlingue)
iu:因纽特语(Inuktitut)
ik:伊努皮克语(Inupiaq)
ga:爱尔兰语(Irish)
it:意大利语(Italian)
ja:日语(Japanese)
jv:爪哇语(Javanese)
kl:格陵兰语(Kalaallisut)
kn:卡纳达语(Kannada)
kr:卡努里语(Kanuri)
ks:克什米尔语(Kashmiri)
kk:哈萨克语(Kazakh)
km:高棉语(Khmer)
ki:基库尤语(Kikuyu)
rw:卢旺达语(Kinyarwanda)
ko:韩语(Korean)
ku:库尔德语(Kurdish)
kj:宽亚玛语(Kwanyama)
lo:老挝语(Lao)
la:拉丁语(Latin)
lv:拉脱维亚语(Latvian)
li:林堡语(Limburgan)
ln:林加拉语(Lingala)
lt:立陶宛语(Lithuanian)
lb:卢森堡语(Luxembourgish)
mk:马其顿语(Macedonian)
mg:马达加斯加语(Malagasy)
ms:马来语(Malay)
ml:马拉雅拉姆语(Malayalam)
mt:马耳他语(Maltese)
mi:毛利语(Maori)
mr:马拉地语(Marathi)
mh:马绍尔语(Marshallese)
mn:蒙古语(Mongolian)
na:瑙鲁语(Nauru)
nv:纳瓦霍语(Navajo)
nd:北恩德贝勒语(North Ndebele)
ne:尼泊尔语(Nepali)
ng:恩敦加语(Ndonga)
nb:书面挪威语(Norwegian Bokmål)
nn:新挪威语(Norwegian Nynorsk)
no:挪威语(Norwegian)
ii:四川彝语(Nuosu)
oc:奥克语(Occitan)
oj:奥吉布瓦语(Ojibwa)
or:奥里亚语(Oriya)
om:奥罗莫语(Oromo)
os:奥塞梯语(Ossetian)
pa:旁遮普语(Punjabi)
pi:巴利语(Pali)
fa:波斯语(Persian)
pl:波兰语(Polish)
pt:葡萄牙语(Portuguese)
ps:普什图语(Pashto)
qu:克丘亚语(Quechua)
rm:罗曼什语(Romansh)
ro:罗马尼亚语(Romanian)
ru:俄语(Russian)
sm:萨摩亚语(Samoan)
sg:桑戈语(Sango)
sa:梵语(Sanskrit)
sc:撒丁语(Sardinian)
sr:塞尔维亚语(Serbian)
sn:修纳语(Shona)
sd:信德语(Sindhi)
si:僧伽罗语(Sinhala)
sk:斯洛伐克语(Slovak)
sl:斯洛文尼亚语(Slovenian)
so:索马里语(Somali)
st:南索托语(Southern Sotho)
es:西班牙语(Spanish)
su:巽他语(Sundanese)
sw:斯瓦希里语(Swahili)
ss:斯威士语(Swati)
sv:瑞典语(Swedish)
tl:他加禄语(Tagalog)
ty:塔希提语(Tahitian)
tg:塔吉克语(Tajik)
ta:泰米尔语(Tamil)
tt:鞑靼语(Tatar)
te:泰卢固语(Telugu)
th:泰语(Thai)
bo:藏语(Tibetan)
ti:提格里尼亚语(Tigrinya)
to:汤加语(Tonga)
tn:茨瓦纳语(Tswana)
tr:土耳其语(Turkish)
tk:土库曼语(Turkmen)
tw:特威语(Twi)
ug:维吾尔语(Uyghur)
uk:乌克兰语(Ukrainian)
ur:乌尔都语(Urdu)
uz:乌兹别克语(Uzbek)
ve:文达语(Venda)
vi:越南语(Vietnamese)
vo:沃拉普克语(Volapük)
cy:威尔士语(Welsh)
wa:瓦隆语(Walloon)
wo:沃洛夫语(Wolof)
xh:科萨语(Xhosa)
yi:意第绪语(Yiddish)
yo:约鲁巴语(Yoruba)
zu:祖鲁语(Zulu)

更新记录

| 版本号 | 更新时间 | 作者 | 更新说明 | | ------ | --------- | ------ | ------------------------------------------------------------------------------------------------------------------- | | 1.0.0 | 2024.8.07 | 月如影 | 初始化 |