關於Qt翻譯功能的一些小想法
- 2019 年 10 月 7 日
- 筆記
Qt翻譯功能最近用得好好的,卻是一份新需求導致對這一功能的思考。
最近接到一個新需求就是為公司的某個軟體添加多語言翻譯功能,由於之前已經做過類似的了。直接移植就可以了。可是實際上並不是那麼簡單,多語言共有9種。可是翻譯人員不會用Qt的語言家軟體。除了中英文自己翻譯外,其餘的7種語言都需要發給專門的翻譯人員翻譯。7種語言翻譯都統一弄成excel文本給他們翻譯,當他們翻譯完成後又一個一個對應的填在語言家軟體里,這操作做了兩份語言後,實在是受不了了。心裡碎碎念:這到底是什麼翻譯操作啊,太繁瑣了。
於是我不發excel文檔給他們翻譯了,和他們說你翻譯到Qt的語言家軟體吧。教他們安裝Qt語言家,並教他們如何使用。說多是淚,我一頓操作猛如虎,一問他們會不會,都說太難了!只好放棄這一想法。頓時陷入沉思中,究竟是誰走漏了風聲說:Qt翻譯很簡單的!!!
還有就是,語言家提供提取Qt項目文件的翻譯到文件,我想說的是這操作挺好的。但每次翻譯欄位更改的時候又要重新刷新一下翻譯文件,這設計太難用了。我們常用的思維應該是修改翻譯文本,再通過翻譯文本去修改Qt項目的翻譯欄位。
常常我們不論翻譯和不翻譯的文本都使用tr()
包含一下,但這是用錯了,或許有人會說:可以解決亂碼問題呀。只能說有些系統能解決亂碼問題。在沒有翻譯功能的前提下使用tr()
會造成額外性能負擔。還有就是tr()
會根據類名標記翻譯欄位,這一點很想不明白。作者可能是使用類似命名空間的做法來實現翻譯欄位的命名空間限制,實際使用上只會增加額外的使用負擔和學習成本。
回到最初問題(重複工作多),沒辦法只能寫一個小工具(csv轉qm),csv格式文件可以被excel打開,而工具可以直接將csv文件轉換為翻譯二進位(qm後綴文件),這樣就可以避免一個一個複製到語言家再翻譯了。而對翻譯人員也相對友好。
工具: