Реалізація багатомовності для MediaWiki

Реалізація багатомовності для MediaWiki

Часто перед розробником проекту на основі системи керування сайтом MediaWiki виникає ситуація, коли потрібно розширювати проект за рахунок перекладу існуючих статей мовами відмінними від оригіналу. Тож і виникає логічна запитання — яким чином це зробити? Як краще?

Для реалізації багатомовності у MediaWiki є технологія Interwiki. Вона забезпечує перехід на зовнішні проекти по посиланнях оформлених як внутрішні з допомогою спеціальних префіксів. Наприклад посилання типу [[Wikipedia:Main Page]] має вигляд - Wikipedia:Main Page та перенаправляє на головну сторінку (Main Page) Вікіпедії.
Слід звернути увагу на те, що по замовчуванню у деяких версіях (починаючи з 1.10) системи контролю сайтом MediaWiki є встановленими наступні інтер-вікі префікси:

Тобто існує так-звана таблиця інтервікі-посилань, в яку потрібно внести ресурси, що використовуватимуться для забезпечення багатомовності. Відповідно для налаштування роботи інтервікі-посилань буде потрібно редагувати базу даних. Як альтернативний варіант (щоб не редагувати базу даних) можна скористатись розширенням (http://www.mediawiki.org/wiki/Category:Interwiki_extensions), яке виконуватиме відповідні функції. Або взагалі, використовувати замість того всього шаблони. Наприклад шаблон для “Вікіпедії” - [http://ru.wikipedia.org/wiki/{{{1}}} {{{2}}}], а ефект він матиме такий як інтервікі-посилання {{Вікіпедія|Назва_Статті|текст для відображення}}.

Важливо. Пробіли в назвех статей повинні бути замінені на “_” (знак підкреслення).

Встановлення Вікі Сімейства
Зауваження: Досвідчені користувачі Mysql можуть використовувати наступну просту команду: INSERT INTO interwiki SET iw_prefix = '(ім'я вікі-проекту)', iw_url = 'http:// (URL цього проекту) / $ 1', iw_local = 1, iw_trans = 0; - замість того, щоб експортувати і потім повторно імпортувати вміст всієї таблиці інтервікі-посилань ...
(А досвідчені користувачі PostgreSQL використовують для цього ж команду INSERT INTO interwiki (iw_prefix, iw_url, iw_local, iw_trans) VALUES ('w', 'w: en: $ 1', 1, 0) ;)

    Експортуйте таблицю бази даних 'interwiki', потім додайте в кінець таблиці наступний приклад для kayakwiki ...
    ('Kayakwiki', 'http://en.kayakwiki.org/index.php/ $ 1', 1, 0);

        Зауваження: як показано в наведеному вище коді, роздільник ';' ПОВИНЕН бути в кінці таблиці. В кінці будь-який інший рядки цієї таблиці роздільником повинен бути ЛИШЕ символ ','.

    Імпортуйте таблицю 'interwiki'
    Протестуйте результат: Перейдіть на ваш сайт і створіть сторінку, в якій буде наступний зміст ...
    [[Kayakwiki: Places |]] повинна відобразитися як посилання на сторінку 'Places' на сайті KayakWiki.org (URL - http://en.kayakwiki.org/index.php/Places)

Оскільки у версії 1.9 і більш ранніх список інтервікі, що поставляється за замовчуванням, не включає Вікіпедію, ви можете додати її самостійно (а також інші проекти, які буде потрібно).

У таблиці бази даних interwiki є наступні поля:

    iw_prefix: виберіть префікс, який буде використаний як інтервікі-посилання, наприклад, "wikipedia" для перенаправлення на Вікіпедію.

        Зауваження: Префікси повинні бути написані малими літерами.

    iw_url: введіть адресу проекту, наприклад, http://ru.wikipedia.org/wiki/ $ 1 для Вікіпедії. Не забувайте, що $ 1 замінюється назвою статті, на яку ви посилаєтесь ([[Wikipedia: Головна сторінка]] перенаправляє на http://ru.wikipedia.org/wiki/Заглавная_страница).

        Зауваження: Якщо iw_url - це двійкове поле BLOB (в SVN-версії, але також зустрічається і у версії 1.11.0), то напряму не буде працювати. Вам доведеться вводити адресу в двійковому вигляді. Є два можливі рішення: 1. Збережіть адресу в текстовий файл, а потім імпортуйте його через PhpMyAdmin. 2. Ви можете безпосередньо ввести SQL-запит.

    iw_local: якщо 1, то вікі буде перенаправляти навіть зовнішні посилання виду iw_prefix: title, не тільки з власних сторінок. Потрібно, якщо ви хочете використовувати перенаправлення за меж вашої вікі або інших вікі, щоб створити вкладені міжвікі-посилання (зразок, w: en: fr: Accueil).
    iw_trans: «включення міжвікі» - вкажіть 1, якщо ви хочете використовувати сторінки з інших вікі в якості шаблонів. Також вам треба буде вказати $ wgEnableScaryTranscluding = true, у файлі LocalSettings.php

Tools.svg 'Порада для адміністраторів вікі: У MediaWiki.org деякі довідкові сторінки перенаправляють на простір імен Manual. Щоб зробити такі посилання на локальній вікі, додайте інтервікі-посилання з параметрами iw_prefix = manual та iw_url = http://www.mediawiki.org/wiki/Manual: $ 1
Інтервікі посилання на інші мови

Якщо у вас встановлено вікі-сімейство, ви можете пов'язати статтю з англійською розділу, з статтею з німецького розділу (якщо у вас є німецький проект). Ви можете налаштувати MediaWiki, щоб були відображені на них посилання в бічній панелі, трохи нижче панелі інструментів.

У вашій файловій системі є підпапка установки MediaWiki, звана "languages". Перейдіть в неї, там ви побачите файл "Names.php" містить список відомих мов і їх префіксів. Наприклад, ви можете додати свій німецький проект, знайшовши у файлі "Names.php" слову "Deutsch" і запам'ятавши префікс "de".

Якщо ви знаєте "правильний" префікс, то відредагуйте вашу базу даних додавши новий рядок в таблиці interwiki:

    iw_prefix: префікс мови (наприклад, "de" для німецької мови), зазначений у файлі "Names.php"
    iw_url: адреса вашого вікі-проекту (eg http://de.your-wiki.org/index.php/ $ 1)
    iw_local: те ж, що в розділі "Додавання нового веб-сайту"
    iw_trans: те ж, що в розділі "Додавання нового веб-сайту"

Тепер, ви можете пов'язати статтю з іншими мовними розділами. Додавання [[de: Hauptseite]] на вашу заголовну сторінку англійського розділу, створить посилання "Deutsch" нижче панелі інструментів, вказуючи на заголовну сторінку німецького розділу (Hauptseite).

Зверніть увагу, що це посилання відображається тільки в бічній панелі, але не в тексті статті. Якщо ви хочете створити посилання всередині тексту, ви повинні додати двокрапку до префікса: [[: de: Hauptseite]].

Першоджерело російською www.mediawiki.org/wiki/Manual:Interwiki/ru