当浏览器首次接受的语言是`zh-HK`时,默认UI语言不正确

Discourse currently has Traditional Chinese (zh_TW) and Simplified Chinese (zh_CN) localization. However when I have the browser’s accept-language set to zh-HK first, Discourse errorneously selects zh_CN as the default language.

Most users from Taiwan (zh-TW), Hong Kong (zh-HK) and Macau (zh-MO) prefer Traditional Chinese, so for these accept-language values Discourse should select zh_TW as the default language instead. (Technically you can also make use of Unicode CLDR likely subtags information, but for just Chinese it would be a bit overkill.)

I also want to point out that, having “中文” and “中文 (TW)” in the language selection is extremely weird. It really should list “简体中文” for Simplified Chinese and “正體中文” for Traditional Chinese instead.

5 个赞

这确实如此。这里有一个 PR 来修改它:

(Twitter 使用“繁體”而不是“正體”,所以我跟随了他们的做法。)

@gerhard,这就是需要修改的全部了吗?

5 个赞

要解决标题中的问题,“正确”的做法是我们使用 zh-Hans 和 zh-Hant,但各浏览器提供的选项并不一致。

Chrome:

Firefox:

我在 Safari 中找不到任何选择语言的方法,因此它是否始终使用系统设置?这可能包含所有这些选项:


文档 指出,macOS 支持类似 zh-Hans_HK 的语言代码。我很好奇浏览器是否能接收到这样的代码。

1 个赞

台湾的 FOSS 本地化社区更倾向于使用“正體”而非“繁體”,但对我来说两者并无妨。

只要只有两种变体,代码部分大多是表面上的。很多时候,即使名称显示为“中文(繁体)”,底层代码仍然是 zh_TW。无论哪种情况,你都需要处理浏览器发送的语言标签中的 language-regionlanguage-script-region 两种变体。据我所知,Android 上的 Firefox 会根据 Android 系统区域设置,发送带有 zh-Hant-HK 的 accept-language 请求。

2 个赞