QTranslator Linguist: Требуются ли номера строк?

Я использовал этот пример здесь

Там вы можете увидеть номера строк для всех тегов location. Я не хочу использовать номера строк, так как они могут время от времени меняться.

Когда я открываю файл *.ts в Лингвисте, там также отображается *.ui, как вы можете видеть здесь: зеленая область — виджет пользовательского интерфейса

Зеленая область — это виджет пользовательского интерфейса, отображаемый в Linguist (фактически то же представление, что и в QtCreator Designer).

С этими номерами строк все работает. Без, не, Почему? Я не хочу сохранять номера строк в файлах перевода.

(Аналогичные вопросы: обработка амперсандов https://stackoverflow.com/questions/33422473/qtranslator-with-linguist-file-not-translatable)


person Ralf Wickum    schedule 29.10.2015    source источник
comment
Вы создавали файлы *.ts вручную?   -  person Valery Shevchuk    schedule 29.10.2015
comment
Нет, я использовал Лингвист. Когда я открываю этот файл *.ts, виджет пользовательского интерфейса также отображается в Лингвисте, см. Скриншот выше.   -  person Ralf Wickum    schedule 29.10.2015
comment
@ValeryShevchuk Знаете ли вы, как добавить структуру папок: ‹location filename=level_1/level_2/myClass.cpp line=39/›?   -  person Ralf Wickum    schedule 29.10.2015


Ответы (1)


Эти номера строк нужны QtLinguist для правильного выделения фрагментов кода, для которых сделаны переводы. Их не следует каждый раз обновлять вручную. Для этого есть специальная утилита - lupdate, которая обновляет ваши *.ts файлы в связи с новыми изменениями кода.

Вы можете получить более подробную информацию об интернационализации из этой замечательной статьи.

UPD: Не стесняйтесь задавать мне дополнительные вопросы в комментариях, если что-то еще неясно.

person Valery Shevchuk    schedule 29.10.2015
comment
Я знаю эту команду lupdate. Могу ли я также обновить приложение GUI Linguist? - person Ralf Wickum; 29.10.2015
comment
@RalfWickum, у меня сейчас нет QtLinguist на моей машине, но, насколько я помню, QtLinguist имеет только функции для добавления и редактирования существующих ключей перевода, он не может обновлять файл *.ts из-за новых изменений кода. Хорошей практикой является добавление команды lupdate для всех ваших файлов *.ts в ваш скрипт сборки. Таким образом, он автоматически обновит все файлы *.ts в процессе сборки. - person Valery Shevchuk; 29.10.2015
comment
Я ничего не вижу. lupdate скажите мне следующее: Найдено 0 исходных текстов (0 новых и 0 уже существующих). Сохранено 10 устаревших записей - person Ralf Wickum; 29.10.2015
comment
@RalfWickum, чтобы правильно обновить файлы *.ts, вам нужно запустить lupdate, как показано ниже: lupdate your_project.pro -ts file1.ts file2.ts fileN.ts - person Valery Shevchuk; 29.10.2015
comment
Я не использую файлы *.pro, только CMakeList.txt - person Ralf Wickum; 30.10.2015
comment
Я использовал то же самое без какого-либо файла *.pro. просто переключатель -ts в аргументах - person Ralf Wickum; 30.10.2015
comment
@RalfWickum, это неправильный путь. Без информации о проекте (предоставлен файл *.pro) lupdate не сможет обновить ваши файлы *.ts. Итак, попробуйте использовать lupdate project.pro -ts file.ts, и вы получите сообщение о том, что N источников уже существует, и вы не должны получать сообщения об устаревших источниках. - person Valery Shevchuk; 30.10.2015
comment
Я попробовал этот lupdate CMakeList.txt -ts myfile.ts Тот же результат. Как я уже сказал, у меня нет файлов *.pro. - person Ralf Wickum; 30.10.2015
comment
@RalfWickum, не могли бы вы предоставить мне свой файл CMakeList.txt, пожалуйста? (добавьте это как обновление к исходному сообщению) Я попытаюсь выяснить, какие операторы должны быть добавлены в ваш CMakeList.txt для автоматического создания/обновления файлов *.ts и создания соответствующих файлов *.qm (ваши переводы не будут работать без правильно скомпилированных файлов *.qm) - person Valery Shevchuk; 30.10.2015