NestJS学习记录-i18n国际化、Excel导出

一、I18n国际化

使用nestjs-i18n实现后端国际化

文档地址:https://nestjs-i18n.comicon-default.png?t=O83Ahttps://nestjs-i18n.com/#

1、安装 

        npm install --save nestjs-i18n

        nestjs-i18n默认使用I18nJsonLoader 读取json文件

2、在项目src文件夹下,创建i18n文件夹,多个不同语言创建多个不同文件夹,例如:

我在我项目src文件夹下面创建三个文件夹,分别是英文、简体中文、繁体中文,并在文件夹下各创建了一个tips.sjon文件,内容结构如下:

3、在项目中导入nestjs-i18n 模块

I18nModule.forRootAsync({
      useFactory: (configService: ConfigService) => ({
        fallbackLanguage: configService.get<string>('FALLBACK_LANGUAGE'),
        loaderOptions: {
          path: join(__dirname, '/i18n/'),
          watch: true,
        },
        typesOutputPath: join(__dirname, '../src/generated/i18n.generated.ts'),
      }),
      resolvers: [
        { use: QueryResolver, options: ['lang'] },
        new HeaderResolver(['x-lang']),
      ],
      inject: [ConfigService],
    })

在app.module.ts文件中,imports 中添加如上代码,动态导入I18nModule。

fallbackLanguage:当没有语言被解析时,使用此处配置语言

loaderOptions:语言配置的读取路径

typesOutputPath:nestjs-i18n可以生成类型,使用时可以链式带出,这里配置的是类型输出的文件路径,如下图:

注意:运行项目时,还要在nest-cli.json 配置i18n文件输出

resolvers:配置获取当前上下文使用的语言类型,我这里随便配置了两种类型。

QueryResolver:['lang'] ,前端调用时,传入lang=zh-CN,就表使用简体中文

HeaderResolver:['x-lang'],当前端调用时,在headers中添加key:x-lang,value:zh-CN就代表使用简体中文

下面是官网列出的方式:

4、使用

我在app.controller.ts中加入以下代码:

@Public()
  @Get('testi18n')
  getI18nHello() {
    return this.appService.getI18nHello()
  }

在app.service.ts中加入以下代码:

注入I18nService

constructor(private readonly i18n: I18nService<I18nTranslations>) { }

其中 I18nTranslations

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值