Общая структура языкового пакета
С замечаниями и дополнениями avkiev
Теперь попробую разъяснить основные принципы структуры ЯП. Рассмотрим все на примере телефона CX70.
Итак, у Вас есть ЯП в виде текстового файла размером... для S75 почти 9 мегабайт. Процесс перевода строк ЯП достаточно несложный, но очень длительный.
Процесс перевода
Прежде всего Вам понадобится текстовый редактор с поддержкой Юникода (Unicode BOM).
Можна воспользоваться обычным Microsoft Word или OpenOffice.org Writer, но я бы советовал использовать меньшую и более приспособленную для этого программу. Простой и быстрый редактор текста вроде Notepad2 или Notepad++ - у них есть подсветка синтаксиса, что облегчает работу и позволяет легче ориентироваться в тексте с большим количеством тэгов.
Заглавная информация ЯП
Первое, с чем Вы столкнетесь при открытии ЯП в текстовом редакторе - это заглавная информация.
Header info - информация, которая влияет на весь языковый пакет. Она содержит основные данные обо всем ЯП.
Полный заголовок выглядит так:
;
; Header info
;
PhoneType S75_47, 1640000, 2C0000
;AllLangs 11
;MaxMsgId 19759
LgPackId lg91
PhoneType S75_47, 1640000, 2C0000
PhoneType - константа.
S75 - модель телефона.
47 - версия прошивки.
1640000 - адрес местонахождения ЯП в FullFlash в 16-ричном (НЕХ) формате.
2C0000 - полный размер ЯП в 16-ричном (НЕХ) формате.
В ранних моделях (до х60) после этих данных могут быть дополнительные данные (например: PhoneType S35, 390000, 3BC00,6,8,a,0,c,e,10,14,0,2a,24,1668,7ff70,53). Что они означают я лично не знаю :(
;AllLangs 11
11 - количество языков в ЯП.
;MaxMsgId 19759
19759 - количество языковых строк в ЯП для каждого языка.
Именно такое количество строк придется переводить, если Вы возьметесь за перевод телефона.
Строки, которые начинаются с ";" - игнорируются. Они приводятся только для информации. Поэтому что либо в них менять - бессмысленно, AllLangs и MaxMsgId вычисляются автоматически.
LgPackId lg91
lg91 - тип ЯП.
О том, какие языки содержат разные типы ЯП, можно прочитать здесь.
Некоторые строки заглавной информации ЯП могут быть закомментированы (стоит ; в начале строки). Пусть все остается таким, как есть - не советую здесь ничего менять.
Сократить количество языков в ЯП может понадобиться, если переведенный ЯП выходит большим максимально возможного размера и программа не сжимает его, потому что после записи ЯП в телефон последний потеряет признаки работоспособности. В таком случае единственным способом применить Ваш перевод будет удаление всех строк одного языка из ЯП.
Отдельные языки
Полный блок текстовых строк для каждого языка начинается с этого:
;
;
; Language data
;
LangId 12
Единственное, что в этих строках меняется - это LangId. В одном ЯП не может быть более одного языка с определенным LangId.
LangId для каждого языка свой.
Примечение от avkiev:
То, что я накопал для NewSGold:
1: "ar"
3: "pt-br"
4: "ca"
A: "da"
B: "nl"
C: "en"
E: "et"
11: "fr"
13: "de"
14: "el"
19: "it"
1A: "lv"
1B: "lt"
1F: "pl"
20: "pt"
21: "ro"
22: "ru"
24: "sk"
26: "es"
28: "sv"
2C: "tr"
2D: "uk"
Следовательно, весь набор строк каждого языка начинается с ";", а заканчивается последней строкой перед началом блока текстовых строк следующего языка.
Если язык является последним в ЯП, тогда после последней строки этого языка должна быть одна пустая строка ("Enter").
Дальше начинаются непосредственно текстовые строки интерфейса, которые и нужно переводить.
String $0, "Country"
String - неизменное начало каждой языковой строки.
$0 - номер языковой строки. Нeмерация начинается с нуля (первая строка - 0; вторfz - 1; третmz - 2 и т.д.).
Нeмерация строк может быть в десятичном [0, 1, 2, 3 ... 10, 11 ...] или 16-ричном (HEX) [$0, $1, $2, $3 ... $A, $B ...] формате. О 16-ричном формате нумерации свидетельствует символ "$" перед номером строки.
Siemens Language Editor 1.4 распаковывает ЯП как с 10-тичной, так и с 16-ричной нумерациею строк, но программа не работает с телефонами, которые новее х55.
"Country" - сама текстовая строка. Она начинается открытиям кавычек и обязательно должна заканчиваться их закрытием.
|