qml国际化

http://qt-project.org/wiki/How_to_do_dynamic_translation_in_QML

qml  internationalization  步骤
	一、对需要国际化的地方加上qsTr        eg.   text: qsTr("Welcome to china!");
	
	二、生成ts文件:  
		ts文件生成方法:			在Qt Command Prompt命令行中使用lrelease生成		eg.     lupdate  main.qml -ts t1_fr.ts
		可以同时对qml文件生成多种语言的ts文件									eg.     lupdate  main.qml text.qml button.qml -ts t1_fr.ts t1_en_ts
		note:  ts不会覆盖,可以多次lupdate更新
		
	三、使用Qt自带的Linguist工具翻译为目标语言	
	
	四、生成qm文件,既是我们需要的语言转换文件			
			可以使用两种方法生成:   1、命令行中使用lrelease生成qm文件	eg.  lrelease t1_fr.ts
									2、使用Linguist自带的工具, 点击 文件->发布(release)既可生成qm文件
									
	五、使用Translator类load qm文件  再install Translator
		eg.   QTranslator * translator; = new QTranslator(this);			translator->load("t1_fr", ".");
		qApp->installTranslator(translator);
		
	六、动态切换语言时需要notifiy每个qsTr的string来刷新显示   方法如下:
		Q_PROPERTY(QString emptyString READ getEmptyString NOTIFY languageChanged)		languageChanged为信号
		可以用qsTr("Welcome to china!") + emptyString的方法  (note: emptyString 需要暴露给qml,具体方法查看qt文档)。
		
	七、关于国际化 ListElement中的数据方法有两种:   举例说明:
		1、ListElement使用QT_TR_NOOP进行标记,在使用时用qsTr翻译
			eg1.   
			ListModel {
				id: listModel
				ListElement {title: QT_TR_NOOP("Math");}
				ListElement {title: QT_TR_NOOP("Chinese");}
				ListElement {title: QT_TR_NOOP("English");}
				ListElement {title: QT_TR_NOOP("Sports);}
			}
			delegate: {
				text: qsTr(title);
			}
		2、在ListElement中用js function进行返回
		ListModel {
			id: listModel_2
			ListElement {}
			ListElement {}
			ListElement {}
			ListElement {}
			function title(index) {
				if ( title[ "text" ] === undefined) {
					title.text = [
						qsTr( "Math" ) ,
						qsTr( "Chinese" ) ,
						qsTr( "English" ) ,
						qsTr( "Sports" )
					]
				}
				return title.text[index]
			}
		}
		
		delegate: {
			text: title(index);
		}

		

  

转载于:https://www.cnblogs.com/fuyanwen/p/3585025.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值