i18n 本地化在 nodejs 构建版本中不起作用

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

我有一个节点 js 项目并添加了 i18n 包用于本地化,它在开发中运行良好,

但是当我从 dist 文件夹运行同一个项目时,所有 JSON 文件都是空的。

我在 src 文件夹中有一个

locales
文件夹,其中包含 `en_us.json` 和 `dede.json`。
当我在 npm build 之后运行时,我看到带有两个 JSON 文件的 locales 文件夹,但都是空的。

我认为这是与打字稿或目录问题相关的问题,请任何人检查。

这是代码。

import i18n from 'i18n';
import path from 'path';
import { setLocale } from './config/locale/locale.js';

  /**  Localization   */
  const __dirname = path.dirname(new URL(import.meta.url).pathname);
  /** Configure localization */
  i18n.configure({
    locales: ['en_us', 'de_de'],
    defaultLocale: 'en_us',
    directory: __dirname + '/locales',
  });
  app.use(i18n.init);
  app.use(setLocale);

  // routes
  app.get('/', async function (req: Request, res: Response) {
    res.json({ message: i18n.__('server-running') });
  });
  app.use(routes);
  app.use('*', notFoundHandler);
  app.use(errorHandler);

我尝试了不同的路径,但没有成功。

我期待 dist 文件夹中也应该有内容相同的 JSON 文件

node.js localization internationalization i18next
1个回答
0
投票

您必须复制 dist 文件夹中的 locales json 文件才能使其工作。 您可以在运行构建时添加此过程。

  1. 添加包复制文件
npm install --save-dev copyfiles
  1. 在 package.json 脚本中添加
    "build": "tsc && copyfiles -u 1 -e \"**/*.ts\" \"./src/locales/**/*.json\" \"./dist\" --flatten",

这会将 src/locales 中的 locales 文件夹复制到您的 dist 文件夹中。

© www.soinside.com 2019 - 2024. All rights reserved.