(04-02-2021 23:08:42 отредактировано WYLEK) 0

Тема: Ох уж эти файлы в формате QM

Дальше тему будет вести bellic, ему и слово.

Возможно всё! На невозможное просто требуется больше времени.
Мудрец из Шангри Ла
Ох уж эти файлы в формате QM

Рейтинг поста: 0

(05-07-2017 17:33:19 отредактировано gazon01)

Re: Ох уж эти файлы в формате QM

Дальше тему будет вести bellic, ему и слово.

Доброго Всем Лета!
В общем - пробую Локализовать интерфейс чисто-японской магнитолы, работающей на OS Linux...

Ох уж эти файлы в формате QM|1]

Имеем кучу QM-файлов для различных языков... Интересует прежде всего JP, US, ну и возможно RU
Ссылки на скачивания архивов QM-файлов:
Японская локаль
Американская локаль
Русская локаль
Я не приверженец Русского интерфейса, поэтому беру JP и US QM-файлы, открываю их в двух окнах QT Linguist и начинаю копи-пасту с  JP в US.
(почему так? - идея была не изменяя самого файла - получить на выходе японский файл, но с переводом кнопок на английском. Простое переименовывание файла US в JP не дало положительного результата...)

Ох уж эти файлы в формате QM|2]

Таким макаром прошелся по всем 1021-й кнопке Японца.. (у Американца кстати было только 929)...

Ох уж эти файлы в формате QM|3]

А в левом окошке - эти желтенькие вопросики и даже красные восклицательные знаки..)))
Сохраняю файл в формате TS, и открыв его затем в текстовом редакторе - вижу  почти сполшняком:

<translation type="unfinished">

Ох уж эти файлы в формате QM
Делаю тут же по всему тексту замену на <translation>, получил "чистенький" TS-файлик, который QT Linguist преобразовал в QM-файл.
(это потом я увидел в меню<u> Готов и Далее</u> (Ctrl+Return))
Подсовываю полученную псевдо-японскую (на самом деле подписи к кнопкам там на Английском) локаль магнитоле и получаю облом..((( - вместо японских или английских подписей - названия элементов управления!

Ох уж эти файлы в формате QM|4]

P.S. парни, прошу прощения, я понимаю, что делал некоторые элементарные ошибки, но вижу QT Linguist и тем более Radialix впервые, а посему прошу не смеяться и не судить строго!...Ох уж эти файлы в формате QM
Для меня эти программы - темные лошадки, которые что-то там делают себе на уме...
А хотелось бы ясности происходящего...
В общем - первую часть своей повести пожалуй закончу!

Рейтинг поста: 0

(03-07-2017 21:34:01 отредактировано bellic)

Re: Ох уж эти файлы в формате QM

В общем решил поглубже капнуть и выяснить - что же такое TS- и QM-файлы...

Если с первым все было понятно, то шифрацию второго предстояла выяснить...

Может быть я зря так подробно расписываю свои шаги и результаты?
На сегодняшний день много чего изменилось, и я лучше тогда сразу сформулирую не решенный пока вопрос:
Знает ли кто Алгоритм преобразования TS-файлов в QM?

Ну и то что сделано:
- найдена консольная утилита Lrealise.exe и к ней прикручен оконный интерфейс(Программа названа WLRelease);
- выяснен примерный формат QM-файлов (наименования чисто свои):

    сигнатура qm-файла;
    таблица ссылок(индексов) на элементы управления (имя элемента и подпись кнопки);
    сами элементы управления (Имя и Текст);

Кроме всего этого - в файле присутствуют поля с длинной и прочими атрибутами...
...
Это конечно набросок на скорую руку...
...
Самое важное - в QM-файлах, полученных после работы QT Linguist наблюдается еще одно ПОЛЕ, которого нету в файлах магнитолы!
Это ПОЛЕ завершает сам QM-файл... Я бы назвал его Прицепом, ибо он всегда имеет одно и тоже количество байт и их значение.
(нужно в WLRelease предусмотреть - дописывать в конце файла ПРИЦЕП или удалить его!)
...
Найдены в Инете исходники qt-embedded-free-3.0.0(скачал спецом самую старую версию) в которых есть СИ-шные исходники программ преобразования TS в QM... и обратно!!!!
НО я к сожалению в СИ еще не шибко силен...(((
...
Найдена консольная программа qm2ts.exe, способная преобразовать QM-файлы в  TS.
...
В планах - написать программу на Дэлфи, способную производить двухстороннее преобразование: TS <--->QM.
...
Вот вроде и все... Писал кое где тезисно, но думаю кто в теме - поняли меня?!))

P.S. Вопросы:
- по форуму - чегой то у меня картинки получились огромными? - как избежать этого? какой размер оптимальный?
- БиБиСод  - можно ли его тут применять? Ну например CODE?
- сколько минут остается доступен для редактирования Пост и возможно ли активировать его повторно через Администратора?
Спасибо!

Еще раз - мысль по теме....
Открывать QM-файлы можно конечно с помощью QT Linguist и компилирует он исходные TS-файлы обратно в QM исправно. Но у меня симметричного преобразования - не получилось!
Представьте, когда я сравниваю два двоичных файла - оригинал и компил-версию, полученную после перевода в исходник, а потом заново откомпилированную... Вижу конечно что длина файлов разная, но все равно сравниваю...)))Ох уж эти файлы в формате QM
Тотал Коммандер выдал следующую фразу - типа Файлы идентичные, но имеют разную длину!))))Ох уж эти файлы в формате QM
Это все из-за ПРИЦЕПА!..Ох уж эти файлы в формате QM

