我的NET项目本地化实施步骤:
2007-05-03 20:40
639 查看
这是我第一次写的博客,有错误麻烦指出。谢谢。
要考虑的问题:
1、资源文件的存放位置:App_GlobalResources?DLL文件还是数据库?
2、要本地化的范围:整站?还是一个网页?还是某个网页的部分控件?
3、本地化的对象有哪些?(基本上是控件了)datagrid控件、literal控件、button控件、check控件等等……
基本上涉及的就这些问题。
步骤一:
1、因为快捷的原因,我选择用App_GlobalResources来存放资源文件。如果要把资源文件存放在dll文件和数据库中,可以参考MSDN:扩展 ASP.NET 2.0 资源提供程序模型。
2、本地化确定为整站,要保持整站本地化状态,可以用会话状态来存储。
3、把本地化对象放入容器中,如panel控件。约定控件ID和资源ID相同。建立一个类来对某一个容器的控件进行本地化:
public class FormGlobaling
{
/// <summary>
/// 对页面某一容器中的控件执行本地化操作
/// </summary>
/// <param name="container">容器控件:比如:panel等控件</param>
/// <param name="resourcefilename">本地化资源文件名字</param>
public static void GlobalingControls(Control container, string resourcefilename)
{
try
{
foreach (Control ct in container.Controls)
{
if (ct is ListControl)
{
ListControl drlist = (ListControl)ct;
for (int i = 0; i < drlist.Items.Count; i++)
{
drlist.Items[i].Text = HttpContext.GetGlobalResourceObject(resourcefilename, drlist.ID.ToString() + i.ToString()).ToString();
}
}
else if (ct is CheckBox)
{
CheckBox cb = (CheckBox)ct;
cb.Text = HttpContext.GetGlobalResourceObject(resourcefilename, cb.ID.ToString()).ToString();
}
else if (ct is Literal)
{
Literal lt = (Literal)ct;
lt.Text = HttpContext.GetGlobalResourceObject(resourcefilename, lt.ID.ToString()).ToString();
}
else if (ct is LinkButton)
{
LinkButton lk = (LinkButton)ct;
lk.Text = HttpContext.GetGlobalResourceObject(resourcefilename, lk.ID.ToString()).ToString();
}
else if (ct is Label)
{
if (ct is RequiredFieldValidator)
{
RequiredFieldValidator rb = (RequiredFieldValidator)ct;
rb.ErrorMessage = HttpContext.GetGlobalResourceObject(resourcefilename, rb.ID.ToString()).ToString();
}
else if (ct is CompareValidator)
{
CompareValidator cv = (CompareValidator)ct;
cv.ErrorMessage = HttpContext.GetGlobalResourceObject(resourcefilename, cv.ID.ToString()).ToString();
}
}
else if (ct is Button)
{
Button bt = (Button)ct;
bt.Text = HttpContext.GetGlobalResourceObject(resourcefilename, bt.ID.ToString()).ToString();
}
//等等,其他控件形式等待加入,注意:请排除Textbox控件和其他与数据库交互的控件。
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
4、通过使用“GlobalingControls(Control container, string resourcefilename)”来实施本地化,其中container为控件容器,resourcefilename为资源文件的名称。
要考虑的问题:
1、资源文件的存放位置:App_GlobalResources?DLL文件还是数据库?
2、要本地化的范围:整站?还是一个网页?还是某个网页的部分控件?
3、本地化的对象有哪些?(基本上是控件了)datagrid控件、literal控件、button控件、check控件等等……
基本上涉及的就这些问题。
步骤一:
1、因为快捷的原因,我选择用App_GlobalResources来存放资源文件。如果要把资源文件存放在dll文件和数据库中,可以参考MSDN:扩展 ASP.NET 2.0 资源提供程序模型。
2、本地化确定为整站,要保持整站本地化状态,可以用会话状态来存储。
3、把本地化对象放入容器中,如panel控件。约定控件ID和资源ID相同。建立一个类来对某一个容器的控件进行本地化:
public class FormGlobaling
{
/// <summary>
/// 对页面某一容器中的控件执行本地化操作
/// </summary>
/// <param name="container">容器控件:比如:panel等控件</param>
/// <param name="resourcefilename">本地化资源文件名字</param>
public static void GlobalingControls(Control container, string resourcefilename)
{
try
{
foreach (Control ct in container.Controls)
{
if (ct is ListControl)
{
ListControl drlist = (ListControl)ct;
for (int i = 0; i < drlist.Items.Count; i++)
{
drlist.Items[i].Text = HttpContext.GetGlobalResourceObject(resourcefilename, drlist.ID.ToString() + i.ToString()).ToString();
}
}
else if (ct is CheckBox)
{
CheckBox cb = (CheckBox)ct;
cb.Text = HttpContext.GetGlobalResourceObject(resourcefilename, cb.ID.ToString()).ToString();
}
else if (ct is Literal)
{
Literal lt = (Literal)ct;
lt.Text = HttpContext.GetGlobalResourceObject(resourcefilename, lt.ID.ToString()).ToString();
}
else if (ct is LinkButton)
{
LinkButton lk = (LinkButton)ct;
lk.Text = HttpContext.GetGlobalResourceObject(resourcefilename, lk.ID.ToString()).ToString();
}
else if (ct is Label)
{
if (ct is RequiredFieldValidator)
{
RequiredFieldValidator rb = (RequiredFieldValidator)ct;
rb.ErrorMessage = HttpContext.GetGlobalResourceObject(resourcefilename, rb.ID.ToString()).ToString();
}
else if (ct is CompareValidator)
{
CompareValidator cv = (CompareValidator)ct;
cv.ErrorMessage = HttpContext.GetGlobalResourceObject(resourcefilename, cv.ID.ToString()).ToString();
}
}
else if (ct is Button)
{
Button bt = (Button)ct;
bt.Text = HttpContext.GetGlobalResourceObject(resourcefilename, bt.ID.ToString()).ToString();
}
//等等,其他控件形式等待加入,注意:请排除Textbox控件和其他与数据库交互的控件。
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
4、通过使用“GlobalingControls(Control container, string resourcefilename)”来实施本地化,其中container为控件容器,resourcefilename为资源文件的名称。
相关文章推荐
- ASP.NET全球化与本地化 c#多国语言的支持 (项目支持多国语言的开发)
- ITSM项目实施关键步骤
- 视频监控项目工程实施步骤
- 三步骤实现ASP.NET(C#)项目中添加谷歌(Google Map)地图
- EXT.NET项目框架的搭建步骤
- vmware虚拟化项目实施步骤
- 把ASP.NET MVC项目部署到本地IIS上的完整步骤
- 企业实施云ERP项目分为哪几个步骤
- 运维虚拟化之VMware虚拟化项目实施步骤
- ITSM项目实施关键步骤
- 实施工程师利器--项目实施步骤截图工具
- ERP实施顾问项目成功实施的步骤与心得分析
- 升级改造项目实施步骤及注意事项
- ASP.NET MVC1.0项目部署到 IIS 5.1的步骤
- 广州项目实施步骤II_练习配置HaProxy的重定向负载均衡
- 项目中隐性知识共享的实施步骤
- VS2010/VS2013项目创建 ADO.NET连接mysql/sql server详细步骤
- 运维虚拟化之VMware虚拟化项目实施步骤
- 桌面虚拟化项目的实施步骤
- 广州项目实施步骤III_练习使用Keepalive保证HaProxy的高可用性