[RFC] Feature Proposal - Add languages: tags for name rendering

Navigation applications have to cater to a variety of user behaviors. Some rely on voice instructions while others rely on visual instructions. Some need the map to always point north while others need the map to rotate with their direction of travel. People with more spatial awareness or local knowledge may dispense with turn-by-turn navigation altogether and rely on a route preview map. That said, with wearable devices like watches and smart glasses, pure voice-based navigation becomes a lot more important. OSM is consumed aurally, but we don’t pay enough attention to this use case because rendered maps like OSM Carto are so entrenched in mapper workflows.

Besides active turn-by-turn navigation, users with vision impairment or blindness rely even more heavily on text-to-speech as an assistive technology, both for navigation and for basic map exploration. In some jurisdictions, government regulations require applications to make maps accessible through screen readers. The good news is that these users tend to be quite lenient about proper pronunciation. I’ve always been amazed at how skillfully blind users navigate user interfaces with screen readers zipping through text at a rate of upwards of 550 words per minute – twice as fast as the average seeing user can read. The flip side is that both code-switching into other languages and skipping unpronounceable words can seriously throw off the user.

Hybrid names, like the Franglais in Canada, probably sound rather silly to end users. I can’t be too critical of this practice, because I know it’s an uneasy compromise between language communities that sometimes view each other with suspicion. But just as Wikipedia is not paper, we aren’t signmakers and don’t always have to encode exactly what’s on the sign. Recalling one of the examples I gave earlier, I really hope no one feels the need to tag this restaurant as name=Seafood 金山 Kim Sơn 酒家 Buffet just because of this sign that literally puts the most important language front and center. If there’s an overriding need to balance competing interests by stuffing multiple names in name=*, then at least we can avoid jumbling the words and use a predictable, unambiguous delimiter, so that the heuristic of “find a match between name:*=* and name=*” gets a sporting chance.

By the way, that seafood restaurant is on a street that has signposted names in different languages, but only the English name is used in addresses. iD apparently led a mapper to stick both names in addr:street=*.