FLEI - MTK LangPack Editor/Importer/Exporter
by Funt



MOVED TO FLEI.HO.UA, you will be redirected



Pease donate


Write a message to the author

Free software which allow to edit/import/expor MTK LangPack.
Main features:
- Phrase editing without restriction to its length
- allow to change only one of multi-used phrases (for example if the same phrase is used in different places and we need to change only one occurance of this phrase)
- allow to import langpack from one firmware to other using reference language with determination translation's accuracy and alternative translations.
- allow to make multi-import - import parts of languages to one firmware from few other firmwares.


Download Windows version.
Download Linux version.


How to use


There are two work modes of the program: Edit mode (It's enought to open BIN1) and Import mode (You should load BIN1 and BIN2). Before opening firmware file "Table offset" in "Reference language" should be filled with offset of the reference language table and "Language to export" should be filled with offset to table of language for editing (in the Edit mode) or language for exporting to BIN2 firmware file.
These offsets can be obtained easily. In most cases it's enough to find offset of the "\0Accept\0" unicode phrase ("00004100630063006500700074000000" HEX) for English language or its translation to other languages. Add scat file offset (often F20000000) to offset of this phrase and convert result to LE format. You will get offset of the langpack, now find this offset-string in the firmware and remember new offset where this string was found - this is langpack table offset and this offset you should input into the "Table offset" field.
For example lets consider Star X10 THIRD_ROM file of firmware E710_PX111B.09A.GPS.01.0 26.09.2010.
"00004100630063006500700074000000" can be found at offset 011787dс. 011787dс + F2000000 = F31787DC, LE format: DC8717F3. "DC8717F3" can be found at offset 0161bec4 - this is ofsset for the table of language and it should be entered to "Table Offset" field.
After offset entered we can open firmware file with help of Open button or Read button (need to enter fileName before reading).
Phrase written with blue - is multi-used phrase, used more than one time. By default after changing such phrase you will be asked to change all ocurances or just one you have changed. During editing you will see how much longer or shorter edited langpack.
Often langpacks contain phrases with quotes at the beginning and at the end, these quotes are removed during reading a language.
Table can be sorted by phrase index, by phrase status (multi-used, modified by user in the current seanse, by alphabet).

Now, if we open BIN2 we will get result of import "Language to export" to BIN2. Reference languages for BIN1 and BIN2 should be the same (both be english or some other), "Language to replace" - language wich you are going to replace with imported language. It is used only to see if imported language shorter ol longer than language to replace.
Import result - it is langpack, each phrase of which has probability of translation accuracy. You can find corresponding colors in the table legend.
For example "light green" - probability of right translation is very high (2 previous phrases and 2 next phrases are the same for both reference languages). Green - probability of right translation is high (3 of 4 phrases are the same, or this pharse is used only once)... etc, red - phrase was not found in the reference language 1.
You also can see bold phrases - these phrases has different translations in different places of reference language 1, by default phrase with the highest probability is used. But you can choose alternative translation or change it to your own. In the Import mode table can be sorted by alternative translations and "Next Alt Translations" button can be used to found next phrase with alternative translations.
To put new line in the phrase "CTRL+ENTER" combination should be used.
You can also add other one langpack from third, fourth, etc. firmware to the result of import. Concept is the same, but only red (not found phrase) will be replaced. Additional firmware can be added by entering new BIN1 table offset and opening new BIN1 firmware.
At the moment saving result to firmware not implemented, but languages can be saved in two files - phrases and offsets with help of menu "Save language". These files can be easily written to the firmware with help of WinHex or similiar sw. Also it's better to update phrase count in the langpack's table (at file opening FLEI will say if phrase count in language table differs from the real phrase number).
Also import project can't be saved in the current version, so editing of import should be done in one seanse. But results of import can be saved with help of menu "Save languages -> Translation".
BIN1, BIN2 settings can be saved/opened using File menu.

TD DO:
1) Implement possibility to save import project with alternative phrases, probability of right translation, etc...
2) Langpack autosearch
3) Writing edited language to the image file.
4) Langpack "compression"





Бесплатная программа для редактирования/импорта/экспорта ленгпака из прошивко телефонов MTK6235. Программка еще сыровата, но в принципе уже вполне пригодна для использования.

Основные возможности:
1)Редактирование ленгпака без ограничения на размер фразы, есть возможность добавлять новые фразы (для случая когда одна фраза используется во многих местах и необходимо ее изменить только для некоторых случаев)
2)Импорт ленгпака из одной прошивки в другую по опорному языку с контекстным сравниванием. Т.е. пытаемся найти одинаковые блоки фраз в двух прошивках, что позволяет сделать более точный перевод (например фраза Off в зависимости от контекста будете переведена как Выкл., Выключить, Выключено, если в исходном ленгпаке есть разные варианты ее перевода для разных случаев)
Пока не реализован поиск ленгпаков и запись их в прошивку. В программу вводится оффсет на таблицу ленгпака, программа позволяет сохранить отредактированный ленгпак двумя файлами - сами фразы и оффсеты, которые вручну можно вставить в прошивку.

