From d63b9d1648583e4be2ee379bbaca3e5b5c06cacd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 2 Oct 2021 20:33:32 +0100 Subject: [PATCH] WorldManager: localize strings for world loading, generation and conversion --- resources/locale | 2 +- src/lang/KnownTranslationFactory.php | 45 ++++++++++++++++++++++++++++ src/lang/KnownTranslationKeys.php | 7 +++++ src/world/WorldManager.php | 22 ++++++++++---- 4 files changed, 69 insertions(+), 7 deletions(-) diff --git a/resources/locale b/resources/locale index 4a322da43..6023e8b3b 160000 --- a/resources/locale +++ b/resources/locale @@ -1 +1 @@ -Subproject commit 4a322da43eb9beef727bd36be3d6b641b8316591 +Subproject commit 6023e8b3bf089eb7c25a5ddc7b29e9ef81520e7e diff --git a/src/lang/KnownTranslationFactory.php b/src/lang/KnownTranslationFactory.php index 62577ee16..62bc5d289 100644 --- a/src/lang/KnownTranslationFactory.php +++ b/src/lang/KnownTranslationFactory.php @@ -573,6 +573,12 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::COMMANDS_WHITELIST_USAGE, []); } + public static function death_attack_anvil(Translatable|string $param0) : Translatable{ + return new Translatable(KnownTranslationKeys::DEATH_ATTACK_ANVIL, [ + 0 => $param0, + ]); + } + public static function death_attack_arrow(Translatable|string $param0, Translatable|string $param1) : Translatable{ return new Translatable(KnownTranslationKeys::DEATH_ATTACK_ARROW, [ 0 => $param0, @@ -1490,6 +1496,25 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_level_conversion_finish(Translatable|string $worldName, Translatable|string $backupPath) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_CONVERSION_FINISH, [ + "worldName" => $worldName, + "backupPath" => $backupPath, + ]); + } + + public static function pocketmine_level_conversion_start(Translatable|string $worldName) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_CONVERSION_START, [ + "worldName" => $worldName, + ]); + } + + public static function pocketmine_level_corrupted(Translatable|string $details) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_CORRUPTED, [ + "details" => $details, + ]); + } + public static function pocketmine_level_defaultError() : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_DEFAULTERROR, []); } @@ -1520,16 +1545,36 @@ final class KnownTranslationFactory{ ]); } + public static function pocketmine_level_spawnTerrainGenerationProgress(Translatable|string $done, Translatable|string $total, Translatable|string $percentageDone) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_SPAWNTERRAINGENERATIONPROGRESS, [ + "done" => $done, + "total" => $total, + "percentageDone" => $percentageDone, + ]); + } + public static function pocketmine_level_unknownFormat() : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNKNOWNFORMAT, []); } + public static function pocketmine_level_unknownGenerator(Translatable|string $generatorName) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNKNOWNGENERATOR, [ + "generatorName" => $generatorName, + ]); + } + public static function pocketmine_level_unloading(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNLOADING, [ 0 => $param0, ]); } + public static function pocketmine_level_unsupportedFormat(Translatable|string $details) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_LEVEL_UNSUPPORTEDFORMAT, [ + "details" => $details, + ]); + } + public static function pocketmine_player_invalidEntity(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_PLAYER_INVALIDENTITY, [ 0 => $param0, diff --git a/src/lang/KnownTranslationKeys.php b/src/lang/KnownTranslationKeys.php index 5c3d5bfa3..62ead25d9 100644 --- a/src/lang/KnownTranslationKeys.php +++ b/src/lang/KnownTranslationKeys.php @@ -128,6 +128,7 @@ final class KnownTranslationKeys{ public const COMMANDS_WHITELIST_REMOVE_SUCCESS = "commands.whitelist.remove.success"; public const COMMANDS_WHITELIST_REMOVE_USAGE = "commands.whitelist.remove.usage"; public const COMMANDS_WHITELIST_USAGE = "commands.whitelist.usage"; + public const DEATH_ATTACK_ANVIL = "death.attack.anvil"; public const DEATH_ATTACK_ARROW = "death.attack.arrow"; public const DEATH_ATTACK_ARROW_ITEM = "death.attack.arrow.item"; public const DEATH_ATTACK_CACTUS = "death.attack.cactus"; @@ -324,13 +325,19 @@ final class KnownTranslationKeys{ public const POCKETMINE_LEVEL_AMBIGUOUSFORMAT = "pocketmine.level.ambiguousFormat"; public const POCKETMINE_LEVEL_BACKGROUNDGENERATION = "pocketmine.level.backgroundGeneration"; public const POCKETMINE_LEVEL_BADDEFAULTFORMAT = "pocketmine.level.badDefaultFormat"; + public const POCKETMINE_LEVEL_CONVERSION_FINISH = "pocketmine.level.conversion.finish"; + public const POCKETMINE_LEVEL_CONVERSION_START = "pocketmine.level.conversion.start"; + public const POCKETMINE_LEVEL_CORRUPTED = "pocketmine.level.corrupted"; public const POCKETMINE_LEVEL_DEFAULTERROR = "pocketmine.level.defaultError"; public const POCKETMINE_LEVEL_GENERATIONERROR = "pocketmine.level.generationError"; public const POCKETMINE_LEVEL_LOADERROR = "pocketmine.level.loadError"; public const POCKETMINE_LEVEL_NOTFOUND = "pocketmine.level.notFound"; public const POCKETMINE_LEVEL_PREPARING = "pocketmine.level.preparing"; + public const POCKETMINE_LEVEL_SPAWNTERRAINGENERATIONPROGRESS = "pocketmine.level.spawnTerrainGenerationProgress"; public const POCKETMINE_LEVEL_UNKNOWNFORMAT = "pocketmine.level.unknownFormat"; + public const POCKETMINE_LEVEL_UNKNOWNGENERATOR = "pocketmine.level.unknownGenerator"; public const POCKETMINE_LEVEL_UNLOADING = "pocketmine.level.unloading"; + public const POCKETMINE_LEVEL_UNSUPPORTEDFORMAT = "pocketmine.level.unsupportedFormat"; public const POCKETMINE_PLAYER_INVALIDENTITY = "pocketmine.player.invalidEntity"; public const POCKETMINE_PLAYER_INVALIDMOVE = "pocketmine.player.invalidMove"; public const POCKETMINE_PLAYER_LOGIN = "pocketmine.player.logIn"; diff --git a/src/world/WorldManager.php b/src/world/WorldManager.php index 452e5a125..d79eee0b6 100644 --- a/src/world/WorldManager.php +++ b/src/world/WorldManager.php @@ -50,6 +50,7 @@ use function iterator_to_array; use function microtime; use function round; use function sprintf; +use function strval; use function trim; class WorldManager{ @@ -207,28 +208,37 @@ class WorldManager{ try{ $provider = $providerClass->fromPath($path); }catch(CorruptedWorldException $e){ - $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError($name, "Corruption detected: " . $e->getMessage()))); + $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError( + $name, + KnownTranslationFactory::pocketmine_level_corrupted($e->getMessage()) + ))); return false; }catch(UnsupportedWorldFormatException $e){ - $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError($name, "Unsupported format: " . $e->getMessage()))); + $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError( + $name, + KnownTranslationFactory::pocketmine_level_unsupportedFormat($e->getMessage()) + ))); return false; } try{ GeneratorManager::getInstance()->getGenerator($provider->getWorldData()->getGenerator(), true); }catch(\InvalidArgumentException $e){ - $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError($name, "Unknown generator \"" . $provider->getWorldData()->getGenerator() . "\""))); + $this->server->getLogger()->error($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_loadError( + $name, + KnownTranslationFactory::pocketmine_level_unknownGenerator($provider->getWorldData()->getGenerator()) + ))); return false; } if(!($provider instanceof WritableWorldProvider)){ if(!$autoUpgrade){ throw new UnsupportedWorldFormatException("World \"$name\" is in an unsupported format and needs to be upgraded"); } - $this->server->getLogger()->notice("Upgrading world \"$name\" to new format. This may take a while."); + $this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_start($name))); $converter = new FormatConverter($provider, $this->providerManager->getDefault(), Path::join($this->server->getDataPath(), "backups", "worlds"), $this->server->getLogger()); $provider = $converter->execute(); - $this->server->getLogger()->notice("Upgraded world \"$name\" to new format successfully. Backed up pre-conversion world at " . $converter->getBackupPath()); + $this->server->getLogger()->notice($this->server->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_conversion_finish($name, $converter->getBackupPath()))); } $world = new World($this->server, $name, $provider, $this->server->getAsyncPool()); @@ -282,7 +292,7 @@ class WorldManager{ $oldProgress = (int) floor(($done / $total) * 100); $newProgress = (int) floor((++$done / $total) * 100); if(intdiv($oldProgress, 10) !== intdiv($newProgress, 10) || $done === $total || $done === 1){ - $world->getLogger()->info("Generating spawn terrain chunks: $done / $total ($newProgress%)"); + $world->getLogger()->info($world->getServer()->getLanguage()->translate(KnownTranslationFactory::pocketmine_level_spawnTerrainGenerationProgress(strval($done), strval($total), strval($newProgress)))); } }, static function() : void{