更新内容
Breakings
- 数据不再接入一级链条,需要从chain上获取(这种直接使用的场景也较少)
- const value = i18n.button.submit; + const value = i18n.chain.button.submit;
- 删除下划线
_
,内置方法调整回一级链条
- i18n._.locale('zh'); + i18n.locale('zh');
- 删除
useI18n
,改成从实例获取chain
function App: FC = () => { - useI18n(i18n); + const chain = i18n.use(); return <div>{chain.button.submit}</div>; }
- 删除高阶组件
I18nProvider
,改成从实例获取hoc
class App extends Component { render() { + const { chain } = this.props; - return <div>{i18n.button.submit}</div>; + return <div>{chain.button.submit}</div>; } } -export default I18nProvider(i18n)(App); +export default i18n.hoc(App);
Features
- 新增方法
translate
,与t
一致,都是用于翻译字符串模板 - 新增字符串模板生成工具
// 跟直接写字符串一样,但是这边是有提示的 const key = i18n.literal.button.submit; // key === 'button.submit' // 可以使用translate方法获得真实的数据 const value = i18n.translate(key); // value === 'Submit'
------------------------------------
介绍
说到国际化,你是否也常年奔波于复制粘贴的重复劳动里?像 t('home:submit')
t('common:something:success')
这些没有任何提示,需要脑子去记,不仅开发效率低,而且键盘敲快一点就容易打错字母,重点是你基本发现不了这种错误。
我更喜欢有提示的代码,利用typescript
,我发明了一种使用链式操作的i18n组件,并拥有所有提示,就类似 i18n.common.something.success
这种,代码可以自动补全,保证不会写错。
兼容性
IE | Edge | Chrome | Firefox | Safari | Node |
---|---|---|---|---|---|
9+ | 12+ | 5+ | 4+ | 5+ | * |