上面是正在开发中的网站的屏幕截图...
我们有一个 DropdownList 控件,并在其 SelectedIndexChanged 上进行回发,然后我们更改站点区域性,然后加载相应的资源文件。
DropDownList ASP.NET 代码
<asp:DropDownList ID="ddlLanguage" runat="server" CssClass="select-language" AutoPostBack="true">
<asp:ListItem Value="en-US" Text="English" title="/images/Flag_USA.gif"></asp:ListItem>
<asp:ListItem Value="it-IT" Text="Italiano" title="/images/Flag_Italian.gif"></asp:ListItem>
<asp:ListItem Value="fr-FR" Text="Française" title="/images/Flag_French.gif"></asp:ListItem>
</asp:DropDownList>
所有网页继承的公共类
using System;
using System.Web;
using System.Threading;
using System.Globalization;
public class languagebase : System.Web.UI.Page
{
protected override void InitializeCulture()
{
try
{
string LanguageCode = Request["ctl00$ucMenu$ddlLanguage"]; // Language Drop Down Control in Front End
if (!LanguageCode.IsNullOrEmpty())
{
setCulture(LanguageCode); // Set Culture language from drop down
Request.Cookies["LanguageCode"].Value = LanguageCode; // Update REQUEST Cookie language from drop down
SetCookies(LanguageCode); // Set Cookie language from drop down
}
}
catch(Exception ex)
{
setCulture("en-US"); // Set default language
Request.Cookies["LanguageCode"].Value = "en-US"; // Update REQUEST Cookie language to default
SetCookies("en-US"); // Set default language
}
base.InitializeCulture();
}
private static void setCulture(string LanguageValue)
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanguageValue);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(LanguageValue);
}
public void SetCookies(string strLanguage)
{
System.Web.HttpContext.Current.Response.Cookies["LanguageCode"].Value = strLanguage;
System.Web.HttpContext.Current.Response.Cookies["LanguageCode"].Expires = DateTime.Now.AddDays(15);
}
}
扩展方法(仅供参考)
public static Boolean IsNullOrEmpty(this String original)
{
return string.IsNullOrEmpty(original);
}
未加载本地化资源的示例控件
<li>
<img src="/images/my-listing.png" alt="" align="absmiddle" /><asp:HyperLink ID="hlnkMyProperties" runat="server" meta:resourcekey="hlnkMyProperties"></asp:HyperLink>
</li>
手头的问题
在这里,如果我从浏览器的地址栏重新加载页面,则资源会正确加载。
我只是想像在切换文化时某些控件如何可能拥有英语资源而某些控件拥有旧的意大利语资源?
我希望我已经解释得很好了。
我将 HyperLink 控件更改为以下语法,瞧!现在正在工作。
<li>
<img src="/images/my-listing.png" alt="" align="absmiddle" /><a ID="hlnkMyProperties" runat="server"><%= GetLocalResourceObject("hlnkMyProperties")%></a>
</li>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)