1 |
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大神都曾強(qiáng)烈批判過這種寫法,原因有三:
1、如果使用GB2312格式保存這篇代碼,其他人使用UTF-8打開,那么無疑將會(huì)看見亂碼。
當(dāng)時(shí)我就出現(xiàn)了這種情況,光哥把代碼給我發(fā)過來以后,我發(fā)現(xiàn)我看到代碼中有亂碼,因?yàn)閡buntu 10.10的默認(rèn)編碼格式是UTF-8,無論我用Qt creator還是gedit打開源代碼,都會(huì)看見亂碼。
2、如果將程序發(fā)布到一些非簡(jiǎn)體中文的國(guó)家或地區(qū),可能出現(xiàn)對(duì)方的機(jī)器上根本沒有安裝任何中文的編碼格式,那么就會(huì)出現(xiàn)對(duì)方無論如何都無法正確顯示源代碼甚至無法正確運(yùn)行程序的情況。
3、Qt提供了強(qiáng)大的多國(guó)語言工具Qt Linguist,不用白不用。
devbean大神和dbzhang800大神的建議做法是:
1、在代碼中所有需要使用中文的地方都用一段英文暫時(shí)代替,并用tr()函數(shù)做標(biāo)記。
2、使用Qt Linguist對(duì)所有被tr()函數(shù)標(biāo)記的字符串進(jìn)行翻譯,并發(fā)布翻譯包。
3、在程序中加載翻譯包。