.在工程文件添加
TRANSLATIONS = debug/lang_English.ts \
debug/lang_Chinese.ts .在需要翻译的地方用上tr
例如:setText(tr("hello world")); .提供一个更改语言的接口
void MainWindow::changeTr(int language) .重载void changeEvent(QEvent *e); 对语言改变事件进行处理 .利用qt语言家更新翻译,手工翻译生成的.ts文件之后,再进行发布翻译

下面是个简单例子:

//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include <QLabel> namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow(); void changeEvent(QEvent *e); void changeTr(int language_label); private:
Ui::MainWindow *ui;
QLabel *label,*label1;
}; #endif // MAINWINDOW_H
//mainwindows.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QTranslator>
#include <QDebug> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
label = new QLabel(this);
label1 = new QLabel(this); label->setText(tr("hello world"));
label1->setText(tr("hello")); label1->move(label->x(),label->y()+label->height()); ui->setupUi(this); } MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::changeTr(int language_label)
{
QString qmFilename;
static QTranslator* translator;
if (translator != NULL)
{
qApp->removeTranslator(translator);
delete translator;
translator = NULL;
}
translator = new QTranslator(this); QString runPath = QCoreApplication::applicationDirPath(); //获取文件运行路径
qDebug() << runPath;
if(language_label==)
{
qmFilename = runPath + "/lang_Chinese.qm";
}
else
{
qmFilename = runPath + "/lang_English.qm";
}
qDebug() << qmFilename;
if (translator->load(qmFilename))
{
qDebug() << "installTranslator";
qApp->installTranslator(translator);
}
// ui->retranslateUi(this); // 重新设置界面显示
} void MainWindow::changeEvent(QEvent *e)
{
// MainWindow::changeEvent(e);
switch (e->type())
{
case QEvent::LanguageChange:
qDebug() << "changeEvent" << e->type();
label->setText(tr("hello world"));
label1->setText(tr("hello"));
ui->retranslateUi(this);
break;
default:
break;
}
}
//main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QThread>
#include "stdlib.h" int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w; // w.changeTr(1); w.show();
w.changeTr(); return a.exec();
}

Qt实现多国语言(即界面翻译)可实时进行切换的更多相关文章

  1. C#实现多国语言的界面切换

    在PictureStudio中,我需要实现多国语言的界面切换,而且切换各种语言版本的时候希望程序是动态的加载语言,不希望切换语言后重新启动程序. 实现这样的功能可以有很愚蠢的方法,比如说你可以在程序中 ...

  2. (2)esp8266多国语言翻译系统

    http://bbs.mydigit.cn/simple/?t2649513.html 这个想法不错 原来只是想用esp8266搞一个百度的多国语言翻译系统出来的,只是为了尝试如何调用各种web ap ...

  3. 解析大型.NET ERP系统 多国语言实现

    实现多国语言有许多种实现方案,无外乎是一种字符串替换技术,将界面控件的文本标签替换成相应语言的文字..NET Windows Forms实现多国语言的方法有以下几种: 1 .NET的方案,使用资源文件 ...

  4. 高质量,高效率的多国语言软件开发(Web/PC/Mobile),使用接口约束/调用不同语言资源

    偶然间翻出了几年前写的一个小程序,把当时的资料整理整理分享一下. 当时为了给自己的软件实现多国语言功能,而开发的辅助工具:SE String Resource. 这是当时基于自己另一款 IDE 软件抽 ...

  5. 引擎设计跟踪(九.8) Gizmo helper实现与多国语言

    最近把gizmo helper的绘制做好了. 1.为了复用代码,写了utility来创建sphere, cube, cylinder, plane, ring(line), circle(solid) ...

  6. Inno Setup:获取isl中的多国语言字串

    原文 http://zwkufo.blog.163.com/blog/static/25882512010101041626803/?suggestedreading&wumii 用InnoS ...

  7. WPF应用程序支持多国语言解决方案

    原文:WPF应用程序支持多国语言解决方案 促使程序赢得更多客户的最好.最经济的方法是使之支持多国语言,而不是将潜在的客户群限制为全球近70亿人口中的一小部分.本文介绍四种实现WPF应用程序支持多国语言 ...

  8. Vnc自动登录器-多国语言绿色版

    推荐:介绍一个VNC连接工具:iis7服务器管理工具.IIs7服务器管理工具可以批量连接并管理VNC服务器.作为服务器集成管理器,它最优秀的功能就是批量管理windows与linux系统服务器.vps ...

  9. WinCE6.0多国语言软键盘

    N久以前写过一篇<WinCE下自定义的大软键盘>,这个自定义软键盘就是为RM905a+项目来做的.RM905a+的系统分辨率是640*480,WinCE原生键盘小的太小,大的又太大.所以就 ...

随机推荐

  1. vi操作笔记一

    vi命令  gg 到首行 shift + 4 跳到该行最后一个字符 shift + 6 跳到该行首个字符 shift + g 到尾行 vi 可视 G 全选 = 程序对齐   gg 到首行 vi 可视  ...

  2. *【Python】【demo实验31】【练习实例】【使用turtle画小猪佩奇】

    如下图小猪佩奇: 要求使用turtle画小猪佩奇: 源码: # encoding=utf-8 # -*- coding: UTF-8 -*- # 使用turtle画小猪佩奇 from turtle i ...

  3. [转帖]Docker 入门教程

    Docker 入门教程 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html 自己学的还是太肤浅啊.. 作者: 阮一峰 日期: 201 ...

  4. win10下访问vm虚拟机Linux服务

    一.环境 win10操作系统 centos6.5 VMware® Workstation 14 Pro虚拟机 二.互相访问设置步骤 1.查看如下图所示 2.记住上面的IP和网关,进行如下图操作 点击应 ...

  5. 处理idea加载不到Spring的xml或者properties配置文件

    在pom文件的 标签钱添加以下代码 <!--防止ieda加载不到xml或者properties文件开始--> <resources> <resource> < ...

  6. LC 200 Number of Islands

    问题描述 Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is ...

  7. vimdiff、rev命令

    一.vimdiff:可视化比较工具 语法:       vimdiff [选项] file1 file2 [file3 [file4]] gvimdiff 描述       Vimdiff在两个(或三 ...

  8. Spectral Norm Regularization for Improving the Generalizability of Deep Learning论文笔记

    Spectral Norm Regularization for Improving the Generalizability of Deep Learning论文笔记 2018年12月03日 00: ...

  9. Scala学习六——对象

    一.本章要点 用对象作为但例或存放工具的方法 类可以拥有一个同名的伴生对象 对象可以扩展类或特质 对象的apply方法通常用来构造伴生类的新实例 如果不想显示定义main方法,可以扩展App特质的对象 ...

  10. sql lesson21homework

    2017-08-15 18:03:17 mysql> show databases;+--------------------+| Database           |+---------- ...