Jump to content

Глобальные шаблоны: предлагаемая спецификация

From mediawiki.org
This page is a translated version of the page Global templates/Proposed specification and the translation is 100% complete.

Это — предложение функциональных требований для глобальных шаблонов и модулей.

Есть также краткое описание этого предложения длиной в одну страницу.

Это не проект, который выполняется сейчас, или планируется к выполнению в определенное время, по крайней мере, на настоящий момент. Это только идея, хотя и довольно подробно описанная.

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

Этот документ не пытается углубиться в подробности технической имплементации в смысле хранения, кеширования, доставки, дизайн кода на PHP, и т. д. Он пытается только определить требования того, как эта возможность будет работать с точки зрения пользователей:

  1. Людей, создающих и поддерживающих шаблоны и модули.
  2. Людей, создающих и правящих страницы, которые содержат шаблоны и модули. Это включает всех редакторов и все виды страниц:
    • Все уровни опыта: от полных новичков до тех, кто сделал тысячи правок
    • Все виды инструментов редактирования: редактирование вики-текста, Визуальный редактор, Перевод содержания и другие (даже ботоводы)
    • Все вики: Википедия, Викисловарь, Викигид, Викиданные, Инкубатор и т. д., и любые новые будущие проекты
    • Все языки: английский, французский, русский, испанский, армянский, персидский, зулу, манипури и др.
    • Все виды страниц: статьи Википедии, страницы обсуждения статей, страницы обсуждения пользователей, страницы обсуждения сообщества, страницы Вики-проектов, категории, страницы документации шаблонов и т. д. {{🌎🌍🌏}}

«Речь для лифта»

Значительная часть функций сайтов Викимедиа реализована в шаблонах и модулях Lua. В их нынешней форме они не могут быть общими для разных вики-сайтов и языков. Из-за этого их трудно интегрировать с современными способами создания и редактирования статей, таких как Визуальный редактор, Викиданные и Перевод содержания. Кроме того, их тяжело адаптировать к мобильным устройствам. Это приводит к трате усилий авторов и трудностям для новых редакторов и небольших проектов. Надо сделать возможным делиться ими между вики-сайтами, так как это делается с изображениями на Викискладе. Это сделает разработку программного обеспечения более быстрой и надёжной и позволит редакторам лучше сосредоточиться на написании текста. {{🌎🌍🌏}}

Проблема

Общее замечание: если не сказано иначе, все упоминания «шаблонов» относятся также к модулям Scribunto на языке Lua.

Шаблоны реализуют функции сайтов Викимедиа. Некоторые из этих функций очень заметны, особенно карточки, сноски, «источник?» и многие другие. Более подробный список примеров функций, написанных шаблонами, можно найти на странице «Таксономия ». Все читатели видят их, и все редакторы сталкиваются с ними почти в каждой правке. Кроме того, они реализуют многие из функций внутреннего управления сообществами сайтов: запросы на удаление, запросы на разблокировку, выражение согласия в обсуждениях, сортировку статей для вики-проектов, и т. д.

Шаблоны предоставляют эффективный механизм для быстрого проектирования, развёртывания и использования повторяющихся фрагментов текста и разметки на многих страницах. Тем не менее, шаблоны также имеют несколько острых проблем с удобством использования для всех видов участников.

Трудности для всех участников всех вики-сайтов

Редактирующие вики-текстом

Шаблоны часто трудно понять участникам, редактирующим вики-текстом. Люди, имеющие опыт использования определённого шаблона вероятно узнают его и смогут отредактировать включающую его страницу. Однако не знакомые с шаблоном редакторы должны будут искать его документацию когда они столкнутся с ним, даже если у них есть опыт работы с другими шаблонами. Неопытные же редакторы будут озадачены загадочным текстом с фигурными скобками, вертикальными че́ртами, знаками равенства и т. д.

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

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

Редактирующие визуальным редактором

У пользователей Визуального редактора есть некоторые преимущества в использовании шаблонов, однако и там с ними связано много сложностей. В частности, существует аналогичная проблема с возможностью обнаружения («discoverability»): в Визуальном редакторе все функции шаблонов скрыты за пунктом меню «Вставить → Шаблон», и пользователь должен знать название шаблона перед его использованием.

В меню «Вставить» визуального редактора есть элементы для математических формул, египетских иероглифов, музыкальных нот и некоторых других функций, реализованных в расширениях, но в нём нет таких элементов, как «Карточка», «Источник?», «Конвертирование единиц», «Цитата» и т. д. Все шаблоны — один и тот же обобщённый элемент.

Есть одно заметное исключение: в некоторых вики есть кнопка «Источник», вставляющая сноски со шаблонами источников. Однако это исключение, которое подтверждает правило. Эта кнопка требует ручной настройки даже для простейших функций, настройка эта является отдельной в каждом вики-сайте, и, как следствие, во многих вики этой кнопки нет вообще. Другое сопоставимое исключение, добавленное в конце 2019 года, — специальная поддержка шаблонов «Источник?» (Citation needed), но и этой функции требуются некоторые настройки в каждом вики-сайте, для того чтобы она действительно работала.

Трудности для участников, пишущих в нескольких вики

Многие шаблоны существуют в одном проекте, но не в других, и часто шаблон доступен, но в другой форме. Из-за этого трудно или невозможно повторно использовать навыки, приобретённые в одном проекте: функциональность, предоставляемая шаблоном, иногда недоступна, а иногда работает по-другому. Это относится не только к вики-сайтам на разных языках, но и к разным сайтам на одном языке, например, к Русской Википедии и Русской Викитеке.

Для людей, редактирующих на разных языках, шаблоны усложняют перевод. При переводе страницы шаблоны гораздо сложнее обрабатывать, чем текст статьи («прозу»), независимо от того, выполняется ли перевод вручную или с помощью Перевода содержания (Content Translation). Пользователи часто должны пропускать шаблон или исправлять его после публикации статьи. Это также приводит к забрасыванию уже начатого перевода, потому что перевод шаблона буквально отпугивает многих участников.

Наиболее часто сообщаемые проблемы в Переводе содержания связаны с шаблонами.

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

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

Шаблон можно экспортировать из одного вики-сайта в другой, но после этого шаблон становится раздвоенной копией (forked). Он либо остаётся в том состоянии, в котором он был экспортирован, либо продолжает разрабатываться отдельно, что приводит к несовместимости. Иногда люди продолжают поддерживать разные копии, но это ненадёжно и не может масштабироваться для сотен вики, которые у нас есть.

Параметры шаблона могут иметь одинаковую функциональность, но разные названия в разных вики-сайтах. Их можно адаптировать, используя псевдонимы (aliases) TemplateData, но это неоптимальный «хак»: это не то, для чего изначально было создано расширение TemplateData, и это нужно делать вручную для каждой пары языков.

Шаблоны объединяют алгоритмическую логику, текстовые строки, понятные человеку, и форматирование. Из-за этого нет надёжного способа переводить строки пользовательского интерфейса шаблонов так, как это делается с ядром MediaWiki и расширениями.

Трудности для участников меньших вики-сайтов

Новый вики-сайт создаётся путём установки ядра MediaWiki и включения набора расширений по умолчанию. На практике это не создаёт «ровного игрового поля», потому что именно в шаблонах реализовано множество ключевых функций больших вики: карточки, сноски, служебные пометки (таких, как {{Нет ссылок}}) и т. д.

Трудности для разработчиков программного обеспечения

