O Discourse atualmente possui localização em Chinês Tradicional (zh_TW) e Chinês Simplificado (zh_CN). No entanto, quando defino zh-HK como o primeiro valor em accept-language do navegador, o Discourse seleciona erroneamente zh_CN como idioma padrão.
A maioria dos usuários de Taiwan (zh-TW), Hong Kong (zh-HK) e Macau (zh-MO) prefere o Chinês Tradicional. Portanto, para esses valores de accept-language, o Discourse deveria selecionar zh_TW como idioma padrão. (Tecnicamente, também é possível utilizar informações sobre subtags prováveis do Unicode CLDR, mas apenas para o chinês isso seria um pouco exagero.)
Também gostaria de destacar que ter “中文” e “中文 (TW)” na seleção de idiomas é extremamente estranho. Deveria listar “简体中文” para Chinês Simplificado e “正體中文” para Chinês Tradicional.
Para resolver o problema mencionado no título, a opção “correta” seria utilizarmos zh-Hans e zh-Hant, mas os navegadores são inconsistentes quanto às opções que apresentam.
Não consegui encontrar nenhuma maneira no Safari de escolher um idioma, então ele deve sempre usar as configurações do sistema? Isso potencialmente inclui todas essas opções:
A comunidade taiwanesa de FOSS para l10n prefere “正體” em vez de “繁體”, mas não me importo com nenhum dos dois.
Enquanto houver apenas duas variantes, o código é basicamente cosmético. Muitas vezes, mesmo quando o nome diz “Chinês (Tradicional)”, o código subjacente ainda é zh_TW. De qualquer forma, você ainda precisa lidar com ambas as variantes de tags de idioma enviadas pelos navegadores: language-region e language-script-region. Pelo que sei, o Firefox no Android envia o cabeçalho accept-language com zh-Hant-HK, dependendo da configuração de localidade do sistema Android.