Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => Программирование и компиляция => Тема начата: andy-voit от 15 Май 2011, 05:20:28

Название: Перевод на русский бинарных файлов.
Отправлено: andy-voit от 15 Май 2011, 05:20:28
Хочу попробовать переводить бинарный файл. Знаю, что довольно геморрное занятие. Но это скорее всего от того, что не знаю как.. Начал с того, что при помощи программы FilelnHex переконвертировал бинарный файл в текстовый. Собственно, надо то только перевести несколько строчек на великий и могучий:

Код
00001CD0h: 79 74 65 73 5F 6D 6F 6E 74 68 00 41 63 74 69 76 ; ytes_month.Activ
00001CE0h: 65 20 69 6E 74 65 72 66 61 63 65 73 3A 20 00 2E ; e interfaces: ..
00001CF0h: 00 2E 2E 00 6C 6F 00 2F 00 2F 64 6F 72 6D 61 6E ; ....lo././dorman

На примере двух верхних: "Active interfaces" заменить на "Активные интерфейсы". Я понял так, что каждой букве или символу соответствует код, например "n" это 6E, "t"-74. Видимо, русским буквам соответствуют свои коды.
Вопрос-где их взять и как правильно вставить. Пробовал тупо копировать коды из аналогичного файла с русскоязычным переводом
Код
00001C40h: 79 74 65 73 5F 6D 6F 6E 74 68 00 00 D0 90 D0 BA ; ytes_month..Ак
00001C50h: D1 82 D0 B8 D0 B2 D0 BD D1 8B D0 B9 20 D0 B8 D0 ; тивный и�
00001C60h: BD D1 82 D0 B5 D1 80 D1 84 D0 B5 D0 B9 D1 81 3A ; �терфейс:
00001C70h: 20 00 2E 00 2E 2E 00 6C 6F 00 2F 00 2F 64 6F 72 ;  ......lo././do
-ни фига, после обратной компиляции файл не работает. :(

Чего я не так делаю?




Название: Re:Перевод на русский бинарных файлов.
Отправлено: bicyclist56 от 15 Май 2011, 06:33:01
Помнится, давненько занимался я подобными вещами в Винде... И помню точно, НЕЛЬЗЯ было ИЗМЕНЯТЬ размер исходного текста. То есть, вместо
Код
Active interfaces:
(18 символов с двоеточием)
можно написать, к примеру,
Код
Актив.интерфейс:__
(16 символов с двоеточием плюс 2 пробела)
Если итоговая длина меньше исходной, следует ДОПОЛНИТЬ пробелами.
Возможно, поможет?  ;)
Название: Re:Перевод на русский бинарных файлов.
Отправлено: maximand от 15 Май 2011, 10:35:20
Ну а если учесть, что уже давно всех победила локаль utf-8, то затея эта может не увенчаться успехом.
Исходники надо искать и .po файлы. Ну или замену на открытый продукт, как это и положено в linux.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 15 Май 2011, 12:13:14
Да нет у нее исходников и тем более .po ! Это маленькая фишечка, может быть и не особо важная, тем более аналог русский есть, только более усеченный, так скажем. Мне важно на примере этой программки понять принцип, как такие файлы переводить-как вообще к ним подступаться! Что значат все эти кракозябры. Гугль излагает это все слишком сложно, типа программист излагает на языке программиста, а мне нужны азы!
 Поэтому и прошу сообщество помочь в переводе хотя бы двух слов через пробел(не сделать за меня, а именно помочь, чтобы я понял, что к чему)Дальше я сам.
 
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 15 Май 2011, 12:44:41
Сначала я представлял ето все проще. Английская строка, заменяешь русской, и оп-ля! На практике несколько сложнее :). Шестнадцать двухбуквенных кодов в средней колонке видимо(как я это представляю)соответсвуют шестнадцати значкам текста в правой колонке. Путем сравнения можно даже вычислить некоторые из них. Но есть которые не поддаются дедуктивному методу! Не всегда 100% совпадение кодов и букв(символов)в разных строчках. Существуют какие либо таблицы, где все эти коды и их соответствие буквам можно увидеть наглядно?
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 15 Май 2011, 13:28:22
Если переводится network_tray в трее, то я переводил исходный код, а потом скомпилировал заново. У Барри была написана строка для компиляции.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: Liss от 15 Май 2011, 13:31:15
Перекомпиляцией как раз не стоит заниматься. Попробуй просто отредактировать в HEX редакторе. Зачастую Текст который ты видишь в правой колонке совершенно не связан с тем что делает данный байт или строка. Например, в отрочестве редактировал по мануалу Transport Tycoon Deluxe в HEX редакторе, так вот, заменяю пару байт по указанному адресу. В правой колонке виду что эти строки вроде как описание паровоза. На деле же эти байты изменили пропускную скорость деревянного жд моста с 20 км/ч на 6000 км/ч. Так что...
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 15 Май 2011, 13:55:31
У меня всё получилось и всё было довольно просто. Открыл файл исходного кода, заменил английские строки на русские и скомпилировал. Получился уже русский бинарик. И насколько это было бы сложнее редактировать сам бинарный файл.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 15 Май 2011, 15:06:24
Цитата
У меня всё получилось и всё было довольно просто.

