пятница, 29 января 2010 г.

QTranslator, который поддерживает TS-файлы

И снова Qt! Эта запись касается перевода приложений, написанных на Qt, на другие языки.

Стандартная схема выглядит следующим образом. У нас есть текстовый файл перевода в xml-формате, и он имеет расширение ".ts". Затем этот файл компилируется в двоичный формат при помощи утилиты lrelease, и в результате получаем файлик с расширением ".qm". Готовые файлы переводов могут располагаться как отдельно от исполняемого файла приложения, так и включены в него как ресурсы. Преимущества такого подхода, высокая скорость работы и малый размер файлов перевода. Но есть и другой аспект. Как вы переводите своё приложение? Знаете много языков? Нанимаете переводчиков? Переводите переводчиком? (кстати как вариант чернового перевода, к тому же многие выражения состоят из пары слов. У меня была идея и частичная реализация через Google Translate :)). Но есть ещё один вариант - перевод конечным пользователем! Эта возможность позволяет перевести приложение на множество языков без особых усилий! Например, один из проектов, над которым я работаю, переведён уже на 27 языков. Поэтому файлы переводов распространяются в текстовом виде, а проще всего прямо в ts-формате. Для его чтения был написан небольшой класс TSTranslator. Для удаления "лишнего" из ts-файлов, например, номеров строк и имён исходных файлов, можно воспользоваться утилитой lconvert с параметром --no-ui-lines или --drop-tags. Я пользуюсь самописной утилиткой stripts. К сожалению, текущая реализация пока не поддерживает множественные формы числительных. Буду рад замечаниям и дополнениям.

tstranslator_src.zip

Комментариев нет:

Отправить комментарий