Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
MessageGroupOld.php
Go to the documentation of this file.
1<?php
18
25abstract class MessageGroupOld implements MessageGroup {
29 protected $label = 'none';
30
35 public function getLabel( IContextSource $context = null ) {
36 return $this->label;
37 }
38
40 public function setLabel( $value ) {
41 $this->label = $value;
42 }
43
47 protected $id = 'none';
48
50 public function getId() {
51 return $this->id;
52 }
53
55 public function setId( $value ) {
56 $this->id = $value;
57 }
58
64 protected $namespace = NS_MEDIAWIKI;
65
70 public function getNamespace() {
71 return $this->namespace;
72 }
73
78 public function setNamespace( $ns ) {
79 $this->namespace = $ns;
80 }
81
86 protected $description = null;
87
88 public function getDescription( IContextSource $context = null ) {
89 return $this->description;
90 }
91
92 public function setDescription( $value ) {
93 $this->description = $value;
94 }
95
96 public function getIcon() {
97 return null;
98 }
99
104 protected $meta = false;
105
106 public function isMeta() {
107 return $this->meta;
108 }
109
110 public function getSourceLanguage() {
111 return 'en';
112 }
113
118 protected $mangler = null;
119
121 public function getMangler() {
122 if ( !isset( $this->mangler ) ) {
123 $this->mangler = new StringMatcher();
124 }
125
126 return $this->mangler;
127 }
128
129 public function load( $code ) {
130 return [];
131 }
132
140 public function getDefinitions() {
141 $defs = $this->load( $this->getSourceLanguage() );
142 if ( !is_array( $defs ) ) {
143 throw new MWException( '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 Hooks::run( 'Translate:modifyMessageGroupStates', [ $this->getId(), &$conf ] );
291
292 return new MessageGroupStates( $conf );
293 }
294
296 public function getTranslatableLanguages() {
297 return null;
298 }
299
300 protected static function addContext( Message $message, IContextSource $context = null ) {
301 if ( $context ) {
302 $message->inLanguage( $context->getLanguage() );
303 } else {
304 $message->inLanguage( 'en' );
305 }
306
307 return $message;
308 }
309
316 public function getTranslationAids() {
317 return TranslationAid::getTypes();
318 }
319
320 public function getSupportConfig(): ?array {
321 return null;
322 }
323}
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:GroupSynchronizationCache'=> static function(MediaWikiServices $services):GroupSynchronizationCache { return new GroupSynchronizationCache( $services->get( 'Translate:PersistentCache'));}, 'Translate:MessageBundleStore'=> static function(MediaWikiServices $services):MessageBundleStore { return new MessageBundleStore(new RevTagStore(), $services->getJobQueueGroup(), $services->getLanguageNameUtils(), $services->get( 'Translate:MessageIndex'));}, 'Translate:MessageGroupReview'=> static function(MediaWikiServices $services):MessageGroupReview { return new MessageGroupReview($services->getDBLoadBalancer(), $services->getHookContainer());}, 'Translate:MessageGroupStatsTableFactory'=> static function(MediaWikiServices $services):MessageGroupStatsTableFactory { return new MessageGroupStatsTableFactory($services->get( 'Translate:ProgressStatsTableFactory'), $services->getDBLoadBalancer(), $services->getLinkRenderer(), $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:SubpageListBuilder'=> static function(MediaWikiServices $services):SubpageListBuilder { return new SubpageListBuilder($services->get( 'Translate:TranslatableBundleFactory'), $services->getLinkBatchFactory());}, 'Translate:TranslatableBundleFactory'=> static function(MediaWikiServices $services):TranslatableBundleFactory { return new TranslatableBundleFactory($services->get( 'Translate:TranslatablePageStore'), $services->get( 'Translate:MessageBundleStore'));}, '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(), new RevTagStore(), $services->getDBLoadBalancer(), $services->get( 'Translate:TranslatableBundleStatusStore'));}, 'Translate:TranslationStashReader'=> static function(MediaWikiServices $services):TranslationStashReader { $db=$services->getDBLoadBalancer() ->getConnectionRef(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());}, '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.
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.