From 377e113386a41f353915b89c2c1cd7fad0e9474c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Nov 2020 15:31:57 +0100 Subject: [PATCH] Translate possibility --- init.lua | 72 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 29 deletions(-) diff --git a/init.lua b/init.lua index e9df4fd..d3b7704 100644 --- a/init.lua +++ b/init.lua @@ -1,5 +1,8 @@ +local S = minetest.get_translator("cmdtool") +local F = minetest.formspec_escape + local NEWLINE = "\n" -local DESCRIPTION = "Command Tool" +local DESCRIPTION = S("Command Tool") local MAX_CMD_TOOLTIP_LEN = 48 local split_commands = function(commands_string) @@ -18,9 +21,9 @@ local set_commands = function(itemstack, commands_string) end local tooltip = DESCRIPTION .. NEWLINE .. first_cmd if #cmds == 2 then - tooltip = tooltip .. NEWLINE .. string.format("… and %d more command", #cmds - 1) + tooltip = tooltip .. NEWLINE .. S("… and 1 more command") elseif #cmds > 2 then - tooltip = tooltip .. NEWLINE .. string.format("… and %d more commands", #cmds - 1) + tooltip = tooltip .. NEWLINE .. S("… and @1 more command(s)", #cmds - 1) end meta:set_string("description", tooltip) else @@ -108,23 +111,34 @@ local execute_command = function(itemstack, player, pointed_thing) local required_privs = def.privs for priv, _ in pairs(required_privs) do if player_privs[priv] ~= true then - minetest.chat_send_player(player_name, "Insufficient privileges for using command “"..cmd_name.."”! You need the “"..priv.."” privilege.") + minetest.chat_send_player(player_name, minetest.colorize("#FF0000", S("Insufficient privileges for command “@1”! You need the “@2” privilege.", cmd_name, priv))) return end end -- All tests survived! -- Call the command - def.func(player_name, cmd_params) + local retval, msg = def.func(player_name, cmd_params) + + -- Print return value and message + if retval == true then + minetest.chat_send_player(player_name, minetest.colorize("#00FF00", "["..S("OK").."] ".. cmd)) + elseif retval == false then + minetest.chat_send_player(player_name, minetest.colorize("#FF0000", "["..S("FAIL").."] ".. cmd)) + elseif retval == nil then + minetest.chat_send_player(player_name, minetest.colorize("#FF8800", "["..S("UNKN").."] ".. cmd)) + end + if msg ~= nil and msg ~= "" then + minetest.chat_send_player(player_name, "> " .. msg) + end else - -- TODO: Rewrite error msg - minetest.chat_send_player(player_name, "Placeholders in command “"..cmd_name.."” do not apply!") + minetest.chat_send_player(player_name, minetest.colorize("#FF0000", S("Nothing pointed!"))) end else - minetest.chat_send_player(player_name, "The command “"..cmd_name.."” does not exist!") + minetest.chat_send_player(player_name, minetest.colorize("#FF0000", S("The command “@1” does not exist!", cmd_name))) return end else - minetest.chat_send_player(player_name, "Invalid command!") + minetest.chat_send_player(player_name, minetest.colorize("#FF0000", S("Invalid command!"))) return end -- One iteration is done. We continue with the next command. @@ -145,40 +159,40 @@ local open_command_configuration = function(itemstack, player, pointed_thing) end local formspec = "size[6,6]".. - "textarea[0.25,0;6,5;commands;Commands:;"..minetest.formspec_escape(commands_str).."]".. - "button_exit[0.5,5;2,1;ok;OK]".. - "button_exit[3.5,5;2,1;cancel;Cancel]" + "textarea[0.25,0;6,5;commands;"..F(S("Commands:"))..";"..F(commands_str).."]".. + "button_exit[0.5,5;2,1;ok;"..F(S("OK")).."]".. + "button_exit[3.5,5;2,1;cancel;"..F(S("Cancel")).."]" minetest.show_formspec(player_name, "cmdtool", formspec) end minetest.register_tool("cmdtool:cmdtool", { description = DESCRIPTION, - _doc_items_longdesc = "This is a programmable tool which can be used to run server commands.", - _doc_items_usagehelp = [[This tool is very mighty, so handle with care! -Rightclick to set the commands. Write a list of server commands you wish to execute (with one command per line), in that order, but without the trailing slash like in the chat. Confirm with the OK button. -To run the commands, use the attack key. Note that commands might fail if you lack the required privileges or you made a mistake. + _doc_items_longdesc = S("This is a programmable tool which can be used to run server commands."), + _doc_items_usagehelp = S("This tool is very mighty, so handle with care!").."\n".. +S("Rightclick to set the commands. Write a list of server commands you wish to execute (with one command per line), in that order, but without the trailing slash like in the chat. Confirm with the OK button.").."\n".. +S("To run the commands, use the attack key. Note that commands might fail if you lack the required privileges or you made a mistake.").."\n\n".. -Optionally, you can use the following placeholders to insert variable values into your commands: -• @playername: Your player name -• @plx, @ply and @plz: Your player coordinates -• @@: Literal at sign +S("Optionally, you can use the following placeholders to insert variable values into your commands:").."\n".. +S("• @playername: Your player name").."\n".. +S("• @plx, @ply and @plz: Your player coordinates").."\n".. +S("• @@: Literal at sign").."\n\n".. -These placeholders only work when you use the tool on a block. -• @ptx, @pty and @ptz: Coordinates of the pointed node (i.e. block) -• @nodename: Itemstring of the pointed node -• @param2: param2 of the pointed node +S("These placeholders only work when you use the tool on a block.").."\n".. +S("• @ptx, @pty and @ptz: Coordinates of the pointed node (i.e. block)").."\n".. +S("• @nodename: Itemstring of the pointed node").."\n".. +S("• @param2: param2 of the pointed node").."\n\n".. -Refer to “Advancd usage > Server commands” to learn more about server commands. +S("Refer to “Advancd usage > Server commands” to learn more about server commands.").."\n\n\n".. -Example 1: +S([[Example 1: time 12000 -→ Sets time to midday. +→ Sets time to midday.]]).."\n\n".. -Example 2: +S([[Example 2: teleport @plx 9 @plz giveme default:apple -→ Teleports you to Y=9 without changing the X and Z coordinates, then gives you an apple.]], +→ Teleports you to Y=9 without changing the X and Z coordinates, then gives you an apple.]]), inventory_image = "cmdtool_cmdtool.png", wield_imagee = "cmdtool_cmdtool.png", on_use = execute_command,