【问题标题】:Internationalization on Qt 4.8Qt 4.8 上的国际化
【发布时间】:2013-02-19 16:04:06
【问题描述】:

我正在尝试将翻译设置为可能的应用程序。我来自巴西,所以应用程序应该是 pt br 和 en-us,在编码时我使用英语。我发现这篇关于如何使用 QTranslator 的帖子:

Qt Linguist - set translator for application

但在 pt-br 系统上运行应用程序时,它会以英文显示。我错过了什么吗? 附言没有找到 Q 命令提示符,所以我使用了菜单工具 -> 外部 -> 语言学家 -> 更新翻译 (lupdate)。

还创建了 .qm 文件,这是我的一段代码:

QApplication a(argc, argv);

QTranslator *trans = new QTranslator();

trans->load("C:/SVN/trunk/rcs/frameworkIdentity_ptbr.qm");

a.installTranslator(trans);

FIdMain w;

【问题讨论】:

  • 你检查load的返回值了吗?
  • 你也使用translate函数吗?
  • 是的,我检查了负载的返回,它返回 true,我在 Qt 的这个例子中使用了 tr 函数:doc.qt.nokia.com/4.7-snapshot/linguist-hellotr.html
  • 您是否在应用程序的小部件之前创建了翻译器?
  • 你肯定做错了什么。 Qt 翻译器工作得很好。为我们提供可重现的样品。我们无法从您提供的代码中得出任何结论。告诉我们什么是 FIdMain w,告诉我们应用程序的哪些部分没有显示翻译。

标签: c++ qt internationalization qt4 qt4.8


【解决方案1】:

这几乎就是我在自己的翻译工作的应用程序中所做的(如下所示)。

问题不在于您显示的 sn-ps。正如 cmets 中所建议的那样,小部件可能是在翻译器之前创建的

int main( int argc, char** argv )
{
    QApplication app( argc, argv );

    QTranslator translator;
    if (  !Settings::value("monitor/languageFile").isNull() )
    {
        translator.load( Settings::value("monitor/languageFile").value<QString>() );
        app.installTranslator(&translator);
    }
    MainWindow mainWindow;
    mainWindow.show();
    return app.exec();
}

【讨论】:

  • 翻译器设置在主窗口之前,但仍然没有变化,我正在浏览Qt论坛寻找解决方案。
  • 只能认为翻译文件 (.qm) 可能不包含已翻译的字符串,或者您可能错过了类中的 Q_OBJECT 宏。尝试先翻译一个来自 .ui 文件的字符串,看看它是否有效,然后你可以缩小问题的范围。
猜你喜欢
  • 1970-01-01
  • 2014-01-03
  • 2011-08-03
  • 1970-01-01
  • 2011-10-15
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多