As regards the system preference issue in particular, the problem may be better resolved by moving the serialization into a table in the database. As it stands presently, part of the system preference data is kept in the database in the systempreferences table while the other part is kept in the *.pref files. Moving the serialization into the database will have the benefits of keeping the data in one location as well as overcoming the file writing issues.
Isn't it too late? To be translatable you need not to forget to serialize syspref templates per language, and then: * modify syspref editor to get YAML data from DB rather than from .pref files, per language * modify translation process (LangInstaller.pm) to extract text from DB and and write into DB It would be very useful to have a complete API to manage sysprefs and allowing to add, modify, update sysprefs, integrated with updatabase.pl process. Now when we add a new syspref, we have to: 1. Add some text into a .pref file (history in git) 2. Add an INSERT statement to syspref table into kohastructure.sql 3. Modify various default values per language located in installer/data/mysql/<lang>/.../default-syspref.sql 4. Update DB number kohaversion.pl and add in updatabase.pl an INSERT statement. Any sysprefs modification should aim at simplification. There is room for simplification: * Clearly distinguish syspref values from a koha instance (stored in DB) and syspref templates (.pref file/db) * Put default values per language directly in .pref file (or DB but how will you track modifications by developers, we have git now) * Delete all perl language default values located in installer/data/mysql... * Delete deprecated fields in syspreferences table: options, explanation, type. And modify accordingly all .sql files. -- Frédéric DEMIANS