Завидую белой завистью! :) Если не секрет, какой программой компиляции-декомпиляции пользовались. Я попробовал FileinHex. После обратной компиляции создает бинарник, в котором все строчки на русском становятся опять английскими! >:(
 P.S: да,это действительно network_tray, только тот вариант, где можно выбирать темки значков. (люблю я это дело... :))Видать здесь без перекомпиляции не обойтись. Если можно, поподробнее, как перевести исходный код, и где эта мать ее строка для компиляции, и куда ее приложить...
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 15 Май 2011, 15:33:12
Я брал исходный код на сайте Барри. Заменил английские строки на русские и скомпилировал. Подробности могу посмотреть позже. В тарболле с исходным кодом было написано, как его скомпилировать. Конечно-же нужен devx.sfs.
Мой network_tray здесь: http://pm.puppyrus.org/issues/62
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 15 Май 2011, 15:47:39
Цитата
воспользоваться транслитерацией: Aktivnye interfejsy.

да"секретарша"(как выражается dim-cut) не поймет! :). Так можно было бы и на языке Шекспира все оставить и не париться!
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 15 Май 2011, 15:55:28
Вот строка компиляции:
Код
gcc `pkg-config --cflags --libs gtk+-2.0` network_tray.c -o network_tray
Переводить нужно было файл network_tray.c.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 15 Май 2011, 16:01:43
Я брал исходный код на сайте Барри. Заменил английские строки на русские и скомпилировал. ..
Мой network_tray здесь: http://pm.puppyrus.org/issues/62

А я мучаю вот этот
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 15 Май 2011, 18:13:56
Он, кажется, такой-же.
Вспомнил. Вообще-то это перевод dim-cut, я заменил только одну фразу. На его основе я потом перевёл freememapplet_tray. Исходный код и бинарик.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: bit777 от 15 Май 2011, 20:06:15
Он, кажется, такой-же.
Нет не такой.
Во вложении по моему такой же .
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 16 Май 2011, 05:40:54
Точно! он самый. Большое спасибо bit777!!! Во вложении уже с переведенным network_tray.c
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 16 Май 2011, 10:53:57
ну и как итог
Название: Re:Перевод на русский бинарных файлов.
Отправлено: bit777 от 16 Май 2011, 18:51:06
Ну заодно бы и /usr/sbin/changenettrayicons и /usr/share/network_tray/README перевел, а то как то перевод не полным кажется. А за то что сделал +1.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 16 Май 2011, 19:50:24
ну и как итог

Такие вещи проще написать с нуля, чем переводить. Тем более системные утилиты должны иметь минимум зависимостей (в данном случае от GTK-2).

Кому как! Особенно если ты не программист... В данном конкретном случае обошлось малой кровью. В следующий раз попробую что то посложнее.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: bit777 от 16 Май 2011, 19:55:33
Такие вещи проще написать с нуля, чем переводить. Тем более системные утилиты должны иметь минимум зависимостей (в данном случае от GTK-2).
Есть предложение для Вас. Ну возьмите и напишите хотя бы какую нибудь полезную програмульку.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 17 Май 2011, 12:09:44
Оказывается эта штука используется в Spup. Я не заметил разницы и вставил в пакеты локализации обычную версию. Теперь буду использовать эту. Только фразу "Выбрать тему иконки трея" заменил на "Выбрать значок".
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 18 Май 2011, 04:53:17
Цитата
Только фразу "Выбрать тему иконки трея" заменил на "Выбрать значок".

