我有一个javascript确认。我的文字是英文的,但是如果我要更改我的 asp.net mvc 项目的语言/文化,请确认它仍然是英文。
我可以手动控制它,只需编写两个 javascript 方法(两种语言),但我认为它并不那么干净。如果我有超过 3 种语言,它会更脏。
你能给我一些提示,我该如何解决我的问题?
对我来说最好的方法是确认一些元标记或我可以从资源文件中给出我的文本的地方。
我有一个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
。