2013-08-30 7 views
0

Итак, я создаю приложение, где я показываю информацию в базе данных о предметах, а в базе данных есть ссылка на википедию на эту тему.получить ссылки на wikipedia

Теперь мы хотим создать многоязычный интерфейс для приложения (добавить французский). , и у нас есть французская версия для наших основных данных. Но для ссылок на Википедии у нас есть только английские ссылки.

но сам википедия, на странице темы есть ссылки на одну и ту же тему на разных языках.

Так, например, Наполеон Бонапарт имеет этот английскую страницу на Википедии http://en.wikipedia.org/wiki/Napoleon

Но если вы посетите эту страницу, вы увидите ссылки на другие языки на Наполеоне, и есть ссылка на французском языке, как это

http://fr.wikipedia.org/wiki/Napol%C3%A9on_Ier

Итак, есть программный способ получить доступ к французскому URL, если мы знаем английский язык?

+0

ли вы смотрите на документацию API MediaWiki? – svick

+0

Возможный дубликат [Получить другой язык на странице Википедии] (http://stackoverflow.com/questions/4143713/retrieve-another-language-of-a-wikipedia-page) – leo

ответ

-1

Ну, иногда единственное, что меняется от ссылок ярлык для языка, например:

http://en.wikipedia.org/wiki/Steve_jobs

http://fr.wikipedia.org/wiki/Steve_Jobs

Верхний/нижний регистр «J» не делает разница при доступе к сайту, поскольку звонок http://fr.wikipedia.org/wiki/Steve_jobs является успешным в любом случае.

Но для всего, что не является личностью в Wiki pedia вероятность того, что аналогичные ссылки, подобные приведенным выше, невелика.

Является ли ваша база данных большой? Если он не слишком большой, я бы добавил ссылки вручную, потому что, наконец, это более эффективно, чем большой алгоритм для такого «немого» случая.

+0

спасибо , но у нас есть более 200000 тем , и многие из них имеют общую ссылку, чем английские. Я надеялся на некоторый REST API или что-то простое. –

0

Я уверен, что существует способ wikipedia-api сделать это, но я не мог устоять перед публикацией ответа Freebase. Использование mqlread API и следующие MQL:

{ 
    "en:key": { 
    "namespace": "/wikipedia/en", 
    "value": "Lake" 
    }, 
    "fr:key": { 
    "namespace": "/wikipedia/fr", 
    "value": null, 
    "limit": 1 
    } 
} 

... вы можете получить то, что вы хотите. MQL в основном говорит: «учитывая /wikipedia/en/Lake объект, что тот же объект в /wikipedia/fr имен Ответ конечно /wikipedia/fr/Lac

В ОСТАЛЬНЫХ, это:

https://www.googleapis.com/freebase/v1/mqlread?query={ "en:key": { "namespace": "/wikipedia/en", "value": "Lake" }, "fr:key": { "namespace": "/wikipedia/fr", "value": null, "limit": 1 } }

(не экранирован и с пробелами, для ясности)

и ответ:

{"result": {"en:key": {"value": "Lake", "namespace": "/wikipedia/en"}, "fr:key": {"value": Lac", "namespace": "/wikipedia/fr"}}}

...так что вы хотите response["result"]["fr:key"]["value"]

Некоторые примечания:

  1. Убедитесь, чтобы получить ключ API от Google для любого использования без тестирования. В противном случае вы будете делиться квотой со всеми остальными, и это не может закончиться в любое время. Подробнее читайте здесь: https://developers.google.com/freebase/v1/mqlread

  2. Вам, разумеется, необходимо правильно URI-избежать вашей части query.

  3. В пределах значения для «запроса» строки, содержащие непечатаемые (и некоторые из них хорошо, например, запятая, parens и т. Д.), Должны быть экранированы «способом Freebase»: с использованием знака доллара и 4 шестнадцатеричные цифры, такие как "(" становятся "$0028".

  4. Разумеется, вам нужно будет сделать обратное снятие экранирования в строках ответа.

Удачи вам!

0

Ссылки interwiki теперь хранятся в Викикатаде. например http://www.wikidata.org/wiki/Q517 Вы можете либо получить к ним доступ, используя API MediaWiki, либо загрузить дамп Wikidata. http://www.wikidata.org/wiki/Wikidata:Data_access

Свободное основание API хорошо, если вы также нужна другая информация от Freebase, но если вы просто хотите интервики ссылки получать его непосредственно даст вам более полный охват (148 википедии языка против ~ 30 в Freebase)

Смежные вопросы