有没有办法获得.net动态链接库的可用资源翻译?
我们的软件正在被翻译成一些不同的语言,我想让用户选择软件所用的语言,尽管我只想让他们在翻译成的语言之间进行选择。
发布于 2009-09-07 13:22:36
我只是遇到了类似的问题,所以只是为了将来的参考。
对于我的软件,翻译在程序文件夹中,每一个都在它们自己的子文件夹下,以区域性名称命名。代码解释了这一切:
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
发布于 2009-02-25 11:50:27
因此,您需要能够获取基本dll的区域性,然后枚举所有附属dll?
第一部分非常简单(只需获取程序集级属性)。
对于后者,在类ResourceManager上似乎没有帮助器,这意味着您需要模拟它的探测机制(可能包括属性和.config文件提供的所有覆盖)。
另一种选择是在构建或安装时构建列表(如果以后可以添加其他语言,后者会工作得更好),为.config文件创建一个列表。
https://stackoverflow.com/questions/585461
复制相似问题