2010-09-06 42 views
0

我有一個JavaScript確認。我的文本是英文的,但是如果我將改變我的asp.net mvc項目的語言/文化,確認是源還是英文的。閱讀asp.net mvc項目的當前文化,並在javascript中更改語言確認

我可以手動控制它,只是寫兩個javascript方法(對於兩種語言),但它並沒有這麼幹淨,我認爲。如果我將有超過3種語言,它會變得更加骯髒。

您能否給我一些提示我該如何解決我的問題?

對我來說最好的方式是確認一些元標籤或某些東西,我可以從資源文件中提供我的文本。

回答

1
<script language="javascript"> 
var confirmMessage = "<%= localizedConfirmMessage %>"; 

// use confirmMessage when showing confirm popup 
... 
</script> 
+0

這就是我通常所做的,所以我知道它的作品:) – Nealv 2010-09-06 14:11:53

0

你只能做單獨的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