At the heart of the i18n process lies the fact that you have to track down every single string that will ever be seen by the users and mark them as translatable. This is not necessarily an easy job. A medium to large application could have hundreds of strings. The strings have a tendency to hide in files that you might otherwise forget about, too. Fortunately there are tools available to assist with getting this process off the ground. Plus you do not need to catch every string the first time around. A partially marked-up application will still work normally. The only problem is that the "invisible" strings will not be translated.
The next few sections describe the individual steps of this process.
Declaring the necessary functions.
Initialising the system library (libc or glibc) support.
Finding and marking all strings in the source code.
Marking all visible strings in support files.