В настоящее время в Discourse поддерживаются локализации на традиционный китайский (zh_TW) и упрощённый китайский (zh_CN). Однако, когда в браузере первым указан язык zh-HK, Discourse ошибочно выбирает в качестве языка по умолчанию zh_CN.
Большинство пользователей из Тайваня (zh-TW), Гонконга (zh-HK) и Макао (zh-MO) предпочитают традиционный китайский, поэтому для этих значений accept-language Discourse должен выбирать zh_TW в качестве языка по умолчанию. (Технически также можно использовать информацию из Unicode CLDR likely subtags, но для китайского языка это будет излишним усложнением.)
Также хочу отметить, что наличие пунктов “中文” и “中文 (TW)” в списке выбора языка выглядит крайне странно. Вместо этого для упрощённого китайского должно быть указано “简体中文”, а для традиционного — “正體中文”.
Чтобы решить проблему, указанную в заголовке, «правильным» вариантом было бы использование кодов zh-Hans и zh-Hant, однако браузеры предлагают разные наборы вариантов.
В Safari я не нашёл способа выбрать язык, поэтому, вероятно, он всегда использует системные настройки? Это потенциально включает все следующие варианты:
В сообществе тайваньских разработчиков свободного ПО (FOSS) для локализации предпочтение отдаётся термину «正體», но меня не смущает ни один из вариантов.
Если у вас всего два варианта, код в основном имеет косметическое значение. Часто, даже когда название гласит «Chinese (Traditional)», в основе всё ещё используется zh_TW. В любом случае вам всё равно придётся обрабатывать оба варианта тегов языка, отправляемых браузерами: language-region и language-script-region. Насколько мне известно, Firefox на Android отправляет заголовок accept-language с значением zh-Hant-HK в зависимости от настроек системной локали Android.