c# – 单元测试本地化字符串

c# – 单元测试本地化字符串,第1张

概述我们的应用程序中有几千个本地化字符串.我想创建一个单元测试来迭代所有键和所有支持的语言,以确保每种语言都有默认(英语)resx文件中的每个键. 我的想法是使用Reflection来获取Strings类中的所有键,然后使用ResourceManager比较每种语言中每个键的检索值并进行比较以确保它与英语版本不匹配,当然,多种语言中的某些词语相同. 有没有办法检查ResourceManager是否从附 我们的应用程序中有几千个本地化字符串.我想创建一个单元测试来迭代所有键和所有支持的语言,以确保每种语言都有默认(英语)resx文件中的每个键.

我的想法是使用Reflection来获取Strings类中的所有键,然后使用ResourceManager比较每种语言中每个键的检索值并进行比较以确保它与英语版本不匹配,当然,多种语言中的某些词语相同.

有没有办法检查ResourceManager是否从附属程序集中获取其值与默认资源文件?

示例电话:

string en = resourceManager.GetString("MyString",new CultureInfo("en"));string es = resourceManager.GetString("MyString",new CultureInfo("es"));//compare here
解决方法 调用ResourceManager.GetResourceSet方法以获取中性和本地化区域的所有资源,然后比较两个集合:
ResourceManager resourceManager = new ResourceManager(typeof(Strings));IEnumerable<string> neutralResourcenames = resourceManager.GetResourceSet(CultureInfo.InvariantCulture,true,false)    .Cast<DictionaryEntry>().Select(entry => (string)entry.Key);IEnumerable<string> localizedResourcenames = resourceManager.GetResourceSet(new CultureInfo("es"),false)    .Cast<DictionaryEntry>().Select(entry => (string)entry.Key);Console.Writeline("Missing localized resources:");foreach (string name in neutralResourcenames.Except(localizedResourcenames)){    Console.Writeline(name);}Console.Writeline("Extra localized resources:");foreach (string name in localizedResourcenames.Except(neutralResourcenames)){    Console.Writeline(name);}
总结

以上是内存溢出为你收集整理的c# – 单元测试本地化字符串全部内容,希望文章能够帮你解决c# – 单元测试本地化字符串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存