FLEI - MTK LangPack Editor/Importer/Exporter
by Funt



Pease donate


Write a message to the author

FLEI is a free software which allow to edit/import/export MTK LangPacks.
Main features:
- Phrase editing without restriction to it's 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 occurrence 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.



Current version is 1.06 [16.01.11]
Download Windows version.
Download Windows 64 version.
Download Linux version.

Before running be sure Java machine is installed on your PC


How to use


There are two work modes of the program: Edit mode (It's enough to open BIN1) and Import mode (You should load BIN1 and BIN2). By default auto-search of languages is enabled. But if it's disabled "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 before opening firmware file.
Also, be sure that filled in scat offset of the file is correct.
Firmware file can be opened with help of Open button and can be read with help of Read button (table offsets should be chosen and file name should be entered before reading). After reading you will see table with phrases.
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 occurrences 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 seance, 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 which 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 colours 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 phrase 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.
To write changes to the firmware image file in Edit mode press "Write BIN1" button. To write result of import press "Write BIN2" button. Be sure to make back-up before writing. Languages can be also saved in two files - phrases and offsets with help of menu "Save language". In case of inserting these files to the firmware manually 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 seance. 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 support of langpack with dual index format
2) Implement possibility to save import project with alternative phrases, probability of right translation, etc...
3) Add FLEI interface localization support



A little instruction about how to find langpack table manually.
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 offset for the table of language and it should be entered to "Table Offset" field.



Допомогти автору


Написати листа

FLEI - це безкоштовна програма, що дозволяє редагувати/імпортувати/експортувати мовні пакети телефонів на базі процесора MTK (програма тестувалася на MTK6235).
Основні можливості:
- редагування фраз без обмежень по їх довжині.
- декілька режимів редагування фрази, що використовується кілька разів: заміна у всіх місцях використання або заміна лише в одному місці використання.
- імпорт мовного пакету з одного "мастерфуллу" до іншого за використання опорної мови з визначенням ймовірної точності перекладу та відображенням альтернативних перекладів за їх наявності.
- імпорт мовних пакетів з різних мастерфуллів до одного мастерфуллу. При цьому при імпортуванні кожного наступного мовного пакету з нього беруться лише ті фрази, які ще не були перекладені при імпортах з попередніх мастерфуллів (червоні фрази).



Поточна версія 1.06 [16.01.11]
x86 Windows версія.
x86_64 Windows версія.
Linux версія.

Для роботи програми потрібно встановити Java машину


Коротка інструкція з використання


