找回密碼
 註冊
搜索
查看: 5214|回復: 0

[教學] [轉] 淺談Qt語言學家的使用

[複製鏈接]
發表於 4-11-2010 17:00:44 | 顯示全部樓層 |閱讀模式
原文: http://sunshine1106.blog.51cto.com/1371108/288875
! Y$ m$ R( A$ Z0 x/ D% c5 U" r: r! l9 iQT 開發網站: http://qt.nokia.com/title-cn
3 Q6 Q. h5 H/ r. _0 J/ Y# [* w
/ E: X+ T" t; G: U* C# R8 e$ p
開博前言:
5 X% I, E( X+ C' N! d2 R1 [3 [/ t! c" ~0 x$ A- E  G/ [( M
       由於學習和工作的需要,自己匆匆轉入到了一個還比較生疏的領域。在這當中,Qt成為自己必不可少的基礎工具。 關於Qt,它是一個多平臺的C++圖形用戶介面應用程式框架,能夠給應用程式開發者提供建立藝術級圖形用戶介面所需的所有功能,並具有擴展容易,允許元件編程的優點。在這裏,通過學習和應用,將自己在這當中對Qt使用方法的見解與各位分享,希望有所裨益。這是我的第一篇博文,難免有欠缺之處,還望指正!! T2 x' k& P0 j& g5 o  E! z% p

) {1 {- L0 F" T" f& W! _9 f3 c       對於Qt的學習,當然首先看的不應該是Qt語言學家的使用,畢竟對Qt的最基本應用、信號與槽的定義、語法規則等的認識是學習Qt翻譯工具的一個前提。只不過,我本人先用到了這裏,因而先談談個人對這一部分的的理解。% `  D% p" |; k+ O! W
        
% s9 K3 A& D/ U3 w7 l博文:
) s4 Q* q4 u' b! q# A3 G3 W2 u5 ^8 S( P9 L
       關於Qt語言學家的功能及介紹,在這裏不再贅言。在Qt語言學家中,發佈管理器提供了兩個工具,即lupdate和lrelease,它們都是命令行工具,依賴qmake的專案檔,即應用程式的*.pro專案檔。在某種意義上,甚至可以這樣簡單理解:通過使用lupdate工具,鏈結到*.pro專案檔生成或更新為一個尾碼為ts的(*.ts)翻譯原始檔案,翻譯人員可使用Qt Linguist打開*.ts檔並將當中需要翻譯的短語或語句進行準確翻譯(甚至於要求語句中標點符號的格式都要保持一致),保存之後,再通過lrelease工具讀取*.pro專案檔並根據專案檔中列出的每一個*.ts原始檔案生成一個應用程式需要的尾碼為qm的(*.qm)檔,應用程式最後實際上調用的就是這個的*.qm檔,它是一個緊湊的二進位格式,可以提供更快速的翻譯查找。將其替換到應用程式能夠調用得到的路徑。/ p$ r" J, C3 B7 H$ F% {& V9 R

# L! l( W* u. E7 c  b- o& k在上一篇中,只是簡單地說明了一下有關QT語言翻譯工具的大概使用方式,但也很明顯地存在不盡明瞭和疑問的地方,沒有一點相關Qt知識儲備,甚至很難理解我寫的那些文字,在這裏,我想用自己所知道的對其進一步加以完善。& w' ^' }$ B7 p3 E. l: d' Z
- y' k! R( [( y4 v
         通過使用Qt Linguist工具時,可以有兩種方式進行下一步操作(Windows作業系統)。首先說明第一種,在一個軟體系統中存在*.pro的工程檔,因而我們可以借此通過採用命令行的形式生成最終所需要的或更新過的*.qm檔,但前提是,如果是更新*.ts和*.qm檔,則須將最後生成的*.qm檔放到系統能夠調用得到的檔中去,否則,打開軟體查看,結果還和上一次一樣,並沒有更新自己剛剛翻譯過的內容。
4 P, N- `5 ~1 h: Y. a
. p. z9 A+ H6 j2 z0 y" F3 r! O        舉例說明,如果在E盤一個名為example的檔夾下放置了自己所要用到的(*.pro)專案檔(假設為myproject.pro),先將命令行替換到example的路徑下,因為通過命令行形式生成系統所需要的*.ts原始檔案,需要調用該工程檔,如果沒有設置好路徑,肯定是不能進行下一步操作的。設置好路徑後,如:E:\...\...\example>,使用lupdate工具,可用如下命令行形式:E:\...\...\example> lrelease myproject.pro,按回車件,會在原設置的路徑下,即example檔中生成一個尾碼為ts的翻譯原始檔案,這裏假設為檔案名為tt1.ts,應該說,這樣第一步工作就暫時做好了。接下來,要使用Qt Linguist打開剛開生成的tt1.ts檔,把內部需要翻譯的內容翻譯成文字後點保存。然後再回到運行的環境中,用命令行E:\...\...\example> lrelease tt1.ts生成最終系統能夠調用的*.qm檔,這樣就得到了我們整個操作過程最終需要的。但必須強調指出,這還不是最後一步操作,這裏生成的*.qm檔仍保存在原設置的目錄下,並不能為系統所調用,因而還需把該檔移動到系統所能調用的目錄下。# @) G/ K, [" p: Z

  f+ ]( F1 U/ N3 z: k; w- Z        這樣,第一種方式就算完成了。但在實際操作中,還是會遇到不小的挫折。因為按上述方式下來,最後調試程式時也許會發現需要翻譯的內容並沒有完全顯示或出現在*.ts文件中。即使是更新翻譯的內容,用Qt Linguist打開*.ts檔後,其中某一部分內榮並不顯示為黑色實體,而是成為不能改動的灰體了,或者沒有把所有的內容給完全顯示出來。這個時候,即使想進行翻譯,也無可奈何,不能把所有的內容都完成翻譯會最終系統的顯示。其實,這是因為前面路徑設置的(*.pro)專案檔中並沒有完全包含所有的系統內容,尤其是系統插件。這時的翻譯原始檔案*.ts是依賴於專案檔而生成的,所以也導致了翻譯的內容不完全。這時,我們可以採用下面的第二種方式。
& y- s5 ^& [" d5 }3 o3 M6 E& ?
1 w( [* @' J7 [3 R2 O          不得不說,接下來我要說的是一種非主流方式,也許或者說肯定還存在其他更好的方式,但這種方法也還是比較實用的,應用人員可選擇性的採用,有更好的方法,還煩請與我介紹一下,在這裏表示感謝了。
5 X0 _# |: a) }2 i+ M# W# G9 Q9 Q: ?) e: W/ S
         如果系統已經生成了*.ts檔,則可不必再採用lupdate myproject.pro命令行工具,直接使用Qt Linguist打開該*.ts檔即可。然後在右上欄中翻譯文字,確認完成之後點擊保存,再選擇檔中的release選項生成*.qm檔,值得說明的是,這時用戶可以直接設置好*.qm檔的保存路徑,而不需要像之前所述,另行移動*.qm檔到指定路徑,可謂節省不少時間和力氣。" k5 l* b% v( \" Z
# _. g& P7 V4 \6 a3 p& w$ Q; i
         用到這就好了嗎?答案是否定的,要不然就想之前第一種方式中所說的遇到了瓶頸,卻無可奈何了。在說下面之前,我要向各位推薦一個軟體——UltraEdit,這是一個可以同時編輯或查看多種不同類型檔的一軟體,有興趣的用戶可以試用一下,還是比較實用的一個軟體。還是進入我們的正題,還需要說明的是,這種方式更多的是適用于更新或添加的翻譯的內容,尤其適用於含有插件的大的程式。通過這個軟體可以直接打開*.ts檔,同時也可直接在裏面編輯。初次查看裏邊的內容,可能一下子會有點蒙,不過仔細看好了就會使用了,找到竅門也不會花太多時間的。找到自己需要添加或修改的檔,直接在裏面添加新的需要的翻譯的原文和翻譯的文字即可,或修改舊有的內容(這種情況下,用Qt Linguist會更加方便)。如下示:
4 ^" R9 I7 U2 m& L' s: D+ P# E% z/ H6 Z
    <message>' d+ L9 V5 Q5 {2 P$ w# G! @
        <source>Load BMP Files</source>' @; C5 a" Y% b
        <translation type="unfinished">載入BMP檔</translation>9 o" G# I2 q: ?) L/ c
    </message>7 B1 j' `  ]. n- W- o/ \

& q# S! D( G- K- y' F8 r/ N5 f     以<message>和</message>及其中間部分為一個單位,可添加新的內容或修改,應該說還是比較方便和實用的,不失為一種可解決的實用方式。完成修改後點擊保存,在通過Qt Linguist的release生成*.qm檔即可,接下來的步驟同上,不再贅述。' ], _3 y$ [' R( M6 O( `

% }' ?5 [* Y) [; e; t0 P* R" J     以上為兩種用於Qt翻譯工具的使用方法,如有其他更好的或可行的方式,還請不吝引薦。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|歡迎光臨 Julybee Club

GMT+8, 27-10-2026 16:50 , Processed in 0.185444 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表