Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
TranslateInterfacePreferences.php
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\TranslatorInterface;
5
8use MediaWiki\MediaWikiServices;
9use MediaWiki\User\User;
10use RequestContext;
11use XmlSelect;
12
26 public static function translationAssistLanguages( User $user, array &$preferences ): void {
27 // Get selector.
28 $select = self::languageSelector();
29 // Set target ID.
30 $select->setTargetId( 'mw-input-translate-editlangs' );
31 // Get available languages.
32 $languages = MediaWikiServices::getInstance()->getLanguageNameUtils()->getLanguageNames();
33
34 $preferences['translate-editlangs'] = [
35 'class' => HTMLJsSelectToInputField::class,
36 // prefs-translate
37 'section' => 'editing/translate',
38 'label-message' => 'translate-pref-editassistlang',
39 'help-message' => 'translate-pref-editassistlang-help',
40 'select' => $select,
41 'valid-values' => array_keys( $languages ),
42 'name' => 'translate-editlangs',
43 ];
44 }
45
47 private static function languageSelector(): JsSelectToInput {
48 $lang = RequestContext::getMain()->getLanguage();
49 $languages = MediaWikiServices::getInstance()->getLanguageNameUtils()->getLanguageNames( $lang->getCode() );
50 ksort( $languages );
51
52 $selector = new XmlSelect( false, 'mw-language-selector' );
53 foreach ( $languages as $code => $name ) {
54 $selector->addOption( "$code - $name", $code );
55 }
56
57 return new JsSelectToInput( $selector );
58 }
59}
Contains classes for addition of extension specific preference settings.
static translationAssistLanguages(User $user, array &$preferences)
Add 'translate-editlangs' preference.
Implementation of JsSelectToInput class which is compatible with MediaWiki's preferences system.
Code for JavaScript enhanced <option> selectors.