Egg 国际化(I18n)
2020-02-06 14:11 更新
为了方便开发多语言应用,框架内置了国际化(I18n)支持,由 egg-i18n 插件提供。
默认语言
默认语言是 en-US。假设我们想修改默认语言为简体中文:
// config/config.default.js |
切换语言
我们可以通过下面几种方式修改应用的当前语言(修改后会记录到 locale 这个 Cookie),下次请求直接用设定好的语言。
优先级从高到低:
- query: /?locale=en-US
- cookie: locale=zh-TW
- header: Accept-Language: zh-CN,zh;q=0.5
如果想修改 query 或者 Cookie 参数名称:
// config/config.default.js |
编写 I18n 多语言文件
多种语言的配置是独立的,统一存放在 config/locale/*.js 下。
- config/locale/ |
不仅对于应用目录生效,在框架,插件的 config/locale 目录下同样生效。
注意单词拼写,是 locale 不是 locals。
例如:
// config/locale/zh-CN.js |
或者也可以用 JSON 格式的文件:
// config/locale/zh-CN.json |
获取多语言文本
我们可以使用 __ (Alias: gettext) 函数获取 locale 文件夹下面的多语言文本。
注意: __ 是两个下划线
以上面配置过的多语言为例:
ctx.__('Email') |
如果文本中含有 %s,%j 等 format 函数,可以按照 util.format() 类似的方式调用:
// config/locale/zh-CN.js |
同时支持数组下标占位符方式,例如:
// config/locale/zh-CN.js |
Controller 中使用
class HomeController extends Controller { |
View 中使用
假设我们使用的模板引擎是 Nunjucks
<li>{{ __('Email') }}: {{ user.email }}</li> |
以上内容是否对您有帮助:
← Egg 安全相关
更多建议: