当前位置: 代码迷 >> ASP.NET >> 多语言的用户界面有关问题
  详细解决方案

多语言的用户界面有关问题

热度:1644   发布时间:2013-02-25 00:00:00.0
多语言的用户界面问题
我第一次做国际化的项目,请大家多多支持啊!
我从 ASP.NET 网页生成两个局部资源文件,一个中文,一个英文。修改IE的语言后,页面内容会根据修改显示不同的语言,这个没有问题。但是如果我想在页面上添加两个按钮(中文、英文),用来切换显示语言,一般多语言网站都会有的,要怎么实现啊?


System.Globalization.CultureInfo.CurrentCulture 的属性是不能修改的,到底修改哪里呢?

我试过在按钮时间里添加
方法1:
  CultureInfo newCulture = (CultureInfo)System.Globalization.CultureInfo.CurrentCulture.Clone();
  newCulture.Name = "zh-CN";
  System.Globalization.CultureInfo.CurrentCulture = new CultureInfo("zh-CN");
编译器错误信息: CS0200: 无法对属性或索引器“System.Globalization.CultureInfo.Name”赋值 -- 它是只读的
副本也不能修改-_-!!!
方法2:
  System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(0x0804);
  System.Threading.Thread.CurrentThread.CurrentCulture = ci; 
没报错,但没起作用。一点反应也没有,还是英文的,唉!


路过的朋友帮个忙看一下

------解决方案--------------------------------------------------------
C# code
    /// <summary>    /// 语言文化区域性控制    /// </summary>    public abstract class Culture : System.Web.UI.Page    {        /// <summary>        /// 重写Page基类的InitializeCulture方法。        /// 为页的当前线程设置 System.Web.UI.Page.Culture 和 System.Web.UI.Page.UICulture。        /// </summary>        protected override void InitializeCulture()        {            if (!string.IsNullOrEmpty(CultureCache))            {                SetCulture(CultureCache);            }            else            {                SetCulture(DefaltCulture);            }        }        /// <summary>        /// 设置指定文化        /// </summary>        /// <param name="culture">有效的区域性名称</param>        public static void SetCulture(string culture)        {            try            {                Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);                Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);            }            catch            {                culture = DefaltCulture;                Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);                Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);            }            CultureCache = culture;            UICultureCache = culture;        }        /// <summary>        /// 获取当前应用程序默认文化        /// </summary>        public static string DefaltCulture        {            get            {                string culture = ConfigurationManager.AppSettings["Culture"].ToString();                if (string.IsNullOrEmpty(culture) || culture == "auto")                {                    return Thread.CurrentThread.CurrentCulture.ToString();                }                return culture;            }        }        /// <summary>        /// 存储当前Culture Session        /// </summary>        public static string CultureCache        {            get            {                try                {                    return HttpContext.Current.Request.Cookies[ConfigurationManager.AppSettings["CultureCache"].ToString()].Value;                }                catch                {                    return string.Empty;                }            }            set { HttpContext.Current.Response.Cookies[ConfigurationManager.AppSettings["CultureCache"].ToString()].Value = value; }        }        /// <summary>        /// 存储当前UICulture Session        /// </summary>        public static string UICultureCache        {            get            {                try                {                    return HttpContext.Current.Request.Cookies[ConfigurationManager.AppSettings["UICultureCache"].ToString()].Value;                }                catch                {                    return string.Empty;                }            }            set { HttpContext.Current.Response.Cookies[ConfigurationManager.AppSettings["UICultureCache"].ToString()].Value = value; }        }    }
  相关解决方案