当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 1 action->setText(tr("开始")); 并且在main函数中还有这种一段代码: 01 int main(i

 

1 action->setText(tr("开始"));

并且在main函数中还有这种一段代码:

01 int main(int argc, char *argv[])
02 {
03     QApplication a(argc, argv);
04   
05     QTextCodec *codec = QTextCodec::codecForName("GB2312");
06     QTextCodec::setCodecForLocale(codec);
07     QTextCodec::setCodecForCStrings(codec);
08     QTextCodec::setCodecForTr(codec);
09   
10     MainWindow w;
11     w.show();
12     return a.exec();
13 }

devbean大神和dbzhang800大神都曾强烈批判过这种写法,原因有三:

1、如果使用GB2312格式保存这篇代码,其他人使用UTF-8打开,那么无疑将会看见乱码。

当时我就出现了这种情况,光哥把代码给我发过来以后,我发现我看到代码中有乱码,因为ubuntu 10.10的默认编码格式是UTF-8,无论我用Qt creator还是gedit打开源代码,都会看见乱码。

2、如果将程序发布到一些非简体中文的国家或地区,可能出现对方的机器上根本没有安装任何中文的编码格式,那么就会出现对方无论如何都无法正确显示源代码甚至无法正确运行程序的情况。

3、Qt提供了强大的多国语言工具Qt Linguist,不用白不用。

devbean大神和dbzhang800大神的建议做法是:

1、在代码中所有需要使用中文的地方都用一段英文暂时代替,并用tr()函数做标记。

2、使用Qt Linguist对所有被tr()函数标记的字符串进行翻译,并发布翻译包。

3、在程序中加载翻译包。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