Good point.
I think the core translation should not include translations of extensions, that would be unnecessarily too "heavy".
Toby That solution is nice and user-friendly.
However, it's important to know your policy about translations. I suppose you planned to have translation updates sent via PR on GitHub concerning the core? If so, how do you manage multiple contributors? There are multiple ways to translate something, but the key to have a good translation is consistency. So, in my point of view, a translation "manager" for each language (or a dedicated team) will be great to ensure that translation updates sent via PR are consistent. For example, in French, "Register" can be translated "S'enregistrer" et "S'inscrire". Both are good. But it will be so "unprofessional" if the French translation uses "S'enregistrer" in some places and "S'inscrire" on another.
On phpBB (and I don't say it's the perfect solution, I'm just giving an example here), each translation is managed by the author. He can add co-authors if he wants to. Authors and co-authors are the only ones who can send their translation package into a validation process managed by the Translations & International Support Teams Manager, a member of the official team who ensures that the translation does not contain additional code and meets the coding guidelines. This validation is now automatic thanks to a code checker and TravisCI. If everything is okay, the translation is validated and available for download on the official website.
The issue with this solution is that the manager is alone and when the software is updated, all translators send at the same time their updated translation. It may then take about ten days before your translation is validated when the software is already released (so the only translation available is outdated).
The translation in the core can solve that, because translators are supposed to work with developers. When there is a new language entry, translators are supposed to translate it ASAP and send their update. However, the real issue here is how can you handle abandoned translations? Kick it out of the core? Replace untranslated entries into default English ones?
Each solution has its advantages and disadvantages (I contribute to the translation of open source softwares for ten years so I'm used to that heh), and I hope we will find a solution to suit users, developers and translators. I'm pleased to talk about this with you. 🙂