代码之家  ›  专栏  ›  技术社区  ›  Stormenet

如何从dll获取可用的翻译

  •  1
  • Stormenet  · 技术社区  · 16 年前

    是否有方法获取.net dll的可用资源翻译?

    我们的软件正在被翻译成一些不同的语言,我想让用户选择软件的语言,尽管我只想让他们在翻译的语言之间做出选择。

    2 回复  |  直到 16 年前
        1
  •  2
  •   kyrisu    16 年前

    我刚刚遇到了类似的问题,仅供将来参考。

    我的软件翻译都在程序文件夹中,每个翻译都在以区域性名称命名的子文件夹下。代码解释了这一切:

        private void SettingsForm_Load(object sender, EventArgs e)
        {
       // load default language to the list
            languageList.Add(new Language("English", "en"));
            string fileName = "myProgram.resources.dll";
    
       // load other languages available in the folder
            DirectoryInfo di = new DirectoryInfo(Application.StartupPath);
            foreach (DirectoryInfo dir in di.GetDirectories())
            {
                if (File.Exists(dir.FullName + "\\" + fileName))
                {
                    try
                    {
                        CultureInfo ci = new CultureInfo(dir.Name);
                        languageList.Add(new Language(ci.NativeName, ci.Name));
                    }
                    catch
                    {
                        // whatever happens just don't load the language and proceed ;)
                        continue;
                    }
                }
            }
        }
    

    它会增加一些异常处理开销,但有多少用户会在安装目录中创建自定义文件夹,并将假冒资源命名为本地化文件??P

        2
  •  1
  •   Richard    16 年前

    第一部分很简单(只需获取程序集级别属性)。

    另一种方法是在构建或安装时构建列表(如果以后可以添加其他语言,后者会更好),为.config文件创建一个列表。