К какому стандарту относятся языковые коды формы "zh-Hans"?

Через API REST приложения я получаю коды языка следующей формы: ll-Xxxx.

  • два языка букв в нижнем регистре (выглядит как ISO 639-1),
  • тире,
  • код, состоящий из четырех букв, начинающийся с прописной буквы (выглядит как код макроязыка в формате ISO 639-3 ).

Некоторые примеры:

az-Arab Azerbaijani in the Arabic script
az-Cyrl Azerbaijani in the Cyrillic script
az-Latn Azerbaijani in the Latin script

sr-Cyrl Serbian in the Cyrillic script
sr-Latn Serbian in the Latin script

uz-Cyrl Uzbek in the Cyrillic script
uz-Latn Uzbek in the Latin script

zh-Hans Chinese in the simplified script
zh-Hant Chinese in the traditional script

Из того, что я нашел в Интернете:

[ ISO 639-1] - первая часть международных стандартов ISO 639 для кодов языков. Часть 1 охватывает регистрацию двухбуквенных кодов.

и

ISO 639-3 - международный стандарт для кодов языков. При определении некоторых своих языковых кодов некоторые из них определяются как макроязыки [...]

Теперь мне нужно написать кусок кода, чтобы проверить, что я получаю действительный код языка.
Но поскольку я получаю смесь из 639-1 (2 языка букв) и 639-3 (макроязык), какой стандарт я должен придерживаться? Связаны ли эти коды с каким-то смешанным (возможно, обычным) стандартом?

Ответы

Ответ 1

Текущая ссылка для идентификации языков IETF BCP 47, которая объединяет IETF RFC 5646 и RFC 4647.

Коды формы ll-Xxxx объединяют код языка ISO 639-1 (две буквы) и ISO 15924 script код ( четыре буквы). BCP 47 рекомендует, чтобы языковые коды были записаны в нижнем регистре и что коды script были записаны "в нижнем регистре с заглавной буквой", но это в основном для удобочитаемости.

BCP 47 также рекомендует, чтобы код языка был самым коротким доступным тегом ISO 639. Поэтому, если язык представлен как в ISO 639-1 (две буквы), так и ISO 639-3 (три буквы), чем вы должны использовать ISO 639-1.

Ответ 2

Следуя RFC-5646 (на странице 4), языковой тег можно записать в следующем виде: [язык] - [ script].