QT自动检测系统语言代码

来源:互联网 发布:java 模块化 编辑:程序博客网 时间:2024/06/16 22:26
网上有大量的关于QT的多语言装载翻译文件代码,但是都是直接在程序写硬编码或者有界面列表来选择。

但是最友好的方式,自动检测操作系统的语言的,根据语言自动加载相关界面翻译文件。查阅QT帮助文档,发现QSystemLocale 是有语言和国家检测功能,这里如果要区别简,繁体区别,必须查CountryId. 经过实验,代码成功如下:

#include <QSystemLocale>#include <QVariant >#include<QTranslator >#include "mainwindow.h"#include "logindialog.h"void LoadTranlateFile(QApplication * app){    //增加多语言支持    QSystemLocale locale;    QVariant val(QLocale::UnitedStates);    QString translatorFileName = "";    QTranslator *translator = new QTranslator(app);     //查询当前国别代码    val = locale.query(QSystemLocale::CountryId,val);   // QDebug()<< "val.int" << val.Int << ",china=" <<QLocale::China;    switch(val.toInt())        {         case QLocale::China:            translatorFileName = "BD4P-zh_CN.qm";            break;         case QLocale::Taiwan:             translatorFileName = "BD4P-zh_TW.qm";             break;        case QLocale::HongKong:            translatorFileName = "BD4P-zh_HK.qm";            break;        }        if (translatorFileName!="")        {#ifdef QT_DEBUG             translatorFileName = "D:\QT_project\BD4P-Manager\"+translatorFileName;#endif            if (translator->load(translatorFileName))            {             app->installTranslator(translator);            }        }}


0 0
原创粉丝点击