Add missing translations in `init.lua`, translate `safe.lua` & `cuboid.lua`.

This commit is contained in:
Alexander Chibrikin 2023-10-18 05:45:43 +03:00
parent 6cb72a8389
commit c6ae70a96b
5 changed files with 207 additions and 84 deletions

View File

@ -1,6 +1,8 @@
local S = minetest.get_translator("worldedit")
worldedit.register_command("outset", {
params = "[h/v] <amount>",
description = "Outset the selected region.",
description = S("Outset the selected region."),
privs = {worldedit=true},
require_pos = 2,
parse = function(param)
@ -11,7 +13,7 @@ worldedit.register_command("outset", {
local hv_test = dir:find("[^hv]+")
if hv_test ~= nil then
return false, "Invalid direction."
return false, S("Invalid direction: @1", dir)
end
return true, dir, tonumber(amount)
@ -28,18 +30,18 @@ worldedit.register_command("outset", {
assert(worldedit.cuboid_linear_expand(name, 'y', 1, amount))
assert(worldedit.cuboid_linear_expand(name, 'y', -1, amount))
else
return false, "Invalid number of arguments"
return false, S("Invalid number of arguments")
end
worldedit.marker_update(name)
return true, "Region outset by " .. amount .. " blocks"
return true, S("Region outset by @1 blocks", amount)
end,
})
worldedit.register_command("inset", {
params = "[h/v] <amount>",
description = "Inset the selected region.",
description = S("Inset the selected region."),
privs = {worldedit=true},
require_pos = 2,
parse = function(param)
@ -48,7 +50,7 @@ worldedit.register_command("inset", {
return false
end
if dir:find("[^hv]") ~= nil then
return false, "Invalid direction."
return false, S("Invalid direction: @1", dir)
end
return true, dir, tonumber(amount)
@ -65,18 +67,18 @@ worldedit.register_command("inset", {
assert(worldedit.cuboid_linear_expand(name, 'y', 1, -amount))
assert(worldedit.cuboid_linear_expand(name, 'y', -1, -amount))
else
return false, "Invalid number of arguments"
return false, S("Invalid number of arguments")
end
worldedit.marker_update(name)
return true, "Region inset by " .. amount .. " blocks"
return true, S("Region inset by @1 blocks", amount)
end,
})
worldedit.register_command("shift", {
params = "x/y/z/?/up/down/left/right/front/back [+/-]<amount>",
description = "Shifts the selection area without moving its contents",
description = S("Shifts the selection area without moving its contents"),
privs = {worldedit=true},
require_pos = 2,
parse = function(param)
@ -98,20 +100,20 @@ worldedit.register_command("shift", {
end
if axis == nil or dir == nil then
return false, "Invalid if looking straight up or down"
return false, S("Invalid if looking straight up or down")
end
assert(worldedit.cuboid_shift(name, axis, amount * dir))
worldedit.marker_update(name)
return true, "Region shifted by " .. amount .. " nodes"
return true, S("Region shifted by @1 nodes", amount)
end,
})
worldedit.register_command("expand", {
params = "[+/-]x/y/z/?/up/down/left/right/front/back <amount> [reverse amount]",
description = "Expands the selection in the selected absolute or relative axis",
description = S("Expands the selection in the selected absolute or relative axis"),
privs = {worldedit=true},
require_pos = 2,
parse = function(param)
@ -135,7 +137,7 @@ worldedit.register_command("expand", {
axis, dir = worldedit.translate_direction(name, direction)
if axis == nil or dir == nil then
return false, "Invalid if looking straight up or down"
return false, S("Invalid if looking straight up or down")
end
else
if direction == "?" then
@ -153,14 +155,14 @@ worldedit.register_command("expand", {
worldedit.cuboid_linear_expand(name, axis, dir, amount)
worldedit.cuboid_linear_expand(name, axis, -dir, rev_amount)
worldedit.marker_update(name)
return true, "Region expanded by " .. (amount + rev_amount) .. " nodes"
return true, S("Region expanded by @1 nodes", amount + rev_amount)
end,
})
worldedit.register_command("contract", {
params = "[+/-]x/y/z/?/up/down/left/right/front/back <amount> [reverse amount]",
description = "Contracts the selection in the selected absolute or relative axis",
description = S("Contracts the selection in the selected absolute or relative axis"),
privs = {worldedit=true},
require_pos = 2,
parse = function(param)
@ -184,7 +186,7 @@ worldedit.register_command("contract", {
axis, dir = worldedit.translate_direction(name, direction)
if axis == nil or dir == nil then
return false, "Invalid if looking straight up or down"
return false, S("Invalid if looking straight up or down")
end
else
if direction == "?" then
@ -202,13 +204,13 @@ worldedit.register_command("contract", {
worldedit.cuboid_linear_expand(name, axis, dir, -amount)
worldedit.cuboid_linear_expand(name, axis, -dir, -rev_amount)
worldedit.marker_update(name)
return true, "Region contracted by " .. (amount + rev_amount) .. " nodes"
return true, S("Region contracted by @1 nodes", amount + rev_amount)
end,
})
worldedit.register_command("cubeapply", {
params = "<size>/(<sizex> <sizey> <sizez>) <command> [parameters]",
description = "Select a cube with side length <size> around position 1 and run <command> on region",
description = S("Select a cube with side length <size> around position 1 and run <command> on region"),
privs = {worldedit=true},
require_pos = 1,
parse = function(param)
@ -247,8 +249,7 @@ worldedit.register_command("cubeapply", {
local cmddef = assert(worldedit.registered_commands[cmd])
local success, missing_privs = minetest.check_player_privs(name, cmddef.privs)
if not success then
worldedit.player_notify(name, "Missing privileges: " ..
table.concat(missing_privs, ", "))
worldedit.player_notify(name, S("Missing privileges: @1", table.concat(missing_privs, ", ")))
return
end

View File

@ -254,7 +254,7 @@ local function open_schematic(name, param)
worldedit.player_notify(name, S("Invalid file format!"))
return
elseif version > worldedit.LATEST_SERIALIZATION_VERSION then
worldedit.player_notify(name, "Schematic was created with a newer version of WorldEdit.")
worldedit.player_notify(name, S("Schematic was created with a newer version of WorldEdit."))
return
end
@ -402,7 +402,7 @@ worldedit.register_command("reset", {
worldedit.set_pos[name] = nil
--make sure the user does not try to confirm an operation after resetting pos:
reset_pending(name)
worldedit.player_notify(name, "region reset")
worldedit.player_notify(name, S("region reset"))
end,
})
@ -412,7 +412,7 @@ worldedit.register_command("mark", {
privs = {worldedit=true},
func = function(name)
worldedit.marker_update(name)
worldedit.player_notify(name, "region marked")
worldedit.player_notify(name, S("region marked"))
end,
})
@ -427,7 +427,7 @@ worldedit.register_command("unmark", {
worldedit.marker_update(name)
worldedit.pos1[name] = pos1
worldedit.pos2[name] = pos2
worldedit.player_notify(name, "region unmarked")
worldedit.player_notify(name, S("region unmarked"))
end,
})
@ -465,7 +465,7 @@ worldedit.register_command("p", {
if param == "set" or param == "set1" or param == "set2" or param == "get" then
return true, param
end
return false, S("unknown subcommand: ") .. param
return false, S("unknown subcommand: @1", param)
end,
func = function(name, param)
if param == "set" then --set both WorldEdit positions
@ -551,10 +551,13 @@ worldedit.register_command("volume", {
local volume = worldedit.volume(pos1, pos2)
local abs = math.abs
worldedit.player_notify(name, "current region has a volume of " .. volume .. " nodes ("
.. abs(pos2.x - pos1.x) + 1 .. "*"
.. abs(pos2.y - pos1.y) + 1 .. "*"
.. abs(pos2.z - pos1.z) + 1 .. ")")
worldedit.player_notify(name, S(
"current region has a volume of @1 nodes (@2*@3*@4)",
volume,
abs(pos2.x - pos1.x) + 1,
abs(pos2.y - pos1.y) + 1,
abs(pos2.z - pos1.z) + 1
))
end,
})
@ -675,7 +678,7 @@ worldedit.register_command("replace", {
func = function(name, search_node, replace_node)
local count = worldedit.replace(worldedit.pos1[name], worldedit.pos2[name],
search_node, replace_node)
worldedit.player_notify(name, count .. " nodes replaced")
worldedit.player_notify(name, S("@1 nodes replaced", count))
end,
})
@ -689,7 +692,7 @@ worldedit.register_command("replaceinverse", {
func = function(name, search_node, replace_node)
local count = worldedit.replace(worldedit.pos1[name], worldedit.pos2[name],
search_node, replace_node, true)
worldedit.player_notify(name, count .. " nodes replaced")
worldedit.player_notify(name, S("@1 nodes replaced", count))
end,
})
@ -839,7 +842,7 @@ end
worldedit.register_command("hollowcylinder", {
params = "x/y/z/? <length> <radius1> [radius2] <node>",
description = "Add hollow cylinder at WorldEdit position 1 along the given axis with length <length>, base radius <radius1> (and top radius [radius2]), composed of <node>",
description = S("Add hollow cylinder at WorldEdit position 1 along the given axis with length <length>, base radius <radius1> (and top radius [radius2]), composed of <node>"),
privs = {worldedit=true},
require_pos = 1,
parse = check_cylinder,
@ -979,7 +982,7 @@ worldedit.register_command("copy", {
end
local count = worldedit.copy(worldedit.pos1[name], worldedit.pos2[name], axis, amount)
worldedit.player_notify(name, count .. " nodes copied")
worldedit.player_notify(name, S("@1 nodes copied", count))
end,
})
@ -1011,7 +1014,7 @@ worldedit.register_command("move", {
pos1[axis] = pos1[axis] + amount
pos2[axis] = pos2[axis] + amount
worldedit.marker_update(name)
worldedit.player_notify(name, count .. " nodes moved")
worldedit.player_notify(name, S("@1 nodes moved", count))
end,
})
@ -1040,7 +1043,7 @@ worldedit.register_command("stack", {
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
local count = worldedit.volume(pos1, pos2) * math.abs(repetitions)
worldedit.stack(pos1, pos2, axis, repetitions, function()
worldedit.player_notify(name, count .. " nodes stacked")
worldedit.player_notify(name, S("@1 nodes stacked", count))
end)
end,
})
@ -1053,11 +1056,11 @@ worldedit.register_command("stack2", {
parse = function(param)
local repetitions, incs = param:match("(%d+)%s*(.+)")
if repetitions == nil then
return false, "invalid count: " .. param
return false, S("invalid count: @1", param)
end
local x, y, z = incs:match("([+-]?%d+) ([+-]?%d+) ([+-]?%d+)")
if x == nil then
return false, "invalid increments: " .. param
return false, S("invalid increments: @1", param)
end
return true, tonumber(repetitions), vector.new(tonumber(x), tonumber(y), tonumber(z))
@ -1069,7 +1072,7 @@ worldedit.register_command("stack2", {
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
local count = worldedit.volume(pos1, pos2) * repetitions
worldedit.stack2(pos1, pos2, offset, repetitions, function()
worldedit.player_notify(name, count .. " nodes stacked")
worldedit.player_notify(name, S("@1 nodes stacked", count))
end)
end,
})
@ -1087,7 +1090,7 @@ worldedit.register_command("stretch", {
end
stretchx, stretchy, stretchz = tonumber(stretchx), tonumber(stretchy), tonumber(stretchz)
if stretchx == 0 or stretchy == 0 or stretchz == 0 then
return false, "invalid scaling factors: " .. param
return false, S("invalid scaling factors: @1", param)
end
return true, stretchx, stretchy, stretchz
end,
@ -1103,7 +1106,7 @@ worldedit.register_command("stretch", {
worldedit.pos2[name] = pos2
worldedit.marker_update(name)
worldedit.player_notify(name, count .. " nodes stretched")
worldedit.player_notify(name, S("@1 nodes stretched", count))
end,
})
@ -1117,7 +1120,7 @@ worldedit.register_command("transpose", {
if found == nil then
return false
elseif axis1 == axis2 then
return false, "invalid usage: axes must be different"
return false, S("invalid usage: axes must be different")
end
return true, axis1, axis2
end,
@ -1133,7 +1136,7 @@ worldedit.register_command("transpose", {
worldedit.pos2[name] = pos2
worldedit.marker_update(name)
worldedit.player_notify(name, count .. " nodes transposed")
worldedit.player_notify(name, S("@1 nodes transposed", count))
end,
})
@ -1152,7 +1155,7 @@ worldedit.register_command("flip", {
func = function(name, param)
if param == "?" then param = worldedit.player_axis(name) end
local count = worldedit.flip(worldedit.pos1[name], worldedit.pos2[name], param)
worldedit.player_notify(name, count .. " nodes flipped")
worldedit.player_notify(name, S("@1 nodes flipped", count))
end,
})
@ -1168,7 +1171,7 @@ worldedit.register_command("rotate", {
end
angle = tonumber(angle)
if angle % 90 ~= 0 or angle % 360 == 0 then
return false, "invalid usage: angle must be multiple of 90"
return false, S("invalid usage: angle must be multiple of 90")
end
return true, axis, angle
end,
@ -1183,7 +1186,7 @@ worldedit.register_command("rotate", {
worldedit.pos2[name] = pos2
worldedit.marker_update(name)
worldedit.player_notify(name, count .. " nodes rotated")
worldedit.player_notify(name, S("@1 nodes rotated", count))
end,
})
@ -1199,14 +1202,14 @@ worldedit.register_command("orient", {
end
angle = tonumber(angle)
if angle % 90 ~= 0 then
return false, "invalid usage: angle must be multiple of 90"
return false, S("invalid usage: angle must be multiple of 90")
end
return true, angle
end,
nodes_needed = check_region,
func = function(name, angle)
local count = worldedit.orient(worldedit.pos1[name], worldedit.pos2[name], angle)
worldedit.player_notify(name, count .. " nodes oriented")
worldedit.player_notify(name, S("@1 nodes oriented", count))
end,
})
@ -1218,7 +1221,7 @@ worldedit.register_command("fixlight", {
nodes_needed = check_region,
func = function(name)
local count = worldedit.fixlight(worldedit.pos1[name], worldedit.pos2[name])
worldedit.player_notify(name, count .. " nodes updated")
worldedit.player_notify(name, S("@1 nodes updated", count))
end,
})
@ -1247,7 +1250,7 @@ worldedit.register_command("drain", {
end
end
end
worldedit.player_notify(name, count .. " nodes updated")
worldedit.player_notify(name, S("@1 nodes updated", count))
end,
})
@ -1329,7 +1332,7 @@ worldedit.register_command("clearcut", {
func = function(name)
local pos1, pos2 = worldedit.sort_pos(worldedit.pos1[name], worldedit.pos2[name])
local count = clearcut(pos1, pos2)
worldedit.player_notify(name, count .. " nodes removed")
worldedit.player_notify(name, S("@1 nodes removed", count))
end,
})
@ -1341,7 +1344,7 @@ worldedit.register_command("hide", {
nodes_needed = check_region,
func = function(name)
local count = worldedit.hide(worldedit.pos1[name], worldedit.pos2[name])
worldedit.player_notify(name, count .. " nodes hidden")
worldedit.player_notify(name, S("@1 nodes hidden", count))
end,
})
@ -1360,7 +1363,7 @@ worldedit.register_command("suppress", {
nodes_needed = check_region,
func = function(name, node)
local count = worldedit.suppress(worldedit.pos1[name], worldedit.pos2[name], node)
worldedit.player_notify(name, count .. " nodes suppressed")
worldedit.player_notify(name, S("@1 nodes suppressed", count))
end,
})
@ -1379,7 +1382,7 @@ worldedit.register_command("highlight", {
nodes_needed = check_region,
func = function(name, node)
local count = worldedit.highlight(worldedit.pos1[name], worldedit.pos2[name], node)
worldedit.player_notify(name, count .. " nodes highlighted")
worldedit.player_notify(name, S("@1 nodes highlighted", count))
end,
})
@ -1391,7 +1394,7 @@ worldedit.register_command("restore", {
nodes_needed = check_region,
func = function(name)
local count = worldedit.restore(worldedit.pos1[name], worldedit.pos2[name])
worldedit.player_notify(name, count .. " nodes restored")
worldedit.player_notify(name, S("@1 nodes restored", count))
end,
})
@ -1405,9 +1408,9 @@ local function detect_misaligned_schematic(name, pos1, pos2)
local have_node_at_origin = node.name ~= "air" and node.name ~= "ignore"
if not have_node_at_origin then
worldedit.player_notify(name,
"Warning: The schematic contains excessive free space and WILL be "..
S("Warning: The schematic contains excessive free space and WILL be "..
"misaligned when allocated or loaded. To avoid this, shrink your "..
"area to cover exactly the nodes to be saved."
"area to cover exactly the nodes to be saved.")
)
end
end
@ -1422,7 +1425,7 @@ worldedit.register_command("save", {
return false
end
if not check_filename(param) then
return false, "Disallowed file name: " .. param
return false, S("Disallowed file name: @1", param)
end
return true, param
end,
@ -1439,14 +1442,14 @@ worldedit.register_command("save", {
local filename = path .. "/" .. param .. ".we"
local file, err = io.open(filename, "wb")
if err ~= nil then
worldedit.player_notify(name, "Could not save file to \"" .. filename .. "\"")
worldedit.player_notify(name, S("Could not save file to \"@1\"", filename))
return
end
file:write(result)
file:flush()
file:close()
worldedit.player_notify(name, count .. " nodes saved")
worldedit.player_notify(name, S("@1 nodes saved"))
end,
})
@ -1460,7 +1463,7 @@ worldedit.register_command("allocate", {
return false
end
if not check_filename(param) then
return false, "Disallowed file name: " .. param
return false, S("Disallowed file name: @1", param)
end
return true, param
end,
@ -1474,7 +1477,7 @@ worldedit.register_command("allocate", {
local nodepos1, nodepos2, count = worldedit.allocate(pos, value)
if not nodepos1 then
worldedit.player_notify(name, "Schematic empty, nothing allocated")
worldedit.player_notify(name, S("Schematic empty, nothing allocated"))
return false
end
@ -1482,7 +1485,7 @@ worldedit.register_command("allocate", {
worldedit.pos2[name] = nodepos2
worldedit.marker_update(name)
worldedit.player_notify(name, count .. " nodes allocated")
worldedit.player_notify(name, S("@1 nodes allocated", count))
end,
})
@ -1496,7 +1499,7 @@ worldedit.register_command("load", {
return false
end
if not check_filename(param) then
return false, "Disallowed file name: " .. param
return false, S("Disallowed file name: @1", param)
end
return true, param
end,
@ -1510,10 +1513,10 @@ worldedit.register_command("load", {
local count = worldedit.deserialize(pos, value)
if count == nil then
worldedit.player_notify(name, "Loading failed!")
worldedit.player_notify(name, S("Loading failed!"))
return false
end
worldedit.player_notify(name, count .. " nodes loaded")
worldedit.player_notify(name, S("@1 nodes loaded", count))
end,
})
@ -1568,7 +1571,7 @@ worldedit.register_command("mtschemcreate", {
return false
end
if not check_filename(param) then
return false, "Disallowed file name: " .. param
return false, S("Disallowed file name: @1", param)
end
return true, param
end,
@ -1583,9 +1586,9 @@ worldedit.register_command("mtschemcreate", {
worldedit.pos2[name], worldedit.prob_list[name],
filename)
if ret == nil then
worldedit.player_notify(name, "Failed to create Minetest schematic")
worldedit.player_notify(name, S("Failed to create Minetest schematic"))
else
worldedit.player_notify(name, "Saved Minetest schematic to " .. param)
worldedit.player_notify(name, S("Saved Minetest schematic to @1", param))
end
worldedit.prob_list[name] = {}
end,
@ -1601,7 +1604,7 @@ worldedit.register_command("mtschemplace", {
return false
end
if not check_filename(param) then
return false, "Disallowed file name: " .. param
return false, S("Disallowed file name: @1", param)
end
return true, param
end,
@ -1610,10 +1613,9 @@ worldedit.register_command("mtschemplace", {
local path = minetest.get_worldpath() .. "/schems/" .. param .. ".mts"
if minetest.place_schematic(pos, path) == nil then
worldedit.player_notify(name, "failed to place Minetest schematic")
worldedit.player_notify(name, S("failed to place Minetest schematic"))
else
worldedit.player_notify(name, "placed Minetest schematic " .. param ..
" at " .. minetest.pos_to_string(pos))
worldedit.player_notify(name, S("placed Minetest schematic @1 at @2", param, minetest.pos_to_string(pos)))
end
end,
})
@ -1624,7 +1626,7 @@ worldedit.register_command("mtschemprob", {
privs = {worldedit=true},
parse = function(param)
if param ~= "start" and param ~= "finish" and param ~= "get" then
return false, "unknown subcommand: " .. param
return false, S("unknown subcommand: @1", param)
end
return true, param
end,
@ -1632,10 +1634,10 @@ worldedit.register_command("mtschemprob", {
if param == "start" then --start probability setting
worldedit.set_pos[name] = "prob"
worldedit.prob_list[name] = {}
worldedit.player_notify(name, "select Minetest schematic probability values by punching nodes")
worldedit.player_notify(name, S("select Minetest schematic probability values by punching nodes"))
elseif param == "finish" then --finish probability setting
worldedit.set_pos[name] = nil
worldedit.player_notify(name, "finished Minetest schematic probability selection")
worldedit.player_notify(name, S("finished Minetest schematic probability selection"))
elseif param == "get" then --get all nodes that had probabilities set on them
local text = ""
local problist = worldedit.prob_list[name]
@ -1646,7 +1648,7 @@ worldedit.register_command("mtschemprob", {
local prob = math.floor(((v.prob / 256) * 100) * 100 + 0.5) / 100
text = text .. minetest.pos_to_string(v.pos) .. ": " .. prob .. "% | "
end
worldedit.player_notify(name, "currently set node probabilities:")
worldedit.player_notify(name, S("currently set node probabilities:"))
worldedit.player_notify(name, text)
end
end,
@ -1661,7 +1663,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
local e = {pos=worldedit.prob_pos[name], prob=tonumber(fields.text)}
if e.pos == nil or e.prob == nil or e.prob < 0 or e.prob > 256 then
worldedit.player_notify(name, "invalid node probability given, not saved")
worldedit.player_notify(name, S("invalid node probability given, not saved"))
return
end
problist[#problist+1] = e
@ -1676,6 +1678,6 @@ worldedit.register_command("clearobjects", {
nodes_needed = check_region,
func = function(name)
local count = worldedit.clear_objects(worldedit.pos1[name], worldedit.pos2[name])
worldedit.player_notify(name, count .. " objects cleared")
worldedit.player_notify(name, S("@1 objects cleared", count))
end,
})

View File

@ -8,6 +8,7 @@ no position 1 selected=
invalid usage=
Could not open file "@1"=
Invalid file format!=
Schematic was created with a newer version of WorldEdit.=
Get information about the WorldEdit mod=
WorldEdit @1 is available on this server. Type //help to get a list of commands, or get more information at @2=
@ -21,11 +22,14 @@ inspector: inspection enabled for @1, currently facing the @2 axis=
inspector: inspection disabled=
inspector: @1 at @2 (param1=@3, param2=@4, received light=@5) punched facing the @6 axis=inspector: @1 в @2 (param1=@3, param2=@4, received light=
Reset the region so that it is empty=
region reset=
Show markers at the region positions=
region marked=
Hide markers if currently shown=
region unmarked=
Set WorldEdit region position @1 to the player's location=
Set WorldEdit region, WorldEdit position 1, or WorldEdit position 2 by punching nodes, or display the current WorldEdit region=
unknown subcommand: =
unknown subcommand: @1=
select positions by punching two nodes=
select position @1 by punching a node=
position @1: @2=
@ -33,6 +37,7 @@ position @1 not set=
Set a WorldEdit region position to the position at (<x>, <y>, <z>)=
position @1 set to @2=
Display the volume of the current WorldEdit region=
current region has a volume of @1 nodes (@2*@3*@4)=
Remove all MapBlocks (16x16x16) containing the selected area from the map=
Area deleted.=
There was an error during deletion of the area.=
@ -46,6 +51,7 @@ Fill the current WorldEdit region with a random mix of <node1>, ...=
invalid search node name: @1=
invalid replace node name: @1=
Replace all instances of <search node> with <replace node> in the current WorldEdit region=
@1 nodes replaced=
Replace all nodes other than <search node> with <replace node> in the current WorldEdit region=
Add a hollow cube with its ground level centered at WorldEdit position 1 with dimensions <width> x <height> x <length>, composed of <node>.=
@1 nodes added=
@ -60,32 +66,86 @@ Add hollow pyramid centered at WorldEdit position 1 along the given axis with he
Add pyramid centered at WorldEdit position 1 along the given axis with height <height>, composed of <node>=
Add spiral centered at WorldEdit position 1 with side length <length>, height <height>, space between walls <space>, composed of <node>=
Copy the current WorldEdit region along the given axis by <amount> nodes=
@1 nodes copied=
Move the current WorldEdit region along the given axis by <amount> nodes=
@1 nodes moved=
Stack the current WorldEdit region along the given axis <count> times=
@1 nodes stacked=
Stack the current WorldEdit region <count> times by offset <x>, <y>, <z>=
invalid count: @1=
invalid increments: @1=
Scale the current WorldEdit positions and region by a factor of <stretchx>, <stretchy>, <stretchz> along the X, Y, and Z axes, repectively, with position 1 as the origin=
invalid scaling factors: @1=
@1 nodes stretched=
Transpose the current WorldEdit region along the given axes=
invalid usage: axes must be different=
@1 nodes transposed=
Flip the current WorldEdit region along the given axis=
@1 nodes flipped=
Rotate the current WorldEdit region around the given axis by angle <angle> (90 degree increment)=
invalid usage: angle must be multiple of 90=
@1 nodes rotated=
Rotate oriented nodes in the current WorldEdit region around the Y axis by angle <angle> (90 degree increment)=
@1 nodes oriented=
Fix the lighting in the current WorldEdit region=
@1 nodes updated=
Remove any fluid node within the current WorldEdit region=
Remove any plant, tree or foliage-like nodes in the selected region=
@1 nodes removed=
Hide all nodes in the current WorldEdit region non-destructively=
@1 nodes hidden=
Suppress all <node> in the current WorldEdit region non-destructively=
@1 nodes suppressed=
Highlight <node> in the current WorldEdit region by hiding everything else non-destructively=
@1 nodes highlighted=
Restores nodes hidden with WorldEdit in the current WorldEdit region=
@1 nodes restored=
Warning: The schematic contains excessive free space and WILL be misaligned when allocated or loaded. To avoid this, shrink your area to cover exactly the nodes to be saved.=
Save the current WorldEdit region to "(world folder)/schems/<file>.we"=
Disallowed file name: @1=
Could not save file to "@1"=
@1 nodes saved=
Set the region defined by nodes from "(world folder)/schems/<file>.we" as the current WorldEdit region=
Schematic empty, nothing allocated=
@1 nodes allocated=
Load nodes from "(world folder)/schems/<file>[.we[m]]" with position 1 of the current WorldEdit region as the origin=
Loading failed!=
@1 nodes loaded=
Executes <code> as a Lua chunk in the global namespace=
Executes <code> as a Lua chunk in the global namespace with the variable pos available, for each node in the current WorldEdit region=
Save the current WorldEdit region using the Minetest Schematic format to "(world folder)/schems/<filename>.mts"=
Failed to create Minetest schematic=
Saved Minetest schematic to @1=
Load nodes from "(world folder)/schems/<file>.mts" with position 1 of the current WorldEdit region as the origin=
failed to place Minetest schematic=
placed Minetest schematic @1 at @2=
Begins node probability entry for Minetest schematics, gets the nodes that have probabilities set, or ends node probability entry=
select Minetest schematic probability values by punching nodes=
finished Minetest schematic probability selection=
currently set node probabilities:=
invalid node probability given, not saved=
Clears all objects within the WorldEdit region=
@1 objects cleared=
### safe.lua ###
WARNING: this operation could affect up to @1 nodes; type //y to continue or //n to cancel=
Confirm a pending operation=
no operation pending=
Abort a pending operation=
### cuboid.lua ###
Outset the selected region.=
Invalid direction: @1=
Invalid number of arguments=
Region outset by @1 blocks=
Inset the selected region.=
Region inset by @1 blocks=
Shifts the selection area without moving its contents=
Invalid if looking straight up or down=
Region shifted by @1 nodes=
Expands the selection in the selected absolute or relative axis=
Region expanded by @1 nodes=
Contracts the selection in the selected absolute or relative axis=
Region contracted by @1 nodes=
Select a cube with side length <size> around position 1 and run <command> on region=
Missing privileges: @1=

View File

@ -8,6 +8,7 @@ no position 1 selected=не установлена позиция региона
invalid usage=не верное использование команды
Could not open file "@1"=Не удаётся открыть файл "@1"
Invalid file format!=Не верный формат файла!
Schematic was created with a newer version of WorldEdit.=Схема была создана с использованием более новой версии WorldEdit.
Get information about the WorldEdit mod=Вывести информацию о WorldEdit
WorldEdit @1 is available on this server. Type //help to get a list of commands, or get more information at @2=WorldEdit @1 доступен на этом сервере. Наберите команду //help чтобы увидеть список команд, больше информации по ссылке @2
@ -21,11 +22,14 @@ inspector: inspection enabled for @1, currently facing the @2 axis=inspector: и
inspector: inspection disabled=inspector: инспекция отключена
inspector: @1 at @2 (param1=@3, param2=@4, received light=@5) punched facing the @6 axis=inspector: @1 в @2 (param1=@3, param2=@4, received light=@5) ударен по поверхности @6
Reset the region so that it is empty=Сбросить выделение области
region reset=регион сброшен
Show markers at the region positions=Отобразить маркеры выделенной области
region marked=маркеры отображены
Hide markers if currently shown=Скрыть маркеры выделенной области
region unmarked=маркеры скрыты
Set WorldEdit region position @1 to the player's location=Установить маркер @1 для WorldEdit-региона в месте нахождения игрока
Set WorldEdit region, WorldEdit position 1, or WorldEdit position 2 by punching nodes, or display the current WorldEdit region=Выделить WorldEdit-регион или установить маркеры для WorldEdit-региона, либо отобразить уже выбранную область
unknown subcommand: =неизвестная подкоманда:
unknown subcommand: @1=неизвестная подкоманда: @1
select positions by punching two nodes=выберите позиции, ударив по блокам
select position @1 by punching a node=выберите позицию @1, ударив по блоку
position @1: @2=позиция @1: @2
@ -33,6 +37,7 @@ position @1 not set=позиция @1 не установлена
Set a WorldEdit region position to the position at (<x>, <y>, <z>)=Установить маркер для WorldEdit в позиции (<x>, <y>, <z>)
position @1 set to @2=позиция @1 установлена в @2
Display the volume of the current WorldEdit region=Вывести информацию об объёме текущей выделенной области WorldEdit (кол-во нод, размеры)
current region has a volume of @1 nodes (@2*@3*@4)=текущий регион имеет объем @1 нод (@2*@3*@4)
Remove all MapBlocks (16x16x16) containing the selected area from the map=Удалить MapBlocks (16x16x16), содержащие выбранную область
Area deleted.=Область удалена.
There was an error during deletion of the area.=Что-то пошло не так при удалении области.
@ -46,6 +51,7 @@ Fill the current WorldEdit region with a random mix of <node1>, ...=Заполн
invalid search node name: @1=неверное название блока-поиска: @1
invalid replace node name: @1=неверное название блока-замены: @1
Replace all instances of <search node> with <replace node> in the current WorldEdit region=Заменить все блоки <search node> на <replace node> в выбранной WorldEdit-области
@1 nodes replaced=заменено @1 нод(а/ы)
Replace all nodes other than <search node> with <replace node> in the current WorldEdit region=Заменить все блоки, кроме <search node>, на <replace node> в выбранной WorldEdit-области
Add a hollow cube with its ground level centered at WorldEdit position 1 with dimensions <width> x <height> x <length>, composed of <node>.=Установить полый куб с центром нижней грани в позиции 1 и указанными размерами, состоящий из блоков <node>.
@1 nodes added=добавлен(о) @1 блок(а/ов)
@ -60,32 +66,86 @@ Add hollow pyramid centered at WorldEdit position 1 along the given axis with he
Add pyramid centered at WorldEdit position 1 along the given axis with height <height>, composed of <node>=Установить пирамиду вдоль указанной оси, с центром в WorldEdit-позиции 1 высотой <height>, состоящую из блоков <node>
Add spiral centered at WorldEdit position 1 with side length <length>, height <height>, space between walls <space>, composed of <node>=Установить спираль с центром в WorldEdit-позиции 1 шириной <length>, высотой <height> и с расстоянием между витками <space>, состоящую из блоков <node>
Copy the current WorldEdit region along the given axis by <amount> nodes=Копировать текущий WorldEdit-регион со смещением вдоль указанной оси (x/y/z) на <amount> блоков
@1 nodes copied=скопировано @1 нод(а/ы)
Move the current WorldEdit region along the given axis by <amount> nodes=Переместить текущий WorldEdit-регион вдоль указанной оси (x/y/z) на <amount> блоков
@1 nodes moved=перемещено @1 нод(а/ы)
Stack the current WorldEdit region along the given axis <count> times=Размножить текущий WorldEdit-регион вдоль указанной оси <count> раз
@1 nodes stacked=размножено @1 нод(а/ы)
Stack the current WorldEdit region <count> times by offset <x>, <y>, <z>=Размножить текущий WorldEdit-регион <count> раз с шагом <x>, <y>, <z> по соответствующим осям
invalid count: @1=неверное количество: @1
invalid increments: @1=неверные приращения(шаг)
Scale the current WorldEdit positions and region by a factor of <stretchx>, <stretchy>, <stretchz> along the X, Y, and Z axes, repectively, with position 1 as the origin=Масштабировать текущий WorldEdit-регион с коэффициентами <stretchx>, <stretchy>, <stretchz> вдоль осей X, Y и Z, используя WorldEdit-позицию 1 в качестве точки отсчёта
invalid scaling factors: @1=неверные коэффициенты масштабирования: @1
@1 nodes stretched=масштабировано @1 нод(а/ы)
Transpose the current WorldEdit region along the given axes=Транспонировать текущий WorldEdit-регион по заданным осям.
invalid usage: axes must be different=недопустимое использование: оси должны быть разными
@1 nodes transposed=транспонировано @1 нод(а/ы)
Flip the current WorldEdit region along the given axis=Перевернуть/Отразить текущий WorldEdit-регион вдоль указанной оси
@1 nodes flipped=отражено @1 нод(а/ы)
Rotate the current WorldEdit region around the given axis by angle <angle> (90 degree increment)=Повернуть текущий WorldEdit-регион вокруг оси <axis> на угол <angle> (шаг - 90 градусов)
invalid usage: angle must be multiple of 90=недопустимое использование: угол должен быть кратен 90
@1 nodes rotated=повёрнуто @1 нод(а/ы)
Rotate oriented nodes in the current WorldEdit region around the Y axis by angle <angle> (90 degree increment)=Повернуть блоки в текущем WorldEdit-регионе вокруг оси Y на угол <angle> (шаг - 90 градусов)
@1 nodes oriented=повёрнуто @1 нод(а/ы)
Fix the lighting in the current WorldEdit region=Исправить освещение в текущем WorldEdit-регионе
@1 nodes updated=обновлено @1 нод(а/ы)
Remove any fluid node within the current WorldEdit region=Удалить любые жидкости в текущем WorldEdit-регионе
Remove any plant, tree or foliage-like nodes in the selected region=Удалить любые растения, деревья или листье-подобные ноды в текущем WorldEdit-регионе
@1 nodes removed=удалено @1 нод(а/ы)
Hide all nodes in the current WorldEdit region non-destructively=Скрыть узлы текущего WorldEdit-региона, не удаляя их
@1 nodes hidden=скрыто @1 нод(а/ы)
Suppress all <node> in the current WorldEdit region non-destructively=Скрыть все блоки <node> в текущем WorldEdit-регионе, не удаляя их
@1 nodes suppressed=скрыто @1 нод(а/ы)
Highlight <node> in the current WorldEdit region by hiding everything else non-destructively=Скрыть все блоки, кроме <node>, в текущем WorldEdit-регионе, не удаляя их
@1 nodes highlighted="подсвечено" @1 нод(а/ы)
Restores nodes hidden with WorldEdit in the current WorldEdit region=Восстановить скрытые WorldEdit'ом узлы в текущем WorldEdit-регионе
@1 nodes restored=восстановлено @1 нод(а/ы)
Warning: The schematic contains excessive free space and WILL be misaligned when allocated or loaded. To avoid this, shrink your area to cover exactly the nodes to be saved.=Предупреждение: Схема содержит слишком много свободного места и будет смещена при размещении или загрузке. Чтобы избежать этого, уменьшите область так, чтобы она охватывала именно те узлы, которые необходимо сохранить.
Save the current WorldEdit region to "(world folder)/schems/<file>.we"=Сохранить текущий WorldEdit-регион в файл "(world folder)/schems/<file>.we"
Set the region defined by nodes from "(world folder)/schems/<file>.we" as the current WorldEdit region=Установить область, определённую узлами из "(world folder)/schems/<file>.we", как текущий WorldEdit-регион
Disallowed file name: @1=Недопустимое имя файла: @1
Could not save file to "@1"=Не удалось сохранить файл в "@1"
@1 nodes saved=сохранено @1 нод(а/ы)
Set the region defined by nodes from "(world folder)/schems/<file>.we" as the current WorldEdit region=Выделить область, определённую узлами из "(world folder)/schems/<file>.we", как текущий WorldEdit-регион
Schematic empty, nothing allocated=Схема пуста, ничего не выделено
@1 nodes allocated=выделено @1 нод(а/ы)
Load nodes from "(world folder)/schems/<file>[.we[m]]" with position 1 of the current WorldEdit region as the origin=Загрузить регион из "(world folder)/schems/<file>[.we[m]]" с WorldEdit-позицией 1 в качестве точки отсчёта
Loading failed!=Не удалось загрузить!
@1 nodes loaded=загружено @1 нод(а/ы)
Executes <code> as a Lua chunk in the global namespace=Выполнить <code> как Lua-код в глобальном пространстве имён
Executes <code> as a Lua chunk in the global namespace with the variable pos available, for each node in the current WorldEdit region=Выполнить <code> как Lua-код в глобальном пространстве имён, с доступом к переменным позиций для каждого блока в текущем WordEdit-регионе
Save the current WorldEdit region using the Minetest Schematic format to "(world folder)/schems/<filename>.mts"=Сохранить текущий WorldEdit-регион с использованием сжатия в формат Minetest Schematic в файл "(world folder)/schems/<filename>.mts"
Failed to create Minetest schematic=Не удалось создать Minetest-схему
Saved Minetest schematic to @1=Minetest-схема сохранена в @1
Load nodes from "(world folder)/schems/<file>.mts" with position 1 of the current WorldEdit region as the origin=Загрузить блоки из "(world folder)/schems/<file>.mts" с WorldEdit-позицией 1 в качестве точки отсчёта
failed to place Minetest schematic=не удалось загрузить Minetest-схему
placed Minetest schematic @1 at @2=Minetest-схема @1 загружена в @2
Begins node probability entry for Minetest schematics, gets the nodes that have probabilities set, or ends node probability entry=Начать запись вероятностей для Minetest Schematic, ударяя по блокам, закончить запись вероятностей или вывести уже записанные вероятности
select Minetest schematic probability values by punching nodes=выберите значения вероятностей для Minetest-схемы, ударя по нодам
finished Minetest schematic probability selection=выбор вероятностей для Minetest-схемы завершен
currently set node probabilities:=заданные вероятности нод на данный момент:
invalid node probability given, not saved=недопустимая вероятность ноды, не сохранена
Clears all objects within the WorldEdit region=Очистить все объекты в текущем WorldEdit-регионе
@1 objects cleared=очищено @1 объектов
### safe.lua ###
WARNING: this operation could affect up to @1 nodes; type //y to continue or //n to cancel=ПРЕДУПРЕЖДЕНИЕ: эта операция может затронуть до @1 нод; введите //y для продолжения или //n для отмены
Confirm a pending operation=Подтвердить отложенную операцию
no operation pending=нет ожидающей операции
Abort a pending operation=Отклонить отложенную операцию
### cuboid.lua ###
Outset the selected region.=Расширить выделение региона.
Invalid direction: @1=Недопустимое направление: @1
Invalid number of arguments=Недопустимое количество аргументов
Region outset by @1 blocks=Регион расширен на @1 блок(а/ов)
Inset the selected region.=Сузить выделение региона.
Region inset by @1 blocks=Регион сужен на @1 блок(а/ов)
Shifts the selection area without moving its contents=Сдвинуть выделение региона без перемещения его содержимого
Invalid if looking straight up or down=Недопустимо, если смотреть прямо вверх или вниз
Region shifted by @1 nodes=Регион сдвинут на @1 нод(у/ы)
Expands the selection in the selected absolute or relative axis=Увеличить выделение региона по выбранной абсолютной или относительной оси
Region expanded by @1 nodes=Регион увеличен на @1 нод(у/ы)
Contracts the selection in the selected absolute or relative axis=Уменьшить выделение региона по выбранной абсолютной или относительной оси
Region contracted by @1 nodes=Регион уменьшен на @1 нод(у/ы)
Select a cube with side length <size> around position 1 and run <command> on region=Выделить куб с длиной стороны <size> вокруг позиции 1 и запустите <команду> в области
Missing privileges: @1=Отсутствуют привилегии: @1

View File

@ -11,7 +11,7 @@ local function safe_region(name, count, callback)
--save callback to call later
safe_region_callback[name] = callback
worldedit.player_notify(name, "WARNING: this operation could affect up to " .. count .. " nodes; type //y to continue or //n to cancel")
worldedit.player_notify(name, S("WARNING: this operation could affect up to @1 nodes; type //y to continue or //n to cancel", count))
end
local function reset_pending(name)
@ -24,7 +24,7 @@ minetest.register_chatcommand("/y", {
func = function(name)
local callback = safe_region_callback[name]
if not callback then
worldedit.player_notify(name, "no operation pending")
worldedit.player_notify(name, S("no operation pending"))
return
end
@ -38,7 +38,7 @@ minetest.register_chatcommand("/n", {
description = S("Abort a pending operation"),
func = function(name)
if not safe_region_callback[name] then
worldedit.player_notify(name, "no operation pending")
worldedit.player_notify(name, S("no operation pending"))
return
end