id = $id; $this->source = $source; } /** * Defaults to wiki content language. * @return string Language code */ public function getSourceLanguage() { global $wgLanguageCode; return $wgLanguageCode; } /** * Fetch definitions from database. * @return array Array of messages keys with definitions. */ public function getDefinitions() { $definitions = []; // In theory the page could have templates that are substitued $source = wfMessage( $this->source ); if ( $source->isDisabled() ) { return []; } $contents = $source->text(); $contents = preg_replace( '~^\s*#.*$~m', '', $contents ); $messages = preg_split( '/\s+/', $contents ); foreach ( $messages as $message ) { if ( !$message ) { continue; } $definitions[$message] = wfMessage( $message )->inContentLanguage()->plain(); } return $definitions; } /** * Returns of stored translation of message specified by the $key in language * code $code. * * @param string $key Key of the message. * @param string $code Language code. * @return string|null The translation or null if it doesn't exists. */ public function getMessage( $key, $code ) { if ( $code && $this->getSourceLanguage() !== $code ) { return TranslateUtils::getMessageContent( $key, $code ); } else { return TranslateUtils::getMessageContent( $key, false ); } } }