AFAIK,没有办法。该translate
函数以下列方式工作:它遍历所有可用于应用程序的翻译器,并尝试用它们翻译源文本。如果成功,它会立即跳出循环并返回翻译后的文本。如果上述循环已经完成,但没有找到翻译,它会以 QString 的形式返回源文本:
QString QCoreApplication::translate(const char *context, const char *sourceText,
const char *disambiguation, Encoding encoding, int n)
{
QString result;
if (!sourceText)
return result;
if (self && !self->d_func()->translators.isEmpty()) {
QList<QTranslator*>::ConstIterator it;
QTranslator *translationFile;
for (it = self->d_func()->translators.constBegin(); it != self->d_func()->translators.constEnd(); ++it) {
translationFile = *it;
result = translationFile->translate(context, sourceText, disambiguation, n);
if (!result.isEmpty())
break;
}
}
if (result.isEmpty()) {
#ifdef QT_NO_TEXTCODEC
Q_UNUSED(encoding)
#else
if (encoding == UnicodeUTF8)
result = QString::fromUtf8(sourceText);
else if (QTextCodec::codecForTr() != 0)
result = QTextCodec::codecForTr()->toUnicode(sourceText);
else
#endif
result = QString::fromLatin1(sourceText);
}
replacePercentN(&result, n);
return result;
}
如果您真的需要能够知道是否可以找到翻译,则必须继承QTranslator
类并覆盖它的translate()
功能(因为translate()
inQCoreApplication
是非虚拟的)。