Extension:Cognate/ru
Cognate Статус релиза: стабильно |
|
---|---|
Реализация | База данных |
Описание | Link different language versions of a page by using the page title. |
Автор(ы) | Gabriel Birke, Addshore |
Последняя версия | Continuous updates |
Политика совместимости | Снэпшоты выходят вместе с MediaWiki. Мастер не имеет обратной совместимости. |
MediaWiki | 1.29+ |
Изменения в БД | Да |
Таблицы | cognate_sites cognate_pages cognate_titles |
Лицензия | GNU General Public License 2.0 или позднее |
Скачать | |
|
|
Ежеквартальные загрузки | 1 (Ranked 131st) |
Переведите расширение Cognate, если оно доступно на translatewiki.net | |
Проблемы | Открытые задачи · Сообщить об ошибке |
The Cognate extension creates a central store where the page titles for a group of sites are stored. It can then generate interwiki links across wiki projects in cases where the titles are the same. It was developed to solve the "Centralize interwiki language links for Wiktionary" task.
"Cognate" is a linguistic concept, referring to words in different languages developed from the same origin. This means that this extension is misnamed—since this extension links pages with the same title across wikis, a proper name would be “Homograph”.
Assumptions and restrictions
- Pages must be in one of the standard MediaWiki namespaces.
- Page titles are the same across languages (with some simple normalization applied).
- Sites should have the same interwiki structure for language links.
- Pages should not contain inter language links in wikitext as these will override the link provided by Cognate.
- Unexpected hash conflicts are unlikely but could occur, and would result in unexpected language links.
How it works
Title Normalization
Very simple title normalization (reduction to ASCII) occurs within the extension. This can be seen in the StringNormalizer class.
Initially the amount of normalization is very small. Requests can be made to expand this and will be added on a case by case basis.
Строка | Normalized | Примечания |
---|---|---|
Hello…
|
Hello...
|
The raw string contains an ellipsis character. This is normalized to three . characters |
lepelle’
|
lepelle'
|
The normalized string has a normalized apostrophe. |
Title Hashing
Titles are hashed using sha256. This can be seen in the StringHasher class.
Part of the hash is then stored in the database in a BIG_INT field for efficient lookups.
There are roughly 18,446,744,073,709,551,615 possible values.
Строка | Хеш | Int |
---|---|---|
A
|
559AEAD08264D5795D3909718CDD05ABD49572E84FE55590EEF31A88A08FDFFD | 6168500820899059065 |
Foo
|
1CBEC737F863E4922CEE63CC2EBBFAAFCD1CFF8B790D8CFD2E6A5D550B648AFA | 2071311921841431698 |
1234567890
|
C775E7B757EDE630CD0AA1113BD102661AB38829CA52A6422AB782862F268646 | -4074095513246505424 |
Matching Hashes
As titles that require links are assumed to be the same post normalization, they will result in the same hash and thus the same Int stored in the database.
Some sample data might look as follows when loading the "Foo..." page on enwiktionary.
Вики | Title | Hash Int | Normalized Hash Int | Примечания |
---|---|---|---|---|
enwiktionary | Foo...
|
395730596998145766 | 395730596998145766 | Matched row |
frwiktionary | Foo…
|
-7435652355441782233 | 395730596998145766 | Matched row, even though the pre normalized title includes the ellipsis character. |
dewiktionary | Foo...
|
395730596998145766 | 395730596998145766 | Matched row |
arwiktionary | Foo
|
2071311921841431698 | 2071311921841431698 |
Overwriting
It is possible to overwrite the automatic links provided by Cognate, simply by adding one or more interwiki links in the page.
That also means that to make Cognate work when the extension is deployed, the pages should not contain inter language links in their wikitext.
Тестирование
The extension can be tested on beta wiktionary sites:
- https://en.wiktionary.beta.wmflabs.org/wiki/Wiktionary:Main_Page
- https://de.wiktionary.beta.wmflabs.org/wiki/Hauptseite
- https://he.wiktionary.beta.wmflabs.org/wiki/%D7%A2%D7%9E%D7%95%D7%93_%D7%A8%D7%90%D7%A9%D7%99
These sites are linked together using the Cognate extension with added interwiki sorting provided by the InterwikiSorting extension.
Установка
- Скачайте и распакуйте файл(ы) в папку с названием
Cognate
в вашей папкеextensions/
.
Вместо этого разработчикам и соавторам кода следует установить расширение из Git, используя:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Cognate - Добавьте следующий код в конце вашего файла LocalSettings.php :
wfLoadExtension( 'Cognate' ); # Settings used in WMF production # Use the external cluster 'extension1' and dbname 'cognate_wiktionary' $wgCognateDb = 'cognate_wiktionary'; $wgCognateCluster = 'extension1'; # Only work on the main namespace $wgCognateNamespaces = [ 0 ];
- Выполните скрипт обновления, который автоматически создаст необходимые таблицы, используемые расширением.
- Готово – Перейдите на страницу Special:Version на своей вики, чтобы удостовериться в том, что расширение успешно установлено.
- Populate the
sites
table by running the populateCognateSites.php maintenance script. Sites must already exist in the MediaWiki sites table with the correct groupings.
php ./maintenance/populateCognateSites.php --site-group=wiktionary
- Populate the page and title tables by running the populateCognatePages.php maintenance script.
php ./maintenance/populateCognatePages.php
Это расширение используется в одном или нескольких проектах Викимедиа. Вероятно, это означает, что расширение стабильно и работает достаточно хорошо, чтобы использоваться такими сайтами с высоким трафиком. Найдите название этого расширения в файлах конфигурации Викимедиа CommonSettings.php и InitialiseSettings.php, чтобы узнать, где оно установлено. Полный список расширений, установленных на конкретной вики, можно увидеть на странице Special:Version wiki. |