I've made a simple one-file library to translate applications quickly. With this lib you can switch to different languages without restarting your app.
How to use?
Simply add "Translator" to your uses and then somewhere (for example in Form.OnCreate):
TranslateForm('de', Form1);
How to prepare the translations?
In Form.OnDestroy, Form.OnClose or just in Button.OnClick add this code:
SaveOriginalTranslations('lang\original.txt');
This will save all the untranslated text to a nice file, like this:
88483147=Choose
04422C9A=Open
5EB87A8B=Start
Then you can just copy contents of this file into Google Translate and translate to whatever you want, for example German.
Then save your file as "lang\de.txt" so your program can find this translation.
You can save your file as "lang\German.txt" but then you should use:
TranslateForm('German', Form1);
if you don't like "lang" dir, you can use SetTranlationDir("other dir") somewhere in your code before loading your translations.
Github repo:
https://github.com/PascalVault/Lazarus_TranslateForm