• Welcome, Guest. Please login.
 

How to create a new language for mobiles?

Started by meudheu, July 31, 2007, 04:59:37 am

previous topic - next topic

0 Members and 1 Guest are viewing this topic.

meudheu

Hi,
I looked everywhere but could not find the right info. I downloaded most tools in terms of font editors etc. done some font patching. My question here relates to adding a NEW language to mobiles, so I am starting with E398 as the mod tools is much better.

Questions: (potentially a sticky)
1) Where/how/with who is mobile country code registered? (I contacted ITU.int no answer yet)
2) How SEEM are created in regards to Unicode font map/code assignment?
3) How SEEM is related in terms of keypad input method? especially for placement of diacritics

I can probably modify an existing country font etc. but international automatic font selection would not work.

Help with pointers please.

Thanks in advance


Exploited

Well I cannot provide good answers on the specific questions, but I will tell you how a mate made a Bulgarian language pack in the past - he got the language that have almost the same alphabet (cyrilic), which is Russian, and then he translated all of the strings one by one. Practically you cannot see anything in the phone that will indicate that the language is not Bulgarian, but Russian

badguy

how about adding a language to existing language pack? i have read and followed the instruction to add a language to existing lp but it always end up unreadable for the new added language. i cannot find the link to the tutorial or instruction right now. basically, it suggested to extract .lng file from a language pack with shxcodec. then add it to a lp with shxcodec. finally, it can be compiled to a .shx file for flashing or flash it directly with shxcodec. for me, flashing it directly from shxcodec never works. i never successfully add a .lng file so the new language is readable. first i thought it's probably because i'm trying to add chinese (it has very different forms than english), but i tried with russian then even english, none of them works. so could somebody confirm this method please? i've never found any other way that is available. also, could the mp creators tell me how they make their custom lp? it's hard to imagine the differences but i just cannot get it to work. i've asked this question before but for some reason i've never get a straight answer. i would really appreciate anybody who can point me to the right direction.

Jithin

Well,I didn't play much with langpacks.But you can try this.
Open a CG4 langpack (in shx) in both Motolangeditor and shx codec. In motolangeditor,click the "Strings tab",in that you can add or delete languages you need (You can save languages from one CG4 and add to another CG4). After completing,use "save as" to save the langpack in *.smg format. Now in shxcodec,replace the *CG4.smg with the modified smg file. The RAMLDR is the same. Now compile shx from it. Thats it. Whole process can be done with shxcodec alone,but since you have problems with it,try this method.

badguy

ramldr stays the same or edit ramldr with the same way? probably not the latter but just to make sure

badguy

oh, if i see ??? instead russian, does that mean it won't be correctly shown on the phone?

meudheu

Hi all,
I am making some headway. I used MotoLangEditor v.5.1(Iceman) which allows one to add a new Unicode block into your font list. Then, import font from MSWindows font. Use LFM Mutifont recipe to patch CG1, CG15 to add language ID, String ID number just create your own, I am not sure if there is anyone assigning them.
Problems: 1) With MotoLangEditor(MLE), in replacing/import font from Windows font, the 1st column shows the characters fine, but 'Symbol' shows [] with some showing ok.... why?
2) MLE also can import language/message strings from LP Unicode.txt file, it loads them up with [] everwhere (even font exists) and when I 'pack strings' it takes a long long time, eventually 'done' BUT it drops all Unicode characters from the string....why?

thanks for all the help!

 

meudheu

Please help decypher CG4.smg file format, here is the easy part:
I am not sure if picture attachment will work, preview did not show it. Here is a brief description, file contains: English (03), French(06), Thai (0B):
10F40010000000B1010C0206FFFF0E300 CG4 Load address
1000039030000000300000010F403FCNumber of fontsID Lang =03 = EnglishFont load address
10F53EAC10F539F610F9059C00000000iTAP
10F5BF0410F55C4C10F583F800000000
10F403FA10F55C480600000010F5EE9E
10F761CC10F75CB610FA4C5C00000000
10F7822210F7803810F7811810F781FC
10F5EE9C10F780340B00000010F782BC
10F8E7BC10F8E00610FB6DF000000000
10F9058610F9055C10F9057010F90582
10F782BA10F905580000000000000000
0000000000000000000000000000

I need to know:
1) where each font pointers are and address of the blocks
2) where font name is stored
3) where language message strings are stored and how
4) what encoding character set is used
5) how code page is coded
6) cheksum

Thankyou


meudheu

Answer to this question (thx Iceman) in MLE under 'Strings' tab at the bottom right hand corner "Index, Unicode, Symbol" Add symbol, Delete Symbol" this is a 'Resolved Symbols' table a hint of characters used in message strings, a map to fonts in 'Font'. Add all symbols used, don't worry about 'Symbol' not display properly on 'Font' this table only serves to convert unicoded strings to, I assume internal code page codes (anyone knows the details how Moto code page and characters encoding work?).
Once this is done, 'Pack strings' when 'save language pack' will fly pass quite quickly; so far so good!

BUT, my strings once the language pack is reopened the strings are all messed up. This is probably due to not all languages have code page support in Moto firmware ie. Unicode->Moto code page failed. I thought Moto uses UCS-2/UTF16 but I am confused how code page is organized, especially for new non standard firmware support; how to add it?



Quote from: meudheu on June 10, 2009, 04:56:19 pm
Hi all,
I am making some headway. I used MotoLangEditor v.5.1(Iceman) which allows one to add a new Unicode block into your font list. Then, import font from MSWindows font. Use LFM Mutifont recipe to patch CG1, CG15 to add language ID, String ID number just create your own, I am not sure if there is anyone assigning them.
Problems: 1) With MotoLangEditor(MLE), in replacing/import font from Windows font, the 1st column shows the characters fine, but 'Symbol' shows [] with some showing ok.... why?
2) MLE also can import language/message strings from LP Unicode.txt file, it loads them up with [] everwhere (even font exists) and when I 'pack strings' it takes a long long time, eventually 'done' BUT it drops all Unicode characters from the string....why?

thanks for all the help!

 

meudheu

Update! still stuck decrypting CG4 file format with an intend of updating messages/menu strings with a currently not available language. MLE by Iceman v.2.5.1 allows one to add a new Unicode block (need to add Resolved Code see above) in 'Strings' to add new strings; but I am finding the strings are not loaded to the phone correctly. That is why I need to understand CG4 format, where and how codes are loaded and upload. I find it useful to have these tools: Winhex (or other) and MLEv.2.5.1, approach I am using is use MLE to modify each field: char width, heigth, font, strings one at the time and duplicated chars and then examine CG4 for difference applied by the changes, to see where things go. Interesting locations: 1F8-1FF, 234-24B I am not quite sure what table 24C-3FB is. Fonts get loaded-> C95C0: Font Netmonitor, C95EC: General latin . I am still puzzled how 'Strings' are stored, they don't seem to be any familiar codes, certainly not Unicode. My guess at the moment, fonts are loaded and an index to the fonts is created. 'Strings' are formed by references to this index (own internal char encoding); but it still does not make sense, yet! try modifying a string and see.

I would appreciate if anyone can share their findings, thanks.

meudheu

Ok, can anyone help tell me what encoding Motorola E398 use? it suppose to be UCS2 but I can not decipher this:
1st string English message "Memory Full" in CG4 is at 0x3FC =
F8667E7613FA67358813793483BAD5062F612CDE7E1AD50EEFA728D50EEFA704B379F86B553C6EFA7FDC61F2E6B543193D55AA

"Full Memory"
9FD3391F0CCFCED58813793483BAD5062F612CDE7E1AD50EEFA728D50EEFA704B379F86B553C6EFA7FDC61F2E6B543193D55A0

Changed 1st  char to "Aemory Full"
BE667E7613FA67358813793483BAD5062F612CDE7E1AD50EEFA728D50EEFA704B379F86B553C6EFA7FDC61F2E6B543193D55AA

It does not look like UCS2 2 bytes code used, changed F8667E of "Memory Full" to F8657E" produces: "MeNces nc"

????? anyone?


meudheu

"AAAAAA Full"=
BF7EFDFBF7C4FE99CD6204DE4D20EEB5418BD84B379F86B543BBE9CAD50EEFA704B379F86B553C6EFA7FDC61F2E6B543193D55AA