Hello. I've been doing Finnish localization of Civilization V since the game's release and have some experience in how to make things work via the Text directory, which would be much easier for the end user of language packs as they wouldn't need to install and then enable any mods.
As far as I can recall these are the issues when working with Civ 5 localization and modding:
- Mods change existing en_US strings (which is very annoying from localization perspective).
- Mods typically don't care about other languages and thus non-English languages display incorrect information.
- Text directory is typically of no help, because it is executed before mods.
- It is hard to keep track of mods that change and evolve over time. (And it is also hard to track an evolving game, like Civilization VI at the moment.)
My idea to overcome these issues is to essentially parse all the XML and SQL files dealing with Language_en_US and create a versioned database with enough information that one can use it to generate a single XML file that targets a specific language and Vanilla / Gods & Kings / Brave New World / Vox Populi combination of the game. I already have a tool written in Node that is able to parse the existing original en_US XML files and my old Finnish localization files, generate a JSON and then generate XML files that target Vanilla, G&K, or BNW.
What it lacks at the moment is versioning so that it would be possible to tag which version of a string was translated from so that it would be possible to see if localization strings have become out of date. Civ 5 no longer receives notable updates so versioning hasn't been a problem, but having a look at Vox Populi I thought it might be nice to add Finnish support for it as well; it would just be an awful lot of work to do it only for Finnish players, as there isn't a huge demand.
So my current thoughts are to first make a Vox Populi localization parser: you give it a directory and then the tool reads all it can find from there and generate a JSON file with all the English strings. Once this is done then it would be only about figuring out how to add localized strings into the JSON and do this so that there would be version information. It might even make sense to make some kind of tool with UI to make life easier. Doing that would be time away from localization, but once it would be done it would make life so much easier for people doing localization.
The technical part that makes this approach possible is that you can add a new language via Text directory, and this language won't be affected by anything else. You can give any kind of language priority this newly added language, so you can make it replace English, German or any other supported language. So you could add say a de_DE2 which would be the highest priority language for de_DE, which would fallback to en_US as it normally does. This allows the XML files to be simple <Row /> inserts.
When creating a new language targetting Vox Populi the priority would be translating the conflicting strings, as those are the ones that "lie" to a non-English player. That is an issue this Text directory solution cannot fix. However I guess the biggest issue in supporting Vox Populi is that it has lots of optional parts; I haven't yet digged deep into it as I haven't even installed it yet. But it might still be very possible to approach things via Text directory.
I start working now on something, this message partially became this long as I'm still trying to process what is actually important to do and what would be the best use of time, since that is what is the limiting factor