本文引用地址:http://cafeforensic.com/article/201610/305533.htm1 | action->setText(tr( 開始 )); |
并且在main函數(shù)中還有這種一段代碼:
01 | int main( int argc, char *argv[]) |
03 |
QApplication a(argc, argv); |
05 |
QTextCodec *codec = QTextCodec::codecForName( GB2312 ); |
06 |
QTextCodec::setCodecForLocale(codec); |
07 |
QTextCodec::setCodecForCStrings(codec); |
08 |
QTextCodec::setCodecForTr(codec); |
devbean大神和dbzhang800大神都曾強烈批判過這種寫法,原因有三:
1、如果使用GB2312格式保存這篇代碼,其他人使用UTF-8打開,那么無疑將會看見亂碼。
當(dāng)時我就出現(xiàn)了這種情況,光哥把代碼給我發(fā)過來以后,我發(fā)現(xiàn)我看到代碼中有亂碼,因為ubuntu 10.10的默認編碼格式是UTF-8,無論我用Qt creator還是gedit打開源代碼,都會看見亂碼。
2、如果將程序發(fā)布到一些非簡體中文的國家或地區(qū),可能出現(xiàn)對方的機器上根本沒有安裝任何中文的編碼格式,那么就會出現(xiàn)對方無論如何都無法正確顯示源代碼甚至無法正確運行程序的情況。
3、Qt提供了強大的多國語言工具Qt Linguist,不用白不用。
devbean大神和dbzhang800大神的建議做法是:
1、在代碼中所有需要使用中文的地方都用一段英文暫時代替,并用tr()函數(shù)做標(biāo)記。
2、使用Qt Linguist對所有被tr()函數(shù)標(biāo)記的字符串進行翻譯,并發(fā)布翻譯包。
3、在程序中加載翻譯包。
評論