Есть ли список кодов языков BCP 47 в R?

Я управляю фантастическим pandoc из пакета R, полагаясь на пакет babel LaTeX для некоторых набирающих тонкостей.

Пандок ожидает lang аргумент в виде кода BCP 47 (например, en-US), но babel ожидает свои собственные языковые коды (например, american).

Пандок, будучи таким же удивительным, отображает между ними в этом скрипте на Haskell.

В духе защитного программирования я хотел бы предупредить своих пользователей, когда они используют неправильный код языка, и дать им полный список таких приемлемых кодов BCP 47.

Существует ли такой список (или вектор, или что-то еще) где-нибудь в R или пакете для удобного использования?

Я стараюсь не вводить вручную скрипт pandoc haskell.

2 ответа

Решение

Мне нужно было обеспечить удобный ввод выбора, поэтому мне нужно было иметь готовые опции в R и закончить их ручным копированием (yikes).

В случае, если кто-то найдет это полезным, вот: - краткие языковые коды (lang_short), - вариант или локаль (var_short), - более длинная версия языка (полезно для ввода) lang_long (возможно, нестандартный!), - более длинная версия варианта или локали (полезно для ввода) var_long (возможно, нестандартный!), - логические значения для polyglossia а также babel Указывает, может ли pandoc отображаться на один или оба из них (может пригодиться, если вам нужно полагаться только на один из этих пакетов LaTeX.

Помните, что Pandoc ожидает языки формы en_US и т.д., поэтому вам нужно вставить столбец 1 и 2.

Помните, что это не все языки и варианты согласно стандарту BCP 47; это просто (небольшое) подмножество, отображаемое с помощью pandoc.

(Если кто-нибудь сталкивается с более точным списком кодов языков в R, это было бы здорово).


lang_short;var_short;lang_long;var_long;polyglossia;babel
ar;DZ;arabic;Algeria;TRUE;FALSE
ar;IQ;arabic;Iraq;TRUE;FALSE
ar;JO;arabic;Jordan;TRUE;FALSE
ar;LB;arabic;Lebanon;TRUE;FALSE
ar;LY;arabic;Libya;TRUE;FALSE
ar;MA;arabic;Morocco;TRUE;FALSE
ar;MR;arabic;Mauritania;TRUE;FALSE
ar;PS;arabic;Palestinian Territory;TRUE;FALSE
ar;SY;arabic;Syria;TRUE;FALSE
ar;TN;arabic;Tunisia;TRUE;FALSE
de;DE;german;;TRUE;TRUE
de;AT;german;Austria;TRUE;TRUE
de;CH;german;Switzerland;TRUE;TRUE
dsb;;lower sorbian;;TRUE;FALSE
hsb;;upper sorbian;;FALSE;TRUE
el;polyton;greek;polytonic;TRUE;TRUE
en;AU;english;Australia;TRUE;TRUE
en;CA;english;Canada;TRUE;TRUE
en;GB;english;Great Britain;TRUE;TRUE
en;NZ;english;New Zealand;TRUE;TRUE
en;UK;english;United Kingdom;TRUE;TRUE
en;US;english;United States;TRUE;TRUE
grc;ancient;greek;ancient;TRUE;TRUE
la;;latin;;TRUE;TRUE
sl;;slovenian;;TRUE;TRUE
fr;CA;french;Canada;FALSE;TRUE
pt;BR;portoguese;Brazil;TRUE;TRUE
sr;;serbian;;TRUE;TRUE
af;;afrikaans;;TRUE;TRUE
am;;amharic;;TRUE;TRUE
ar;;arabic;;TRUE;TRUE
as;;assamese;;TRUE;TRUE
ast;;asturian;;TRUE;TRUE
bg;;bulgarian;;TRUE;TRUE
bn;;bengali;;TRUE;TRUE
bo;;tibetan;;TRUE;TRUE
br;;breton;;TRUE;TRUE
ca;;catalan;;TRUE;TRUE
cy;;welsh;;TRUE;TRUE
cs;;czech;;TRUE;TRUE
cop;;coptic;;TRUE;TRUE
da;;danish;;TRUE;TRUE
dv;;divehi;;TRUE;TRUE
el;;greek;;TRUE;TRUE
en;;english;;TRUE;TRUE
eo;;esperanto;;TRUE;TRUE
es;;spanish;;TRUE;TRUE
et;;estonian;;TRUE;TRUE
eu;;basque;;TRUE;TRUE
fa;;farsi;;TRUE;TRUE
fr;;french;;TRUE;TRUE
fur;;friulan;;TRUE;TRUE
ga;;irish;;TRUE;TRUE
gd;;scottish;;TRUE;TRUE
gez;;ethiopic;;TRUE;TRUE
gl;;galician;;TRUE;TRUE
he;;hebrew;;TRUE;TRUE
hi;;hindi;;TRUE;TRUE
hr;;croatian;;TRUE;TRUE
hu;;magyar;;TRUE;TRUE
hy;;armenian;;TRUE;TRUE
ia;;interlingua;;TRUE;TRUE
id;;indonesian;;TRUE;TRUE
is;;icelandic;;TRUE;TRUE
it;;italian;;TRUE;TRUE
km;;khmer;;TRUE;TRUE
kmr;;kurmanji;;TRUE;TRUE
kn;;kannada;;TRUE;TRUE
ko;;korean;;TRUE;TRUE
lo;;lao;;TRUE;TRUE
lt;;lithuanian;;TRUE;TRUE
lv;;latvian;;TRUE;TRUE
ml;;malayalam;;TRUE;TRUE
mn;;mongolian;;TRUE;TRUE
mr;;marathi;;TRUE;TRUE
nb;;norsk;;TRUE;TRUE
nl;;dutch;;TRUE;TRUE
nn;;nynorsk;;TRUE;TRUE
no;;norsk;;TRUE;TRUE
nqo;;nko;;TRUE;TRUE
oc;;occitan;;TRUE;TRUE
pa;;panjabi;;TRUE;TRUE
pms;;piedmontese;;TRUE;TRUE
pt;;portoguese;;TRUE;TRUE
rm;;romanian;;TRUE;TRUE
ro;;russian;;TRUE;TRUE
sa;;sanskrit;;TRUE;TRUE
se;;samin;;TRUE;TRUE
sk;;slovak;;TRUE;TRUE
sq;;albanian;;TRUE;TRUE
sr;;serbian;;TRUE;TRUE
syr;;syriac;;TRUE;TRUE
ta;;tamil;;TRUE;TRUE
te;;telugu;;TRUE;TRUE
th;;thai;;TRUE;TRUE
ti;;ethiopic;;TRUE;TRUE
tk;;turkmen;;TRUE;TRUE
tr;;turkish;;TRUE;TRUE
uk;;ukrainian;;TRUE;TRUE
ur;;urdu;;TRUE;TRUE
vi;;vietnamese;;TRUE;TRUE

Поскольку скрипт R не имеет доступа к коду Haskell (который выполняется в своем собственном процессе), это будет невозможно. Однако pandoc >2.0 выдает предупреждения в STDERR, в этом случае:

$ echo "foo" | pandoc -M lang=asdf -t latex
[WARNING] Invalid 'lang' value 'asdf'.
  Use an IETF language tag like 'en-US'.

Должен быть способ поймать это у R.

Другие вопросы по тегам