asp.net处理资源文件实现多国语言版本问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 20:50:00
我现在的网站要做三种语言版本的:简体中文,繁体中文,英文,我在App_GlobalResources中建了三个资源文件Resource.resx,Resource.zh-tw.resx,Resource.en-us.resx在三个资源文件中分别都有一个键btnSubmit对应的不同语言的值,我在页面中:
<asp:DropDownList ID="drpLstLanguage" runat="server" AutoPostBack="True">
<asp:ListItem Value="">简体中文</asp:ListItem>
<asp:ListItem Value="zh-tw">繁体中文</asp:ListItem>
<asp:ListItem Value="en-us">英文</asp:ListItem>
</asp:DropDownList>
在这里有个按钮,让按钮的text获取资源文件中的信息
<asp:Button ID="btnSub" runat="server" Text="<%$ Resources:Resource,btnSubmit %>" />
我在页面的下面的事件中:
protected void Page_PreInit(object sender, EventArgs e)
{
string language = "";
if (Request["drpLstLanguage"] == "zh-tw")
{
language = "zh-tw";

我在我的项目中是这样做的,给你做个参考吧。这个重写的方法你可以直接定义在当前页面的cs文件中。不过我是定义在页面基类中了。网站所有页面继承页面基类,就可以实现统一的多语言控制了。
protected override void InitializeCulture()
{
string strCurrentCulture = Request.QueryString["CurrentCulture"];//获取当前语言参数,你也可以从Session、Cookie、全局变量或是控件获取
if (!String.IsNullOrEmpty(strCurrentCulture))
{
try
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture);
UserStaticValue.CurrentCulture = strCurrentCulture;
}
catch//如果当前语言参数不合法则默认显示中文
{
strCurrentCulture = "zh-cn";
//UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言
//Culture - 决定各种数据类型是如何组织,如数字与日期
Thread.CurrentThread.CurrentUICulture = new C