1:将页面内所有的文本用一个Literal的server控件包起来;
2:对图片的处理:HTML的<img>标签在传src时在中间加一个在CS里定义的全局变量来确实图片来源文件夹
Sample:
Html码
<img src='../test/<%=IMGURL %>/button_add.gif' onclick='javascript:alert("");' id=bbb/>
CS码
public partial class _Default : PageBase
{
public string IMGURL ;
protected void Page_Load(object sender, EventArgs e)
{
IMGURL = this.GetIMGURL();
}
}
PageBase码
Public String GetIMGURL()
{
String returnURL = “en-US”;
string thisURL= Request.UserLanguages[0].ToString();
if (thisURL == "en-US")
{
returnURL = "EN"; //EN是项目里面一个EN的英文图片文件夹
}
else if(thisURL == "zh-cn")
{
returnURL = "CN";//CN是项目里面一个CN的中文图片文件夹
}
}
Server的图片或图片按钮
在后台CS用赋值的方法ImageUrl赋图片地址,只是在中间加一个 GetIMGURL()返回的图片文件的名称
3:
在页面设计视图下VS.NET 2005 菜单-Tools-Generate Local Resource,所产生的资源文件将会放在\App_LocalResources下面
就会生成一个相对应的关联本地化的资源文件,里面定义了页面所有的服务器控件的本地化资源,在里面可以修改它的值,这只是一个文字(如中文)的版本,如要建其它的版本复制一个刚才的资源,再粘贴在Generate Local Resource里面改名;如: Default.aspx.en-US.resx等等,再将里面的值改成你需要的语言
|
区域性名称
|
区域性标识符
|
语言-国家/地区
|
|
zh-CN
|
0x0804
|
中文-中国
|
|
zh-TW
|
0x0404
|
中文-台湾
|
|
zh-CHS
|
0x0004
|
简体中文
|
|
zh-CHT
|
0x7C04
|
繁体中文
|
|
en
|
0x0009
|
英语
|
|
en-US
|
0x0409
|
英语-美国
|
|
en-GB
|
0x0809
|
英语-英国
|
|
uz-UZ-Cyrl
|
0x0843
|
乌兹别克语(西里尔语)- 乌兹别克斯坦
|
|
uz-UZ-Latn
|
0x0443
|
乌兹别克语(拉丁)- 乌兹别克斯坦
|
4 :JavaScript里中文字和有文字图片的解决方法
解决js里一个麻烦的问题,共同调用一个JS文件,文件里有一个全局的变量var Lanflag,再在页面的开始处定义一个隐藏控件专门作为语言控制的flag,并在这个控件下将这个值赋给Lanflag;页面所的JS,返回文本的地方都要先对Lanflag进行判断,来决定使用哪种语言;
<asp:TextBox ID=tag runat=server Text="<%$ Resources:ALLflag %>" ></asp:TextBox>//CSS隐藏
<script language=javascript> Lanflag = document.getElementById(“tag”).value;</script>
或者,在head 里面定义 lanflag =<%=ALLflag %>//Allflag是cs里面的全局变量 Allflag = GetIMGURL()
5 CS时面返回到页面的文本
对response.write等返回的文本需要通过全局变量Allflag = GetIMGURL()来判断输出文本;
6关于datagrid的header的两种改法:
1:将header变成模板列 文字用Literal包住
2: <asp:BoundField DataField="ID" ControlStyle-Width="20" HeaderText = "colum1" meta:resourcekey="bfIDResource" /> bfIDResource为在资源文件里定义
6:这里再补充一点:
关于<system.web>
<globalization uiCulture="zh-CN" culture="zh-CN"/>
<globalization uiCulture="zh-CN" culture="zh-CN"/>
这句话要生效必须在IE选项->常规的语言那里清空语言,不然会按IE设置
关于.net多语言实现(全球化)的参考文章:
http://www.dezai.cn/Article_Show.asp?ArticleID=20178
上述只是本人择优选择的一种方案,如大家有更好的方法,欢迎提出来讨论;
--Mathew 2008-2-25
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2155644

浙公网安备 33010602011771号