[前辈]asp.net资源文件实现多语言版本,在线等

jiangwuren 2009-03-05 09:03:17
需要实现中,英两种版本

如下几种情况能用资源文件解决吗?


1)aspx页面js代码包括中文,切换时要换成英文.

2)<input type="text" id="test" tend="值值" value=""> //注:tend为自定义的属性,"值值"要如何换呢?

3)用户名:<input type="text" id="username" runat="server"> //用户名要如何切换呢?

请明细,谢谢·
...全文
1188 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang_winnie 2010-08-10
  • 打赏
  • 举报
回复
我怎麼沒找到產生本機自願的啊?
limaohua97 2010-08-10
  • 打赏
  • 举报
回复
中英 我们当时做的时侯 没那么烦的呀 直接 把页面中有文字的地方 都直接替换成方法 然后在这个方法里进行中英替换的
jiangwuren 2009-03-07
  • 打赏
  • 举报
回复
TO:kongwei521

XMLUtil,consts_Web 这个就没有提供呀...要确保你的代码能编译.....一起发出来可以吗?

主要是感觉你写的超好
jiangwuren 2009-03-06
  • 打赏
  • 举报
回复
TO:Kongwei521


请进来回答一下呀.
蝶恋花雨 2009-03-06
  • 打赏
  • 举报
回复
都给你了。、

using FSSoft.Common;
using FSSoft.Common.IO;
using FSSoft.Common.TextUtil;
这些是数据库类
jiangwuren 2009-03-05
  • 打赏
  • 举报
回复
TO:Kongwei521

你的代理中引用了其它的类呀。。。请一起发出来吧。谢谢


