Help:Extension:Translate/Message group states
This page contains documentation for message group workflow states. Let's imagine that some organization is using MediaWiki with the Translate extension. They use the wiki to write press releases among other things. What do they do? First they write a press release in a wiki, then make it translatable and invite translators to work on it. When translations are ready, they can publish them elsewhere on their website. But how do they know when a translation is ready, or more importantly proofread and corrected (see Quality assurance)? What if someone finds and fixes a mistake and the published version needs to be updated?
This is the use case the message group workflow feature is intended for. It lets you attach a tag to a message group indicating what state it is in, like "translating", "proofreading", "ready" or "published". This allows the different roles that work on a press release to explicitly expose the current state without the need of other communication methods. The translators can indicate when they consider their translations ready, and other translators can see what translations are already published. The translation administrator can periodically check which translations are ready and publish them, as well as update the pages that were already published. This is a workflow.
By default, this feature is disabled.
It must be set up in the wiki configuration (
You need to decide what states you want to configure, and assign them colors in the hex format.
In addition you can choose the user groups that can by default change the states.
Here is a sample configuration:
$wgTranslateWorkflowStates = array( 'new' => array( 'color' => 'FF0000' ), // red 'needs_proofreading' => array( 'color' => '0000FF' ), // blue 'ready' => array( 'color' => 'FFFF00' ), // yellow 'published' => array( 'color' => '00FF00' ), // green ); $wgGroupPermissions['translator']['translate-groupreview'] = true;
Message groups can override the global workflow states and provide their own ones. They can do more granular permission control by state level. A state can only be selected by the user groups that have the specified right.
$wgTranslateWorkflowStates = array( 'published' => array( 'color' => 'FF0000', 'right' => 'translate-publish' ) ); $wgGroupPermissions['translationadmin']['translate-publish'] = true;
Once the configuration is set, both Special:LanguageStats and Special:MessageGroupStats will show a new column for the current state, and the tables can be sorted by state. The state can be changed in Special:Translate: just choose the group and language and you will see the state in the top corner of the message group description.
This state applies to a single language of a single message group, say the whole Italian translation of the translatable page "Fréttinga". In contrast, individual translation units can be accepted and whole translatable pages can be discouraged from further translation.
Automatic state changes
Since September 2012 Translate supports automatic state changes. For example, when all the messages are translated, the state changes itself to proofreading, and when all messages have been proofread, the state changes to ready.
The conditions for these changes are called transitions. Transitions can have zero or more conditions on the following variables: UNTRANSLATED, OUTDATED, TRANSLATED, PROOFREAD. Each variable represents the number of messages in that state. UNTRANSLATED variable includes the OUTDATED messages. Each variable can be compared to three values: ZERO, NONZERO and MAX. For example transition to ready state would have condition PROOFREAD is MAX. See code example below.
The state of a language of a message group will be updated whenever a translation is changed or reviewed in that language. The state transitions are matched in the declaration order. All conditions must be fulfilled for the transition to match. If no transition matches, the message group will keep its existing state.
$wgTranslateWorkflowStates = array( // States // 'ready' => ( ... ), 'state conditions' => array( array( 'ready', array( 'PROOFREAD' => 'MAX' ) ), array( 'proofreading', array( 'TRANSLATED' => 'MAX' ) ), array( 'unset', array( 'UNTRANSLATED' => 'MAX', 'OUTDATED' => 'ZERO', 'TRANSLATED' => 'ZERO' ) ), array( 'inprogress', array( 'UNTRANSLATED' => 'NONZERO' ) ), ) );
MessageGroupStats can be used to see the status of the translation of a single message group in all languages.