diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 760cd6842..92d3fbd9d 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2440,11 +2440,12 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ */ public function sendMessage($message){ if($message instanceof TextContainer){ - if($message instanceof TranslationContainer){ - $this->sendTranslation($message->getText(), $message->getParameters()); - return; - } - $message = $message->getText(); + if ($message instanceof TranslationContainer) { + $this->sendTranslation($message->getText(), $message->getParameters()); + return; + } + $message = $message->getText(); + } $mes = explode("\n", $this->server->getLanguage()->translateString($message)); @@ -2460,12 +2461,17 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ public function sendTranslation($message, array $parameters = []){ $pk = new TextPacket(); - $pk->type = TextPacket::TYPE_TRANSLATION; - $pk->message = $this->server->getLanguage()->translateString($message, [], "pocketmine."); - foreach($parameters as $i => $p){ - $parameters[$i] = $this->server->getLanguage()->translateString($p, [], "pocketmine."); + if(!$this->server->isLanguageForced()){ + $pk->type = TextPacket::TYPE_TRANSLATION; + $pk->message = $this->server->getLanguage()->translateString($message, [], "pocketmine."); + foreach($parameters as $i => $p){ + $parameters[$i] = $this->server->getLanguage()->translateString($p, [], "pocketmine."); + } + $pk->parameters = $parameters; + }else{ + $pk->type = TextPacket::TYPE_RAW; + $pk->message = $this->server->getLanguage()->translateString($message, $parameters); } - $pk->parameters = $parameters; $this->dataPacket($pk); } diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index d2748a2f7..1b8fb4541 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -201,6 +201,8 @@ class Server{ /** @var BaseLang */ private $baseLang; + private $forceLanguage = false; + private $serverID; private $autoloader; @@ -1515,6 +1517,7 @@ class Server{ "auto-save" => true, ]); + $this->forceLanguage = $this->getProperty("settings.force-language", false); $this->baseLang = new BaseLang($this->getProperty("settings.language", BaseLang::FALLBACK_LANGUAGE)); $this->logger->info($this->getLanguage()->translateString("language.selected", [$this->getLanguage()->getName(), $this->getLanguage()->getLang()])); @@ -2262,6 +2265,13 @@ class Server{ return $this->baseLang; } + /** + * @return bool + */ + public function isLanguageForced(){ + return $this->forceLanguage; + } + /** * @return Network */ diff --git a/src/pocketmine/event/TextContainer.php b/src/pocketmine/event/TextContainer.php index 149b3c90f..151787a5d 100644 --- a/src/pocketmine/event/TextContainer.php +++ b/src/pocketmine/event/TextContainer.php @@ -21,8 +21,6 @@ namespace pocketmine\event; -use pocketmine\Player; - class TextContainer{ /** @var string $text */ @@ -43,10 +41,6 @@ class TextContainer{ return $this->text; } - public function send(Player $p){ - $p->sendMessage($this->getText()); - } - /** * @return string */ diff --git a/src/pocketmine/event/TranslationContainer.php b/src/pocketmine/event/TranslationContainer.php index cebd8505a..44c650d27 100644 --- a/src/pocketmine/event/TranslationContainer.php +++ b/src/pocketmine/event/TranslationContainer.php @@ -21,8 +21,6 @@ namespace pocketmine\event; -use pocketmine\Player; - class TranslationContainer extends TextContainer{ /** @var string[] $params */ @@ -77,8 +75,4 @@ class TranslationContainer extends TextContainer{ ++$i; } } - - public function send(Player $p){ - $p->sendTranslation($this->getText(), $this->getParameters()); - } } \ No newline at end of file diff --git a/src/pocketmine/resources/pocketmine.yml b/src/pocketmine/resources/pocketmine.yml index b7a45f81b..62e438c09 100644 --- a/src/pocketmine/resources/pocketmine.yml +++ b/src/pocketmine/resources/pocketmine.yml @@ -7,6 +7,8 @@ settings: #Three-letter language code for server-side localization #Check your language code on https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes language: "eng" + #Whether to send all strings translated to server locale or let the device handle them + force-language: false shutdown-message: "Server closed" #Allow listing plugins via Query query-plugins: true