QT_TR_NOOP: файлы перевода генерируются, но переведенные строки никогда не используются, почему? - PullRequest
1 голос
/ 11 января 2011

В приложении у меня есть много классов, которые, очевидно, не являются потомками QObject, и эти объекты, по-видимому, генерируют исключения, и эти исключения, по-видимому, необходимо преобразовать. Итак, я вложил каждую строку, выданную в виде исключения, в макрос QT_TR_NOOP. Это позволило мне создавать файлы перевода. Но когда я запускаю свою программу, строки по-прежнему не переводятся. Если я пытаюсь получить их через QApplication :: translate («MyClassName», «Text in english»), я могу получить строки в порядке, но QT_TR_NOOP («Text in english») возвращает только текст на английском языке. Есть ли какие-то дополнительные шаги, которые я должен предпринять, чтобы это работало правильно?

Кроме того, небольшой побочный вопрос: если я буду использовать QT_TR_NOOP в функции, которая не является членом какого-либо класса, что произойдет? Qt просто молча игнорирует эту ситуацию?

Ответы [ 2 ]

4 голосов
/ 11 января 2011

Кажется, я все неправильно понял: (

QT_TR_NOOP - для маркировки строк для перевода за пределы функций; предполагается вернуть оригинальный текст. Мне нужно было применить переводы к не-qt классам, что подробно описано здесь:

Интернационализация с Qt: перевод классов не-Qt

Извините за беспокойство.

3 голосов
/ 11 января 2011

QT_TR_NOOP помечает текст только как что-то, что может нуждаться в переводе (так, чтобы оно отображалось в Qt Linguist), но не переводит. Для этого вам нужно использовать tr ().

...