Програма працює в двох режимах - в режимі редагування (достатьно відкрити BIN1) та в режимі імпорту (потрібно відкрити мастерфулл з якого імпортується мовний пакет, та мастерфулл до якого планується експортувати мовний пакет). За замовчанням увімкнений автопошук мовних пакетів в мастерфуллі. Але в разі, коли він вимкнений перед відкриттям файлу в поле "Table offset" для "Reference language" потрібно ввести зміщення таблиці опорної мови 1, а в "Language to export" зміщення мови, яку потрібно відредагувати (в режимі редагування) або експортувати до іншого мастерфуллу.
Також переконайтеся, що введене scat зміщення корректне.
Мастерфулл можна відкрити за допомогою кнопки Open, прочитати мови можна за допомогою кнокпи Read (перед цим потрібно ввести зміщення таблиць мов, також ім'я мастерфуллу не повинно бути пустим). Після цього ви побачите таблицю з фразами мовних пакетів.
Фрази написані синім кольором - це фрази, що використовуються більш ніж в одному місці. За замовчанням після редагування такої фразу програма спитає чи потрібно змінити цю фразу у всіх місцях використання, чи лише в одному. Під час редагування ви будете бачити наскільки редагований мовний пакет більший чи менший вихідного.
Часто мовні пакети починаються і закінчуються символом ", під час читання цей символ ігнорується, що дає змогу трішки зменшити місце займане мовним пакет.
Таблиця може сортуватися за індексом фрази, статусом фрази (використовується в кількох місцях/редагована користувачем) та за алфавітом.

Тепер, якщо відкрити другий мастерфулл отримаємо результат імпорту мови "Language to export" до BIN2. Опорні мови BIN1 та BIN2 мають співпадати (обидві мають бути англійською, чи будь якою іншою), "Language to replace" - це мова замість якої планується експортувати нову мову. Вона використовується лише щоб бачити більше чи менше місця займає імпортована мова.
Результат імпорту - це мовний пакет, кожна фраза якого має ймовірність точності перекладу. Кольори та їх ймовірності можна знайти в легенді таблиці у відповідному меню.
Наприклад "салатовий" колір - ймовірність якісного перекладу дуже висока (2 попередні і 2 наступні фрази кожної з опорних мов співпадають). Зелена - ймовірність якісного перекладу висока (3 з 4-х фраз обох мовних пакетів однакові або ця фраза зустрічається лише один раз)... і т.д., червоний - ця фраза відсутня в опорній мові 1.
Також ви можете помітити фрази виділені жирним шрифтом. Ці фрази перекладаються по різному в різних місцях мовного пакету, за замовчанням серед усіх варіантів для перекладу вибирається фраза з найбільшою ймовірністю якісного перекладу. Але користувач може вибрати іншу серед альтернативних фраз, або ввести свій варіант. В режимі імпорту таблицю також можна відсортувати за наявністю/відсутністю альтернативних фраз та за ймовірностями точного перекладу. Кнопка "Next Alt Translations" може використовуватися для знаходження наступної фрази з альтернативним перекладом.
Щоб додати новий рядок під час редагування фрази достатньо натиснути "CTRL+ENTER".
Ви можете експортувати більше одного мовного пакету для отримання повного перекладу. Принцип той самий, але під час імпорту кожного нового мовного пакету заміняються лише "червоні" фрази для яких небуло знайдено переклад при попередніх імпортах. Додаткові мовні пакети можна імпортувати за використання кнопок Open/Read для BIN1.
Для збереження результатів редагування мови у файл прошивки, натисніть кнопку "Write BIN1", щоб зберегти результат імпорту мови до другого файлу прошивки натисніть "Write BIN2". Мовні пакети можна також зберігати у 2 файли - файл фраз і файл зміщень через меню "Save language". Ці файли можуть бути записані в файл прошивки за допомогою WinHex чи подібних програм. В цьому разі бажано не забути оновити лічильник фраз в таблиці мовного пакету у відповідності з поточною кількістю фраз (під час читання мовного пакету програма повідомить, якщо число фраз в таблиці відрізняється від дійсної кількості фраз.
В поточній версії не реалізоване зберігання проекту імпорту. Тому редагування результату імпорту має бути зроблене за один сеанс. Результати імпорту можна зберегти у файл через меню "Save languages -> Translation".
Налаштування BIN1, BIN2 можна зберегти/завантажити через меню File.

В наступних версіях планується:
1) Реалізувати підтримку мовних пакетів з індексами у форматі dual
2) Реаліувати можливість збереження проекту імпорту включаючи альтернативні переклади, ймовірність точного перекладу і т.д.
3) Реалізувати підтримку локалізацій інтерфейсу FLEI



Помочь автору


Написать сообщение


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

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



Текущая версия 1.06 [16.01.11]
Windows версию скачать можно тут.
Windows версию 64 скачать можно тут.
Linux версию скачать можно тут.

Для работы программы нужна Java машина