using System;
using System.Data;
using System.Web;
using System.Collections;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;
using FSSoft.Common;
using FSSoft.Common.IO;
using FSSoft.Common.TextUtil;
namespace FSSoft.Web.UI
{
/// <summary>
/// 多語言操作類。
/// </summary>
public sealed class Language
{
private static readonly string SessionKey=typeof(Language).FullName;
/// <summary>
/// 存储或取得預載入語言信息的相關配置文件的絕對路徑集合。
/// </summary>
public static ArrayList config_Load_Paths=new ArrayList();

private static short sysOnlySingleLanguageKBN_Value=-1;
/// <summary>
/// 配置系統只採用單一語言(默認採用多語言)。
/// </summary>
/// <remarks>若系統採用多語言則值為-1。</remarks>
public static short SysOnlySingleLanguageKBN_Value
{
set
{
if(value!=-1)
{
short[] LanguageKBNValues=(short[])Enum.GetValues(typeof(LanguageKBN));
bool legality=false;
foreach(short LanguageKBNValue in LanguageKBNValues)
{
if(LanguageKBNValue==value)
{
legality=true;
break;
}
}
if(!legality)
{
throw new Exception(consts_Web.UI_LANGUAGE_EX_INFO4);
}
}
sysOnlySingleLanguageKBN_Value=value;
}
get
{
return sysOnlySingleLanguageKBN_Value;
}
}


private static DataSet[] ds=null;
private static DataSet DS(string configName)
{
if(ds==null&&config_Load_Paths.Count>0)
{
ds=new DataSet[config_Load_Paths.Count];
try
{
for(int i=0;i<config_Load_Paths.Count;i++)
{
ds[i]=XMLUtil.InitXml((string)config_Load_Paths[i]);
}
}
catch(Exception e)
{
ds=null;
throw e;
}
}
foreach(DataSet getds in ds)
{
if(getds.DataSetName==configName)
{
return getds;
}
}
throw new Exception(string.Format(consts_Web.UI_LANGUAGE_EX_INFO3,configName));
}
/// <summary>
/// 设置或取得用户当前语言设置。
/// </summary>
public static LanguageKBN Current
{
set
{
HttpContext.Current.Session.Add(SessionKey,value);
}
get
{
if(sysOnlySingleLanguageKBN_Value!=-1)
return (LanguageKBN)Enum.Parse(typeof(LanguageKBN),sysOnlySingleLanguageKBN_Value.ToString());
if(HttpContext.Current.Session[SessionKey]==null)
{
string CurrentLanguage=HttpContext.Current.Request.UserLanguages[0];
switch(CurrentLanguage.Substring(0,2))
{
case "zh":
if(CurrentLanguage=="zh-cn")
return LanguageKBN.CHS;
else
return LanguageKBN.CHT;
case "ja":
return LanguageKBN.JP;
case "ko":
return LanguageKBN.KR;
default:
return LanguageKBN.EN;
}
}
else
{
return (LanguageKBN)HttpContext.Current.Session[SessionKey];
}
}
}
/// <summary>
/// 根據Msg.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <returns>返回文本值。</returns>
public static string Msg(string key)
{
return TAG_Value(key,consts_Web.UI_LANGUAGE_CONFIG_MSG_NAME);
}
/// <summary>
/// 根據Msg.config内已有的key以及指定的語言區分進行文本的取得。
/// </summary>
/// <param name="key">Msg.config内已有的key。</param>
/// <param name="languagekbn">指定的語言區分對象。</param>
/// <returns>返回文本值。</returns>
public static string Msg(string key,LanguageKBN languagekbn)
{
return TAG_Value(key,consts_Web.UI_LANGUAGE_CONFIG_MSG_NAME,true,languagekbn);
}
/// <summary>
/// 根據*.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <param name="configName">*对应名称</param>
/// <returns>返回文本值。</returns>
public static string TAG_Value(string key,string configName)
{
return TAG_Value(key,configName,false,LanguageKBN.EN);
}
/// <summary>
/// 根據*.config内已有的key進行文本的取得。
/// </summary>
/// <param name="key">文本對應的key。</param>
/// <param name="configName">*对应名称</param>
/// <param name="IsSetLanguageKBN">是否通過最後一個參數(languagekbn)來進行文本的取得。</param>
/// <param name="languagekbn">指定文本取得依據的語言區分對象。</param>
/// <returns>返回文本值。</returns>
private static string TAG_Value(string key,string configName,bool IsSetLanguageKBN,LanguageKBN languagekbn)
{
DataRow[] DDR=DS(configName).Tables[0].Select(string.Format(consts_Web.UI_LANGUAGE_KEY_EXPRESSION,key));
switch(DDR.Length)
{
case 0:
Console.WriteLine(consts_Web.UI_LANGUAGE_EX_INFO1,configName+consts_Web.UI_LANGUAGE_CONFIG_SUFFIXNAME,key);
return consts_Web.UI_LANGUAGE_CONFIG_NOKEY_TEXT;
case 1:
break;
default:
throw new Exception(
string.Format(consts_Web.UI_LANGUAGE_EX_INFO2,
configName+consts_Web.UI_LANGUAGE_CONFIG_SUFFIXNAME,DDR.Length,key));
}
string CurrentLanguageKBN=null;





jiangwuren 2009-03-05
  • 打赏
  • 举报
回复
我是提问者:
"用户名"采用<%=取资源文件中的值%> 是吗?

请明细,我就是不明白这步
[Quote=引用 12 楼 sjt000 的回复:]
然后在中文的资源文件里写上:
username 用户名:
英文的资源文件里写上:
username username:
[/Quote]
gg_lihui 2009-03-05
  • 打赏
  • 举报
回复
路过
wuyq11 2009-03-05
  • 打赏
  • 举报
回复
http://www.cnblogs.com/uuwish/archive/2008/03/05/1090995.html
蝶恋花雨 2009-03-05
  • 打赏
  • 举报
回复
请搜我以前回答的问题 多语言国际化 http://topic.csdn.net/u/20080226/15/0E00372F-8BDC-450C-BA51-32B7EC0A9636.html
sjt000 2009-03-05
  • 打赏
  • 举报
回复
然后在中文的资源文件里写上:
username 用户名:
英文的资源文件里写上:
username username:
jiangwuren 2009-03-05
  • 打赏
  • 举报
回复
TO:sjt000

我发了在线聊天给你,请看下。加下我的Q。谢谢
pztx1992 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sjt000 的回复:]
若采用资源文件的做法,岂不是每个aspx页面对应一个资源文件?若我有1000个aspx页面,资源文件就得有1000个
------------------
不用啊~你一种语言用一个资源文件就可以了
[/Quote]

可以使用App_GlobalResource
sjt000 2009-03-05
  • 打赏
  • 举报
回复
你那个 用户名:
不要用写的,也用个服务器控件,比如:
<asp:Literal ID="Literal1" Text="<%$ Resources.Resource,username %>" runat="server"></asp:Literal>,
sjt000 2009-03-05
  • 打赏
  • 举报
回复
若采用资源文件的做法,岂不是每个aspx页面对应一个资源文件?若我有1000个aspx页面,资源文件就得有1000个
------------------
不用啊~你一种语言用一个资源文件就可以了
jiangwuren 2009-03-05
  • 打赏
  • 举报
回复
另外还有一点是:
若采用资源文件的做法,岂不是每个aspx页面对应一个资源文件?若我有1000个aspx页面,资源文件就得有1000个。

我更希望的是:希望它能加载我自定义的xml文件,我把所有翻译好的全放在一个xml中,方便维护。不知你是如何看这个问题的?

谢谢
[Quote=引用 3 楼 sjt000 的回复:]
1
可以用后台取得,在js中再从后台取得值。
2
将html控件添加 runat="server" 属性后就可以和text属性一样绑定了:tend=" <%$ Resources.Resource.zhizhi%>"
3
用户名还要切换干啥?!
[/Quote]
jiangwuren 2009-03-05
  • 打赏
  • 举报
回复
我是提问者
对于第三点,用户名当然要切换,就是<input type="text"...前面的文字呀。
[Quote=引用 3 楼 sjt000 的回复:]
1
可以用后台取得,在js中再从后台取得值。
2
将html控件添加 runat="server" 属性后就可以和text属性一样绑定了:tend=" <%$ Resources.Resource.zhizhi%>"
3
用户名还要切换干啥?!
[/Quote]
jiangwuren 2009-03-05
  • 打赏
  • 举报
回复
To:fangxinggood
请具体点,最好能给我一个实例,网上有很多,但一般不能满足上面我提到的3点.

应用是asp.net(c#)
oyljerry 2009-03-05
  • 打赏
  • 举报
回复
可以把需要切换语言的字符串等放到js文件中,然后设置对应的标志,再通过js来设置
stonehy520 2009-03-05
  • 打赏
  • 举报
回复
不懂,帮顶,关注ing
加载更多回复(2)

62,268

社区成员

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

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

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

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