Update Codex from v1.20.0 to v1.20.1
[mediawiki.git] / tests / phpunit / includes / language / LanguageConverterTestTrait.php
blob333890b10c4538ec6591fd87512d66b9ab460380
1 <?php
3 use MediaWiki\Config\HashConfig;
4 use MediaWiki\Config\ServiceOptions;
5 use MediaWiki\Language\ILanguageConverter;
6 use MediaWiki\Languages\LanguageConverterFactory;
7 use MediaWiki\MainConfigNames;
9 trait LanguageConverterTestTrait {
11 /** @var string */
12 private $codeRegex = '/^(.+)ConverterTest$/';
14 /** @var LanguageConverterFactory */
15 private $factory;
17 protected function getCode(): string {
18 if ( preg_match( $this->codeRegex, get_class( $this ), $m ) ) {
19 # Normalize language code since classes uses underscores
20 return mb_strtolower( str_replace( '_', '-', $m[1] ) );
22 return '';
25 protected function getConverterFactory() {
26 if ( $this->factory ) {
27 return $this->factory;
30 $code = $this->getCode();
31 $this->factory = new LanguageConverterFactory(
32 new ServiceOptions( LanguageConverterFactory::CONSTRUCTOR_OPTIONS, new HashConfig( [
33 MainConfigNames::UsePigLatinVariant => false,
34 MainConfigNames::DisableLangConversion => false,
35 MainConfigNames::DisableTitleConversion => false,
36 ] ) ),
37 $this->getServiceContainer()->getObjectFactory(),
38 function () use ( $code ) {
39 $services = $this->getServiceContainer();
40 if ( $code ) {
41 return $services->getLanguageFactory()->getLanguage( $code );
42 } else {
43 return $services->getContentLanguage();
48 return $this->factory;
51 /**
52 * @param string|null $language Language code or null to use language
53 * returned by ::getCode(), or the content language if not set either.
54 * @return ILanguageConverter
56 protected function getLanguageConverter( $language = null ): ILanguageConverter {
57 if ( $language ) {
58 $language = $this->getServiceContainer()->getLanguageFactory()
59 ->getLanguage( $language );
62 return $this->getConverterFactory()->getLanguageConverter( $language );