考虑到我使用“express”,“i18n”,“express-session”,“cookie-parse”,adicionally可以使用“npm locale”或类似的情况下需要它。可以说我有这样的路线:
"/", "/es/" , "/de/"
"/terms", "/es/terms", "/de/terms"
"/privacy", "/es/privacy", "/de/privacy"
...
如果用户在他的cookie或标题上有“es”这样的语言,我应该如何设置可维护和自动链接...在页面上显示“es”版本页面的链接并考虑设置变量使用URL,以防我必须更新链接,我只会改变一次。
我想到的一件事是:
设置在像“es.json”这样的i18n文件中
{
"url_home" : "/es/" ,
"url_terms" : "/es/terms",
...
}
然后其他文件就像“de.json”
{
"url_home" : "/de/" ,
"url_terms" : "/de/terms",
...
}
我这是正确的方法吗?或者我应该遵循推荐的任何其他方式?
答案 0 :(得分:0)
我现在会说几次测试,最好的办法是(并且我不建议使用i18n)为网址创建中间件。我创建了这样的:
使用以下命令创建url.json文件:
{
"en": {
"home": "/",
"terms": "/terms"
"es": {
"home": "/es",
"terms": "/es/terms"
}
然后我使用我的方法取决于cookie中的语言(这是路由条款(我使用点模板)区域设置是我的cookie,所以在这种情况:
const urls = require('urls.json');
...
app.get('/:lang/terms', function(req, res) {
if (req.params.lang === 'es') {
res.render('terms',{
// get urls for locale cookie language
urls: urls[req.locale],
});
}
...
//more languages
});
然后在我的模板中简单地说:
<li><a href="{%= it.urls.terms%}">{%=it.__n('help')%}</a></li>