Как перевести сообщение, которое приходит из веб-сервиса?

У меня есть быстрое приложение 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 и ... для времени, когда строки используются в пользовательском интерфейсе.

но когда я делаю запрос от веб-службы, он возвращает строковое сообщение на английском языке. Если пользователь выбирает персидский язык, как я могу перевести эту строку?


person mohsen    schedule 15.03.2018    source источник
comment
Вы можете использовать функции интернационализации Qt для перевода каждой строки на другой желаемый язык.   -  person Mohammad Kanan    schedule 15.03.2018


Ответы (1)


qsTr() или qsTranslate() обычно используются в тексте QML. Однако это не происходит как по волшебству! Строки вводятся в файл перевода как ключевая запись. С помощью инструмента лингвиста qt вам нужно создать перевод строки на какой-нибудь язык, скажем (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

person dDebug    schedule 15.03.2018
comment
Танки за ваш ответ. Но я хочу знать, как мне создать многоязычность, когда я использую веб-службу, ваш ответ - когда я использую строку в пользовательском интерфейсе. Но когда я делаю запрос из веб-службы, например, он вернет строковое сообщение. на английском языке. но если использовать персидский язык, как я могу перевести эту строку? - person mohsen; 15.03.2018
comment
Я бы порекомендовал вам правильно разработать проблему в описании. Насколько я понимаю, у вас есть клиентское приложение и серверное приложение. Сервер отправляет клиенту строки на английском языке, а клиент переводит их на другой язык. Если это так, сделайте это в своем коде C++, используя удаленные вызовы процедур. Серверы вызывают функцию в вашем клиенте, и клиент может принять сообщение и вернуть tr (сообщение). Но и в этом случае tr() использует тот же механизм перевода и тот же процесс, начиная с создания файла перевода с помощью Qt Linguist. - person dDebug; 15.03.2018
comment
@mohsen, если вы заранее знаете все сообщения, на которые может быть получен ответ с сервера, вы можете просто клонировать их на своей стороне клиента и создать перевод. - person Mohammad Kanan; 15.03.2018