所以问题是如何从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
答案 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
复制到您的新语言文件夹中并尝试使用差异来跟踪做得很多。