Usually, program messages and documentation is written in English. However since using a framework made from a set of tools and libraries it was posible to have favorite applications speaking your native non-English language. The adapting process to a specific language is named localization. This include translating program interface and documentation to various languages users need and make input and output conform to be correct with particular conventions in some countries or regions. KBabel is a tool which assist you in internationalization process which mean to make an application interface speak many languages.
Every internationalization aware program make available for translation one or more messages catalog files. Their extention is .pot and is an acronym: POT - Portable Object Template. Every translator take a POT file copy and begin translating messages. That, this file will became PO file - Portable Object and represent only one language. After translating process completing this text file (often it contain non-ASCII characters) is compiled into binary format, machine readable. It's like a database to minimize lookup for translated messages. This file have .mo extension and is named MO file - Machine Object.
There is a question in the air: Do I need to know how is inside a PO file? The answer is undoubtefully, yes. There are situations when a messages catalog became corrupt and must be manually fixed. Most of them are so hated CVS conflicts when translating process is coordinated by a concurent version system (see CVS documentation). KBabel can't help you very much on this but an text editor, CVS and PO-file knowledge. Let's see how a PO file is made. The principal concepts are msgid and msgstr markers which are continued by C-like strings (delimited by double quotes). Both groups begin with msgid and respectively msgstr. Msgid stand for English text in application user interface and msgstr stand for translated text. Empty lines and starting with number sign are ignored. Lines with number sign represent comments and are a good point to indicate from what file is the translatable English message or even aditional comments for translating made by application developers. KBabel display comment lines for every message. In many cases first msgid-msgstr pair in PO file is a fake entry (PO file header) which contain various informations about translated PO-file: application name, translating date, translator name and many more.