Qt的多语言翻译功能及步骤

1. 生成*.qm文件

一般Qt环境下会有lupdate、lrelease、linguist等工具,路径在“Qt安装目录/~~/gcc/bin/”下面,介绍如下:

1) lupdate: 所带参数是qt程序的工程文件名,即*.pro文件,执行后会产生语言翻译使用的*.ts文件,里面包含了用户程序中用tr()函数括起来的字符串,该文件为xml格式,用户根据对应位置的字符串将译文替换保存即可。

2) linguist: 一种*.ts文件的编辑工具,对 lupdate产生的*.ts文件进行可视化译文填写,当然,我们也可以采用其他编辑工具直接编辑,只是该工具带图形界面,比较直观。

3) lrelease: 所带参数是*.ts文件名,执行后会将*.ts文件转换为*.qm文件,供用户程序中引用QTranslator类的load函数加载,不同Qt版本产生的*.qm文件一般都强调内容可以调用

2. 加载qm文件(以波斯语为例)

QTranslator translator;
translator.load(QString("./persion.qm"));
qApp->installTranslator(&translator);
reset_text(); //每次加载qm文件,重新设置所有需翻译控件的text

3. 设置字体

1) 如果采用宋体等字体,则显示乱码或者框框。更换字体的方法,如果使用系统中Qt安装路径下~~/lib/fonts/已有的字体,则采用以下方式调用即可:

QFont font;
font.setFamily("arial");  //Arial为显示字体类型, 即ttf或者qbf文件名称
font.setPointSize(13);   //设置字体大小
Button->setFont(font);   //将字体使用到控件上

如果系统没有的字体,则从网络上下载*.ttf或者*.qbf字体文件,放到fonts目录下,并在~~/lib/fonts/font.dir文件中添加该字体记录,然后按照以上方式调用即可。

2) 阿拉伯语或者波斯语是从右到左进行书写的,不同编辑软件显示的文字方向可能不一样,比如波斯语,用QtCreator、word和execl表格显示方向有可能是相反的,复制粘贴也是相反的,网上有些文章说可以通过设置RTL布局的方式解决,但试过貌似解决不了。只能自己写算法将*.ts文件中的翻译文字顺序调转,根据波斯文字utf-8编码范围大概在0xD800-0xDBFF之间,利用这个特征和ascii编码范围区分即可,因为有可能夹杂英文字母和空格。

你可能感兴趣的:(qt编程)