Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
LanguageOptionsTrait
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
1 / 1
 getConfig
n/a
0 / 0
n/a
0 / 0
0
 getLanguageOptions
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace MediaWiki\Wikispeech\Specials;
4
5/**
6 * @file
7 * @ingroup Extensions
8 * @license GPL-2.0-or-later
9 */
10
11use MediaWiki\Config\Config;
12use MediaWiki\Languages\LanguageNameUtils;
13
14/**
15 * @since 0.1.13
16 */
17
18trait LanguageOptionsTrait {
19    /**
20     * @see IContextSource::getLanguage
21     * @return Config
22     */
23    abstract public function getConfig();
24
25    /** @var LanguageNameUtils */
26    private $languageNameUtils;
27
28    /**
29     * Make options to be used by in a select field
30     *
31     * Each language that is specified in the config variable
32     * "WikispeechVoices" is included in the options. The labels are
33     * of the format "code - autonym".
34     *
35     * @since 0.1.13
36     * @return array Keys are labels and values are language codes.
37     */
38    protected function getLanguageOptions(): array {
39        $voices = $this->getConfig()->get( 'WikispeechVoices' );
40        $languages = array_keys( $voices );
41        sort( $languages );
42        $options = [];
43        foreach ( $languages as $code ) {
44            $name = $this->languageNameUtils->getLanguageName( $code );
45            $label = "$code - $name";
46            $options[$label] = $code;
47        }
48        ksort( $options );
49        return $options;
50    }
51}