我是asp.net的新手。我试图建立一个语言切换器来切换当前的文化,在#ar; SA"和" en-US"。这是我到目前为止所做的:
1-我在App_GlobalResources
文件夹下创建了三个resx文件,一个名为MyProject.Resource.ar-SA.resx
用于阿拉伯文化,另一个名为MyProject.Resource.en-US.resx
用于英语文化。第三个文件是名为{的默认resx文件{1}}
2-在母版页中,我在MyProject.Resource.resx
事件中为每个页面调用此函数:
Page_Load
3-在 public void SwitchLanguage()
{
string pageURL = this.Request.RawUrl;
int startInd = pageURL.IndexOf('?');
if (startInd != -1)
pageURL = pageURL.Remove(startInd);
languageHyperlink.NavigateUrl = pageURL;
// check whether the language change parameter has been passed
var language =
Request.QueryString["language"];
if (string.IsNullOrEmpty(language))
{
language = "en-US";
languageHyperlink.NavigateUrl += "?language=ar-SA";
}
else if (language == "ar-SA")
{
languageHyperlink.NavigateUrl += "?language=en-US";
}
// having the language a thand, let us set it.
var l_culture = new System.Globalization.CultureInfo(language);
Thread.CurrentThread.CurrentUICulture = l_culture;
Thread.CurrentThread.CurrentCulture = l_culture;
}
简单地通过使用默认resx文件的名称来渲染值
MasterPage.aspx
导航网址如下所示:
<asp:Literal ID="Literal6" runat="server" Text="<%$Resources:MyProject.Resource, AWARDS%>"></asp:Literal>
现在我期待asp应该检索当前文化的正确值,但每当我改变文化时都没有任何反应,它仍然保持原样(en-US)。
是否有人知道解决方案是什么?
我一直在寻找这个问题的解决方案2天!!