计算Android中翻译文本的百分比(values / strings.xml)

时间:2016-09-07 21:43:54

标签: android android-transitions

所以问题是如何从values-(lang)中计算strings.xml中翻译文本的百分比与值(默认语言)。

我知道如何从资源访问字符串,但没有选项来设置语言代码。我找到了一些改变现场的答案但我害怕"害怕"用另一种语言闪烁UI甚至几毫秒。

计划将是我将计算默认语言/值/中的字符串,并计入/ values-(userlang)/并且如果百分比将低于例如90%我会问用户(经常使用我的应用程序的人)和更长的时间)帮助翻译。

不需要完整的功能,只需从其他语言环境访问字符串(循环)的安全方法,而无需更改用户区域设置。

没有目标可以手动完成。制作手动差异是不可能的。

所以我已经找到了解决方案 定制的课程,但我想通过我的评级,没人会欣赏它,所以只是得到我想要的结果:

myTranslationRatio=new TranslationRatio(context,"en",deviceLang);

Log.d("my","myTranslationRatio getLangCore: "+myTranslationRatio.getLangCore());
Log.d("my","myTranslationRatio getLangCurrent: "+myTranslationRatio.getLangCurrent());
Log.d("my","myTranslationRatio getTranslatedRatio: "+myTranslationRatio.getTranslatedRatio());
Log.d("my","myTranslationRatio getCountCore: "+myTranslationRatio.getCountCore());
Log.d("my","myTranslationRatio getCountCurrent: "+myTranslationRatio.getCountCurrent());
Log.d("my","myTranslationRatio getCountToTranslate: "+myTranslationRatio.getCountToTranslate());

结果

: myTranslationRatio getLangCore: en
: myTranslationRatio getLangCurrent: cs
: myTranslationRatio getTranslatedRatio: 0.972973
: myTranslationRatio getCountCore: 148
: myTranslationRatio getCountCurrent: 144
: myTranslationRatio getCountToTranslate: 4

1 个答案:

答案 0 :(得分:0)

至于以编程方式设置语言代码,您可以查看this问题。确保阅读评论,因为那里有重要的观点。

假设您的template<typename T> void remove_intersection(std::vector<T>* c1, std::vector<T>* c2) { assert(c1 != nullptr); assert(c2 != nullptr); std::sort(std::begin(*c1), std::end(*c1)); // O(n1 logn1) std::sort(std::begin(*c2), std::end(*c2)); // O(n2 logn2) std::vector<T> difference1, difference2; difference1.reserve(c1->size()); difference2.reserve(c2->size()); std::set_difference(std::begin(*c1), std::end(*c1), std::begin(*c2), std::end(*c2), std::back_inserter(difference1)); // O(2*[N1 + N2 - 1]) std::set_difference(std::begin(*c2), std::end(*c2), std::begin(*c1), std::end(*c1), std::back_inserter(difference2)); // O(2*[N1 + N2 - 1]) *c1 = std::move(difference1); // O(1) *c2 = std::move(difference2); // O(1) } 文件的更新是通过应用更新静态完成的,那么我的第一直觉就是将您现有的strings.xml复制到您的新语言文件夹中并尝试使用差异来跟踪做得很多。