LINUX.ORG.RU

[cmake] i18n .ui -> .po c сохранением строк (решение)

 


0

0

Задался я вопросом сбора сообщений для i18n'ции средствами cmake без привлечения внешних шелл скриптов.

С .cpp файлами все было относительно просто. C .ui тоже не сложно, но неудовлетворение вызывал лишь один момент, в результирующий .po файл в качестве комментариев к строкам, попадали указания на автоматически сгенеренные файлы, которые ничего не говорили о реальном расположении переводимой строки в исходном коде.

А нельзя ли сделать так чтобы на время обработки xgettext'ом номера строк с сообщениями для перевода в сгенеренном cpp файле, совпали с номерами оригинальных строк из ui-файла... При этом сгенеренный cpp файл не обязан быть осмысленным, лишь бы xgettext считал его таковым.

В резултате появился вот такой скрипт: http://svn.berlios.de/viewvc/sim-im/trunk/cmake/UiToFakeCpp.cmake?revision=24...

Грубо говоря этот скрипт заменяет теги <string></string> на вызов функции i18n(""); с сохраненем номеров строк. Вычещая при этом всю лишнюю информацию, обрабатывая слеши, кавычки, переводы строк и пр. Остается лишь перед скармливанием xgettext'у присводить результату обработки расширение .ui и положить его относительно запускаемого xgettext'а так чтобы в комментарий полученного файла попал путь такой же как путь к реальному .ui файлу находящемуся в коде. В результате в .po файле будет ссылка на правильный файл, с правильным номером строки.

★★★

Ну и прошу так же признать меня знатным извращенцем ;-)

shaplov ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.