getMainConfig(); $wgLatinizeUrlJapaneseConvertorConfig = $config->get('LatinizeUrlJapaneseConvertorConfig'); self::$standalone = new self($wgLatinizeUrlJapaneseConvertorConfig); } return self::$standalone; } public static function onGetConvertor($langCode, &$convertor){ if(in_array($langCode, ['ja', 'ja-jp'])){ $convertor = self::standalone(); } return true; } public function __construct($config){ $this->config = $config; } public function parse($kanji){ if(!isset($this->config['url'])){ throw new Exception('LatinizeUrl remote api url not set.'); } $factory = MediaWikiServices::getInstance()->getHttpRequestFactory(); $req = $factory->create($this->config['url'], [ 'method' => 'POST', 'postData' => [ 'sentence' => $kanji ], ], __METHOD__); $status = \Status::wrap($req->execute()); if(!$status->isOK()){ throw new Exception('Cannot use LatinizeUrl remote api.'); } $json = \FormatJson::decode($req->getContent(), true); if(isset($json["error"])){ throw new Exception('LatinizeUrl remote api error: ' . $json["error"]); } if(!isset($json["status"]) || $json["status"] !== 1){ throw new Exception('Cannot use LatinizeUrl remote api.'); } return $json["data"]; } }