MediaWiki master
LanguageConverterFactory.php
Go to the documentation of this file.
1<?php
7namespace MediaWiki\Language;
8
28use Wikimedia\ObjectFactory\ObjectFactory;
29
37
39 private $cache = [];
44 private $converterList = [
45 'ban' => [
46 'class' => BanConverter::class,
47 ],
48 'crh' => [
49 'class' => CrhConverter::class,
50 ],
51 'gan' => [
52 'class' => GanConverter::class,
53 ],
54 'iu' => [
55 'class' => IuConverter::class,
56 ],
57 'ku' => [
58 'class' => KuConverter::class,
59 ],
60 'mni' => [
61 'class' => MniConverter::class,
62 ],
63 'sh' => [
64 'class' => ShConverter::class,
65 ],
66 'shi' => [
67 'class' => ShiConverter::class,
68 ],
69 'sr' => [
70 'class' => SrConverter::class,
71 ],
72 'tg' => [
73 'class' => TgConverter::class,
74 ],
75 'tly' => [
76 'class' => TlyConverter::class,
77 ],
78 'uz' => [
79 'class' => UzConverter::class,
80 ],
81 'wuu' => [
82 'class' => WuuConverter::class,
83 ],
84 'zgh' => [
85 'class' => ZghConverter::class,
86 ],
87 'zh' => [
88 'class' => ZhConverter::class,
89 ],
90 ];
91
92 private const DEFAULT_CONVERTER = [
93 'class' => TrivialLanguageConverter::class,
94 'services' => [
95 'TitleFormatter',
96 ]
97 ];
98
99 private const EN_CONVERTER = [
100 'class' => EnConverter::class,
101 ];
102
106 public const CONSTRUCTOR_OPTIONS = [
110 ];
111
112 private ServiceOptions $options;
113 private ObjectFactory $objectFactory;
114
118 private $defaultLanguage;
119
128 public function __construct(
129 ServiceOptions $options,
130 ObjectFactory $objectFactory,
131 callable $defaultLanguage
132 ) {
133 $options->assertRequiredOptions( self::CONSTRUCTOR_OPTIONS );
134 $this->options = $options;
135 $this->objectFactory = $objectFactory;
136 if ( $options->get( MainConfigNames::UsePigLatinVariant ) ) {
137 $this->converterList['en'] = self::EN_CONVERTER;
138 }
139 $this->defaultLanguage = $defaultLanguage;
140 }
141
148 private function instantiateConverter( $lang ): ILanguageConverter {
149 $code = mb_strtolower( $lang->getCode() );
150 $spec = $this->converterList[$code] ?? self::DEFAULT_CONVERTER;
151 return $this->objectFactory->createObject(
152 $spec,
153 [
154 'assertClass' => ILanguageConverter::class,
155 'extraArgs' => [ $lang ],
156 ]
157 );
158 }
159
169 public function getLanguageConverter( $language = null ): ILanguageConverter {
170 $lang = $language ?? ( $this->defaultLanguage )();
171 if ( isset( $this->cache[$lang->getCode()] ) ) {
172 return $this->cache[$lang->getCode()];
173 }
174 // @phan-suppress-next-line PhanTypeMismatchArgumentNullable False positive
175 $converter = $this->instantiateConverter( $lang );
176 $this->cache[$lang->getCode()] = $converter;
177 return $converter;
178 }
179
185 public function isConversionDisabled() {
186 return $this->options->get( MainConfigNames::DisableLangConversion );
187 }
188
194 public function isLinkConversionDisabled() {
195 return $this->options->get( MainConfigNames::DisableLangConversion ) ||
196 // Note that this configuration option is misnamed.
197 $this->options->get( MainConfigNames::DisableTitleConversion );
198 }
199}
200
202class_alias( LanguageConverterFactory::class, 'MediaWiki\\Languages\\LanguageConverterFactory' );
A class for passing options to services.
assertRequiredOptions(array $expectedKeys)
Assert that the list of options provided in this instance exactly match $expectedKeys,...
Crimean Tatar (Qırımtatarca) converter routines.
English specific converter routines.
Meitei specific converter routines.
Converts Serbo-Croatian from Latin script to Cyrillic script.
Serbian (Српски / Srpski) specific code.
Tajik (Тоҷикӣ) specific code, converting Tajiki to Latin orthography.
Standard Moroccan Amazigh specific code.
An interface for creating language converters.
getLanguageConverter( $language=null)
Provide a LanguageConverter for given language.
__construct(ServiceOptions $options, ObjectFactory $objectFactory, callable $defaultLanguage)
isConversionDisabled()
Whether to disable language variant conversion.
isLinkConversionDisabled()
Whether to disable language variant conversion for links.
A class containing constants representing the names of configuration variables.
const UsePigLatinVariant
Name constant for the UsePigLatinVariant setting, for use with Config::get()
const DisableLangConversion
Name constant for the DisableLangConversion setting, for use with Config::get()
const DisableTitleConversion
Name constant for the DisableTitleConversion setting, for use with Config::get()
Stub object for the user language.
The shared interface for all language converters.