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

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

参数配置

1. 定义参数

src/suite-vendor/test-party/modules/test-party/backend/src/config/config.js

  1. 1module.exports = appInfo => {
  2. 2 const config = {};
  3. 3
  4. 4 config.message = 'Hello World';
  5. 5
  6. 6 return config;
  7. 7};

2. 使用参数

src/suite-vendor/test-party/modules/test-party/backend/src/controller/kitchen-sink/guide.js

  1. 1async echo2() {
  2. 2 const message = this.ctx.config.message;
  3. 3 this.ctx.success(message);
  4. 4}

3. 覆盖参数

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

src/backend/config/config.default.js

  1. 1// modules
  2. 2config.modules = {
  3. 3 'test-party': {
  4. 4 message: 'Hello World!',
  5. 5 },
  6. 6};

国际化

1. 定义语言资源

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

src/suite-vendor/test-party/modules/test-party/backend/src/config/locale/zh-cn.js

  1. 1module.exports = {
  2. 2 'Hello World': '世界,您好',
  3. 3};

2. 使用语言资源

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

src/suite-vendor/test-party/modules/test-party/backend/src/controller/kitchen-sink/guide.js

  1. 1async echo3() {
  2. 2 const message = this.ctx.text('Hello World');
  3. 3 this.ctx.success(message);
  4. 4}

3. 覆盖语言资源

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

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

  1. 1module.exports = {
  2. 2 'Hello World': '您好,世界',
  3. 3};