Справка:Расширение:Перевод/Перевод неструктурированных элементов

This page is a translated version of the page Help:Extension:Translate/Unstructured element translation and the translation is 79% complete.

Эта страница объясняет, как с помощью расширения перевода сделать перевод кастомизированных сообщений интерфейса вики немного более управляемым. Это касается любой части вики-сайта, которую вы хотите автоматически отображать на языке интерфейса пользователя. Наиболее типичный пример — боковая навигационная панель, потому что там может быть только какой-то один язык, но тот же метод может быть использован для заглавной страницы, если вы хотите, чтобы все её переводы отображались с тем же самым заголовком, или даже для шаблонов. It applies to any part of the wiki which you want to automatically provide in the user's interface language. The most typical example is the sidebar, because there can be only one, but the same method can be used for the main page, if you want to have all translations of it under the same title, or even for templates.

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

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

По сравнению с переводом страницы этот метод имеет некоторые недостатки:

  1. MediaWiki developers usually discourage the usage of {{int:}} because it fragments the cache. Instead of storing one cached rendered version of a page, when {{int:}} is used it needs to be cached potentially in hundreds of different languages.
  2. It is harder to setup, requiring access to wiki configuration.
  3. There is no automatic tracking of outdated translations and completion statistics might be off when new messages are added or deleted.
  4. Only wiki administrators can add messages to the message groups and translate them. This means that the system is suitable only for pages which don't change often, or administrators will have a lot of work.

The good thing is that it works most of the time and you can still get the job done. There are two tutorials that provide examples of the common use cases. Before that there is a section which details how to set up a message group, something which is always needed when using this method.

Установка

Для правильной работы администратор сервера должен добавить строки в файл LocalSettings.php :

$wgHooks['TranslatePostInitGroups'][] = function ( &$list, &$deps, &$autoload ) {
	$id = 'wiki-sidebar';
	$mg = new WikiMessageGroup( $id, 'sidebar-messages' );
	$mg->setLabel( 'Боковая панель' );
	$mg->setDescription( 'Messages used in the sidebar of this wiki.' );
	$list[$id] = $mg;
	return true;
};

Идентификатор группы сообщений wiki-sidebar должен быть уникальными, нельзя использовать этот же самый идентификатор в других местах. Второй параметр конструктора WikiMessageGroup, sidebar-messages, относится к странице [[MediaWiki:Sidebar-messages]]. Лейбл, показанный в выпадающем меню и других местах, где вы можете выбрать группу сообщений. Описание показывается на странице Special:Translate. Приведённые здесь значения можно и нужно изменить на те, что подходит для вашего вики-проекта, а также добавить новые, объединив их в специальную пользовательскую группу сообщений.

Инструкция по созданию локализованной навигационной панели

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

* sidebar-commonpages
** FAQ|sidebar-faq

Создайте (если её нет) страницу $sidebar-commonpges и запишите в неё Common pages, а в [[MediaWiki:Sidebar-faq]] — Frequently asked questions.

Теперь всё, что нам остаётся сделать, это перейти в [[MediaWiki:Sidebar-messages]] (или другой раздел, определённый на предыдущем шаге) и записать в него:

sidebar-commonpages sidebar-faq

То есть, имена системных сообщений без префикса пространства имён «MediaWiki:», разделенные пробелами.

Затем перейдите к [[Special:Translate/wiki-sidebar]] (или другому разделу, определённому на предыдущем шаге, см. [[Special:Translate]] для получения списка определённых групп). Теперь можно переводить сообщения на другие языки. Поскольку все сообщения находятся в пространстве имен MediaWiki, только администратор интерфейса может редактировать список сообщений и переводить их.

Инструкция по созданию локализуемой заглавной страницы

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

Реализуется так же, как и в предыдущем руководстве:

  1. Настраивается новая группа сообщений.
  2. Берётся вики-страница.
  3. В каждой переводимой части текст заменяется на {{int:Mainpage-messagename}} и переносится в [[MediaWiki:Mainpage-messagename]].
  4. Переходим на страницу [[MediaWiki:Mainpage-messages]] (или другую опредёленную в настройках страницу) и добавляем в ней новые имена, разделяя их пробелами.
  5. Всё готово. Переходим на [[Special:Translate]], чтобы начать переводить заглавную страницу.

Предположим, например, что [[Main Page]] содержит:

<div style="max-width:20em;font-size:200%;line-height:1.4;text-align:center;color:green">
''{{SITENAME}} is a community for chefs and bakers that love chocolate.''
</div>
We currently have {{NUMBEROFPAGES}} pages full of chocolate.

Меняем содержимое на:

<div style="max-width:20em;font-size:200%;line-height:1.4;text-align:center;color:green">
''{{int:mainpage-slogan}}''
</div>
{{int:mainpage-pagecount}}

Создаем страницу [[MediaWiki:Mainpage-slogan]], с текстом:

{{SITENAME}} is a community for chefs and bakers that love chocolate.

Создаём страницу [[MediaWiki:Mainpage-pagecount]], с текстом:

We currently have {{NUMBEROFPAGES}} pages full of chocolate.

Создаём страницу [[MediaWiki:Mainpage-messages]] с текстом:

mainpage-slogan mainpage-pagecount

Всё готово! Вы можете добавлять и удалять новые элементы, когда захотите.

Переключатель языков

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

По счастью, решение есть. С расширением Расширение:UniversalLanguageSelector можно подставить предпочтительный язык пользователя, или предоставить пользователю возможность вручную выбрать другой язык и сохранить выбор в кукисах, не используя приёмы, такие как параметр uselang, который подходит в большинстве случаев только для отладки.