Support for nested TranslationContainers

This commit is contained in:
Dylan K. Taylor
2021-08-14 20:57:13 +01:00
parent 804d02b086
commit 8b9d7d6390
8 changed files with 180 additions and 171 deletions

View File

@ -113,6 +113,7 @@ use pocketmine\world\sound\Sound;
use pocketmine\world\World;
use Ramsey\Uuid\UuidInterface;
use function abs;
use function array_map;
use function assert;
use function count;
use function explode;
@ -1781,9 +1782,11 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
}
/**
* @param string[] $parameters
* @param string[]|TranslationContainer[] $parameters
*/
public function sendTranslation(string $message, array $parameters = []) : void{
//we can't send nested translations to the client, so make sure they are always pre-translated by the server
$parameters = array_map(fn(string|TranslationContainer $p) => $p instanceof TranslationContainer ? $this->getLanguage()->translate($p) : $p, $parameters);
if(!$this->server->isLanguageForced()){
foreach($parameters as $i => $p){
$parameters[$i] = $this->getLanguage()->translateString($p, [], "pocketmine.");