Как написать переведенные статьи MediaWiki через API, используя расширение Translate?

Я пишу сотни статей в MediaWiki (версия 1.20.2) через его API, используя самопрограммируемый скрипт PHP, который зависит от WikiMate. На данный момент статьи написаны только на английском языке. Но я хочу перевести их, используя расширение Translate, поэтому я должен одобрить каждую статью для перевода.

Для каждой статьи уже есть документ на английском и французском языках, так есть ли какой-нибудь автоматизированный способ написания статей на английском языке (по умолчанию) и переведенной статьи (на французском) одновременно с использованием API? Перевод должен быть совместим с расширением Translate.

2 ответа

Решение

Вот так у меня все получилось. Вы можете скопировать метод execute() от SpecialPageTranslation.php в ваш пользовательский класс. Этот метод помечает статью как переводимую. Просто передайте ему название нужной статьи, создав новую Title объект с $title = Title::newFromText( 'Title_of_my_article' );, Скопируйте все методы, на которые ссылается $this в ваш пользовательский класс, а также. Например, метод $this->markForTranslation(..) и его зависимости.

После вызова execute() Метод, статья помечается для перевода, чтобы вы могли зафиксировать переведенную статью. Я просто делаю это, давая англо-переведенной статье названия Title_of_my_article/1/en а также Title_of_my_article/en и зафиксируйте их, используя MW API по умолчанию. (Быть в курсе, что 1/en помечает переведенный раздел, который вы фиксируете, поэтому вы будете фиксировать всю статью как переведенный раздел)

К сожалению, расширение Translate плохо документировано, поэтому очень сложно понять, как все работает.

Что значит "утвердить каждую статью для перевода"? Чтобы выполнить действие "пометить для перевода", которое добавляет теги ? В настоящее время, к сожалению, нет веб-API для этого.

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

Если вы пишете какие-либо решения для этого, было бы очень мило с вашей стороны поделиться ими:)

(Комментарий: я являюсь одним из разработчиков расширения Translate.)

Другие вопросы по тегам