Skip to content

Commit a4e1c10

Browse files
committed
Localise /status, /version <plugin> and some other hardcoded strings
1 parent 9333a87 commit a4e1c10

File tree

11 files changed

+311
-51
lines changed

11 files changed

+311
-51
lines changed

resources/translations/eng.ini

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ tile.respawn_anchor.respawnSet=Respawn point set
324324
tile.respawn_anchor.notValid=Your respawn anchor was out of charges, missing or obstructed
325325
326326
; -------------------- PocketMine-MP main runtime language strings, always translated server-side --------------------
327+
pocketmine.block.bed.incomplete=This bed is incomplete
327328
pocketmine.command.alias.illegal=Could not register alias '{%0}' because it contains illegal characters
328329
pocketmine.command.alias.notFound=Could not register alias '{%0}' because it contains commands that do not exist: {%1}
329330
pocketmine.command.alias.recursive=Could not register alias '{%0}' because it contains recursive commands: {%1}
@@ -340,6 +341,7 @@ pocketmine.command.effect.description=Adds/Removes effects on players
340341
pocketmine.command.enchant.description=Adds enchantments on items
341342
pocketmine.command.error.permission=You don't have permission to use the command: {%commandName}
342343
pocketmine.command.error.playerNotFound=Cannot find a player matching "{%playerName}"
344+
pocketmine.command.error.playerUserOnly=This command syntax can only be used as a player
343345
pocketmine.command.gamemode.description=Changes the player to a specific game mode
344346
pocketmine.command.gamemode.failure=Game mode change for {%playerName} failed!
345347
pocketmine.command.gamemode.unknown=Unknown game mode "{%gameModeName}"
@@ -376,6 +378,26 @@ pocketmine.command.setworldspawn.description=Sets a world's spawn point. If no c
376378
pocketmine.command.spawnpoint.description=Sets a player's spawn point
377379
pocketmine.command.spawnpoint.success=Set {%0}'s spawn point to ({%1}, {%2}, {%3})
378380
pocketmine.command.status.description=Reads back the server's performance.
381+
pocketmine.command.status.header=Server status
382+
pocketmine.command.status.memory.mainThread=Main thread memory: {%info}
383+
pocketmine.command.status.memory.manager=Maximum memory (manager): {%info}
384+
pocketmine.command.status.memory.stat={%megabytes} MB.
385+
pocketmine.command.status.memory.total=Total memory: {%info}
386+
pocketmine.command.status.memory.virtual=Total virtual memory: {%info}
387+
pocketmine.command.status.network.download=Network download: {%info}
388+
pocketmine.command.status.network.stat={%kbps} kB/s
389+
pocketmine.command.status.network.upload=Network upload: {%info}
390+
pocketmine.command.status.threads=Thread count: {%count}
391+
pocketmine.command.status.tps.average=Average TPS: {%info}
392+
pocketmine.command.status.tps.current=Current TPS: {%info}
393+
pocketmine.command.status.tps.stat={%ticksPerSecond} ({%loadPercent}%)
394+
pocketmine.command.status.uptime.days={%days} days {%hours} hours {%minutes} minutes {%seconds} seconds
395+
pocketmine.command.status.uptime.hours={%hours} hours {%minutes} minutes {%seconds} seconds
396+
pocketmine.command.status.uptime.minutes={%minutes} minutes {%seconds} seconds
397+
pocketmine.command.status.uptime.seconds={%seconds} seconds
398+
pocketmine.command.status.uptime=Uptime: {%uptime}
399+
pocketmine.command.status.world.timeStat={%milliseconds}ms
400+
pocketmine.command.status.world=World {%worldName}: {%loadedChunks} loaded chunks, {%tickingChunks} ticking chunks, {%entities} entities. Time {%timeStat}
379401
pocketmine.command.stop.description=Stops the server
380402
pocketmine.command.tell.description=Sends a private message to the given player
381403
pocketmine.command.time.description=Changes the time on each world
@@ -407,6 +429,10 @@ pocketmine.command.version.phpJitEnabled=enabled ({%extraJitInfo})
407429
pocketmine.command.version.phpJitNotSupported=not supported
408430
pocketmine.command.version.phpJitStatus=PHP JIT: {%jitStatus}
409431
pocketmine.command.version.phpVersion=PHP version: {%phpVersion}
432+
pocketmine.command.version.plugin.author=Author: {%author}
433+
pocketmine.command.version.plugin.authors=Authors: {%authors}
434+
pocketmine.command.version.plugin.header={%pluginName} version {%version}
435+
pocketmine.command.version.plugin.website=Website: {%website}
410436
pocketmine.command.version.serverSoftwareName=This server is running {%serverSoftwareName}
411437
pocketmine.command.version.serverSoftwareVersion=Server version: {%serverSoftwareVersion} (git hash: {%serverGitHash})
412438
pocketmine.command.version.usage=/version [plugin name]

