我有一個JavaScript確認。我的文本是英文的,但是如果我將改變我的asp.net mvc項目的語言/文化,確認是源還是英文的。閱讀asp.net mvc項目的當前文化,並在javascript中更改語言確認
我可以手動控制它,只是寫兩個javascript方法(對於兩種語言),但它並沒有這麼幹淨,我認爲。如果我將有超過3種語言,它會變得更加骯髒。
您能否給我一些提示我該如何解決我的問題?
對我來說最好的方式是確認一些元標籤或某些東西,我可以從資源文件中提供我的文本。
我有一個JavaScript確認。我的文本是英文的,但是如果我將改變我的asp.net mvc項目的語言/文化,確認是源還是英文的。閱讀asp.net mvc項目的當前文化,並在javascript中更改語言確認
我可以手動控制它,只是寫兩個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
。
這就是我通常所做的,所以我知道它的作品:) – Nealv 2010-09-06 14:11:53