想做一个可以在多种语言变化的软件,用户可以选择自己熟悉的语言。不简单的只判断当前系统的地域语言。我今天实验的代码是,首先定义了资源文件
放到了一个文件夹内,文件夹比如叫做LangRes
在这个文件夹内定义了三个资源文件 名称叫做LangRes.EN
LangRes.ja-JP
LangRes.zh-CHS定义之后,定义了新的culture = new CultureInfo("EN");
然后初始化ResourceManager类实例, =  new Res~~~("NameSpace名称.LangRes",assmbly);但是无法定位想要的en那个资源文件上面:???
为什么呢?
后来我把文件夹LangRes删掉,直接一级目录,后来只可以找到系统对应的地域特征语言,日语的~~~~别的都找不到,弄了很久也不好用
我在设置中也设置了embed编译。
大家帮帮忙~~

解决方案 »

  1.   

    你用下面创建方法看看呢
    ResourceManager rm = ResourceManager.CreateFileBasedResourceManager(资源名称, 目录, null);
      

  2.   

    不知道你是怎么找的,也不知道为什么要找
    下面是一个获取字符串资源的函数,指定一个culture就可以了
            /// <summary>
            /// 根据指定的关键字获取字符串资源
            /// </summary>
            /// <param name="szKeyName">字符串名字</param>
            /// <returns></returns>
            public static string GetString(string szKeyName)
            {
                string szValue = null;
                try
                {
                    szValue = resourceManager.GetString(szKeyName, cultureInfo);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                if (szValue == null)
                    return szKeyName;
                return szValue;
            }其中,resourceManager就是用上面创建方法创建的
      

  3.   

    不知道你那里怎么弄得,我这里是正常的我的资源文件夹下面有俩个文件
    ResLib.Text.Strings.en.resources
    ResLib.Text.Strings.zh-CN.resources然后,下面语句获取的中英文字符串资源都是正确的
    cultureInfo = new CultureInfo("en");
    szValue = resourceManager.GetString(szKeyName, cultureInfo);cultureInfo = new CultureInfo("zh-cn");
    szValue = resourceManager.GetString(szKeyName, cultureInfo);
      

  4.   

    不知道你那里怎么弄得,我这里是正常的我的资源文件夹下面有俩个文件
    ResLib.Text.Strings.en.resources
    ResLib.Text.Strings.zh-CN.resources然后,下面语句获取的中英文字符串资源都是正确的
    cultureInfo = new CultureInfo("en");
    szValue = resourceManager.GetString(szKeyName, cultureInfo);cultureInfo = new CultureInfo("zh-cn");
    szValue = resourceManager.GetString(szKeyName, cultureInfo);