Разработчикам ядра, расширений, ботов и других инструментов MediaWiki, которые анализируют, генерируют или изменяют содержимое вики-страниц, сложно создавать функции, которые зависят от наличия в вики определённых шаблонов. Разработчики расширений, таких как GrowthExperiments, PageTriage, ContentTranslation, некоторых компонентов Wikibase и многих других, должны либо тестировать их в рабочей среде, что не очень хорошо, либо импортировать шаблоны в свои локальные вики для разработки или тестовые вики в сети.

Исследователи, получающие данные о содержании вики на основе шаблонов, должны писать свой код для анализа каждого вики-сайта отдельно, и иногда они работают только над одним вики-сайтом. Ярким примером является использование шаблонов вики-проектов Английской Википедии для анализа тем страниц и оценки качества статей. {{🌎🌍🌏}}

Предположения

Расширения и шаблоны: сходства и различия

Одно из основных предположений этого предложения заключается в том, что шаблоны и модули очень похожи на ядро и расширения MediaWiki: они являются программными средствами и реализуют функции, необходимые сообществу редакторов. В частности, поскольку шаблоны обычно разрабатываются самими редакторами, очевидно, что они действительно необходимы сообществу редакторов. Основные различия между ними заключаются в том, как они разрабатываются, локализуются и разворачиваются.

Шаблоны и модули должны стать похожими на расширения в некоторых ключевых свойствах, которых им не хватает в настоящее время, и сохранить некоторые хорошие свойства, которых нет в расширениях.

Свойство Ядро и расширения Шаблоны Что стоит сделать насчёт этого с шаблонами?
Реализуют особые виды содержания Да.

изображения, математические формулы, иероглифы, ноты, простые сноски

Да.

Chess diagram

└ Особые виды содержания легко вставлять в страницы Да (панелью инструментов). Нет (если вы не научились). Надо изменить.
└ Особые виды содержания легко использовать на мобильных устройствах В основном да. Иногда. Надо изменить.
└ Особые виды содержания легко переводить как часть статьи В основном да. Нет. Надо изменить.
Реализуют функции оформления страницы Да.

gallery, poem

Да.

Image array, Columns, Quote, Navbox, Infobox

Реализуют рабочие процессы сообщества Да.

Фильтр правок, Проверка участника («чек юзер»), переименование страницы

Да.

Admincheck, Proposed deletion

Их должно быть легко использовать в новом месте, но это не должно быть обязательным.
Легко развернуть первую версию Нет. Да. Надо сохранить.
Легко развернуть изменения Нет. Да. Надо сохранить.
Легко локализировать (переводить) Да. Нет. Надо изменить.
Может быть полезно на нескольких вики-сайтах Часто. Часто.
Используется только на нескольких вики-сайтах Иногда.

Josa, TocTree

Иногда.

New Zealand English, Units attention

Легко установить и использовать на нескольких вики-сайтах Да. Нет. Надо изменить.
Легко использовать на новом, недавно созданном вики-сайте Да. Нет. Надо изменить.

Навыки разработки шаблонов и модулей

Есть и ещё один важный набор предположений, на которых основано это предложение:

  • Навыки разработки шаблонов и модулей нетривиальны. И шаблоны, и модули имеют много неясных функций.
  • Хотя многие из наиболее заметных функций сайтов реализованы в виде шаблонов и модулей, люди часто не замечают и недооценивают эти навыки и принимают их как должное.
  • Есть десятки людей, которые имеют эти навыки, и они редактируют много вики-сайтов. Они обычно сосредатачиваются на своём домашнем вики-сайте и относительно редко общаются с участниками из других вики или других языков. Несмотря на то, что базовая технология везде одинакова, не существует настоящего глобального сообщества разработчиков шаблонов, которое было бы сопоставимо с глобальным сообществом разработчиков ядра и расширений MediaWiki. Существуют случаи совместной работы в нескольких вики-сайтах на определённых шаблонах, но это непостоянно и нестандартизованно.
  • Есть также много вики, в которых вообще нет редакторов, обладающих этими навыками. Они либо копируют шаблоны и модули из других вики, не полностью понимая, как они работают, и не имея возможности эффективно их локализовывать и поддерживать, либо не используют шаблоны вообще.

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

И, конечно же, любое решение этих проблем не должно предлагать новые технологии, которые заставят отказаться от многолетнего практического опыта, приобретённого разработчиками шаблонов. Следовательно, должно быть как можно меньше изменений в синтаксисе для разработки шаблонов и модулей. Вещи, которые необходимо изменить, — это способ их развёртывания и распространения в вики-сайтах, а также способ локализации (перевода) понятных для человека строк в них. {{🌎🌍🌏}}

Предлагаемое решение: Вкратце

Уже сейчас есть много функций MediaWiki, которые являются глобальными для всех вики-сайтов:

Должно быть также возможно хранить шаблоны и модули в глобальном хранилище и локализовать их так же просто и надёжно, как это делается с расширениями.

Глобальные шаблоны и модули дадут бо́льшие возможности разработчикам шаблонов во всех вики, позволяя им легче сотрудничать при разработке кода шаблонов.

Глобальные шаблоны и модули дадут бо́льшие возможности переводчикам и локализаторам и позволят им сосредоточиться на переводе строк пользовательского интерфейса («сообщений»), без необходимости искать строки в коде и позволят им использовать одинаковые навыки и инструменты для перевода шаблонов и для расширений MediaWiki.

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

Синтаксис для разработки шаблонов и модулей, а также общий цикл обслуживания и развёртывания шаблонов не изменится, поэтому все навыки, приобретённые специалистами по обслуживанию шаблонов за эти годы, останутся актуальными.

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

Локализация шаблонов будет так же удобна, как и локализация расширений MediaWiki. {{🌎🌍🌏}}

Предлагаемое решение: Подробные требования

У шаблонов должна быть возможность быть семантическими и глобальными

Семантические означает, что другие программные компоненты, особенно Визуальный редактор и Перевод содержания, должны иметь обобщённый способ понять, что шаблон существует и что он обеспечивает определённые возможности, чтобы можно было вставить его в страницу как карточку, цитату, сообщение в начале статьи и т. д., а не только как просто шаблон. В настоящее время самое близкое что существует к семантическому описанию шаблонов — TemplateData, но эта технология описывает только параметры шаблона. Например, она не помогает визуальному редактору добавить кнопку «Вставить карточку» на панель инструментов.

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

Как сделать шаблоны семантическими

Шаблоны никогда не были как следует семантическими, в том смысле, что с ними легко обращаться программам, которые обрабатывают страницы.

Есть лишь несколько примеров шаблонов, которые были сделаны семантическими:

  • Различные шаблоны для сносок, которые можно использовать из кнопки «Источник» на панели инструментов Визуального редактора. Они требуют написания большого количества отдельного кода для настройки Citoid на каждом желающем использовать их вики-сайте.
  • Шаблон «Источник?» («citation needed»), которые был адаптирован для Визуального редактора в конце 2019 года. Также требует настройки в каждом вики-сайте (задача T211243). Например: английский, иврит, словенский. На момент написания этой страницы, французский, испанский и большинство других языков не настроены для этого, хотя у них есть такие шаблоны.
  • Шаблоны для упоминания пользователей в расширении Flow, также требующие локальной конфигурации.
  • Некоторые инструменты для обработки дампов и исследований могут анализировать шаблоны оценки страниц вики-проектов Английской Википедии, которые обычно добавляются на страницы обсуждения.
  • Расширение GrowthExperiments предлагает редакторам выполнять определённые задания в статьях на основе включённых в них шаблонов. Названия шаблонов должны быть написаны вручную в JSON-файлах отдельно в каждом вики-сайте. Например: чешский, вьетнамский, корейский, арабский.
  • Расширение PageTriage настроено для работы с шаблонами предупреждений в верхней части статей Английской Википедии (также известными как «tags» и «hatnotes»).

