Tool to edit .CPL files - General Topics

Hello,
I need a tool to edit CPL files. I have done quite a bit of searching on Google and here, but none of the tools found on the net are actually intended for CPL files, while threads here only mention people editing them, not how.
Why I want to do this - I would like to edit Japanese text inside these CPLs so that I can fully localize my device(s) into English.
These are some of the files:
- ShPowerMng.cpl
- ShUsbCnt.cpl
- ShWrlsMgrRes.cpl
- shutil.cpl
Thanks in advance!

cheeseus said:
Hello,
I need a tool to edit CPL files. I have done quite a bit of searching on Google and here, but none of the tools found on the net are actually intended for CPL files, while threads here only mention people editing them, not how.
Why I want to do this - I would like to edit Japanese text inside these CPLs so that I can fully localize my device(s) into English.
These are some of the files:
- ShPowerMng.cpl
- ShUsbCnt.cpl
- ShWrlsMgrRes.cpl
- shutil.cpl
Thanks in advance!
Click to expand...
Click to collapse
did you try looking in the reg for it... i think its something like HKCU\***\MyCpl

irus said:
did you try looking in the reg for it... i think its something like HKCU\***\MyCpl
Click to expand...
Click to collapse
Yes, of course, I have looked through each registry folder - this is how, for instance, I found out how to translate Today items and Button descriptions (HKLM/Software/MS/Shell/Keys).
Suggested from posts here about HTC devices, I looked for HKEY_LOCAL_MACHINE\ControlPanel\MyCpl --- but I do not have such a registry setting.
Is it a far guess to tell that the files I mention above are used instead of registry settings?
This is why I am looking for a tool to edit these files. Is there one?

Any resource editor would do, try reshacker

stepw said:
Any resource editor would do, try reshacker
Click to expand...
Click to collapse
Thank you! Reshacker does open the files.
How to edit them, though, is less obvious than I thought. I was thinking there'd be strings of text I would just need to replace.
I'd like to ask for more help here, please.
For instance, I have:
Code:
STRINGTABLE
LANGUAGE LANG_JAPANESE, 0x1
{
101, "???????"
102, "Utility Applet"
}
1st Question: how can I see the Japanese text not garbled?
2nd: The two values above - do I just switch them somehow? 101, "???????" is the Japanese correspondent of 102, "Utility Applet".
Similarly here:
Code:
119 DIALOG 0, 0, 200, 110
STYLE DS_FIXEDSYS | WS_CHILD | WS_DISABLED
CAPTION ""
LANGUAGE LANG_JAPANESE, 0x1
FONT 8, "MS Shell Dlg"
{
CONTROL "????????????????\n??????", 1067, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 6, 138, 24
CONTROL "???????(????)", 1006, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 6, 42, 120, 12
CONTROL "???????????????\n(???????????)", 1007, BUTTON, BS_AUTORADIOBUTTON | BS_TOP | BS_MULTILINE | WS_CHILD | WS_VISIBLE, 6, 60, 126, 24
CONTROL "*RGB???????????????", 1068, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 84, 138, 12
}
How do I change the language - LANGUAGE LANG_JAPANESE, 0x1?
And, of course, if I can't see the Japanese text, I can't translate it -- I tried the various fonts available in ResHacker, but none of them seems to support Japanese.
PS. After installing Japanese (East Asian) Languages support on my PC, ResHacker now offers a couple more fonts that have "Japanese" under "Script", e.g. MS Mincho, MS Gothic etc. but they are still unable to properly render the Japanese text of the CPL file, whose font is "MS Shell Dlg".

cheeseus said:
Thank you! Reshacker does open the files.
How to edit them, though, is less obvious than I thought. I was thinking there'd be strings of text I would just need to replace.
I'd like to ask for more help here, please.
For instance, I have:
Code:
STRINGTABLE
LANGUAGE LANG_JAPANESE, 0x1
{
101, "???????"
102, "Utility Applet"
}
1st Question: how can I see the Japanese text not garbled?
2nd: The two values above - do I just switch them somehow? 101, "???????" is the Japanese correspondent of 102, "Utility Applet".
Similarly here:
Code:
119 DIALOG 0, 0, 200, 110
STYLE DS_FIXEDSYS | WS_CHILD | WS_DISABLED
CAPTION ""
LANGUAGE LANG_JAPANESE, 0x1
FONT 8, "MS Shell Dlg"
{
CONTROL "????????????????\n??????", 1067, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 6, 138, 24
CONTROL "???????(????)", 1006, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 6, 42, 120, 12
CONTROL "???????????????\n(???????????)", 1007, BUTTON, BS_AUTORADIOBUTTON | BS_TOP | BS_MULTILINE | WS_CHILD | WS_VISIBLE, 6, 60, 126, 24
CONTROL "*RGB???????????????", 1068, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 84, 138, 12
}
How do I change the language - LANGUAGE LANG_JAPANESE, 0x1?
And, of course, if I can't see the Japanese text, I can't translate it -- I tried the various fonts available in ResHacker, but none of them seems to support Japanese.
PS. After installing Japanese (East Asian) Languages support on my PC, ResHacker now offers a couple more fonts that have "Japanese" under "Script", e.g. MS Mincho, MS Gothic etc. but they are still unable to properly render the Japanese text of the CPL file, whose font is "MS Shell Dlg".
Click to expand...
Click to collapse
Try PE-explorer, this one gives you more power and also will display an example of the form (for certain compilers).
Regards,
EqX

the-equinoxe said:
Try PE-explorer, this one gives you more power and also will display an example of the form (for certain compilers).
Regards,
EqX
Click to expand...
Click to collapse
Thanks! Tried PE explorer as well. Just like ResHacker, it displays the form, but not the form is actually readable - ResHacker displays garbled chars in the script and the form, PE -- only in the script. Sadly, I still can't see, and copy, the Japanese text so that I can have it translated. Tried the various fonts in PE Explorer too...
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}

cheeseus said:
Thanks! Tried PE explorer as well. Just like ResHacker, it displays the form, but not the form is actually readable - ResHacker displays garbled chars in the script and the form, PE -- only in the script. Sadly, I still can't see, and copy, the Japanese text so that I can have it translated. Tried the various fonts in PE Explorer too...
Click to expand...
Click to collapse
It seems that those scripts can handle only western language .
If you try to edit the form (like moving Tedit boxes etc..), is there any chance to grep the text?
And if you look in the hex editor, any chance to get it from there?
(there is a program that can get the text from a dialog, sadly I forgot it's name.)
Regards,
EqX

the-equinoxe said:
It seems that those scripts can handle only western language .
If you try to edit the form (like moving Tedit boxes etc..), is there any chance to grep the text?
And if you look in the hex editor, any chance to get it from there?
(there is a program that can get the text from a dialog, sadly I forgot it's name.)
Regards,
EqX
Click to expand...
Click to collapse
Couldn't grip the text from the form editor - can move it around, but can't select it.
Can't find out how to see the file in HEX editor mode - this stuff is quite new to me...
The best idea I had was use OCR software to extract the text from a screenshot of the form. Abbyy Fine Reader 9 advertises Japanese/Chinese support but the copy I found doesn't have Japanese in its list of languages... so, I am stuck here, unless you can remember that program;s name
Regards,
Stefan

Little progress
I am having very little progress here...
I started editing the "ShPowerMng.cpl" file by looking at my other device and comparing tabs and options. And so I translated two screens. However, when I upload the file to the device, only the tab names are in English, while the other stuff I translated is still in Japanese
Tried resetting the device... no change.
When I copy back the ShPowerMng.cpl file from the device to the PC - checking if the file was successfully overwritten - it is translated, but why doesn't it show the English text?

cheeseus said:
I am having very little progress here...
I started editing the "ShPowerMng.cpl" file by looking at my other device and comparing tabs and options. And so I translated two screens. However, when I upload the file to the device, only the tab names are in English, while the other stuff I translated is still in Japanese
Tried resetting the device... no change.
When I copy back the ShPowerMng.cpl file from the device to the PC - checking if the file was successfully overwritten - it is translated, but why doesn't it show the English text?
Click to expand...
Click to collapse
Could be that the cpl has a separate "strings" section in the resources, or that the ROM also contains a ShPowerMng.cpl.04**.MUI file (not sure that cpl files can have a mui).
Regards,
EqX

the-equinoxe said:
Could be that the cpl has a separate "strings" section in the resources, or that the ROM also contains a ShPowerMng.cpl.04**.MUI file (not sure that cpl files can have a mui).
Regards,
EqX
Click to expand...
Click to collapse
Excellent point, .mui seems to be supported for .cpl's too. If there's a native mui file, this is where the resources should be translated. If there's none, it could be created for ease of translation, then you won't have to patch up .cpl's.
More details regarding MUI on Windows CE/Mobile are avaiable on MSDN:
http://msdn.microsoft.com/en-us/library/aa913592.aspx
http://msdn.microsoft.com/en-us/library/aa912683.aspx
Most resource editors don't support unicode string resources properly, hence Japanese characters are replaced with question marks. MS Visual Studio resource editors may be able to handle them properly. Another freeware that claims proper unicode support is XN resource viewer, maybe you could get the chars displayed properly using it.

stepw said:
Excellent point, .mui seems to be supported for .cpl's too. If there's a native mui file, this is where the resources should be translated. If there's none, it could be created for ease of translation, then you won't have to patch up .cpl's.
More details regarding MUI on Windows CE/Mobile are avaiable on MSDN:
http://msdn.microsoft.com/en-us/library/aa913592.aspx
http://msdn.microsoft.com/en-us/library/aa912683.aspx
Most resource editors don't support unicode string resources properly, hence Japanese characters are replaced with question marks. MS Visual Studio resource editors may be able to handle them properly. Another freeware that claims proper unicode support is XN resource viewer, maybe you could get the chars displayed properly using it.
Click to expand...
Click to collapse
XN Resource Editor saves the day!
However, because it returns save error for some of the files (write protected), I open the resource in it, copy the caption text in Japanese, paste in Google Translate, take the text and paste it inside the corresponding box in PE Explorer because it has no problem saving the file.
I have made significant progress this way, THANK YOU!
There are still some unknown problems:
- on the Power Management file (ShPowerMng.cpl), everything is translated but only the title and the tab captions are shown in English - the rest is still displayed in Japanese.
- on the Utilities file (shutil.cpl) - again everything is translated, but this time the tab captions are shown in Japanese, while the tab texts are all in English.
- on the USB connection manager (ShUsbCnt.cpl) the situation is as in the Power Management - tab names are in English, texts are in Japanese.
- the ShSystemInfo.cpl file is fully translated but I cannot see its contents in Settings - when I tap "S01SH Firmware", which is this file, I see only one page with some text that I could not see while editing, while the texts I edited are hidden. The text I can see is about the firmware version - 1.05a (upgraded from 1.00) - in Japanese, and the texts I cannot see contain: "Firmware version 0.00 / NAND ver.: / NOR ver.:" and over 10 other screens with texts that I presume are various warning messages displayed by the system, e.g. "An invalid argument was encountered."
Thanks for the help, guys! I hope that I can finish the job...

Some strings, for instance tab captions and window titles may be dynamic and the strings could be manipulated in code. In this case you won't be able to find them in the resource sections.

Use Sisulizer, it correctly displays all the languages, including Japanese

the big question
So, what I am still struggling to grasp is, where exactly are the texts written?
stepw says: "Some strings, for instance tab captions and window titles may be dynamic and the strings could be manipulated in code. In this case you won't be able to find them in the resource sections." --- does this then mean that the texts, written inside the CPL file are just there for no reason:
[above is the resource being edited, below is a screenshot of the resource displayed - tab names are in English, the rest is not displayed...]
Maybe these texts are also written in some other file and when the two files are loaded, the first one has greater weight than the CPL?
I also tried, following your advice to try creating a MUI file - in Windows directory there is also a "ShPowerMng.cpl.409.mui" file but it doesn't seem to change anything.
Maybe there is some other file I need to edit as well?
PS. I realize this thread has changed its original topic - the tool to edit CPL files - but I don't want to start a new thread for something which very few people would be interested in.
----------------------
PSPS. Looking at this thread, I see that the following are displayed from "cplmain.cpl":
Settings>System>Backlight>Brightness = 20#ctlpnl cplmain.cpl,6
Settings>System>Backlight>Battery power= 20#ctlpnl cplmain.cpl,6,1
Settings>System>Backlight>External power = 20#ctlpnl cplmain.cpl,6,2
Unfortunately, this is the only CPL file that I can't copy from my device - I get "cannot copy" in total commander and "access denied" in activesync. Any idea how I can cheat this?

cheeseus said:
...Unfortunately, this is the only CPL file that I can't copy from my device - I get "cannot copy" in total commander and "access denied" in activesync. Any idea how I can cheat this?...
Click to expand...
Click to collapse
try it with ROM Extractor 1.0. with that tool you can copy "non-copyable" files from device to storage card, and from there to your computer (via active sync). you'll have to do these steps on your device off course ;-)
see you

kel187 said:
try it with ROM Extractor 1.0. with that tool you can copy "non-copyable" files from device to storage card, and from there to your computer (via active sync). you'll have to do these steps on your device off course ;-)
see you
Click to expand...
Click to collapse
Thanks! ROM Extractor did manage to copy cplmain.cpl but it cannot be edited - ResHack and XN Resource Editor won't open it, while PE Editor opens it but gives a warning of some errors ("Erros detected! File opened in Safe Mode."). Still, the Resources are not viewable (View > Resources is grey) so even if there is text that should be edited in there I cannot get to it.
So, maybe I am looking in the wrong direction?
Yesterday I managed to completely edit another one of the CPLs, Pointing.cpl, which deals with the pointing device on my S01SH - I still have to fix the sizes of a couple of text boxes because some text is cut off but that isn't difficult.
Where else should I be looking for stuff to edit/translate?

Related

TUTORIAL: Windows Mobile Smartphone Internationalization Issues

In this tutorial, I explain how you can add new word completion (XT9) dictionaries to your Windows Mobile Smartphone and how you can redefine their built-in keyboard layout to match the official keyboards used in different languages (QWERTZ in German, AZERTY in French etc.). Based on my tutorial, you will be able to define any keyboard layout – not just the official ones.
One of the drivers that made me write this was the complete lack of any kind of a tutorial or even usable forum posts on these questions (make a Google search for any of the Registry subkey names!). The available ones (see for example THIS) are pretty much useless. That is, this article, as with most of my other articles, is the first REAL article / tutorial / description of all these issues never ever published by anyone before.
Note that this article only refers to touchscreen-less MS Smartphone (Windows Mobile Standard) devices, NOT Pocket PC’s. Should you want to know how you can redefine the default word completion directory used by Pocket PC’s, check out for example THIS article of mine. In addition, should you want to know how to redefine the built-in thumbboard layout, just read the “Change slide-out keyboard layout” section of the related XDA-Dev Wiki page.
1. Adding new XT9 dictionaries
My biggest problem with my TC Vox (s710) was the lack of a Finnish dictionary, as I do most of my chatting in either English or Finnish. The English dictionary works just great and really greatly increases the text entering speed; this is why I’ve tried very hard to find a Finnish dictionary. This forced me to discover how the XT9 dictionaries work and how additional dictionaries can be registered.
First, some good news. Unlike with the Pocket PC platform, you can easily switch between the XT9 dictionaries by just long-pressing the * dial button (or, on the keyboard, the Sym + Space keys) and just selecting the new dictionary. With the Pocket PC, you couldn’t do this very easily – you would need to quickly change the two Registry values HKCU\ControlPanel\ Sip\DictFile and HKCU\ControlPanel\ Sip\ProbFile. (Of course, using a scripting language / environment like the excellent nScriptm either executable from Start / Programs, you can quickly create a program that switches between the two (or more) dictionaries quickly. You can even assign this file to a hardware button. See my past nScriptm-related articles on how this can be done.)
First, an elaboration on how this all works. Note that you will NOT need this in most cases, unless you want to add your DLL’s not existing in the two CAB’s provided in the next section; in this case, you can safely skip this section and move to the next, 1.2.
1.1 In the Registry
First, some advanced stuff. Let me clarify how the Registry keeps track of the different dictionaries.
1.1.1 eT9\AvailableLanguages
First, let’s have a look at HKEY_LOCAL_MACHINE\ Software\Tegic\eT9\ AvailableLanguages. This lists the supported languages. That is, if a given language is enabled in here, then, it will be selectable in the dictionary selector menu (regardless of whether its dictionary DLL really exists or not).
The language codes here come right from the official ISO country codes (listed for example HERE, in the LCIDHex column), with the exception of 04 being changed to 01.
That is, while the official language code of English is 0409, you must use 0109 to refer to English in here. The same stands for all other languages: for example, French is 040C; therefore, it must be referred to as 010C in here.
Note that the order of the numbers of the different languages is also important. For example, if you want to make sure French is the first, just move 010C to the first place of the list in this Registry value; then, the latter will be something like this:
010C,0109,0107,0110,010A,0113,0105,0108,0118,0115,0116,011B,011F,010E,011D,0114,010B,0106
(This registry import script is also available HERE, should you want to play with it.)
Doing this will result in French being offered as the first in the list:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
You will need this information particularly useful when you want to move a language otherwise not in the first section (for example, not accessible with a phonepad shortcut key). For example, this THIS screenshot, you can see Finnish is at the end of the list - you both need a lot of scrolling (even if you press Up at first) to be able to access it and you can’t use a keypad shortcut to activate it either. To fix the problem, you only need to find the language code for Finnish (040B ), change the first 04 to 01 and just move the resulting 010B to the beginning of the list as can, for example, be seen in the following screenshot:
(registry import file available HERE; in it, the list is as follows: "010B,010C,0109,0107,0110,010A,0113,0105,0108,0118,0115,0116,011B,011F,010E,011D,0114,0106")
See how easy is to bring the languages you REALLY need to the beginning of the language list?
Note that, as with all the other Registry hacks in this article, contrary what some people state (for example HERE), the changes will be visible as soon as you modify the Registry. You do NOT need to restart your handheld.
Now, let’s move on to providing the real dictionaries for the system.
1.1.2 eT9\IME\KdbDlls
As one can easily guess, dictionaries take up a lot of memory (in general, between 100 and 400 kbytes); therefore, more scare languages don’t come with all Smartphones to conserve ROM memory. (For example, a Smartphone sold in the U.K. doesn’t necessarily need the Swedish or the Finnish dictionary built-in; therefore, they’re left out.)
This means, in addition to listing the language in eT9\AvailableLanguages (see section 1.1), you must also provide the given DLL for the system.
To do this, the given DLL, firs, must be got from somewhere (for example, extracted form a ROM of a localized (non-general) Smartphone having it) and, after being copied to the \Windows directory of your handheld, must be listed under the HKEY_LOCAL_MACHINE\ Software\Tegic\eT9\ IME\KdbDlls subkey.
The values in here are pretty straightforward: their names end up at the lower byte of the country code and their values contain the name of the DLL. For example, with English (language code in hex: 0409; therefore, lower byte: 09) will be represented like this:
"00010609"="eT9.Dis.9Keys.English.kbd.dll"
The upper three bytes will always be 000106 with eT9.Dis.9Keys DLL’s and 000107 with the much rarer (for example, Greek) eT9.HQD.Libra DLL’s.
1.2 Ready-made dictionaries
Should you want to avoid direct Registry editing, all you need to do is importing the CAB file containing the language dictionary you need. For example, if you need one or more of the English, French, German, Italian, Spanish, Dutch, Czech, Greek, Romanian , Polish, Portuguese, Slovak, Turkish, Hungarian set, you can just download and install the CAB file provided HERE (for the HTC Vox / s710) or HERE (HTC Excalibur / s620).
Should you, on the other hand, need Scandinavian languages (yes, including Finnish, Mr. Rutkowski ), you’ll need THIS file, originally compiled by XDA-Developers forum member mriz. (I provide a link to the version hosted by me because mriz hosts his version on Rapidshare, which is known to take down its downloads after a while.)
A screenshot of the language list is HERE; an in-action screenshot with the Finnish dictionary.
1.2.1 A caveat: very important!
When you install ANY language pack, HKEY_LOCAL_MACHINE\ Software\Tegic\eT9\ AvailableLanguages (see section 1.1) will be overridden and the old dictionaries NOT present in the just-installed one will just disappear! Therefore, you MUST for example save the original contents of this entry and, after installing ANY language pack, just concatenate these numbers to the new ones.
For example, if you install the Scandinavian pack on a handheld that previously had the MoDaCo multilingual pack, eT9\AvailableLanguages will contain only the following after the import (that is, four languages; not even English):
011D,0114,010B,0106
instead of the combination of both packs, listing all the languages in both of them; that is,
0109,010C,0107,0110,010A,0113,0105,0108,0118,0115,0116,011B,011F,010E,011D,0114,010B,0106
(I’ve used italic to denote the languages installed by the previously and, by bold, the Scandinavian pack.)
Therefore, you’ll need to re-add the, now, invisible languages to eT9\AvailableLanguages. Should you be aware of this (by manually editing the Registry), just use for example THIS registry import script.
1.2.2 Compatibility
These files worked just great on my HTC Vox. They, however, didn’t work at all on my WM5 AKU3 HTC Oxygen (s310).
2. Redefining the layout of the built-in hardware keyboard (thumbboard)
Unlike on the Pocket PC, where you could quickly swap the keyboard layout by just editing (as is described in the “Change slide-out keyboard layout” section of the related XDA-Dev Wiki page)
With this platform, the situation is a bit more complicated: you must supply the full keyboard mapping file and, in addition, you must also register it in the Registry.
2.1 Keyboard layout files
The recommended (but not compulsory) naming convention for a keyboard mapping file is the following:
eT9.Vox.XXXX.kmap.txt
where XXXX is the official language code (see the already-linked MSDN page for them) and you can change “Vox” to “Excalibur” on the HTC Excalibur (or anythign similar on other, keyboard-enabled devices). Note that, the Smartphone platform (as opposed to Pocket PC) lacking related file name conventions (you must explicitly refer to the keyboard mapping file in the Registry), it can be named anything. I only use this name to be compliant with the naming conventions used by the Vox version of the MoDaCo dictionary installer.
The contents of these files may seem a bit complicated at first but you will soon be able to navigate around. For example, let’s have a look at the following (Greek) configuration file:
As one can see, there are five fields (referred to as {VK VK' CH1 CH2 KeyIndex} by the code samples) in each record defining a button. The first of them just lists what is physically printed on the key and doesn’t need to be touched – it’s only for human consumption, to give you a helping hand when editing the keyboard map file. The second is more important: it’s what you will want to modify when defining a different letter to be input when you press a button. The third and fourth fields define the symbols produced by Fn + key and the symbols entered in 123 mode (the latter two is the same). Finally, you don’t need to touch the last field either.
Note that you can entirely leave the last field (KeyIndex) off (as is in the German layout I provide below). Then, only the first field in the record will be used to determine which key you’re talking about. An example of this (with the German layout):
{Q Q @ @}
{W W ! !}
{E E 0 0}
{R R 1 1}
{T T 2 2}
{Y Z 3 3}
{U U + +}
{I I / /}
{O O ( (}
{P P ) )}
{A A ? ?}
{S S * *}
{D D 4 4}
{F F 5 5}
{G G 6 6}
{H H - -}
{J J _ _}
{K K : :}
{L L ; ;}
{Z Y 0x09 Z}
{X X # #}
{C C 7 7}
{V V 8 8}
{B B 9 9}
{N N 0xFA N} // 0xFA = Launch symbol window
{M M 0xFB M} // 0xFB = Launch SMS
{0xBE . , ,} // 0xBE = VK_PERIOD
{0x26 0x26 0x21 0x26} // 0xF1 = up arrow, 0x21 = page up
{0x28 0x28 0x22 0x28} // 0xF2 = down arrow, 0x22 = page down
{0x25 0x25 0xFD 0x25} // 0xF3 = left arrow, 0xFD = launch pIE
{0x27 0x27 0xDE 0x27} // 0xF4 = right arrow, 0xDE = '
Let’s take a closer look at the Z and the Y records above: that is, the two records you need to modify to get the German layout out of the English one (on limited keyboards not having a number row and non-alphabetic keys):
{Z Y 0x09 Z}
…
{Y Z 3 3}
As you can see, if you need to instruct the handheld to enter a ‘Y’ character when you press the “Z” button, you need to modify the “Z” record.
(Note that this map file is HERE and the accompanying Registry import file – see the next, 2.2 section – HERE)
2.2 Registering keyboard layout files in the Registry
Only providing keyboard layout files (see section 2.1) is insufficient. You must also register these files in the Registry so that the system knows you use a, from English, different keyboard layout.
To do this, you must register they layout file under both HKEY_LOCAL_MACHINE\Software\ Tegic\eT9\IME\ KeyboardLayouDlls and HKEY_LOCAL_MACHINE\Software\ Tegic\eT9\IME\ LanguageKeyboardIDMapping.
With the former, you must create a new value named 000007XX, where XX is the lower byte of the language code (for example, 07 for (the 0407 hexa) German), with the value containing the map file (for example, for a German map, "eT9.Vox.0407.kmap.txt").
With the latter, you must map the language and the keyboard layout together. To do this, you must create a value named after the language ID (with the changes outlined in Section 1.1.1; that is, changing 4 to 1 in the upper byte). Its value must be the lower (16-bit) word of the KeyboardLayouDlls registration – as a String (incidentally, as with, for example, the Pocket PC keyboard language string under HKCU\ControlPanel\ Keybd\Locale).
That is, with the German example, the two new values you must create are the following:
[HKEY_LOCAL_MACHINE\Software\Tegic\eT9\IME\KeyboardLayouDlls]
"00000707"="eT9.Vox.0407.kmap.txt"
[HKEY_LOCAL_MACHINE\Software\Tegic\eT9\IME\LanguageKeyboardIDMapping]
"0107"="0707"
Again, the value of the second value refers back to the first.
Note that, unfortunately, defining a keyboard mapping file to fix the well-known, annoying HTC Vox bug affecting many games / emulators (for example, ScummVM) won’t work. Yes, I’ve tested this (HERE is the file completely switching off numbers in Fn mode) and it didn’t work – pressing the E, R, T, Y, D, F, G, C, V and B keys on the keyboard still resulted in the numbers 0, 1,… 9 being input.
2.3 What about AEKMap?
The well-known AEKMap has gone a LONG way since its first versions (then, only usable with external USB keyboard). This, unfortunately, also means it has gone commercial – at least as far as accessing its advanced features are concerned. The current version is pretty powerful and also supports Smartphones. Unfortunately, very few ready-made Smartphone-related config / layout files are available now, which means you will end up having to write one yourself if you want to use a non-English mapping.
As I find the non-AEKMap way is more system-friendly, I’d, myself, prefer defining your keyboard layout using it, the traditional way. However, you will still want to give AEKMap a try to see whether you can use its advanced capabilities.
3. Tips for ThinkOutstide StowAway keyboard support
Unfortunately, currently, the StowAway keyboards by Mobility Electronics, Inc. (ex- ThinkOutstide) are, officially, not supported by the manufacturer on several Smartphone models. However, this is in no way a problem: if you have a HTC Vox, just download the driver meant for Excalibur (accessible HERE), it’ll work just great. The same may stand for other, officially, not supported models - just give a try to drivers meant for other smartphones (preferably running the same operating system version).
This also means you can safely redefine the keyboard layout by both ThinkOutstide’s official tool (which must be requested by mail as can be read HERE) and, most probably, AEKMap.
UPDATE (09/27/2007): there are other language packs HERE.
(end of update)
The just-posted link ( http://melgurth.ovh.org/index.php?page=downloads ) also has a downloadable T9 word editor.
The language packs nearly-destroyed my bootloader. I don't recommend installing them without any "safe-mode" utility.
could you please write a tutorial how to compiled a t9 dictionary so if the language not aviable people can do it themshelp
I want to make my language in t9 dictionary but i dont know how and what to do , can you tell me which program to use and how to make it , any advice is welcome
Anyone have the T9JapaneseLdb.dll file?
I need to input japanese in my smartphone.
T9 Vietnamese
Anyone have the T9VietnameseLdb.dll file?
I need to input Vietnamese in my PPC.Help me please!
hanoiwap said:
Anyone have the T9VietnameseLdb.dll file?
I need to input Vietnamese in my PPC.Help me please!
Click to expand...
Click to collapse
I'm too. Please help me. Thanks
need to imput Korean
Hi~!
Anyone have the T9KoreanLdb.dll file?
I need to input Korean in my smartphone please!

quickpad- the best notepad, text editor, multiple instances, big files,unicode,utf8

update: http://forum.xda-developers.com/showthread.php?p=6602656#post6602656
here is translation of quickpad a little big text editor from the same smart chinese guy as
quickmenu.
translation is not 'as should be' but it's working besides some miscropping (in file list dialog)
if someone here have MS tools to create mui, please drop me a text. i am 'on the road' and can't download full microsoft kit.
i only translated and changed some dialogs on it,
author of quickpad is:
Nanling
www.alensw.com
comments about software on author's webpage. chinese only.
i'll welcome comments about translation.
====
ZIP file was broken, now reUploaded.
edit: file deleted, update: http://forum.xda-developers.com/showthread.php?p=6602656#post6602656
Attached file is broken(((. Please, re-attach it
sorry, no idea what hapened.
zip is repacked & reuploaded
It is from "Nanling" who also did the Quickmenu It looks great. Let see how it works.As you guessed. The link works.
Great! Finally a text editor which is able to edit REG files.
Are there any other text editors capable of Unicode?
pathologo said:
Great! Finally a text editor which is able to edit REG files.
Are there any other text editors capable of Unicode?
Click to expand...
Click to collapse
sure,
1. PHM notepad still works good, it's 2003 and discontinued, not even web home page works but you'll find it by "PHM notepad" can't open large txt, when opening new file, it will reuse the same instance of already running, closing actually open file, no 'find' option
2. orneta notepad
http://www.orneta.com/products/notepad/
looks workable, but not free ($10)
I only don't like it because it don't have a toolbar, it's frustrating to go to 2 level menu to hit 'find next' or cut, paste. just so useless
NOW WITH MUI.
update: http://forum.xda-developers.com/showthread.php?p=6602656#post6602656

[Dec 2012] Android SMS Importer from WM PimBackup files

This utility allows to convert PimBackup files to XML one which is
compatible with Android application "SMS Backup&Restore" created by
Ritesh Sahu (* check the author to match the right application on Market *).
After the conversion the XML file contains all your SMS and you can Import
them to you Android smartphone.
This utility doesn't require any installation process or additional DLLs,
in order to start using it, just run the executable file.
WARNING: I've tried to restore about 11,000 SMS with success on "Motorola Atrix 4G" and it seems to freeze many times while running stock "Text Messaging" application.....so I think 11,000 SMS is too much to handle for Android OS
Versions History
=============
* Version 2.0.0.4 (2012-12-13)
- New Draft Folder support
- Messages in Custom Folders are now moved to Inbox or Outbox
- Minor bug fixes
* Version 2.0.0.2 (2012-11-28)
- New option (only for CMS files): Discard self-test messages
- New option to convert not supported folders in In/Outbox
* Version 2.0.0.1_beta1 (2012-11-14)
- New advanced graphic design
- PimBackup binary files (*.pbm) supported!!!!!!
* Version 1.0.1.0 (2011-09-28)
- If it enconters an irreversible error it will asks if you want to continue without stopping conversion
* Version 1.0.0.9 (2011-09-26)
- Managed splitted Conversation/SMS text in multi-rows (messages with Carriage Return)
* Version 1.0.0.8 (2011-07-27)
- Fixed negative values for TimeZone offsets
* Version 1.0.0.7 (2011-07-27)
- Added TimeZone and Date/Time management to increase/decrease according to your local TimeZone
* Version 1.0.0.6 (2011-07-04)
- Fixed bug while using special characters like "&" or quote
* Version 1.0.0.5 (2011-04-21)
- Fixed bug for Inbox messages if SenderName and/or SenderAddress is empty
* Version 1.0.0.4 (2011-04-21)
- Managed empty "SenderName" and "SenderAddress" for Outgoing messages. Now those messages will be considered well.
- Draft, Trash and Outgoing folders (from CSM file) are not converted in any case because Android hasn't got those folders.
* Version 1.0.0.3 (2011-04-19)
- Added "Text Encoding" option to decide output file text encoder ("UTF-8" is the most common)
- Managed empty "SenderName" and "SenderAddress" data from input files. Now those messages will be discarted
* Version 1.0.0.2 (2011-04-19)
- Added an option to stop decodification after have decoded a specified amount of messages
- Managed "line-brakes" in messages. Those line-brakes will be removed from the message
- Managed "self-test" messages. Those self-test messages will not be added to output file
- Fixed a bug that truncates TextMessage at first "semicolon" character
- Added an "Error" section to show occurred errors
* Version 1.0.0.1 (2011-04-18)
- Uncompressed Executable file for better compatibility on multiple Windows OS
* Version 1.0.0.0 (2011-04-06)
- First release
Create a good backup file with PimBackup
=================================
The software is dummy and need a good/perfect file to work fine; in other words it needs
a good PimBackup file.
Let's create that file:
* open PimBackup in your Windows Mobile phone/smartphone
* choose "Backup" from dropdown list
* select sections as you wish but not forget "Messages"!!
* press "Next"
* (if you have a lot of SMS do not select "Create temp files in memory")
* press "Next" and go-on following the Wizard....
Find CSM or PBM file
===================
At the end of procedure above you will have a single PIB file.
This file is compressed and you can open it with WinZip/WinRAR/7Zip.
* So, please open it and look for "*.cms" or "*.pbm" file.
* Extract it from the compressed file.
That's it!!
Start the conversion
==================
Ones located CSM/PBM file you will want to convert it, right?
* Open "PimbackupDroid.exe" (this software of course!)
* Click "Menu --> Open" and select a CSM/PBM file
* [only for CMS] Enter "Your phone number for comparison". This field is necessary because
this is the only way to identify you as the sender of outgoing messages.
You can use simple numbers without international prefix (Ex: 0039 or +39).
* (optional) Check "Only between dates" to force convert just SMS between
two specified dates. It works for both incoming and outgoing messages.
* (optional) Check "Blacklist" OR "Whitelist" radio button if you want to
EXCLUDE (blacklist) some contacts or you just WANT (whitelist) convert
just some specified contacts.
!!WARNING!! - Blacklist and Whitelist using "Partial" input data, in
other words if you will add "Edward" in one of those all
contacts CONTAINS "Edward" word will be blacklisted/whitelisted,
for example also "Edward2" will be affected.
Both Blacklist and Whitelist are case insensitive (no difference between
"Smith" and "SMITH").
* Press "Start" button. It will generate a NEW file with the same name of original
one but with ".xml" extension. (!!WARNING!! - it doesn't ask for overwriting)
Import XML file on Android OS
========================
Now you have an XML file generated with this utility and you need to download
a small (and FREE) application from Android Market:
*SMS Backup & Restore" created by "Ritesh Sahu" (!!!check the author name!!!)
Install it
Before run this new installed utility you need to create a new "SMSBackupRestore"
folder in you Internal Phone Storage's root directory.
Now you can copy your XML file to this new folder and run the new Android application.
This Android utility is very very easy to understand: just press "Restore" button
and select your XML file.
Now wait until errors (ops!!) or successfully popup window!
System Requirements
==================
This utility works properly on all 32-bit/64-bit versions of Windows,
including Windows 98/ME, Windows NT, Windows 2000, Windows XP, Windows
Server 2003, Windows Vista, Windows Seven and Windows 8.
Personally tested on: Windows 7 Ultimate 64bit, Windows XP 32bit and Windows 8 Pro 64bit
Linux users: I think this software will works with "WINE" but not tested.
Disclaimer
==========
The software is provided "AS IS" without any warranty, either expressed
or implied, including, but not limited to, the implied warranties of
merchantability and fitness for a particular purpose. The author will not
be liable for any special, incidental, consequential or indirect damages
due to loss of data or any other reason.
Issues/Limitations
===============
- MMS/e-mails not supported
- Attachments (like images or files) not supported
Screenshot
===========
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Download at Sourceforge.net
======================
https://sourceforge.net/projects/pimbackupdroid/
Any idea on what to add more to this software??
Post reserved to author
This sounds great. I have a lot of old SMS I'm missing after switching to android. I'm going to test it as soon as I'm with my PC tommorow morning. Will report back then.
Sent from my HTC HD2 using XDA App
emandt, I tried to download your SW from the page you have listed, but it looks like folder is empty...?
As I've wrote in first post: project just opened at SF.net, so be patient
I'm creating a small README as Guide and prepare source code to place it on SF.net very soon.
OK, I was under impression at least test version is available. I'll wait
Released the first version few hours ago.
Check the Limitations (first post) before post a bug
I've realized my PIM backup files are .pib, not .csm. Is there any way how to move it to .csm? Except of restoring and archiving again through WM...I have only one phone
Thanks.
Please read the description at first post or the README file following the EXE.....
The ".CSM" file IS INTO the PIB file.
PIB file is just a compressed file to handle multiple files in single one.
Use WinZip / WinRaR / 7-Zip to open the PIB file and extract CSM one.
If your backup was created with "Binary backup(faster)" options it's impossibile to convert with my software (no any description/protocol about "How To Read" a Binary file created by BimBackup)....so, in this case, I think you need to Restore all messages and start the backup (without THAT option!!) again....sorry.
However I will study (raw mode with thousands of tries) "Binary backups" to allow them as non-binary ones.
I'm sorry I have overlooked this step. The problem is that even when I open .pib file, there is no .csm. Actualy, all extensions begin with .p**. Could be the reason that I have somehow checked "binary backup" in WM PIM?
I'm hot to test your SW but obviously I'm not a good tester
BTW, why don't you move this topic between general android applications, to have it more visible in the forum?
I'm trying to read binary backup files but without any description from author is very very hard to resolve this step. I've not found a schema for the data into binary files yet.
I've studied BINARY backup and already found half-solution, at least for NAME, TELEPHONE_NUMBER and TEXT_MESSAGE.....not I'm stuck at "Date and Time field"....
I've wrote to PimBackup author and I hope he will respond me with the solution.
Stay tuned
Nice initiative
Hi,
first of all, congrats for the iniative. Sorrowfully, it doesn't work for me (Access Violation at address 004ccea0 [...] @ address 00000004
If this helps: W7 x64 Pro @i5
For people who have their backups in binary format, from this same forum (don't remember the threads tho, sorry) came these tips:
1) Download Microsoft Windows mobile 6.5 Professional Developer Tools (goole it or "Windows Mobile 6.5 emulator");
2) run the appropriate version of the emulator;
3) "install PimBackup and restore your backup (set up a "shared Folder" for that, it will appear as a storage card);
4) redo your backup without binary format unchecked;
5) have fun! (if you're reading this thread, you know the rest already )
Also, see this link: Transferring contact list from Windows Mobile to Android SANS OUTLOOK
Have fun! I'll have to wait the next stable version.
It's strange....I'm using Win 7 Ultimate 64bit in italian language.
What OS language?
What is your OS alphabet in use?
I've developed this application quiclky and I don't have considered alphabets and non-latin characters. Maybe it could be this.
I'll spend more time to make it works on other OS settings
@tuliogs: if your Error is generated during startup of application you can try new version (v.1.0.0.1 folder on download section) which has an uncompressed Executable file to increase compatibility on Windows OS.
Otherwise: I need more explanations about that Error.
not yet
I get the error when trying to convert the file. Win7 here is in brazilian portuguese, I guess it's UTF-8 (or else, probably Windows-1251, which in turn is an ISO 8859-1 variant, I guess).
Just tried the new version... same issue, but it now shows where it stops: on a self-test SMS (explained below). It was enough to change the "phone number for comparison" field and _that_ issue was solved. However, please keep reading.
I found some "anomalies" in some messages in my file, though:
some are self-tests I sent to myself or just empty drafts. this seems to be the issue described before;
some contain the whole phone numbers including country codes and the plus sign (no trouble with those ones);
some archived messages contain line breaks: these are plain skipped;
duplicate messages, some within a short interval (3 secs or less) disappear also;
different cellphones use different text encodings so you guess the mess... however, overall text is more important than specific characters, so it's relevant to say I had no problem at all with these, apart from getting alien symbols (which don't bother me).
I had to abandon Android on my Kaiser to revamp it from scratch (therefore, WM again aawwww), so I can't test the final result now, but there's a Samsung Galaxy S (Froyo, I guess) coming in a few days. So if you'd wish to attack those issues in the meantime, I'll gladly test the final result when time comes.
Thank you again and keep up the good work.
Nice to have so detailed error description!!
New version was compiled just without "Compress executable" option because I thought your error were caused on startup and not during conversion.
Can you send me just a complete row (you can manually edit a row to create fake text) of CSM file with many brazilian characters??
Now I'll try with:
- self test messages
- many special characters (also line-breaks)
outgoing SMS is sucessfully converted,
but I cannot found any incoming message in the output files...
Here are the first few line of the output:
Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<smses count="196">
<sms protocol="0" address="" date="1284300650000" type="1" body="回到家了啦" read="1" status="-1" contact_name="" />
<sms protocol="0" address="" date="1286260959000" type="1" body="整緊" read="1" status="-1" contact_name="" />
@azothterry: TYPE="1" means "Inbox" but perhaps this wrong decode depends of strange Input data.
I've tested with my latinian-alphabet without special chars (comma, points and few single-quote chars) and it works.
To allow other alphabets/characters I need few lines from your CSM file, expecially with special chars.
Don't forget to set "Number for comparison" field with your partial (without international prefix) phone number.
Hi, emandt
Here are some line of my csm file, many thx.
Code:
0x00,0x00;"";"";;"";"回到家了啦";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;;33;262144;2011,04,13,15,07,28;2010,09,12,22,10,50;1;"524296\;Kat\;99999999\;1\;0\;SMS";0;""
0x00,0x00;"Kain Kwok";"\"Kain Kwok\" <88888888>";;"";"幫我開電腦pls";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;16;1;;2008,01,01,16,38,55;2010,09,22,09,29,45;0;"";0;""
0x00,0x00;"";"";;"";"整緊";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;;1;262144;2008,01,01,16,38,56;2010,10,05,14,42,39;1;"524296\;Kat\;99999999\;1\;0\;SMS";0;""
0x00,0x00;"Kat";"\"Kat\" <99999999>";;"";"飲檸檬茶中..";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;14;1;;2011,04,13,15,07,28;2010,10,05,14,46,55;0;"";0;""
0x00,0x00;"";"";;"";"飲緊燈汁!明天俾一支你!";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;;33;262144;2011,04,13,15,07,28;2010,10,05,14,51,24;1;"524296\;Kat\;99999999\;1\;0\;SMS";0;""
0x00,0x00;"Kat";"\"Kat\" <99999999>";;"";"何時買?";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;8;1;;2011,04,13,15,07,28;2010,10,05,14,52,55;0;"";0;""
0x00,0x00;"";"";;"";"今早";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;;33;262144;2011,04,13,15,07,28;2010,10,05,14,53,23;1;"524296\;Kat\;99999999\;1\;0\;SMS";0;""

Great 3D chinese launcher [Plz Translate]

hey guys yesterday i found this cool launcher ...
i downloaded it and it works on i9100 miui v4, but the only problem is that i cant understand anything in it
plz guys I need someone can translate this launcher
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
YOU CAN DOWNLOAD IT FROM HERE
Edit: Thankfully SifJar is working now on the translation.
The majority of it is now translated (to a degree). Only weather (and cities) are Chinese + the choices are limited to chinese cities
Download Latest Translated version HERE
Looks like a kinda nice launcher. I took a look to try and see how much work it would be to do a translation: I used grep to search in res\layout for "text" (which will generally be followed by something needing translated), and there is quite a bit needing translated by the looks of things.
EDIT: About 128 phrases.
EDIT: There is also array.xml and strings.xml in res\values. I've done both of them, there wasn't much there:
array.xml: https://www.dropbox.com/s/yl6hru5wap17ld5/arrays.xml
strings.xml: https://www.dropbox.com/s/24n0t6pdc4in9gd/strings.xml
rough list of stuff needing translated in res\layout: https://www.dropbox.com/s/td30sfgk3waijiw/grep.txt
There are also a few images in res\drawable that contain Chinese characters
EDIT: If I have time at some stage, I may try to translate some more of it. Don't have time right now, but it does seem like a nice launcher.
thx man ! ...
however, to noobs like me, what does all this mean ?
if you can recompile the apk and reupload a translated/semi-translated version it would be really cool
I tried to recompile it, but I must have done it wrong because it won't install...
EDIT: Think I need to sign it, I'll figure that bit out tomorrow. Never done this sort of thing before, so I didn't realise I had to do that.
EDIT: OK, here is a very early version: {link gone, see first post for current link}
The only noticeable difference is the title of the app now shows as "Nine Latitude 3D" which seems to be the right name I think. There are a few other bits and pieces translated (e.g. some weather stuff), but I can't find where they are displayed.
I will try and do some work on this tomorrow if I find time and present a progress update within 24 hours.
EDIT: Note that translation will be done using Google Translate, as I don't speak Chinese. I'll make educated guesses based on the results as to what each string should read, but some may be inaccurate.
Very nice man... Thx for your time
Sent from my GT-I9100 using Tapatalk 2
Randomly came across this and find this launcher very interesting! Would definitely love for this to be translated into English! May even have a little gift for that person! :beer:
Sent from my SGH-I777 using xda premium
SifJar said:
I tried to recompile it, but I must have done it wrong because it won't install...
EDIT: Think I need to sign it, I'll figure that bit out tomorrow. Never done this sort of thing before, so I didn't realise I had to do that.
EDIT: OK, here is a very early version: https://www.dropbox.com/s/7rwqqe10kymggtz/nine_latitude_3d.apk
The only noticeable difference is the title of the app now shows as "Nine Latitude 3D" which seems to be the right name I think. There are a few other bits and pieces translated (e.g. some weather stuff), but I can't find where they are displayed.
I will try and do some work on this tomorrow if I find time and present a progress update within 24 hours.
EDIT: Note that translation will be done using Google Translate, as I don't speak Chinese. I'll make educated guesses based on the results as to what each string should read, but some may be inaccurate.
Click to expand...
Click to collapse
Thanks for the translation.
Can you please put the english xmls on values folder and the original(chinesse) on values-cn(or whatever code used for chinesse), because if the device is setting to another language than english, the chinesse xmls used.
nice find
keep us update PLS
Need translation .
Sent from my HTC Wildfire S A510e
dancer_69 said:
Thanks for the translation.
Can you please put the english xmls on values folder and the original(chinesse) on values-cn(or whatever code used for chinesse), because if the device is setting to another language than english, the chinesse xmls used.
Click to expand...
Click to collapse
OK, will do that from now on. Will hopefully have a bit more translated today, and so will do as you suggested with the next release. This is my first time translating, so I wasn't completely sure exactly what way it should be done. Thanks for the advice.
EDIT: Translated about 30 more strings or thereabouts, should probably get this "finished" today (I say "finished" because it won't be a great translation, and will probably take a bit of trial and error still to come up with more accurate translations)
EDIT: There are a few more strings that I initially thought, but I should still be able to do this today I reckon.
Finished translating everything in \res I can find. But it seems most stuff must be in smali or something I guess (anyone a bit experienced know if this could be right?). There is still a fair bit in Chinese here.
Anyway, here's the current link: {link removed, see first post for current link}
I'll try and look into smali, but there are a LOT of .smali files in this, and I don't even know where to start. But I will have a look and see if I can figure out a bit more. From all the smali files I have looked at so far, there is no Chinese in any of them. So I don't really know where all the rest of the Chinese is.
EDIT: I don't know very much about smali files, but I have found that lines like this one are Chinese:
Code:
const-string v1, "\u6b63\u5728\u4e0b\u8f7d,\u8bf7\u7a0d\u540e..."
I have managed to work out how to convert this to Chinese (and then I can translate to English), but it is a very laborious process requiring to convert each character individually, certainly with the tools I have found so far.
EDIT: Unless I can find a better way to do this, I'll post instructions for what I've worked out so far and give up personally. I don't really have time to spend translating like this.
thanks a lot for your work and time
Little bit translation. OK thanks . I have few problems like galary , music Widgets not working.
Sent from my HTC Wildfire S A510e
idhbar said:
Little bit translation. OK thanks . I have few problems like galary , music Widgets not working.
Sent from my HTC Wildfire S A510e
Click to expand...
Click to collapse
Those problems aren't anything to do with me. They don't work without the translation either (for me, at least).
In case people miss my above post, I have figured out how to translate more, but it is a very long drawn out process, which isn't worth the hassle for me at least, so unless I find a much better way to do this, I will probably give up soon. But I will post directions for said long drawn out process in case anyone else wants to continue where I leave off.
@sifjar I know the widget prob associated with launcher , no relation with translation. Thanks again for your great effort . Anyone facing the widget problem ?
Sent from my HTC Wildfire S A510e
OK, so I'm done with translating this I am afraid. The translation of the .smali files is just far too long and laborious a process, especially when I don't really want the launcher that badly. I was doing this more as an experience building exercise, sort to "see if I could", and I now know that I could but it would be a lot of effort. Anyway, as promised, here is a tutorial for translating the .smali files, and hence the rest of the launcher.
EDIT: This method is slightly more difficult and laborious than necessary. See my post on the next page for a simpler method which encompasses steps 9+10.
Requirements
Android SDK installed
apktool - https://code.google.com/p/android-apktool/
grep - http://gnuwin32.sourceforge.net/packages/grep.htm
Decent text editor e.g. Notepad++
A few sites linked below
The latest copy of my partial translation (see above)
Guide
1. Setup apktool and grep properly so you can run them from the command line anywhere you want.
2. Open a command line where you have the APK of the launcher.
3. Run this command:
Code:
apktool d nine_latitude_3d.apk
4. Navigate into the nine_latitude_3d.apk folder created
5. Navigate into the smali folder inside that one
6. Open a command prompt and use the following command:
Code:
grep string *.smali > results.txt
7. Open results.txt in Notepad++. This file will show you which .smali files contain strings, and what those strings are. You're interested in ones which look like this:
Code:
const-string v1, "\u6b63\u5728\u4e0b\u8f7d,\u8bf7\u7a0d\u540e..."
8. Open the .smali file containing the first string you found, then use Ctrl+F to find that first string
9. Now you need to convert that string into Chinese. Each Chinese character is represented by a hexadecimal number, seperated by \u. So in the above example, the first character is the hexadecimal number 0x6b63 [0x just indicates this is a hex number, you can ignore this, I just put it there to be more "correct"]. To convert to Chinese, you need the number in decimal. You can convert between hex and decimal here: http://www.statman.info/conversions/hexadecimal.html - copy the hex number into the box and click "to decimal". In this example, it is 27491.
10. You can convert from decimal to Chinese character here: http://www.chinese-tools.com/tools/converter-unichar.html - you need to put &# before each decimal number and ; after each. You can convert more than one at a time. So for my above example string, I would convert each number to decimal and end up with this:
Code:
&# 27491;&# 22312;&# 19979;&# 36733,&# 35831;&# 31245;&# 21518
but without the spaces (if I don't put the spaces, the forum automatically converts them to Chinese
(note that when there is a comma between characters, a semi-colon is not necessary)
11. This will give you a Chinese string such as the following:
Code:
正在下载,请稍后
Translate this with Google Translate or whatever to get something like this:
Code:
Downloading, please wait
12. Back in your .smali file replace the string, so the end result would be something like this:
Code:
const-string v1, "Downloading, please wait..."
13. Repeat steps 8-12 for every string found in the first .smali file
14. Repeat steps 8-13 for every .smali file where a string was found
15. Navigate into the first sub folder of the smali folder ("a") and repeat steps 6-14, translating every string
16. Do the same for all the other sub folders of the smali folder
17. Once you have translated every string in every smali file, navigate back out of the smali folder and then back out of the nine_latitude_3d folder
18. Open a command window and type the following:
Code:
apktool b nine_latitude_3d nine_latitude_eng.apk
19. Sign nine_latitude_eng.apk
20. Test the APK and hope it works
Like I said, it is very laborious. Considering there are probably at least a few hundred strings, and each takes maybe a minute or two (compared to the strings in the XMLs in \res\layout, which took a few seconds each), it would take many hours to complete the translation.
SifJar said:
Finished translating everything in \res I can find. But it seems most stuff must be in smali or something I guess (anyone a bit experienced know if this could be right?). There is still a fair bit in Chinese here.
Anyway, here's the current link: https://www.dropbox.com/s/ozhy41i4tpd0occ/nine_latitude_eng.apk
I'll try and look into smali, but there are a LOT of .smali files in this, and I don't even know where to start. But I will have a look and see if I can figure out a bit more. From all the smali files I have looked at so far, there is no Chinese in any of them. So I don't really know where all the rest of the Chinese is.
EDIT: I don't know very much about smali files, but I have found that lines like this one are Chinese:
Code:
const-string v1, "\u6b63\u5728\u4e0b\u8f7d,\u8bf7\u7a0d\u540e..."
I have managed to work out how to convert this to Chinese (and then I can translate to English), but it is a very laborious process requiring to convert each character individually, certainly with the tools I have found so far.
EDIT: Unless I can find a better way to do this, I'll post instructions for what I've worked out so far and give up personally. I don't really have time to spend translating like this.
Click to expand...
Click to collapse
I can help you.......!! I have a good knowledge in xmls and somewhat in smali......i can join you in translating....maybe i'll join you by monday!!! I am not a chineese too.....we can try n bring out fantastic launcher!!
What do you think??
balamu96m said:
I can help you.......!! I have a good knowledge in xmls and somewhat in smali......i can join you in translating....maybe i'll join you by monday!!! I am not a chineese too.....we can try n bring out fantastic launcher!!
What do you think??
Click to expand...
Click to collapse
I decided to run a little test. I set grep to search for \u, which appears in every string needing translated. I made it search in all the sub folders of smali. The resultant results.txt was 302 lines long. i.e. there are about 302 strings needing translated. This is far too huge a task for me to take on. If you want to do it, go ahead, but I'm afraid I simply don't have time.
EDIT: I might try and make a script to automate the process, somewhat at least.
SifJar said:
I decided to run a little test. I set grep to search for \u, which appears in every string needing translated. I made it search in all the sub folders of smali. The resultant results.txt was 302 lines long. i.e. there are about 302 strings needing translated. This is far too huge a task for me to take on. If you want to do it, go ahead, but I'm afraid I simply don't have time.
EDIT: I might try and make a script to automate the process, somewhat at least.
Click to expand...
Click to collapse
Finding out the no. of strings to be translated is a great step!!
Translating is using google translate only na??
Why not share work??
I'll try to translate at least 15 strings a day...u too try the same....at the end of 10 days we would have completed translating!!
If you can make a script, it will be great!!
Also, in the launcher, how to go to the app drawer?? I can see only running apps??
balamu96m said:
Finding out the no. of strings to be translated is a great step!!
Translating is using google translate only na??
Why not share work??
I'll try to translate at least 15 strings a day...u too try the same....at the end of 10 days we would have completed translating!!
If you can make a script, it will be great!!
Also, in the launcher, how to go to the app drawer?? I can see only running apps??
Click to expand...
Click to collapse
You switch between screens by swiping at the bottom. One of them will show apps. You can change the apps displayed by tapping the circle thing at the right side and choosing one of the other options (it has options for user apps, system apps and I think favourite apps). The apps are displayed on multiple pages within the apps screen, swiping across where the app icons are shown should reveal the rest of your apps. Although I don't think it displays all of my apps, but I haven't checked too thoroughly.
As for translating, I certainly won't be doing anything until I have made a script at the very least (I reckon I should hopefully be able to create a script that will replace all the \uXXXX in the strings with the the corresponding Chinese characters, so that it will just be a copy & paste to Google Translate and back, the way it was with the strings in the XMLs). If I can't get a script like that to work, I probably won't be working on this anymore, sorry.
EDIT: If I do get a script like that to work, it'll take much less time. I did about 120 strings or something like that in about half an hour earlier I think.

Tool to extract Samsung Motion Photos to plain jpg and mp4

First off, I've been browsing here for some time, but I've just registered so I'm sorry if I'm breaking any etiquette or conventions on posting.
I ran across goofwear's tool to extract videos and photos from Samsung Motion Photos and thought it was useful. But I really wanted something that I'd be able to throw a whole album of motion photos at, rather than doing one at a time with this or the share app. I looked at the .bat file they used and implemented the same technique in C, so it could quickly process many photos. It's written with some direct Win32 API calls, so it's pretty much Windows only though making a cross platform command line version without the open dialog would be trivial. It is a simple program though, so it should work fine on Linux or Mac through Wine.
Here's the exe.
See the main page of that Github repository for more complete instructions and full source.
How to use:
1. Copy your Motion Photos off your Samsung phone, to your PC. Just copy them out of the DCIM folder.
2. Run the program. An "open" dialog appears. Apart from that there's no GUI on this program.
3. Browse to your photos and select them. Hold ctrl to select more than one, or shift to select a range. Or, ctrl+A to select all in a folder.
4. Click Open.
5. Wait. Depending how many you selected, it might take a little bit. When it's done, a message box will appear.
6. You should see *_photo.jpg and *_video.mp4 files next to the originals in the source directory. Note that this program does not modify the original files. It doesn't even open them with write permissions enabled.
Alternately, drag one or more photos from Windows Explorer onto the exe's icon instead of using the open dialog.
Screenshots:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Version History:
1.0: Initial release
1.1: Added optional compile-time option to delete the original file after extracting
2.0: Refactored a bit, added a proper build system, and multilanguage support; moved to a 'real' Github repo
2.1: It now preserves timestamps when making the extracted files, and now supports a -r flag to rename the original file instead of appending _photo and _video to the extracted ones.
Andylain has written a Chinese language explanation of the usage of this program, and kindly translated the UI to Chinese (Traditional). To use it in Chinese, either have your Windows set to Chinese language, or rename the exe to put _zh at the end of the name. To use it in English on a Chinese Windows, put _en at the end of the name.
If for some reason you want the old version exe, the old "delete-original" exe, or the old source code, you can still have them.
Can you help to make a version that delete the source after successfully exact?
@Andylain Here's one that deletes the original file after splitting it into photo and video.
Oops -- turns out it was smaller because I forgot to include the icon last time. I've updated the link now and it points at a new build that has an icon.
This is super helpful, Thank you! Oh, there is no beautiful icon in this version.
BTW, I am a Chinese blogger live in Taiwan, I blogged this tool and made a Chinese user guide in my blog "andylain‧blogspot‧com/2017/07/SamsungMotionPictureExtractor.html" .
(Sorry, I am a new user and not allowed to post link.)
If you think that's not a great idea, please tell me and I'll delete my post.
@Andylain Thanks for linking me to your post, and thanks for writing a Chinese explanation for how to use it. I'm happy for people to use my program if they find it useful.
Would a proper Chinese language version of the program be helpful, or are most people there able to read enough English to understand the few error and status messages the program has?
@Andylain Please update your link to the "delete original" version to this one. I forgot to include the icon when building it yesterday.
Chupi383 said:
@Andylain Thanks for linking me to your post, and thanks for writing a Chinese explanation for how to use it. I'm happy for people to use my program if they find it useful.
Would a proper Chinese language version of the program be helpful, or are most people there able to read enough English to understand the few error and status messages the program has?
Click to expand...
Click to collapse
I think it's not hard to understand the status messages
However, a proper Chinese language version of the program would be much more helpful for girls and elderly since Samsung sell a lot of pink S8/S7 for this target.
I really love this app (super helpful for me) and I am happy to translate it , but I don't know how to code BTW. :silly: (just a blogger/photographer)
---------- Post added at 12:55 PM ---------- Previous post was at 12:47 PM ----------
Chupi383 said:
@Andylain Please update your link to the "delete original" version to this one. I forgot to include the icon when building it yesterday.
Click to expand...
Click to collapse
Thank you for the update. I update the link to my blog and facebook fanpage
@Andylain I've extracted all the user-facing strings from my code. The text in [square brackets] are comments giving some context for the message that follows, and don't appear anywhere in the program.
Code:
=====
[this message is shown in a dialog box if you click cancel on the open photos dialog]
You can use this program 3 different ways:
GUI USE: Just run it. You'll get an file-open dialog where you can open .jpg files. Use ctrl or shift or drag to select more than one.
DRAG & DROP USE: Drag one or more motion photos onto the icon for this exe.
COMMAND LINE USE: Run this program with one or more motion photo file names as arguments. Remember to use "quotes" if there are spaces in the names.
Any way you run it, the original files will not be modified. The extracted photo and video will be stored in *_photo.jpg and *_video.mp4 where * is the name of the original file, minus the .jpg extension.
Coded by Chupi383. All credit for the method goes to goofwear at the XDA forums. I've just ported their .bat file to plain C and Win32.
=====
[this is the title of the program]
Samsung Motion Photo Batch Extractor
=====
[this is displayed in the open dialog, under the box where you can type a filename, in a drop-down list]
Motion Photos (*.jpg)
All Files (*.*)
=====
[this is the title bar of the open dialog]
Open some Samsung Motion Photos
=====
[this message is shown if the user selected a file with a really really long name]
Skipping too-long path: <filename goes here>
=====
[title bar for error dialogs]
Error
=====
[error if the user selects over the maximum number of files (currently 10000)]
You've selected too many files. I can only do up to 10000 at a time.
=====
[error if the user selects so many files the Windows "open" dialog box gives up]
You've selected too many files. Try selecting fewer files and process them in bunches.
=====
[appended to names of extracted files - not sure if these should be translated]
_photo
_video
=====
[error if enough memory couldn't be allocated, possibly because the computer is out of RAM]
Can't allocate RAM to read <number> bytes from <filename>
=====
[error if a file can't be read for some reason, perhaps a damaged disk]
Skipping due to read error:
<filename>
=====
[error if an output file can't be written, generally because of full disk, read only disk, file exists and is read only, or permissions on the folder]
Can't write to <filename>
=====
[message on completion]
Finished extracting Motion Photos
Photos extracted: <number>
Videos extracted: <number>
=====
[added to the end of the previous success message if some files didn't contain a photo and a video]
<number> files were skipped because they weren't Motion Photos
=====
[title bar of completion message if at least 1 file was processed successfully]
Success
=====
[title bar of completion message if nothing was done successfully]
Failure
=====
["description" shown in right-click->properties dialog for the exe file]
Extract Samsung Motion Photos to jpg and mp4
=====
["product name" shown in properties dialog for the exe file]
Motion Photo Batch Extractor Utility
If you translate these for me, I'll put them back into my program to make either a Chinese or multi-language version.
Here is the translation of Chinese, sorry for the delay of this reply.
BTW, maybe a dialog for user to choose whether delete original files would be a great idea?
Code:
=====
[this message is shown in a dialog box if you click cancel on the open photos dialog]
有三種方式可以使用本軟體:
一:點開軟體後選擇你要轉存的照片,你可以使用Ctrl或是Shift來多選檔案。
二:把你要的照片拖移到本軟體的icon上也能轉存!
三:你也能使用Command Line來處理喔! (記得用”quotes”取代空格)
請放心:無論你怎麼做,原始檔案都不會被修改。轉存成功的檔案將會存在原始檔案位置,並新增為 *_photo.jpg 和 *_video.mp4。
GUI軟體由Chupi383撰寫,軟體內核由XDA forums的goofwear撰寫,Andylain翻譯正體中文,詳細中文使用教學請上「安迪連碎碎念」。
=====
[this is the title of the program]
三星動態相片批次轉存工具
=====
[this is displayed in the open dialog, under the box where you can type a filename, in a drop-down list]
動態相片 (*.jpg)
所有檔案 (*.*)
=====
[this is the title bar of the open dialog]
開啟一些動態相片
=====
[this message is shown if the user selected a file with a really really long name]
已忽略太長的路徑:<filename goes here>
=====
[title bar for error dialogs]
發生錯誤
=====
[error if the user selects over the maximum number of files (currently 10000)]
你一次選太多檔案了。我一次只能處理一萬個檔案。
=====
[error if the user selects so many files the Windows "open" dialog box gives up]
你一次選太多檔案了。嘗試選少一點檔案吧!
=====
[appended to names of extracted files - not sure if these should be translated ]
_photo
_video
=====
[error if enough memory couldn't be allocated, possibly because the computer is out of RAM]
記憶體定位錯誤,無法讀取 <number> bytes 上的 <filename> 檔案,有可能電腦的RAM不足。
=====
[error if a file can't be read for some reason, perhaps a damaged disk]
由於讀取錯誤,已跳過處理:
<filename>
=====
[error if an output file can't be written, generally because of full disk, read only disk, file exists and is read only, or permissions on the folder]
無法寫入 <filename> 可能目的地已滿或是為唯讀。
=====
[message on completion]
動態相片轉存結果:
有 <number> 張照片輸出成功!
有 <number> 個影片輸出成功!
=====
[added to the end of the previous success message if some files didn't contain a photo and a video]
<number> 個檔案被跳過了,因為它們不是三星動態相片。
=====
[title bar of completion message if at least 1 file was processed successfully]
轉存成功
=====
[title bar of completion message if nothing was done successfully]
轉存失敗
=====
["description" shown in right-click->properties dialog for the exe file]
批次把三星動態相片轉存成JPG照片和MP4影片!
=====
["product name" shown in properties dialog for the exe file]
動態相片轉存工具
[/CODE]
I'm sorry I'm being slow on this. My work has been especially busy lately. This thread isn't forgotten -- I'll make the translated app once I'm over this hump in workload.
Chupi383 said:
I'm sorry I'm being slow on this. My work has been especially busy lately. This thread isn't forgotten -- I'll make the translated app once I'm over this hump in workload.
Click to expand...
Click to collapse
That is very nice of you to do this!
Take your time and I am willing to help!
@Andylain Thank you for the translation! I've finally got a working bilingual exe -- see the original post. Sorry it took a while.
The "delete original" feature is now built into the main exe. You use the /d command line option to activate it. To make a drag-and-drop icon that will delete the original, right-drag it and create shortcut. Then right click the shortcut, go to properties, shortcut tab, and add a space and /d to the end of the target, after the closing quote.
BTW, if you could, please link people to "https://github.com/joemck/ExtractMotionPhotos/releases/latest" to get the exe -- that's a special link that will always go to the latest version I've posted there.
Coming up, I'd like to add an option to add/remove Explorer context menu integration.
This is absolutely amazing. Thank you so much!!
Chupi383 said:
First off, I've been browsing here for some time, but I've just registered so I'm sorry if I'm breaking any etiquette or conventions on posting.
I ran across goofwear's tool to extract videos and photos from Samsung Motion Photos and thought it was useful. But I really wanted something that I'd be able to throw a whole album of motion photos at, rather than doing one at a time with this or the share app. I looked at the .bat file they used and implemented the same technique in C, so it could quickly process many photos. It's written with some direct Win32 API calls, so it's pretty much Windows only though making a cross platform command line version without the open dialog would be trivial. It is a simple program though, so it should work fine on Linux or Mac through Wine.
Here's the exe.
See the main page of that Github repository for more complete instructions and full source.
How to use:
1. Copy your Motion Photos off your Samsung phone, to your PC. Just copy them out of the DCIM folder.
2. Run the program. An "open" dialog appears. Apart from that there's no GUI on this program.
3. Browse to your photos and select them. Hold ctrl to select more than one, or shift to select a range. Or, ctrl+A to select all in a folder.
4. Click Open.
5. Wait. Depending how many you selected, it might take a little bit. When it's done, a message box will appear.
6. You should see *_photo.jpg and *_video.mp4 files next to the originals in the source directory. Note that this program does not modify the original files. It doesn't even open them with write permissions enabled.
Alternately, drag one or more photos from Windows Explorer onto the exe's icon instead of using the open dialog.
Screenshots:
Version History:
1.0: Initial release
1.1: Added optional compile-time option to delete the original file after extracting
2.0: Refactored a bit, added a proper build system, and multilanguage support; moved to a 'real' Github repo
Andylain has written a Chinese language explanation of the usage of this program, and kindly translated the UI to Chinese (Traditional). To use it in Chinese, either have your Windows set to Chinese language, or rename the exe to put _zh at the end of the name. To use it in English on a Chinese Windows, put _en at the end of the name.
If for some reason you want the old version exe, the old "delete-original" exe, or the old source code, you can still have them.
Click to expand...
Click to collapse
Thanks
Just wanted to add my thanks for this fantastic tool.
I can't quite believe there's no official Samsung Motion Photo viewer (The Windows app doesn't appear to play Motion Photos). And there's practically no 3rd party support around for what you would think would be in high demand.
So I registered on XDA to show my appreciation. Thanks again.
Chupi383 said:
It's written with some direct Win32 API calls, so it's pretty much Windows only though making a cross platform command line version without the open dialog would be trivial. It is a simple program though, so it should work fine on Linux or Mac through Wine.
Click to expand...
Click to collapse
I also wanted to say thanks! That program is a wish-come-true! I wanted to create some script to batch-process JPG's and extract videos but that .exe is even better.
I have just one suggestion. Would you be able to modify program to set video's
Windows date modified
and maybe even date taken (EXIF) attributes
values to correct date, not current date when the extraction takes place?
It would help a lot, because Gallery apps or cloud services like Google Photos shows videos sorted / grouped by the date attribute which is different thandate of photo (when you extract old photos from last couple of months you will have a mess).
For now only way is to use some bulk date changer software to fix that - changing dates based on filename pattern, but it would be a nice feature for your exe. Do you think it's doable?
And yes. I created my XDA account just to say thank you for your great program!
Thanks a lot for this tool, Chupi383!
I'd like to "vote" for konieckropka's suggestion as well. Having the corrent timestamps on the extracted images and videos would be important for a correct file management.
The tool basically needs to read the original "modified timestamp" and set it to the created files (same for "created timestamp").
Could this please be added?
Fair point. I'll add it in a bit when I have the time.
Sorry for the delay, guys. I've added timestamp preservation and a -r flag to rename the original instead of adding _photo and _video. You can use -dr to delete the original and don't append _photo or _video to the extracted files.
This is super helpful, Thank you!
Chupi383 said:
Sorry for the delay, guys. I've added timestamp preservation and a -r flag to rename the original instead of adding _photo and _video. You can use -dr to delete the original and don't append _photo or _video to the extracted files.
Click to expand...
Click to collapse
Works perfectly now! THANKS A LOT!!

Categories

Resources