无法将nestjs-i18n与自定义结构一起使用

问题描述 投票:0回答:1

我的项目结构是这样的:

root
├── backend (nest cli)
├── frontend
└── shared
    └── translations
        ├── en.json
        ├── no.json
        └── nl.json

我正在尝试使用“nestjs-i18n”。他们在文档中的文件夹结构是:

...
src
└── i18n
    ├── en
    │   ├── events.json
    │   └── test.json
    └── nl
        ├── events.json
        └── test.json

是否可以按照我的语言文件结构来实现这个包? 如果需要遵循他们的结构和文件夹“i18n”,这实际上在他们的文档中令人困惑。

我已将模块导入到 app.module.ts 中:

@Module({
  imports: [
    I18nModule.forRoot({
      fallbackLanguage: 'en',
      loaderOptions: {
        path: join(process.cwd(), '../shared/translations'),
        watch: true,
      },
      resolvers: [TenantLanguageResolver],
    }),
  ],

但是每当我尝试像这样访问它时:

 const trans = await i18n.t('roles_help_text');

出现错误:

ERROR [I18nService] Translation "roles_help_text" in "en" does not exist.
internationalization nestjs
1个回答
0
投票

nestjs-i18n 目前不提供自定义加载器。所以我遵循了它严格的文件和文件夹命名结构。我没有使用任何自定义解析器来解析语言。只需将语言文件添加到资产数组中,如下所示:

// nest-cli.json

assets": [
  {
    "include": "../../shared/translations/en.json",
    "watchAssets": true,
    "outDir": "dist/i18n/en"
  },
  {
    "include": "../../shared/translations/no.json",
    "watchAssets": true,
    "outDir": "dist/i18n/no"
  }
]

运行 Nest 应用程序后,您将在

dist
文件夹中找到语言文件,就像 Nestjs-i18n 包希望它们在它们自己的嵌套文件夹中一样:

dist
└── i18n
    ├── en
    │   └── en.json
    │── no
        └── no.json
© www.soinside.com 2019 - 2024. All rights reserved.