Looking at the code, characters in "Hornblower" generally get their ranks from lines in their definitions like:If it's still foreign from the point of view of the speaker/listener and it's only one character, I feel it has a pass, so it can stay for the sake of variety or change, either way would be fine. My main concern was with the characters using foreign words (even if they are from their real original language) for the ranks of their own nation in the middle of a Spanish text (in-universe, they would be speaking English all the time but in the translation Spanish stands in for English, so the sudden change for one word is unnecessary and jarring).
Code:
SetRank(ch, ENGLAND, 4);
The lines "Lt. William" and "Lt." in "characters_names.txt" are for cut scenes when you become Lt. William Bush and Lt. Chadd. It's going to look odd if real William Bush has his English rank while you as Lt. William Bush have a Spanish rank! It might also look a bit odd if all naval officers show ranks in English but army officers show ranks in Spanish.