请教个位一个问题,我用.net中的全球化/本地化。做了一个多语言网站?现在是以 ?currentculture=en-us 来确定当前的语言。我知道不可能在每一个页都来这个参数。请问大伙都是如何处理的?
以及如果在当前页面得到当前使用语言的ID?
cn-zh 1
en-us 2
cht 3我的 BasePage 如下 protected override void InitializeCulture()
{
String s = Request.QueryString["currentculture"];
if (!String.IsNullOrEmpty(s))
{
//UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言
//Culture - 决定各种数据类型是如何组织,如数字与日期
Thread.CurrentThread.CurrentUICulture = new CultureInfo(s);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(s);
}
}
以及如果在当前页面得到当前使用语言的ID?
cn-zh 1
en-us 2
cht 3我的 BasePage 如下 protected override void InitializeCulture()
{
String s = Request.QueryString["currentculture"];
if (!String.IsNullOrEmpty(s))
{
//UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言
//Culture - 决定各种数据类型是如何组织,如数字与日期
Thread.CurrentThread.CurrentUICulture = new CultureInfo(s);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(s);
}
}
这个参数设置可以存储在数据库中,当页面初始化的时候,从数据库读取语言设置,Session维护状态,然后做处理。
public static String GetString(string ResourceID)
{
if (String.IsNullOrEmpty(ResourceID))
return ""; if (object.ReferenceEquals(rm, null))
{
rm = new System.Resources.ResourceManager("HanYi.Components.ResourceManager.Strings", typeof(Strings).Assembly );
}
string str = rm.GetString(ResourceID, GlobalVariables.CurrentCulture);
if (String.IsNullOrEmpty(str))
str = String.Empty;
return str.Replace("\\r", "\r").Replace("\\n", "\n");
}
(看 IE 的 Internet 选项=>语言)// System.Web.UI.Page page
if( page == null || page.Request.UserLanguages == null || page.Request.UserLanguages.Length == 0 )
{
//如果没有语言环境,则可以默认使用服务器的语言环境作为初始化语言环境
m_CultureInfo = System.Threading.Thread.CurrentThread.CurrentUICulture;
}
else
{
m_CultureInfo = new CultureInfo(page.Request.UserLanguages[0]);
}
.net还没用过
this.toolStrip1.Text = GetString("toolStrip1");