i18next in nodes express 只显示键而不显示语言字符串

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

我从几天开始就尝试了 nodes express 我使用了一些使用 i18next 的教程 但不要发现我的失败。

我只得到密钥而不是 der Languagestring。 整整两天,我想我的新人会看到我的失败。

这是我在 Visual Studio 2022 中的项目 enter image description here

我会展示我的文件:

app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

// Internationalisation
const i18next = require('i18next');
const i18backend = require('i18next-fs-backend');
const i18middleware = require('i18next-http-middleware');

i18next
    .use(i18backend)
    .use(i18middleware.LanguageDetector)
    .init({
        backend: {
            loadPath: __dirname + '/resources/locales/{{lng}}/{{ns}}.json'
        },
        fallbackLng: 'de',
        preload: ['de']
    });

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
const { response } = require('express');
const { Console } = require('console');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));                       // Middelware start
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(i18middleware.handle(i18next));                                 // Internationalisation

app.use('/', indexRouter);
app.use('/users', usersRouter);

我的 index.js

var express = require('express');
var router = express.Router();



router.get('/imp', function (req, res, next) {
    res.render('impressumpage',
        {
            title: "-" + req.t('impressum'),
            title2: 'Impressum',
            textDescript: 'Hier gehts um das Impressum und was man damit anfangen kann ',
            impress: 'Impressum',
            dataSafe: 'Datenschutzerkl\u00e4rung'
        });
});

和我的 tranlation.json { "appTitle": "VT usw.", "dataprotec": "数据保护", "impressum": "印象德" }

我只拿到钥匙,为什么?

我期待语言:这里 -Impressum de

express internationalization nodes i18next
1个回答
0
投票

谢谢你的建议

我试过了,可惜没成功

首先我没有用过{{ns}}

我用过 loadPath: __dirname + '/resources/locales/{{lng}}/translation.json'

和 loadPath: __dirname + '/resources/locales/de/translation.json'

和 loadPath: './locales/resources/locales/{{lng}}/translation.json'

没有任何效果。

为了使用你的建议,我使用

在 app.js 中

i18next.init({
ns: ['translation'],
defaultNS: 'translation'

})

在 index.js 中

title: "-" + req.t('impressum', { ns: 'translation' })
© www.soinside.com 2019 - 2024. All rights reserved.