Я пытаюсь создать многоязычный веб-сайт в узле JS, используя i18n.экспресс и руль.
Совместное использование кода внизу, который я пытался реализовать, используя следующий код.
https://gist.github.com/mashpie/5246334
app.js
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const i18n = require('i18n');
const hbs = require('hbs');
const app = express();
i18n.configure({
locales: ['en', 'ja'],
defaultLocale : ' ja ' ,
cookie: 'locale',
directory: "" + __dirname + "/locales"
});
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'public/static/')));
app.set('views', "" + __dirname + "/views");
app.set('view engine', 'hbs');
app.engine('hbs', hbs.__express);
app.use(cookieParser());
app.use(i18n.init);
hbs.registerHelper('__', function () {
return i18n.__.apply(this, arguments);
});
hbs.registerHelper('__n', function () {
return i18n.__n.apply(this, arguments);
});
const aboutRouter = require('./routes/about');
app.use('/about', aboutRouter);
/* This section should always be in the end! */
app.use((req, res) => {
res.status(404).sendFile(path.resolve(__dirname, 'public', '404.html'));
});
module.exports = app;
locales / en.json
{
"text to test": "text to test on eng"
}
locales / ja.json
{
"text to test": "text to test on jap"
}
about.hbs
<a href="/" class="btn btn-orange rounded mb-4">{{{__ "text to test"}}}</a>
routs / about.js
const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
res.render('about');
});
module.exports = router;
Теперь, когда я пытаюсь запустить код.нет ошибок.файл about.hbs читается успешно.Но «текст для проверки» принимается как строка, но его значения не анализируются из файлов JSON.
Теперь мои сомнения: -
как следует анализировать файлы JSON?
Как браузер узнает, какиеJSON позвонить?как узнать параметр lang?