阅读ASP.NET MVC项目的当前文化和JavaScript中的更改语言确认
-
01-10-2019 - |
题
我有一个JavaScript确认。我的文字是英文的,但是如果我要更改ASP.NET MVC项目的语言/文化,请确认仍然是英语。
我可以手动控制它,只编写两种JavaScript方法(两种语言),但我认为这不是那么干净。而且,如果我有3种以上的语言,它将更加肮脏。
您能给我一些提示,我该如何解决我的问题?
对我来说,最好的是确认一些元数据或在哪里可以从资源文件中删除文字。
解决方案
<script language="javascript">
var confirmMessage = "<%= localizedConfirmMessage %>";
// use confirmMessage when showing confirm popup
...
</script>
其他提示
您只能使用字符串进行单独的JS文件,例如:
var MultilanguageStrings = {
'savingConfirmation': {
'en': 'Do you want to save changes?',
'pl': 'Czy chcesz zapisać zmiany?'
},
'fatalError': {
'en': 'Fatal error occured.',
'pl': 'Wystąpił krytyczny błąd.'
},
'get': function (key, lang) {
if (this[key] === undefined)
return 'Error. There is no such message.';
if (lang == 'en' && this[key]['en'] === undefined)
return 'Error. There is no such message.';
if (this[key][lang] === undefined)
return this.get(key, 'en');
return this[key][lang];
}
};
而不是将动态生成的JS文件包含在设置哪种语言的信息中:
var currentLanguage = 'en';
您还可以通过不同的方式获取此信息(例如AJAX),但是上面的解决方案具有此优势,您的代码已经加载,并且 currentLanguage
设置。
然后在您的代码中放置:
...
if (confirm(MultilanguageStrings.get('savingConfirmation', currentLanguage))) {
...
您可能需要将所有内容包装到1个全局变量中,这将更加整洁。还要记住不要覆盖方法 MultilanguageStrings.get
.
不隶属于 StackOverflow