Забыл еще пожалуй сказать - в японской локали кодировка Подписей к клавишам, сделана на UNICODE, да еще с реверсом байт (LittleEndian)

Рейтинг поста: 0

(03-07-2017 23:22:46 отредактировано Leserg)

Re: Ох уж эти файлы в формате QM

В планах - написать программу на Дэлфи, способную производить двухстороннее преобразование: TS <--->QM

Такая программа уже есть — QT Linguist. Ох уж эти файлы в формате QM

Смотрите меню File. По пункту Save as выполняется сохранение файла переводов в указанный формат, в том числе и TS. По пункту Release выполняется компиляция в двоичный формат QM.

Вы с самого начала допустили ошибку. Если нужно изменить готовый файл переводов (будь-то TS или QM), то в качестве целевого языка перевода нужно указывать исходный язык. Например, если вы хотите изменить языковой файл японского (JP), то языком перевода укажите японский, но не русский, как это сделано у вас.

Ох уж эти файлы в формате QM]

Вообще, библиотека Qt является кросплатформенной и файлы переводов имеют совместимость с приложениями сделанных для платформ Windows, Linux, Unix-подобные, Mac OS X, Android и др. независимо от программы и системы, в которой они созданы. Поэтому, если с вашей стороны не будет ошибок, то все должно работать.

По правде сказать мне не совсем понятны ваши действия. Если программа имеет языковую поддержку, то не проще ли в настройках переключить язык, а не создавать фейковый файл переводов? Ох уж эти файлы в формате QM

Если языковой файл производителя содержит больше строк (что и не мудрено), то их можно скопировать в нужный языковой файл и перевести ( на тот же английский, к примеру). Затем этот язык выбрать в меню девайса.

Кто ищет, тот всегда найдет!
Ох уж эти файлы в формате QM

Рейтинг поста: 0

(04-07-2017 06:08:44 отредактировано bellic)

Re: Ох уж эти файлы в формате QM

Вы думаете я не искал в меню магнитолы преключение на другой язык?
На японской магнитоле где то есть параметры - для какого рынка она выпущена и на каком языке, но похоже эти флажки спрятаны от пользователя и настраиваются на этапе производства..
В скриптах запуска найдены даже вызов функций, считывающих регион, язык и прочие настройки, но пока не найдено место, где они хранятся. Возможно в памяти самого процессора.
Так что пока остается вариант подмены языкового пакета.
...
Что касается выбора языка при загрузке Лингвиста - я этому не придаю пока особого значения - похоже это видно только в TS-файлах и в QM не передается!
...
Ну и по поводу Прицепа мне думаю не стоит забывать - вырезать его из QM-файла.
Возможно магнитоле он и не мешает, но в файлах магнитолы этого поля нету!

