Add intllib support and German translation

master
orwell96 2017-01-23 21:29:59 +01:00
parent 7950659798
commit fac8b518c9
19 changed files with 161 additions and 63 deletions

View File

@ -62,7 +62,7 @@ local apn_func=function(pos, node)
advtrains.ndb.update(pos, node)
local meta=minetest.get_meta(pos)
if meta then
meta:set_string("infotext", "ATC controller, unconfigured.")
meta:set_string("infotext", attrans("ATC controller, unconfigured."))
meta:set_string("formspec", atc.get_atc_controller_formspec(pos, meta))
end
end
@ -73,7 +73,7 @@ advtrains.register_tracks("default", {
models_prefix="advtrains_dtrack_detector",
models_suffix=".b3d",
shared_texture="advtrains_dtrack_rail_atc.png",
description="ATC controller",
description=attrans("ATC controller"),
formats={},
get_additional_definiton = function(def, preset, suffix, rotation)
return {
@ -86,7 +86,7 @@ advtrains.register_tracks("default", {
end,
on_receive_fields = function(pos, formname, fields, player)
if minetest.is_protected(pos, player:get_player_name()) then
minetest.chat_send_player(player:get_player_name(), "This position is protected!")
minetest.chat_send_player(player:get_player_name(), attrans("This position is protected!"))
return
end
local meta=minetest.get_meta(pos)
@ -95,7 +95,11 @@ advtrains.register_tracks("default", {
--maybe only the dropdown changed
if fields.mode then
meta:set_string("mode", idxtrans[fields.mode])
meta:set_string("infotext", "ATC controller, mode "..fields.mode.."\n"..( fields.mode=="digiline" and "Channel: "..meta:get_string("channel") or "Command: "..meta:get_string("command") ) )
if fields.mode=="digiline" then
meta:set_string("infotext", attrans("ATC controller, mode @1\nChannel: @2", fields.mode, meta:get_string("command")) )
else
meta:set_string("infotext", attrans("ATC controller, mode @1\nCommand: @2", fields.mode, meta:get_string("command")) )
end
meta:set_string("formspec", atc.get_atc_controller_formspec(pos, meta))
end
return
@ -104,7 +108,11 @@ advtrains.register_tracks("default", {
meta:set_string("command", fields.command)
meta:set_string("command_on", fields.command_on)
meta:set_string("channel", fields.channel)
meta:set_string("infotext", "ATC controller, mode "..fields.mode.."\n"..( fields.mode=="digiline" and "Channel: "..meta:get_string("channel") or "Command: "..meta:get_string("command") ) )
if fields.mode=="digiline" then
meta:set_string("infotext", attrans("ATC controller, mode @1\nChannel: @2", fields.mode, meta:get_string("command")) )
else
meta:set_string("infotext", attrans("ATC controller, mode @1\nCommand: @2", fields.mode, meta:get_string("command")) )
end
meta:set_string("formspec", atc.get_atc_controller_formspec(pos, meta))
local pts=minetest.pos_to_string(pos)
@ -126,14 +134,14 @@ function atc.get_atc_controller_formspec(pos, meta)
local formspec="size[8,6]"..
"dropdown[0,0;3;mode;static,mesecon,digiline;"..mode.."]"
if mode<3 then
formspec=formspec.."field[0.5,1.5;7,1;command;Command;"..minetest.formspec_escape(command).."]"
formspec=formspec.."field[0.5,1.5;7,1;command;"..attrans("Command")..";"..minetest.formspec_escape(command).."]"
if tonumber(mode)==2 then
formspec=formspec.."field[0.5,3;7,1;command_on;Command (on);"..minetest.formspec_escape(command_on).."]"
formspec=formspec.."field[0.5,3;7,1;command_on;"..attrans("Command (on)")..";"..minetest.formspec_escape(command_on).."]"
end
else
formspec=formspec.."field[0.5,1.5;7,1;channel;Digiline channel;"..minetest.formspec_escape(channel).."]"
formspec=formspec.."field[0.5,1.5;7,1;channel;"..attrans("Digiline channel")..";"..minetest.formspec_escape(channel).."]"
end
return formspec.."button_exit[0.5,4.5;7,1;save;Save]"
return formspec.."button_exit[0.5,4.5;7,1;save;"..attrans("Save").."]"
end
--from trainlogic.lua train step
@ -142,7 +150,7 @@ local matchptn={
train.tarvelocity=train.max_speed
return 2
end,
["S([0-9]+)"]=function(id, train, match)
["attrans([0-9]+)"]=function(id, train, match)
train.tarvelocity=tonumber(match)
return #match+1
end,
@ -168,7 +176,7 @@ local matchptn={
train.movedir=train.movedir*-1
train.atc_arrow = not train.atc_arrow
else
minetest.chat_send_all("ATC Reverse command warning: didn't reverse train!")
minetest.chat_send_all(attrans("ATC Reverse command warning: didn't reverse train, train moving!"))
end
return 1
end,
@ -227,7 +235,7 @@ function atc.execute_atc_command(id, train)
local nest, pos, elsepos=0, 1
while nest>=0 do
if pos>#rest then
minetest.chat_send_all("ATC command syntax error: I statement not closed: "..command)
minetest.chat_send_all(attrans("ATC command syntax error: I statement not closed: @1",command))
atc.train_reset_command(id)
return
end
@ -270,7 +278,7 @@ function atc.execute_atc_command(id, train)
end
end
end
minetest.chat_send_all("ATC command parse error: "..command)
minetest.chat_send_all(attrans("ATC command parse error: Unknown command: @1", command))
atc.train_reset_command(id)
end

View File

@ -38,7 +38,7 @@ minetest.register_entity("advtrains:discouple", {
if le and le.is_wagon then
if le.unique_id==nextwgn_id then
if le.owner and le.owner~=own then
minetest.chat_send_player(own, "You need to own at least one neighboring wagon to destroy this couple.")
minetest.chat_send_player(own, attrans("You need to own at least one neighboring wagon to destroy this couple."))
return
end
end
@ -47,7 +47,7 @@ minetest.register_entity("advtrains:discouple", {
advtrains.split_train_at_wagon(self.wagon)--found in trainlogic.lua
self.object:remove()
else
minetest.chat_send_player(own, "You need to own at least one neighboring wagon to destroy this couple.")
minetest.chat_send_player(own, attrans("You need to own at least one neighboring wagon to destroy this couple."))
end
end,
on_step=function(self, dtime)

View File

@ -1,3 +1,10 @@
-- Boilerplate to support localized strings if intllib mod is installed.
if minetest.get_modpath("intllib") then
attrans = intllib.Getter()
else
attrans = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
end
--advtrains
advtrains = {trains={}, wagon_save={}}
@ -176,7 +183,3 @@ advtrains.save = function()
file:close()
end
minetest.register_on_shutdown(advtrains.save)

View File

@ -0,0 +1,41 @@
This wagon is owned by @1, you can't destroy it. = Dieser Waggon gehört @1, du kannst ihn nicht abbauen.
Warning: If you destroy this wagon, you only get some steel back! If you are sure, shift-leftclick the wagon. = Warnung: Du erhältst nur etwas Stahl zurück. Wenn du sicher bist, dass du den Waggon zerstören willst, halte 'Schleichen' und klicke links.
Show Inventory = Zeige Inventar
Select seat: = Wähle einen Sitzplatz aus:
ATC controller, unconfigured. = Zugbeeinflussungsschiene, nicht konfiguiert.
ATC controller = Zugbeeinflussungsschiene
ATC controller, mode @1\nChannel: @2 = Zugbeeinflussungsschiene in Betriebsart "@1"\nKanal: @2
ATC controller, mode @1\nCommand: @2 = Zugbeeinflussungsschiene in Betriebsart "@1"\nBefehl: @2
Command = Befehl
Command (on) = Befehl (wenn ein)
Digiline channel = Digiline-Kanal
Save = Speichern
ATC Reverse command warning: didn't reverse train, train moving! = Zugbeeinflussung - Warnung: Befehl 'R' nicht ausgeführt, Zug in Bewegung!
ATC command syntax error: I statement not closed: @1 = Zugbeeinflussung - Syntaxfehler: I-Anweisung nicht geschlossen: @1
ATC command parse error: Unknown command: @1 = Zugbeeinflussung - Fehler: Unbekannter Befehl: @1
This position is protected! = Diese Position ist geschützt!
You need to own at least one neighboring wagon to destroy this couple. = Du musst Besitzer eines angrenzenden Waggons sein, um hier abzukuppeln.
@1 Platform (low) = Niedriger @1-Bahnsteig
@1 Platform (high) = Hoher @1-Bahnsteig
off = aus
on = ein
Lampless Signal (@1) = Mechanisches Signal (@1)
Signal (@1) = Lichtsignal (@1)
Track Worker Tool\n\nLeft-click: change rail type (straight/curve/switch)\nRight-click: rotate rail/bumper/signal/etc. = Schienenwerkzeug\n\nLinksklick: Schienentyp ändern, Rechtsklick: Objekt drehen.
This node can't be rotated using the trackworker! = Kann diesen Block nicht mit dem Schienenwerkzeug drehen.
This node can't be changed using the trackworker! = Kann diesen Block nicht mit dem Schienenwerkzeug bearbeiten.
Can't place: not pointing at node = Kann nicht platzieren: Du zeigst nicht auf einen Block.
Can't place: space occupied! = Kann nicht platzieren: Platz besetzt.
Can't place: protected position! = Kann nicht platzieren: Position geschützt.
Can't place: Not enough slope items left (@1 required) = Kann nicht platzieren: nicht genug Steigungsblöcke, es werden insgesamt @1 benötigt.
Can't place: There's no slope of length @1 = Kann nicht platzieren: Keine Steigung der Länge @1 definiert.
Can't place: no supporting node at upper end. = Kann nicht platzieren: kein unterstützender Block am Ende der Steigung.
Deprecated Track = ausrangierte Schiene, nicht verwenden.
Track = Schiene
Bumper = Prellbock
Detector Rail = Detektorschiene
Speed: = Geschw.:
Target: = Zielges.:
@1 Slope = @1 Steigung

View File

@ -13,7 +13,7 @@ function advtrains.register_platform(preset)
local desc=ndef.description or ""
local nodename=string.match(preset, ":(.+)$")
minetest.register_node("advtrains:platform_low_"..nodename, {
description = desc.." Platform (low)",
description = attrans("@1 Platform (low)", desc),
tiles = {btex.."^advtrains_platform.png", btex, btex, btex, btex, btex},
groups = {cracky = 1, not_blocking_trains = 1, platform=1},
sounds = default.node_sound_stone_defaults(),
@ -30,7 +30,7 @@ function advtrains.register_platform(preset)
sunlight_propagates = true,
})
minetest.register_node("advtrains:platform_high_"..nodename, {
description = desc.." Platform (high)",
description = attrans("@1 Platform (high)", desc),
tiles = {btex.."^advtrains_platform.png", btex, btex, btex, btex, btex},
groups = {cracky = 1, not_blocking_trains = 1, platform=2},
sounds = default.node_sound_stone_defaults(),

View File

@ -1,2 +1,3 @@
# Whether to print debug information on advtrains to chat and debug.txt
# Ob Debuginformationen in die Chatkonsole und debug.txt ausgegeben werden sollen
advtrains_debug (Print advtrains debug messages) bool false

View File

@ -22,7 +22,7 @@ for r,f in pairs({on="off", off="on"}) do
tiles = {"advtrains_retrosignal.png"},
inventory_image="advtrains_retrosignal_inv.png",
drop="advtrains:retrosignal_off",
description="Lampless Signal ("..r..rotation..")",
description=attrans("Lampless Signal (@1)", attrans(r..rotation)),
on_rightclick=switchfunc,
sunlight_propagates=true,
groups = {
@ -54,7 +54,7 @@ for r,f in pairs({on="off", off="on"}) do
tiles = {"advtrains_signal_"..r..".png"},
inventory_image="advtrains_signal_inv.png",
drop="advtrains:signal_off",
description="Signal ("..r..rotation..")",
description=attrans("Signal (@1)", attrans(r..rotation)),
on_rightclick=switchfunc,
groups = {
choppy=3,

View File

@ -212,7 +212,7 @@ end
minetest.register_craftitem("advtrains:trackworker",{
description = "Track Worker Tool\n\nLeft-click: change rail type (straight/curve/switch)\nRight-click: rotate rail/bumper/signal/etc.",
description = attrans("Track Worker Tool\n\nLeft-click: change rail type (straight/curve/switch)\nRight-click: rotate rail/bumper/signal/etc."),
groups = {cracky=1}, -- key=name, value=rating; rating=1..3.
inventory_image = "advtrains_trackworker.png",
wield_image = "advtrains_trackworker.png",
@ -238,7 +238,7 @@ minetest.register_craftitem("advtrains:trackworker",{
nnprefix, suffix=string.match(node.name, "^(.+)_([^_]+)$")
rotation = ""
if not tp.tracks[nnprefix] or not tp.tracks[nnprefix].twrotate[suffix] then
minetest.chat_send_player(placer:get_player_name(), "This node can't be rotated using the trackworker!")
minetest.chat_send_player(placer:get_player_name(), attrans("This node can't be rotated using the trackworker!"))
return
end
end
@ -251,7 +251,7 @@ minetest.register_craftitem("advtrains:trackworker",{
local modpos
for k,v in pairs(modext) do if v==rotation then modpos=k end end
if not modpos then
minetest.chat_send_player(placer:get_player_name(), "This node can't be rotated using the trackworker!")
minetest.chat_send_player(placer:get_player_name(), attrans("This node can't be rotated using the trackworker!"))
return
end
advtrains.ndb.swap_node(pos, {name=nnprefix.."_"..suffix..modext[modpos+1], param2=node.param2})
@ -279,7 +279,7 @@ minetest.register_craftitem("advtrains:trackworker",{
nnprefix, suffix=string.match(node.name, "^(.+)_([^_]+)$")
rotation = ""
if not tp.tracks[nnprefix] or not tp.tracks[nnprefix].twcycle[suffix] then
minetest.chat_send_player(user:get_player_name(), "This node can't be changed using the trackworker!")
minetest.chat_send_player(user:get_player_name(), attrans("This node can't be changed using the trackworker!"))
return
end
end

View File

@ -483,7 +483,7 @@ end
local sl={}
function sl.register_placer(def, preset)
minetest.register_craftitem(def.nodename_prefix.."_slopeplacer",{
description = def.description.." Slope",
description = attrans("@1 Slope", def.description),
inventory_image = def.texture_prefix.."_slopeplacer.png",
wield_image = def.texture_prefix.."_slopeplacer.png",
groups={},
@ -494,21 +494,21 @@ end
function sl.create_slopeplacer_on_place(def, preset)
return function(istack, player, pt)
if not pt.type=="node" then
minetest.chat_send_player(player:get_player_name(), "Can't place: not pointing at node")
minetest.chat_send_player(player:get_player_name(), attrans("Can't place: not pointing at node"))
return istack
end
local pos=pt.above
if not pos then
minetest.chat_send_player(player:get_player_name(), "Can't place: not pointing at node")
minetest.chat_send_player(player:get_player_name(), attrans("Can't place: not pointing at node"))
return istack
end
local node=minetest.get_node(pos)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].buildable_to then
minetest.chat_send_player(player:get_player_name(), "Can't place: space occupied!")
minetest.chat_send_player(player:get_player_name(), attrans("Can't place: space occupied!"))
return istack
end
if minetest.is_protected(pos, player:get_player_name()) then
minetest.chat_send_player(player:get_player_name(), "Can't place: protected position!")
minetest.chat_send_player(player:get_player_name(), attrans("Can't place: protected position!"))
return istack
end
--determine player orientation (only horizontal component)
@ -557,17 +557,17 @@ function sl.create_slopeplacer_on_place(def, preset)
pos=vector.subtract(pos, dirvec)
end
else
minetest.chat_send_player(player:get_player_name(), "Can't place: Not enough slope items left ("..step.." required)")
minetest.chat_send_player(player:get_player_name(), attrans("Can't place: Not enough slope items left (@1 required)", step))
end
else
minetest.chat_send_player(player:get_player_name(), "Can't place: There's no slope of length "..step)
minetest.chat_send_player(player:get_player_name(), attrans("Can't place: There's no slope of length @1",step))
end
return istack
end
step=step+1
pos=vector.add(pos, dirvec)
end
minetest.chat_send_player(player:get_player_name(), "Can't place: no supporting node at upper end.")
minetest.chat_send_player(player:get_player_name(), attrans("Can't place: no supporting node at upper end."))
return itemstack
end
end
@ -594,7 +594,7 @@ advtrains.register_tracks("regular", {
nodename_prefix="advtrains:track",
texture_prefix="advtrains_track",
shared_model="trackplane.b3d",
description="Deprecated Track",
description=attrans("Deprecated Track"),
formats={vst1={}, vst2={}},
}, ap.t_45deg)
@ -605,7 +605,7 @@ advtrains.register_tracks("default", {
models_prefix="advtrains_dtrack",
models_suffix=".b3d",
shared_texture="advtrains_dtrack_rail.png",
description="Track",
description=attrans("Track"),
formats={vst1={true, false, true}, vst2={true, false, true}, vst31={true}, vst32={true}, vst33={true}},
}, ap.t_30deg)
@ -616,7 +616,7 @@ advtrains.register_tracks("default", {
models_prefix="advtrains_dtrack_bumper",
models_suffix=".b3d",
shared_texture="advtrains_dtrack_rail.png",
description="Bumper",
description=attrans("Bumper"),
formats={},
}, ap.t_30deg_straightonly)
--legacy bumpers
@ -631,7 +631,7 @@ if mesecon then
models_prefix="advtrains_dtrack_detector",
models_suffix=".b3d",
shared_texture="advtrains_dtrack_rail.png",
description="Detector Rail",
description=attrans("Detector Rail"),
formats={},
get_additional_definiton = function(def, preset, suffix, rotation)
return {

View File

@ -117,8 +117,8 @@ function advtrains.hud_train_format(train, flip)
local topLine, firstLine, secondLine
topLine=" ["..mletter[fct*train.movedir].."] "..doorstr[(train.door_open or 0) * train.movedir].." "..(train.brake and "="..( train.brake_hold_state==2 and "^" or "" ).."B=" or "")
firstLine="Speed: |"..string.rep("+", vel)..string.rep("_", max-vel)..">"
secondLine="Target: |"..string.rep("+", tvel)..string.rep("_", max-tvel)..">"
firstLine=attrans("Speed:").." |"..string.rep("+", vel)..string.rep("_", max-vel)..">"
secondLine=attrans("Target:").." |"..string.rep("+", tvel)..string.rep("_", max-tvel)..">"
return topLine.."\n"..firstLine.."\n"..secondLine
end

View File

@ -184,7 +184,7 @@ function wagon:on_punch(puncher, time_from_last_punch, tool_capabilities, direct
return
end
if self.owner and puncher:get_player_name()~=self.owner and (not minetest.check_player_privs(puncher, {train_remove = true })) then
minetest.chat_send_player(puncher:get_player_name(), "This wagon is owned by "..self.owner..", you can't destroy it.");
minetest.chat_send_player(puncher:get_player_name(), attrans("This wagon is owned by @1, you can't destroy it.", self.owner));
return
end
@ -198,7 +198,7 @@ function wagon:on_punch(puncher, time_from_last_punch, tool_capabilities, direct
else
local pc=puncher:get_player_control()
if not pc.sneak then
minetest.chat_send_player(puncher:get_player_name(), "Warning: If you destroy this wagon, you only get some steel back! If you are sure, shift-leftclick the wagon.")
minetest.chat_send_player(puncher:get_player_name(), attrans("Warning: If you destroy this wagon, you only get some steel back! If you are sure, shift-leftclick the wagon."))
return
end
@ -523,7 +523,7 @@ function wagon:show_get_on_form(pname)
end
return
end
local form, comma="size[5,8]label[0.5,0.5;Select seat:]textlist[0.5,1;4,6;seat;", ""
local form, comma="size[5,8]label[0.5,0.5;"..attrans("Select seat:").."]textlist[0.5,1;4,6;seat;", ""
for seatno, seattbl in ipairs(self.seats) do
local addtext, colorcode="", ""
if self.seatp and self.seatp[seatno] then
@ -535,7 +535,7 @@ function wagon:show_get_on_form(pname)
end
form=form..";0,false]"
if self.has_inventory and self.get_inventory_formspec then
form=form.."button_exit[1,7;3,1;inv;Show Inventory]"
form=form.."button_exit[1,7;3,1;inv;"..attrans("Show Inventory").."]"
end
minetest.show_formspec(pname, "advtrains_geton_"..self.unique_id, form)
end

View File

@ -1,3 +1,11 @@
-- Boilerplate to support localized strings if intllib mod is installed.
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
end
advtrains.register_wagon("engine_industrial", {
mesh="advtrains_engine_industrial.b3d",
textures = {"advtrains_engine_industrial.png"},
@ -5,13 +13,13 @@ advtrains.register_wagon("engine_industrial", {
max_speed=20,
seats = {
{
name="Driver Stand (left)",
name=S("Driver Stand (left)"),
attach_offset={x=-5, y=10, z=-10},
view_offset={x=0, y=10, z=0},
driving_ctrl_access=true,
},
{
name="Driver Stand (right)",
name=S("Driver Stand (right)"),
attach_offset={x=5, y=10, z=-10},
view_offset={x=0, y=10, z=0},
driving_ctrl_access=true,
@ -22,7 +30,7 @@ advtrains.register_wagon("engine_industrial", {
is_locomotive=true,
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
drops={"default:steelblock 4"},
}, "Industrial Train Engine", "advtrains_engine_industrial_inv.png")
}, S("Industrial Train Engine"), "advtrains_engine_industrial_inv.png")
advtrains.register_wagon("wagon_tank", {
mesh="advtrains_wagon_tank.b3d",
textures = {"advtrains_wagon_tank.png"},
@ -43,7 +51,7 @@ advtrains.register_wagon("wagon_tank", {
inventory_list_sizes = {
box=8*6,
},
}, "Industrial tank wagon", "advtrains_wagon_tank_inv.png")
}, S("Industrial tank wagon"), "advtrains_wagon_tank_inv.png")
advtrains.register_wagon("wagon_wood", {
mesh="advtrains_wagon_wood.b3d",
textures = {"advtrains_wagon_wood.png"},
@ -64,4 +72,4 @@ advtrains.register_wagon("wagon_wood", {
inventory_list_sizes = {
box=8*6,
},
}, "Industrial wood wagon", "advtrains_wagon_wood_inv.png")
}, S("Industrial wood wagon"), "advtrains_wagon_wood_inv.png")

View File

@ -0,0 +1,5 @@
Driver Stand (left) = Führerstand Links
Driver Stand (right) = Führerstand Rechts
Industrial Train Engine = Industrielle Lokomotive
Industrial tank wagon = Tankwaggon
Industrial wood wagon = Holztransportwaggon

View File

@ -1,3 +1,10 @@
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
end
advtrains.register_wagon("engine_japan", {
mesh="advtrains_engine_japan.b3d",
textures = {"advtrains_engine_japan.png"},
@ -5,7 +12,7 @@ advtrains.register_wagon("engine_japan", {
max_speed=20,
seats = {
{
name="Default Seat (driver stand)",
name=S("Driver stand"),
attach_offset={x=0, y=10, z=0},
view_offset={x=0, y=6, z=0},
driving_ctrl_access=true,
@ -16,7 +23,7 @@ advtrains.register_wagon("engine_japan", {
is_locomotive=true,
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
drops={"default:steelblock 4"},
}, "Japanese Train Engine", "advtrains_engine_japan_inv.png")
}, S("Japanese Train Engine"), "advtrains_engine_japan_inv.png")
advtrains.register_wagon("wagon_japan", {
mesh="advtrains_wagon_japan.b3d",
@ -25,7 +32,7 @@ advtrains.register_wagon("wagon_japan", {
max_speed=20,
seats = {
{
name="Default Seat",
name=S("Default Seat"),
attach_offset={x=0, y=10, z=0},
view_offset={x=0, y=6, z=0},
},
@ -34,5 +41,5 @@ advtrains.register_wagon("wagon_japan", {
wagon_span=2.3,
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
drops={"default:steelblock 4"},
}, "Japanese Train Wagon", "advtrains_wagon_japan_inv.png")
}, S("Japanese Train Wagon"), "advtrains_wagon_japan_inv.png")

View File

@ -0,0 +1,4 @@
Driver Stand = Führerstand
Japanese Train Engine = Japanische Personenzug-Lokomotive
Default Seat = Standardsitzplatz
Japanese Train Wagon = Japanischer Personenzug-Passagierwaggon

View File

@ -1,3 +1,10 @@
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
end
advtrains.register_wagon("newlocomotive", {
mesh="advtrains_engine_steam.b3d",
textures = {"advtrains_engine_steam.png"},
@ -6,13 +13,13 @@ advtrains.register_wagon("newlocomotive", {
max_speed=10,
seats = {
{
name="Driver Stand (left)",
name=S("Driver Stand (left)"),
attach_offset={x=-5, y=10, z=-10},
view_offset={x=0, y=6, z=0},
driving_ctrl_access=true,
},
{
name="Driver Stand (right)",
name=S("Driver Stand (right)"),
attach_offset={x=5, y=10, z=-10},
view_offset={x=0, y=6, z=0},
driving_ctrl_access=true,
@ -55,7 +62,7 @@ advtrains.register_wagon("newlocomotive", {
})
end,
drops={"default:steelblock 4"},
}, "Steam Engine", "advtrains_engine_steam_inv.png")
}, S("Steam Engine"), "advtrains_engine_steam_inv.png")
advtrains.register_wagon("detailed_steam_engine", {
mesh="advtrains_detailed_steam_engine.b3d",
@ -65,13 +72,13 @@ advtrains.register_wagon("detailed_steam_engine", {
max_speed=10,
seats = {
{
name="Driver Stand (left)",
name=S("Driver Stand (left)"),
attach_offset={x=-5, y=10, z=-10},
view_offset={x=0, y=6, z=0},
driving_ctrl_access=true,
},
{
name="Driver Stand (right)",
name=S("Driver Stand (right)"),
attach_offset={x=5, y=10, z=-10},
view_offset={x=0, y=6, z=0},
driving_ctrl_access=true,
@ -114,7 +121,7 @@ advtrains.register_wagon("detailed_steam_engine", {
})
end,
drops={"default:steelblock 4"},
}, "Detailed Steam Engine", "advtrains_engine_steam_inv.png")
}, S("Detailed Steam Engine"), "advtrains_engine_steam_inv.png")
advtrains.register_wagon("wagon_default", {
mesh="advtrains_passenger_wagon.b3d",
@ -147,7 +154,7 @@ advtrains.register_wagon("wagon_default", {
wagon_span=3.1,
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
drops={"default:steelblock 4"},
}, "Passenger Wagon", "advtrains_wagon_inv.png")
}, S("Passenger Wagon"), "advtrains_wagon_inv.png")
advtrains.register_wagon("wagon_box", {
mesh="advtrains_wagon.b3d",
textures = {"advtrains_wagon_box.png"},
@ -168,7 +175,7 @@ advtrains.register_wagon("wagon_box", {
inventory_list_sizes = {
box=8*6,
},
}, "Box Wagon", "advtrains_wagon_box_inv.png")
}, S("Box Wagon"), "advtrains_wagon_box_inv.png")
minetest.register_craft({
output = 'advtrains:newlocomotive',

View File

@ -0,0 +1,6 @@
Driver Stand (left) = Führerstand Links
Driver Stand (right) = Führerstand Rechts
Steam Engine = Dampflokomotive
Detailed Steam Engine = detaillierte Dampflokomotive
Passenger Wagon = Passagierwaggon
Box wagon = Güterwaggon

View File

@ -1,3 +1,9 @@
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
end
advtrains.register_wagon("subway_wagon", {
mesh="advtrains_subway_wagon.b3d",
@ -31,7 +37,7 @@ advtrains.register_wagon("subway_wagon", {
-- atprint("subway custom_on_activate")
-- self.object:set_animation({x=1,y=80}, 15, 0, true)
--end,
}, "Subway Passenger Wagon", "advtrains_subway_wagon_inv.png")
}, S("Subway Passenger Wagon"), "advtrains_subway_wagon_inv.png")
--wagons
minetest.register_craft({

View File

@ -0,0 +1,2 @@
Default Seat (driver stand) = Standardsitzplatz (Führerstand)
Subway Passenger Wagon = U-Bahn-Waggon