Hi!
Two quick thoughts on fallback languages: One general rule perhaps could be to not select a language with a different script when one in the same script is available. (At least for users with a preference for a latin language - this may be different the other way around.)
This is a good idea, except that I don't really have tools to do this right now, I think, at least not without adding a lot to Language classes (maybe I'm wrong, I'll check). So for now I think I am going to trust whoever composed the fallback chains and use those. So basically the idea would be to display:
1. Title & description in user's display language. If the match happened in those, it will be highlighted. 1.1 Failing to find those, walk back the fallback chain until some title/description is found and display that one. Again, if the match happened there, it will be highlighted. 1.2 If we still failed to find any label/description, just display Q-id for label and nothing for description.
2. If we still did not display the actual string that was matched (i.e. it is an alias, non-main language, etc.) - display it too, in addition to what we already displayed.
3. If any string is displayed in language different from user's current display language, it will have a mark that says in which language it is displayed (except for Q-id string, obviously).
I think this should do for now, but we can always improve it later :) Thanks,