| 
				
					 | 
			2 лет назад | |
|---|---|---|
| .. | ||
| app | 2 лет назад | |
| config | 2 лет назад | |
| History.md | 2 лет назад | |
| LICENSE | 2 лет назад | |
| README.md | 2 лет назад | |
| app.js | 2 лет назад | |
| package.json | 2 лет назад | |
可以为你的应用提供多语言的特性
config/locales/*.js );\_\_, gettext 函数获取多语言文案;locale 修改语言显示,同时会记录到 Cookie,下次请求会用 Cookie 里面的语言方案。默认处于关闭状态,你需要在 config/plugin.js 开启它:
// config/plugin.js
exports.i18n = {
  enable: true,
  package: 'egg-i18n',
};
你可以修改 config/config.default.js 来设定 i18n 的配置项:
// config/config.default.js
exports.i18n = {
  // 默认语言,默认 "en_US"
  defaultLocale: 'zh-CN',
  // URL 参数,默认 "locale"
  queryField: 'locale',
  // Cookie 记录的 key, 默认:"locale"
  cookieField: 'locale',
  // Cookie 的 domain 配置,默认为空,代表当前域名有效
  cookieDomain: '',
  // Cookie 默认 `1y` 一年后过期, 如果设置为 Number,则单位为 ms
  cookieMaxAge: '1y',
};
其实大部分时候,你只需要修改一下 defaultLocale 设定默认的语言。
// config/locale/zh-CN.js
module.exports = {
  "Email": "邮箱",
  "Welcome back, %s!": "欢迎回来,%s!",
  "Hello %s, how are you today?": "你好 %s, 今天过得咋样?",
};
// config/locale/en-US.js
module.exports = {
  "Email": "Email",
};
或者也可以用 JSON 格式的文件:
// config/locale/zh-CN.json
{
  "email": "邮箱",
  "login": "帐号",
  "createdAt": "注册时间"
}
I18n 为你提供 __ (Alias: gettext) 函数,让你可以轻松获得 locale 文件夹下面的多语言文本。
NOTE: __ 是两个下划线哦!
ctx.__('{0} {0} {1} {1}'), ['foo', 'bar'])
ctx.gettext('{0} {0} {1} {1}'), ['foo', 'bar'])
=>
foo foo bar bar
module.exports = function* () {
  this.body = {
    message: this.__('Welcome back, %s!', this.user.name)
    // 或者使用 gettext,如果觉得 __ 不好看的话
    // message: this.gettext('Welcome back, %s!', this.user.name)
    user: this.user,
  };
};
<li>{{ __('Email') }}: {{ user.email }}</li>
<li>
  {{ __('Hello %s, how are you today?', user.name) }}
</li>
<li>
  {{ __('{0} {0} {1} {1}'), ['foo', 'bar']) }}
</li>
你可以用下面几种方式修改应用的当前语言(修改或会记录到 Cookie),下次请求直接用设定好的语言。
优先级从上到下: