Розширення:Cognate
![]() Статус релізу: стабільний |
|
---|---|
Реалізація | База даних |
Опис | Link different language versions of a page by using the page title. |
Автор(и) | Gabriel Birke, Addshore |
Найновіша версія | Continuous updates |
Compatibility policy | Snapshots releases along with MediaWiki. Master is not backward compatible. |
MediaWiki | 1.29+ |
Зміни в БД | Так |
Таблиці | cognate_sites cognate_pages cognate_titles |
Ліцензія | GNU General Public License 2.0 or later |
Завантажити | |
|
|
Quarterly downloads | 1 (Ranked 139th) |
Translate the Cognate extension if it is available at translatewiki.net | |
Issues | Open tasks · Report a bug |
Розширення Cognate створює центральне сховище, де зберігаються назви сторінок для групи сайтів. Потім воно може генерувати інтервікі-посилання між вікі-проєктами у випадках, коли назви однакові. Воно було розроблене для вирішення завдання «Централізувати мовні посилання інтервікі для Вікісловника».
«Cognate» — це лінгвістичне поняття, що стосується слів у різних мовах, які виникли з одного походження. Це означає, що це розширення неправильно названо — оскільки воно пов’язує сторінки з однаковою назвою в різних вікі, правильною назвою буде «Омограф».
Передумови й обмеження
- Сторінки мають бути в одному з стандартних просторів назв MediaWiki.
- Назви сторінок однакові для всіх мов (із застосуванням простої нормалізації).
- Сайти повинні мати однакову структуру інтервікі для мовних посилань.
- Сторінки не повинні містити міжмовні посилання у вікітексті, оскільки вони замінять посилання, надане Cognate.
- Неочікувані хеш-конфлікти малоймовірні, але можуть виникнути та призвести до неочікуваних мовних посилань.
Як це працює
Нормалізація назви
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.
String | Normalized | Notes |
---|---|---|
Hello…
|
Hello...
|
The raw string contains an ellipsis character. This is normalized to three . characters |
lepelle’
|
lepelle'
|
The normalized string has a normalized apostrophe. |
Хешування назви
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.
String | Hash | Int |
---|---|---|
A
|
559AEAD08264D5795D3909718CDD05ABD49572E84FE55590EEF31A88A08FDFFD | 6168500820899059065 |
Foo
|
1CBEC737F863E4922CEE63CC2EBBFAAFCD1CFF8B790D8CFD2E6A5D550B648AFA | 2071311921841431698 |
1234567890
|
C775E7B757EDE630CD0AA1113BD102661AB38829CA52A6422AB782862F268646 | -4074095513246505424 |
Відповідність хешів
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.
Wiki | Title | Hash Int | Normalized Hash Int | Notes |
---|---|---|---|---|
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 |
Перезапис
Можна перезаписати автоматичні посилання, надані Cognate, просто додавши на сторінку одне або декілька інтервікі-посилань.
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 вашої вікі, щоб переконатися, що розширення встановлено успішно.
- Заповніть таблицю сайтів, запустивши сценарій обслуговування populateCognateSites.php. Сайти вже мають існувати в таблиці сайтів MediaWiki з правильним групуванням.
php ./maintenance/populateCognateSites.php --site-group=wiktionary
- Заповніть таблиці сторінок і назв, запустивши сценарій обслуговування populateCognatePages.php.
php ./maintenance/populateCognatePages.php
Це розширення використовується в одному або декількох проєктах Вікімедіа. Це, мабуть, означає, що розширення стабільне і працює досить добре, щоб його могли використовувати веб-сайти з великим трафіком. Шукайте назву цього розширення у файлах конфігурації Wikimedia CommonSettings.php та InitialiseSettings.php, щоб побачити, де це встановлене. Повний перелік розширень, встановлених на певній вікі, можна переглянути на сторінці Special:Version вікі. |