【发布时间】:2019-03-16 03:46:22
【问题描述】:
我正在开发一个使用 nodeJs、handlebars 和 expressJs 框架的项目。我使用i18n-express 模块添加更改语言功能。当我们要更改语言时,此模块在 url 末尾添加查询字符串。现在的问题是,当我将一页移动到另一页时,查询字符串被删除并丢失了他的状态。那么我怎样才能保持语言状态?如果用户选择法语,那么所有页面都以法语打开。这就是我要的。
代码:
var i18n = require("i18n-express");
app.use(i18n({
translationsPath: path.join(__dirname, 'lang'), // <--- use here. Specify translations files path.
siteLangs: ["ar","en","cn","fr","ge","he","hu","it","ja","ko","es","ru"],
cookieLangName : 'ulang',
textsVarName: 'translation'
}));
更改语言的链接
<a href="#!" id="{{icon}}" onclick=" return changeLanguage(this)"></a>
Onclick 功能更改语言
function changeLanguage(event){
$('#languages img').attr('src','/images/flag-icons/'+event.id+'.png');
var url = window.location.href;
url = url.split("?")[0];
url += '?clang='+event.id;
window.location.href = url;
localStorage.setItem("clang", '?clang='+event.id); //event.id returns locale name such as en, ar, sp, fr etc.
//console.log(url);
}
【问题讨论】:
-
您能否在codesandbox 中创建一个您遇到的“双刷新”问题的最小示例(来自以下解决方案)?
标签: javascript node.js express internationalization