在pro文件中加入
TRANSLATIONS += DataProcess_zh.ts DataProcess_en.ts
在项目中加入QConfig.h QConfig.cpp
#include <QSettings>
class QConfig
{
private:
static QSettings* config;
public:
static void Init(const QString& path, const QString &fileName );
static void Destroy();
static QSettings& setting();
};
#include "QConfig.h"
QSettings* QConfig::config = 0;
void QConfig::Init(const QString &path, const QString &fileName)
{
if ( config != 0 )
{
delete config;
}
QString fullFilePath = path + QString("/Config/") + fileName;
config = new QSettings( fullFilePath, QSettings::IniFormat );
config->setIniCodec("UTF-8" );
}
void QConfig::Destroy()
{
if ( config != 0 )
{
delete config;
}
config = 0;
}
QSettings& QConfig::setting()
{
return (*config);
}
将配置保存在/debug/Config/Config.ini中
写函数
bool QSysApplication::InstallLanguageTranslator(int Language)
{
Log4Qt::Logger* log = Log4Qt::Logger::rootLogger();
if ( Language == ZH_LANGUAGE )
{
bool ret = m_translator.load("DataProcess_zh.qm") ;
if ( ret )
{
QCoreApplication::installTranslator(&m_translator);
}
else
{
LOG_QT_INFO(log, QString("load DataProcess_zh.qm Fail!") );
}
}
else if ( Language == ENGLISH_LANGUAGE )
{
bool ret = m_translator.load("DataProcess_en.qm") ;
if ( ret )
{
QCoreApplication::installTranslator(&m_translator);
}
else
{
LOG_QT_INFO(log, QString("load DataProcess_en.qm Fail!") );
}
}
else
{
LOG_QT_INFO(log, QString("unknown language id!") );
}
return false;
}
使用
QString curPath = QDir::currentPath();
QConfig::Init(curPath, QString("Config.ini") );
QSettings& cfg = QConfig::setting();
int Language = cfg.value( QString("COMMON/Language"), QVariant(0)).toInt(NULL);
InstallLanguageTranslator(Language);
生成翻译文件:
工具 -> 外部 -> Qt语言家 ->更新翻译
用QtLinguist翻译生成的.ts文件
工具 -> 外部 -> Qt语言家 ->部署翻译
将生成的.qm文件拷贝到.exe文件所在的位置
GET