Как получить все разрешенные языки для Викиданных

Я пишу инструмент для взаимодействия с Викиданными, где к элементам добавляются метки и описания. Но я хотел бы убедиться, что язык поддерживается, прежде чем пытаться его добавить.

Итак, мой вопрос: как мне получить список разрешенных языковых кодов. Документация описывает это как UserLanguageCode, но не дает информации о получении разрешенных значений.

Я знаю, что могу получить список всех используемых языков, выполнив следующую операцию SQL в базе данных, но это и медленно, и неэффективно: SELECT DISTINCT term_language FROM wb_terms.

Кроме того, одинаков ли список разрешенных языков для операторов MonolingualText?


person Lokal_Profil    schedule 30.09.2017    source источник
comment
Это то же самое, что и action=query&meta=siteinfo&siprop=languages?   -  person Bergi    schedule 01.10.2017
comment
Согласно mediawiki.org/wiki/API:Siteinfo, это языки пользовательского интерфейса для MediaWiki. Неясно, тот же ли это список, что и список разрешенных языков этикеток. Однако это не то же самое, что разрешенные языки MonolingualText. Например. Там появляется nl-informal и разрешено для меток, но не для одноязычного текста.   -  person Lokal_Profil    schedule 01.10.2017
comment
См. также stackoverflow.com/a/48240614/7879193.   -  person Stanislav Kralin    schedule 08.04.2018


Ответы (2)


Теперь существует API для получения поддерживаемых языков содержимого (Песочница API):

https://www.wikidata.org/w/api.php?action=query&meta=wbcontentlanguages&wbclcontext=term&format=json&formatversion=2

По умолчанию он просто возвращает язык code, но вы можете добавить name и/или autonym (имя на этом языке) через параметр wbclprop. (Чтобы управлять языком, на котором возвращается name, установите глобальный параметр uselang.)

Чтобы получить разрешенные одноязычные текстовые языки, установите wbclcontext на monolingualtext вместо term; в Викиданных вы также можете установить его на term-lexicographical для всех языковых кодов, поддерживаемых лексикографическими данными (почти, но не совсем идентичных term языкам).

person Lucas Werkmeister    schedule 27.02.2019

Пользователь hoo на IRC-канале #wikidata нашел следующее решение:

Получите полезную нагрузку JSON по этому адресу:

https://www.wikidata.org/w/api.php?action=paraminfo&modules=wbsetlabel

И извлечь

 modules[0].parameters[8].type

В этом списке действительно меньше языков, чем всех языков пользовательского интерфейса для MediaWiki.

person pintoch    schedule 04.10.2017
comment
Спасибо. Это работало для получения разрешенных языков для label и alias. Похоже, что список разрешенных языков для MonolingualText отличается и недоступен сегодня. Маленькая заметка. В случае изменения порядка параметров я, вероятно, перебираю их, а затем выбираю type, соответствующий 'name' == 'language' - person Lokal_Profil; 06.12.2017
comment
В соответствии с meta.stackoverflow.com/questions/335658 я изменил принятый ответ теперь, когда API наконец поддерживает эти запросы. . - person Lokal_Profil; 01.03.2019