intl-lightly
A lightweight localization library.
Getting Started
-
Install
pnpm i intl-lightly
npm i intl-lightly
yarn add intl-lighly
-
Initialize
import intl from 'inty-lightly'
import enLocale from './languages/en-US'
import zhLocale from './languages/zh-US'
intl.init({
locales:{
'en-US':enLocale
'zh-CN':zhLocale
},
currentLocales:'en-US'
})
const zhCN = await import('./languages/zh-US')
intl.add('zh-CN',zhCN)
Features
- Not only
key
=>string
but key
=>object
const enUS= {
hi:'Hi',
buttons:{
submit:'Submit',
cancel:'Cancel'
}
}
- Multiple way to get value
intl.get('hi')
intl.get('buttons.submit')
intl.select( s =>{
return {
user:s.user,
submitBtn:s.buttons.submit
}
})
- Template support
const enUS = {
greet:'Hi,{userName}!'
formTip:{
input:'Please input {label}',
min:"Can't smaller than {min}"
}
}
intl.getReplaced('greet',{userName:'Neo'})
const formTip = intl.get('formTip')
intl.replace(formTip.input,{label:'First Name'})
Typesafe Usege
-
declare language
const enLocale = {
hi: 'Hi',
table:{
createdAt: 'Created At'
}
user:{
name: 'Name'
}
}
export type EnLocal = typeof enLocale
export default enLocale
-
declare typesafe select function
import intl from 'intl-lightly'
import { EnLocal } from '../locales/en-gb'
export function pickLocale<T extends (local: EnLocal) => any>(pick: T) {
return intl.select<EnLocal, ReturnType<T>>(pick)
}
-
Use pickLocale
in component
export function Profile(){
const locale = pickLocale(s=>s.user)
return (<div>
<div>{locale.name}</div>
</div>)
}