Вы можете перевести все, что вы хотите во время выполнения, используя tr (), если у файла .qm есть соответствующий перевод / контекст. Не должно иметь никакого значения, извлекал ли lupdate его или нет.
Я не знаю, как сделать lupdate для извлечения строк из произвольного XML, но это не значит, что вы не можете использовать linguist.
- .ts файлы также являются XML; должно быть легко создать XSLT, который преобразует ваш XML в файл .ts. Если вы хотите нацелиться на что-то стандартное, а не только на Qt, lupdate (и лингвист) может также обрабатывать XLIFF файлы.
- вы можете иметь несколько файлов .ts (просто вызовите QTranslator :: load более одного раза при настройке)
Если вы действительно хотите поместить все это в один файл для переводчика, попросите XSLT скопировать сгенерированный lupdate файл в свой вывод.
Пока вы используете имя контекста, которое не дублирует то, что используется в исходном коде, это не должно отличаться (с точки зрения Qt) от того, как многие приложения загружают .qm для каждой DLL, которая имеет графический интерфейс.