src/block/Bed.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player
124124
$other = $this->getOtherHalf();
125125
$playerPos = $player->getPosition();
126126
if($other === null){
127-
$player->sendMessage(TextFormat::GRAY . "This bed is incomplete");
127+
$player->sendMessage(KnownTranslationFactory::pocketmine_block_bed_incomplete()->prefix(TextFormat::GRAY));
128128

129129
return true;
130130
}elseif($playerPos->distanceSquared($this->position) > 4 && $playerPos->distanceSquared($other->position) > 4){

src/command/defaults/SetWorldSpawnCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args
5252
$world = $location->getWorld();
5353
$pos = $location->asVector3()->floor();
5454
}else{
55-
$sender->sendMessage(TextFormat::RED . "You can only perform this command as a player");
55+
$sender->sendMessage(KnownTranslationFactory::pocketmine_command_error_playerUserOnly()->prefix(TextFormat::RED));
5656

5757
return true;
5858
}

src/command/defaults/StatusCommand.php

Lines changed: 55 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
namespace pocketmine\command\defaults;
2525

2626
use pocketmine\command\CommandSender;
27-
use pocketmine\lang\KnownTranslationFactory;
27+
use pocketmine\lang\KnownTranslationFactory as l10n;
28+
use pocketmine\lang\Translatable;
2829
use pocketmine\permission\DefaultPermissionNames;
2930
use pocketmine\utils\Process;
3031
use pocketmine\utils\TextFormat;
@@ -33,84 +34,99 @@
3334
use function microtime;
3435
use function number_format;
3536
use function round;
37+
use function strval;
3638