Согласен! Так более по русски звучит. Исправлю у себя то же.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: maximand от 20 Май 2011, 09:00:17
FYI

http://oriya.sarovar.org/docs/gettext_single.html

О том как надо писать программы, чтобы затем переводить можно было на разные языки.

На примере простого кода
Код
#include <libintl.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#define _(STRING)    gettext(STRING)
int main(void)
{
setlocale(LC_ALL, "");
bindtextdomain( "hello", "/usr/share/locale" );
textdomain( "hello" );
printf( _( "Hello, world!\n" ) );
exit(0);
}
его можно собрать gcc hello.c -o hello и убедиться что работает ./hello
Далее xgettext -a --output=hello.pot hello.c
получаем hello.pot file  
msginit -l ru_RU -o hello.po -i hello.pot
получим hello.po переводим в poedit и в итоге будет нам hello.mo
sudo cp hello.mo /usr/share/locale/ru/LC_MESSAGES
запускаем снова ./hello
должно получиться Привет, мир!
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 06 Июнь 2011, 11:45:14
Перевел на русский язык программу TestDisk 6.12. Перевод еще сыроват, где то возможно несоответствие русской и буржуйской терминологий (head-головки?заголовки?; write-записать?сохранить? и т д.) Поэтому вывешиваю сырцы оригинальные и переведенные на Redmine. Просьба людям подкованным посмотреть и чего нибудь подсказать, возможно поправить. Сырцов много, но текста, необходимого для перевода в них не очень.
     Переводить надо только файлы с расширением ".с "
 Основная работа сделана, у меня ушло на нее недели две. Саму утилиту пока не решаюсь выкладывать до окончательной правки...
  Заодно и попробую на зуб энтот самый Редмин.

PS А что, картинки уже нельзя прикреплять?

