需要实现中,英两种版本如下几种情况能用资源文件解决吗?
1)aspx页面js代码包括中文,切换时要换成英文.2)<input type="text" id="test" tend="值值" value="">  //注:tend为自定义的属性,"值值"要如何换呢?3)用户名:<input type="text" id="username" runat="server"> //用户名要如何切换呢?请明细,谢谢·

解决方案 »

  1.   

    前面类似Title等切换比较简单:1. 用Tool里的Generate local resource,生成资源文件。
       相应的语言版本的资源文件可以自己拷贝生成,比如:中文的文件:Form1.zh-cn.resx
       在相应的Key里,设置相应的值就可以。
    2. 在相应页面,或者定义页面基类,重写InitializeCulture方法
    Protected Overrides Sub InitializeCulture()
            MyBase.InitializeCulture()
            Dim culture As String = Request("DropDownList1") '指定语言,中文:zh-cn, 英文:en-us等。
            If Not String.IsNullOrEmpty(Culture) Then
                Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo(Culture)
                Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Culture)
            End If
        End Sub这样你切换CultureInfo就能够实现自动切换。
      

  2.   

    1
    可以用后台取得,在js中再从后台取得值。
    2
    将html控件添加 runat="server" 属性后就可以和text属性一样绑定了:tend="<%$ Resources.Resource.zhizhi%>"
    3
    用户名还要切换干啥?!
      

  3.   

    可以把需要切换语言的字符串等放到js文件中,然后设置对应的标志,再通过js来设置
      

  4.   

    To:fangxinggood 
    请具体点,最好能给我一个实例,网上有很多,但一般不能满足上面我提到的3点.应用是asp.net(c#)
      

  5.   

    我是提问者
    对于第三点,用户名当然要切换,就是<input type="text"...前面的文字呀。
      

  6.   

    另外还有一点是:
    若采用资源文件的做法,岂不是每个aspx页面对应一个资源文件?若我有1000个aspx页面,资源文件就得有1000个。我更希望的是:希望它能加载我自定义的xml文件,我把所有翻译好的全放在一个xml中,方便维护。不知你是如何看这个问题的?谢谢
      

  7.   

    若采用资源文件的做法,岂不是每个aspx页面对应一个资源文件?若我有1000个aspx页面,资源文件就得有1000个
    ------------------
    不用啊~你一种语言用一个资源文件就可以了
      

  8.   

    你那个   用户名:
    不要用写的,也用个服务器控件,比如:
    <asp:Literal ID="Literal1" Text="<%$ Resources.Resource,username %>" runat="server"></asp:Literal>,
      

  9.   


    可以使用App_GlobalResource 
      

  10.   

    TO:sjt000 我发了在线聊天给你,请看下。加下我的Q。谢谢
      

  11.   

    然后在中文的资源文件里写上:
    username  用户名:
    英文的资源文件里写上:
    username  username:
      

  12.   

    请搜我以前回答的问题 多语言国际化 http://topic.csdn.net/u/20080226/15/0E00372F-8BDC-450C-BA51-32B7EC0A9636.html
      

  13.   

    http://www.cnblogs.com/uuwish/archive/2008/03/05/1090995.html
      

  14.   

    我是提问者:
    "用户名"采用<%=取资源文件中的值%>  是吗?请明细,我就是不明白这步
      

  15.   

    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>
            /// <res>若系統採用多語言則值為-1。</res>
            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;
      

  16.   

    TO:Kongwei521 
    请进来回答一下呀.
      

  17.   

    都给你了。、using FSSoft.Common;
    using FSSoft.Common.IO;
    using FSSoft.Common.TextUtil;
    这些是数据库类
      

  18.   

    TO:kongwei521 XMLUtil,consts_Web 这个就没有提供呀...要确保你的代码能编译.....一起发出来可以吗?主要是感觉你写的超好