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", { worldedit.register_command("outset", {
params = "[h/v] <amount>", params = "[h/v] <amount>",
description = "Outset the selected region.", description = S("Outset the selected region."),
privs = {worldedit=true}, privs = {worldedit=true},
require_pos = 2, require_pos = 2,
parse = function(param) parse = function(param)
@ -11,7 +13,7 @@ worldedit.register_command("outset", {
local hv_test = dir:find("[^hv]+") local hv_test = dir:find("[^hv]+")
if hv_test ~= nil then if hv_test ~= nil then
return false, "Invalid direction." return false, S("Invalid direction: @1", dir)
end end
return true, dir, tonumber(amount) 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))
assert(worldedit.cuboid_linear_expand(name, 'y', -1, amount)) assert(worldedit.cuboid_linear_expand(name, 'y', -1, amount))
else else
return false, "Invalid number of arguments" return false, S("Invalid number of arguments")
end end
worldedit.marker_update(name) worldedit.marker_update(name)
return true, "Region outset by " .. amount .. " blocks" return true, S("Region outset by @1 blocks", amount)
end, end,
}) })
worldedit.register_command("inset", { worldedit.register_command("inset", {
params = "[h/v] <amount>", params = "[h/v] <amount>",
description = "Inset the selected region.", description = S("Inset the selected region."),
privs = {worldedit=true}, privs = {worldedit=true},
require_pos = 2, require_pos = 2,
parse = function(param) parse = function(param)
@ -48,7 +50,7 @@ worldedit.register_command("inset", {
return false return false
end end
if dir:find("[^hv]") ~= nil then if dir:find("[^hv]") ~= nil then
return false, "Invalid direction." return false, S("Invalid direction: @1", dir)
end end
return true, dir, tonumber(amount) 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))
assert(worldedit.cuboid_linear_expand(name, 'y', -1, -amount)) assert(worldedit.cuboid_linear_expand(name, 'y', -1, -amount))
else else
return false, "Invalid number of arguments" return false, S("Invalid number of arguments")
end end
worldedit.marker_update(name) worldedit.marker_update(name)
return true, "Region inset by " .. amount .. " blocks" return true, S("Region inset by @1 blocks", amount)
end, end,
}) })
worldedit.register_command("shift", { worldedit.register_command("shift", {
params = "x/y/z/?/up/down/left/right/front/back [+/-]<amount>", 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}, privs = {worldedit=true},
require_pos = 2, require_pos = 2,
parse = function(param) parse = function(param)
@ -98,20 +100,20 @@ worldedit.register_command("shift", {
end end
if axis == nil or dir == nil then 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 end
assert(worldedit.cuboid_shift(name, axis, amount * dir)) assert(worldedit.cuboid_shift(name, axis, amount * dir))
worldedit.marker_update(name) worldedit.marker_update(name)
return true, "Region shifted by " .. amount .. " nodes" return true, S("Region shifted by @1 nodes", amount)
end, end,
}) })
worldedit.register_command("expand", { worldedit.register_command("expand", {
params = "[+/-]x/y/z/?/up/down/left/right/front/back <amount> [reverse amount]", 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}, privs = {worldedit=true},
require_pos = 2, require_pos = 2,
parse = function(param) parse = function(param)
@ -135,7 +137,7 @@ worldedit.register_command("expand", {
axis, dir = worldedit.translate_direction(name, direction) axis, dir = worldedit.translate_direction(name, direction)
if axis == nil or dir == nil then 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 end
else else
if direction == "?" then 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, amount)
worldedit.cuboid_linear_expand(name, axis, -dir, rev_amount) worldedit.cuboid_linear_expand(name, axis, -dir, rev_amount)
worldedit.marker_update(name) 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, end,
}) })
worldedit.register_command("contract", { worldedit.register_command("contract", {
params = "[+/-]x/y/z/?/up/down/left/right/front/back <amount> [reverse amount]", 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}, privs = {worldedit=true},
require_pos = 2, require_pos = 2,
parse = function(param) parse = function(param)
@ -184,7 +186,7 @@ worldedit.register_command("contract", {
axis, dir = worldedit.translate_direction(name, direction) axis, dir = worldedit.translate_direction(name, direction)
if axis == nil or dir == nil then 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 end
else else
if direction == "?" then 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, -amount)
worldedit.cuboid_linear_expand(name, axis, -dir, -rev_amount) worldedit.cuboid_linear_expand(name, axis, -dir, -rev_amount)
worldedit.marker_update(name) 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, end,
}) })
worldedit.register_command("cubeapply", { worldedit.register_command("cubeapply", {
params = "<size>/(<sizex> <sizey> <sizez>) <command> [parameters]", 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}, privs = {worldedit=true},
require_pos = 1, require_pos = 1,
parse = function(param) parse = function(param)
@ -247,8 +249,7 @@ worldedit.register_command("cubeapply", {
local cmddef = assert(worldedit.registered_commands[cmd]) local cmddef = assert(worldedit.registered_commands[cmd])
local success, missing_privs = minetest.check_player_privs(name, cmddef.privs) local success, missing_privs = minetest.check_player_privs(name, cmddef.privs)
if not success then if not success then
worldedit.player_notify(name, "Missing privileges: " .. worldedit.player_notify(name, S("Missing privileges: @1", table.concat(missing_privs, ", ")))
table.concat(missing_privs, ", "))
return return
end end

View File

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

View File

@ -8,6 +8,7 @@ no position 1 selected=
invalid usage= invalid usage=
Could not open file "@1"= Could not open file "@1"=
Invalid file format!= Invalid file format!=
Schematic was created with a newer version of WorldEdit.=
Get information about the WorldEdit mod= 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= 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: 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= 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= Reset the region so that it is empty=
region reset=
Show markers at the region positions= Show markers at the region positions=
region marked=
Hide markers if currently shown= Hide markers if currently shown=
region unmarked=
Set WorldEdit region position @1 to the player's location= 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= 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 positions by punching two nodes=
select position @1 by punching a node= select position @1 by punching a node=
position @1: @2= position @1: @2=
@ -33,6 +37,7 @@ position @1 not set=
Set a WorldEdit region position to the position at (<x>, <y>, <z>)= Set a WorldEdit region position to the position at (<x>, <y>, <z>)=
position @1 set to @2= position @1 set to @2=
Display the volume of the current WorldEdit region= 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= Remove all MapBlocks (16x16x16) containing the selected area from the map=
Area deleted.= Area deleted.=
There was an error during deletion of the area.= 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 search node name: @1=
invalid replace node name: @1= invalid replace node name: @1=
Replace all instances of <search node> with <replace node> in the current WorldEdit region= 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= 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>.= 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= @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 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>= 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= 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= 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= 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>= 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= 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= 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= 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)= 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)= 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= Fix the lighting in the current WorldEdit region=
@1 nodes updated=
Remove any fluid node within the current WorldEdit region= Remove any fluid node within the current WorldEdit region=
Remove any plant, tree or foliage-like nodes in the selected 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= Hide all nodes in the current WorldEdit region non-destructively=
@1 nodes hidden=
Suppress all <node> in the current WorldEdit region non-destructively= 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= 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= 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.= 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"= 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= 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= 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=
Executes <code> as a Lua chunk in the global namespace with the variable pos available, for each node in the current WorldEdit region= 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"= 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= 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= 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= Clears all objects within the WorldEdit region=
@1 objects cleared=
### safe.lua ### ### safe.lua ###
WARNING: this operation could affect up to @1 nodes; type //y to continue or //n to cancel=
Confirm a pending operation= Confirm a pending operation=
no operation pending=
Abort a pending operation= 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=не верное использование команды invalid usage=не верное использование команды
Could not open file "@1"=Не удаётся открыть файл "@1" Could not open file "@1"=Не удаётся открыть файл "@1"
Invalid file format!=Не верный формат файла! Invalid file format!=Не верный формат файла!
Schematic was created with a newer version of WorldEdit.=Схема была создана с использованием более новой версии WorldEdit.
Get information about the WorldEdit mod=Вывести информацию о 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 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: 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 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=Сбросить выделение области Reset the region so that it is empty=Сбросить выделение области
region reset=регион сброшен
Show markers at the region positions=Отобразить маркеры выделенной области Show markers at the region positions=Отобразить маркеры выделенной области
region marked=маркеры отображены
Hide markers if currently shown=Скрыть маркеры выделенной области Hide markers if currently shown=Скрыть маркеры выделенной области
region unmarked=маркеры скрыты
Set WorldEdit region position @1 to the player's location=Установить маркер @1 для WorldEdit-региона в месте нахождения игрока 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-региона, либо отобразить уже выбранную область 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 positions by punching two nodes=выберите позиции, ударив по блокам
select position @1 by punching a node=выберите позицию @1, ударив по блоку select position @1 by punching a node=выберите позицию @1, ударив по блоку
position @1: @2=позиция @1: @2 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>) Set a WorldEdit region position to the position at (<x>, <y>, <z>)=Установить маркер для WorldEdit в позиции (<x>, <y>, <z>)
position @1 set to @2=позиция @1 установлена в @2 position @1 set to @2=позиция @1 установлена в @2
Display the volume of the current WorldEdit region=Вывести информацию об объёме текущей выделенной области WorldEdit (кол-во нод, размеры) 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), содержащие выбранную область Remove all MapBlocks (16x16x16) containing the selected area from the map=Удалить MapBlocks (16x16x16), содержащие выбранную область
Area deleted.=Область удалена. Area deleted.=Область удалена.
There was an error during deletion of the area.=Что-то пошло не так при удалении области. 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 search node name: @1=неверное название блока-поиска: @1
invalid replace 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-области 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-области 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>. 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 блок(а/ов) @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 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> 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> блоков 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> блоков 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> раз 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> по соответствующим осям 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 в качестве точки отсчёта 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-регион по заданным осям. 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-регион вдоль указанной оси 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 градусов) 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 градусов) 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-регионе 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 fluid node within the current WorldEdit region=Удалить любые жидкости в текущем WorldEdit-регионе
Remove any plant, tree or foliage-like nodes in the selected 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-региона, не удаляя их 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-регионе, не удаляя их 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-регионе, не удаляя их 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-регионе 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.=Предупреждение: Схема содержит слишком много свободного места и будет смещена при размещении или загрузке. Чтобы избежать этого, уменьшите область так, чтобы она охватывала именно те узлы, которые необходимо сохранить. 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" 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 в качестве точки отсчёта 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=Выполнить <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-регионе 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" 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 в качестве точки отсчёта 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, ударяя по блокам, закончить запись вероятностей или вывести уже записанные вероятности 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-регионе Clears all objects within the WorldEdit region=Очистить все объекты в текущем WorldEdit-регионе
@1 objects cleared=очищено @1 объектов
### safe.lua ### ### 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=Подтвердить отложенную операцию Confirm a pending operation=Подтвердить отложенную операцию
no operation pending=нет ожидающей операции
Abort a pending operation=Отклонить отложенную операцию 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 --save callback to call later
safe_region_callback[name] = callback 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 end
local function reset_pending(name) local function reset_pending(name)
@ -24,7 +24,7 @@ minetest.register_chatcommand("/y", {
func = function(name) func = function(name)
local callback = safe_region_callback[name] local callback = safe_region_callback[name]
if not callback then if not callback then
worldedit.player_notify(name, "no operation pending") worldedit.player_notify(name, S("no operation pending"))
return return
end end
@ -38,7 +38,7 @@ minetest.register_chatcommand("/n", {
description = S("Abort a pending operation"), description = S("Abort a pending operation"),
func = function(name) func = function(name)
if not safe_region_callback[name] then if not safe_region_callback[name] then
worldedit.player_notify(name, "no operation pending") worldedit.player_notify(name, S("no operation pending"))
return return
end end