Windows версию скачать можно тут.
Linux версию скачать можно тут.

Кратко о том как с программой работать: Пока есть 2 режима работы - Редактирование (достаточно загрузки BIN1) и Импорт (нужно загрузить BIN1 и BIN2). Прежде чем открыть файл прошивки с ленгпаком нужно заполнить поля "Table Offset", в поле "Reference language" - вписать оффсет на таблицу опорного языка, в поле "Language to export" - оффсет на таблицу редактируемого языка или языка, который нужно импортировать в другую прошивку.
Эти оффсеты достаточно просто узнать. Нужно найти смещение по которому в прошивке записана фраза "Accept", "Принять" и т.д. в юникоде, отнять от смещения еденичку, добавить смещение scat файла, теперь пройтись поиском по файлу прошивки найдя полученной выражение в LE кодировке (т.е. переставить 4 байта полученного офссета задом наперед). Смещение по которому будет находится эта фраза и есть смещение таблицы ленгпака.
Теперь открываем файл с помощью кнопки Open или вписываем имя вручную и жмем Read. Получаем таблицу фраз.
Фраза написанная синим цветом - это фраза, которая используется в прошивке больше чем в одном месте. При редактировании таких фраз будет предложено изменить ее везде, или изменить ее только для данного индекса.
При редактировании в таблице будет видно на сколько символов полученный ленгпак короче или длиннее исходного. В будущем нужно будет реализовать функцию "сжатия", путем предотвращения дублирования фраз. Кроме того, часто в китайских теелфонах фразы начинаются и заканчиваются двойными кавычками, они убираются при чтении ленгпака. Таблицу можно сортировать по индексам фраз, по тому фраза используется один раз или многократно, редактировалась в текущем сеансе или нет, ну и по алфавиту.
Если теперь открыть файл BIN2, то получим результат импорта языка "Language to export" в прошивку BIN2. Опорный язык для BIN1 и BIN2 должен совпадать (например должен біть английски и там и там), "language to replace" - язык вместо которого планируется импортировать новый, по сути почти не используется, позволяет только определить помещается ли сделанный перевод на егом есто или нет.
Результат импорта - это ленгпак, каждой фразе которого задана вероятность точности перевода. В легенде таблицы есть обозначения цветов.
Например салатовый - вероятность правильного перевода очень высокая (2 предыдущие фразы и 2 последующие фразы одинаковые для обоих опорных языков).
зеленый - вероятность высокая (3 совпадения, или фраза встречается в прошивке только оидн раз) дальше 2 совпадения, 1 совпадение...и т.д. до красного - фраза не найдена.
Кроме того можно заметить фразы жирным шрифтом - это фразы, которые в разных местах переводятся по разному, по умолчанию выбирается фраза с самой высокой вероятностью, вручную можно выбрать альтернативный перевод или ввести свою фразу. Так же в режиме импорта таблицу можно сортировать и по этому признаку (пройтись по таких фразах можно с помощью кнопки "Next Alt Translations").
Чтобы вставить новую строку при редактировании фразы нужно нажать "ENTER+CTRL" одновременно.
К резульатам импорта можно так же "влить" ленгпак из третей, четвертой и т.д. прошивок, при этом все будет делатся по тому же принципу, что и до этого, но только для "красных" фраз, для которых не был найден перевод. Для этого нужно прописать новые оффсеты для BIN1 и открыть новый BNI1.
По этому этапу вроде бы все.
К сожалению пока не реализована запись в прошивку, сохранить языки можно в отдельный файл (точнее 2 файла - фразы и таблица оффсетов с помощью меню "Save language". Потом их легко вставить в прошивку с помощью WinHex. Кроме того желательно вписать в таблицу языка новое количество фраз, если оно изменилось (при открытии файла программа сообщает если число фраз в таблице отличается от фактического числа фраз).
Так же пока не реализовано сохранения проэкта импорта. Т.е. получается что корректировку импорта нужно делать на одном дыхании :(
Ну вроде бы все....настройки можно сохранить/открыть в меню File...
Планы по приоритности:
1) Сохранения проэкта импорта, чтобы можно было сохранять ленгпак вместе с вероятностью правильности перевода, альтернативными фразами и т.д.
2) Автопоиск ленгпаков.
3) Запись результата редактирования в прошивку.
4) "Сжатие" ленгпака

Pease donate
Лiчильник вiдвiдин Counter.CO.KZ