Как ввести статические методы для Qt Linguist QTranslator

У меня есть файл Qt Linguist *.ts, например:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de_DE" sourcelanguage="en_GB">
<context>
    <name></name>
    <message>
        <location filename="classWithStaticMethod.cpp" line="60"/>
        <source>File</source>
        <translation>Datei</translation>
    </message>
</context>
</TS>

Как ввести объект перевода статическим методом.

ClassWithStaticMethod.cpp has a static method where a QT_TR_NOOP("File")

происходит в строке 60, например. Оставление тегов имен пустыми не работает.

1 ответ

Статические переменные создаются (и, следовательно, код конструктора запускаются) перед int main функция запущена. Код перевода установлен в QApplication конструктор (я считаю), который не запускается до тех пор, пока не будет введена ваша основная функция int. Таким образом, вы пытаетесь получить перевод строки до того, как код для ее поддержки будет инициализирован.

Чтобы избежать этого, вы можете либо согласиться с тем, что данная строка не переведена, и явно переводить ее при каждом использовании, либо использовать идиому Construct on First Use вместо статической переменной-члена.

Другие вопросы по тегам