'de' 和 'de-DE' 语言代码有什么区别?

What is the difference between 'de' and 'de-DE' language codes?

我注意到我可以在某些地方*选择这些语言:

*Android 初始设备设置,语言设置中的 Chromium 浏览器。如果在 chromium 中选择 de-DE,它也会自动添加 de。

我知道 de-DE 的意思是 'German as spoken in Germany'。 但我不知道还有哪个说德语的国家没有自己的语言变体(例如瑞士的 de-CH 或奥地利的 de-AT)。

那么选择两种变体的原因是什么?他们有什么实际区别吗?我可以想象来自瑞士的人使用 de-CH 作为主要语言并使用 de 作为后备语言,但他们也可以为此目的使用 de-DE,对吗?

我知道西班牙有 es-ES,其他说西班牙语的国家有 'es',但它们没有自己的变体代码。

背景:我想跟踪有多少用户使用哪种主要语言(浏览器 header),我不确定 de 和 de-de 应该一起计算还是分开计算,区别是什么. 我使用来自 http://peric.github.io/GetCountries/ 的语言数据库,其中有 'de' 但没有 'de-DE' 语言。只有 'de' 的数据库是否正确?

这取决于你想算什么。我来自瑞士,我的浏览器代码是 de-CH 和 de 作为后备。 所以,如果你只想统计所有讲德语的国家,使用 de 应该就足够了。只需确保您还将所有 de-CH 条目添加到 de。不是每个人的浏览器都会有回退。

许多环境(浏览器,Android)都使用一个区域设置来 select 使用 UI 的语言,并格式化数字、日期、时间、等等

如果你 select de-CH(例如在 Android N 中)你将得到 "German" 个字符串(Android 翻译为 "generic German"), 但瑞士日期/时间/等。 例如,数字使用撇号作为千位分隔符(如 1'234'567,89),货币格式化程序将使用 CHF,等等。

在 N 之前的 Android 上,您从语言列表中 selected "German",但是默认区域设置是 de-DE("German" 没有区域是只是一件 UI 事)

跟踪用户设置:不幸的是,"de" 或 "de-DE" 不是可靠的信号,因为并非所有系统都允许区域 selection。 但是如果你看到别的东西(比如en-CH),那就更靠谱了。

您也可以尝试关联来自 IP 地址的信息。如果我的设置显示 "de" 而我的 IP 地址在奥地利,您可能会推断事实上我更喜欢 de-AT(不是 100% 可靠,但比 "de" 好)。