(http://storage4.static.itmages.ru/i/11/0606/s_1307357484_d44d67db1c.png) (http://itmages.ru/image/view/205760/d44d67db)  (http://storage5.static.itmages.ru/i/11/0606/s_1307357632_873724af95.png) (http://itmages.ru/image/view/205761/873724af)



(http://forum.puppyrus.org/Themes/default/images/icons/clip.gif) screens.zip (http://ifolder.ru/23984899) (375.42 Кб)
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 04 Октябрь 2011, 16:21:05
Сегодня наконец-то решил добавить gettext в приложения в трее (network_tray, freememapplet_tray, powerapplet_tray). Воспользовался информацией от maximand вверху. Для меня это новый опыт. Обычно работал со скриптами bash.
Также не могу толком проверить работу powerapplet_tray (нет ноутбука) - это новая версия от Барри.
Сделал два пакета: для Wary и для Slacko т.к. там есть отличия в network_tray и freememapplet_tray.
Третий файл - это исходный код с моими изменениями.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 05 Октябрь 2011, 23:36:31
Сегодня продолжил эксперимент. Попросил у Зигберта исходный код для pmusic_tray (зелёный апплет для pmusic), добавил туда gettext и сделал перевод.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: maximand от 07 Октябрь 2011, 20:47:34
Сегодня продолжил эксперимент. Попросил у Зигберта исходный код для pmusic_tray (зелёный апплет для pmusic), добавил туда gettext и сделал перевод.
rodin.s, клёво. Советую в /usr/share/locale/ добавить папку en с оригиналом и po файлы положить рядом с mo файлами.
Тогда любой желающий сможет перевести приложение, даже не имея исходников.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: maximand от 07 Октябрь 2011, 20:54:25
Сегодня наконец-то решил добавить gettext в приложения в трее (network_tray, freememapplet_tray, powerapplet_tray). Воспользовался информацией от maximand вверху. Для меня это новый опыт. Обычно работал со скриптами bash.
На досуге, я как-то раз, заюзал gettext в bash скрипте. На другом компе остался работающий hello_world.sh
Считаю, что такой подход к переводу поможет любому продукту выйти за рамки одной локализации.
В частности, любая сборка puppyrus работает только на русском и переводы жёсткие, не модульные. А можно было бы своей работой всему миру похвастаться :)
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 07 Октябрь 2011, 20:56:28
pot-файлы положил в /usr/share/doc/nls.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 07 Октябрь 2011, 21:13:36
На досуге, я как-то раз, заюзал gettext в bash скрипте.
Именно так и перевожу скрипты в своих пакетах локализации (http://forum.puppyrus.org/index.php/topic,5340.msg55766.html#msg55766).
Название: Re:Перевод на русский бинарных файлов.
Отправлено: DSV от 13 Декабрь 2011, 23:07:11
Вопрос знатокам: что мешает при написании или редактировании скриптов  использовать тексты в виде подключаемых файлов.
Например еще на заре изучения РНР я взял за правило все тексты выносить подобным образом. Кусок файла:
Цитата
<?$chset="windows-1251";
$tnom="Тип предложения";
$tgor="Город";
$tul="Улица";
$tdom="Строение";
$tres="Сброс";
$togl="Введите данные для поиска:"?>
Здесь же определена кодировка, первый символ-t зарезервировал для текстовых переменных.
Файл подключается к основному и изменить язык нет проблем, сколько языков, столько файликов: rustxt.php,angtxt.php и т.д. Причем пакет один для всех скриптов сайта, исключение объемные тексты типа help.
Для дистрибутива ОС переключение не обязательно, достаточно и одного языка.
Возможно применение файла-массива (сложновато правда отслеживать позицию).
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 14 Декабрь 2011, 00:16:46
Такие файлы используются, например, в локализации Зигберта, например в Pmusic. Но мне это не очень удобно и я предпочитаю gettext.
Я переводил обновлённый Pmusic и это было очень сложно искать в текстовом файле старые строки, удалять их и добавлять новые. В gettext это делается автоматически. Хотя, L18L на Мурге разработал альтернативную систему локализации скриптов (http://bkhome.org/blog/?viewDetailed=02620) и она включена в Woof, которая также в принципе является системой с такими текстовыми файлами. Но эта система мне не нравится также.
Название: Перевод на русский бинарных файлов.
Отправлено: pashak от 21 Март 2012, 02:27:39
Большинство из вас не учитывает вариант, когда исходные коды программы недоступны (например, программа вообще другого автора), поэтому я утверждаю, что менять строки в исходниках — это один из самых лёгких, но не всегда доступных вариантов.
Автор темы поставил хороший вопрос: как поменять данные внутри уже скомпилированной программы?
Сейчас я попытаюсь ответить на этот вопрос.
Итак, с помощью компилятора программист переводит свой код на языке программирования в машинный (бинарный, двоичный) код. Последний представляет собой набор двоичных инструкций, указывающих процессору, какую операцию выполнять, например, суммировать данные из регистров процессора.
Грубо говоря, бинарный код линеен, т.е. выполняется последовательно, операция за операцией, что значит, что его можно было бы даже записать на магнитную ленту и вот так выполнять. Т.е. процессор знает, какой байт программы нужно выполнить следующим. Однако в нём присутствуют операторы управления выполнением кода (соответствующие, например, ассемблерным командам jmp, jnz и др.), которые могут повлиять на значение адреса следующей команды. Т.е. если бы мы работали всё с той же кассетной лентой, то нам в таком случае пришлось бы её перематывать (вперёд или назад, в зависимости от того, меньше или больше адрес следующей команды). Таким образом достигается ветвление, хотя физически данные записаны последовательно.
К чему я это?
К тому, что по общепринятому соглашению выполняемый код и данные (строки или числа), с которым он работает, располагаются в разных сегментах, т.е. отделены. И к тому, что код оперирует не с данными, а с адресами этих данных. Из этого следует, что различные данные не должны пересекаться (накладываться друг на друга). И кстати, да, адресом данных является адрес первого байта этих данных. И на такие данные налагается требование неизменения размера.
Давайте лучше пример, а то для вас то, что я пишу, наверняка непонятно с первого раза. Рассмотрим всё схематично, потому что я не углублялся в познание машинного кода и не могу сказать достоверно коды операций.
Итак, у нас есть код:
Код
    printf("Hello, world!");
    printf("Another string.");
Он будет переведён в машинный код примерно следующего вида (в фигурных скобках указаны комментарии):
Код
    {несколько директив для указания, как работать процессору}
    {начало сегмента кода}
    {код, вызывающий функцию printf с параметром Х}
    {код, вызывающий функцию printf с параметром Y}
    {тут идёт много неинтересного нам кода}
    {заканчивается сегмент кода, начинается сегмент данных}
    {адрес X, с которогоначинается перваая строка}Hello, world!{нулевой байт, означающий конец строки}
    {адрес Y, с которогоначинается перваая строка}Another string.{нулевой байт, означающий конец строки}
    {здесь и дальше идут неинтересные нам данные}
Название: Перевод на русский бинарных файлов.
Отправлено: pashak от 21 Март 2012, 02:29:09
Адреса для данных (в данном случае, для Hello, world! и Another string.) резервируются в процессе компиляции и предполагается, что они не могут быть изменены, т.к. они используются в коде. Как видим, первая строка отделена от второй строки нулевым байтом, и если мы заменим его на пробел, то при обращении к первой строке будут выведены обе строки (!!!). Здесь и просматривается правило ненарушения размера.
Однако это правило можно обойти, если в коде, ссылающемся на строку, изменить адрес этой строки. Например, если в русской версии эта строка больше на 2 символа, то при локализации нужно записать эту строку на 2 символа раньше (но так, чтобы она не пересекалась со строкой перед ней) и в коде, ссылающемся на эту строку, уменьшить адрес на двойку.
Другой темой является поиск адреса, ссылающегося на эту строку. Но это не так сложно. Зная адрес первого символа строки можно запросто найти участок кода ссылающегося на этот адрес. Для этого нужно воспользоваться следующим правилом:
Адрес строки нужно дополнить четверкой, которую нужно поставить на чётную позицию (позиция отсчитывается слева, с единицы): 5DAB8 — 45DAB8.
Разбейте адрес строки (45DAB8) в шестнадцатиричном виде по 2 числа (45 DA B8) и запишите полученный список в обратном порядке (B8 DA 45) и дополните нулями до восьми знаков (B8DA4500).
Теперь попробуйте поискать получившееся число (B8DA4500) по всей программе. Найденное вхождение, а их может быть несколько, и будет ссылкой из кода на нужную нам строку. В случае чего, эту ссылку можно подкорректировать.
Еще ближе к практике
Когда-то мне довелось перевести Valve Hammer Editor (VHE) на русский. А "зашитых" строк там было полно. Вот так я и научился совершать перевод.
Итак, для примера нам понадобится WinHex и VHE 3.5. Сначала нужно выполнить перевод PE-части. Есть немало сторонних программ, с помощью которых можно с лёгкостью это сделать. После этого вы сможете увидеть, какая часть интерфейса осталась нерусифицированной, скорее всего, она и будет внутри кода.
Находим какую-нибудь строчку на английском, которая на русском будет длиннее.
(http://uco.puppyrus.org/images/tr-1.jpg) (http://uco.puppyrus.org/images/tr-1.jpg)
Например, Lift — в данном контексте Подъём, Установка, Переключение на текстуру.
Открываем в WinHex исполняемый код VHE. Ищем "Lift", но таких адресов есть несколько. Выбираем именно тот, где фраза окружена нулевыми байтами — адрес D3978.
(http://uco.puppyrus.org/images/tr-2.jpg) (http://uco.puppyrus.org/images/tr-2.jpg)
Теперь ищем ссылки на эту строчку: Ctrl+Alt+F, ищем число 78394D (переделанный по правилу адрес). Оно нашлось по адресу 1А112. Это значит, что код из этого места ссылается на данные по адресу D3978. Меняем 78 на 77.
(http://uco.puppyrus.org/images/tr-3.jpg) (http://uco.puppyrus.org/images/tr-3.jpg)
Такая замена означает, что строчка должна начаться на один символ раньше. Теперь "Lift" меняем на "Подъём", но запись начинаем с одного символа раньше.
(http://uco.puppyrus.org/images/tr-4.jpg) (http://uco.puppyrus.org/images/tr-4.jpg)
Название: Перевод на русский бинарных файлов.
Отправлено: pashak от 21 Март 2012, 02:30:45
Теперь можно глянуть на результат.
(http://uco.puppyrus.org/images/tr-5.jpg) (http://uco.puppyrus.org/images/tr-5.jpg)
Так поступаем в любом случае, если невозможно записать русскую строчку так, чтобы она не накладывалась на следующую.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: andy-voit от 21 Март 2012, 03:28:43
Спасибо! С меня +. Скачал информацию, буду разбираться...
Название: Re:Перевод на русский бинарных файлов.
Отправлено: dim-kut от 21 Март 2012, 06:23:25
Например, если в русской версии эта строка больше на 2 символа, то при локализации нужно записать эту строку на 2 символа раньше (но так, чтобы она не пересекалась со строкой перед ней) и в коде, ссылающемся на эту строку, уменьшить адрес на двойку.
Спасибо за подробную инструкцию, но это все верно для однобайтных кодировок. А у нас utf-8, каждая русская буква записывается двумя байтами, что усложняет дело. Т.е. сдвиг адреса будет обязательно и 2-мя байтами не отделаешься.

Может лучше записывать новые строки в конец сегмента данных и указывать в коде новый адрес? А английский текст пусть лежит балластом на своем месте поскольку муторно его выдергивать?
Название: Перевод на русский бинарных файлов.
Отправлено: pashak от 21 Март 2012, 14:17:17
Насчёт переноса данных в конец сегмента: да, можно, но не факт, что всегда будет место. Место распределяет компилятор, и если включена оптимизация, то шансы перенести строчки уменьшаются.
Для двухбайтных кодировок картина аналогична. Для примера помучаем всё тот же VHE (правда, я не знаю, как обстоят дела с не-Windows программами, но думаю, что аналогично). В WinHex есть замечательная штука — поиск Unicode. Попробуем перевести ресурс с Unicode — заголовок меню File (это, конечно, можно сделать в PE Explorer или другом PE-редакторе, но для примера, я думаю, сойдёт).
Ctrl+F, ставим галочку "Учитывать регистр" и тип Unicode. Ищем фразу "File". В оригинальном файле она находится на смещении 120E30.
(http://uco.puppyrus.org/images/tr-6.jpg) (http://uco.puppyrus.org/images/tr-6.jpg)
Для перевода нам понадобится таблица символов UTF-16 (http://www.utf8-chartable.de/unicode-utf8-table.pl (http://www.utf8-chartable.de/unicode-utf8-table.pl)).
Находим коды символов 'Ф', 'а', 'й', 'л' в первой колонке (предварительно переключившись на кириллические символы): 0424, 0430, 0439, 043B.
Теперь опять будем пользоваться правилом разбития на 2 знака и записи в обратном порядке.
Записываем с адреса 120E30 следующие данные:
24 04 30 04 39 04 3B 04
(http://uco.puppyrus.org/images/tr-7.jpg) (http://uco.puppyrus.org/images/tr-7.jpg)
И сохраняем файл. Теперь смотрим на результат.
(http://uco.puppyrus.org/images/tr-8.jpg) (http://uco.puppyrus.org/images/tr-8.jpg)
Готово.
Что касается 4-байтных кодировок, то я не встречал их, но подозреваю, что значения в таких кодировках тоже будут записаны в обратном порядке.
Ах, да: если вы знаете, как обстоят дела на других платформах, то, пожалуйста, напишите об этом.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 21 Март 2012, 17:34:29
Это конечно интересно, но это скорее из мира Windows, где исходный код засекречен. В случае с Puppy можно просто попросить у разработчика исходный код. Опять же в исходном коде лучше не жёстко вписывать перевод, а использовать gettext, чтобы был возможен перевод и на другие языки.
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 16 Май 2012, 00:44:56
Сегодня в ответ на сообщение Барри (http://bkhome.org/blog/?viewDetailed=02828) решил попробовать добавить gettext в программу Xarchive.
Получился Xarchive на русском. Сделал pet-пакет. Я понимаю, что у нас популярны xarchiver или file-roller, но всё же...

(http://storage4.static.itmages.ru/i/12/0810/s_1344597162_1865315_c155f327a4.jpeg) (http://storage4.static.itmages.ru/i/12/0810/h_1344597162_1865315_c155f327a4.jpeg)
Название: Re:Перевод на русский бинарных файлов.
Отправлено: sfs от 16 Май 2012, 09:35:00
Вы ничего не перепутали? Бинарник в .pet английский... .mo не доглядел
Название: Re:Перевод на русский бинарных файлов.
Отправлено: rodin.s от 16 Май 2012, 11:01:24
Вроде-бы сначала установил пакет в Slacko, а затем сделал скриншот. Нужно будет перепроверить. Бинарика недостаточно. В пакете есть ещё xarchive.mo в /usr/share/locale/ru/LC_MESSAGES.
Перепроверил: при установке пакета Xarchive - на русском.