Qt lupdate和QTranslator組源字符串轉換爲獨佔上下文。這意味着在一個上下文中定義的翻譯將不能在不同的上下文中訪問。將自定義QTranslator上下文自動化
C++中的默認上下文是覆蓋了QObject::tr()
的類的名稱。聲明式QML中的默認上下文是沒有擴展名的當前文件名。要覆蓋翻譯上下文,可以在C++或QML中使用qApp->translate("context", "source")
或qsTranslate("context", "source")
。
我希望能夠在一個大型項目中使用單個通用翻譯上下文,並且我發現用每一個翻譯函數指定翻譯上下文非常繁瑣。是否有任何現有的或未來的Qt翻譯框架擴展可以簡化這項任務?我正在尋找一些簡單的事情,如tr("source")
和qsTr("source")
,但使用系統範圍或項目範圍的默認上下文。有任何想法嗎?
這似乎工作得很好,謝謝! 「ID」可以是一個帶有空格和標點符號的複雜字符串,但它不會在語言學家中出現。相反,需要在'qtTrId()'/'qsTrId()'調用之前添加特殊的'//%'源文本''註釋。 ...或者編寫腳本以自動將ID字符串複製到源標記中。 :)希望我不需要在路上進行背景分離。 – Igor