Qt 之 中英文切换的使用

本文详细介绍了在Qt应用中实现中英文切换的方法,并通过代码示例展示了如何在菜单项中设置中英文选项。同时,文章指导了如何使用lupdate.exe生成TS文件,利用Python脚本进行中英文翻译数据的批量处理,最后通过lrelease命令生成qm文件,完成国际化翻译。此外,文章还提供了在程序中安装翻译的步骤,确保应用在不同语言环境下正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt 之 中英文切换的使用

//写的不对的地方请指点

1  在代码中有tr("work") 有需要中英文切换的字符串
 ui.cbxPapersType->addItem(tr("IdCard"));   //0身份证
 ui.cbxPapersType->addItem(tr("Student"));//("学生证"));
 ui.cbxPapersType->addItem(tr("WorkPermit"));//("工作证"));
 ui.cbxPapersType->addItem(tr("Soldier"));//("士兵证"));
 ui.cbxPapersType->addItem(tr("GasCardin"));//("军官证"));  
 ui.cbxPapersType->addItem(tr("Passport"));//("护照"));
 ui.cbxPapersType->addItem(tr("HouseholdRegister"));//("户口本"));
 ui.cbxPapersType->addItem(tr("deformed"));  //2残疾证
 ui.cbxPapersType->addItem(tr("other"));     //3其他

2  在cmd命令行执行 生成ts文件
  lupdate.exe -ts  XXX.ts -pro XXXX.pro


3  下载pyhon,编写脚本 将XX.db 中的中英文翻译数据与XXX.ts文件中用到需要翻译的都翻译一下。生成XXXS.ts文件

import re
#import MySQLdb
import sqlite3
def getLan(lanName,mLanFile):
 contents_end = ""
 mWords = ""
 mRes = ""
 
 try:
  #traslate language from english to other language
  f = open('S:\py\XXX.ts','r')
  regex_msg=re.compile("<message>")
  regex_source=re.compile("<source>(.*)</source>")
  regex_translate=re.compile("<translation type=\"unfinished\">.*</translation>")
  regex_endmsg=re.compile("</message>")
        #conn = MySQLdb.connect(host='localhost', user='root', passwd='',db='convert')
  conn = sqlite3.connect("S:\py\XXX.db")

  for line in f:
   mMsg=regex_msg.search(line)
   mSource=regex_source.search(line)
   mTranslate=regex_translate.search(line)
   mEndMsg=regex_msg.search(line)
   if mMsg != None:
    bMsg = 1
   elif mSource != None:
    bSource = 1
    mWords = mSource.group(1)
    
    #cursor = conn.cursor()
    mSql = 'SELECT Chinese FROM translate WHERE English = "' + mWords + '" limit 1'
    #mSql = 'SELECT cn FROM lang WHERE en = "' + mWords + '" limit 1'
    #print mSql
    count = conn.execute(mSql)
    r = count.fetchone()
    
    #print count
    if r != None:
     #mRes = cursor.fetchone()
     mRes = r[0]
    else :
     mRes = ""
     
    #print mRes    
   elif  mTranslate != None:
    if (bMsg == 1) and (bSource == 1):
     line = "\t<translation>" + mRes + "</translation>\n"
     #print line
     bSource = 0
   elif mEndMsg:
    bMsg = 0
   #print line
   contents_end += line
   
  #print contents_end
  conn.close()
  f.close()
  f.tell()
 except ValueError as ioerror:
  print('file already closed')
 finally:
  print('Translate languages end')
 
 mLanFile = 'S:/py/XXS.ts'
 #print contents_end
 f = open(mLanFile,'w')
 f.write(contents_end)
 f.close()

4 lrelease 命令生成XXQM.qm文件,需要将XXX.ts文件的编码格式改成unicode

lrelease.exe  XXXS.ts


4  修改程序,在转换前(如main.cpp里)增加代码
    QTranslator qtTranslator ;
    qtTranslator.load("Language_Chn");
    a.installTranslator(&qtTranslator);

5  编译程序,运行程序。
    需要将qm文件放置在运行目录下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值