问几个问题,关于网站要做成多语言版的,用的是资源,RESX,会的来看看

Animatrix 2008-02-15 03:05:34
现在要做一个网站要做成中文,英文两个语言版本的
使用资源来做,就是使用RESX文件
现在切换语言这个基本功能是没问题了
但是有个问题如下:
我使用了profile来保存区域信息,我在web.config里这么写的:
<profile enabled="true" > 

<properties>

<add name ="MyCultrue" defaultValue="en-us" allowAnonymous="true"/>

</properties>

</profile>


默认是英文
那么页面上如果要切换语言,我用一个RadioButtonList控件来控制语言的切换
RadioButtonList里的值分别为"zh-cn"和"en-us"
我把C#部分代码全贴出来吧:
public partial class _Default : System.Web.UI.Page 
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.RadioButtonList1.Items.Add(new ListItem("英语-English", "en-us"));
this.RadioButtonList1.Items.Add(new ListItem("中文-Chinese", "zh-cn"));
this.RadioButtonList1.AutoPostBack = true;
this.RadioButtonList1.Items.FindByValue(Profile.MyCultrue).Selected = true;
}
}
protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (RadioButtonList1.SelectedValue.ToLower() != Profile.MyCultrue.ToLower())
{
Profile.SetPropertyValue("MyCultrue", RadioButtonList1.SelectedValue);
Response.Redirect(Request.Url.LocalPath);
}
}
protected override void InitializeCulture()
{
base.InitializeCulture();
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Profile.MyCultrue);
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(Profile.MyCultrue);
}
}


这样切换语言是没问题了,但是在RadioButtonList1_SelectedIndexChanged里非得加上一句:Response.Redirect(Request.Url.LocalPath)
这样造成的情况就是如果我这个页面是带URL传值的,那么加了这句Response.Redirect
RUL传值就没有了
如果不加这句Response.Redirect,那么切换语言又不能实现
求解决方法。
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaozhong98 2008-06-18
  • 打赏
  • 举报
回复
Response.AddHeader("Refresh", "0");
Animatrix 2008-02-18
  • 打赏
  • 举报
回复
顶下。。问题待解决,但不急。。
Animatrix 2008-02-15
  • 打赏
  • 举报
回复
切换语言应该放到一个不需要参数传递的页面去处理。
单独做一个叫做语言切换的页面。

===================================================
但是现在客户需要我实现这样的功能,我也没办法啊
如果单独做一个语言切换,那简单了,主页上仍个语言切换
其他页面一律不准语言切换,就OK了
可是现在需求在这里,不能这么做。
xuan.ye 2008-02-15
  • 打赏
  • 举报
回复
切换语言应该放到一个不需要参数传递的页面去处理。
单独做一个叫做语言切换的页面。
reborter 2008-02-15
  • 打赏
  • 举报
回复
mark
Animatrix 2008-02-15
  • 打赏
  • 举报
回复
好象Request.Url.AbsolutePath 可以得到全部的URL,包括参数值
==========================================================================
我母板页里要写了Response.Redirect(Request.Url.LocalPath) 啊
不管什么参数都没了
不写这句吧,切换语言又出不来
Animatrix 2008-02-15
  • 打赏
  • 举报
回复
去下载blogengine看看 立马就会了
===========================================
网上搜了下,没发现这个里提到多语言的东西啊
lemong 2008-02-15
  • 打赏
  • 举报
回复
好象Request.Url.AbsolutePath 可以得到全部的URL,包括参数值
活靶子哥哥 2008-02-15
  • 打赏
  • 举报
回复
去下载blogengine看看 立马就会了
Animatrix 2008-02-15
  • 打赏
  • 举报
回复
楼上的,我还是不是很懂
我现在的问题是这样的
我的切换语言功能是在母板页上
比如有login.aspx和a.aspx和b.aspx等等多个页面
现在用户进入到a.aspx?id=5这个页面上了,然后在a.aspx?id=5这个状态下切换了语言
我目前做的是切换语言可以,但是id=5就没了,都是因为又Response.Redirect了一下
但是不加这一句,切换语言又不行
如何能切换语言也行,URL传值也保留呢?
xuan.ye 2008-02-15
  • 打赏
  • 举报
回复
<a href="?currentculture=zh-cn">中文</a>
 
<a href="?currentculture=en-us">英文</a>



protected override void InitializeCulture()
{
// 获取当前Culture的值
string s = Request.QueryString["currentculture"];
if (!String.IsNullOrEmpty(s))
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(s);
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(s);
}
}

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