后端参数配置、国际化的用法

2018-11-20 08:15:25

EggJS提供了项目级别参数配置国际化特性。Cabloy在EggJS提供的特性基础之上进行了扩展,实现了模块级别参数配置国际化特性。

  1. 模块可以单独实现自己的参数配置国际化
  2. 项目级别参数配置国际化可以覆盖模块级别参数配置国际化

参数配置

定义参数

src/module/test-todo/backend/src/config/config.js

module.exports = appInfo => {
  const config = {};

  config.message = 'hello world';

  return config;
};

使用参数

src/module/test-todo/backend/src/controller/test.js

async echo() {
- const message = 'hello world';
+ const message = this.ctx.config.message;
  this.ctx.success(message);
}

覆盖参数

使用项目级别的参数覆盖模块级别的参数,从而将hello-world改为hello-world!

src/backend/config/config.default.js

...
// modules
config.modules = {
  'test-todo': {
    message: 'hello world!',
  },
};
...

国际化

定义语言资源

Cabloy默认语言是en-us,如果需要支持中文,就需要添加zh-cn资源文件

src/module/test-todo/backend/src/config/locale/zh-cn.js

module.exports = {
  ...
  'hello world!': '世界,您好!',
};

使用语言资源

Cabloy通过方法ctx.text根据客户端的locale配置动态使用指定的语言资源

src/module/test-todo/backend/src/controller/test.js

async echo() {
- const message = this.ctx.config.message;
+ const message = this.ctx.text(this.ctx.config.message);
  this.ctx.success(message);
}

如何修改客户端的locale配置?

  • 打开首页,依次进入我的->信息,修改本地化属性,保存,然后刷新页面即可

覆盖语言资源

使用项目级别的语言资源覆盖模块级别的语言资源,从而将世界,您好!改为您好,世界!

src/backend/config/locale/zh-cn.js

module.exports = {
  'hello world!': '您好,世界!',
};


评论: