首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >.NET中覆盖栽培专用资源的可靠计算

.NET中覆盖栽培专用资源的可靠计算
EN

Stack Overflow用户
提问于 2017-03-04 09:02:44
回答 1查看 99关注 0票数 1

从标题上很难猜出我的意思,所以让我详细说明一下。

我有一个将资源(resx)用于翻译的应用程序。我有包含所有字符串的标准Strings.resx文件,以及在特定xx-XX区域性中重写它们的Strings.xx-XX.resx文件。初始Strings.resx文件具有字符串的X数,其中特定于区域性的Strings.xx-XX.resx文件的字符串数可能少于或等于X数。

我正在尝试编写一个函数,它能够可靠地计算出在该语言中有多少字符串被覆盖,与初始值相比,它可以给我一个很好的整体翻译百分比。

例如,我们总共有10个字符串,es-ES区域性中有6个字符串。当es-ES用户启动应用程序时,他将收到一条消息,即es-ES翻译已在60%的时间内完成。

到目前为止,我已经成功地编写了如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ushort defaultResourceSetCount = 0;
ResourceSet defaultResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.GetCultureInfo("en-US"), true, true);
if (defaultResourceSet != null) {
    defaultResourceSetCount = (ushort) defaultResourceSet.Cast<object>().Count();
}

ushort currentResourceSetCount = 0;
ResourceSet currentResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, false);
if (currentResourceSet != null) {
    currentResourceSetCount = (ushort) currentResourceSet.Cast<object>().Count();
}

if (currentResourceSetCount < defaultResourceSetCount) {
    // This is our percentage that we want to calculate and show to user
    float translationCompleteness = currentResourceSetCount / (float) defaultResourceSetCount;
}

上面的代码工作,但有很多方言的限制,我想解决。基本上,它只适用于在特定区域性中有特定区域性(如es-ESStrings文件)的非常一般的情况--如果用户使用其他东西,比如es-UY,他将从.NET of es-ES中得到一个退路,但这对我们的计算不起作用。我可以将GetResourceSet()中的GetResourceSet()布尔值转换为true,但是在原始Strings文件中声明的en-US字符串上,总是会得到形式上的回退,所以即使用户选择完全不同的文化,也总是有100%的翻译进度。

因此,基本上,以Strings.resx中的10个资源和Strings.es-ES.resx中的6个资源为例,应该会发生以下情况:

  • en-US培养完成100%。
  • 在使用en-GB文化时,我们得到了100%的完成,因为它回到了en-US,并且我们已经讨论了这个问题。
  • es-ES培养完成率达60%。
  • 在使用es-UY区域性时,我们获得了60%的完成,因为.NET认为es,然后es-ES作为后盾。注意,我们没有es,但是es-ES声明了。
  • 我们在使用zh-CN时得到0%的完成,即使我们已经讨论过的en-US是最严重的退步。

我想以最好的方式解决这个问题,我不太确定什么是是最好的方式--我认为简单地获取资源是有效的,但对方言是有效的,但是尝试所有的父母也不起作用,因为它总是会导致en-US。另一方面,我想假设任何比Strings.resx更好的退路都可以被认为是翻译的,因为es-ESes-UY用户是完全好的,但是en-USzh-CN是不好的。另一方面,en-US完全适合en-GB用户。

也许我可以在某种程度上比较两个ResourceSettryParents集,并比较哪些字符串是不同的?但是,这需要引用比较,因为某些字符串完全有可能在两种不同的语言中具有相同的翻译。有可能吗?

欢迎任何建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-11 08:13:21

这是我就这个问题想出的最好的办法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (CultureInfo.CurrentCulture.TwoLetterISOLanguageName.Equals("en")) {
    return;
}

ResourceSet defaultResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.GetCultureInfo("en-US"), true, true);
if (defaultResourceSet == null) {
    return;
}

HashSet<DictionaryEntry> defaultStringObjects = new HashSet<DictionaryEntry>(defaultResourceSet.Cast<DictionaryEntry>());
if (defaultStringObjects.Count == 0) {
    return;
}

ResourceSet currentResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true);
if (currentResourceSet == null) {
    return;
}

HashSet<DictionaryEntry> currentStringObjects = new HashSet<DictionaryEntry>(currentResourceSet.Cast<DictionaryEntry>());
if (currentStringObjects.Count >= defaultStringObjects.Count) {
    // Either we have 100% finished translation, or we're missing it entirely and using en-US
    HashSet<DictionaryEntry> testStringObjects = new HashSet<DictionaryEntry>(currentStringObjects);
    testStringObjects.ExceptWith(defaultStringObjects);

    // If we got 0 as final result, this is the missing language
    // Otherwise it's just a small amount of strings that happen to be the same
    if (testStringObjects.Count == 0) {
        currentStringObjects = testStringObjects;
    }
}

if (currentStringObjects.Count < defaultStringObjects.Count) {
    float translationCompleteness = currentStringObjects.Count / (float) defaultStringObjects.Count;
    Console.WriteLine("Do something with translation completeness: " + translationCompleteness);
}

它只需要两个相当不错的假设:

  1. 当前的文化资源集不能拥有比我们默认的(en-US)区域性更多的资源,在只进行翻译时总是这样。
  2. 如果我们有100%完成的翻译,我们必须至少有一个翻译的资源,有不同的表现形式与原始的默认字符串,否则,没有办法说这是打算翻译的资源集,还是默认的资源从en-US。

我对这个解决方案很满意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42598732

