日期:2014-05-18  浏览次数:20358 次

高手留步,多国语疑问
功能我已经实现了,方法:页面语言设置为auto,然后再添加资源文件,这样就可实现根据访客的IE设置来显示不同的语言。
演示: http://www.10000free.com ,在IE,工具,internet选项,语言中分别添加日语[ja],英语[en-us],并将其置为首选项,再刷新页面即可更换语言,语言是google自动翻译的,高手勿笑。
这种方法的几种弊端:
1.不够人性化,比如我用IE打开是中文,换火狐就变成英文了,除外,客户端的设置偏差也可能导致非期望的页面语言出现。
2.不利于搜索引擎收录,现在google只收录了几个英文页,如果加上语言切换连接,google可能会多收几页吧。
我的问题:
我想在页面加个连接,比如?language=en-us,访客一点的话,就把en-us写进SESSION, 然后每个页面(已设置语言为auto)优先根据SESSION的值来显示相关语言,然后如果没有SESSION再根据auto显示。
难点:如何让每个页面的Lable使用SESSION指定的资源文件.我以前也搜索过不少相关文章,一直没有实现这个功能,请高手帮帮我。

------解决方案--------------------
页面基类里面
Thread.CurrentThread.Cultrue = ....;
------解决方案--------------------

这是存Cookie里的方案

protected void Application_BeginRequest(Object sender, EventArgs e)
{
string language = Request.Cookies["Language"] == null ? null : Request.Cookies["Language"].Value;

if (!string.IsNullOrEmpty(language))
{
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo(language);
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
}
}
------解决方案--------------------
这个问题值得关注...
------解决方案--------------------
学习,帮顶。。。
------解决方案--------------------
通过session去调取相应的资源文件就可以呀
------解决方案--------------------
探讨
C# code
protected override void InitializeCulture()
{

string lang = Request.QueryString["lang"];

if (!string.IsNullOrEmpty(lang))
{
try
{
CultureInfo culture = new CultureInfo(lang);

if (culture != null)
{
Thread.CurrentThread.CurrentUICulture = culture;
Thread.CurrentThr…

------解决方案--------------------
用APPLICATION保存语言种类.
------解决方案--------------------
同意jzywh 同学
写个基类,然后每个页面继承,在基类中写一个设置线程的语言就可以了
------解决方案--------------------
你用的是SESSION来传值,那就用它来进行传值啊,当从一个页面到另个页面时,将保存在SESSION中的值也传过去,并接收,给个判断,如果SESSION中有值,就使用,否则为默认的
------解决方案--------------------
用COOKIES吧
------解决方案--------------------
up
------解决方案--------------------

应该用 cookie 记录语言信息
------解决方案--------------------
界面多语种处理方式有很多,

要是数据也要多语种就烦了,所有有名字 有字符串的地方都是多语,比如 供应商名,中/英/德, 产品名 中英德, 项目名 中英德 这个就烦了,显示的时候,还得根据语种用不同的字段,GRID显示也时, 还没啥好办法,除了分别加不同的字段, 动态用字典翻译吧,恐怕性能...