From 4a3d9f8f83e971b5b19d6caa3b68b6cac91c32a9 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 8 Jan 2023 16:45:57 +0000 Subject: [PATCH] Make client-aware translation handling more coherent I have no clear idea why this was still using translateString(), since it's entirely unnecessary when we aren't selectively translating. --- src/network/mcpe/NetworkSession.php | 4 ++-- src/network/mcpe/handler/DeathPacketHandler.php | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index f064731b2..ca4ad258a 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -935,11 +935,11 @@ class NetworkSession{ if($message instanceof Translatable){ //we can't send nested translations to the client, so make sure they are always pre-translated by the server $language = $this->player->getLanguage(); - $parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $language->translate($p) : $p, $message->getParameters()); if(!$this->server->isLanguageForced()){ + $parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $language->translate($p) : $p, $message->getParameters()); $this->sendDataPacket(TextPacket::translation($language->translateString($message->getText(), $parameters, "pocketmine."), $parameters)); }else{ - $this->sendDataPacket(TextPacket::raw($language->translateString($message->getText(), $parameters))); + $this->sendDataPacket(TextPacket::raw($language->translate($message))); } }else{ $this->sendDataPacket(TextPacket::raw($message)); diff --git a/src/network/mcpe/handler/DeathPacketHandler.php b/src/network/mcpe/handler/DeathPacketHandler.php index dd8e78af8..f1d887100 100644 --- a/src/network/mcpe/handler/DeathPacketHandler.php +++ b/src/network/mcpe/handler/DeathPacketHandler.php @@ -54,12 +54,11 @@ class DeathPacketHandler extends PacketHandler{ if($this->deathMessage instanceof Translatable){ //we can't send nested translations to the client, so make sure they are always pre-translated by the server $language = $this->player->getLanguage(); - $parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $language->translate($p) : $p, $this->deathMessage->getParameters()); if(!$this->player->getServer()->isLanguageForced()){ + $parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $language->translate($p) : $p, $this->deathMessage->getParameters()); $message = $language->translateString($this->deathMessage->getText(), $parameters, "pocketmine."); }else{ - $message = $language->translateString($this->deathMessage->getText(), $parameters); - $parameters = []; + $message = $language->translate($this->deathMessage); } }else{ $message = $this->deathMessage;