I am working my brain on a response that I am mostly not typing up because it's bound to be large. There is a lot to talk about here and I find it hard to fit all in my head let alone in text. So I guess it's better to start the discussion somewhere and I'll layer on more stuff as we go along.
I think it's most important before I give actual feedback that we have some terminology to talk about this. So let me propose the following (examples from the old CNM):
1. A translation is when a city name is not really changed but only rendered in a different language. For example Venezia/Venice/Venedig etc. are translations of the same city name. This is usually the default case that happens when a city changes owner.
2. A hypername is when distinctly different names are used to refer to the same city. Examples for this are Edo/Tokyo, York/Toronto, Byzantion/Konstantinoupolis, Stalingrad/Volgograd. Each hypername for a city can have distinct translations. Names can change by era, after civic changes, or after city conquest.
3. A relocation is when the name of an existing city is changed to a completely different city that is located on the same tile, even though both cities do not have continuity. This currently happens very rarely, but examples for this are the often discussed Babylon/Baghdad and Carthage/Tunis pairs. Like hypernames, each location has distinct translations. Theoretically, different locations can also have different hypernames but I cannot think of a case where this could actually happen.
Anything wrong here? Another type that isn't covered?
Some early observations based on these distinctions:
1. Current DoC policy has been that relocations are bad and should not happen. A tile can house many different cities but once the city is founded it cannot change anymore. I am not against changing that, but it's worth thinking about what it means for the game.
2. A translation, or generally any name change that happens on city conquest is transparent to the player. You get a new city and learn its name. Hypernames and relocations on the other hand have the potential to be confusing. From one turn to another, one of your cities may suddenly have a different name and you only notice when it pops up in the build queue or in an event notification. This is currently not that much of a problem because relocations do not exist and hypernames are rare enough that it is not too confusing or distracting. If hypernames become more frequent and relocations become possible to occur, we might need to think about ways of addressing this. A good idea here is to limit the possible causes for hypernames to clearly apparent causes to the player to go in hand with other big announcements (era changes, civic changes), I don't know if others exist here currently. It might also be a good idea to add interface announcements when a hypername happens.
3. Relocations should definitely have an announcement, and maybe also have other effects. For example, I could imagine adding a city ruins building that will represent the abandoned previous city on the previous tile. It could enable some interesting events like being used as a quarry, in archeology, as a tourist attraction etc. Just something I started thinking about once this came up.
4. Likewise, relocations should be allowed but rare, and have specific causes. Some screenshots shown here suggest that cities relocate all over the place as time passes (thinking of India here). I think that goes a little far, and would make things too confusing. I'd rather like a system where the city founded on the tile (if it can contain multiple) can have a name chosen from multiple alternatives but then not change easily. A good candidate for that is conquest, or change of hands due to other factors like flips and collapses. This is just talking from my impressions here, I can cite specific examples later which is probably the better way to talk about this.
5. Another thing I noticed is that if a city has multiple hypernames, one hypername may have a translation in a given language but the other hypername may not. In this case it's good if the game would automatically select the translation for the other hypername instead. This could cut down on the accounting for all different names in the programming.
6. In general I want to make hypernames and relocations explicit concepts in the code. I suppose currently they are implemented implicitly through a series of rename conditions. I think that becomes hard to handle at a certain point.
That's quite a lot, let's leave it here for now.