我需要经常测试我的应用程序翻译成非英语语言,而为了做这个简单的检查而改变整个操作系统语言是非常不舒服的。 例如,如何使用环境变量更改 Qt 检测到的系统语言? 或使用命令行参数。
我尝试更改LANG
、LANGUAGE
环境变量,但没有任何效果。
但是,在 GNOME 下它有!
UPD:代码我正在使用这样的代码来确定系统区域设置并加载适当的翻译:
QTranslator app_translator;
if (!app_translator.load ("app_" + QLocale::system ().name (), app_tr_dir))
qWarning ("Can't load app translator file for locale %s from %s", qPrintable (QLocale::system ().name ()), app_tr_dir.toLocal8Bit().data());
else
app.installTranslator (&app_translator);
附言我的操作系统是 Kubuntu 13.10,Qt 版本是 4.8。
最佳答案
您始终可以通过 QLocale::setDefault() 方法更改语言环境。这是一个项目的示例:
void Language::setCurrentLanguage(Language::Languages language)
{
if (language == Language::Arabic) {
QLocale l(QLocale::Arabic, QLocale::SaudiArabia);
QLocale::setDefault(l);
dynamic_cast<MangoApp*>(qApp)->setLayoutDirection(Qt::RightToLeft);
dynamic_cast<MangoApp*>(qApp)->removeAllTranslator();
dynamic_cast<MangoApp*>(qApp)->loadQtTranslator();
dynamic_cast<MangoApp*>(qApp)->loadMangoTranslator();
} else {
QLocale l(QLocale::English, QLocale::UnitedStates);
QLocale::setDefault(l);
dynamic_cast<MangoApp*>(qApp)->setLayoutDirection(Qt::LeftToRight);
dynamic_cast<MangoApp*>(qApp)->removeAllTranslator();
}
}
关于c++ - 如何强制 QLocale::system 改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407377/