我的NET项目本地化实施步骤:

本文介绍了一种ASP.NET网站的整站本地化方法,包括资源文件的存放位置选择、本地化范围界定及实现步骤。通过使用自定义类FormGlobaling对指定容器内的控件进行本地化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我第一次写的博客,有错误麻烦指出。谢谢。 

要考虑的问题:

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为资源文件的名称。

 

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值