Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
MessageGroupOld.php
Go to the documentation of this file.
1<?php
19
26abstract class MessageGroupOld implements MessageGroup {
30 protected $label = 'none';
31
36 public function getLabel( IContextSource $context = null ) {
37 return $this->label;
38 }
39
41 public function setLabel( $value ) {
42 $this->label = $value;
43 }
44
48 protected $id = 'none';
49
51 public function getId() {
52 return $this->id;
53 }
54
56 public function setId( $value ) {
57 $this->id = $value;
58 }
59
65 protected $namespace = NS_MEDIAWIKI;
66
71 public function getNamespace() {
72 return $this->namespace;
73 }
74
79 public function setNamespace( $ns ) {
80 $this->namespace = $ns;
81 }
82
87 protected $description = null;
88
89 public function getDescription( IContextSource $context = null ) {
90 return $this->description;
91 }
92
93 public function setDescription( $value ) {
94 $this->description = $value;
95 }
96
97 public function getIcon() {
98 return null;
99 }
100
105 protected $meta = false;
106
107 public function isMeta() {
108 return $this->meta;
109 }
110
111 public function getSourceLanguage() {
112 return 'en';
113 }
114
119 protected $mangler = null;
120
122 public function getMangler() {
123 if ( !isset( $this->mangler ) ) {
124 $this->mangler = new StringMatcher();
125 }
126
127 return $this->mangler;
128 }
129
130 public function load( $code ) {
131 return [];
132 }
133
140 public function getDefinitions() {
141 $defs = $this->load( $this->getSourceLanguage() );
142 if ( !is_array( $defs ) ) {
143 throw new RuntimeException( 'Unable to load definitions for ' . $this->getLabel() );
144 }
145
146 return $defs;
147 }
148
155 public function getUniqueDefinitions() {
156 return $this->meta ? [] : $this->getDefinitions();
157 }
158
160 public function getKeys() {
161 return array_keys( $this->getDefinitions() );
162 }
163
172 public function getMessage( $key, $code ) {
173 if ( !isset( $this->messages[$code] ) ) {
174 $this->messages[$code] = self::normaliseKeys( $this->load( $code ) );
175 }
176 $key = strtolower( str_replace( ' ', '_', $key ) );
177
178 return $this->messages[$code][$key] ?? null;
179 }
180
181 public static function normaliseKeys( $array ) {
182 if ( !is_array( $array ) ) {
183 return null;
184 }
185
186 $new = [];
187 foreach ( $array as $key => $v ) {
188 $key = strtolower( str_replace( ' ', '_', $key ) );
189 $new[$key] = $v;
190 }
191
192 return $new;
193 }
194
198 protected $messages = [];
199
206 public function getMessageFile( $code ) {
207 return false;
208 }
209
210 public function getPath() {
211 return false;
212 }
213
218 public function getMessageFileWithPath( $code ) {
219 $path = $this->getPath();
220 $file = $this->getMessageFile( $code );
221
222 if ( !$path || !$file ) {
223 return false;
224 }
225
226 return "$path/$file";
227 }
228
229 public function getSourceFilePath( $code ) {
230 return $this->getMessageFileWithPath( $code );
231 }
232
241 public function initCollection( $code, $unique = false ) {
242 if ( !$unique ) {
243 $definitions = $this->getDefinitions();
244 } else {
245 $definitions = $this->getUniqueDefinitions();
246 }
247
248 $defs = new MessageDefinitions( $definitions, $this->getNamespace() );
249 $collection = MessageCollection::newFromDefinitions( $defs, $code );
250
251 foreach ( $this->getTags() as $type => $tags ) {
252 $collection->setTags( $type, $tags );
253 }
254
255 return $collection;
256 }
257
262 public function exists() {
263 return true;
264 }
265
266 public function getValidator() {
267 return null;
268 }
269
270 public function getTags( $type = null ) {
271 return [];
272 }
273
278 protected function isSourceLanguage( $code ) {
279 return $code === $this->getSourceLanguage();
280 }
281
286 public function getMessageGroupStates() {
287 global $wgTranslateWorkflowStates;
288 $conf = $wgTranslateWorkflowStates ?: [];
289
290 Services::getInstance()->getHookRunner()
291 ->onTranslate_modifyMessageGroupStates( $this->getId(), $conf );
292
293 return new MessageGroupStates( $conf );
294 }
295
297 public function getTranslatableLanguages() {
298 return null;
299 }
300
301 protected static function addContext( Message $message, IContextSource $context = null ) {
302 if ( $context ) {
303 $message->inLanguage( $context->getLanguage() );
304 } else {
305 $message->inLanguage( 'en' );
306 }
307
308 return $message;
309 }
310
317 public function getTranslationAids() {
318 return TranslationAid::getTypes();
319 }
320
321 public function getSupportConfig(): ?array {
322 return null;
323 }
324}
return[ 'Translate:ConfigHelper'=> static function():ConfigHelper { return new ConfigHelper();}, 'Translate:CsvTranslationImporter'=> static function(MediaWikiServices $services):CsvTranslationImporter { return new CsvTranslationImporter( $services->getWikiPageFactory());}, 'Translate:EntitySearch'=> static function(MediaWikiServices $services):EntitySearch { return new EntitySearch($services->getMainWANObjectCache(), $services->getCollationFactory() ->makeCollation( 'uca-default-u-kn'), MessageGroups::singleton(), $services->getNamespaceInfo(), $services->get( 'Translate:MessageIndex'), $services->getTitleParser(), $services->getTitleFormatter());}, 'Translate:ExternalMessageSourceStateImporter'=> static function(MediaWikiServices $services):ExternalMessageSourceStateImporter { return new ExternalMessageSourceStateImporter($services->getMainConfig(), $services->get( 'Translate:GroupSynchronizationCache'), $services->getJobQueueGroup(), LoggerFactory::getInstance( 'Translate.GroupSynchronization'), $services->get( 'Translate:MessageIndex'));}, 'Translate:FileFormatFactory'=> static function(MediaWikiServices $services):FileFormatFactory { return new FileFormatFactory( $services->getObjectFactory());}, 'Translate:GroupSynchronizationCache'=> static function(MediaWikiServices $services):GroupSynchronizationCache { return new GroupSynchronizationCache( $services->get( 'Translate:PersistentCache'));}, 'Translate:HookRunner'=> static function(MediaWikiServices $services):HookRunner { return new HookRunner( $services->getHookContainer());}, 'Translate:MessageBundleStore'=> static function(MediaWikiServices $services):MessageBundleStore { return new MessageBundleStore($services->get( 'Translate:RevTagStore'), $services->getJobQueueGroup(), $services->getLanguageNameUtils(), $services->get( 'Translate:MessageIndex'));}, 'Translate:MessageGroupReviewStore'=> static function(MediaWikiServices $services):MessageGroupReviewStore { return new MessageGroupReviewStore($services->getDBLoadBalancer(), $services->get( 'Translate:HookRunner'));}, 'Translate:MessageGroupStatsTableFactory'=> static function(MediaWikiServices $services):MessageGroupStatsTableFactory { return new MessageGroupStatsTableFactory($services->get( 'Translate:ProgressStatsTableFactory'), $services->getDBLoadBalancer(), $services->getLinkRenderer(), $services->get( 'Translate:MessageGroupReviewStore'), $services->getMainConfig() ->get( 'TranslateWorkflowStates') !==false);}, 'Translate:MessageIndex'=> static function(MediaWikiServices $services):MessageIndex { $params=$services->getMainConfig() ->get( 'TranslateMessageIndex');if(is_string( $params)) { $params=(array) $params;} $class=array_shift( $params);return new $class( $params);}, 'Translate:MessagePrefixStats'=> static function(MediaWikiServices $services):MessagePrefixStats { return new MessagePrefixStats( $services->getTitleParser());}, 'Translate:ParsingPlaceholderFactory'=> static function():ParsingPlaceholderFactory { return new ParsingPlaceholderFactory();}, 'Translate:PersistentCache'=> static function(MediaWikiServices $services):PersistentCache { return new PersistentDatabaseCache($services->getDBLoadBalancer(), $services->getJsonCodec());}, 'Translate:ProgressStatsTableFactory'=> static function(MediaWikiServices $services):ProgressStatsTableFactory { return new ProgressStatsTableFactory($services->getLinkRenderer(), $services->get( 'Translate:ConfigHelper'));}, 'Translate:RevTagStore'=> static function(MediaWikiServices $services):RevTagStore { return new RevTagStore($services->getDBLoadBalancerFactory());}, 'Translate:SubpageListBuilder'=> static function(MediaWikiServices $services):SubpageListBuilder { return new SubpageListBuilder($services->get( 'Translate:TranslatableBundleFactory'), $services->getLinkBatchFactory());}, 'Translate:TranslatableBundleExporter'=> static function(MediaWikiServices $services):TranslatableBundleExporter { return new TranslatableBundleExporter($services->get( 'Translate:SubpageListBuilder'), $services->getWikiExporterFactory(), $services->getDBLoadBalancer());}, 'Translate:TranslatableBundleFactory'=> static function(MediaWikiServices $services):TranslatableBundleFactory { return new TranslatableBundleFactory($services->get( 'Translate:TranslatablePageStore'), $services->get( 'Translate:MessageBundleStore'));}, 'Translate:TranslatableBundleImporter'=> static function(MediaWikiServices $services):TranslatableBundleImporter { return new TranslatableBundleImporter($services->getWikiImporterFactory(), $services->get( 'Translate:TranslatablePageParser'), $services->getRevisionLookup());}, 'Translate:TranslatableBundleMover'=> static function(MediaWikiServices $services):TranslatableBundleMover { return new TranslatableBundleMover($services->getMovePageFactory(), $services->getJobQueueGroup(), $services->getLinkBatchFactory(), $services->get( 'Translate:TranslatableBundleFactory'), $services->get( 'Translate:SubpageListBuilder'), $services->getMainConfig() ->get( 'TranslatePageMoveLimit'));}, 'Translate:TranslatableBundleStatusStore'=> static function(MediaWikiServices $services):TranslatableBundleStatusStore { return new TranslatableBundleStatusStore($services->getDBLoadBalancer() ->getConnection(DB_PRIMARY), $services->getCollationFactory() ->makeCollation( 'uca-default-u-kn'), $services->getDBLoadBalancer() ->getMaintenanceConnectionRef(DB_PRIMARY));}, 'Translate:TranslatablePageParser'=> static function(MediaWikiServices $services):TranslatablePageParser { return new TranslatablePageParser($services->get( 'Translate:ParsingPlaceholderFactory'));}, 'Translate:TranslatablePageStore'=> static function(MediaWikiServices $services):TranslatablePageStore { return new TranslatablePageStore($services->get( 'Translate:MessageIndex'), $services->getJobQueueGroup(), $services->get( 'Translate:RevTagStore'), $services->getDBLoadBalancer(), $services->get( 'Translate:TranslatableBundleStatusStore'), $services->get( 'Translate:TranslatablePageParser'),);}, 'Translate:TranslationStashReader'=> static function(MediaWikiServices $services):TranslationStashReader { $db=$services->getDBLoadBalancer() ->getConnection(DB_REPLICA);return new TranslationStashStorage( $db);}, 'Translate:TranslationStatsDataProvider'=> static function(MediaWikiServices $services):TranslationStatsDataProvider { return new TranslationStatsDataProvider(new ServiceOptions(TranslationStatsDataProvider::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getObjectFactory(), $services->getDBLoadBalancer());}, 'Translate:TranslationUnitStoreFactory'=> static function(MediaWikiServices $services):TranslationUnitStoreFactory { return new TranslationUnitStoreFactory( $services->getDBLoadBalancer());}, 'Translate:TranslatorActivity'=> static function(MediaWikiServices $services):TranslatorActivity { $query=new TranslatorActivityQuery($services->getMainConfig(), $services->getDBLoadBalancer());return new TranslatorActivity($services->getMainObjectStash(), $query, $services->getJobQueueGroup());}, 'Translate:TtmServerFactory'=> static function(MediaWikiServices $services):TtmServerFactory { $config=$services->getMainConfig();$default=$config->get( 'TranslateTranslationDefaultService');if( $default===false) { $default=null;} return new TtmServerFactory( $config->get( 'TranslateTranslationServices'), $default);}]
@phpcs-require-sorted-array
This file contains the class for core message collections implementation.
Wrapper for message definitions, just to beauty the code.
The versatile default implementation of StringMangler interface.
Minimal service container.
Definition Services.php:44
This is the interface and base implementation of unmanaged message groups.
getTags( $type=null)
Returns message tags.
getNamespace()
Get the namespace where all the messages of this group belong.
getTranslatableLanguages()
@inheritDoc
getKeys()
@inheritDoc
$description
Holds description of this group.
getMessageFileWithPath( $code)
getMessageFile( $code)
Returns path to the file where translation of language code $code are.
$meta
Meta groups consist of multiple groups or parts of other groups.
$mangler
To avoid key conflicts between groups or separated changed messages between branches one can set a me...
getLabel(IContextSource $context=null)
getDefinitions()
This function returns array of type key => definition of all messages this message group handles.
$namespace
The namespace where all the messages of this group belong.
initCollection( $code, $unique=false)
Creates a new MessageCollection for this group.
getDescription(IContextSource $context=null)
Returns a longer description about the group.
getMessage( $key, $code)
Returns of stored translation of message specified by the $key in language code $code.
setNamespace( $ns)
Set the namespace where all the messages of this group belong.
getSupportConfig()
Gets support URL defined for the group if any.
$id
Group-wide unique id of this group.
exists()
Can be overwritten to return false if something is wrong.
$messages
All the messages for this group, by language code.
getTranslationAids()
List of available message types mapped to the classes implementing them.
$label
Human-readable name of this group.
getSourceLanguage()
Returns language code depicting the language of source text.
load( $code)
Returns a list of messages in a given language code.
getValidator()
Returns a message validator object or null.
getIcon()
Returns an icon for this message group if any.
getUniqueDefinitions()
This function can be used for meta message groups to list their "own" messages.
getMessageGroupStates()
Get the message group workflow state configuration.
Class for making the use of message group state easier.
Interface for message groups.