В случае PageTriage расширение по существу жёстко кодирует шаблоны одного вики-сайта, что делает его непригодным для использования в других сайтах без существенного переписывания. Даже если требуется лишь небольшой шаг конфигурации на вики, как в примере с Flow, это всё же необходимо сделать. Это не очень хорошо для 900 вики-сайтов, которые есть у Викимедиа, и тысяч, которые будут в будущем.

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

Хранение и доставка

Глобальные шаблоны и модули могут храниться в центральном вики-сайте (Мета, Викисклад или целый новый сайт), и это может быть даже Gerrit или другой репозиторий.

Наилучшим решением, вероятно, является создание нового вики-сайта, в котором они будут храниться, не смешиваясь с изображениями, общими обсуждениями сообщества и т. д.

Использование Gerrit в качестве хранилища для шаблонов и модулей кода технически возможно, но это может привести к потере важного элемента доступности для разработчиков шаблонов: редактирование шаблона на вики-странице гораздо проще и знакомо подавляющему большинству разработчиков шаблонов, чем выполнение коммитов в Git и ожидания пересмотра кода. Следовательно, Gerrit, вероятно, не должен стать способом хранения шаблона и кода модуля, по крайней мере, не основным.

Глобальные шаблоны и модули должны храниться в общем хранилище, которое может будет редактироваться большинством вики-редакторов. Правила о блокировках и специальных разрешениях изначально должны быть аналогичны правилам в других вики: всё должно быть открыто по умолчанию, и должна быть возможность защитить очень распространённые, чувствительные или часто вандализируемые шаблоны. Более подробные правила об уровнях защиты могут быть разработаны сообществом редакторов позже.

