gpt4 book ai didi

c++ - 如何区分翻译不存在或翻译与来源相同?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:42:45 27 4
gpt4 key购买 nike

我正在使用 QCoreApplication::translate() 来翻译文本。

我想了解一个字符串是否有翻译。

Qt 文档指出:

If none of the translation files contain a translation for sourceText in context, this function returns a QString equivalent of sourceText.

我面临的问题是我得到的结果与此类似:

<message>
<source>Side</source>
<translation>Side</translation>
</message>

来源和翻译相同。

在许多语言中,翻译确实与源代码相同。但是如果 translate("Side") 返回 "Side",我无法判断翻译是否完全是 "Side" 或者翻译是空的。

如何区分这两种情况?

最佳答案

据我所知,无法通过 QTCoreApplication::translate 调用来区分这两种情况。

但是,QTranslator::translate 在找不到 key 时返回空 QString (Qt 5)。因此,一种选择是为您通过 installTranslator() 添加的每个 QTranslator 保留一个容器(因为 QCoreApplication 没有找回那些的方法)。然后,遍历该容器,对容器中的每个实例调用 QTranslator::translate()。当你得到一个非空的结果时,你找到了一个翻译;如果没有翻译器成功,那么您就知道该 key 不存在于您拥有的任何 QTranslator 中。

伪代码:

bool hasTranslation(const char* key)
{
QString result;
if(!translators.size())
return false;

for(const auto& translator : translators)
{
result = translator->translate("context", key);
if(!result.isNull())
break;
}
return !result.isNull();
}

关于c++ - 如何区分翻译不存在或翻译与来源相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660276/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com