我有一个节点 js 项目并添加了 i18n 包用于本地化,它在开发中运行良好,
但是当我从 dist 文件夹运行同一个项目时,所有 JSON 文件都是空的。
我在 src 文件夹中有一个
locales
文件夹,其中包含 `en_us.json` 和 `dede.json`。我认为这是与打字稿或目录问题相关的问题,请任何人检查。
这是代码。
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 文件
您必须复制 dist 文件夹中的 locales json 文件才能使其工作。 您可以在运行构建时添加此过程。
npm install --save-dev copyfiles
"build": "tsc && copyfiles -u 1 -e \"**/*.ts\" \"./src/locales/**/*.json\" \"./dist\" --flatten",
这会将 src/locales 中的 locales 文件夹复制到您的 dist 文件夹中。