ts_tool [Utility for ts files]
От: nen777w  
Дата: 10.11.15 15:53
Оценка: 15 (3)
Предлагаю Вашему внимаю, простую, полезную утилитку для обработки ts — файлов.
Текущая версия 1.0
Мне она понадобилась сейчас для того что бы перевести приложение на другой язык используя сервисы распределённого перевода, которые не работают с ts — файлами,
а вместо этого принимают набор строк который потом же назад переведённым и возвращают.

Утилита делает следущее:

ts_tool.exe --src v:\PROJECTS\CODIJY\ColorMagicGUI\translations\ColorMagic_EN.ts --dst t:\test\ --mode TXT


На входе ts файл. Утилита парсит с приоритетом для тега <translation> (если он пустой используется тег <source>) и генерирует два файлв на выходе:
— .ts с хешами
— .txt файл со хешем и строкой

т.е. вот такой .ts
...
<message>
<location filename="../shortcuts/shortcut_manager.cpp" line="30"></location>
    <source>Arm Tool</source>
    <translation>[08F5B2DC]</translation>
</message> 
...


И такой .txt

...
[08F5B2DC] "Arm Tool"
...


Далее Вы отдаете такой файл на перевод.
Его переводят т.е. по сути сохраняют хеш и вписывают между "" перевод.

т.е.

...
[08F5B2DC] "Пермещение"
...



Потом нужно сделать обратное что бы "вставить" перевод обратно в .ts файл:

ts_tool.exe --src t:\test\ --dst v:\PROJECTS\CODIJY\ColorMagicGUI\translations\ColorMagic_EN.ts --mode XML


Утилита для скачивания доступна тут.
Git Repo: https://github.com/nen777w/ts_tool.git
Отредактировано 10.11.2015 20:22 nen777w . Предыдущая версия .
Re: ts_tool [Utility for ts files]
От: Igore Россия  
Дата: 11.11.15 06:48
Оценка:
Здравствуйте, nen777w, Вы писали:

N>ts_tool.exe --src t:\test\ --dst v:\PROJECTS\CODIJY\ColorMagicGUI\translations\ColorMagic_EN.ts --mode XML


N>Утилита для скачивания доступна тут.

N>Git Repo: https://github.com/nen777w/ts_tool.git

У меня один вопрос, почему не скриптовый язык(python)? Думаю такое можно сделать и в .bat или .sh. По моему для такой задачи лучше скрипт, который можно будет встроить в сборку. Хотя, можно постепенно наращивать функционал, добавить проверку наличия количества %number в исходной строкое и переведенной, GUI с автоматической отправкой на перевод и прочее .
Re: ts_tool [Utility for ts files]
От: Анатолий Широков СССР  
Дата: 11.11.15 07:41
Оценка: +1
Здравствуйте, nen777w, Вы писали:

N>

N>...
N>[08F5B2DC] "Пермещение"
N>...


Прелесть того же Qt Linguist в том, что переводчик, работая с ts, видит не только слово/фразу, которую надо перевести, но и контекст. А вот такого рода txt файл для качественного перевода недостаточен ИМХО.
Re: ts_tool [Utility for ts files]
От: Qt-Coder  
Дата: 11.11.15 07:56
Оценка:
Здравствуйте, nen777w, Вы писали:

Not bad
Re[2]: ts_tool [Utility for ts files]
От: nen777w  
Дата: 11.11.15 08:49
Оценка:
N>>Утилита для скачивания доступна тут.
N>>Git Repo: https://github.com/nen777w/ts_tool.git

I>У меня один вопрос, почему не скриптовый язык(python)? Думаю такое можно сделать и в .bat или .sh. По моему для такой задачи лучше скрипт, который можно будет встроить в сборку. Хотя, можно постепенно наращивать функционал, добавить проверку наличия количества %number в исходной строкое и переведенной, GUI с автоматической отправкой на перевод и прочее .


