Internationalization
This article is about how to realize and use localized C:B. All the works have been done under Windows XP SP2.
1. Get the English POT file
The english POT file's url is here:
https://developer.berlios.de/patch/?func=detailpatch&patch_id=822&group_id=5358
I will update this file periodically. Of course, you can use the tool which I have created (seen belown) to generate the POT file.
The content of the tool which is named as intl.bat is belown:
rem ======= Begin of intl.bat ======= @echo off wxrc src\resources\*.xrc -g -o src\src-xrc.cpp wxrc sdk\resources\*.xrc -g -o sdk\sdk-xrc.cpp wxrc plugins\astyle\resources\*.xrc -g -o plugins\astyle\astyle-xrc.cpp wxrc plugins\classwizard\resources\*.xrc -g -o plugins\classwizard\classwizard-xrc.cpp wxrc plugins\codecompletion\resources\*.xrc -g -o plugins\codecompletion\codecompletion-xrc.cpp wxrc plugins\compilergcc\resources\*.xrc -g -o plugins\compilergcc\compilergcc-xrc.cpp wxrc plugins\debuggergdb\resources\*.xrc -g -o plugins\debuggergdb\debuggergdb-xrc.cpp wxrc plugins\defaultmimehandler\resources\*.xrc -g -o plugins\defaultmimehandler\defaultmimehandler-xrc.cpp wxrc plugins\pluginwizard\resources\*.xrc -g -o plugins\pluginwizard\pluginwizard-xrc.cpp wxrc plugins\todo\resources\*.xrc -g -o plugins\todo\todo-xrc.cpp if not exist po md po xgettext -C -n -k_ -o po\codeblocks.pot src\*.cpp src\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot src\wxAUI\*.cpp src\wxAUI\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot sdk\*.cpp sdk\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot sdk\as\bindings\*.cpp sdk\as\bindings\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot sdk\propgrid\src\propgrid\*.cpp sdk\propgrid\include\wx\propgrid\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot sdk\wxFlatNotebook\*.cpp rem xgettext -C -n -k_ -j -o po\codeblocks.pot sdk\as\include\*.h rem xgettext -C -n -k_ -j -o po\codeblocks.pot sdk\as\source\*.cpp sdk\as\source\*.h rem xgettext -C -n -k_ -j -o po\codeblocks.pot sdk\wxscintilla\*.cpp sdk\wxscintilla\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\codecompletion\*.cpp plugins\codecompletion\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\codecompletion\parser\*.cpp plugins\codecompletion\parser\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\astyle\*.cpp plugins\astyle\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\astyle\astyle\*.cpp plugins\astyle\astyle\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\classwizard\*.cpp plugins\classwizard\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\codecompletion\*.cpp plugins\codecompletion\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\compilergcc\*.cpp plugins\compilergcc\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\debuggergdb\*.cpp plugins\debuggergdb\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\defaultmimehandler\*.cpp plugins\defaultmimehandler\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\pluginwizard\*.cpp plugins\pluginwizard\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\todo\*.cpp plugins\todo\*.h xgettext -C -n -k_ -j -o po\codeblocks.pot plugins\xpmanifest\*.cpp plugins\xpmanifest\*.h pause rem ======= End of intl.bat =======
2. Get the translating tool
Usually, we use the poEdit tool which can be downloaded at http://www.poedit.org/download.php.
3. Translating in poEdit
Rename codeblocks.pot into codeblocks.po. Use poEdit to open the file codeblocks.po. Change a few settings like:
[File]->[Preferences]->[Personalize]
[Catalog]->[Settings]->[Project info]->[Team/email/Language/Charset]
If your C::B is compiled with UNICODE, the Charset should be set to utf-8; If C::B is compiled with ANSI, the Charset should be set to your own language charset like gb2312, koi8-r etc.
After these settings are done, you can start translating. Don't be fooled, it's a hard work! During the process, of course, you can use your translation at any time.
4. Create and use the .mo file
Pressing Ctrl+S in poEdit, you can get a *.mo file like codeblocks.mo which is what we need. To use codeblocks.mo, we just place it into C:\Program Files\CodeBlocks or C:\Program Files\CodeBlocks\share\CodeBlocks\locale\<lang>\LC_MESSAGES or C:\Program Files\CodeBlocks\share\CodeBlocks\locale\<lang>. My language is Chinese and I have installed C::B into E:\, so I place codeblocks.mo into E:\Program Files\CodeBlocks\share\CodeBlocks\locale\zh_CN.
If you want to use codeblocks.mo under Linux or Unix, you just place it into /usr/X11R6/share/locale/<lang>/LC_MESSAGES/. For example, I put it into /usr/X11R6/share/locale/zh_CN/LC_MESSAGES/ under FreeBSD.
Details about internationalization of wxWidgets can be found in the wxWidgets docs.
5. Let C::B support your language
If wanting CB to support your language, you must modify the file \codeblocks\src\src\appglobals.cpp. In it, you can search the word 'Chinese' to see the example. There are two vars about it:
const wxString langs[LANGUAGES_SIZE] const int locales[LANGUAGES_SIZE]
6. Troubleshooting
If you have any questions, you can send me a mail: zxpmyth at yahoo.com.cn.