我在Session [「lang」]中有我的目標語言,它是「en」或「it」。我已經加入這個了的Site.Master:asp.net MVC:本地化
<script runat="server">
void Page_Load(object sender, EventArgs e) {
string lang = Session["lang"].ToString();
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
}
</script>
那麼我想引用這樣的資源字符串:
<asp:Label ID="Label1" runat="server" Text="<%$ Resources:Global, test %>"></asp:Label>
我有兩個文件在App_GlobalResources文件,命名爲Global.resx和Global.en.resx。
的問題是,無論是什麼LANG變量,我總是從主Global.resx得到的結果,我從來沒有從Global.en.resx
拿到英文版我這樣做完全錯誤?
我試着在Global.asax.cs中的Application_PreRequestHandlerExecute方法中放置System.Threading ...部分,但結果是一樣的。
感謝
PS:我問一個途徑,以一種簡單的方式這項工作。如果我要使用複雜的方式,我會與此:http://helios.ca/2009/05/27/aspnet-mvc-and-localization/
沒有幫助任何一個鏈接,抱歉:所有這說的是,「如果你需要設置文化根據用戶的偏好設置或URL參數,最好的辦法是編寫一個自定義HTTP模塊或操作過濾器「。 也許那麼有沒有辦法這樣做? – Palantir 2009-09-22 12:51:14
當然有一種方法來設置文化..如果它是您的網站的用戶偏好,然後你將它存儲在一個cookie中,你創建一個控制器,當實例化(構造函數)你讀取cookie並設置CultureUI/Culture。然後,所有的控制器都應該從該控制器中無處不在。 – Konstantinos 2009-09-22 12:55:02
當你讀到您的語言環境,並要設置它,你那樣做的時候: System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(「EN-US」); System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(「en-US」); – Konstantinos 2009-09-22 12:55:59