gpt4 book ai didi

node.js - nestjs-i18n 翻译 Handlebars 模板不起作用

转载 作者:行者123 更新时间:2023-12-05 05:40:07 28 4
gpt4 key购买 nike

Handlebars 模板未翻译 nestjs-i18n

应用程序模块.ts

@Global()
@Module({
imports: [
I18nModule.forRoot({
fallbackLanguage: 'en',
loaderOptions: {
path: path.join(__dirname, '/i18n/'),
watch: true,
},
resolvers: [
{ use: HeaderResolver, options: ['lang'] },
AcceptLanguageResolver,
],
}),
],
})
export class AppModule {}

mail.module.ts doc

@Module({
imports: [
ConfigModule.forRoot(),
MailerModule.forRootAsync({
inject: [I18nService],
useFactory: (i18n: I18nService) => ({
transport: {
host: process.env.MAILER_HOST,
port: +process.env.MAILER_PORT,
ignoreTLS: true,
secure: true,
auth: {
user: process.env.MAILER_USER,
pass: process.env.MAILER_PASS,
},
},
defaults: {
from: '"No Reply" <no-reply@localhost>',
},
preview: true,
template: {
dir: path.join(__dirname, '../resources/mail/templates/'),
adapter: new HandlebarsAdapter({ t: i18n.hbsHelper }),
options: {
strict: true,
},
},
}),
}),
],
providers: [MailService],
exports: [MailService],
})
export class MailModule {}

src/i18n/fr/common.json"HELLO": "Bonjour",

src/i18n/en/common.json"HELLO": "你好",

src/resources/mail/templates/test.hbs

<!doctype html>
<html>
<body>
<h1>{{ t 'common.HELLO' }}</h1>
</body>
</html>

使用 curl 调用 api 端点curl -X POST http://localhost:8009/api/message -H "lang: fr"

在电子邮件预览中我看到了

<!doctype html>
<html>
<body>
<h1>Hello</h1>
</body>
</html>

代替卓悦

其他地方的翻译(例如验证)工作正常

我做错了什么?

最佳答案

同样的问题。正如我在 src/services/i18n.service.ts 中所见,option.data.root 中需要属性 i18nLang。我认为这意味着我们应该在对象中提供属性 i18nLang,我们将其传递给模板。就我而言,我从 Controller 的 I18nContext 中获取 lang 值。

F.E.我以 tis 形式传递对象

  context: {
user,
i18nLang,
},

关于node.js - nestjs-i18n 翻译 Handlebars 模板不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72479804/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com