简介
ember-i18n-macros 是一个用于 Ember.js 应用的国际化库,它提供了一系列的工具,让我们在编写 Ember 应用的时候非常容易地做国际化。
常规的国际化方案通常是将不同语言的字符串保存在不同的 JSON 文件中,但是使用 ember-i18n-macros 可以让我们直接使用字符串模板的方式进行国际化,让国际化变得更加简单。
安装
安装最新版本的 ember-i18n-macros 非常简单,只需要通过 npm 来安装即可。
npm install ember-i18n-macros --save
使用
使用 ember-i18n-macros 进行国际化主要有两步:
- 定义国际化模板
- 使用模板
这里我们假设我们需要使用 ember-i18n-macros 对一个按钮的文字进行国际化。
定义国际化模板
在定义国际化模板之前,我们需要先在应用中使用 ember-i18n-macros。
在 app.js 中,我们可以这样定义:
import i18n from 'ember-i18n-macros'; // ... myI18n = i18n.get('t');
这样,我们就可以通过 myI18n 来定义国际化模板了。
对于一个按钮的文字,我们可以定义如下模板:
myI18n('buttonText', { en: 'Submit', zh: '提交' });
这个模板通过键 "buttonText" 来标识,之后是一个对象,对象的每个属性就是一个语言代码和对应的文本。
使用模板
定义好国际化模板之后,就可以在按钮上使用它了。
-- -------------------- ---- ------- ------ --------- ---- ------------------- ------ - -------- - ---- ---------------- ------ ---- ---- -------------------- ------ ------- ------------------ ----------- ------------------- - ------ -------------------------------- -- ---
在这个组件中,我们通过 computed 属性来计算按钮的文字,然后返回 myI18n('buttonText') 的调用结果即可。
处理变量
除了简单的文本之外,一些国际化模板中包含复杂的语句,这时候我们就需要处理一些变量。
例如,我们可能需要对一个订单的状态进行国际化,并加上对应的图标:
-- -------------------- ---- ------- -------------------- - --- ------- --------- --- ------- -------- --- -- --- ---------- ----------------------- ---------- - --- ---------- - ------------------------ ------ ------------ - ---- ------ ------ --- --------- ---------- ------------- ------------- ---- ------- ------ --- --------- ---------- ------------- -------------- ---- ----------- ------ --- --------- ---------------- ---- ----------- ------ --- --------- ---------------- ------------- -------------- ---- ----------- ------ --- --------- ---------------- ------------- ------------ - --- -- --- ----------- ----------------------- ---------- - --- ---------- - ------------------------ ------ -------------------- - --- ------ ---------------------- ------ ------------ --- ------ ---------------------- ------ ----------- -------------- --
在这个例子中,我们在国际化模板中使用了两个变量:一个是图标,另一个是订单状态。
我们通过定义 orderIcon 来获取一个与订单状态对应的图标,并在 orderState 函数中将这个图标作为变量传入到国际化模板中。
整个过程就是这样,除了国际化模板的定义方式,其他方面基本与一般的 Ember.js 开发差不多,所以相对来说比较容易上手。
总结
这篇文章主要介绍了如何使用 npm 包 ember-i18n-macros 进行 Ember.js 应用的国际化,其中介绍了如何定义国际化模板、如何处理变量等等,希望能够对大家有所帮助,同时也希望大家能够多多尝试,发掘其更多的潜力。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e17a563576b7b1ecaa5