【问题标题】:How translate Message that comes from web service?如何翻译来自网络服务的消息?
【发布时间】:2018-03-15 11:48:54
【问题描述】:

我有一个与 Web 服务一起使用的 qt 快速应用程序

qml 文件的代码在这里我要获取书籍列表

void BookManager::findBook(QString bookName){    

    QNetworkReply* reply=getRequest("api/Book/Find/"+bookName);
    connect(reply,SIGNAL(finished()),this,SLOT(getListFinished()));
 }

这里假设用户未通过身份验证,必须先登录,然后从服务器发送“First Login and then try again”.. 消息在客户端显示给用户

这里我得到消息或书单

 void BookManager::getListFinished(){
    QNetworkReply* reply=convertToReply(sender());
    if(reply->error()==QNetworkReply::NoError)
    {
       //Display books
    }
    else
    {
        readReplyMessage(reply);//Here I get the message and disply it to user
    }
 }

我想知道我应该如何创建多语言应用程序?

qStr 和 ... 用于在 UI 中使用字符串的时间。

但是当我从网络服务发出请求时,它会返回一条英文字符串消息。如果用户选择波斯语,我该如何翻译这个字符串?

【问题讨论】:

  • 您可以使用 Qt 国际化功能将每个字符串翻译成您想要的其他语言

标签: qt qml qtquick2 qt-linguist


【解决方案1】:

qsTr() 或 qsTranslate() 常用于 QML 文本。然而它不会像魔术一样发生!字符串作为键条目输入到翻译文件中。在 qt linguist 工具的帮助下,您必须为字符串创建某种语言的翻译,例如 (en_EN)。根据您当前的系统语言环境,该字符串将替换为您的翻译文本。

使用很简单。

Text {
    id: txt;
    text: qsTr("First Login and then try again");
}

要获得一些动力,请阅读:https://wiki.qt.io/How_to_create_a_multi_language_application

手册:http://doc.qt.io/qt-5/qtlinguist-index.html

【讨论】:

  • 感谢您的回答。但我想知道当我使用网络服务时我应该如何创建多语言,你的答案是当我在用户界面中使用字符串时。但是当我从网络服务发出请求时它将返回一个字符串消息。它是英文的。但是如果使用选择波斯语,我该如何翻译这个字符串?
  • 我建议您在描述中适当地详细说明问题。据我了解,您有一个客户端应用程序和一个服务器应用程序。服务器向客户端发送英文字符串,客户端将其翻译成其他语言。如果是这种情况,请使用远程过程调用在您的 C++ 代码中执行此操作。服务器调用客户端中的函数,客户端可以获取消息并返回 tr(message)。但在这种情况下,tr() 也使用相同的翻译引擎和相同的过程,从使用 Qt Linguist 创建翻译文件开始
  • @mohsen,如果您事先知道所有可能从服务器回复的消息,那么您可以在客户端克隆它们并创建翻译。
猜你喜欢
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2015-05-02
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多