So, five comments so far - has got me seven suggestions!

There is, as ever, a "correct" way to do this.

The accept-language header can contain a list of languages in order of preference. e.g.

fr,fr-fr;q=0.8,en-us;q=0.5,de;q=0.3

Which says "Show French, if not, American English, if not, German."

Of course, there are close to zero phones which support this and, I suspect, even fewer users who would have bothered setting their phone up for such an occasion!

Please keep the suggestions coming in.