Кратко о том как с программой работать: Пока есть 2 режима работы - Редактирование (достаточно загрузки BIN1) и Импорт (нужно загрузить BIN1 и BIN2). По умолчанию активирован автопоиск языков. если язык не был найден, попробуйте ввести другой scat offset. Если вы хотите октрыть файл прошивки без автопоиска, то прежде чем это сделать нужно заполнить поля "Table Offset", в поле "Reference language" - вписать оффсет на таблицу опорного языка, в поле "Language to export" - оффсет на таблицу редактируемого языка или языка, который нужно импортировать в другую прошивку.
Эти оффсеты достаточно просто узнать. Нужно найти смещение по которому в прошивке записана фраза "Accept", "Принять" (для MTK6235, для 6225 это другие фразы) и т.д. в юникоде, отнять от смещения еденичку, добавить смещение 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.
Чтобы сохранить результат редактирования языка в файл прошивки нужно нажать кнопку "Write BIN1", чтобы сохранить результат импорта во второй файл прошивки нужно нажать "Write BIN2". Обязательно сделайте резервную копию прошивки перед записью в прошивку. При импорте языка из одной прошивки в другую импортируются, только сам ленгпак. Имя ленгпака и код страны нужно редактировать самостоятельно например с помощью WinHex. Сохранить языки также можно в отдельный файл (точнее 2 файла - фразы и таблица оффсетов с помощью меню "Save language". Потом их легко вставить в прошивку с помощью WinHex. В этом случае желательно вписать в таблицу языка новое количество фраз, если оно изменилось (при открытии файла программа сообщает если число фраз в таблице отличается от фактического числа фраз).
Так же пока не реализовано сохранения проэкта импорта. Т.е. получается что корректировку импорта нужно делать на одном дыхании :(
Настройки можно сохранить/открыть в меню File...
Планы по приоритности:
1) Реализовать поддержку ленгпаков с индексами в формате dual
2) Сохранения проэкта импорта, чтобы можно было сохранять ленгпак вместе с вероятностью правильности перевода, альтернативными фразами и т.д.
3) Реализовать поддержку локализаций интерфейса FLEI



La versione attuale è 1.06 [16.01.11]
Scarica la versione di Windows.
Scarica la versione di Windows 64.
Scarica la versione di Linux.

Prima dell'uso accertarsi che la runtime Java sia installata sul PC.

Italian translation by edborg



Per fare una donazione


Scrivere un messaggio all'autore

FLEI è un software gratuito che permette di modificare/importare/esportare i set di lingue (LangPacks) MTK. Funzioni principali:
- Modifica delle frasi di testo senza vincoli di lunghezza.
- Possibilità di modificare solo una volta le frasi ripetute (per esempio se la stessa frase è usata in diversi posti e non la si vuole modificare in ogni sua istanza).
- Possibilità di importare un LangPack da un firmware all'altro usando una lingua di riferimento, determinando l'accuratezza della traduzione e con traduzioni alternative.
- Possibilità di importazioni multiple o parziali di lingue in un firmware partendo da alcuni altri firmware.

Istruzioni per l'uso.