Да нужно было написать быстро, как говорят на коленке, а я как раз никогда не работал со XML средствами Qt, потом вдруг захотелось попробовать вообще все на Qt написать , в порядке экперимента, т.е. для меня "вообще всё" это без boost-а.
А на самом деле по хорошему, там надо выбросить все эти недоделки типа QCommandLineParser, QDir, QFileInfo, QTextStream и прочую ерунду разве что кроме QXmlStreamReader/Writer и втулить вместо этого нормальные boost::program_options/filesystem std:/iostream.
Но написал, оно работает, ну и отлично, отдал в паблик, может кто то что то допишет еще для обработки .ts файлов.
Re[2]: ts_tool [Utility for ts files]
От: nen777w  
Дата: 11.11.15 09:04
Оценка:
АШ>Прелесть того же Qt Linguist в том, что переводчик, работая с ts, видит не только слово/фразу, которую надо перевести, но и контекст. А вот такого рода txt файл для качественного перевода недостаточен ИМХО.

Я знаю. Но сервисы для распределённого web перевода не работают c .ts файлами.
Они берут строки и распределяют их по пулу своих переводчиков потом собирают их обратно и получается что локализация готова очень быстро.
К тому же у меня была еще такая проблема:
EN — версия это базовая версия, т.е. в коде все строки написаны на английском. В .ts есть поля:
<source>String from code OR typo</source>
и
<translation>Another string interpretation or typo fixing</translation>

Я давал например FR переводчику qtlinguist.exe, EN.ts и FR.ts и говорил что бы он открывал сразу 2 файла в лингвисте (он это может)
и переводил из того что написано в "<translation>" в EN вресии или из "<source>" если translation пуст.
В результате когда я проверял работу переводчик иногда ошибался и переводил то что было в "source"
Я понимаю что это больше вопрос ко мне и к порядку в .ts файлах.
Но на самом деле когда EN отдаешь на вычитку нейтиву то потом руками вносить в код правки из .ts файлов очень не удобно, а у qt утилит для этого нет.
Поэтому сейчас проще сделать экспорт EN.ts в .txt файл ts_tool при экспорте отдает приимущество <translation> тегу и отдать строки на перевод.
Отредактировано 11.11.2015 9:05 nen777w . Предыдущая версия .
Re[3]: ts_tool [Utility for ts files]
От: Qt-Coder  
Дата: 11.11.15 10:27
Оценка:
Здравствуйте, nen777w, Вы писали:

Аналогичная проблема. В ts в <source> кривой инглиш, в <translation> нормальный. То есть ваша утилита берет из <translation> или из <source>, если он пуст, я правильно понимаю? Если так, то это просто здорово.
Отредактировано 11.11.2015 10:29 Qt-Coder . Предыдущая версия .
Re[3]: ts_tool [Utility for ts files]
От: Qt-Coder  
Дата: 11.11.15 10:28
Оценка:
А для qt4 подойдет? у них не поменялся ts?
Re: ts_tool [Utility for ts files]
От: Qt-Coder  
Дата: 11.11.15 10:38
Оценка:
1) Имхо, кавычки лишние.
2) Неплохо бы отдельным ключом исключать obsolete. Я специально оставляю в ts obsolete. иногда оттуда может понадобиться перевод. А отдавать их переводчику не надо.
Отредактировано 11.11.2015 10:39 Qt-Coder . Предыдущая версия .
Re[4]: ts_tool [Utility for ts files]
От: nen777w  
Дата: 11.11.15 11:58
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

QC>Здравствуйте, nen777w, Вы писали:


QC>Аналогичная проблема. В ts в <source> кривой инглиш, в <translation> нормальный. То есть ваша утилита берет из <translation> или из <source>, если он пуст, я правильно понимаю? Если так, то это просто здорово.


Да всё верно. С приоритетом для <translation>.
Re[4]: ts_tool [Utility for ts files]
От: nen777w  
Дата: 11.11.15 11:59
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

QC>А для qt4 подойдет? у них не поменялся ts?


Этого не знаю. Я начинал проект на qt4 сейчас уже на qt5 при переходе проблем не заметил, но точно сказать не берусь.
Re[2]: ts_tool [Utility for ts files]
От: nen777w  
Дата: 11.11.15 12:03
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

QC>1) Имхо, кавычки лишние.


Тоже думал над этим, но добавил т.к. у меня в некоторых строках есть суфиксные и префиксные пробелы и табуляции.

QC>2) Неплохо бы отдельным ключом исключать obsolete. Я специально оставляю в ts obsolete. иногда оттуда может понадобиться перевод.


