> Localization is all about edge cases, though. If you ignore edge cases, you'll ignore most world languages, after all.
The edge case of someone setting their device to a different language than the one they want to use in a specific application is not one of localization but of usability.
> By all means, make a guess at what language to use, but always allow the user to choose in case you guess wrong.
While I agree I wouldn't call it a guess as it's a setting a user set when setting up their device.
You make the problem sound more obscure than it actually is, which to be fair is very understandable (and I guess common) if you're from an English-speaking country.
Many people outside of those know English well enough that they'd rather have a feature in English than not at all.
Also, many if not most applications and services that aren't billion-dollar businesses or otherwise have had insane amounts of resources poured into them have terrible localization. And even if the localization is good, it can be beneficial to use the English version.
English is the international language, it is taught to children all over the world, it is used in business, academia and so on, all over the world. You know that, everyone knows that, but sadly, to all-English dev teams, it is all too often an afterthought.
And that doesn't even take expats, travelers etc. into account, who might want to use their native language system-wide but need certain applications to use the local language, or vice versa.
I would say that UI language and speech input language are different enough that taking them to be the same would qualify as a good guess, not simply obeying a setting.
By all means, make a guess at what language to use, but always allow the user to choose in case you guess wrong.