Page MenuHomePhabricator

Allow the creation and viewing a transient translation list
Open, HighPublic

Description

This will be the first functional iteration of the Translation List feature (a.k.a. Task List and Campaigns): T96147: [Epic] ContentTranslation - Lists of articles to translate.

At this iteration we will create transient translation task lists. This means that the lists are generated on the fly, on the client, based on Wikidata ids. The Wikidata ids can be sourced from in two ways:

  1. Use a wiki page as a source, query all outgoing links and collect Wikidata ids with prop=pageprops&ppprop=wikibase_item
  2. Use a category as a source, query all *direct* members and collect Wikidata ids with prop=pageprops&ppprop=wikibase_item

Transient task lists do not exist as first class objects, hence there is no way to track them. They are dynamic: if the source page or category changes, the list updates itself, and they can be shared. Basically any Wikipedia article or category can be used as a task list, and lists for specific purposes are super easy to create. One limitation is that all pages must exist in the same wiki.

Lists will be displayed on the Suggestions tab based on URL parameters, for example translationlist=page:en:Helsinki or translationlist=category:en:Smallpox. Initially only one value will be supported, but it is possible to extend to multiple values with | as a separator. The language code is there so we know which wiki to use (with sitemapper). This means lists must reside inside the same kind of project (or whatever is accessible via sitemapper); at this point, in practice for Wikimedia this will be Wikipedia. Optionally, if we want, we can use default value of cxpage:<current code>:User:<current user>/CX_list.

Suggestions tab will be opened automatically, if an explicit translationlist value is given.

The display will use the existing database-backed translation list display. The existing from and to URL parameters can be used when sharing links for simple campaigns. Thanks to Wikidata ids we can use any language as source and target.

In the UI we need to be able to handle the following cases:

  • Article already translated to target language
  • Article not existing in the source language
  • Article needs translation

Simplest solution is to collapse the first two into "X pages from the list cannot be translated with this language combination".

Related tasks: