Release 3.0.1 [skip ci] 3.0.1 (2025-01-12)Bug Fixes not allow to override the app.locals.__ method (#15) (6e8447c)
Release 3.0.1
[skip ci]
app.locals.__
可以为你的应用提供多语言的特性
config/locales/*.js
\_\_
gettext
locale
默认处于关闭状态,你需要在 config/plugin.ts 开启它:
config/plugin.ts
// config/plugin.ts export default { i18n: { enable: true, package: '@eggjs/i18n', }, };
你可以修改 config/config.default.ts 来设定 i18n 的配置项:
config/config.default.ts
// config/config.default.ts export default { 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 设定默认的语言。
defaultLocale
// config/locale/zh-CN.ts export default { "Email": "邮箱", "Welcome back, %s!": "欢迎回来,%s!", "Hello %s, how are you today?": "你好 %s, 今天过得咋样?", };
// config/locale/en-US.ts export default { "Email": "Email", };
或者也可以用 JSON 格式的文件:
// config/locale/zh-CN.json { "email": "邮箱", "login": "帐号", "createdAt": "注册时间" }
I18n 为你提供 __ (Alias: gettext) 函数,让你可以轻松获得 locale 文件夹下面的多语言文本。
__
NOTE: __ 是两个下划线哦!
ctx.__ = function (key, value[, value2, ...])
ctx.__ = function (key, values)
ctx.__('{0} {0} {1} {1}'), ['foo', 'bar']); ctx.gettext('{0} {0} {1} {1}'), ['foo', 'bar']); => foo foo bar bar
export default ctx => { ctx.body = { message: ctx.__('Welcome back, %s!', ctx.user.name) // 或者使用 gettext,如果觉得 __ 不好看的话 // message: this.gettext('Welcome back, %s!', ctx.user.name) user: ctx.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),下次请求直接用设定好的语言。
优先级从上到下:
/?locale=en-US
locale=zh-TW
Accept-Language: zh-CN,zh;q=0.5
Please open an issue here.
MIT
Made with contributors-img.
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
@eggjs/i18n
可以为你的应用提供多语言的特性
功能
config/locales/*.js);\_\_,gettext函数获取多语言文案;locale修改语言显示,同时会记录到 Cookie,下次请求会用 Cookie 里面的语言方案。配置
默认处于关闭状态,你需要在
config/plugin.ts开启它:你可以修改
config/config.default.ts来设定 i18n 的配置项:其实大部分时候,你只需要修改一下
defaultLocale设定默认的语言。编写你的 I18n 多语言文件
或者也可以用 JSON 格式的文件:
使用 I18n 函数获取语言文本
I18n 为你提供
__(Alias:gettext) 函数,让你可以轻松获得 locale 文件夹下面的多语言文本。ctx.__ = function (key, value[, value2, ...]): 类似 util.format 接口ctx.__ = function (key, values): 支持数组下标占位符方式,如Controllers 下的使用示例
View 文件下的使用示例
修改应用的默认语言
你可以用下面几种方式修改应用的当前语言(修改或会记录到 Cookie),下次请求直接用设定好的语言。
优先级从上到下:
/?locale=en-USlocale=zh-TWAccept-Language: zh-CN,zh;q=0.5Questions & Suggestions
Please open an issue here.
License
MIT
Contributors
Made with contributors-img.