wiki.techinc.nl/tests/phpunit/includes/language/LanguageConverterTestTrait.php
Umherirrender eb28edd84e language: Add missing documentation to class properties
Add doc-typehints to class properties found by the PropertyDocumentation
sniff to improve the documentation.

Once the sniff is enabled it avoids that new code is missing type
declarations. This is focused on documentation and does not change code.

Change-Id: I73c413727a63d14efb5028b27128784c98724110
2024-09-17 18:25:25 +00:00

64 lines
1.8 KiB
PHP

<?php
use MediaWiki\Config\HashConfig;
use MediaWiki\Config\ServiceOptions;
use MediaWiki\Language\ILanguageConverter;
use MediaWiki\Languages\LanguageConverterFactory;
use MediaWiki\MainConfigNames;
trait LanguageConverterTestTrait {
/** @var string */
private $codeRegex = '/^(.+)ConverterTest$/';
/** @var LanguageConverterFactory */
private $factory;
protected function getCode(): string {
if ( preg_match( $this->codeRegex, get_class( $this ), $m ) ) {
# Normalize language code since classes uses underscores
return mb_strtolower( str_replace( '_', '-', $m[1] ) );
}
return '';
}
protected function getConverterFactory() {
if ( $this->factory ) {
return $this->factory;
}
$code = $this->getCode();
$this->factory = new LanguageConverterFactory(
new ServiceOptions( LanguageConverterFactory::CONSTRUCTOR_OPTIONS, new HashConfig( [
MainConfigNames::UsePigLatinVariant => false,
MainConfigNames::DisableLangConversion => false,
MainConfigNames::DisableTitleConversion => false,
] ) ),
$this->getServiceContainer()->getObjectFactory(),
function () use ( $code ) {
$services = $this->getServiceContainer();
if ( $code ) {
return $services->getLanguageFactory()->getLanguage( $code );
} else {
return $services->getContentLanguage();
}
}
);
return $this->factory;
}
/**
* @param string|null $language Language code or null to use language
* returned by ::getCode(), or the content language if not set either.
* @return ILanguageConverter
*/
protected function getLanguageConverter( $language = null ): ILanguageConverter {
if ( $language ) {
$language = $this->getServiceContainer()->getLanguageFactory()
->getLanguage( $language );
}
return $this->getConverterFactory()->getLanguageConverter( $language );
}
}