Рейтинг поста: 0

(04-07-2017 08:10:20 отредактировано Leserg)

Re: Ох уж эти файлы в формате QM

На японской магнитоле где то есть параметры - для какого рынка она выпущена и на каком языке, но похоже эти флажки спрятаны от пользователя и настраиваются на этапе производства.

Тогда, возможно, язык задан жестко, а функция смены заблокирована. В этом случае программно также может выполняться проверка оригинального файла языка (по хешу или CRC). Проведите эксперимент: возьмите оригинальный языковой файл (надеюсь у вас есть его резервная копия), откройте его в НЕХ-редакторе и задайте поиск подстроки "DVD/С" (Unicode) (полная строка "DVD/CD" - видна на экране девайса, как представлено на вашем скриншоте) . Затем измените в ней один или пару символов, например на "DMD". Сохраните изменения и отправьте в девайс. Так мы проверим возможность подмены языкового файла. Если строки отображаются корректно и видны наши изменения, значит подмена возможна, если нет и вместо строк отображаются их идентификаторы, то подмена невозможна. Тогда нужно искать возможность обхода проверки языкового файла. Но без самого устройства или хотя-бы его эмулятора на ПК я затрудняюсь что-либо подсказать.

Ну и по поводу Прицепа

О каком "прицепе" идет речь? Приведите пример (скрины). Например, я взял ваш файл Японской локали, открыл его в QT Linguist (в качестве языка перевода указал "Японский", затем сохранил в формате QM в новом файле. Исходный и новый файлы получились <u>идентичными</u> (размеры и хеши совпадают).

Что касается выбора языка при загрузке Лингвиста - я этому не придаю пока особого значения.

Зря, порою небольшой пустяк приводит к большим проблемам. Ох уж эти файлы в формате QM

Кто ищет, тот всегда найдет!
Ох уж эти файлы в формате QM

Рейтинг поста: 0

(05-07-2017 17:31:22 отредактировано gazon01)

Re: Ох уж эти файлы в формате QM

Изменить в HEX-редакторе я конечно могу пару символов, но тогда данные в Шапке не будут корректными... и итоговый QM-файл окажется тоже некорректным!
Пробовал на тестовом файле из 2-3-х записей... - меняю в подписи 1 байт, и в результате в QM-файле идет изменение в подписи + в шапке...
Вот такой вот файлик:

Ох уж эти файлы в формате QM|5]

Компилируем его:

Ох уж эти файлы в формате QM|6]

