筆者今天在自己工程中使用翻譯文件,發現沒有起作用,反復查找,發現是用宏定義了命名空間,生成.ts文件時,不會加上命名空間,所以生成的.qm文件在實際使用時,會無法找到對應的語句。
如果將宏定義的命名空間修改為普通字符,則沒有上述問題。
剛才是namespace MyProject{ 是用#define USNS namespace MyProject{定義好宏,直接使用宏的,所以生成文件,不能自己將宏轉換導致
總結一下翻譯碰到要注意的幾個問題:
1,基本使用
QTextCodec * textCodec = QTextCodec::codecForName("System"); QTextCodec::setCodecForLocale(textCodec); QTranslator translator; translator.load(":/testTranslate/testtranslate_zh.qm"); a.installTranslator(&translator);
2,上面需在窗口創建前,app創建之后調用
3,如果類是在某命名空間內,生成的.ts文件的name會將命名空間名稱加上,如果沒有加上命名空間,翻譯文件安裝會出異常。如下:
<name>TTTT::testTranslate</name>