在站点App_GlobalResources下有Resource.en.resx,Resource.zh-TW.resx,Resource.resx三个语言文件。其中Resource.resx为简体中文
在web.config中设置
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="auto" uiCulture="auto"/>
页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="table.aspx.cs" Inherits="GuestBook.Web.table" StyleSheetTheme="Black" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div id="postContent">
<div id="postTop">
<p class="pTitle"><%=Resources.Resource.leave_message %></p>
<p class="pClose"><%=Resources.Resource.lClose %></p>
</div>
<ul>
<li><%=Resources.Resource.userName %><asp:TextBox ID="TextBox1" runat="server" Columns="14" CssClass="inputStyle"></asp:TextBox></li>
<li><%=Resources.Resource.qq_number %><asp:TextBox ID="TextBox2" runat="server" Columns="14" CssClass="inputStyle"></asp:TextBox></li>
<li><%=Resources.Resource.email %><asp:TextBox ID="TextBox3"
.....
此时可在IE和FF中调整首选语言来列换界面语言,没有问题!!
接着想根据用户喜好来调整界面语言。在global.asax中加入一段代码测试
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
CulturereInfo culture = CultureInfo.CreateSpecificCulture("en"); //zh-cn,zh-TW
Thread.CurrentThread.CurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
}
但怎么也不成功,程序还是根据浏览器语言首选项来工作。是怎么回事?该如何改?
auto根据浏览器语言首选项来工作
不修改你的web.config、页面文件和资源文件,只把Global.asax文件里你那几行改成下面这样:
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-cn");
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-cn");
}
我测试了,可以行的,但你那个en好像是不对,使用en时出错了,我试了 zh-cn/zh-TW/en-us 都可以正常工作,是不是因为那个 en 的问题?
学习了...
好