Now we get to the difficult ones.
The fourth way of turning a foreign name into your own language is to look at it, and think, well it’s spelt Łódż, so I’ll call it /lɒdz/. This makes no attempt to imitate the original language, but simply takes the basic letter shapes and gives them their English (in this case) pronunciation. I once heard the French town of Béziers pronounced /bǝˈzıǝz/ in a French car park by a British family who had just come from there, but had made no effort to listen to how the local people said it.
It is often thought that we pronounce Paris, and that we used to pronounce Lyons (/ˈlaıǝnz/) on this principle, but it is not true.
The fifth way, and the most common, of pronouncing a foreign name, is to try to imitate the native pronunciation. When you think about it, this has to have been the case throughout most of history, because until recently, most people were illiterate, and could not know how a name was spelt. This immediately causes problems because no two languages have the same inventory of sounds, whether phonetic or phonological, and the phonotactics of languages are also different. Sharkbait has hit the nail on the head. However, the BBC Pronunciation Unit has been treading its way through this minefield for three quarters of a century now, and has vast quantities of data, and standardized ways for dealing with many languages.
For instance, of all the forty-odd phonemes of English, and the similar number in French, only two are identical in the two languages (and there may be small differences even here): /f/ and /m/. All the other sounds of the two languages have differences that contribute to the sound of a French accent in English, or an English accent in French. What to do with the names? Take the “nearest” sound and apply that. So, to go back to Béziers, we get /ˈbeızjeı/ as the “English” pronunciation. Not great, but close enough for jazz.
But why Paris and Lyons? Well, go back 900 years, and in French, the final -s was still pronounced, so the French pronunciation of these two cities was /paris/ and /ljɔns/. English borrowed these two pronunciations, but as English favours first syllable stress, /paris/ became /’pæriːs/ and /ljɔns/ became /’liːɔns/ (English has no /CjV/ sequence unless the V is high and back, so it became a full vowel. Cf fjord > fiord, and piano in three syllables.) In the course of time, French lost its final -s, so /pari/, and /ɔn/ was nasalized. By this time, the names had become so familiar to English speakers, that they were in effect English words. English, however, did not lose its final -s. Different sound changes took place. Unstressed vowels weakened, so that /’pæriːs/ turned into /’pærıs/, and became identical with the mythological character who abducted Helen of Troy and started the Trojan War. /’liːɔns/ became /’liːǝnz/. Then the Great Vowel Shift kicked in , and /iː/ became /aı/. Hence /ˈlaıǝnz/. In the second half of the 20th century, increased travel possibilities saw millions of people heading off for the French Riviera, and stopping at Lyon (no longer spelt with a final -s in French), and realized that the French don’t say /ˈlaıǝnz/ – that’s just us English who don’t know any better. So now we have a new anglicization based on the current French pronunciation, but we still can’t cope with /CjV/, so now we call it /’liːõ/. QED
As for Leghorn. The “standard” Italian (if there is such a thing), spells and pronounces this town Livorno, but in the local dialect, it is Ligorno. And there you have it.