我的想法是使用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# – 单元测试本地化字符串所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)