All macros can achieve translation with this statement.
$TRANSLATION = _( TEXT );
Replaces TEXT by the specified translation, if any.
I think it's the simplest way for translation, and it's already a function : _() which search for translation.
Files of type exe and DLL may have to be hexed to do translation. This is a guess, I don't actually know.
It's made using resHacker on expurged exe or dll files. I think it's no more difficult to realize than including it in compilation.
The programmer must have all the translation to compile, with all the problem it can handle. The second reason, is that it's easier to add a translation, and more reactive. If an hugarian (for example) wants to translate it, he can work alone and purpose it when it's finished, without making the programmer to wait for.
But I see some localized things realized through ini- and kml-files
For the kml file, I have answered.
For the ini file, there is only one, and it has been the only way I found, to use the good locale for Setup call from K-Meleon. In fact it's called like this:
setdefault fr-FR (or the language you need). If the language isn't inserted in ini file, it uses en-US by default.
Here too, it allows to have translations not included in the setup and which can be made by everyone ...
@Rodocop, you can think it's not too much rigorous, but it's more easy to do and to add, without touching code.
Mozilla/5.0 (x11; U; Linux x86_64; fr-FR; rv:38.0) Gecko/20100101 Ubuntu/12.04 K-Meleon/76.0
Mail : alain [dot] aupeix [at] wanadoo [dot] fr
Ubuntu 12.04 - Gramps 3.4.9 - Harbour 3.2.0 - Hwgui 2.20-3 - K-Meleon 76.0 rc