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 */
17trait LanguageOptionsTrait {
18    /**
19     * @see IContextSource::getLanguage
20     * @return Config
21     */
22    abstract public function getConfig();
23
24    /** @var LanguageNameUtils */
25    private $languageNameUtils;
26
27    /**
28     * Make options to be used by in a select field
29     *
30     * Each language that is specified in the config variable
31     * "WikispeechVoices" is included in the options. The labels are
32     * of the format "code - autonym".
33     *
34     * @since 0.1.13
35     * @return array Keys are labels and values are language codes.
36     */
37    protected function getLanguageOptions(): array {
38        $voices = $this->getConfig()->get( 'WikispeechVoices' );
39        $languages = array_keys( $voices );
40        sort( $languages );
41        $options = [];
42        foreach ( $languages as $code ) {
43            $name = $this->languageNameUtils->getLanguageName( $code );
44            $label = "$code - $name";
45            $options[$label] = $code;
46        }
47        ksort( $options );
48        return $options;
49    }
50}