3739
class StatusCommand extends VanillaCommand{
3840

3941
public function __construct(){
4042
parent::__construct(
4143
"status",
42-
KnownTranslationFactory::pocketmine_command_status_description()
44+
l10n::pocketmine_command_status_description()
4345
);
4446
$this->setPermission(DefaultPermissionNames::COMMAND_STATUS);
4547
}
4648

49+
private static function send(CommandSender $sender, Translatable $message) : void{
50+
$sender->sendMessage($message->prefix(TextFormat::GOLD));
51+
}
52+
53+
private static function formatTPS(float $tps, float $usage, string $tpsColor) : Translatable{
54+
return l10n::pocketmine_command_status_tps_stat(strval($tps), strval($usage))->prefix($tpsColor);
55+
}
56+
57+
private static function formatBandwidth(float $bytes) : Translatable{
58+
//TODO: this should probably be number formatted?
59+
return l10n::pocketmine_command_status_network_stat(strval(round($bytes / 1024, 2)))->prefix(TextFormat::RED);
60+
}
61+
62+
private static function formatMemory(int $bytes) : Translatable{
63+
return l10n::pocketmine_command_status_memory_stat(number_format(round(($bytes / 1024) / 1024, 2), 2))->prefix(TextFormat::RED);
64+
}
65+
4766
public function execute(CommandSender $sender, string $commandLabel, array $args){
4867
$mUsage = Process::getAdvancedMemoryUsage();
4968

5069
$server = $sender->getServer();
51-
$sender->sendMessage(TextFormat::GREEN . "---- " . TextFormat::RESET . "Server status" . TextFormat::GREEN . " ----");
70+
$sender->sendMessage(l10n::pocketmine_command_status_header()->format(
71+
TextFormat::GREEN . "---- " . TextFormat::RESET,
72+
TextFormat::GREEN . " ----" . TextFormat::RESET
73+
));
5274

5375
$time = (int) (microtime(true) - $server->getStartTime());
5476

55-
$seconds = $time % 60;
56-
$minutes = null;
57-
$hours = null;
58-
$days = null;
59-
77+
$seconds = strval($time % 60);
6078
if($time >= 60){
61-
$minutes = floor(($time % 3600) / 60);
79+
$minutes = strval(floor(($time % 3600) / 60));
6280
if($time >= 3600){
63-
$hours = floor(($time % (3600 * 24)) / 3600);
64-
if($time >= 3600 * 24){
65-
$days = floor($time / (3600 * 24));
66-
}
81+
$hours = strval(floor(($time % (3600 * 24)) / 3600));
82+
$message = $time >= 3600 * 24 ?
83+
l10n::pocketmine_command_status_uptime_days(strval(floor($time / (3600 * 24))), $hours, $minutes, $seconds) :
84+
l10n::pocketmine_command_status_uptime_hours($hours, $minutes, $seconds);
85+
}else{
86+
$message = l10n::pocketmine_command_status_uptime_minutes($minutes, $seconds);
6787
}
88+
}else{
89+
$message = l10n::pocketmine_command_status_uptime_seconds($seconds);
6890
}
6991

70-
$uptime = ($minutes !== null ?
71-
($hours !== null ?
72-
($days !== null ?
73-
"$days days "
74-
: "") . "$hours hours "
75-
: "") . "$minutes minutes "
76-
: "") . "$seconds seconds";
77-
78-
$sender->sendMessage(TextFormat::GOLD . "Uptime: " . TextFormat::RED . $uptime);
92+
self::send($sender, l10n::pocketmine_command_status_uptime($message->prefix(TextFormat::RED)));
7993

8094
$tpsColor = TextFormat::GREEN;
81-
if($server->getTicksPerSecond() < 12){
95+
$tps = $server->getTicksPerSecond();
96+
if($tps < 12){
8297
$tpsColor = TextFormat::RED;
83-
}elseif($server->getTicksPerSecond() < 17){
98+
}elseif($tps < 17){
8499
$tpsColor = TextFormat::GOLD;
85100
}
86101

87-
$sender->sendMessage(TextFormat::GOLD . "Current TPS: {$tpsColor}{$server->getTicksPerSecond()} ({$server->getTickUsage()}%)");
88-
$sender->sendMessage(TextFormat::GOLD . "Average TPS: {$tpsColor}{$server->getTicksPerSecondAverage()} ({$server->getTickUsageAverage()}%)");
102+
self::send($sender, l10n::pocketmine_command_status_tps_current(self::formatTPS($tps, $server->getTickUsage(), $tpsColor)));
103+
self::send($sender, l10n::pocketmine_command_status_tps_average(self::formatTPS($server->getTicksPerSecondAverage(), $server->getTickUsageAverage(), $tpsColor)));
89104

90105
$bandwidth = $server->getNetwork()->getBandwidthTracker();
91-
$sender->sendMessage(TextFormat::GOLD . "Network upload: " . TextFormat::RED . round($bandwidth->getSend()->getAverageBytes() / 1024, 2) . " kB/s");
92-
$sender->sendMessage(TextFormat::GOLD . "Network download: " . TextFormat::RED . round($bandwidth->getReceive()->getAverageBytes() / 1024, 2) . " kB/s");
106+
self::send($sender, l10n::pocketmine_command_status_network_upload(self::formatBandwidth($bandwidth->getSend()->getAverageBytes())));
107+
self::send($sender, l10n::pocketmine_command_status_network_download(self::formatBandwidth($bandwidth->getReceive()->getAverageBytes())));
93108

94-
$sender->sendMessage(TextFormat::GOLD . "Thread count: " . TextFormat::RED . Process::getThreadCount());
109+
self::send($sender, l10n::pocketmine_command_status_threads(TextFormat::RED . Process::getThreadCount()));
95110

96-
$sender->sendMessage(TextFormat::GOLD . "Main thread memory: " . TextFormat::RED . number_format(round(($mUsage[0] / 1024) / 1024, 2), 2) . " MB.");
97-
$sender->sendMessage(TextFormat::GOLD . "Total memory: " . TextFormat::RED . number_format(round(($mUsage[1] / 1024) / 1024, 2), 2) . " MB.");
98-
$sender->sendMessage(TextFormat::GOLD . "Total virtual memory: " . TextFormat::RED . number_format(round(($mUsage[2] / 1024) / 1024, 2), 2) . " MB.");
111+
self::send($sender, l10n::pocketmine_command_status_memory_mainThread(self::formatMemory($mUsage[0])));
112+
self::send($sender, l10n::pocketmine_command_status_memory_total(self::formatMemory($mUsage[1])));
113+
self::send($sender, l10n::pocketmine_command_status_memory_virtual(self::formatMemory($mUsage[2])));
99114

100115
$globalLimit = $server->getMemoryManager()->getGlobalMemoryLimit();
101116
if($globalLimit > 0){
102-
$sender->sendMessage(TextFormat::GOLD . "Maximum memory (manager): " . TextFormat::RED . number_format(round(($globalLimit / 1024) / 1024, 2), 2) . " MB.");
117+
self::send($sender, l10n::pocketmine_command_status_memory_manager(self::formatMemory($globalLimit)));
103118
}
104119

105120
foreach($server->getWorldManager()->getWorlds() as $world){
106121
$worldName = $world->getFolderName() !== $world->getDisplayName() ? " (" . $world->getDisplayName() . ")" : "";
107122
$timeColor = $world->getTickRateTime() > 40 ? TextFormat::RED : TextFormat::YELLOW;
108-
$sender->sendMessage(TextFormat::GOLD . "World \"{$world->getFolderName()}\"$worldName: " .
109-
TextFormat::RED . number_format(count($world->getLoadedChunks())) . TextFormat::GREEN . " loaded chunks, " .
110-
TextFormat::RED . number_format(count($world->getTickingChunks())) . TextFormat::GREEN . " ticking chunks, " .
111-
TextFormat::RED . number_format(count($world->getEntities())) . TextFormat::GREEN . " entities. " .
112-
"Time $timeColor" . round($world->getTickRateTime(), 2) . "ms"
113-
);
123+
self::send($sender, l10n::pocketmine_command_status_world(
124+
"\"{$world->getFolderName()}\"$worldName",
125+
TextFormat::RED . number_format(count($world->getLoadedChunks())) . TextFormat::GREEN,
126+
TextFormat::RED . number_format(count($world->getTickingChunks())) . TextFormat::GREEN,
127+
TextFormat::RED . number_format(count($world->getEntities())) . TextFormat::GREEN,
128+
l10n::pocketmine_command_status_world_timeStat(strval(round($world->getTickRateTime(), 2)))->prefix($timeColor)
129+
));
114130
}
115131

116132
return true;

src/command/defaults/TeleportCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function __construct(){
5555
private function findPlayer(CommandSender $sender, string $playerName) : ?Player{
5656
$subject = $sender->getServer()->getPlayerByPrefix($playerName);
5757
if($subject === null){
58-
$sender->sendMessage(TextFormat::RED . "Can't find player " . $playerName);
58+
$sender->sendMessage(KnownTranslationFactory::pocketmine_command_error_playerNotFound($playerName)->prefix(TextFormat::RED));
5959
return null;
6060
}
6161
return $subject;

src/command/defaults/TransferServerCommand.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
use pocketmine\lang\KnownTranslationFactory;
2929
use pocketmine\permission\DefaultPermissionNames;
3030
use pocketmine\player\Player;
31+
use pocketmine\utils\TextFormat;
3132
use function count;
3233

3334
class TransferServerCommand extends VanillaCommand{
@@ -45,7 +46,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args
4546
if(count($args) < 1){
4647
throw new InvalidCommandSyntaxException();
4748
}elseif(!($sender instanceof Player)){
48-
$sender->sendMessage("This command must be executed as a player");
49+
$sender->sendMessage(KnownTranslationFactory::pocketmine_command_error_playerUserOnly()->prefix(TextFormat::RED));
4950

5051
return false;
5152
}

src/command/defaults/VanillaCommand.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,16 @@ protected function fetchPermittedPlayerTarget(CommandSender $sender, ?string $ta
4040
//TODO: we need proper command selector support, but this one is useful and easy to hack in for now
4141
if($target !== null && $target !== "@s"){
4242
$player = $sender->getServer()->getPlayerByPrefix($target);
43+
if($player === null){
44+
$sender->sendMessage(KnownTranslationFactory::pocketmine_command_error_playerNotFound($target)->prefix(TextFormat::RED));
45+
return null;
46+
}
4347
}elseif($sender instanceof Player){
4448
$player = $sender;
4549
}else{
4650
throw new InvalidCommandSyntaxException();
4751
}
4852

49-
if($player === null){
50-
$sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED));
51-
return null;
52-
}
5353
if(
5454
($player === $sender && $this->testPermission($sender, $selfPermission)) ||
5555
($player !== $sender && $this->testPermission($sender, $otherPermission))

src/command/defaults/VersionCommand.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,21 +107,24 @@ public function execute(CommandSender $sender, string $commandLabel, array $args
107107

108108
private function describeToSender(Plugin $plugin, CommandSender $sender) : void{
109109
$desc = $plugin->getDescription();
110-
$sender->sendMessage(TextFormat::DARK_GREEN . $desc->getName() . TextFormat::RESET . " version " . TextFormat::DARK_GREEN . $desc->getVersion());
110+
$sender->sendMessage(KnownTranslationFactory::pocketmine_command_version_plugin_header(
111+
TextFormat::DARK_GREEN . $desc->getName() . TextFormat::RESET,
112+
TextFormat::DARK_GREEN . $desc->getVersion() . TextFormat::RESET
113+
));
111114

112115
if($desc->getDescription() !== ""){
113116
$sender->sendMessage($desc->getDescription());
114117
}
115118

116119
if($desc->getWebsite() !== ""){
117-
$sender->sendMessage("Website: " . $desc->getWebsite());
120+
$sender->sendMessage(KnownTranslationFactory::pocketmine_command_version_plugin_website($desc->getWebsite()));
118121
}
119122

120123
if(count($authors = $desc->getAuthors()) > 0){
121124
if(count($authors) === 1){
122-
$sender->sendMessage("Author: " . implode(", ", $authors));
125+
$sender->sendMessage(KnownTranslationFactory::pocketmine_command_version_plugin_author(implode(", ", $authors)));
123126
}else{
124-
$sender->sendMessage("Authors: " . implode(", ", $authors));
127+
$sender->sendMessage(KnownTranslationFactory::pocketmine_command_version_plugin_authors(implode(", ", $authors)));
125128
}
126129
}
127130
}

0 commit comments

Comments
 (0)