Ci sono due modalità d'uso del programma: Edit mode (è sufficiente aprire BIN1) e Import mode (occorre caricare BIN1 and BIN2). Per impostazione predefinita la ricerca automatica delle lingue è abilitata. Nel caso sia disabilitata è necessario inserire nel campo "Table offset" in "Reference language" l'offset della tabella della lingua di riferimento e nel campo "Language to export" l'offset della tabella della lingua da modificare (in Edit mode) o della lingua da esportare nel firmware BIN2 (in Import mode) prima di aprire il file del firmware.
Assicurarsi anche che lo Scat Offset del file sia corretto.
Il file del firmware può essere aperto cliccando sul pulsante Open e letto con il pulsante Read (i Table Offset ed il nome file devono essere impostati prima della lettura). Dopo la lettura comparirа la tabella con le frasi. Le frasi in blu sono quelle utilizzate più di una volta nel LangPack. Per impostazione predefinita dopo la modifica di una di queste frasi verrа chiesto se cambiarne tutte le istanze o solo quella appena modificata. Durante la modifica verrа evidenziato di quanto la frase sia più lunga o più corta dell'originale.
Spesso i LangPacks contengono frasi con virgolette all'inizio e alla fine; le virgolette vengono rimosse durante la lettura del LangPack. La tabella può essere ordinata per indice o per stato (ad uso multiplo, modificata dall'utente, o in ordine alfabetico).
Se, dopo avere inserito le modifiche in BIN1, apriamo BIN2 otterremo il risultato di importare la lingua modificata in BIN2. La "Reference language" per BIN1 e BIN2 deve essere la stessa (inglese o un'altra), la "Language to be replaced" deve essere quella da sostituire con quella importata. E' usata solo per vedere se la lingua importata è più corta o più lunga di quella da sostituire.
Il risultato dell'importazione è il LangPack ottenuto, per ogni frase del quale è indicata una probabilitа di accuratezza con i colori indicati nella "Table Legend".
Per esempio, "verde chiaro" indica una probabilità molto alta di traduzione corretta (2 frasi precedenti e due successive sono le stesse per entrambe le lingue di riferimento). La probabilitа "verde è alta (3 o 4 frasi sono le stesse, o la frase è usata una sola volta); "rosso" indica che la frase non esiste nella lingua di riferimento 1, etc.
Ci possono essere anche frasi in grassetto, che hanno traduzioni diverse in posti diversi nella lingua di riferimento 1. Per default viene usata la frase con la più alta probabilitа di accuratezza, ma è possibile scegliere una traduzione alternativa o cambiarla a piacimento. In Import mode la tabella può essere ordinata per traduzioni alternative ed il pulsante "Next Alt Translations" può essere usato per andare alla successiva frase con traduzioni alternative.
Per inserire una nuova riga nella frase digitare "CTRL+ENTER".
E' anche possibile aggiungere un altro LangPack da un terzo, quarto, etc firmware al risultato dell'importazione. il funzionamento è lostesso, ma soltanto le frasi in rosso (non trovate nel firmare) saranno sostituite.
I firmware aggiuntivi possono essere aggiunti inserendo il nuovo "Table Offset" di BIN1 e aprendo il nuovo firmware BIN1.
Per salvare le modifiche al file del firmware in Edit mode premere il pulsante "Write BIN1". Per salvare il risultato dell'importazione premere "Write BIN2". Fare sempre un back-up prima di salvare i cambiamenti. Le lingue possono anche essere salvate in due file - frasi e offset - con l'aiuto del menu "Save language". In caso di inserimento manuale di questi file nel firmware è meglio aggiornare il conteggio delle frasi nella tabella del LangPack (all'apertura del file FLEI indicherà se il conteggio delle frasi nella tabella differisce da quello effettivo).
L'importazione del progetto non può essere salvata nella versione corrente, quindi le modifiche al firmware importato devono essere fatte nella stessa sessione. Tuttavia i risultati dell'importazione possono essere salvati con l'aiuto del menu "Save languages -> Translation".
Le impostazioni di BIN1, BIN2 possono essere salvate/aperte dal menu File.
DA FARE:
1) Aggiungere supporto ai LangPack in formato dual index
2) Introdurre la possibilità di salvare un progetto di importazione con frasi alternative, probabilità di accuratezza di traduzione, etc...
3) Aggiungere supporto alla localizzazione dell'interfaccia FLEI


Suggerimenti su come trovare manualmente la tabella del LangPack.
Nella maggior parte dei casi è sufficiente trovare l'offset della frase Unicode "\0Accept\0" ("00004100630063006500700074000000" HEX) per la lingua inglese o per la sua traduzione in altre lingue. Aggiungere l'offset del file scat (spesso F20000000) all'offset di tale frase e convertire il risultato nel formato LE. Si otterrа cosм l'offset del LangPack; trovare quindi nel firmware la stringa di questo offset e prendere nota del nuovo offset a cui la stringa si trova. Questo sarа l'offset della tabella LangPack, da inserire nel campo "Table offset".
Per esempio, consideriamo il file Star X10 THIRD_ROM del firmware E710_PX111B.09A.GPS.01.0 26.09.2010.
"00004100630063006500700074000000" si trova all'offset 011787dс. 011787dс + F2000000 = F31787DC, in formato LE: DC8717F3.
"DC8717F3" si trova all'offset 0161bec4; questo è l'offset della tabella del LangPack che deve essere inserito nel campo "Table Offset".



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



Безкоштовний хостинг в Україні