For Chinese and Cantonese, people can be confused about the names. We suggest the following enhancements for English.
Equivalent internal codes
Chinese, Mandarin (Simplified)
zh = zh-Hans = zh-CN = zh-Hans-CN = cmn = cmn-Hans = cmn-CN = cmn-Hans-CN
Chinese, Mandarin (Traditional)
zh-Hant = zh-Hant-TW = zh-TW = cmn-Hant = cmn-Hant-TW = cmn-TW
Chinese, Cantonese (Traditional)
yue = yue-Hant = yue-HK = yue-Hant-HK (also legacy zh-HK = zh-Hant-HK)
The prefix of "Chinese" sorts these all together, and puts them in a spot in a sorted list where people are likely to look.
The part in the parens can be dropped when there is nothing to contrast. Note: that is a general principle: we've found it useful to add a region if any of the language variants have a region, and the same with script. That is:
English // en if alone
English (US) // en if there is another region mentioned for en in the list