No need to hard-code formatstrings. You can use the LCID to find the correct formatsettings:
GetLocaleFormatSettings(LCID_code, DefaultFormatSettings);
No idea, though, how to do this in Linux. There is another problem even in Windows that I don't know how to relate the LCID with the language code as used by Lazarus ('de', 'en', etc.).
Therefore, I modified the DefaultTranslator unit to build up a language list for getting access to all the necessary information. Essentially, you just add this unit to your uses list and call the procedure "SetLanguage" to set the language according to your wishes; it also sets the DefaultFormatSettings as needed. SetLanguage can also be used in code writing to a configuration file to store the selected language. The "opposite" of Setlanguage is GetLanguage to be called when reading the config file.
Additionally, you can use "PopulateLanguageStrings" to populate a stringlist for a combobox, listbox etc. with all the translations available. Use "GetLangIDOfListIndex" to convert the ItemIndex of the combobox to the language abbrevation of the selected language, or "GetListIndexOfLang" to find the index of a given language for selecting it in the combo-/listbox.
I hope that everything works out; the unit is used in a larger project of mine, and I am not sure if it works separately. Also be warned - my description may not be correct here and there. So: no warranty...
One thing that you may have to change is the last (optional) parameter of "RegisterLanguage" as it is called by "CreateLanguages": this is the index to an image list containing the flag images for each language. Free icons can be found at
http://www.famfamfam.com/lab/icons/flags/.