0
我在使用C#的ASP.Net中有一個應用程序。 在aspx文件母版我有3種語言3個圖像按鈕:英語,法語,羅馬尼亞語:如何使用ASP.Net中的資源文件從masterpage更改應用程序的語言
<asp:ImageButton ID="ImgRo" ImageUrl="~/Images/Romania Flag.png" runat="server"
Height="25px" ToolTip="RO" style="border-color:black;
background-color:black" OnClick="ImgRo_CLick"/>|
<asp:ImageButton ID="ImgEn" ImageUrl="~/Images/United States Flag.png" runat="server"
Height="25px" ToolTip="EN" style="border-color:black;
background-color:black" OnClick="ImgEn_CLick"/>|
<asp:ImageButton ID="ImgFr" ImageUrl="~/Images/France Flag.png" runat="server"
Height="25px" ToolTip="FR" style="border-color:black;
background-color:black" OnClick="ImgFr_CLick"/>|
當我點擊每個我有要事,保存所選語言會話之一:
protected void ImgRo_CLick(object sender, EventArgs e)
{
SaveLanguage("Ro");
}
protected void ImgEn_CLick(object sender, EventArgs e)
{
SaveLanguage("En");
}
protected void ImgFr_CLick(object sender, EventArgs e)
{
SaveLanguage("fr-Fr");
}
protected void SaveLanguage(string language)
{
Session[AppDefs.LANGUAGE] = language;
Thread.CurrentThread.CurrentCulture = new CultureInfo(language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
}
public string GetLanguage()
{
if (Session[AppDefs.LANGUAGE] != null)
{
return Session[AppDefs.LANGUAGE].ToString();
}
else
{
return "en";
}
}
在主頁面中,我打開登錄頁面,然後打開其他頁面。當我從母版頁選擇時,如何更改所有頁面的UICulture?
我嘗試在登錄頁上preinit事件這一點,但不工作:
protected void Page_PreInit(object sender, EventArgs e)
{
UICulture = Master.GetLanguage();//"fr-FR"
}
感謝
的問題是,應用程序就會首先在登錄頁面 - preinit事件,然後它去「ImgFr_CLick」按鈕事件 – user1577242
您不能設置的UICulture一個頁面,只是爲一個頁面的請求。此設置不會在請求之間持續。您必須在每個新請求中刷新它。此刷新的首選位置是頁面的PreInit事件。如果您的頁面和您的登錄頁面具有可本地化的文本,則兩者都需要帶有我提供的代碼的PreInit。 –