2010-01-18 48 views
1

在英國英語和瑞典語asp.net多語種網站,我有三個rsources文件asp.net multiligual網站區域性設置

1. en-GB.resx 
2. sv-SE.resx 
3. Culture neutral file. 

我已創建一個基類,所有的頁面是從類繼承。還有我寫的以下行來設置的UICulture和文化

1. Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture.Name; 
2. Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture.Name; 

問:假如我的瀏覽器語言是瑞典語(SV-SE),那麼這段代碼就會運行,因爲它找到CurrentUICulture and CurrentCulture values as sv-SE.

現在,如果假設瀏覽器語言是瑞典語(SV)只,在這種情況下,值將被設置爲

CurrentUICulture = sv; and CurrentCulture = sv-SE 

現在的問題是,用戶可以能夠查看文化中立資源文件中的所有文本,我一直爲英語,而所有小數saperators,貨幣和其他將出現在瑞典。 它看起來讓usr感到困惑。

什麼是正確的做法。我正在考慮解決方案。請糾正我?

1. i can create extra resource file for sv also. 
2. I check value of CurrentUICulture in base class and if it is sv then replace it with sv-SE 

請糾正我哪一個是正確的方法或是否有任何其他的好方法?

回答

1

你可以像上面提到的那樣輕鬆地替換基類中的值。我會遠離創建一個複製數據的額外資源文件,因爲它很難維護。

if (Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToLower() != "sv") 
     ...replace with sv-SE 

編輯欲瞭解更多信息這另一個問題] 1。有一個在這個問題

+0

我覺得沒有必要同時檢查的回答中引用好文章。因爲我們已經有了CultureInfo.CurrentCulture.Name的sv-SE;和我可以分配兩個像這樣該值 1. Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture.Name; 2. Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture.Name 你說什麼? – 2010-01-18 06:27:48

+0

如果你不需要在一種文化中有數字而在另一種文化中有文字,那麼你絕對可以做到這一點。 – tzup 2010-01-18 06:46:18