Further questions before releasing:
How should a translator begin his work? To generate translations_dump.txt, the translator must select the custom language. But he cannot select it in the options unless a translate.txt exists, which he hasn't made yet. (File doesn't exist -> options dialogue forces the button back to English)
Once we know the translator's workflow, I'll write the documentation for this.
Now, I filename-escape anything except A-Z a-z 0-9. In particular, dash, space, single-quote are escaped, too. I've written a fallback for loading the user config: Try loading from escaped filename, if not exist, try loading from completely unescaped filename. Always save to the escaped filename. Reasoning: I need a fallback loader anyway for a robust upgrade, and now the escaping rule is super simple.
-- Simon