Какой формат локали использует React Intl?

Согласно документации React Intl, чтобы добавить поддержку определенного языка в ваше приложение, вам необходимо импортировать соответствующий языковой файл из каталога locale-data/ и передать его функции React Intl с именем addLocaleData().

Когда дело доходит до таких языков, как английский или французский, все просто, поскольку у вас есть en.js и fr.js, которые следуют знакомому соглашению об именовании двухбуквенного кода. Однако каталог locale-data также включает в себя целый ряд файлов с трехбуквенными кодами языков, с которыми я никогда раньше не сталкивался, например: agq, guz или kkj.

Я ищу документацию, которая помогла бы мне сопоставить эти языковые коды с соответствующими языками.

Причина, по которой мне это нужно, заключается в том, что я сейчас пытаюсь найти языковые файлы для австрийского немецкого и бразильского португальского, и я просто не знаю, за какими кодами они скрываются. Я думал, что первый может быть доступен под at.js, но такого файла нет, а второй - под br.js, но этот файл включает какой-то другой язык.


person Chris Kobrzak    schedule 26.02.2018    source источник


Ответы (2)


TL;DR

Он использует ISO 639, а именно:

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

Вы можете найти все коды здесь. В нем перечислены как код ISO 639-1 (если он есть), так и код ISO 639-3 (а также коды ISO 639-2 / T и ISO 639-2 / B, которые, как я считаю, являются устаревшими).


Подробности:

Тег react-intl говорит: em> "Объединяет компоненты реакции с FormatJS." При быстром поиске FormatJS обнаруживается его веб-сайт, который на на его странице о говорится:

Отраслевые стандарты

FormatJS основан на ECMAScript Internationalization API (ECMA-402), использует данные локали из CLDR и работает с отраслевым стандартом Синтаксис сообщений ICU, используемый профессиональными переводчиками.

(выделено мной)

Переход по ссылке CLDR приведет вас на страницу CLDR на unicode.org, где описан формат и ссылка на страницу загрузки. На сайте CLDR упоминаются языковые коды ISO 639-3. Изучив их «текущую работу», мы можем найти список этих кодов в формате UTF-8 здесь, в котором перечислены все три упомянутых вами файла: agq (Aghem), guz (указано дважды; Ekegusii и Gusii) и kkj (Kako).

Но в комментарий, user3775501 указал, что единственный проверенный им код (для валлийского) был cym, но, глядя на node_modules/react-intl/locale-data, вместо этого было cy. Это явно cym в ISO 639-3, но это cy в ISO 639-1; поэтому очевидно, что они используют ISO 639 в целом, а не только ISO 639-3. ISO 639 определяет двухбуквенные коды (ISO 639-1) и трехбуквенные коды (ISO 639-3) (было предложение о четырехбуквенных кодах, которое было отозвано, и отдельно ISO 639-2, который, по-видимому, имел два части, T и B, которые я считаю устаревшими). На этой странице SIL International, органа регистрации ISO 639-3, перечислены оба двухбуквенный (ISO 639-1) и трехбуквенный (ISO 639-3) коды. На первой странице кодов, начинающихся с c, мы находим Валлийский: cy в ISO 639-1, cym в ISO 639-2 / T, wel в ISO 639-2 / B и cym в ISO 639-3. (Валлийское название валлийского - Cymraeg, отсюда _14 _ / _ 15_).

Глядя на node_modules/react-intl/locale-data, мы можем видеть как двухбуквенные, так и трехбуквенные коды. Например, вот буквы c:

ca
ce
cgg
chr
ckb
cs
cu
cy

Глядя на список c SIL International, мы находим:

  • ca - код ISO 639-1 для каталонского и валенсийского языков; его код ISO 639-3 cat
  • ce - код ISO 639-1 для чешского языка; его код ISO 639-3 che
  • cgg - код ISO 639-3 для Chiga, который не имеет кода ISO 639-1
  • chr - код ISO 639-3 для Cherokee, который не имеет кода ISO 639-1
  • ckb - код ISO 639-3 для центрального курдского языка, который не имеет кода ISO 639-1
  • cs - код ISO 639-1 для чешского языка; его код ISO 639-3 ces
  • cu - код ISO 639-1 для церковнославянского, церковнославянского, староболгарского, старославянского, старославянского языков; его код ISO 639-3 chu
  • cy - код ISO 639-1 для валлийского языка; его код ISO 639-3 cym

Таким образом, похоже, что они используют коды ISO 639-1 там, где они существуют, и коды ISO 639-3, если нет кода ISO 639-1.

a> в списке SIL просто находит австрийский жестовый язык. agqtid=All&name_3=braz&field_iso639_element_scope_tid=All&field_iso639_element_scope_tid=All&field_iso6_element_scope_tid=All&field_iso6"> a> не появляется бразильский португальский; relanguage_scope_tid=All&field_iso6"> a> появляется несколько диалектов португальского языка, вам нужно выяснить, какой из них подходит для вашей целевой группы.

person T.J. Crowder    schedule 26.02.2018
comment
Просто добавлю, что вам, скорее всего, понадобятся составные теги de-AT и pt-BR. Региональные компоненты взяты из отдельной спецификации для кодов стран (ISO 3166), а не языков. - person Tim; 26.02.2018
comment
Ваш ответ был очень полезной детективной работой (они никому не облегчают задачу), но я обнаружил, что список неверен в единственном, что я искал, - на валлийском. Там написано cym, но на самом деле это cy. Я обнаружил, что это неправильно, но проверяю папку node_modules / response-intl / locale-data - person user3775501; 26.11.2018
comment
@ user3775501 - Спасибо за это! Я обновил ответ. Похоже, они используют коды ISO 639-1 (двухбуквенные), если они существуют, коды ISO 639-3 (трехбуквенные), где нет кода -1 (хотя есть коды ISO 639-3 для всех ISO 639 -1 коды). Вот почему валлийский - cy, а центральный курдский - ckb (не было кода ISO 639-1 для центральнокурдского языка). - person T.J. Crowder; 26.11.2018

Коды языков см. В ISO 693-3. Обычно языковые варианты определяются на основе их языкового кода и варианта, например, pt-PT и pt-BR. Не все языки могут поддерживаться в React Intl.

person Sami Kuhmonen    schedule 26.02.2018