Если мы заключаем строки в tr (), мы можем использовать лингвиста для перевода приложений qt. В следующем примере показан один из способов динамической загрузки языка:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator translator;
translator.load("hellotr_la");
app.installTranslator(&translator);
QPushButton hello(QPushButton::tr("Hello world!"));
hello.resize(100, 30);
hello.show();
return app.exec();
}
То, что я хотел бы сделать, - это переводить на разные языки в зависимости от предпочтений пользователя. Причина в том, что у меня есть сервер, который должен обрабатывать клиентские запросы на разных языках. Иметь язык всего сервера / процесса с помощью событий на запрос не кажется правильным. Таким образом, меня не интересует динамический перевод , реагирующий на QEvent::LanguageChange
.
Одна вещь, которая меня заинтересовала, это следующая документация для QCoreApplication :: installTranslator ()
Может быть установлено несколько файлов перевода. Переводы ищутся в обратном порядке, в котором они были установлены, поэтому сначала выполняется поиск самого последнего установленного файла перевода, а поиск первого установленного файла перевода - последним. Поиск останавливается, как только перевод, содержащий соответствующую строку, найден.
Таким образом, представляется возможным загрузить несколько языков, но меня беспокоит то, что если у меня несколько языков, я не могу указать, какой из них будет предпочтительным языком. Если мне нужно выразить в коде, то я хочу что-то вроде этого:
QString MyApplicationServer::OnHandleRequest(MyRequest &r)
{
//Get the language for this specific request
//For example language can be “hellotr_la” or “hellotr_fr”
// Or another way: "lat", "fra", "enu", "esn" ...
QString language = getLanguageForRequest(r);
//How do I dynamically use language or translate to language?
// This would be the preferred solution.
return tr("Not Implemented", language);
}
Если мне нужно использовать некоторые собственные макросы, то да будет так!
Редактировать: В основном я хотел бы получить от переводчиков конкретную переведенную строку.