From e4adb01fbf5d036383ec1aab545f14d353f5af7c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 12 Sep 2019 19:03:10 +0200 Subject: [PATCH] Fix and improve translation strings (#2471) --- game_api.txt | 10 +- mods/binoculars/init.lua | 2 +- mods/boats/init.lua | 4 +- mods/bones/init.lua | 4 +- mods/butterflies/init.lua | 15 +- mods/carts/cart_entity.lua | 2 +- mods/default/craftitems.lua | 2 +- mods/default/furnace.lua | 19 +- mods/default/nodes.lua | 10 +- mods/dye/init.lua | 54 +++-- mods/farming/nodes.lua | 4 +- mods/map/init.lua | 2 +- mods/screwdriver/init.lua | 2 +- mods/stairs/init.lua | 399 +++++++++++++++++++++++++----------- mods/wool/init.lua | 24 ++- 15 files changed, 387 insertions(+), 166 deletions(-) diff --git a/game_api.txt b/game_api.txt index 4f1ff9a2..6ddeb980 100644 --- a/game_api.txt +++ b/game_api.txt @@ -726,27 +726,29 @@ delivered with Minetest Game, to keep them compatible with other mods. * `sounds`: See [#Default sounds] * `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition] -`stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds, worldaligntex)` +`stairs.register_stair_inner(subname, recipeitem, groups, images, description, sounds, worldaligntex, full_description)` * Registers an inner corner stair * `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_inner_subname" * `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil` * `groups`: See [Known damage and digging time defining groups] * `images`: See [Tile definition] - * `description`: Used for the description field in the stair's definition + * `description`: Used for the description field in the stair's definition with "Inner" prepended * `sounds`: See [#Default sounds] * `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition] + * `full_description`: Overrides the description, bypassing string concatenation. This is useful for translation. (optional) -`stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds, worldaligntex)` +`stairs.register_stair_outer(subname, recipeitem, groups, images, description, sounds, worldaligntex, full_description)` * Registers an outer corner stair * `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_outer_subname" * `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil` * `groups`: See [Known damage and digging time defining groups] * `images`: See [Tile definition] - * `description`: Used for the description field in the stair's definition + * `description`: Used for the description field in the stair's definition with "Outer" prepended * `sounds`: See [#Default sounds] * `worldaligntex`: A bool to set all textures world-aligned. Default false. See [Tile definition] + * `full_description`: Overrides the description, bypassing string concatenation. This is useful for translation. (optional) `stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds, worldaligntex)` diff --git a/mods/binoculars/init.lua b/mods/binoculars/init.lua index 4a977b8f..76858977 100644 --- a/mods/binoculars/init.lua +++ b/mods/binoculars/init.lua @@ -59,7 +59,7 @@ minetest.after(4.7, cyclic_update) -- Binoculars item minetest.register_craftitem("binoculars:binoculars", { - description = S("Binoculars\nUse with 'Zoom' key"), + description = S("Binoculars") .. "\n" .. S("Use with 'Zoom' key"), inventory_image = "binoculars_binoculars.png", stack_max = 1, diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 906a0979..a785bdc6 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -154,13 +154,13 @@ function boat.on_step(self, dtime) if ctrl.up and ctrl.down then if not self.auto then self.auto = true - minetest.chat_send_player(self.driver, S("[boats] Cruise on")) + minetest.chat_send_player(self.driver, S("Boat cruise mode on")) end elseif ctrl.down then self.v = self.v - dtime * 1.8 if self.auto then self.auto = false - minetest.chat_send_player(self.driver, S("[boats] Cruise off")) + minetest.chat_send_player(self.driver, S("Boat cruise mode off")) end elseif ctrl.up or self.auto then self.v = self.v + dtime * 1.8 diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 6e93062d..5e542593 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -269,7 +269,7 @@ minetest.register_on_dieplayer(function(player) meta:set_string("owner", player_name) if share_bones_time ~= 0 then - meta:set_string("infotext", S("@1's fresh bones.", player_name)) + meta:set_string("infotext", S("@1's fresh bones", player_name)) if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then meta:set_int("time", 0) @@ -279,6 +279,6 @@ minetest.register_on_dieplayer(function(player) minetest.get_node_timer(pos):start(10) else - meta:set_string("infotext", S("@1's bones.", player_name)) + meta:set_string("infotext", S("@1's bones", player_name)) end end) diff --git a/mods/butterflies/init.lua b/mods/butterflies/init.lua index 1263fa6c..6fd839fb 100644 --- a/mods/butterflies/init.lua +++ b/mods/butterflies/init.lua @@ -1,13 +1,13 @@ --- butrerflies/init.lua +-- butterflies/init.lua -- Load support for MT game translation. local S = minetest.get_translator("butterflies") -- register butterflies local butter_list = { - {"white", S("White")}, - {"red", S("Red")}, - {"violet", S("Violet")} + {"white", S("White Butterfly")}, + {"red", S("Red Butterfly")}, + {"violet", S("Violet Butterfly")} } for i in ipairs (butter_list) do @@ -15,7 +15,7 @@ for i in ipairs (butter_list) do local desc = butter_list[i][2] minetest.register_node("butterflies:butterfly_"..name, { - description = S("@1 Butterfly", desc), + description = desc, drawtype = "plantlike", tiles = {{ name = "butterflies_butterfly_"..name.."_animated.png", @@ -61,10 +61,9 @@ for i in ipairs (butter_list) do }) minetest.register_node("butterflies:hidden_butterfly_"..name, { - description = S("Hidden @1 Butterfly", desc), drawtype = "airlike", - inventory_image = "insects_butterfly_"..name..".png", - wield_image = "insects_butterfly_"..name..".png", + inventory_image = "butterflies_butterfly_"..name..".png", + wield_image = "butterflies_butterfly_"..name..".png", paramtype = "light", sunlight_propagates = true, walkable = false, diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index 97084ace..3c131a66 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -388,7 +388,7 @@ end minetest.register_entity("carts:cart", cart_entity) minetest.register_craftitem("carts:cart", { - description = S("Cart (Sneak+Click to pick up)"), + description = S("Cart") .. "\n" .. S("(Sneak+Click to pick up)"), inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"), wield_image = "carts_cart_side.png", on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index fe226765..dd76d1e5 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -165,7 +165,7 @@ minetest.register_craftitem("default:book", { }) minetest.register_craftitem("default:book_written", { - description = S("Book With Text"), + description = S("Book with Text"), inventory_image = "default_book_written.png", groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, stack_max = 1, diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 2c9f8645..d36a7f66 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -226,20 +226,20 @@ local function furnace_node_timer(pos, elapsed) end local fuel_state = S("Empty") - local active = "inactive" + local active = false local result = false if fuel_totaltime ~= 0 then - active = "active" + active = true local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - fuel_state = fuel_percent .. "%" + fuel_state = S("@1%", fuel_percent) formspec = default.get_furnace_active_formspec(fuel_percent, item_percent) swap_node(pos, "default:furnace_active") -- make sure timer restarts automatically result = true else if not fuellist[1]:is_empty() then - fuel_state = "0%" + fuel_state = S("@1%", 0) end formspec = default.get_furnace_inactive_formspec() swap_node(pos, "default:furnace") @@ -247,9 +247,14 @@ local function furnace_node_timer(pos, elapsed) minetest.get_node_timer(pos):stop() end --- local infotext = "Furnace " .. active .. "\n(Item: " .. item_state .. --- "; Fuel: " .. fuel_state .. ")" - local infotext = S("Furnace @1 \n(Item: @2; Fuel: @3)", active, item_state, fuel_state) + + local infotext + if active then + infotext = S("Furnace active") + else + infotext = S("Furnace inactive") + end + infotext = infotext .. "\n" .. S("(Item: @1; Fuel: @2)", item_state, fuel_state) -- -- Set meta values diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index da01e938..a93f2799 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -513,14 +513,14 @@ minetest.register_node("default:dirt_with_coniferous_litter", { }) minetest.register_node("default:dry_dirt", { - description = "Dry Dirt", + description = S("Dry Dirt"), tiles = {"default_dry_dirt.png"}, groups = {crumbly = 3, soil = 1}, sounds = default.node_sound_dirt_defaults(), }) minetest.register_node("default:dry_dirt_with_dry_grass", { - description = "Dry Dirt with Dry Grass", + description = S("Dry Dirt with Dry Grass"), tiles = {"default_dry_grass.png", "default_dry_dirt.png", {name = "default_dry_dirt.png^default_dry_grass_side.png", tileable_vertical = false}}, @@ -2556,7 +2556,7 @@ minetest.register_node("default:bookshelf", { local function register_sign(material, desc, def) minetest.register_node("default:sign_wall_" .. material, { - description = S("@1 Sign", desc), + description = desc, drawtype = "nodebox", tiles = {"default_sign_wall_" .. material .. ".png"}, inventory_image = "default_sign_" .. material .. ".png", @@ -2605,12 +2605,12 @@ local function register_sign(material, desc, def) }) end -register_sign("wood", S("Wooden"), { +register_sign("wood", S("Wooden Sign"), { sounds = default.node_sound_wood_defaults(), groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3} }) -register_sign("steel", S("Steel"), { +register_sign("steel", S("Steel Sign"), { sounds = default.node_sound_metal_defaults(), groups = {cracky = 2, attached_node = 1} }) diff --git a/mods/dye/init.lua b/mods/dye/init.lua index 240ba418..f0affe8b 100644 --- a/mods/dye/init.lua +++ b/mods/dye/init.lua @@ -8,21 +8,21 @@ local S = minetest.get_translator("dye") -- Make dye names and descriptions available globally dye.dyes = { - {"white", S("White")}, - {"grey", S("Grey")}, - {"dark_grey", S("Dark Grey")}, - {"black", S("Black")}, - {"violet", S("Violet")}, - {"blue", S("Blue")}, - {"cyan", S("Cyan")}, - {"dark_green", S("Dark Green")}, - {"green", S("Green")}, - {"yellow", S("Yellow")}, - {"brown", S("Brown")}, - {"orange", S("Orange")}, - {"red", S("Red")}, - {"magenta", S("Magenta")}, - {"pink", S("Pink")}, + {"white", "White"}, + {"grey", "Grey"}, + {"dark_grey", "Dark Grey"}, + {"black", "Black"}, + {"violet", "Violet"}, + {"blue", "Blue"}, + {"cyan", "Cyan"}, + {"dark_green", "Dark Green"}, + {"green", "Green"}, + {"yellow", "Yellow"}, + {"brown", "Brown"}, + {"orange", "Orange"}, + {"red", "Red"}, + {"magenta", "Magenta"}, + {"pink", "Pink"}, } -- Define items @@ -35,7 +35,7 @@ for _, row in ipairs(dye.dyes) do minetest.register_craftitem("dye:" .. name, { inventory_image = "dye_" .. name .. ".png", - description = S("@1 Dye", description), + description = S(description .. " Dye"), groups = groups }) @@ -103,3 +103,25 @@ for _, mix in pairs(dye_recipes) do recipe = {"dye:" .. mix[1], "dye:" .. mix[2]}, }) end + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this run: +-- for _,e in ipairs(dye.dyes) do print(("S(%q)"):format(e[2].." Dye")) end + +--[[ +S("White Dye") +S("Grey Dye") +S("Dark Grey Dye") +S("Black Dye") +S("Violet Dye") +S("Blue Dye") +S("Cyan Dye") +S("Dark Green Dye") +S("Green Dye") +S("Yellow Dye") +S("Brown Dye") +S("Orange Dye") +S("Red Dye") +S("Magenta Dye") +S("Pink Dye") +--]] diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index 8cc76471..806f46d4 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -86,7 +86,7 @@ minetest.register_node("farming:soil_wet", { }) minetest.register_node("farming:dry_soil", { - description = "Dry Soil", + description = S("Dry Soil"), tiles = {"default_dry_dirt.png^farming_soil.png", "default_dry_dirt.png"}, drop = "default:dry_dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1}, @@ -99,7 +99,7 @@ minetest.register_node("farming:dry_soil", { }) minetest.register_node("farming:dry_soil_wet", { - description = "Wet Dry Soil", + description = S("Wet Dry Soil"), tiles = {"default_dry_dirt.png^farming_soil_wet.png", "default_dry_dirt.png^farming_soil_wet_side.png"}, drop = "default:dry_dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1}, diff --git a/mods/map/init.lua b/mods/map/init.lua index c858e141..7c1e36fc 100644 --- a/mods/map/init.lua +++ b/mods/map/init.lua @@ -55,7 +55,7 @@ minetest.after(5.3, cyclic_update) -- Mapping kit item minetest.register_craftitem("map:mapping_kit", { - description = S("Mapping Kit\nUse with 'Minimap' key"), + description = S("Mapping Kit") .. "\n" .. S("Use with 'Minimap' key"), inventory_image = "map_mapping_kit.png", stack_max = 1, groups = {flammable = 3}, diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index 59d7b527..82fbaab2 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -150,7 +150,7 @@ end -- Screwdriver minetest.register_tool("screwdriver:screwdriver", { - description = S("Screwdriver (left-click rotates face, right-click rotates axis)"), + description = S("Screwdriver") .. "\n" .. S("(left-click rotates face, right-click rotates axis)"), inventory_image = "screwdriver.png", groups = {tool = 1}, on_use = function(itemstack, user, pointed_thing) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 86146576..e2984f66 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -296,7 +296,7 @@ end -- Node will be called stairs:stair_inner_ function stairs.register_stair_inner(subname, recipeitem, groups, images, - description, sounds, worldaligntex) + description, sounds, worldaligntex, full_description) -- Set backface culling and world-aligned textures local stair_images = {} for i, image in ipairs(images) do @@ -320,9 +320,14 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, end local new_groups = table.copy(groups) new_groups.stair = 1 + if full_description then + description = full_description + else + description = "Inner " .. description + end warn_if_exists("stairs:stair_inner_" .. subname) minetest.register_node(":stairs:stair_inner_" .. subname, { - description = S("Inner @1", description), + description = description, drawtype = "nodebox", tiles = stair_images, paramtype = "light", @@ -378,7 +383,7 @@ end -- Node will be called stairs:stair_outer_ function stairs.register_stair_outer(subname, recipeitem, groups, images, - description, sounds, worldaligntex) + description, sounds, worldaligntex, full_description) -- Set backface culling and world-aligned textures local stair_images = {} for i, image in ipairs(images) do @@ -402,9 +407,14 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, end local new_groups = table.copy(groups) new_groups.stair = 1 + if full_description then + description = full_description + else + description = "Outer " .. description + end warn_if_exists("stairs:stair_outer_" .. subname) minetest.register_node(":stairs:stair_outer_" .. subname, { - description = S("Outer @1", description), + description = description, drawtype = "nodebox", tiles = stair_images, paramtype = "light", @@ -469,379 +479,392 @@ function stairs.register_stair_and_slab(subname, recipeitem, groups, images, sounds, worldaligntex) end +-- Local function so we can apply translations +local function my_register_stair_and_slab(subname, recipeitem, groups, images, + desc_stair, desc_slab, sounds, worldaligntex) + stairs.register_stair(subname, recipeitem, groups, images, S(desc_stair), + sounds, worldaligntex) + stairs.register_stair_inner(subname, recipeitem, groups, images, "", + sounds, worldaligntex, S("Inner " .. desc_stair)) + stairs.register_stair_outer(subname, recipeitem, groups, images, "", + sounds, worldaligntex, S("Outer " .. desc_stair)) + stairs.register_slab(subname, recipeitem, groups, images, S(desc_slab), + sounds, worldaligntex) +end + -- Register default stairs and slabs -stairs.register_stair_and_slab( +my_register_stair_and_slab( "wood", "default:wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_wood.png"}, - S("Wooden Stair"), - S("Wooden Slab"), + "Wooden Stair", + "Wooden Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "junglewood", "default:junglewood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_junglewood.png"}, - S("Jungle Wood Stair"), - S("Jungle Wood Slab"), + "Jungle Wood Stair", + "Jungle Wood Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "pine_wood", "default:pine_wood", {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, {"default_pine_wood.png"}, - S("Pine Wood Stair"), - S("Pine Wood Slab"), + "Pine Wood Stair", + "Pine Wood Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "acacia_wood", "default:acacia_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_acacia_wood.png"}, - S("Acacia Wood Stair"), - S("Acacia Wood Slab"), + "Acacia Wood Stair", + "Acacia Wood Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "aspen_wood", "default:aspen_wood", {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, {"default_aspen_wood.png"}, - S("Aspen Wood Stair"), - S("Aspen Wood Slab"), + "Aspen Wood Stair", + "Aspen Wood Slab", default.node_sound_wood_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stone", "default:stone", {cracky = 3}, {"default_stone.png"}, - S("Stone Stair"), - S("Stone Slab"), + "Stone Stair", + "Stone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "cobble", "default:cobble", {cracky = 3}, {"default_cobble.png"}, - S("Cobblestone Stair"), - S("Cobblestone Slab"), + "Cobblestone Stair", + "Cobblestone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "mossycobble", "default:mossycobble", {cracky = 3}, {"default_mossycobble.png"}, - S("Mossy Cobblestone Stair"), - S("Mossy Cobblestone Slab"), + "Mossy Cobblestone Stair", + "Mossy Cobblestone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stonebrick", "default:stonebrick", {cracky = 2}, {"default_stone_brick.png"}, - S("Stone Brick Stair"), - S("Stone Brick Slab"), + "Stone Brick Stair", + "Stone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stone_block", "default:stone_block", {cracky = 2}, {"default_stone_block.png"}, - S("Stone Block Stair"), - S("Stone Block Slab"), + "Stone Block Stair", + "Stone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stone", "default:desert_stone", {cracky = 3}, {"default_desert_stone.png"}, - S("Desert Stone Stair"), - S("Desert Stone Slab"), + "Desert Stone Stair", + "Desert Stone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_cobble", "default:desert_cobble", {cracky = 3}, {"default_desert_cobble.png"}, - S("Desert Cobblestone Stair"), - S("Desert Cobblestone Slab"), + "Desert Cobblestone Stair", + "Desert Cobblestone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stonebrick", "default:desert_stonebrick", {cracky = 2}, {"default_desert_stone_brick.png"}, - S("Desert Stone Brick Stair"), - S("Desert Stone Brick Slab"), + "Desert Stone Brick Stair", + "Desert Stone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stone_block", "default:desert_stone_block", {cracky = 2}, {"default_desert_stone_block.png"}, - S("Desert Stone Block Stair"), - S("Desert Stone Block Slab"), + "Desert Stone Block Stair", + "Desert Stone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstone", "default:sandstone", {crumbly = 1, cracky = 3}, {"default_sandstone.png"}, - S("Sandstone Stair"), - S("Sandstone Slab"), + "Sandstone Stair", + "Sandstone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstonebrick", "default:sandstonebrick", {cracky = 2}, {"default_sandstone_brick.png"}, - S("Sandstone Brick Stair"), - S("Sandstone Brick Slab"), + "Sandstone Brick Stair", + "Sandstone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstone_block", "default:sandstone_block", {cracky = 2}, {"default_sandstone_block.png"}, - S("Sandstone Block Stair"), - S("Sandstone Block Slab"), + "Sandstone Block Stair", + "Sandstone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone", "default:desert_sandstone", {crumbly = 1, cracky = 3}, {"default_desert_sandstone.png"}, - S("Desert Sandstone Stair"), - S("Desert Sandstone Slab"), + "Desert Sandstone Stair", + "Desert Sandstone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone_brick", "default:desert_sandstone_brick", {cracky = 2}, {"default_desert_sandstone_brick.png"}, - S("Desert Sandstone Brick Stair"), - S("Desert Sandstone Brick Slab"), + "Desert Sandstone Brick Stair", + "Desert Sandstone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone_block", "default:desert_sandstone_block", {cracky = 2}, {"default_desert_sandstone_block.png"}, - S("Desert Sandstone Block Stair"), - S("Desert Sandstone Block Slab"), + "Desert Sandstone Block Stair", + "Desert Sandstone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone", "default:silver_sandstone", {crumbly = 1, cracky = 3}, {"default_silver_sandstone.png"}, - S("Silver Sandstone Stair"), - S("Silver Sandstone Slab"), + "Silver Sandstone Stair", + "Silver Sandstone Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone_brick", "default:silver_sandstone_brick", {cracky = 2}, {"default_silver_sandstone_brick.png"}, - S("Silver Sandstone Brick Stair"), - S("Silver Sandstone Brick Slab"), + "Silver Sandstone Brick Stair", + "Silver Sandstone Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone_block", "default:silver_sandstone_block", {cracky = 2}, {"default_silver_sandstone_block.png"}, - S("Silver Sandstone Block Stair"), - S("Silver Sandstone Block Slab"), + "Silver Sandstone Block Stair", + "Silver Sandstone Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidian", "default:obsidian", {cracky = 1, level = 2}, {"default_obsidian.png"}, - S("Obsidian Stair"), - S("Obsidian Slab"), + "Obsidian Stair", + "Obsidian Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidianbrick", "default:obsidianbrick", {cracky = 1, level = 2}, {"default_obsidian_brick.png"}, - S("Obsidian Brick Stair"), - S("Obsidian Brick Slab"), + "Obsidian Brick Stair", + "Obsidian Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidian_block", "default:obsidian_block", {cracky = 1, level = 2}, {"default_obsidian_block.png"}, - S("Obsidian Block Stair"), - S("Obsidian Block Slab"), + "Obsidian Block Stair", + "Obsidian Block Slab", default.node_sound_stone_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "brick", "default:brick", {cracky = 3}, {"default_brick.png"}, - S("Brick Stair"), - S("Brick Slab"), + "Brick Stair", + "Brick Slab", default.node_sound_stone_defaults(), false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "steelblock", "default:steelblock", {cracky = 1, level = 2}, {"default_steel_block.png"}, - S("Steel Block Stair"), - S("Steel Block Slab"), + "Steel Block Stair", + "Steel Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "tinblock", "default:tinblock", {cracky = 1, level = 2}, {"default_tin_block.png"}, - S("Tin Block Stair"), - S("Tin Block Slab"), + "Tin Block Stair", + "Tin Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "copperblock", "default:copperblock", {cracky = 1, level = 2}, {"default_copper_block.png"}, - S("Copper Block Stair"), - S("Copper Block Slab"), + "Copper Block Stair", + "Copper Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "bronzeblock", "default:bronzeblock", {cracky = 1, level = 2}, {"default_bronze_block.png"}, - S("Bronze Block Stair"), - S("Bronze Block Slab"), + "Bronze Block Stair", + "Bronze Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "goldblock", "default:goldblock", {cracky = 1}, {"default_gold_block.png"}, - S("Gold Block Stair"), - S("Gold Block Slab"), + "Gold Block Stair", + "Gold Block Slab", default.node_sound_metal_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "ice", "default:ice", {cracky = 3, cools_lava = 1, slippery = 3}, {"default_ice.png"}, - S("Ice Stair"), - S("Ice Slab"), + "Ice Stair", + "Ice Slab", default.node_sound_glass_defaults(), true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "snowblock", "default:snowblock", {crumbly = 3, cools_lava = 1, snowy = 1}, {"default_snow.png"}, - S("Snow Block Stair"), - S("Snow Block Slab"), + "Snow Block Stair", + "Snow Block Slab", default.node_sound_snow_defaults(), true ) @@ -877,9 +900,10 @@ stairs.register_stair_inner( {"stairs_glass_stairside.png^[transformR270", "default_glass.png", "stairs_glass_stairside.png^[transformFX", "default_glass.png", "default_glass.png", "stairs_glass_stairside.png"}, - S("Glass Stair"), + "", default.node_sound_glass_defaults(), - false + false, + S("Inner Glass Stair") ) stairs.register_stair_outer( @@ -889,9 +913,10 @@ stairs.register_stair_outer( {"stairs_glass_stairside.png^[transformR90", "default_glass.png", "stairs_glass_outer_stairside.png", "stairs_glass_stairside.png", "stairs_glass_stairside.png^[transformR90","stairs_glass_outer_stairside.png"}, - S("Glass Stair"), + "", default.node_sound_glass_defaults(), - false + false, + S("Outer Glass Stair") ) stairs.register_stair( @@ -923,9 +948,10 @@ stairs.register_stair_inner( {"stairs_obsidian_glass_stairside.png^[transformR270", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png^[transformFX", "default_obsidian_glass.png", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png"}, - S("Obsidian Glass Stair"), + "", default.node_sound_glass_defaults(), - false + false, + S("Inner Obsidian Glass Stair") ) stairs.register_stair_outer( @@ -935,7 +961,152 @@ stairs.register_stair_outer( {"stairs_obsidian_glass_stairside.png^[transformR90", "default_obsidian_glass.png", "stairs_obsidian_glass_outer_stairside.png", "stairs_obsidian_glass_stairside.png", "stairs_obsidian_glass_stairside.png^[transformR90","stairs_obsidian_glass_outer_stairside.png"}, - S("Obsidian Glass Stair"), + "", default.node_sound_glass_defaults(), - false + false, + S("Outer Obsidian Glass Stair") ) + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this add this code to my_register_stair_and_slab: +-- for _,x in ipairs({"","Inner ","Outer "}) do print(("S(%q)"):format(x..desc_stair)) end +-- print(("S(%q)"):format(desc_slab)) + +--[[ +S("Wooden Stair") +S("Inner Wooden Stair") +S("Outer Wooden Stair") +S("Wooden Slab") +S("Jungle Wood Stair") +S("Inner Jungle Wood Stair") +S("Outer Jungle Wood Stair") +S("Jungle Wood Slab") +S("Pine Wood Stair") +S("Inner Pine Wood Stair") +S("Outer Pine Wood Stair") +S("Pine Wood Slab") +S("Acacia Wood Stair") +S("Inner Acacia Wood Stair") +S("Outer Acacia Wood Stair") +S("Acacia Wood Slab") +S("Aspen Wood Stair") +S("Inner Aspen Wood Stair") +S("Outer Aspen Wood Stair") +S("Aspen Wood Slab") +S("Stone Stair") +S("Inner Stone Stair") +S("Outer Stone Stair") +S("Stone Slab") +S("Cobblestone Stair") +S("Inner Cobblestone Stair") +S("Outer Cobblestone Stair") +S("Cobblestone Slab") +S("Mossy Cobblestone Stair") +S("Inner Mossy Cobblestone Stair") +S("Outer Mossy Cobblestone Stair") +S("Mossy Cobblestone Slab") +S("Stone Brick Stair") +S("Inner Stone Brick Stair") +S("Outer Stone Brick Stair") +S("Stone Brick Slab") +S("Stone Block Stair") +S("Inner Stone Block Stair") +S("Outer Stone Block Stair") +S("Stone Block Slab") +S("Desert Stone Stair") +S("Inner Desert Stone Stair") +S("Outer Desert Stone Stair") +S("Desert Stone Slab") +S("Desert Cobblestone Stair") +S("Inner Desert Cobblestone Stair") +S("Outer Desert Cobblestone Stair") +S("Desert Cobblestone Slab") +S("Desert Stone Brick Stair") +S("Inner Desert Stone Brick Stair") +S("Outer Desert Stone Brick Stair") +S("Desert Stone Brick Slab") +S("Desert Stone Block Stair") +S("Inner Desert Stone Block Stair") +S("Outer Desert Stone Block Stair") +S("Desert Stone Block Slab") +S("Sandstone Stair") +S("Inner Sandstone Stair") +S("Outer Sandstone Stair") +S("Sandstone Slab") +S("Sandstone Brick Stair") +S("Inner Sandstone Brick Stair") +S("Outer Sandstone Brick Stair") +S("Sandstone Brick Slab") +S("Sandstone Block Stair") +S("Inner Sandstone Block Stair") +S("Outer Sandstone Block Stair") +S("Sandstone Block Slab") +S("Desert Sandstone Stair") +S("Inner Desert Sandstone Stair") +S("Outer Desert Sandstone Stair") +S("Desert Sandstone Slab") +S("Desert Sandstone Brick Stair") +S("Inner Desert Sandstone Brick Stair") +S("Outer Desert Sandstone Brick Stair") +S("Desert Sandstone Brick Slab") +S("Desert Sandstone Block Stair") +S("Inner Desert Sandstone Block Stair") +S("Outer Desert Sandstone Block Stair") +S("Desert Sandstone Block Slab") +S("Silver Sandstone Stair") +S("Inner Silver Sandstone Stair") +S("Outer Silver Sandstone Stair") +S("Silver Sandstone Slab") +S("Silver Sandstone Brick Stair") +S("Inner Silver Sandstone Brick Stair") +S("Outer Silver Sandstone Brick Stair") +S("Silver Sandstone Brick Slab") +S("Silver Sandstone Block Stair") +S("Inner Silver Sandstone Block Stair") +S("Outer Silver Sandstone Block Stair") +S("Silver Sandstone Block Slab") +S("Obsidian Stair") +S("Inner Obsidian Stair") +S("Outer Obsidian Stair") +S("Obsidian Slab") +S("Obsidian Brick Stair") +S("Inner Obsidian Brick Stair") +S("Outer Obsidian Brick Stair") +S("Obsidian Brick Slab") +S("Obsidian Block Stair") +S("Inner Obsidian Block Stair") +S("Outer Obsidian Block Stair") +S("Obsidian Block Slab") +S("Brick Stair") +S("Inner Brick Stair") +S("Outer Brick Stair") +S("Brick Slab") +S("Steel Block Stair") +S("Inner Steel Block Stair") +S("Outer Steel Block Stair") +S("Steel Block Slab") +S("Tin Block Stair") +S("Inner Tin Block Stair") +S("Outer Tin Block Stair") +S("Tin Block Slab") +S("Copper Block Stair") +S("Inner Copper Block Stair") +S("Outer Copper Block Stair") +S("Copper Block Slab") +S("Bronze Block Stair") +S("Inner Bronze Block Stair") +S("Outer Bronze Block Stair") +S("Bronze Block Slab") +S("Gold Block Stair") +S("Inner Gold Block Stair") +S("Outer Gold Block Stair") +S("Gold Block Slab") +S("Ice Stair") +S("Inner Ice Stair") +S("Outer Ice Stair") +S("Ice Slab") +S("Snow Block Stair") +S("Inner Snow Block Stair") +S("Outer Snow Block Stair") +S("Snow Block Slab") +--]] diff --git a/mods/wool/init.lua b/mods/wool/init.lua index 1464423e..4cf7dc3a 100644 --- a/mods/wool/init.lua +++ b/mods/wool/init.lua @@ -9,7 +9,7 @@ for i = 1, #dyes do local name, desc = unpack(dyes[i]) minetest.register_node("wool:" .. name, { - description = S("@1 Wool", desc), + description = S(desc .. " Wool"), tiles = {"wool_" .. name .. ".png"}, is_ground_content = false, groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, @@ -28,3 +28,25 @@ end -- Backwards compatibility with jordach's 16-color wool mod minetest.register_alias("wool:dark_blue", "wool:blue") minetest.register_alias("wool:gold", "wool:yellow") + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this run: +-- for _,e in ipairs(dye.dyes) do print(("S(%q)"):format(e[2].." Wool")) end + +--[[ +S("White Wool") +S("Grey Wool") +S("Dark Grey Wool") +S("Black Wool") +S("Violet Wool") +S("Blue Wool") +S("Cyan Wool") +S("Dark Green Wool") +S("Green Wool") +S("Yellow Wool") +S("Brown Wool") +S("Orange Wool") +S("Red Wool") +S("Magenta Wool") +S("Pink Wool") +--]]