English spelling is bizarre. From the moment we learn about silent “e”, our expectations that sound and spelling should neatly match up begin to fade away, and soon we accept that ‘eight’ rhymes with ‘ate,’ ‘of’ rhymes with ‘love,’ and ‘to’ sounds like ‘too’ sounds like ‘two.’ We have resigned ourselves to the fact that there must be reasons like history, etymology and sound changing over time.
But sometimes English takes it a step too far. For instance, “Colonel” is pronounced “kernel.”
This happened from borrowing the same word from two different places. In the 1500s, English borrowed a bunch of military vocabulary from French, words like cavalerie, infanterie, citadelle, canon, and also, coronel. The French had borrowed them from the Italians, but in doing so, had changed colonello to coronel.
But why? A common process called dissimilation — when two instances of the same sound occur close to each other in a word, people tend to change one of the instances to something else. Here, the first ‘l’ was changed to ‘r.’ The opposite process happened with the Latin word peregrinus (pilgrim), when the first ‘r’ was changed to an ‘l’ (now it’s peregrino in Spanish and Pellegrino in Italian. English inherited the ‘l’ version in pilgrim.)
After the dissimilated French coronel made its way into English, late 16th century scholars started producing English translations of Italian military treatises. Under the influence of the originals, people started spelling it “colonel.”
By the middle of the 17th century, the spelling had standardised to the ‘l’ version, but the ‘r’ pronunciation was still popular (it later lost a syllable, turning kor-o-nel to ker-nel). Both pronunciations were in play for a while, and adding to the confusion was the mistaken idea that ‘coronel’ was etymologically related to ‘crown’ — a colonel was sometimes translated as ‘crowner’ in English. In fact, the root is colonna, Italian for column.
Meanwhile, French switched back to ‘colonel,’ in both spelling and pronunciation. But, English didn’t.