Two thoughts.
- You've got two storage locations for your data, the database and the file system of XML files (great idea on the XML, btw). I suggest picking *one* of them as the master data source and the other as the slave, and always making sure that your use cases follow this principle. Otherwise, you're in for some serious conflict resolution all over the place. For example, you could pick the DB as your master, and the filesystem of XML as just a slave of the DB that gets updated regularly by just dumping out the DB contents. Then, if you wanted to import data into the DB, you would do that *explicitly* through an "import" UI, just so that your users know that the master copy is in the DB. That's my recommendation: pick a master and stick with it.
- quick note on the XML format: I would recommend following the model of the XQL files, where both the filename and the XML indicate metadata. In the case of XQL, the filename actually matters little (except for tagging in the APM), since the Query Dispatcher is looking at the XML to decide which database those queries support. What you get here is a less error prone system: you wouldn't want to "forget" which locale a message catalog is in just because you moved the file incorrectly to an incorrect filename.