复制
相关文章
echarts 图例修改legend中icon的形状及大小
ECharts 提供的标记类型有 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
李维亮
2021/07/08
11.1K0
cmd输入java有效,输入javac无效解决方案
运行cmd的时候,输入java会有输出,但是输入javac的时候就报javac不是内部或外部命令的错误。
全栈程序员站长
2022/08/24
1.4K0
cmd输入java有效,输入javac无效解决方案
Excel中的无效链接(1)
我们可以断定是C4和G4这两个单元格使用了“河北省”,修改他们的值即可消除无效链接的错误。
东风压倒西风
2022/04/17
2.5K0
【pytorch】改造resnet为全卷积神经网络以适应不同大小的输入
因为resnet最后有一个全连接层。正是因为这个全连接层导致了输入的图像的大小必须是固定的。
西西嘛呦
2020/08/26
3.6K0
【pytorch】改造resnet为全卷积神经网络以适应不同大小的输入
Android为属性组件动画无效
本来我的代码是这样的 然后发现这动画只能在窗体onCreate的时候使用有效。 放在点击事件之类的就不行了。 后经百度发现需要开始动画而不是设置动画 carImg.startAnimation(animation);
SingYi
2022/07/13
7970
Android为属性组件动画无效
CNN中张量的输入形状和特征图 | Pytorch系列(三)
在这个神经网络编程系列中,我们正在努力构建卷积神经网络(CNN),所以让我们看看在CNN中的张量输入。
AI算法与图像处理
2020/04/20
3.8K0
CNN中张量的输入形状和特征图 | Pytorch系列(三)
JS输入框赋值无效踩坑
在我使用Js想要实现自动发帖的时候,需要向输入框中赋值,但现在许多的输入框需要先点击,将鼠标聚焦在框内才可以输入赋值。 如果没有聚焦直接输入,看上去值是输入了,但实际上是没有,再次点击提交后就会显示没有任何输入。
sugarbeet
2022/09/26
6.3K0
理解卷积神经网络中的输入与输出形状 | 视觉入门
即使我们从理论上理解了卷积神经网络,在实际进行将数据拟合到网络时,很多人仍然对其网络的输入和输出形状(shape)感到困惑。本文章将帮助你理解卷积神经网络的输入和输出形状。
磐创AI
2019/10/09
2.2K0
理解卷积神经网络中的输入与输出形状 | 视觉入门
人工智能系统可以调整图像的对比度、大小和形状
人工智能(AI)和艺术并没有你想象的那么对立。事实上,智能系统已经在与艺术家合作,帮助艺术家创作歌曲,制作油画作品,以及制作彩色标识。现在,一名软件开发人员利用人工智能的生成能力来操纵图像中的对比度、颜色和其他属性。
AiTechYun
2018/12/29
1.8K0
人工智能系统可以调整图像的对比度、大小和形状
无效学习 VS 有效学习 (1)
上次我提到了「熵增定律」这个模型, 它告诉我们,要想在地球上生存下去,就要「熵减」,以应对环境的熵增。 那我们为什么要学习?归根结底不是为了生存吗? 那什么是有效学习,什么是无效学习呢? 你可以说,这简单,用你上面那句话套。 凡是符合“熵减”的,都是有效学习。 具体一些呢? …… 还记得昨天说的“外力做功”吗? (我们可以从“房间里放书本”这个例子得到启示) 关于无效学习,我总结了以下四点: 操作多,用脑少 没有明确目标 注重输入,不输出 知识不整理,越积越乱 (由于篇幅过多,我会组成一个系列,分
程序媛淼淼
2022/09/01
2920
输入技巧1
在不知道需要输入多少个数,每个数之间有个空格,当输入换行时结束,如何进行读入操作。
Lokinli
2023/03/09
1190
JavaScript 判断输入的值为数字
使用js自带全局函数isNaN(), isNaN()返回一个Boolean值,如下 :
Devops海洋的渔夫
2019/06/02
3.5K0
oracle APEX中:对于Dialog的做法(1)
APEX中:Dialog的做法(1):利用分支branch跳转 但是需要有提交的动作
用户10510205
2023/04/27
5540
CNN 卷积层输入Map大小计算
对于输出的size计算: out_height=((input_height - filter_height + padding_top+padding_bottom)/stride_height )+1 out_width=((input_width - filter_width + padding_left+padding_right)/stride_width )+1 在以下情况下: 1.四边的padding大小相等。padding_top=padding_bottom=padding_lef
10JQKA
2018/05/09
4010
@Valid 无效,BindingResult中的error为0,解决方案
加上以下依赖即可 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.5.Final</version> </dependency>
devi
2021/08/19
9560
cmd输入java, javac命令都无效详细解决方案
安装jdk后,配置完环境变量,可在cmd输入java和javac都无反应或是提示java不是内部或外部指令
全栈程序员站长
2022/09/01
7.5K1
[知乎作答]·神经网络对于输入的维度不一致的处理
[知乎作答]·神经网络对于输入的维度不一致的处理 本文内容选自笔者在知乎上的一个作答,总结下来作为神经网络对于输入的维度不一致的处理教程。。 1.问题描述 神经网络中,如果每次输入的维度不一致应该怎么处理? 神经网络中,如果每次输入的维度不一致应该怎么处理?假设一队人,有时候这队人有三个(3个输入神经元),有时候这堆人有四个(四个输入)。 2.笔者作答 由于一般网络对输入尺寸有固定的要求。这是为什么呢?因为网络的机构和参数决定了需要固定。这是一个在深度学习开发很常遇到的问题。 解决方
小宋是呢
2019/06/27
3K0
输入年份判断是否为闰年
输入年份判断是否为闰年 运行结果 代码 //导包 import java.util.Scanner; //声明一个类名为Test的类 public class Test { //mian方法 程序入口 public static void main(String[] args) { // 判断是否是闰年 //键盘输入 Scanner scan = new Scanner(System.in); System.out.println("******判断是否是闰年*****
是阿超
2021/10/15
1.9K0
jface databinding:输入无效数值时强制恢复初始值-updateModelToTarget
本文讲述通过自定义Binding,实现floatValue文本框和float类型的绑定,并支持数据校验。通过示例代码,展示了如何在SWT Binding的简单应用场景。同时分析了ValueBinding的实现原理,以及其与Binding的区别。
10km
2018/01/03
1.1K0
jface databinding:输入无效数值时强制恢复初始值-updateModelToTarget
点击加载更多

相似问题

RuntimeError:形状'[1,1024]‘对于大小为50176的输入无效

11

RuntimeError:形状'[-1,784]‘对于大小为614400的输入无效

112

RuntimeError:形状'[128,-1]‘对于大小为378的火把输入无效

220

错误:形状'[-1,270000]‘对于大小为1440000的输入无效

20

RuntimeError:形状'[-1,1031]‘对于大小为900的输入无效

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文