You are viewing
specialforest's journal
Пятничный вечер, 12 февраля. Засвидетельствованы первые упоминания о языке Python. Всё больше положительные (а-ля "Вау!"). Короче, Use The Source, Luke! Да, пребудет с тобой Сила.
И снова Qt! Эта запись касается перевода приложений, написанных на Qt, на другие языки.
Стандартная схема выглядит следующим образом. У нас есть текстовый файл перевода в xml-формате, и он имеет расширение ".ts". Затем этот файл компилируется в двоичный формат при помощи утилиты lrelease, и в результате получаем файлик с расширением ".qm". Готовые файлы переводов могут располагаться как отдельно от исполняемого файла приложения, так и включены в него как ресурсы. Преимущества такого подхода, высокая скорость работы и малый размер файлов перевода. Но есть и другой аспект. Как вы переводите своё приложение? Знаете много языков? Нанимаете переводчиков? Переводите переводчиком? (кстати как вариант чернового перевода, к тому же многие выражения состоят из пары слов. У меня была идея и частичная реализация через Google Translate :)). Но есть ещё один вариант - перевод конечным пользователем! Эта возможность позволяет перевести приложение на множество языков без особых усилий! Например, один из проектов, над которым я работаю, переведён уже на 27 языков. Поэтому файлы переводов распространяются в текстовом виде, а проще всего прямо в ts-формате. Для его чтения был написан небольшой класс TSTranslator. Для удаления "лишнего" из ts-файлов, например, номеров строк и имён исходных файлов, можно воспользоваться утилитой lconvert с параметром --no-ui-lines или --drop-tags. Я пользуюсь самописной утилиткой stripts. К сожалению, текущая реализация пока не поддерживает множественные формы числительных. Буду рад замечаниям и дополнениям.
Тем, кто постоянно пользуется Total Commander может пригодиться.
( Read more... )| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |