From df3428059c1ea4cc6a2687b64cf48c6b60c7976b Mon Sep 17 00:00:00 2001 From: Jordan Irwin Date: Mon, 12 Jul 2021 20:02:03 -0700 Subject: [PATCH] Add localization support... Breaks compatibility with Minetever versions 0.4.x --- README.md | 7 +--- TODO.txt | 1 - changelog.txt | 1 + chat.lua | 84 +++++++++++++++++++++++++++++---------------- locale/template.txt | 28 +++++++++++++++ mod.conf | 1 + 6 files changed, 86 insertions(+), 36 deletions(-) create mode 100644 locale/template.txt diff --git a/README.md b/README.md index a5f53cc..b3d2c52 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,18 @@ ## Cleaner mod for Minetest ---- ### Description: A [Minetest][] mod that can be used to remove/replace unknown entities, nodes, & items. Originally forked from [PilzAdam's ***clean*** mod][f.pilzadam]. ---- ### Licensing: [MIT](LICENSE.txt) ---- ### Requirements: -- Minetest 0.4.16 or newer +- Minetest minimum version: 5.0 - Depends: none ---- ### Usage: Registering items, entities, etc. for cleaning can be done in `cleaner.json` in the world directory. If it does not exist it will be created automatically when the server is started. @@ -72,7 +68,6 @@ cleaner.unsafe - default: false ``` ---- ### Links: - [![ContentDB](https://content.minetest.net/packages/AntumDeluge/cleaner/shields/title/)][ContentDB] diff --git a/TODO.txt b/TODO.txt index 49796ed..2f7ce98 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,4 +1,3 @@ TODO: -- add localization support - update world file when chat commands are used diff --git a/changelog.txt b/changelog.txt index bec291a..ea3a1b9 100644 --- a/changelog.txt +++ b/changelog.txt @@ -11,6 +11,7 @@ v1.2 - added setting for enabling "unsafe" methods & commands - added support for unregistering ores - all types are loaded from /cleaner.json file +- added localization support v1.1 ---- diff --git a/chat.lua b/chat.lua index 7873c63..f716243 100644 --- a/chat.lua +++ b/chat.lua @@ -4,6 +4,9 @@ -- @topic commands +local S = core.get_translator(cleaner.modname) + + local function pos_list(ppos, radius) local plist = {} @@ -19,14 +22,37 @@ local function pos_list(ppos, radius) end +local help_repo = { + entity = { + remove_params = "<" .. S("entity") .. "> [" .. S("radius") .. "]", + }, + node = { + remove_params = "<" .. S("node") .. "> [" .. S("radius") .. "]", + replace_params = "<" .. S("old_node") .. "> <" .. S("new_node") .. "> [" .. S("radius") .. "]", + }, + item = { + replace_params = "<" .. S("old_item") .. "> <" .. S("new_item") .. ">", + }, + ore = { + remove_params = "<" .. S("ore") .. ">", + }, + param = { + missing = S("Missing parameter."), + excess = S("Too many parameters."), + mal_radius = S("Radius must be a number."), + opt_radius = "[" .. S("radius") .. "]", + }, +} + + --- Removes nearby entities. -- -- @chatcmd remove_entity -- @param entity Entity technical name. core.register_chatcommand("remove_entity", { privs = {server=true}, - description = "Remove an entity from game.", - params = " [radius]", + description = S("Remove an entity from game."), + params = help_repo.entity.remove_params, func = function(name, param) local entity local radius = 100 @@ -39,9 +65,9 @@ core.register_chatcommand("remove_entity", { end if not entity or entity:trim() == "" then - return false, "Must supply entity name." + return false, help_repo.param.missing elseif not radius then - return false, "Radius must be a number." + return false, help_repo.param.mal_radius end local player = core.get_player_by_name(name) @@ -70,8 +96,8 @@ core.register_chatcommand("remove_entity", { -- @param node Node technical name. core.register_chatcommand("remove_node", { privs = {server=true}, - description = "Remove a node from game.", - params = " [radius]", + description = S("Remove a node from game."), + params = help_repo.node.remove_params, func = function(name, param) local nname local radius = 100 @@ -84,9 +110,9 @@ core.register_chatcommand("remove_node", { end if not nname or nname:trim() == "" then - return false, "Must supply node name." + return false, help_repo.param.missing elseif not radius then - return false, "Radius must be a number." + return false, help_repo.param.mal_radius end local ppos = core.get_player_by_name(name):get_pos() @@ -104,7 +130,7 @@ core.register_chatcommand("remove_node", { local function replace_item(src, tgt) if not core.registered_items[tgt] then - return false, "Cannot use unknown item \"" .. tgt .. "\" as replacement." + return false, S('Cannot use unknown item "@1" as replacement.', tgt) end if core.registered_items[src] then @@ -124,11 +150,11 @@ end -- @param new_item Technical name of item to be used in place. core.register_chatcommand("replace_item", { privs = {server=true}, - description = "Replace an item in game.", - params = " ", + description = S("Replace an item in game."), + params = help_repo.item.replace_params, func = function(name, param) if not param:find(" ") then - return false, "Not enough parameters." + return false, help_repo.param.missing end local src = param:split(" ") @@ -151,11 +177,11 @@ core.register_chatcommand("replace_item", { -- @param new_node Technical name of node to be used in place. core.register_chatcommand("replace_node", { privs = {server=true}, - description = "Replace a node in game.", - params = " [radius]", + description = S("Replace a node in game."), + params = help_repo.node.replace_params, func = function(name, param) if not param:find(" ") then - return false, "Not enough parameters." + return false, help_repo.param.missing end local radius = 100 @@ -168,12 +194,12 @@ core.register_chatcommand("replace_node", { end if not radius then - return false, "Radius must be a number." + return false, help_repo.param.mal_radius end local new_node = core.registered_nodes[tgt] if not new_node then - return false, "Cannot use unknown node \"" .. tgt .. "\" as replacement." + return false, S('Cannot use unknown node "@1" as replacement.', tgt) end local total_replaced = 0 @@ -188,7 +214,7 @@ core.register_chatcommand("replace_node", { end end - core.chat_send_player(name, "Replaced " .. total_replaced .. " nodes.") + core.chat_send_player(name, S("Replaced @1 nodes.", total_replaced)) return true end, }) @@ -199,11 +225,11 @@ core.register_chatcommand("replace_node", { -- @tparam[opt] int radius Search radius. core.register_chatcommand("find_unknown_nodes", { privs = {server=true}, - description = "Find names of unknown nodes.", - params = "[radius]", + description = S("Find names of unknown nodes."), + params = help_repo.param.opt_radius, func = function(name, param) if param:find(" ") then - return false, "Too many parameters." + return false, help_repo.param.excess end local radius = 100 @@ -212,7 +238,7 @@ core.register_chatcommand("find_unknown_nodes", { end if not radius then - return false, "Radius must be a number." + return false, help_repo.param.mal_radius end local ppos = core.get_player_by_name(name):get_pos() @@ -231,9 +257,9 @@ core.register_chatcommand("find_unknown_nodes", { end if #unknown_nodes > 0 then - core.chat_send_player(name, "Found unknown nodes: " .. table.concat(unknown_nodes, ", ")) + core.chat_send_player(name, S("Found unknown nodes: @1", table.concat(unknown_nodes, ", "))) else - core.chat_send_player(name, "No unknown nodes found") + core.chat_send_player(name, S("No unknown nodes found.")) end return true @@ -255,20 +281,20 @@ if cleaner.unsafe then -- @param ore Ore technical name. core.register_chatcommand("remove_ore", { privs = {server=true}, - description = "Remove an ore from game.", - params = "", + description = S("Remove an ore from game."), + params = help_repo.ore.remove_params, func = function(name, param) if param:find(" ") then - return false, "Too many parameters." + return false, help_repo.param.excess end core.after(0, function() local registered, total_removed = cleaner.remove_ore(param) if not registered then - core.chat_send_player(name, "Ore \"" .. param .. "\" not found, not unregistering.") + core.chat_send_player(name, S('Ore "@1" not found, not unregistering.', param)) else - core.chat_send_player(name, "Unregistered " .. total_removed .. " ores (this will be undone after server restart).") + core.chat_send_player(name, S("Unregistered @1 ores (this will be undone after server restart).", total_removed)) end end) diff --git a/locale/template.txt b/locale/template.txt new file mode 100644 index 0000000..7007365 --- /dev/null +++ b/locale/template.txt @@ -0,0 +1,28 @@ +# Translated by + + +# chat commands +entity= +node= +radius= +old_item= +new_item= +old_node= +new_node= +ore= +Remove an entity from game.= +Remove a node from game.= +Replace an item in game.= +Replace a node in game.= +Find names of unknown nodes.= +Remove an ore from game.= +Missing parameter.= +Too many parameters.= +Radius must be a number.= +Cannot use unknown item "@1" as replacement.= +Cannot use unknown node "@1" as replacement.= +Replaced @1 nodes.= +Found unknown nodes: @1= +No unknown nodes found.= +Ore "@1" not found, not unregistering.= +Unregistered @1 ores (this will be undone after server restart).= diff --git a/mod.conf b/mod.conf index 8fbf2c2..a1a6472 100644 --- a/mod.conf +++ b/mod.conf @@ -3,3 +3,4 @@ description = A mod that can be used to remove/replace unknown entities, nodes, version = 1.1 license = MIT author = PilzAdam, Jordan Irwin (AntumDeluge) +min_minetest_version = 5.0