• 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);
    		}
    
    		
    

      

  • 相关阅读:
    php 数组处理
    PHP 递归几种方法
    PHP取一算法
    oracle的db link
    sql2008破解加密存储过程
    ATT 解锁手机
    jQuery 通配符
    win10 Enable developer Mode
    Win8.1 远程桌面 凭据无法工作
    html5media.js 让浏览器兼容<Video><Audio> 标签
  • 原文地址:https://www.cnblogs.com/fuyanwen/p/3585025.html
Copyright © 2020-2023  润新知