npm install think-i18n-2 --save
// thinkjs config/extend.js
const createI18n = require('think-i18n-2');
const path = require('path');
let directory = path.resolve(__dirname, './locales')
module.exports = [
...
createI18n({
app: think.app, // 如果为空,__ 就不会被自动 `assign` 到 `think-view` 实例
localesMapping(locales: any) {
return 'en';
},
extension: '.json',
locales: ['en', 'zh'],
directory
})
];
如果需要再controller 里面获取 I18n 的实例或者当前的 locale,可以调用
async indexAction(){
let locale;//不传默认取
const __ = this.getI18n(locale).__;
const locale = this.getLocale();
}
如果使用了 think-view 模块, think-i18n 会自动调用注入一个实例到当前模板实例里,类似: this.assign('', I18n..bind(I18n)), 这样在模板里面就可以使用直接使用 i18n 暴露的接口。
{{ __('some key') }}