А вот в нем то как раз и появился ПРИЦЕП..((( - начиная с адреса 00BF и до конца файла..
...
Теперь меняем во второй подписи всего один байт - двойку на восьмерку:

Ох уж эти файлы в формате QM|7]

И снова компилируем:

Ох уж эти файлы в формате QM|8]

...Ммммм... мда... шапка вроде осталась той же...(((
Прям дэжавю какое то у меня сегодня!
...Может быть я прошлый раз изменил один байт названия кнопки, и это повлекло изменения в шапке?
... ладно - поэкспериментирую позже..
Вот так лучше наверное сравнивать шапки двух файлов:
Ох уж эти файлы в формате QM|9]
Ну а вот т.н. ПРИЦЕП очень хорошо видно - попробуйте сравнить например с концовкой Японской локали!?
В Японской - файл заканчивается названием кнопки "TEL_POP_89", затем 4 нулевых байта и байт 01.
А в моих тестовых - сразу же после ожидаемого байта конца файла 01, идут постоянно одна и та же последовательность байт:
"88 00 00 00 0D 11 01 FD 29 0B FF 14 02 04 FD 2C 0A 13"
Это и есть "ПРИЦЕП" в моей терминологии...
Вот поэтому то и хочется перетрусить обе процедуры для TS <---> QM... Да и люблю я это дело - небольшие полезные программки писать!..Ох уж эти файлы в формате QM
...
Я внимательно отношусь к всяким пустякам, просто с кодировкой было не совсем понятно - вот и оставил ее на потом..(((

А вот тут  - картинка с тремя файлами:
- в самом низу - оригинал
- по средине - измененный текст кнопки
- вверху - измененный текст кнопки + измененное название самой кнопки.

Ох уж эти файлы в формате QM|10]

На самом верхнем видно, что в шапке немного поменялись данные - ну это и понятно.. - Лингвист при компиляции упорядочил имена кнопок с их текстом...
Потому и в шапке изменились тоже данные..)))
...
Вот мы еще один полезный вывод сделали - элементы управления упорядочиваются по возрастанию...
При этом  - сами подписи кнопок - игнорируются ...
Как то так!

Рейтинг поста: 0

Re: Ох уж эти файлы в формате QM

А еще - Магнитола находится на Дальнем Востоке, а я в Ростове-на-Дону...((((

Рейтинг поста: 0

(30-01-2021 15:28:02 отредактировано WYLEK)

Re: Ох уж эти файлы в формате QM

bellic, еще раз:
1) Возьмите оригинальный языковой файл с вашего устройства (насколько я понимаю это файл res_language_jp.qm) и откройте его в НЕХ-редакторе. Не забудьте сделать резервную копию файла. Задайте поиск подстроки DVD/С:

Теперь в текстовой части редактора, в найденной подстроке, измените один или пару символов на другой. Например, литеру V изменить на M:

Сохраните изменения в файле. Поместите полученный файл на устройство и запустите его. Если никаких проверок языковых файлов разработчик не сделал, то вместо надписи DVD/СD будет надпись DMD/СD:

Если же вместо надписей вы увидите идентификаторы строк, то в программной части девайса идет проверка языковых файлов. Без разбора алгоритма и отключения проверок подменить языковой файл не получится. Возможно есть еще какие-то нюансы, которые без наличия девайса я учесть не могу.

Если же вы увидите изменённую надпись, тогда будем двигаться дальше.

А еще - Магнитола находится на Дальнем Востоке, а я в Ростове-на-Дону...((((

Ох уж эти файлы в формате QM Ну это вообще класс! Т.е. нет никаких гарантий, что пользователь на той стороне делает все правильно. Печалька.... Ох уж эти файлы в формате QM

Кто ищет, тот всегда найдет!
Ох уж эти файлы в формате QM

Рейтинг поста: 0

(04-07-2017 12:07:29 отредактировано Leserg)

Re: Ох уж эти файлы в формате QM

Попробуйте этот файл : res_language_jp.zip

Распаковать содержимое архива, получите файл res_language_jp.qm. В нем японский заменен на английский. Поместить его на девайс, подтвердив замену. Запустить - результат в студию.

Кто ищет, тот всегда найдет!
Ох уж эти файлы в формате QM

Рейтинг поста: 0

(05-07-2017 17:29:10 отредактировано gazon01)

Re: Ох уж эти файлы в формате QM

Leserg, я извиняюсь, но еще немного раньше выслал хозяину другой файлик, в котором заменил несколько байт одной подписи к кнопке - соблидая оригинальную длину сообщения...
Вот только что получил ответ:

Ох уж эти файлы в формате QM|11]

Т.е. все корректно получилось!!!
Сразу же в догонку отправил Ваш измененный файл - с заменой японского на английский...
Ждем результата...

Распаковать содержимое архива, получите файл res_language_jp.qm. В нем японский заменен на английский.

Подскажите - а как получен этот файл? - Просто переименованием или же заменой японских слов на английские из Американской локали? Дело в том, что у этих локалей - разное количество используемых кнопок!
Открыл Ваш файл в Радиалликсе - вижу, что 1021 кнопка - значит файл на основе японской локали - вопрос по происхождению снимается... хотя...
Как Вам так быстро удалось произвести замену?))))
Кстати - там в некоторых местах я встречал - у некоторых кнопок в Японской, нет подписей, а в аналогичных Английских - они есть...
И еще - т.к. Операционка делалась универсальной - под разные типы магнитол  - в плане Рынка сбыта и языка...
А само железо - все ж отличается на разных Рынках, то и кнопки могут быть в некоторых местах разные...
...
А мы имеем чисто японскую, значит правильней - нужно брать Японскую локаль и желательно сверяясь с Гуглом-переводчиком, корректировать ее, заимствуя подходящие тексты с Американской и Английской локалей.
Пришел ответ... с Вашим файлом...

Ох уж эти файлы в формате QM|12]
Ох уж эти файлы в формате QM|13]

Не пошло..(((
ЗЫ: сейчас уезжаю на пару-тройку часов - посему не смогу пока активно общаться...
Да мы и так сегодня много сделали - увидели Английские буквы!...Ох уж эти файлы в формате QM
Товарищь написал, что попробует с файлом еще раз...

Рейтинг поста: 0

Re: Ох уж эти файлы в формате QM

Не пошло..(((

Плохо. Скорее всего проверяется размер файла. Без вмешательства в код ничего не сделаешь. Остается вариант править файл в НЕХ-редакторе. Другой вариант - подгонять перевод так, чтобы после создания бинарного формата размер файла остался неизменным. Это сложнее. Как ни крути, но строки на японском намного короче англоязычного варианта.

Как Вам так быстро удалось произвести замену?

Сохранил файлы переводов в формат TS, потом в Total Commader сравнил их и в режиме редактирования скопировал недостающие строки в файл английской локали, лишние строки (которых нет в японской локали) удалил. После открыл его в текстовом редакторе и изменил локаль на японскую. Сохранил. Открыл в Qt Linquist и скомпилировал в формат QM. Полученный файл переименовал в res_language_jp.qm. Все.

Кто ищет, тот всегда найдет!
Ох уж эти файлы в формате QM

Рейтинг поста: 0

(04-07-2017 17:39:16 отредактировано bellic)

Re: Ох уж эти файлы в формате QM

Пообщался я с товарищем - то ли у него с Загрузочным Убунту на флешке проблемы, толи Магнитола некоторое время помнит свои какие то файлики...
В общем получилась каша, испорченный телефон или игра Верю-Неверю...Ох уж эти файлы в формате QM
...
Не думаю, что в его системе файлы локалей как-то проверяются на длину или контрольную сумму... Ибо видел загрузочные скрипты - загружающие Локали в зависимости от Региона и т.п.
...
В любом случае - главный инструмент <u>МАГНИТОЛА </u>и SD-карточка в его руках и только он ответственен за правильность записи наших вариантов!
А у него раз-на-раз не выходит - то все Ок, то Bad...Ох уж эти файлы в формате QM
...
А вот тут все равно не совсем понятно:

Сохранил файлы переводов в формат TS, потом в Total Commader сравнил их и в режиме редактирования скопировал недостающие строки в файл английской локали, лишние строки (которых нет в японской локали) удалил. После открыл его в текстовом редакторе и изменил локаль на японскую. Сохранил. Открыл в Qt Linquist и скомпилировал в формат QM. Полученный файл переименовал в res_language_jp.qm.

...
1. Сохранить JP, US, GB в формате TS - понятно...
2. ... не совсем согласен, с тем что за основу был взят файл Английской Локали!? - я понимаю что скопировать в Английский - проще...
Все, отбой - примерную мысль понял..)))))
...
Ну а меня собственно зацепило разгадывание алгоритма шифрования QM-файлов из TS... Может займемся?
Есть куча исходников, но я повторюсь - практически не читаю СИ-шные..Ох уж эти файлы в формате QM
...
Ну а я пока покумекаю - как написать утилиту на Дэлфи, помогающую создать правильный TS-файл на основе двух других и помощи Гугла...
Есть некоторая идея по этому поводу...

Рейтинг поста: 0

Re: Ох уж эти файлы в формате QM

Скорее всего проверяется размер файла.

Похоже на то что не может файл прочитать. У вас с кодировкой там все правильно? Может быть файл компилируется не в той кодировке и магнитола просто не понимает?

Рейтинг поста: 0

Re: Ох уж эти файлы в формате QM

Похоже на то что не может файл прочитать. У вас с кодировкой там все правильно? Может быть файл компилируется не в той кодировке и магнитола просто не понимает?

mishem, да вроде с кодировкой все правильно...
У товарища там не всегда получается вроде файлик записать...
Сейчас на Д.Востоке ночь - подождем, когда человек разберется с записью..
Может все прояснится!

Рейтинг поста: 0

Re: Ох уж эти файлы в формате QM

Кстати судя по файлу, выбор языка где то должен присутствовать.
AV_BTN_53 Английский
AV_BTN_57 Французский
и т.д.

STG_POP_599 Перезагрузить, чтобы сменить язык?
AV_BTN_740 Язык меню по умолчанию
STG_BTN_1261 Язык системы

Ищите в настройках по названию элемента.

Рейтинг поста: 0

(04-07-2017 19:03:40 отредактировано bellic)

Re: Ох уж эти файлы в формате QM

Ищите в настройках по названию элемента

Дело в том, что именно в Японской локали этих пунктов смены языка нету!
И еще - смена языка, это не совсем то! - Система сделана универсальной!
Но! - Она сильно привязана к железу!
Это даже видно по разному количеству элементов управления в различных локалях!
Хотел по быстрому найти в системе... Но попалось несколько другое:

Показать / Скрыть текст
function changeGeneralScreenStytle()

    {

        var strStyle = 

        if(SystemConfig.MODELMAKER_SUZUKI === mySystemConfig.modelMaker)

        {

             strStyle = qsTr(qrc:/settings/SettingsGeneralScreenYN1.qml)

        }

        else if(SystemConfig.MODELMAKER_DAIHATSU === mySystemConfig.modelMaker)

        {

             strStyle = qsTr(qrc:/settings/SettingsGeneralScreenYN1.qml)

        }

        else if((SystemConfig.MODELMAKER_CLARION === mySystemConfig.modelMaker))

        {

            if(SystemConfig.MODELTYPE_AVN === mySystemConfig.modelType)

            {

                if(SystemConfig.MODELAREA_JPN === mySystemConfig.modelArea)

                {

                    strStyle = qsTr(qrc:/settings/SettingsGeneralScreenAVNJPN.qml)

                }

                else

                {

                    strStyle = qsTr(qrc:/settings/SettingsGeneralScreenAVNNAMEUR.qml)

                }

            }

            else if(SystemConfig.MODELTYPE_DCU === mySystemConfig.modelType)

            {

                if(SystemConfig.MODELAREA_JPN === mySystemConfig.modelArea)

                {

                    strStyle = qsTr(qrc:/settings/SettingsGeneralScreenDCUJPN.qml)

                }

                else

                {

                    strStyle = qsTr(qrc:/settings/SettingsGeneralScreenDCUNAMEUR.qml)

                }

            }

            else

            {

                    // Do nothing

            }

        }


        return strStyle

    }

Рейтинг поста: 0

Re: Ох уж эти файлы в формате QM

Уважаемый bellic, переделайте все картинки с поддержкой фотохостинга https или все картинки будут удалены.

Ох уж эти файлы в формате QM

Рейтинг поста: 0

Re: Ох уж эти файлы в формате QM

Дело в том, что именно в Японской локали этих пунктов смены языка нету!

STG_ITM_486 Русский
STG_POP_599 &#35328;&#35486;&#12434;&#20999;&#12426;&#26367;&#123
60;&#12427;&#12383;&#12417;&#12395;
&#20877;&#36215;&#21205;&#12375;&#12414;&#12377;&#122
90;
&#12424;&#12429;&#12375;&#12356;&#12391;&#12377;&#123
63;?

AV_BTN_740 &#12513;&#12491;&#12517;&#12540;&#35328;&#35486;&#210
21;&#26399;&#35373;&#23450;

Японский текст не загрузился. Но сам факт, пункты в японской локали есть. ;)

Рейтинг поста: 0

(04-07-2017 19:12:07 отредактировано bellic)

Re: Ох уж эти файлы в формате QM

Но сам факт, пункты в японской локали есть. ;)

При старте Магнитолы учитывается не только ЛОкаль, но и Регион для которого выпущена она - только после этого становятся доступными те или иные кнопки!
Японцы в этой модели не предусмотрели смены языка, т.к. МАгнитола выпущена чисто для Японского рынка!

Уважаемый bellic, переделайте все картинки с поддержкой фотохостинга https или все картинки будут удалены.

Вай-вай-вай... и где же я его сейчас возьму?..((((( - это мне все картинки опять переделывать!..((((
А на самом форуме можно хранить картинки?
Я не нашел этой возможности..(

Рейтинг поста: 0