Код шаблонов в центральном хранилище будет использовать общие английские название тегов типа <section>, функций типа {{#ifexist}} или {{#invoke}} и волшебных слов типа {{DISPLAYTITLE}}.

Каким образом шаблоны доставляются в целевые вики — вопрос внутренней инженерии и архитектуры, если учтены другие требования. Эти вопросы обсуждались в прошлом некоторыми разработчиками платформы, например, в рамках проекта Shadow namespaces. Этот документ пытается ответить на связанные вопросы о том, как это работает с точки зрения пользователя, который редактирует страницу, использующую шаблон, или разработчика самого шаблона — как написать его так, чтобы его можно было эффективно локализировать; как он переводится; как это подгоняется под нужды каждого сообщества; и т. д. Эти вопросы не были в достаточной степени рассмотрены в предыдущих архитектурных дискуссиях на эту тему.

Шаблоны должны оставаться легко модифицируемыми

Важной особенностью работы шаблонов в настоящее время является то, что они редактируются так же, как вики-страницы, и становятся функциональными сразу после публикации, без проверки другими участниками и без развёртывания. Это несколько опасно, потому что плохая правка может испортить много страниц, но на практике это работает в основном хорошо.

Эта лёгкость должна быть сохранена. Члены сообщества, которые разрабатывают шаблоны, скорее всего, откажутся от перехода на новую систему, требующую от них обучения новым навыкам и протаскивания каждого изменения через утомительные этапы проверки и развёртывания. Это, вероятно, значит, что хранение шаблонов в Gerrit не сможет хорошо работать, если процесс проверки и развёртывания не будет намного проще, чем для расширений.

Должно быть возможно сделать некоторые шаблоны неглобальными

Не все шаблоны надо делать глобальными.

Фактически, некоторые шаблоны должны быть локальными, потому что они реализуют функциональность, которая уникальна для определённого языка. По своей природе такие шаблоны не нужно переводить, и должен быть способ дать подсказку как редакторам-людям, так и инструментам перевода (таким как Перевод содержания), что они не нуждаются в адаптации и могут быть пропущены или подстановлены («subst»). Это часть усилий сделать шаблоны более семантическими.

Должна быть возможность переопределить некоторые функции или внешний вид глобального шаблона

Ни одно сообщество не должно чувствовать, что некий сильный внешний игрок, например сообщество Английской Википедии, сообщество Викиданных, Фонд Викимедиа, или кто-либо ещё навязывает ему какую-либо функциональность. Глобальные шаблоны должны разрабатываться и использоваться совместно для общего блага. Большую часть времени это должно работать для всех.

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

Глобальный шаблон должно быть возможно сразу использовать во всех вики

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

Это не должно требовать никаких дополнительных шагов, например копирования вики-страниц, создания шаблонов-оболочек с локальным именем, вмешательства администратора, ожидания в течение нескольких часов для обновления кэшей и т. д.

После обновления центральной версии обновлённая версия будет немедленно показана везде. Чтобы предотвратить вандализм, сообщество редакторов разработает правила по разрешениям и уровням защиты.

Если строки (также известные, как «сообщения») пользовательского интерфейса не были переведены, шаблон всё равно будет пригоден для использования, и строки будут отображаться на резервном языке. Смотрите разделы по локализации для более подробной информации.

Локализация пользовательских строк

Должна быть возможность перевести все строки, обращённые к пользователю

Строки пользовательского интерфейса (сообщения) ядра MediaWiki, расширений и некоторых внешних инструментов, таких как Pageviews, удобно и надёжно переводятся на translatewiki.net. Этот процесс локализации знаком по крайней мере некоторым редакторам на всех языках.

В настоящее время невозможно делать то же самое с шаблонами. На многоязычных сайтах, таких как Викисклад и mediawiki.org, есть система «TNT» для перевода некоторых шаблонов, но она очень сложна и не может быть использована для Википедии, Викитеки и т. д. В 2021 году это стало возможным благодаря «раскрытию (трансклюзии) шаблонов с учётом перевода» (language-aware transclusion), но требуются дополнительные усовершенствования.

В идеале, должна быть возможность переводить шаблоны так же, как ядро и расширения, используя вики с расширением Translate.

Переведённая строка должна стать пригодной для использования сразу после отправки перевода с использованием интерфейса Translate.

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

Переводчики должны быть в состоянии сосредоточиться на переводе текста. Видя какой-либо код вокруг него, людям, не имеющим опыта с программированием и JSON-файлами, будет трудно вносить свой вклад. Кроме того, редактирование переводов на языки, написанные справа налево в текстовых файлах, крайне неудобно. Расширение Translate уже решает все эти проблемы.

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

Язык, на котором строки показываются пользователю

Шаблоны в основном используются как часть содержания страниц, поэтому по умолчанию переведенные сообщения должны отображаться на языке вики.

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

Обычные цепочки резервных языков MediaWiki должны использоваться, когда перевод недоступен. Например, если сообщение не переведено на кечуа или гуарани, оно будет отображаться по-испански, если оно не переведено на башкирский или чувашский языки, оно будет отображаться по-русски и т. д. Конечный резервный язык — английский, поэтому, если это сообщение не переведено на испанский или русский, оно будет отображаться на английском языке.

Ключи сообщений

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

Написание переводимых строк, вероятно, станет самым большим изменением в процессе разработки шаблонов, к которому должны будут привыкнуть разработчики шаблонов. Жёстко кодированные строки должны быть разделены и перемещены в сообщения, организованные по ключам. Этот процесс должен стать как можно более простым не только для переводчиков, но и для разработчиков шаблонов. В противном случае они не будут на самом деле заниматься этим, и эта функция будет фактически отклонена.

Чтобы легко сделать ключи глобально уникальными, возможно автоматически включить название глобального шаблона в ключ сообщения.

Инструменты для переноса

Стоит разработать инструмент, который поможет переносить шаблон или модуль в центральное хранилище. Он сможет сделать следующие шаги:

  1. Экспортировать шаблон из локального вики-сайта и импортировать его в глобальный вики-сайт.
  2. Экспортировать все шаблоны, которые используются этим шаблоном (каскадно).
  3. Определить строки на человеческом языке, преобразовать их в список с ключами и замените их ключами в исходном коде шаблона.
  4. Импортировать страницу документации шаблона и TemplateData.
  5. Импортировать нужные страницы CSS.

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

Организация сообщений

Расширение Translate организует сообщения по группам, также известным как «проекты», которые могут быть далее объединены по агрегатным группам. Например, Article Placeholder, Score и Poem — все группы, которые представляют соответствующие расширения MediaWiki, и все они включены в агрегатную группу «Extensions used by Wikimedia - Advanced», наряду со многими другими расширениями.

Проекты, которые представляют расширения MediaWiki, настраиваются в файлах YAML в репозитории translatewiki и отображаются в пользовательском интерфейсе Translate в селекторе проектов, также известном как «селектор группы сообщений».

Поскольку шаблонов гораздо больше, чем расширений, могут потребоваться некоторые изменения в том, как расширение Translate обрабатывает группы сообщений, чтобы приспособить его к переводу шаблонов.

Каждый шаблон должен быть группой сообщений. Тесно связанные шаблоны должны быть сгруппированы в агрегатную группу сообщений. Они могут быть похожи на категории, в которых они хранятся, и фактически категории могут даже использоваться для этого. Редактирование файлов в репозитории Git для организации этих групп сообщений, вероятно, нежелательно, потому что это будет слишком сложно и медленно.

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

Шаблоны должны отображаться в виде групп сообщений на специальной странице языковой статистики расширения Translate (Special:LanguageStats). Это поможет локализаторам найти, какие шаблоны нуждаются в переводе. Это должно быть в целом аналогично всем группам сообщений, но есть некоторые особые соображения для шаблонов:

  • Будет несколько тысяч шаблонов, поэтому было бы хорошо, если бы дизайн таблицы как-то соответствовал этому.
  • В таблице должно быть показано, на скольких страницах каждый шаблон используется, и должно быть возможно упорядочить строки по этому числу, чтобы помочь локализаторам выбрать, что важнее перевести.

Как найти, где переводится шаблон

На каждой странице описания шаблона должна быть прямая ссылка на перевод на язык пользователя.

Некоторые шаблоны используют названия (label) из Викиданных как часть своего интерфейса вместо жёстко кодируемых строк. В настоящее время это делается в Infobox Wikidata на Викискладе, Persona Infotaula (универсальная биографическая карточка) в Каталанской Википедии и в нескольких других шаблонах. Эти названия и значения могут быть локализованы в самих Викиданных. Такое использование не может покрыть все потребности локализации шаблонов, но оно является разумным и полезным, и соответствует для определённых целей. Если это внятно описано в документации шаблона, это можно продолжать использовать, и, вероятно, не требует специальной адаптации инфраструктуры. (Возможно, перевод соответствующих меток и значений может быть каким-то образом интегрирован в интерфейс Translate для локализации шаблона, но это необязательно.)

Параметры сообщений и волшебные слова

В ядре MediaWiki и расширениях многие сообщения имеют параметры, иногда также известные как «placeholders». Они называются $1, $2 и т. д., и они заполняются во время выполнения программы. Параметры особенно важны для того, чтобы было возможно правильно переводить сообщения, учитывая то, что в разных языках разный порядок слов.

Нечто подобное необходимо и в шаблонах, хотя, возможно, они будут выглядеть не как $1, $2, а как шаблоноподобные параметры с тройными фигурными скобками ({{{}}}). Это должно быть решено в соответствии с соображениями удобства разбора (синтаксического анализа, «парсинга») и локализации.

Волшебные слова PLURAL, GENDER и GRAMMAR должны поддерживаться в сообщениях шаблонов, как в сообщениях MediaWiki.

Документация сообщений

В ядре MediaWiki и расширениях каждое переводимое сообщение документируется для удобства разработчиков и переводчиков. Документация может включать информацию о том, где сообщение показывается, что содержат параметры $1, $2 и т. д., является ли слово глаголом или прилагательным и т. д. Эта документация хранится как псевдо-язык с кодом qqq.

Такая документация будет полезна и для перевода шаблонов. Как она будет храниться — вопрос технической архитектуры. Возможно, её можно комбинировать с TemplateData, возможно, она может храниться как язык qqq, и, возможно, это может делаться как-нибудь ещё.

Исходный язык

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

Отметка устаревших сообщений (Fuzzying)

В ядре MediaWiki и расширениях и на переводимых страницах, если исходное сообщение на английском языке изменяется, сообщение автоматически помечается как устаревшее или «fuzzy». Существующие переводы продолжают работать, но показываются переводчикам как «устаревшие» и нуждающиеся в обновлении. (Администратор перевода также может пометить сообщение как не нуждающееся в такой пометке.)

Схожий механизм будет необходим для локализации шаблонов. Однако, поскольку было бы неплохо использовать не только английский в качестве исходного языка, должно быть больше способов пометить сообщения как устаревшие.

Особенности локализации модулей

Модули на Lua могут загружать и анализировать переводимые строки MediaWiki, но не существует определённого способа хранения этих строк для модулей Lua, которые хранятся как вики-страницы. Можно паковать модули Lua как части расширений, и тогда они смогут загружать сообщения из файлов i18/*.json, но в настоящее время это делается в очень немногих расширениях. Переписывание шаблонов в Lua может быть более надёжным решением с инженерной точки зрения, но Lua не обязательно будет принят всеми нынешними разработчиками шаблонов, а их сотрудничество будет иметь решающее значение для успеха проекта, поэтому это нельзя сделать со всеми шаблонами.

Некоторые очень внутренние, технические модули, которые часто используются, редко меняются и не требуют интернационализации, могут быть безболезненно перенесены в само расширение Scribunto. Вот некоторые примеры: No globals и Arguments.

Локализация названия шаблона

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

Глобальные шаблоны и модули должны быть сразу используемы во всех вики без каких-либо дополнительных шагов, поэтому должна быть возможность включить глобальный шаблон в локальную вики-страницу, используя её глобальное название. Сообщество редакторов в разных вики должно решить, по каким правилам будут даваться эти глобальные названия.

Подобно названиям параметров, шаблоны тоже могут иметь разные названия на разных языках, и эту возможность необходимо сохранить. Должен быть структурированный способ перевода названий шаблонов. Возможно, ссылки на сайты (sitelinks) через Wikidata могут сыграть роль в этом, но не обязательно.

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

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

Если локальный шаблон существует в вики и имеет то же название, что и локализованное имя глобального шаблона, будет использоваться локальный шаблон. Это похоже на то, как локальные файлы с одинаковыми именами переопределяют глобальные файлы в Викискладе, и как локальные сообщения в пространстве MediaWiki переопределяют локализацию, исходящую из кода.

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

Локализация параметров

Локализация названий параметров

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

В идеале, глобальный шаблон должен иметь обобщённые внутренние названия параметров, имеющие переводы на разные языки. Это несколько похоже на названия свойств Викиданных, но может быть проще: поскольку английский язык является «лингва франка» для разработчиков программного обеспечения, а шаблоны являются своего рода программным обеспечением, вероятно, возможно использовать английский в качестве исходного языка по умолчанию, а не обобщённые числа, как в Викиданных.

Эти обобщённые названия параметров будут общими названиями по умолчанию. Они будут работать в вики-сайтах на всех языках. Локализованные имена будут работать в вики-сайтах, у которых этот язык является языком содержания.

Эти переводы названий параметров должны проверяться:

  • Они не должны содержать недопустимые символы
  • они не должны повторяться в одном шаблоне на одном языке
  • Что-нибудь ещё?

Процесс перевода названий параметров может отличаться от перевода строк пользовательского интерфейса. Эти названия имеют технические ограничения, которые надо соблюдать. Кроме того, они должны оставаться стабильными, потому что изменение названия параметра нарушит существующие включения, поэтому против этого должны быть некоторые меры предосторожности, чтобы они не менялись слишком часто.

Автоматический перевод параметров

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

Ввод:

{
	sourcewiki: "enwiki",
	targetwiki: "frwiki",
	template: "{{Infobox writer|name=Ľudovít Štúr|birth_date=1815-10-28}}"
}

Вывод:

{
	template: "{{Infobox Écrivain|nom=Ľudovít Štúr|date de naissance=1815-10-28}}"
}

В Переводе содержания это будет основным способом адаптации шаблонов. В отличие от нынешнего способа адаптации шаблона в Переводе содержания, это будет точным и полным, а не основанным на догадках.

При визуальном редактировании и при редактировании в Новом режиме вики-текста («2017»), простое копирование и вставка шаблона из вики на другом языке автоматически выполнит перевод параметров.

Для простого редактирования вики-текста должен существовать простой способ пользоваться этим сервисом, например, специальная страница или диалоговое окно, в которое редактор может вставить шаблон и исходный язык и получить шаблон с переведёнными параметрами.

В обоих случаях будут переведены только названия шаблона и параметров. Перевод значений параметров обсуждается отдельно.

Безымянные параметры

Безымянные нумерованные параметры, конечно, должны продолжить работать.

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

Перевод значений параметров

Вдобавок к совместному использованию функциональности и дизайна шаблонов, необходимо подумать о том, как позволить вики-сайтам делиться значениями параметров, а также не делиться ими.

Некоторые значения параметров одинаковы во всех языках по своей сущности. Например, произношение в МФА названия места на местном языке (например, [dɛn ˈɦaːx] для Гааги), год основания города, химическая формула соединения, и т. д. По крайней мере, некоторые из них, вероятно, должны храниться в Викиданных и легко загружаться в шаблон.

Некоторые значения параметров должны быть переведены или транслитерированы, например, имена людей, переводы девизов стран и т. д.

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

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

Допустимые и функционирующие значения параметров должны быть используемы на нескольких языках и не должны зависеть от языка. Например, использование «yes» и «no» в качестве логических значений слишком ориентировано на английский язык. Вероятно, это не должно требовать изменений в инфраструктуре, а в основном соглашения в сообществе разработчиков шаблонов для разных вики о хороших практиках адаптации ко многим языкам.

Направление текста

Шаблоны должны адаптироваться к направлению текста (слева направо / справа налево) языка вики—сайта, в котором они отображаются.

Должно быть удобно писать шаблон так, что направление будет нейтральным, с как можно меньшим количеством явного выравнивания вправо и влево.

Боты

Многие шаблоны во многих вики регулярно редактируются ботами. Эта возможность должна быть сохранена.

Для этого, видимо, не понадобится менять что-либо в программной инфраструктуре, но это упоминается здесь для полноты, потому что это важный вид использования шаблонов.

Перенос шаблонов из крупных вики-сайтов в центральное хранилище

Самый популярный исходный язык в перевода в Переводе содержания — английский, с большим отрывом. За ним следуют испанский, русский, французский, немецкий, каталанский, украинский, итальянский, китайский и португальский. Учитывая это, ясно что часто используемые шаблоны в Википедиях на этих наиболее распространённых языках, особенно на английском, являются теми, что наиболее важно сделать глобальными в пользу всех других языков.

Однако, как это ни парадоксально, редакторы на этих крупнейших языках менее всего заинтересованы в том, чтобы делать их глобальными:

  • Шаблоны уже хорошо работают для них, и большинство людей не заботятся об удобстве перевода на другие языки.
  • Переработка шаблонов так, чтобы можно было переводить их строки может занять много времени и вынудить их осваивать некоторые новые навыки разработки шаблонов.
  • Внезапное начало использования шаблонов во многих других проектах может затруднить достижение согласия относительно внесения будущих изменений в работу шаблонов.
  • Редакторы из разных крупных вики должны будут работать над достижением согласия относительно объединения некоторых шаблонов со схожими функциями, и уже существующими на их сайтах.

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

Пока существуют важные распространённые шаблоны, которые не являются глобальными, Перевод содержания и другое программное опеспечение, как-либо обрабатывающее шаблоны с разных вики, будет поддерживать их. Если инфраструктура для глобальных шаблонов создана, и перенос существующих шаблонов идёт хорошими темпами, разработчики могут рассмотреть вопрос о прекращении разработки и отказа от кода для адаптации неглобальных шаблонов.

Темпы переноса шаблонов из больших вики—сайтов в центральное хранилище может стать одним из показателей успеха проекта.

Должно быть возможным полное использование шаблонов как в вики-тексте, так и в визуальном редактировании

Это очевидно, но всё равно должно быть упомянуто: редактирование вики-текста не исчезнет в обозримом будущем, и должна быть возможность продолжать редактирование включений шаблонов на страницах так, как это делается сейчас. Это не должно стать более сложным.

Тем не менее, Визуальный редактор всё больше используется как опытными, так и новыми редакторами, поэтому каждая функция работы шаблонов должна хорошо работать как в Визуальном редакторе, так и в редактировании вики-текста.

Другие функции, связанные с шаблонами

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

Ядро MediaWiki

Должны быть встроенные в вики инструменты, показывающие хотя бы базовый анализ использования шаблонов и модулей на страницах: количество включений и вызовов, сгруппированных по вики, и списки страниц, использующих шаблоны и модули. Функция, которая показывает во время редактирования страницы, какие шаблоны включены в неё, должна продолжить работать с глобальными шаблонами.

Страница «Ссылки сюда» должна продолжать работать и оставаться полезной для глобальных включений.

TemplateData

  • Описания шаблонов и параметров можно переводить в TemplateData, и переводы отображаются на языке интерфейса в диалоговом окне вставки шаблонов в Визуальном редакторе. Это хорошо, и должно быть сохранено. Интерфейс перевода может быть улучшен, но начало хорошее. Решением этой проблемы может быть добавление поддержки TemplateData в расширение Translate, но могут быть и другие решения.
  • Параметр «Предлагаемое форматирование вики-текста» (Внутристрочный, Блочный, Настраиваемый) должно продолжить работать. Должно быть также возможно настроить их на каждом вики: некоторые вики могут предпочесть видеть определённый шаблон, написанный в синтаксисе вики, как одну строку, а некоторые могут предпочесть несколько строк.

Citoid

  • Сервис Citoid должен быть настроен на каждой вики отдельно с помощью файлов JSON, таких, как Citoid-template-type-map.json. В эпоху глобальных шаблонов должно стать возможным делиться этими файлами, так, чтобы кнопка «Источник» была доступна во всех вики и работала одинаково везде по умолчанию. Как и с шаблонами, должен быть способ переопределить это значение по умолчанию в каждой вики, где сообщество хочет другое поведение.

TemplateStyles

  • Должна быть возможность писать страницы стилей шаблонов в том же центральном хранилище, где находятся шаблоны. Центральный стиль должен загружаться по умолчанию, и должна быть возможность переопределить его локально.

TemplateSandbox

  • Служебная страница Special:TemplateSandbox должна продолжить работать.
  • Должна быть возможность отредактировать шаблон в центральном хранилище и просмотреть его на странице целевого вики-сайта.


TemplateWizard

  • Текущая система использует стандартный поиск вики для поиска шаблонов. Результаты представлены в списке, который может потребоваться изменить, чтобы сделать глобальный или локальный статус видимым.
  • TemplateWizard получает информацию о шаблонах из TemplateData API, а потому, пока он возвращает ту же структуру, проблем не должно быть, и интернационализация уже работает.

Wikibase

  • Викиданные могут быть использованы для показывания некоторых значений параметров из центрального хранилища в локальных вики. Это продуктивно используется в Википедии на нескольких языках, среди которых французский, иврит, баскский, русский, каталанский, эстонский и некоторые другие, а также в Викискладе, хотя фактическая реализация может отличаться. Это, конечно, должно продолжить работать. Объединение того, как это делается в разных вики, может стать одной из наиболее важных исходов этого проекта.
  • Это также может упростить реализацию Wikidata Bridge , проекта, позволяющего редактировать значения шаблонов из вики. Модификации самих шаблонов должны будут быть сделаны только один раз в глобальных шаблонах, а не на каждом сайте по отдельности.

VisualEditor (Визуальный редактор)

  • Визуальный редактор, конечно, должен будет иметь возможность вставлять как глобальные, так и локальные шаблоны.
  • Визуальный редактор показывает ссылку на страницу описания шаблона в диалоговом окне редактирования шаблона. Эта ссылка должна указывать непосредственно на глобальный шаблон, когда он используется.

Разработка и установка

Разработка инфраструктуры для глобальных шаблонов и модулей — большой и сложный проект. Для выполнения он должен быть разделён на более простые части. Грубо говоря, части этого проекта должны быть разработаны в следующей последовательности:

  1. Переводимые модули (в разработке): Перед тем, как создать возможность использовать модули на разных вики-сайтах, необходимо разработать для них структуру интернационализации и локализации. Это сразу станет полезно для модулей на вики, которые уже многоязычны, и особенно это касается Викисклада и Викиданных. Некоторые из них в настоящее время переводятся с использованием массивов на Lua или хитростям с переводимыми страницами, но это можно улучшить.
  2. Глобальные модули: становится возможным делать модули общими для всех вики-сайтов. Это должно произойти до того, как сделать шаблоны общими для совместного использования, поскольку инфраструктура модулей менее связана с ядром MediaWiki.
  3. Переводимые шаблоны: это похоже на вышеупомянутые переводимые модули и может использовать ту же инфраструктуру, но потребуются также возможность переводить название самого шаблона и его параметров, а также некоторые другие функции. Смотрите разделы по локализации в этой спецификации.
  4. Глобальные шаблоны: завершение проекта, становится возможным использовать шаблоны глобально.

Разработка более продвинутых функций, таких как семантических шаблонов, может и должна произойти позже, после того, как они станут глобальными. Если они станут семантическими до того, как станут доступными для совместного использования, то код, описывающий их семантически, будет разветвлен на разных вики, как и сами шаблоны, что сделает повторное использование кода ещё сложнее, чем сегодня.

Глобальные шаблоны и модули будет доступны из всех вики-сайтов Викимедиа. Это включает в себя издания Википедии, Викисловаря, Викигида и т. д. на всех языках, а также Викисклад, Викиданные, Мета, mediawiki.org, Wikitech и т. д., и тестовые вики (test.wikipedia.org и т. д.). Это похоже на то, как изображения на Commons доступны во всех вики-сайтах. Хотя глобальные шаблоны и модули будут доступны вики-сайтам, сайты не будут обязаны их использовать.

Может быть желательно сделать шаблоны используемыми и на сайтах, не связанных с Викимедиа. Несмотря на то, что это не приносит прямой выгоды проектам Викимедиа, возможно, имеет смысл подумать о том, чтобы сделать шаблоны легко пригодными для использования не только в проектах Викимедиа, но и на других сайтах, использующих движок MediaWiki. Выполнение этого, вероятно, потребует некоторой дополнительной работы, но это может способствовать улучшенной модульности, и это, в свою очередь, может в конечном итоге принести пользу и проектам Викимедиа. Это сопоставимо с возможностью прямого встраивания изображений из Викисклада на сайты, не принадлежащие Викимедиа. {{🌎🌍🌏}}

Представьте себе мир

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

Задача С нынешней системой шаблонов С глобальными шаблонами
Вставить карточку с помощью Визуального редактора
  1. Нажмите «Вставить».
  2. Нажмите «Шаблон».
  3. Найдите как-нибудь название шаблона.
  4. Напечатайте название шаблона.
  5. Заполните поля.

Обратите внимание, что вам нужно будет найти название шаблона для каждого вики-сайта отдельно, а в некоторых вики это не будет работать вообще.

  1. Нажмите «Вставить».
  2. Нажмите «Карточка».
  3. Выберите нужный вам вид карточки.
  4. Получите большинство или все поля автоматически из Викиданных, и добавьте всё, что отсутствует или должно быть переопределено.

Обратите внимание, что вышеперечисленное будет работать одинаково во всех вики и на всех языках, если не указано иное.

Вставить карточку с помощью редактора вики-текста
  1. Полностью вручную: найдите страницу описания шаблона и введите шаблон в редакторе вики-текста согласно инструкциям.
  2. В основном вручную: перепишите из аналогичной статьи и измените значения параметров.
  3. Используйте TemplateWizard (надеясь, что он настроен для вашего вики-сайта):
    1. Нажмите на кнопку с деталью пазла.
    2. Найдите как-нибудь название шаблона.
    3. Напечатайте название шаблона.
    4. Заполните параметры один за другим, используя бланк.
Если вы хотите, вы можете делать всё так же, как и с нынешней системой шаблонов.

Но у вас также будут следующие дополнительные функции:

  1. Выбрать предлагаемую карточку из списка вместо того, чтобы вводить её название вручную.
  2. Автоматически заполнить значения параметров.
  3. Иметь одинаковый процесс во всех вики.
Использовать в Википедии на вашем языке красивый шаблон, который вы видели в английском, французском, русском или испанском вики-сайте
  1. Если у вас есть время и необходимые навыки:
    1. Перепишите код этого шаблона в ваш вики-сайт. Если это сложный шаблон, вам придётся использовать экспорт и импорт.
    2. Перепишите модули, которыми пользуется этот шаблон, если это необходимо.
    3. Перепишите TemplateStyles, если это необходимо.
    4. Перепишите документацию и переведите её в редакторе вики-текста.
    5. Просмотрите весь вики-текст, который вы переписали, найдите все строки интерфейса на человеческом языке, которые нужно перевести, и переведите их.
    6. Просмотрите весь вики-текст, который вы переписали, найдите все название параметров и места их использования и измените их на свой язык.
    7. Убедитесь, что шаблон действительно работает и делает то, что вам нужно. Если это не так, вам, возможно, придётся искать страницы CSS или JS, от которых это зависит.
  2. Если у вас нет времени или необходимых навыков, у вас есть два варианта:
    1. Сделать шаблон попроще, с меньшим количеством функций.
    2. Отказаться от затеи.
  3. Повторите процесс для каждого языка и каждого вики-сайта.
Если шаблон в глобальном хранилище:
  1. Перейдите на страницу документации шаблона.
  2. Нажмите кнопку «Перевести» и переведите все сообщения, используя интерфейс, похожий на translatewiki.

Вот и всё, шаблон полностью пригоден для использования на вашем языке.

(И да, это также надо повторять для каждого языка, но то же самое верно и для расширений MediaWiki.)

Использовать новые возможности красивого шаблона, который вы когда-то экспортировали в свой язык из вики на английском, французском, русском или другом языке Три варианта:
  1. Повторите процесс экспорта шаблона, надеясь, что по пути ничего не сломается.
  2. Разработайте это сами.
  3. Отказаться от этой затеи и остаться со старой версией.
Просто перевести новые строки. Все новые возможности уже доступны во всех вики.
Реализовать Wikidata Bridge (редактирование данных Викиданных непосредственно из карточек) Это проект на ранней стадии дизайна. Однако, вероятно, уже сейчас можно сказать, что с нынешней технологией для реализации этого проекта, вероятно, потребуется изменить каждый шаблон карточки на каждом вики-сайте в соответствии с инструкциями, которые будут опубликованы разработчиками Викиданных. Код шаблона карточки нужно будет изменить только один раз, и он будет работать во всех вики.
Перевести статью с английского, немецкого или польского на ваш язык, используя Перевод содержания
  1. Откройте статью в Переводе содержания.
  2. Нажмите на карточку.
    1. Если кто-то импортировал шаблон карточки на ваш язык, заполните все параметры. (Они иногда заполняются, но в большинстве случаев это не так.)
    2. Если никто не импортировал карточку в ваш язык, пропустите её.
  3. Переведите прозу первого абзаца.
  4. Тщательно проверьте, что все следующие шаблоны были правильно адаптированы:
    1. Шаблоны произношения в МФА
    2. Шаблоны имён на родном языке
    3. «Источник?»
    4. Конвертирование единиц
    5. Цитаты
    6. Флаги стран
    7. Всякие другие
  5. Повторяйте пункты 3 и 4, пока всё, что вы хотите, не будет переведено.
  6. Опубликуйте статью.
  7. Очистите неправильно опубликованный вики-текст.

В этом сценарии пункты 4 и 7 могут занять больше времени, чем пункт 3.

  1. Откройте статью в Переводе содержания.
  2. Нажмите на карточку. Карточка адаптируется, и все значения параметров автоматически заполняются. Исправьте значения, если это необходимо.
  3. Переведите прозу первого абзаца.
  4. Все шаблоны автоматически адаптируются с правильными параметрами, но на всякий случай убедитесь, что они правильны.
  5. Повторяйте пункты 3 и 4, пока всё, что вы хотите, не будет переведено.
  6. Опубликуйте статью.
  7. (Очистка неправильно опубликованного вики-текста видимо не нужна.)

В этом сценарии пункт 3 занимает бо́льшую часть времени, пункты 4 и 7 очень короткие, а общее время короче.

Переписать полезную ссылку на академическую статью из Немецкой Википедии в Русскую Википедию (или между любыми другими двумя языками)
  1. Убедитесь, что соответствующий шаблон существует на целевом языке. Если да:
    1. Убедитесь, что шаблон на целевом языке имеет одинаковые параметры с одинаковыми названиями. Если это так, вам повезло! Просто скопируйте и вставьте. Вы можете остановиться здесь.
    2. Если у них не одинаковые названия, проверьте, каковы соответствующие имена параметров на целевом языке, и перепишите их один за другим.
  2. Если в вики на целевом языке нет этого шаблона для ссылки, у вас есть следующие варианты:
    1. Создайте его (как в сценарии под названием «Использовать в Википедии на вашем языке красивый шаблон, который вы видели в английском, французском, русском или испанском вики-сайте»).
    2. Найдите похожий шаблон ссылки и используйте его.
    3. Просто переписать текст цитаты без оформления и структуры.
    4. Отказаться и опубликовать статью без источника.
В Визуальном редакторе: копируйте и вставляйте, не задаваясь вопросом, будет ли это работать

В редакторе вики-текста:

  1. Скопируйте.
  2. Вставьте в инструмент преобразования параметров шаблона. Он автоматически меняет имена параметров между языками.
  3. Вставьте результат.

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

Иметь таблицу последних результатов текущего Тур де Франса в Википедии на вашем языке

Этот сценарий основан на реальном модуле Cycling race. Он не используется в Английской Википедии из-за разногласий по поводу оформления таблиц, но возможно, что сообщество примет его в будущем если будут внесены необходимые изменения.

  1. Один раз: Разработайте шаблон и модуль, который создаёт таблицу результатов, и документируйте, как их скопировать и перевести.
  2. На каждом языке (необязательно): Переведите строки интерфейса модуля, отредактировав код Lua.
  3. На каждом языке (необязательно): переведите названия (labels) необходимых элементов Wikidata.
  4. В каждом вики–сайте: Перепишите модуль из центрального хранилища в свой вики-сайт.
  5. В каждом вики-сайте, много раз: обновляйте модуль в вашем вики-сайте каждый раз, когда меняется центральный модуль
  6. В каждом вики-сайте: создайте статью о мероприятии этого года и добавьте к этой статье шаблон, который вызывает модуль.
  7. Один раз: дождитесь результатов и добавьте их в соответствующий элемент Викиданных. Статьи на всех языках получают их автоматически.
  1. Один раз: Разработайте шаблон и модуль, который создаёт таблицу результатов. Шаблон становится доступным везде.
  2. На каждом языке (необязательно): нажмите кнопку «Перевести» и переведите все сообщения, используя интерфейс, аналогичный translatewiki (не редактируя код Lua или вики-текст).
  3. На каждом языке (необязательно): переведите названия (labels) необходимых элементов Wikidata.
  4. В каждом вики-сайте: создайте статью о мероприятии этого года и добавьте к этой статье шаблон, который вызывает модуль.
    • В дальнейшем даже этот шаг может стать необязательным благодаря расширению, например ArticlePlaceholder, которое сможет автоматически создавать статьи начального уровня такого рода.
  5. Один раз: дождитесь результатов и добавьте их в соответствующий элемент Викиданных. Статьи на всех языках получают их автоматически.

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

Начать писать в новой вики после создания домена После того, как содержание импортировано из Инкубатора, нет никаких шаблонов для карточек, сносок, шаблонов участника (userboxes), управления обсуждениями, маркировки страниц для объединения или удаления и т. д.

Начните переписывать эти шаблоны один за другим или создайте свои собственные.

Добрые люди из других вики могут вам помочь, но они, вероятно, не знают вашего языка, поэтому вам придётся вручную переводить все строки (как в сценарии под названием «Использовать в Википедии на вашем языке красивый шаблон, который вы видели в английском, французском, русском или испанском вики-сайте»).

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

Все эти шаблоны уже доступны. Просто переведите строки в интерфейсе, похожем на translatewiki.
Использовать навигационную таблицу («navbox») при чтении статьи на мобильном телефоне Impossible.

Навигационные таблицы настолько сложны для адаптации к экранам мобильных устройств и настолько отличаются друг от друга в разных вики, что программное обеспечение просто скрывает их. (И да, [phab:T124168|на это есть спрос].)

Possible.

Поскольку инфраструктура шаблонов является общей для разных языков, различные языковые сообщества могут работать друг с другом, а также с разработчиками мобильного интерфейса для чтения и редактирования, и сделать их адаптивными.

Иметь красиво оформленную и хорошо работающую на мобильных устройствах заглавную страницу, с регулярно обновляемыми новостями, избранными статьями и изображениями и т. д. Вариант 1: Найдите добровольцев, которые хорошо знают ваш язык, а также HTML и вики-текст (особенно таблицы и шаблоны), и у которых есть время редактировать заглавную страницу каждый день. Это делается по отдельности и с использованием разных методов на каждом сайте. Это происходит в топ-70 вики или около того: в английском, русском, французском, испанском и т. д.

Вариант 2: Если вы не можете найти кого-либо, кто знает ваш язык и может поддерживать HTML-код главной страницы каждый день, скопируйте код с главной страницы с английского или французского и попросите добровольцев из других вики, которые не знают ваш язык, но знают вики-текст, чтобы время от времени меняли избранное изображение. Они не знают языка и не могут регулярно поддерживать текст, а вы не можете этого делать, потому что боитесь сломать HTML-код, и поэтому вы застряли с одной и той же избранной статьёй на главной странице в течение нескольких месяцев или лет. Это происходит в некоторых небольших языках.

Вариант 3: Бросить затею и иметь статическую заглавную страницу, которая, скорее всего, не очень хорошо работает на мобильных устройствах, несмотря на то, что заглавная страница обычно является самой просматриваемой страницей в вики. Это происходит во многих вики, даже если в них есть иная активность.

Вариант 1: Если у вас есть люди, обладающие необходимыми навыками и временем для ухода за созданной вручную заглавной страницы на вашем языке, и вы хотите, чтобы всё оставалось так, вы можете это сделать.

Вариант 2: Если у вас нет людей, которые могут выполнять эту ручную работу, или если ваше сообщество согласно с тем, чтобы заглавная страница выглядела также, как на некоторых других языках, поместите на вашей заглавной странице простой централизованно поддерживаемый шаблон. Заменяйте только текст изменяющихся элементов в простой форме, не имея дело с вики-текстом, таблицами или HTML. Этот процесс одинаков для большинства вики, поэтому все заинтересованные могут использовать одни и те же шаблоны и боты.

Проанализировать, как статьи сортируются Вики-проектами для исследования о Википедии
  1. Напишите код, который анализирует шаблоны сортировки Вики-проектов Английской Википедии на страницах обсуждения, и запустите его.
  2. Обнаружьте, что вы не можете запустить тот же код на других языках. Теперь у вас есть два варианта:
    1. Переписать код для каждой вики.
    2. Бросить затею исследовать все вики, и исследовать только Английскую Википедию.
  1. Напишите код, который анализирует шаблоны сортировки Вики-проектов на страницах обсуждения и запускайте его на всех языках.

(Примечание: В столбце «С глобальными шаблонами» предполагается, что инфраструктура развёрнута во всех сайтах Викимедиа, и что наиболее часто используемые шаблоны перемещены в центральную инфраструктуру.) {{🌎🌍🌏}}

Состояние

Эта часть — об общем статусе проекта. Детали о последних событиях и краткую историю прошлых проектов, см. страницу Global templates/Status.

Как отмечалось выше, по состоянию на декабрь 2020 года эта страница является лишь большой идеей, а не обязательством по реализации проекта.

Подобные идеи предлагались в прошлом. Самое старое из известных предложений по использованию шаблонов для повторного использования в разных вики было внесени в декабре 2004 года в Багзилле: Interwiki templates (задача T3126). Несколько других подобных идей были подняты позже, например, Phabricator задача T6547. В феврале 2017 года аналогичное предложение под названием Global-Wiki было закрыто как «консенсус». Некоторые из его компонентов были реализованы, например глобальные настройки, но не были реализованы глобальные шаблоны.

Желание «Создать централизованный глобальный репозиторий для всех шаблонов, гаджетов и модулей на Lua» попало на третье место в Опросе о пожеланиях сообщества — 2015, а «Глобальные гаджеты» попало на первое место в Опросе о пожеланиях сообщества — 2016. Несмотря на поддержку сообщества, ни одно из них не было реализовано, потому что они не подходили для команды Community Tech, и они не были переведены в другую команду.

Проект Platform Evolution (2018) указал на некоторые намерения иметь поддержку глобальных шаблонов в будущем. На странице Platform Evolution/Recommendations обсуждаются идеи по обновлению модульности содержания и говорится:

... «коробки» являются идеальной областью фокусировки для создания модульности. Они представляют собой автономные функции и дают возможность обеспечить равноправный обмен пользовательскими функциями между проектами и языками, создавая межпроектную службу для обмена шаблонами. Этот проект также заставит нас задуматься о том, как обрабатывать оформление и структуру содержания отдельно от частей самого содержания.

На тесно связанной странице Platform Evolution/Goals это упомянуто как одна из целей:

Увеличить равенство и силу инструментов вклада. Мы хотим поддерживать вклад большего количества видов содержания, в том числе медиа, в более интерактивных формах и во все проекты. Это означает, что некоторые существующие инструменты, такие как шаблоны, будут сделаны доступны для последовательного повторного использования во всех проектах и языках. Это также означает усовершенствование инструментов перевода для удаления разрозненности содержания. Наконец, мы также хотим, чтобы участники могли легко создавать новые межпроектные, локализуемые инструменты для содержания.

Абстрактная Википедия, которая была утверждена Фондом Викимедиа в июле 2020 года в качестве нового проекта, который будет разработан в ближайшем будущем, включает «глобальное для всех сайтов хранилище для раздачи шаблонов и модулей проектам Фонда Викимедиа» внутри Викифункций как одну из основных целей. (Викифункции были ранее известны под названием «Викиламбда».)

В сентябре 2020 года была начата инициатива по созданию Переводимых модулей . Она решает часть проблем в этом предложении.

В Опросе пожеланий сообщества, пожелание «Перевод шаблонов» получило больше всего голосов. Оно было и желанием с наивысшим количеством голосов за всю историю опроса до тех пор (декабрь 2020). Это пожелание соответствует некоторым частям этого предложения, особенно Автоматическому переводу параметров.

Другие примеры связи между этим предложением о Глобальных шаблонах и различными стратегическими планами сообщества Викимедиа см. страницу Глобальные шаблоны/Отношение к стратегии .

Сейчас нет полного технического плана по внедрению полноценного деления модулями и шаблонами на другие вики-сайты. Эта страница является попыткой предложить такой план на уровне продукта и выслушать отзывы редакторов. {{🌎🌍🌏}}

Полезные ссылки

Некоторые относящиеся к этой теме страницы:

  • Platform Evolution/Goals
  • Platform Evolution/Recommendations
  • Multilingual Templates and Modules — Попытка реализовать подобную функцию с помощью ботов
  • m:Community Wishlist Survey 2015/Results - Central Global Repository for Templates, Lua modules, and Gadgets Это желание заняло третье место в списке желаний сообщества. Внесено в список «В разработке - команда Parsing», но не выполнено.
  • m:Which templates should be global? — неофициальный список, составленный различными редакторами
  • Requests for comment/Shadow namespaces — бездействующий RFC об одном из предложений по технической реализации такой инфраструктуры
  • Manual:$wgEnableScaryTranscluding - существующий элементарный механизм для переноса содержания между проектами. Считается неэффективным и небезопасным, и отключен на проектах Викимедиа.
  • m:Global-Wiki — похожее предложение, с более широким охватом. Было открыто для обсуждения в течение нескольких лет и закрыто с пометкой «есть консенсус». Некоторые вещи из него были реализованы, такие, как глобальные пользовательские страницы и настройки, но там есть также глобальные шаблоны, которые ещё не сделаны.
  • m:Abstract Wikipedia - Более широкое предложение, включающее глобальное хранилище модулей и шаблонов (также известно под названием Викифункции, и ранне было известно под названием «Викиламбда»).
  • m:Community Wishlist Survey 2021/Translation/Templates translation ь пожелание сообщества, соответствуещее некоторым частям этого предложения, особенно Автоматическому переводу параметров. {{🌎🌍🌏}}