Сори не допёр сперва. Т.е. утилита подхватывает obsolete записи. Ок пофиксю.
Отредактировано 11.11.2015 12:05 nen777w . Предыдущая версия .
Re[3]: ts_tool [Utility for ts files]
От: Qt-Coder  
Дата: 11.11.15 12:43
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Тоже думал над этим, но добавил т.к. у меня в некоторых строках есть суфиксные и префиксные пробелы и табуляции.

То есть, это попытка защититься от косяков переводчика? Имхо не поможет, они могут и внутри кавычек удалить "лишнее".
Такие строки надо дробить на более мелкие. У переводчика не должно быть ничего лишнего, только текст.

N>Сори не допёр сперва. Т.е. утилита подхватывает obsolete записи. Ок пофиксю.

Ждемс версию 2.0 ))
Отредактировано 11.11.2015 12:45 Qt-Coder . Предыдущая версия . Еще …
Отредактировано 11.11.2015 12:44 Qt-Coder . Предыдущая версия .
Re: ts_tool v2.0 [Utility for ts files]
От: nen777w  
Дата: 12.11.15 11:06
Оценка: 6 (1)
Обновил утилиту до версии 2.0
Что было сделано:

Add mode --with-unfinished for include unfinished records to result .txt file,
and --with-vanished for include obsolete records to result .txt file.
Rename mode XML to TS


Бинари тут.
Исходники: https://github.com/nen777w/ts_tool.git
Re[4]: ts_tool [Utility for ts files]
От: nen777w  
Дата: 12.11.15 11:25
Оценка:
N>>Сори не допёр сперва. Т.е. утилита подхватывает obsolete записи. Ок пофиксю.
QC>Ждемс версию 2.0 ))

Обновил: http://rsdn.ru/forum/cpp.qt/6242302.1
Автор: nen777w
Дата: 12.11.15
Re[5]: ts_tool [Utility for ts files]
От: Qt-Coder  
Дата: 12.11.15 12:57
Оценка:
Здравствуйте, nen777w, Вы писали:

N>>>Сори не допёр сперва. Т.е. утилита подхватывает obsolete записи. Ок пофиксю.

QC>>Ждемс версию 2.0 ))

N>Обновил: http://rsdn.ru/forum/cpp.qt/6242302.1
Автор: nen777w
Дата: 12.11.15


obsolete все равно попадают в txt.
Re[6]: ts_tool [Utility for ts files]
От: nen777w  
Дата: 12.11.15 13:10
Оценка:
N>>>>Сори не допёр сперва. Т.е. утилита подхватывает obsolete записи. Ок пофиксю.
QC>>>Ждемс версию 2.0 ))

N>>Обновил: http://rsdn.ru/forum/cpp.qt/6242302.1
Автор: nen777w
Дата: 12.11.15

QC>obsolete все равно попадают в txt.

Гм... интересно а какой атрибут стоит у <translation> тега (я так понимаю вы используется Qt 4-й версии)
Может даже лучше, если можно скинуть мне .ts файлик?
nen777w@gmail.com
Re[7]: ts_tool [Utility for ts files]
От: Qt-Coder  
Дата: 12.11.15 17:43
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Гм... интересно а какой атрибут стоит у <translation> тега (я так понимаю вы используется Qt 4-й версии)

N>Может даже лучше, если можно скинуть мне .ts файлик?
N>nen777w@gmail.com

Да ничего особенного
    <message>
        <source>&amp;Text1</source>
        <translation type="obsolete">&amp;Text2</translation>
    </message>
Re[8]: ts_tool v 2.1 [Utility for ts files]
От: nen777w  
Дата: 12.11.15 18:54
Оценка: 3 (1)
QC>Да ничего особенного
QC>
QC>    <message>
QC>        <source>&amp;Text1</source>
QC>        <translation type="obsolete">&amp;Text2</translation>
QC>    </message>
QC>


Прикольно для qt5 этот type называется vanished.
Обновил до версии 2.1.
Исходники: https://github.com/nen777w/ts_tool
Бинари теперь тоже там: https://github.com/nen777w/ts_tool/tree/master/bin
Re[9]: ts_tool v 2.1 [Utility for ts files]
От: Qt-Coder  
Дата: 13.11.15 03:47
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Прикольно для qt5 этот type называется vanished.

N>Обновил до версии 2.1.
N>Исходники: https://github.com/nen777w/ts_tool
N>Бинари теперь тоже там: https://github.com/nen777w/ts_tool/tree/master/bin

Ну вот, поменяли значит формат таки.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.