首页 新闻 会员 周边

asp.net语言国际化的问题

0
悬赏园豆:10 [已关闭问题]

在站点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;
        }

但怎么也不成功,程序还是根据浏览器语言首选项来工作。是怎么回事?该如何改?

问题补充: 我现在想改成根据用户在界面中选择语言啊,让浏览器语言设置失效
沉默杨的主页 沉默杨 | 初学一级 | 园豆:6
提问于:2008-12-01 14:45
< >
分享
其他回答(3)
0

auto根据浏览器语言首选项来工作

余韬 | 园豆:190 (初学一级) | 2008-12-01 15:26
0

不修改你的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 的问题?

丁学 | 园豆:18730 (专家六级) | 2008-12-01 18:25
0

学习了...

Jared.Nie | 园豆:1940 (小虾三级) | 2008-12-02 09:55
0

timli | 园豆:202 (菜鸟二级) | 2012-11-22 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册