К какому стандарту относятся языковые коды вида "ж-Ханс"?

через REST API приложения я получаю коды языков следующей формы: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 (макроязык), какой стандарт я должен придерживаться ? Принадлежат ли эти коды к какому-то смешанному (возможно, общему) стандарту ?

2 ответов


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

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

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


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