aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorY. Wang <yw05@forksworld.de>2023-10-04 22:14:18 +0200
committerY. Wang <y5nw@protonmail.com>2024-11-04 17:17:52 +0100
commiteb0c5b78627505bcba409dc5f52dbb05891954c5 (patch)
tree1a9dc00e6ce6a7f64cbdd913c5b49099f3abf992
parent425b0993d355b9f45ddd400bd4925f9f1a5bd34d (diff)
downloadadvtrains-eb0c5b78627505bcba409dc5f52dbb05891954c5.tar.gz
advtrains-eb0c5b78627505bcba409dc5f52dbb05891954c5.tar.bz2
advtrains-eb0c5b78627505bcba409dc5f52dbb05891954c5.zip
Various translation improvements
-rw-r--r--advtrains/atc.lua8
-rw-r--r--advtrains/copytool.lua10
-rw-r--r--advtrains/couple.lua4
-rw-r--r--advtrains/craft_items.lua2
-rw-r--r--advtrains/po/advtrains.pot (renamed from advtrains/po/template.pot)453
-rw-r--r--advtrains/po/de.po674
-rw-r--r--advtrains/po/fr.po636
-rwxr-xr-xadvtrains/po/update-translations.sh14
-rw-r--r--advtrains/po/zh_CN.po604
-rw-r--r--advtrains/po/zh_TW.po604
-rw-r--r--advtrains/protection.lua8
-rw-r--r--advtrains/signals.lua6
-rw-r--r--advtrains/trackplacer.lua12
-rw-r--r--advtrains/tracks.lua14
-rw-r--r--advtrains/wagons.lua14
-rw-r--r--advtrains_interlocking/tsr_rail.lua12
-rw-r--r--advtrains_line_automation/stoprail.lua10
-rw-r--r--advtrains_luaautomation/active_common.lua20
-rw-r--r--advtrains_luaautomation/atc_rail.lua2
-rw-r--r--advtrains_luaautomation/init.lua6
-rw-r--r--advtrains_luaautomation/mesecon_controller.lua3
-rw-r--r--advtrains_luaautomation/operation_panel.lua3
-rw-r--r--advtrains_luaautomation/pcnaming.lua8
23 files changed, 1913 insertions, 1214 deletions
diff --git a/advtrains/atc.lua b/advtrains/atc.lua
index c1ff218..b572cdc 100644
--- a/advtrains/atc.lua
+++ b/advtrains/atc.lua
@@ -106,7 +106,7 @@ local apn_func=function(pos)
-- FIX for long-persisting ndb bug: there's no node in parameter 2 of this function!
local meta=minetest.get_meta(pos)
if meta then
- meta:set_string("infotext", attrans("ATC controller, unconfigured."))
+ meta:set_string("infotext", attrans("Unconfigured ATC controller"))
meta:set_string("formspec", atc.get_atc_controller_formspec(pos, meta))
end
end
@@ -233,7 +233,7 @@ local matchptn={
advtrains.train_ensure_init(id, train)
-- no one minds if this failed... this shouldn't even be called without train being initialized...
else
- atwarn(sid(id), attrans("ATC Reverse command warning: didn't reverse train, train moving!"))
+ atwarn(sid(id), attrans("ATC Reverse command warning: didn't reverse train, train moving."))
end
return 1
end,
@@ -245,11 +245,11 @@ local matchptn={
end,
["K"] = function(id, train)
if train.door_open == 0 then
- atwarn(sid(id), attrans("ATC Kick command warning: Doors closed"))
+ atwarn(sid(id), attrans("ATC Kick command warning: doors are closed."))
return 1
end
if train.velocity > 0 then
- atwarn(sid(id), attrans("ATC Kick command warning: Train moving"))
+ atwarn(sid(id), attrans("ATC Kick command warning: train moving."))
return 1
end
local tp = train.trainparts
diff --git a/advtrains/copytool.lua b/advtrains/copytool.lua
index 7ad4330..ca5cae1 100644
--- a/advtrains/copytool.lua
+++ b/advtrains/copytool.lua
@@ -38,7 +38,7 @@ minetest.register_tool("advtrains:copytool", {
local prevpos = advtrains.get_adjacent_rail(pointed_thing.under, tconns, plconnid, {default=true})
if not prevpos then
- minetest.chat_send_player(pname, attrans("The track you are trying to place the wagon on is not long enough!"))
+ minetest.chat_send_player(pname, attrans("The track you are trying to place the wagon on is not long enough."))
return
end
@@ -89,19 +89,19 @@ minetest.register_tool("advtrains:copytool", {
local le = pointed_thing.ref:get_luaentity()
if (le == nil) then
- minetest.chat_send_player(user:get_player_name(), attrans("No such lua entity!"))
+ minetest.chat_send_player(user:get_player_name(), attrans("No such lua entity."))
return
end
local wagon = advtrains.wagons[le.id]
if (not (le.id and advtrains.wagons[le.id])) then
- minetest.chat_send_player(user:get_player_name(), attrans("No such wagon: @1", le.id))
+ minetest.chat_send_player(user:get_player_name(), attrans("No such wagon: @1.", le.id))
return
end
local train = advtrains.trains[wagon.train_id]
if (not train) then
- minetest.chat_send_player(user:get_player_name(), attrans("No such train: @1", wagon.train_id))
+ minetest.chat_send_player(user:get_player_name(), attrans("No such train: @1.", wagon.train_id))
return
end
@@ -177,7 +177,7 @@ minetest.register_tool("advtrains:copytool", {
return
end
meta:set_string("clipboard", minetest.serialize(clipboard))
- minetest.chat_send_player(user:get_player_name(), attrans("Train copied!"))
+ minetest.chat_send_player(user:get_player_name(), attrans("Train copied."))
return itemstack
end
})
diff --git a/advtrains/couple.lua b/advtrains/couple.lua
index d82e193..9474dcf 100644
--- a/advtrains/couple.lua
+++ b/advtrains/couple.lua
@@ -335,11 +335,11 @@ function advtrains.check_matching_coupler_types(t1, t1_front, t2, t2_front)
for typ,_ in pairs(t1_cplt) do
table.insert(t1_cplhr, advtrains.coupler_types[typ] or typ)
end
- if #t1_cplhr==0 then t1_cplhr[1]=attrans("<none>") end
+ if #t1_cplhr==0 then t1_cplhr[1]=attrans("<No coupler>") end
for typ,_ in pairs(t2_cplt) do
table.insert(t2_cplhr, advtrains.coupler_types[typ] or typ)
end
- if #t2_cplhr==0 then t2_cplhr[1]=attrans("<none>") end
+ if #t2_cplhr==0 then t2_cplhr[1]=attrans("<No coupler>") end
return false, attrans("Can not couple: The couplers of the trains do not match (@1 and @2).", table.concat(t1_cplhr, ","), table.concat(t2_cplhr, ","))
end
diff --git a/advtrains/craft_items.lua b/advtrains/craft_items.lua
index 0e693eb..1188b64 100644
--- a/advtrains/craft_items.lua
+++ b/advtrains/craft_items.lua
@@ -6,7 +6,7 @@ core.register_craftitem("advtrains:boiler", {
core.register_craftitem("advtrains:driver_cab", {
- description = attrans("driver's cab"),
+ description = attrans("Driver's cab"),
inventory_image = "advtrains_driver_cab.png",
})
diff --git a/advtrains/po/template.pot b/advtrains/po/advtrains.pot
index 23aaa6a..6fda1d7 100644
--- a/advtrains/po/template.pot
+++ b/advtrains/po/advtrains.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: advtrains\n"
"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
-"POT-Creation-Date: 2023-10-04 15:40+0200\n"
+"POT-Creation-Date: 2023-10-09 11:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: advtrains/atc.lua:109
-msgid "ATC controller, unconfigured."
+msgid "Unconfigured ATC controller"
msgstr ""
#: advtrains/atc.lua:150
@@ -40,19 +40,20 @@ msgid "Digiline channel"
msgstr ""
#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
+#: advtrains_luaautomation/active_common.lua:48
msgid "Save"
msgstr ""
#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving!"
+msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr ""
#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: Doors closed"
+msgid "ATC Kick command warning: doors are closed."
msgstr ""
#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: Train moving"
+msgid "ATC Kick command warning: train moving."
msgstr ""
#: advtrains/atc.lua:322
@@ -63,12 +64,81 @@ msgstr ""
msgid "ATC command parse error: Unknown command: @1"
msgstr ""
+#: advtrains/copytool.lua:8
+msgid ""
+"Train copy/paste tool\n"
+"\n"
+"Left-click: copy train\n"
+"Right-click: paste train"
+msgstr ""
+
+#: advtrains/copytool.lua:29
+msgid "You do not have the @1 privilege."
+msgstr ""
+
+#: advtrains/copytool.lua:41
+msgid "The track you are trying to place the wagon on is not long enough."
+msgstr ""
+
+#: advtrains/copytool.lua:47
+msgid "The clipboard couldn't access the metadata. Paste failed."
+msgstr ""
+
+#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
+msgid "The clipboard is empty."
+msgstr ""
+
+#: advtrains/copytool.lua:74
+msgid "Back of train would end up off track, cancelling."
+msgstr ""
+
+#: advtrains/copytool.lua:92
+msgid "No such lua entity."
+msgstr ""
+
+#: advtrains/copytool.lua:98
+msgid "No such wagon: @1."
+msgstr ""
+
+#: advtrains/copytool.lua:104
+msgid "No such train: @1."
+msgstr ""
+
+#: advtrains/copytool.lua:176
+msgid "The clipboard couldn't access the metadata. Copy failed."
+msgstr ""
+
+#: advtrains/copytool.lua:180
+msgid "Train copied."
+msgstr ""
+
+#: advtrains/couple.lua:28
+msgid "Buffer and Chain Coupler"
+msgstr ""
+
+#: advtrains/couple.lua:29
+msgid "Scharfenberg Coupler"
+msgstr ""
+
+#: advtrains/couple.lua:185
+msgid ""
+"You are not allowed to couple trains without the train_operator privilege."
+msgstr ""
+
+#: advtrains/couple.lua:329 advtrains/couple.lua:333
+msgid "<No coupler>"
+msgstr ""
+
+#: advtrains/couple.lua:334
+msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
+msgstr ""
+
#: advtrains/craft_items.lua:3
msgid "Boiler"
msgstr ""
#: advtrains/craft_items.lua:9
-msgid "driver's cab"
+msgid "Driver's cab"
msgstr ""
#: advtrains/craft_items.lua:15
@@ -95,112 +165,98 @@ msgstr ""
msgid "@1 Platform (low, 45 degree)"
msgstr ""
-#: advtrains/trackplacer.lua:313
-msgid ""
-"Track Worker Tool\n"
-"\n"
-"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate rail/bumper/signal/etc."
-msgstr ""
-
-#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
-msgid "This node can't be rotated using the trackworker!"
-msgstr ""
-
-#: advtrains/trackplacer.lua:350
-msgid "This track can not be rotated!"
-msgstr ""
-
-#: advtrains/trackplacer.lua:404
-msgid "This node can't be changed using the trackworker!"
-msgstr ""
-
-#: advtrains/trackplacer.lua:414
-msgid "This track can not be changed!"
+#: advtrains/protection.lua:7
+msgid "Can place, remove and operate trains"
msgstr ""
-#: advtrains/wagons.lua:179
-msgid "This wagon is owned by @1, you can't destroy it."
+#: advtrains/protection.lua:12
+msgid ""
+"Can place, remove and operate any train, regardless of owner, whitelist, or "
+"protection"
msgstr ""
-#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty!"
+#: advtrains/protection.lua:18
+msgid "Can place and dig tracks in unprotected areas"
msgstr ""
-#: advtrains/wagons.lua:210
-msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
+#: advtrains/protection.lua:24
+msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""
-#: advtrains/wagons.lua:216
+#: advtrains/protection.lua:148
msgid ""
-"Warning: If you destroy this wagon, you only get some steel back! If you are "
-"sure, hold Sneak and left-click the wagon."
+"You are not allowed to build near tracks without the track_builder privilege."
msgstr ""
-#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
-msgid "Show Inventory"
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build tracks without the track_builder privilege."
msgstr ""
-#: advtrains/wagons.lua:652
-msgid "Onboard Computer"
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build near tracks at this protected position."
msgstr ""
-#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
-msgid "Wagon properties"
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build tracks at this protected position."
msgstr ""
-#: advtrains/wagons.lua:658
-msgid "Get off"
+#: advtrains/protection.lua:184
+msgid ""
+"You are not allowed to operate turnouts and signals without the "
+"railway_operator privilege."
msgstr ""
-#: advtrains/wagons.lua:661
-msgid "Get off (forced)"
+#: advtrains/signals.lua:63
+msgid "Lampless Signal"
msgstr ""
-#: advtrains/wagons.lua:663
-msgid "(Doors closed)"
+#: advtrains/signals.lua:127
+msgid "Signal"
msgstr ""
-#: advtrains/wagons.lua:712
-msgid "Can't get on: "
+#: advtrains/signals.lua:191
+msgid "Wallmounted Signal (left)"
msgstr ""
-#: advtrains/wagons.lua:838
-msgid "Select seat:"
+#: advtrains/signals.lua:192
+msgid "Wallmounted Signal (right)"
msgstr ""
-#: advtrains/wagons.lua:880
-msgid "Save wagon properties"
+#: advtrains/signals.lua:193
+msgid "Wallmounted Signal (top)"
msgstr ""
-#: advtrains/wagons.lua:965
-msgid "Text displayed outside on train"
+#: advtrains/signals.lua:281 advtrains/signals.lua:322
+msgid "Andrew's Cross"
msgstr ""
-#: advtrains/wagons.lua:966
-msgid "Text displayed inside train"
+#: advtrains/trackplacer.lua:313
+msgid ""
+"Track Worker Tool\n"
+"\n"
+"Left-click: change rail type (straight/curve/switch)\n"
+"Right-click: rotate object"
msgstr ""
-#: advtrains/wagons.lua:967
-msgid "Line"
+#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
+msgid "This node can't be rotated using the trackworker."
msgstr ""
-#: advtrains/wagons.lua:968
-msgid "Routingcode"
+#: advtrains/trackplacer.lua:350
+msgid "This track can not be rotated."
msgstr ""
-#: advtrains/wagons.lua:1241
-msgid ""
-"Doors are closed! Use Sneak+rightclick to ignore the closed doors and get "
-"off!"
+#: advtrains/trackplacer.lua:404
+msgid "This node can't be changed using the trackworker."
msgstr ""
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
+#: advtrains/trackplacer.lua:414
+msgid "This track can not be changed."
msgstr ""
#: advtrains/tracks.lua:449
-msgid "This track can not be removed!"
+msgid "This track can not be removed."
msgstr ""
#: advtrains/tracks.lua:616
@@ -220,140 +276,141 @@ msgid "@1 Slope"
msgstr ""
#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place: not pointing at node"
+msgid "Can't place slope: not pointing at node."
msgstr ""
#: advtrains/tracks.lua:658
-msgid "Can't place: space occupied!"
+msgid "Can't place slope: space occupied."
msgstr ""
#: advtrains/tracks.lua:711
-msgid "Can't place: Not enough slope items left (@1 required)"
+msgid "Can't place slope: Not enough slope items left (@1 required)."
msgstr ""
#: advtrains/tracks.lua:714
-msgid "Can't place: There's no slope of length @1"
+msgid "Can't place slope: There's no slope of length @1."
msgstr ""
#: advtrains/tracks.lua:721
-msgid "Can't place: no supporting node at upper end."
+msgid "Can't place slope: no supporting node at upper end."
msgstr ""
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
+#: advtrains/trainhud.lua:305
+msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""
-#: advtrains/signals.lua:127
-msgid "Signal"
+#: advtrains/wagons.lua:179
+msgid "This wagon is owned by @1, you can't destroy it."
msgstr ""
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (l)"
+#: advtrains/wagons.lua:203
+msgid "The wagon's inventory is not empty."
msgstr ""
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (r)"
+#: advtrains/wagons.lua:210
+msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr ""
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (t)"
+#: advtrains/wagons.lua:216
+msgid ""
+"Warning: If you destroy this wagon, you only get some steel back! If you are "
+"sure, hold Sneak and left-click the wagon."
msgstr ""
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
+#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
+msgid "Show Inventory"
msgstr ""
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
+#: advtrains/wagons.lua:652
+msgid "Onboard Computer"
msgstr ""
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
+#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
+msgid "Wagon properties"
msgstr ""
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
+#: advtrains/wagons.lua:658
+msgid "Get off"
msgstr ""
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<none>"
+#: advtrains/wagons.lua:661
+msgid "Get off (forced)"
msgstr ""
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
+#: advtrains/wagons.lua:663
+msgid "(Doors closed)"
msgstr ""
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
+#: advtrains/wagons.lua:692
+msgid "This wagon has no seats."
msgstr ""
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
+#: advtrains/wagons.lua:703
+msgid "This wagon is full."
msgstr ""
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough!"
+#: advtrains/wagons.lua:706
+msgid "Doors are closed! (Try holding sneak key!)"
msgstr ""
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
+#: advtrains/wagons.lua:712
+msgid "You can't get on this wagon."
msgstr ""
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
+#: advtrains/wagons.lua:838
+msgid "Select seat:"
msgstr ""
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
+#: advtrains/wagons.lua:880
+msgid "Save wagon properties"
msgstr ""
-#: advtrains/copytool.lua:92
-msgid "No such lua entity!"
+#: advtrains/wagons.lua:965
+msgid "Text displayed outside on train"
msgstr ""
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1"
+#: advtrains/wagons.lua:966
+msgid "Text displayed inside train"
msgstr ""
-#: advtrains/copytool.lua:104
-msgid "No such train: @1"
+#: advtrains/wagons.lua:967
+msgid "Line"
msgstr ""
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
+#: advtrains/wagons.lua:968
+msgid "Routingcode"
msgstr ""
-#: advtrains/copytool.lua:180
-msgid "Train copied!"
+#: advtrains/wagons.lua:1241
+msgid ""
+"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
+"off."
msgstr ""
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
+#: advtrains/wagons.lua:1250
+msgid "You are not allowed to access the driver stand."
msgstr ""
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
+#: advtrains_interlocking/tsr_rail.lua:13
+msgid "Point speed restriction: @1"
msgstr ""
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
+#: advtrains_interlocking/tsr_rail.lua:14
+msgid "Set point speed restriction:"
msgstr ""
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
+#: advtrains_interlocking/tsr_rail.lua:30
+msgid "You are not allowed to configure this track without the @1 privilege."
msgstr ""
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
+#: advtrains_interlocking/tsr_rail.lua:34
+#: advtrains_line_automation/stoprail.lua:31
+#: advtrains_line_automation/stoprail.lua:76
+msgid "You are not allowed to configure this track."
+msgstr ""
+
+#: advtrains_interlocking/tsr_rail.lua:64
+msgid "Point Speed Restriction Track"
msgstr ""
#: advtrains_line_automation/stoprail.lua:54
@@ -393,51 +450,81 @@ msgstr ""
msgid "Kick out passengers"
msgstr ""
-#: advtrains_luaautomation/pcnaming.lua:26
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
+#: advtrains_line_automation/stoprail.lua:97
+msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""
-#: advtrains_train_track/init.lua:31
-msgid "Y-turnout"
+#: advtrains_line_automation/stoprail.lua:111
+msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""
-#: advtrains_train_track/init.lua:49
-msgid "3-way turnout"
+#: advtrains_line_automation/stoprail.lua:221
+msgid "Station/Stop Track"
msgstr ""
-#: advtrains_train_track/init.lua:69
-msgid "Perpendicular Diamond Crossing Track"
+#: advtrains_luaautomation/active_common.lua:17
+msgid "Unconfigured LuaATC component"
msgstr ""
-#: advtrains_train_track/init.lua:91
-msgid "90+Angle Diamond Crossing Track"
+#: advtrains_luaautomation/active_common.lua:46
+msgid "LuaATC Environment"
msgstr ""
-#: advtrains_train_track/init.lua:132
-msgid "Diagonal Diamond Crossing Track"
+#: advtrains_luaautomation/active_common.lua:49
+msgid "Clear Local Environment"
msgstr ""
-#: advtrains_train_track/init.lua:179
-msgid "Bumper"
+#: advtrains_luaautomation/active_common.lua:50
+msgid "Code"
msgstr ""
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
+#: advtrains_luaautomation/active_common.lua:64
+msgid ""
+"You are not allowed to configure this LuaATC component without the @1 "
+"privilege."
msgstr ""
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
+#: advtrains_luaautomation/active_common.lua:94
+msgid "LuaATC component assigned to environment '@1'"
msgstr ""
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
+#: advtrains_luaautomation/active_common.lua:96
+msgid "LuaATC component assigned to an invalid environment"
msgstr ""
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
+#: advtrains_luaautomation/active_common.lua:171
+msgid "LuaATC component with error: @1"
+msgstr ""
+
+#: advtrains_luaautomation/init.lua:13
+msgid ""
+"Can place and configure LuaATC components, including execute potentially "
+"harmful Lua code"
+msgstr ""
+
+#: advtrains_luaautomation/mesecon_controller.lua:211
+msgid "LuaATC Mesecon Controller"
+msgstr ""
+
+#: advtrains_luaautomation/operation_panel.lua:11
+msgid "LuaATC Operation Panel"
+msgstr ""
+
+#: advtrains_luaautomation/pcnaming.lua:28
+msgid ""
+"Passive Component Naming Tool\n"
+"\n"
+"Right-click to name a passive component."
+msgstr ""
+
+#: advtrains_luaautomation/pcnaming.lua:39
+msgid ""
+"You are not allowed to name LuaATC passive components without the @1 "
+"privilege."
+msgstr ""
+
+#: advtrains_luaautomation/pcnaming.lua:62
+msgid "Set name of component (empty to clear)"
msgstr ""
#: advtrains_train_industrial/init.lua:10
@@ -503,3 +590,43 @@ msgstr ""
#: advtrains_train_subway/init.lua:144
msgid "Subway Passenger Wagon"
msgstr ""
+
+#: advtrains_train_track/init.lua:31
+msgid "Y-turnout"
+msgstr ""
+
+#: advtrains_train_track/init.lua:49
+msgid "3-way turnout"
+msgstr ""
+
+#: advtrains_train_track/init.lua:69
+msgid "Perpendicular Diamond Crossing Track"
+msgstr ""
+
+#: advtrains_train_track/init.lua:91
+msgid "90+Angle Diamond Crossing Track"
+msgstr ""
+
+#: advtrains_train_track/init.lua:132
+msgid "Diagonal Diamond Crossing Track"
+msgstr ""
+
+#: advtrains_train_track/init.lua:179
+msgid "Bumper"
+msgstr ""
+
+#: advtrains_train_track/init.lua:201
+msgid "ATC controller"
+msgstr ""
+
+#: advtrains_train_track/init.lua:317
+msgid "Unloading Track"
+msgstr ""
+
+#: advtrains_train_track/init.lua:342
+msgid "Loading Track"
+msgstr ""
+
+#: advtrains_train_track/init.lua:406
+msgid "Detector Rail"
+msgstr ""
diff --git a/advtrains/po/de.po b/advtrains/po/de.po
index ebd6339..8821fe3 100644
--- a/advtrains/po/de.po
+++ b/advtrains/po/de.po
@@ -2,18 +2,19 @@ msgid ""
msgstr ""
"Project-Id-Version: advtrains\n"
"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
-"POT-Creation-Date: 2023-10-04 15:40+0200\n"
-"PO-Revision-Date: 2022-11-02 15:08+0100\n"
+"POT-Creation-Date: 2023-10-09 11:02+0200\n"
+"PO-Revision-Date: 2023-10-09 11:18+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: German\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 3.3.2\n"
#: advtrains/atc.lua:109
-msgid "ATC controller, unconfigured."
-msgstr "Nicht konfiguierte Zugbeeinflussungsgleis"
+msgid "Unconfigured ATC controller"
+msgstr "Nicht konfiguiertes Zugbeeinflussungsgleis"
#: advtrains/atc.lua:150
msgid ""
@@ -36,21 +37,27 @@ msgid "Digiline channel"
msgstr "Digiline-Kanal"
#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
+#: advtrains_luaautomation/active_common.lua:48
msgid "Save"
msgstr "Speichern"
#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving!"
+msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr ""
-"Zugbeeinflussung: der Befehl „R“ wurde nicht ausgeführt, Zug in Bewegung!"
+"Zugbeeinflussung: Der Zug befindet sich in Bewegung und kann nicht umgekehrt "
+"werden."
#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: Doors closed"
+msgid "ATC Kick command warning: doors are closed."
msgstr ""
+"Zugbeeinflussung: Wegen geschlossener Türen werden Fahrgäste nicht zum "
+"Ausstieg gezwungen."
#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: Train moving"
+msgid "ATC Kick command warning: train moving."
msgstr ""
+"Zugbeeinflussung: Der Zug befindet sich in Bewegung, Fahrgäste werden nicht "
+"zum Ausstieg gezwungen."
#: advtrains/atc.lua:322
msgid "ATC command syntax error: I statement not closed: @1"
@@ -60,13 +67,92 @@ msgstr "Zugbeeinflussung: Unvollständiger I-Befehl: @1"
msgid "ATC command parse error: Unknown command: @1"
msgstr "Zugbeeinflussung: Unbekannter Befehl: @1"
+#: advtrains/copytool.lua:8
+msgid ""
+"Train copy/paste tool\n"
+"\n"
+"Left-click: copy train\n"
+"Right-click: paste train"
+msgstr ""
+"Werkzeug zur Erstellung von Zugkopien\n"
+"\n"
+"Linksklick: Zug ins Clipboard kopieren\n"
+"Right-click: Kopierten Zug einfügen"
+
+#: advtrains/copytool.lua:29
+msgid "You do not have the @1 privilege."
+msgstr "Ihnen fehlt das „@1“-Privileg."
+
+#: advtrains/copytool.lua:41
+msgid "The track you are trying to place the wagon on is not long enough."
+msgstr "Das Gleis, auf dem der Waggon platziert werden woll, ist zu kurz."
+
+#: advtrains/copytool.lua:47
+msgid "The clipboard couldn't access the metadata. Paste failed."
+msgstr ""
+"Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte eine Kopie des "
+"Zuges nicht eingefügt werden."
+
+#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
+msgid "The clipboard is empty."
+msgstr "Das Clipboard ist leer."
+
+#: advtrains/copytool.lua:74
+msgid "Back of train would end up off track, cancelling."
+msgstr "Der hinterer Teil dez Zuges wäre nicht auf dem Gleis."
+
+#: advtrains/copytool.lua:92
+msgid "No such lua entity."
+msgstr ""
+"Sie zeigen nicht auf einem Objekt, das mit diesem Werkzeug kopiert werden "
+"kann."
+
+#: advtrains/copytool.lua:98
+msgid "No such wagon: @1."
+msgstr "Es gibt keinen mit „@1“ identifizierbaren Waggon."
+
+#: advtrains/copytool.lua:104
+msgid "No such train: @1."
+msgstr "Es gibt keinen mit „@1“ identifizierbaren Zug."
+
+#: advtrains/copytool.lua:176
+msgid "The clipboard couldn't access the metadata. Copy failed."
+msgstr ""
+"Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte der Zug nicht "
+"kopiert werden."
+
+#: advtrains/copytool.lua:180
+msgid "Train copied."
+msgstr "Der Zug wurde Kopiert."
+
+#: advtrains/couple.lua:28
+msgid "Buffer and Chain Coupler"
+msgstr "Schraubenkupplung"
+
+#: advtrains/couple.lua:29
+msgid "Scharfenberg Coupler"
+msgstr "Scharfenbergkupplung"
+
+#: advtrains/couple.lua:185
+msgid ""
+"You are not allowed to couple trains without the train_operator privilege."
+msgstr "Sie dürfen ohne das „train_operator“-Privileg keine Züge ankuppeln."
+
+#: advtrains/couple.lua:329 advtrains/couple.lua:333
+msgid "<No coupler>"
+msgstr "<Keine Kupplung vorhanden>"
+
+#: advtrains/couple.lua:334
+msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
+msgstr "Die Kupplungen der Züge passen nicht zueinander (@1 und @2)."
+
#: advtrains/craft_items.lua:3
msgid "Boiler"
msgstr ""
#: advtrains/craft_items.lua:9
-msgid "driver's cab"
-msgstr ""
+msgid "Driver's cab"
+msgstr "Führerstand"
#: advtrains/craft_items.lua:15
msgid "Wheel"
@@ -92,44 +178,164 @@ msgstr "Hoher @1-Bahnsteig (45°)"
msgid "@1 Platform (low, 45 degree)"
msgstr "Niedriger @1-Bahnsteig (45°)"
+#: advtrains/protection.lua:7
+msgid "Can place, remove and operate trains"
+msgstr ""
+
+#: advtrains/protection.lua:12
+msgid ""
+"Can place, remove and operate any train, regardless of owner, whitelist, or "
+"protection"
+msgstr ""
+
+#: advtrains/protection.lua:18
+msgid "Can place and dig tracks in unprotected areas"
+msgstr ""
+
+#: advtrains/protection.lua:24
+msgid "Can operate turnouts and signals in unprotected areas"
+msgstr ""
+
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build near tracks without the track_builder privilege."
+msgstr ""
+"Sie dürfen ohne das „track_builder“-Privileg nicht in der Nähe von Gleisen "
+"bauen."
+
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build tracks without the track_builder privilege."
+msgstr "Sie dürfen ohne das „track_builder“-Privileg kein Gleis bauen."
+
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build near tracks at this protected position."
+msgstr "Sie dürfen an geschützten Stellen nicht in der Nähe von Gleisen bauen."
+
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build tracks at this protected position."
+msgstr "Sie dürfen an geschützten Stellen kein Gleis bauen."
+
+#: advtrains/protection.lua:184
+msgid ""
+"You are not allowed to operate turnouts and signals without the "
+"railway_operator privilege."
+msgstr ""
+"Sie dürfen ohne das „railway_operator“-Privileg keine Bahnanlage operieren."
+
+#: advtrains/signals.lua:63
+msgid "Lampless Signal"
+msgstr "Mechanisches Signal"
+
+#: advtrains/signals.lua:127
+msgid "Signal"
+msgstr "Lichtsignal"
+
+#: advtrains/signals.lua:191
+msgid "Wallmounted Signal (left)"
+msgstr "An der linken Seite montiertes Signal"
+
+#: advtrains/signals.lua:192
+msgid "Wallmounted Signal (right)"
+msgstr "An der rechten Seite montiertes Signal"
+
+#: advtrains/signals.lua:193
+msgid "Wallmounted Signal (top)"
+msgstr "An der Decke montiertes Signal"
+
+#: advtrains/signals.lua:281 advtrains/signals.lua:322
+msgid "Andrew's Cross"
+msgstr "Andreaskreuz"
+
#: advtrains/trackplacer.lua:313
msgid ""
"Track Worker Tool\n"
"\n"
"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate rail/bumper/signal/etc."
+"Right-click: rotate object"
msgstr ""
"Gleiswerkzeug\n"
"\n"
-"Linksklick: Gleistyp ändern, Rechtsklick: Objekt drehen."
+"Linksklick: Gleistyp ändern\n"
+"Rechtsklick: Objekt drehen"
#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
-msgid "This node can't be rotated using the trackworker!"
+msgid "This node can't be rotated using the trackworker."
msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug gedreht werden."
#: advtrains/trackplacer.lua:350
-msgid "This track can not be rotated!"
-msgstr "Dieses Gleis kann nicht gedreht werden!"
+msgid "This track can not be rotated."
+msgstr "Dieses Gleis kann nicht gedreht werden."
#: advtrains/trackplacer.lua:404
-msgid "This node can't be changed using the trackworker!"
+msgid "This node can't be changed using the trackworker."
msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug bearbeitet werden."
#: advtrains/trackplacer.lua:414
-msgid "This track can not be changed!"
-msgstr "Dieses Gleis kann nicht geändert werden!"
+msgid "This track can not be changed."
+msgstr "Dieses Gleis kann nicht geändert werden."
+
+#: advtrains/tracks.lua:449
+msgid "This track can not be removed."
+msgstr "Dieses Gleis kann nicht entfernt werden."
+
+#: advtrains/tracks.lua:616
+msgid "Position is occupied by a train."
+msgstr "Ein Zug steht an dieser Position."
+
+#: advtrains/tracks.lua:622
+msgid "There's a Track Circuit Break here."
+msgstr "Hier ist eine Gleisabschnittsgrenze (TCB)."
+
+#: advtrains/tracks.lua:626
+msgid "There's a Signal Influence Point here."
+msgstr "Hier ist ein Signal-Beeinflussungspunkt."
+
+#: advtrains/tracks.lua:637
+msgid "@1 Slope"
+msgstr "@1 Steigung"
+
+#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
+msgid "Can't place slope: not pointing at node."
+msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block."
+
+#: advtrains/tracks.lua:658
+msgid "Can't place slope: space occupied."
+msgstr "Es kann nicht platziert werden: Diese Position ist besetzt."
+
+#: advtrains/tracks.lua:711
+msgid "Can't place slope: Not enough slope items left (@1 required)."
+msgstr ""
+"Es kann nicht platziert werden: Sie haben nicht genug Steigungsblöcke, es "
+"werden insgesamt @1 benötigt."
+
+#: advtrains/tracks.lua:714
+msgid "Can't place slope: There's no slope of length @1."
+msgstr ""
+"Es kann nicht platziert werden: die Steigung der Länge @1 ist nicht "
+"definiert."
+
+#: advtrains/tracks.lua:721
+msgid "Can't place slope: no supporting node at upper end."
+msgstr ""
+"Es kann nicht platziert werden: es gibt keinen unterstützenden Block am Ende "
+"der Steigung."
+
+#: advtrains/trainhud.lua:305
+msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
+msgstr ""
#: advtrains/wagons.lua:179
msgid "This wagon is owned by @1, you can't destroy it."
msgstr "Dieser Waggon gehört @1, Sie dürfen ihn nicht abbauen."
#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty!"
-msgstr "Das Inventar dieses Waggons ist nicht leer!"
+msgid "The wagon's inventory is not empty."
+msgstr "Das Inventar dieses Waggons ist nicht leer."
#: advtrains/wagons.lua:210
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
-msgstr ""
+msgstr "Der Waggon muss abgekoppelt sein, damit Sie ihn abbauen können."
#: advtrains/wagons.lua:216
msgid ""
@@ -163,9 +369,21 @@ msgstr "Ausstieg zwingen"
msgid "(Doors closed)"
msgstr "(Türen geschlossen)"
+#: advtrains/wagons.lua:692
+msgid "This wagon has no seats."
+msgstr "In diesem Waggon ist kein Sitzplatz vorhanden."
+
+#: advtrains/wagons.lua:703
+msgid "This wagon is full."
+msgstr "Der Waggon ist voll."
+
+#: advtrains/wagons.lua:706
+msgid "Doors are closed! (Try holding sneak key!)"
+msgstr "Die Türen sind geschlossen."
+
#: advtrains/wagons.lua:712
-msgid "Can't get on: "
-msgstr ""
+msgid "You can't get on this wagon."
+msgstr "Sie können nicht in diesen Waggon einsteigen."
#: advtrains/wagons.lua:838
msgid "Select seat:"
@@ -193,195 +411,41 @@ msgstr ""
#: advtrains/wagons.lua:1241
msgid ""
-"Doors are closed! Use Sneak+rightclick to ignore the closed doors and get "
-"off!"
+"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
+"off."
msgstr ""
"Die Türen sind geschlossen. Nutzen Sie Schleichen+Rechtsklick, um trotz "
"geschlossener Türen auszusteigen."
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
-msgstr ""
-
-#: advtrains/tracks.lua:449
-msgid "This track can not be removed!"
-msgstr "Dieses Gleis kann nicht entfernt werden!"
-
-#: advtrains/tracks.lua:616
-msgid "Position is occupied by a train."
-msgstr "Ein Zug steht an dieser Position."
-
-#: advtrains/tracks.lua:622
-msgid "There's a Track Circuit Break here."
-msgstr "Hier ist eine Gleisabschnittsgrenze (TCB)."
-
-#: advtrains/tracks.lua:626
-msgid "There's a Signal Influence Point here."
-msgstr "Hier ist ein Signal-Beeinflussungspunkt."
-
-#: advtrains/tracks.lua:637
-msgid "@1 Slope"
-msgstr "@1 Steigung"
-
-#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place: not pointing at node"
-msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block."
-
-#: advtrains/tracks.lua:658
-msgid "Can't place: space occupied!"
-msgstr "Es kann nicht platziert werden: diese Position ist besetzt."
-
-#: advtrains/tracks.lua:711
-msgid "Can't place: Not enough slope items left (@1 required)"
-msgstr ""
-"Es kann nicht platziert werden: Sie haben nicht genug Steigungsblöcke, es "
-"werden insgesamt @1 benötigt."
-
-#: advtrains/tracks.lua:714
-msgid "Can't place: There's no slope of length @1"
-msgstr ""
-"Es kann nicht platziert werden: die Steigung der Länge @1 ist nicht "
-"definiert."
-
-#: advtrains/tracks.lua:721
-msgid "Can't place: no supporting node at upper end."
-msgstr ""
-"Es kann nicht platziert werden: es gibt keinen unterstützenden Block am Ende "
-"der Steigung."
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr "Mechanisches Signal"
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr "Lichtsignal"
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (l)"
-msgstr "An der linken Seite montiertes Signal"
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (r)"
-msgstr "An der rechten Seite montiertes Signal"
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (t)"
-msgstr "An der Decke montiertes Signal"
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr ""
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr "Schraubenkupplung"
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr "Scharfenbergkupplung"
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
-msgstr "Sie dürfen ohne das „train_builder“-Privileg keine Züge ankuppeln."
-
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<none>"
-msgstr ""
-
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
-msgstr "Die Kupplungen der Züge passen nicht zueinander (@1 und @2)."
-
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
-msgstr ""
-"Werkzeug zur Erstellung von Zugkopien\n"
-"\n"
-"Linksklick: Zug ins Clipboard kopieren\n"
-"Right-click: Kopierten Zug einfügen"
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr "Ihnen fehlt das „@1“-Privileg."
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough!"
-msgstr "Das Gleis, auf dem der Waggon platziert werden woll, ist zu kurz."
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr ""
-"Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte eine Kopie des "
-"Zuges nicht eingefügt werden."
-
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr "Das Clipboard ist leer."
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr "Der hinterer Teil dez Zuges wäre nicht auf dem Gleis."
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity!"
-msgstr ""
-"Sie zeigen nicht auf einem Objekt, das mit diesem Werkzeug kopiert werden "
-"kann."
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1"
-msgstr "Es gibt keinen mit „@1“ identifizierbaren Waggon."
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1"
-msgstr "Es gibt keinen mit „@1“ identifizierbaren Zug."
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr ""
-"Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte der Zug nicht "
-"kopiert werden."
+#: advtrains/wagons.lua:1250
+msgid "You are not allowed to access the driver stand."
+msgstr "Sie haben keinen Zugang zum Führerstand."
-#: advtrains/copytool.lua:180
-msgid "Train copied!"
-msgstr "Der Zug wurde Kopiert."
+#: advtrains_interlocking/tsr_rail.lua:13
+msgid "Point speed restriction: @1"
+msgstr "Geschwindigkeitskontrolle: @1"
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
+#: advtrains_interlocking/tsr_rail.lua:14
+msgid "Set point speed restriction:"
msgstr ""
-"Sie dürfen ohne das „track_builder“-Privileg nicht in der Nähe von Gleisen "
-"bauen."
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
-msgstr "Sie dürfen ohne das „track_builder“-Privileg kein Gleis bauen."
+#: advtrains_interlocking/tsr_rail.lua:30
+msgid "You are not allowed to configure this track without the @1 privilege."
+msgstr "Sie dürfen ohne das „@1“-Privileg dieses Gleis nicht konfigurieren."
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr "Sie dürfen an geschützten Stellen nicht in der Nähe von Gleisen bauen."
+#: advtrains_interlocking/tsr_rail.lua:34
+#: advtrains_line_automation/stoprail.lua:31
+#: advtrains_line_automation/stoprail.lua:76
+msgid "You are not allowed to configure this track."
+msgstr "Sie dürfen dieses Gleis nicht konfigurieren."
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr "Sie dürfen an geschützten Stellen kein Gleis bauen."
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr ""
-"Sie dürfen ohne das „railway_operator“-Privileg keine Bahnanlage operieren."
+#: advtrains_interlocking/tsr_rail.lua:64
+msgid "Point Speed Restriction Track"
+msgstr "Geschwindigkeitskontrollgleis"
#: advtrains_line_automation/stoprail.lua:54
msgid "Station Code"
-msgstr "Code der Haltestelle"
+msgstr "Kennzeichen der Haltestelle"
#: advtrains_line_automation/stoprail.lua:55
msgid "Station Name"
@@ -406,65 +470,101 @@ msgstr "Wartezeit"
#: advtrains_line_automation/stoprail.lua:60
msgid "Door Side"
-msgstr ""
+msgstr "Türseite"
#: advtrains_line_automation/stoprail.lua:62
msgid "Reverse train"
-msgstr ""
+msgstr "Zug Umkehren"
#: advtrains_line_automation/stoprail.lua:63
msgid "Kick out passengers"
+msgstr "Fahrgäste zum Ausstieg zwingen"
+
+#: advtrains_line_automation/stoprail.lua:97
+msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""
+"Die Haltestelle mit dem Kennzeichen „@1“ ist bereits vorhanden und wird von "
+"@2 verwaltet."
-#: advtrains_luaautomation/pcnaming.lua:26
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
+#: advtrains_line_automation/stoprail.lua:111
+msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""
-"PC-Benennungswerkzeug\n"
-"\n"
-"Rechtsklick zur Benennung der passiven Komponente"
+"Diese Haltestelle wird von @1 verwaltet. Sie dürfen sie nicht umbenennen."
-#: advtrains_train_track/init.lua:31
-msgid "Y-turnout"
-msgstr "Y-Weiche"
+#: advtrains_line_automation/stoprail.lua:221
+msgid "Station/Stop Track"
+msgstr "Gleis zur Kennzeichnung einer Haltestelle"
-#: advtrains_train_track/init.lua:49
-msgid "3-way turnout"
-msgstr "Dreiwegweiche"
+#: advtrains_luaautomation/active_common.lua:17
+msgid "Unconfigured LuaATC component"
+msgstr "Nicht konfiguierter LuaATC-Bauteil"
-#: advtrains_train_track/init.lua:69
-msgid "Perpendicular Diamond Crossing Track"
-msgstr "Kreuzung mit zueinander orthogonalen Gleisen"
+#: advtrains_luaautomation/active_common.lua:46
+msgid "LuaATC Environment"
+msgstr ""
-#: advtrains_train_track/init.lua:91
-msgid "90+Angle Diamond Crossing Track"
-msgstr "Kreuzung mit einem achsenparallelen Gleis"
+#: advtrains_luaautomation/active_common.lua:49
+msgid "Clear Local Environment"
+msgstr ""
-#: advtrains_train_track/init.lua:132
-msgid "Diagonal Diamond Crossing Track"
-msgstr "Diagonale Gleiskreuzung"
+#: advtrains_luaautomation/active_common.lua:50
+msgid "Code"
+msgstr ""
-#: advtrains_train_track/init.lua:179
-msgid "Bumper"
-msgstr "Prellbock"
+#: advtrains_luaautomation/active_common.lua:64
+msgid ""
+"You are not allowed to configure this LuaATC component without the @1 "
+"privilege."
+msgstr ""
+"Sie dürfen ohne das „@1“-Privileg diesen LuaATC-Bauteil nicht konfigurieren."
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr "Zugbeeinflussungsgleis"
+#: advtrains_luaautomation/active_common.lua:94
+msgid "LuaATC component assigned to environment '@1'"
+msgstr ""
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr "Abladungsgleis"
+#: advtrains_luaautomation/active_common.lua:96
+msgid "LuaATC component assigned to an invalid environment"
+msgstr ""
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr "Beladungsgleis"
+#: advtrains_luaautomation/active_common.lua:171
+msgid "LuaATC component with error: @1"
+msgstr "LuaATC-Bauteil mit Fehlermeldung: @1"
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr "Detektorgleis"
+#: advtrains_luaautomation/init.lua:13
+msgid ""
+"Can place and configure LuaATC components, including execute potentially "
+"harmful Lua code"
+msgstr ""
+"Kann LuaATC-Bauteile platzieren und konfigurieren (auch evtl. schädliche "
+"Programme ausführen)"
+
+#: advtrains_luaautomation/mesecon_controller.lua:211
+msgid "LuaATC Mesecon Controller"
+msgstr ""
+
+#: advtrains_luaautomation/operation_panel.lua:11
+msgid "LuaATC Operation Panel"
+msgstr ""
+
+#: advtrains_luaautomation/pcnaming.lua:28
+msgid ""
+"Passive Component Naming Tool\n"
+"\n"
+"Right-click to name a passive component."
+msgstr ""
+"PC-Benennungswerkzeug\n"
+"\n"
+"Rechtsklick zur Benennung der passiven Komponente."
+
+#: advtrains_luaautomation/pcnaming.lua:39
+msgid ""
+"You are not allowed to name LuaATC passive components without the @1 "
+"privilege."
+msgstr "Sie dürfen ohne das „@1“ keinen passiven LuaATC-Bauteil benennen."
+
+#: advtrains_luaautomation/pcnaming.lua:62
+msgid "Set name of component (empty to clear)"
+msgstr ""
#: advtrains_train_industrial/init.lua:10
#: advtrains_train_industrial/init.lua:49 advtrains_train_steam/init.lua:20
@@ -516,7 +616,7 @@ msgstr "Dampflokomotive"
#: advtrains_train_steam/init.lua:159
msgid "Detailed Steam Engine"
-msgstr "detaillierte Dampflokomotive"
+msgstr "Detaillierte Dampflokomotive"
#: advtrains_train_steam/init.lua:206
msgid "Passenger Wagon"
@@ -530,27 +630,45 @@ msgstr "Güterwaggon"
msgid "Subway Passenger Wagon"
msgstr "U-Bahn-Waggon"
-#~ msgid "This position is protected!"
-#~ msgstr "Diese Position ist geschützt!"
+#: advtrains_train_track/init.lua:31
+msgid "Y-turnout"
+msgstr "Y-Weiche"
-#~ msgid "Can't place: protected position!"
-#~ msgstr "Es kann nicht platziert werden: diese Position ist geschützt."
+#: advtrains_train_track/init.lua:49
+msgid "3-way turnout"
+msgstr "Dreiwegweiche"
-#~ msgid "Deprecated Track"
-#~ msgstr "ausrangiertes Gleis, nicht verwenden."
+#: advtrains_train_track/init.lua:69
+msgid "Perpendicular Diamond Crossing Track"
+msgstr "Kreuzung mit zueinander orthogonalen Gleisen"
-#~ msgid "Can't get on: wagon full or doors closed!"
-#~ msgstr ""
-#~ "Sie können nicht einsteigen: der Waggon ist voll oder die Türen sind "
-#~ "geschlossen."
+#: advtrains_train_track/init.lua:91
+msgid "90+Angle Diamond Crossing Track"
+msgstr "Kreuzung mit einem achsenparallelen Gleis"
-#~ msgid "Use Sneak+rightclick to bypass closed doors!"
-#~ msgstr ""
-#~ "Nutzen Sie Schleichen+Rechtsklick, um trotz geschlossener Türen "
-#~ "einzusteigen."
+#: advtrains_train_track/init.lua:132
+msgid "Diagonal Diamond Crossing Track"
+msgstr "Diagonale Gleiskreuzung"
-#~ msgid "Access to @1"
-#~ msgstr "Zugang zu @1"
+#: advtrains_train_track/init.lua:179
+msgid "Bumper"
+msgstr "Prellbock"
+
+#: advtrains_train_track/init.lua:201
+msgid "ATC controller"
+msgstr "Zugbeeinflussungsgleis"
+
+#: advtrains_train_track/init.lua:317
+msgid "Unloading Track"
+msgstr "Abladungsgleis"
+
+#: advtrains_train_track/init.lua:342
+msgid "Loading Track"
+msgstr "Beladungsgleis"
+
+#: advtrains_train_track/init.lua:406
+msgid "Detector Rail"
+msgstr "Detektorgleis"
#~ msgid ""
#~ "ATC controller, mode @1\n"
@@ -559,13 +677,28 @@ msgstr "U-Bahn-Waggon"
#~ "Zugbeeinflussungsgleis in Betriebsart „@1“\n"
#~ "Kanal: @2"
-#~ msgid "Lock couples"
-#~ msgstr "Kupplungen sperren"
+#~ msgid "Access to @1"
+#~ msgstr "Zugang zu @1"
-#~ msgid ""
-#~ "You need to own at least one neighboring wagon to destroy this couple."
+#~ msgid "Can't get on: wagon full or doors closed!"
#~ msgstr ""
-#~ "Sie müssen Besitzer eines angrenzenden Waggons sein, um hier abzukuppeln."
+#~ "Sie können nicht einsteigen: der Waggon ist voll oder die Türen sind "
+#~ "geschlossen."
+
+#~ msgid "Can't place: protected position!"
+#~ msgstr "Es kann nicht platziert werden: diese Position ist geschützt."
+
+#~ msgid "Default Seat"
+#~ msgstr "Standardsitzplatz"
+
+#~ msgid "Default Seat (driver stand)"
+#~ msgstr "Standardsitzplatz (Führerstand)"
+
+#~ msgid "Deprecated Track"
+#~ msgstr "ausrangiertes Gleis, nicht verwenden."
+
+#~ msgid "Lock couples"
+#~ msgstr "Kupplungen sperren"
#~ msgid "Speed:"
#~ msgstr "Geschw.:"
@@ -573,8 +706,19 @@ msgstr "U-Bahn-Waggon"
#~ msgid "Target:"
#~ msgstr "Zielges.:"
-#~ msgid "Default Seat"
-#~ msgstr "Standardsitzplatz"
+#~ msgid "This position is protected!"
+#~ msgstr "Diese Position ist geschützt!"
-#~ msgid "Default Seat (driver stand)"
-#~ msgstr "Standardsitzplatz (Führerstand)"
+#~ msgid "Use Sneak+rightclick to bypass closed doors!"
+#~ msgstr ""
+#~ "Nutzen Sie Schleichen+Rechtsklick, um trotz geschlossener Türen "
+#~ "einzusteigen."
+
+#, fuzzy
+#~ msgid "You are not allowed to modify this protected track."
+#~ msgstr "Sie dürfen an geschützten Stellen kein Gleis bauen."
+
+#~ msgid ""
+#~ "You need to own at least one neighboring wagon to destroy this couple."
+#~ msgstr ""
+#~ "Sie müssen Besitzer eines angrenzenden Waggons sein, um hier abzukuppeln."
diff --git a/advtrains/po/fr.po b/advtrains/po/fr.po
index 9a16799..3cb68b0 100644
--- a/advtrains/po/fr.po
+++ b/advtrains/po/fr.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: advtrains\n"
"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
-"POT-Creation-Date: 2023-10-04 15:40+0200\n"
+"POT-Creation-Date: 2023-10-09 11:02+0200\n"
"PO-Revision-Date: 2022-07-05 10:11+0200\n"
"Last-Translator: Tanavit <tanavit@posto.ovh>\n"
"Language-Team: French\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: advtrains/atc.lua:109
-msgid "ATC controller, unconfigured."
+msgid "Unconfigured ATC controller"
msgstr "Controlleur ATC, non-configuré "
#: advtrains/atc.lua:150
@@ -36,20 +36,22 @@ msgid "Digiline channel"
msgstr "Canal Digiline"
#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
+#: advtrains_luaautomation/active_common.lua:48
msgid "Save"
msgstr "Sauvegarder"
#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving!"
+#, fuzzy
+msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr ""
"Attention : Commande ATC de renversement impossible car le train se déplace !"
#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: Doors closed"
+msgid "ATC Kick command warning: doors are closed."
msgstr ""
#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: Train moving"
+msgid "ATC Kick command warning: train moving."
msgstr ""
#: advtrains/atc.lua:322
@@ -60,12 +62,89 @@ msgstr "Erreur de syntaxe de commande ATC : instruction \"I\" incomplète : @1"
msgid "ATC command parse error: Unknown command: @1"
msgstr "Erreur d'analyse de commande ATC : Commande inconnue : @1"
+#: advtrains/copytool.lua:8
+msgid ""
+"Train copy/paste tool\n"
+"\n"
+"Left-click: copy train\n"
+"Right-click: paste train"
+msgstr ""
+"Outil de copie/collage de train\n"
+"\n"
+"Clic-Gauche : copie\n"
+"\n"
+"Clic-Droit : collage"
+
+#: advtrains/copytool.lua:29
+msgid "You do not have the @1 privilege."
+msgstr "Vous ne possédez pas le privilège \"@1\"."
+
+#: advtrains/copytool.lua:41
+#, fuzzy
+msgid "The track you are trying to place the wagon on is not long enough."
+msgstr "La voie sur laquelle vous tentez de placer le wagon est trop courte !"
+
+#: advtrains/copytool.lua:47
+msgid "The clipboard couldn't access the metadata. Paste failed."
+msgstr "Le presse-papier ne peut accéder aux métadonnées. Échec du collage."
+
+#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
+msgid "The clipboard is empty."
+msgstr "Le presse-papier est vide."
+
+#: advtrains/copytool.lua:74
+msgid "Back of train would end up off track, cancelling."
+msgstr "La fin du train serait hors voie : annulation."
+
+#: advtrains/copytool.lua:92
+msgid "No such lua entity."
+msgstr "Pas de telle entité lua."
+
+#: advtrains/copytool.lua:98
+msgid "No such wagon: @1."
+msgstr "Pas de tel wagon : @1."
+
+#: advtrains/copytool.lua:104
+msgid "No such train: @1."
+msgstr "Pas de tel train : @1."
+
+#: advtrains/copytool.lua:176
+msgid "The clipboard couldn't access the metadata. Copy failed."
+msgstr "Le presse-papier ne peut accéder aux métadonnées. Échec de la copie."
+
+#: advtrains/copytool.lua:180
+msgid "Train copied."
+msgstr "Train copié."
+
+#: advtrains/couple.lua:28
+msgid "Buffer and Chain Coupler"
+msgstr "Attelage à tampon et vis"
+
+#: advtrains/couple.lua:29
+msgid "Scharfenberg Coupler"
+msgstr "Attelage Scharfenberg"
+
+#: advtrains/couple.lua:185
+msgid ""
+"You are not allowed to couple trains without the train_operator privilege."
+msgstr ""
+
+#: advtrains/couple.lua:329 advtrains/couple.lua:333
+msgid "<No coupler>"
+msgstr ""
+
+#: advtrains/couple.lua:334
+msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
+msgstr ""
+"Accouplement impossible: les attelages des trains ne concordent pas (@1 et "
+"@2)."
+
#: advtrains/craft_items.lua:3
msgid "Boiler"
msgstr "Chaudière à vapeur"
#: advtrains/craft_items.lua:9
-msgid "driver's cab"
+msgid "Driver's cab"
msgstr "Cabine de pilotage"
#: advtrains/craft_items.lua:15
@@ -92,12 +171,86 @@ msgstr "Quai @1 (haut, 45°)"
msgid "@1 Platform (low, 45 degree)"
msgstr "Quai @1 (bas, 45°)"
+#: advtrains/protection.lua:7
+msgid "Can place, remove and operate trains"
+msgstr ""
+
+#: advtrains/protection.lua:12
+msgid ""
+"Can place, remove and operate any train, regardless of owner, whitelist, or "
+"protection"
+msgstr ""
+
+#: advtrains/protection.lua:18
+msgid "Can place and dig tracks in unprotected areas"
+msgstr ""
+
+#: advtrains/protection.lua:24
+msgid "Can operate turnouts and signals in unprotected areas"
+msgstr ""
+
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build near tracks without the track_builder privilege."
+msgstr ""
+"Vous ne pouvez pas construire à proximité d'une voie sans le privilège "
+"\"track_builder\" (?)"
+
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build tracks without the track_builder privilege."
+msgstr ""
+"Vous ne pouvez pas construire une voie sans le privilège \"track_builder\""
+
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build near tracks at this protected position."
+msgstr ""
+"Vous ne pouvez pas construire à proximité d'une voie à cet emplacement "
+"protégé"
+
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build tracks at this protected position."
+msgstr "Vous ne pouvez pas construire une voie à cet emplacement protégé"
+
+#: advtrains/protection.lua:184
+msgid ""
+"You are not allowed to operate turnouts and signals without the "
+"railway_operator privilege."
+msgstr ""
+"Vous ne pouvez pas actionner les aiguillages ou les signaux (privilège "
+"\"railway_operator\" manquant)"
+
+#: advtrains/signals.lua:63
+msgid "Lampless Signal"
+msgstr "Sémaphore"
+
+#: advtrains/signals.lua:127
+msgid "Signal"
+msgstr ""
+
+#: advtrains/signals.lua:191
+msgid "Wallmounted Signal (left)"
+msgstr "Signal mural (gauche)"
+
+#: advtrains/signals.lua:192
+msgid "Wallmounted Signal (right)"
+msgstr "Signal mural (droit)"
+
+#: advtrains/signals.lua:193
+msgid "Wallmounted Signal (top)"
+msgstr "Signal mural (plafond)"
+
+#: advtrains/signals.lua:281 advtrains/signals.lua:322
+msgid "Andrew's Cross"
+msgstr "Croix de Saint André"
+
#: advtrains/trackplacer.lua:313
+#, fuzzy
msgid ""
"Track Worker Tool\n"
"\n"
"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate rail/bumper/signal/etc."
+"Right-click: rotate object"
msgstr ""
"Outil \"Trackworker\"\n"
"\n"
@@ -106,28 +259,80 @@ msgstr ""
"Clic-Droit : tourne le rail/butoir/signal/etc..."
#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
-msgid "This node can't be rotated using the trackworker!"
+#, fuzzy
+msgid "This node can't be rotated using the trackworker."
msgstr "Ce nœud ne peut être tourné avec l'outil \"Trackworker\" !"
#: advtrains/trackplacer.lua:350
-msgid "This track can not be rotated!"
-msgstr "Cette voie ne peut pas être tournée !"
+msgid "This track can not be rotated."
+msgstr "Cette voie ne peut pas être tournée."
#: advtrains/trackplacer.lua:404
-msgid "This node can't be changed using the trackworker!"
+#, fuzzy
+msgid "This node can't be changed using the trackworker."
msgstr "Ce nœud ne peut être modifié avec l'outil \"Trackworker\" !"
#: advtrains/trackplacer.lua:414
-msgid "This track can not be changed!"
-msgstr "Cette voie ne peut pas être modifiée !"
+msgid "This track can not be changed."
+msgstr "Cette voie ne peut pas être modifiée."
+
+#: advtrains/tracks.lua:449
+msgid "This track can not be removed."
+msgstr "Cette voie ne peut pas être enlevée."
+
+#: advtrains/tracks.lua:616
+msgid "Position is occupied by a train."
+msgstr "Cet emplacement est occupé par un train."
+
+#: advtrains/tracks.lua:622
+msgid "There's a Track Circuit Break here."
+msgstr "Il y a un \"Track Circuit Break\" ici."
+
+#: advtrains/tracks.lua:626
+msgid "There's a Signal Influence Point here."
+msgstr "Il y a un \"Signal Influence Point\" ici."
+
+#: advtrains/tracks.lua:637
+msgid "@1 Slope"
+msgstr "Pente @1"
+
+#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
+#, fuzzy
+msgid "Can't place slope: not pointing at node."
+msgstr "Placement impossible : ne pointe pas un nœud"
+
+#: advtrains/tracks.lua:658
+#, fuzzy
+msgid "Can't place slope: space occupied."
+msgstr "Placement impossible : espace occupé"
+
+#: advtrains/tracks.lua:711
+#, fuzzy
+msgid "Can't place slope: Not enough slope items left (@1 required)."
+msgstr ""
+"Placement impossible : quantité insuffisante de voie pentue (@1 manquant)"
+
+#: advtrains/tracks.lua:714
+#, fuzzy
+msgid "Can't place slope: There's no slope of length @1."
+msgstr "Placement impossible : il n'y a pas de voie pentue de longueur @1"
+
+#: advtrains/tracks.lua:721
+#, fuzzy
+msgid "Can't place slope: no supporting node at upper end."
+msgstr "Placement impossible : pas de nœud d'appui à l'extrémité supérieure"
+
+#: advtrains/trainhud.lua:305
+msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
+msgstr ""
#: advtrains/wagons.lua:179
msgid "This wagon is owned by @1, you can't destroy it."
msgstr "Ce wagon est la propriété de @1, vous ne pouvez pas le détruire."
#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty!"
-msgstr "Le stock de ce wagon n'est pas vide !"
+msgid "The wagon's inventory is not empty."
+msgstr "Le stock de ce wagon n'est pas vide."
#: advtrains/wagons.lua:210
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
@@ -166,8 +371,20 @@ msgstr "Débarquer (de force)"
msgid "(Doors closed)"
msgstr "(Portes closes)"
+#: advtrains/wagons.lua:692
+msgid "This wagon has no seats."
+msgstr ""
+
+#: advtrains/wagons.lua:703
+msgid "This wagon is full."
+msgstr ""
+
+#: advtrains/wagons.lua:706
+msgid "Doors are closed! (Try holding sneak key!)"
+msgstr ""
+
#: advtrains/wagons.lua:712
-msgid "Can't get on: "
+msgid "You can't get on this wagon."
msgstr ""
#: advtrains/wagons.lua:838
@@ -195,188 +412,39 @@ msgid "Routingcode"
msgstr "Code de routage"
#: advtrains/wagons.lua:1241
+#, fuzzy
msgid ""
-"Doors are closed! Use Sneak+rightclick to ignore the closed doors and get "
-"off!"
+"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
+"off."
msgstr ""
"Portes closes ! Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour "
"franchir les portes et débarquer !"
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
-msgstr ""
-
-#: advtrains/tracks.lua:449
-msgid "This track can not be removed!"
-msgstr "Cette voie ne peut pas être enlevée !"
-
-#: advtrains/tracks.lua:616
-msgid "Position is occupied by a train."
-msgstr "Cet emplacement est occupé par un train."
-
-#: advtrains/tracks.lua:622
-msgid "There's a Track Circuit Break here."
-msgstr "Il y a un \"Track Circuit Break\" ici."
-
-#: advtrains/tracks.lua:626
-msgid "There's a Signal Influence Point here."
-msgstr "Il y a un \"Signal Influence Point\" ici."
-
-#: advtrains/tracks.lua:637
-msgid "@1 Slope"
-msgstr "Pente @1"
-
-#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place: not pointing at node"
-msgstr "Placement impossible : ne pointe pas un nœud"
-
-#: advtrains/tracks.lua:658
-msgid "Can't place: space occupied!"
-msgstr "Placement impossible : espace occupé"
-
-#: advtrains/tracks.lua:711
-msgid "Can't place: Not enough slope items left (@1 required)"
-msgstr ""
-"Placement impossible : quantité insuffisante de voie pentue (@1 manquant)"
-
-#: advtrains/tracks.lua:714
-msgid "Can't place: There's no slope of length @1"
-msgstr "Placement impossible : il n'y a pas de voie pentue de longueur @1"
-
-#: advtrains/tracks.lua:721
-msgid "Can't place: no supporting node at upper end."
-msgstr "Placement impossible : pas de nœud d'appui à l'extrémité supérieure"
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr "Sémaphore"
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr ""
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (l)"
-msgstr "Signal mural (gauche)"
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (r)"
-msgstr "Signal mural (droit)"
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (t)"
-msgstr "Signal mural (plafond)"
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr "Croix de Saint André"
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr "Attelage à tampon et vis"
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr "Attelage Scharfenberg"
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
+#: advtrains/wagons.lua:1250
+msgid "You are not allowed to access the driver stand."
msgstr ""
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<none>"
+#: advtrains_interlocking/tsr_rail.lua:13
+msgid "Point speed restriction: @1"
msgstr ""
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
+#: advtrains_interlocking/tsr_rail.lua:14
+msgid "Set point speed restriction:"
msgstr ""
-"Accouplement impossible: les attelages des trains ne concordent pas (@1 et "
-"@2)."
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
+#: advtrains_interlocking/tsr_rail.lua:30
+msgid "You are not allowed to configure this track without the @1 privilege."
msgstr ""
-"Outil de copie/collage de train\n"
-"\n"
-"Clic-Gauche : copie\n"
-"\n"
-"Clic-Droit : collage"
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr "Vous ne possédez pas le privilège \"@1\"."
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough!"
-msgstr "La voie sur laquelle vous tentez de placer le wagon est trop courte !"
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr "Le presse-papier ne peut accéder aux métadonnées. Échec du collage."
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr "Le presse-papier est vide."
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr "La fin du train serait hors voie : annulation."
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity!"
-msgstr "Pas de telle entité lua !"
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1"
-msgstr "Pas de tel wagon : @1"
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1"
-msgstr "Pas de tel train : @1"
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr "Le presse-papier ne peut accéder aux métadonnées. Échec de la copie."
-
-#: advtrains/copytool.lua:180
-msgid "Train copied!"
-msgstr "Train copié !"
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
+#: advtrains_interlocking/tsr_rail.lua:34
+#: advtrains_line_automation/stoprail.lua:31
+#: advtrains_line_automation/stoprail.lua:76
+msgid "You are not allowed to configure this track."
msgstr ""
-"Vous ne pouvez pas construire à proximité d'une voie sans le privilège "
-"\"track_builder\" (?)"
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
+#: advtrains_interlocking/tsr_rail.lua:64
+msgid "Point Speed Restriction Track"
msgstr ""
-"Vous ne pouvez pas construire une voie sans le privilège \"track_builder\""
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr ""
-"Vous ne pouvez pas construire à proximité d'une voie à cet emplacement "
-"protégé"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr "Vous ne pouvez pas construire une voie à cet emplacement protégé"
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr ""
-"Vous ne pouvez pas actionner les aiguillages ou les signaux (privilège "
-"\"railway_operator\" manquant)"
#: advtrains_line_automation/stoprail.lua:54
msgid "Station Code"
@@ -415,55 +483,85 @@ msgstr ""
msgid "Kick out passengers"
msgstr ""
-#: advtrains_luaautomation/pcnaming.lua:26
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
+#: advtrains_line_automation/stoprail.lua:97
+msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""
-"Outil de nommage de composant passif\n"
-"\n"
-"Clic-Droit pour nommer un composant passif."
-#: advtrains_train_track/init.lua:31
-msgid "Y-turnout"
-msgstr "Embranchement en Y"
+#: advtrains_line_automation/stoprail.lua:111
+msgid "This station is owned by @1. You are not allowed to edit its name."
+msgstr ""
-#: advtrains_train_track/init.lua:49
-msgid "3-way turnout"
-msgstr "Embranchement triple"
+#: advtrains_line_automation/stoprail.lua:221
+msgid "Station/Stop Track"
+msgstr ""
-#: advtrains_train_track/init.lua:69
-msgid "Perpendicular Diamond Crossing Track"
-msgstr "Croisement perpendiculaire"
+#: advtrains_luaautomation/active_common.lua:17
+msgid "Unconfigured LuaATC component"
+msgstr ""
-#: advtrains_train_track/init.lua:91
-msgid "90+Angle Diamond Crossing Track"
-msgstr "Croisement perpendiculo-diagonal"
+#: advtrains_luaautomation/active_common.lua:46
+msgid "LuaATC Environment"
+msgstr ""
-#: advtrains_train_track/init.lua:132
-msgid "Diagonal Diamond Crossing Track"
-msgstr "Croisement diagonal"
+#: advtrains_luaautomation/active_common.lua:49
+msgid "Clear Local Environment"
+msgstr ""
-#: advtrains_train_track/init.lua:179
-msgid "Bumper"
-msgstr "Heurtoir"
+#: advtrains_luaautomation/active_common.lua:50
+msgid "Code"
+msgstr ""
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr "Controlleur ATC"
+#: advtrains_luaautomation/active_common.lua:64
+msgid ""
+"You are not allowed to configure this LuaATC component without the @1 "
+"privilege."
+msgstr ""
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr "Voie de Déchargement"
+#: advtrains_luaautomation/active_common.lua:94
+msgid "LuaATC component assigned to environment '@1'"
+msgstr ""
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr "Voie de Chargement"
+#: advtrains_luaautomation/active_common.lua:96
+msgid "LuaATC component assigned to an invalid environment"
+msgstr ""
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr "Voie détectrice"
+#: advtrains_luaautomation/active_common.lua:171
+msgid "LuaATC component with error: @1"
+msgstr ""
+
+#: advtrains_luaautomation/init.lua:13
+msgid ""
+"Can place and configure LuaATC components, including execute potentially "
+"harmful Lua code"
+msgstr ""
+
+#: advtrains_luaautomation/mesecon_controller.lua:211
+msgid "LuaATC Mesecon Controller"
+msgstr ""
+
+#: advtrains_luaautomation/operation_panel.lua:11
+msgid "LuaATC Operation Panel"
+msgstr ""
+
+#: advtrains_luaautomation/pcnaming.lua:28
+msgid ""
+"Passive Component Naming Tool\n"
+"\n"
+"Right-click to name a passive component."
+msgstr ""
+"Outil de nommage de composant passif\n"
+"\n"
+"Clic-Droit pour nommer un composant passif."
+
+#: advtrains_luaautomation/pcnaming.lua:39
+msgid ""
+"You are not allowed to name LuaATC passive components without the @1 "
+"privilege."
+msgstr ""
+
+#: advtrains_luaautomation/pcnaming.lua:62
+msgid "Set name of component (empty to clear)"
+msgstr ""
#: advtrains_train_industrial/init.lua:10
#: advtrains_train_industrial/init.lua:49 advtrains_train_steam/init.lua:20
@@ -529,26 +627,45 @@ msgstr "Wagon de frêt"
msgid "Subway Passenger Wagon"
msgstr "Voiture de Métropolitain"
-#~ msgid "This position is protected!"
-#~ msgstr "Cet emplacement est protégé !"
+#: advtrains_train_track/init.lua:31
+msgid "Y-turnout"
+msgstr "Embranchement en Y"
-#~ msgid "Can't place: protected position!"
-#~ msgstr "Placement impossible : emplacement protégé"
+#: advtrains_train_track/init.lua:49
+msgid "3-way turnout"
+msgstr "Embranchement triple"
-#~ msgid "Deprecated Track"
-#~ msgstr "Voie déconseillée"
+#: advtrains_train_track/init.lua:69
+msgid "Perpendicular Diamond Crossing Track"
+msgstr "Croisement perpendiculaire"
-#~ msgid "Can't get on: wagon full or doors closed!"
-#~ msgstr ""
-#~ "Embarquement impossible : le wagon est plein ou ses portes sont closes !"
+#: advtrains_train_track/init.lua:91
+msgid "90+Angle Diamond Crossing Track"
+msgstr "Croisement perpendiculo-diagonal"
-#~ msgid "Use Sneak+rightclick to bypass closed doors!"
-#~ msgstr ""
-#~ "Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour franchir les "
-#~ "portes closes !"
+#: advtrains_train_track/init.lua:132
+msgid "Diagonal Diamond Crossing Track"
+msgstr "Croisement diagonal"
-#~ msgid "Access to @1"
-#~ msgstr "Accès à @1"
+#: advtrains_train_track/init.lua:179
+msgid "Bumper"
+msgstr "Heurtoir"
+
+#: advtrains_train_track/init.lua:201
+msgid "ATC controller"
+msgstr "Controlleur ATC"
+
+#: advtrains_train_track/init.lua:317
+msgid "Unloading Track"
+msgstr "Voie de Déchargement"
+
+#: advtrains_train_track/init.lua:342
+msgid "Loading Track"
+msgstr "Voie de Chargement"
+
+#: advtrains_train_track/init.lua:406
+msgid "Detector Rail"
+msgstr "Voie détectrice"
#~ msgid ""
#~ "ATC controller, mode @1\n"
@@ -557,14 +674,27 @@ msgstr "Voiture de Métropolitain"
#~ "Controlleur ATC, mode @1\n"
#~ "Canal : @2"
-#~ msgid "Lock couples"
-#~ msgstr "Verrouiller l'accouplement"
+#~ msgid "Access to @1"
+#~ msgstr "Accès à @1"
-#~ msgid ""
-#~ "You need to own at least one neighboring wagon to destroy this couple."
+#~ msgid "Can't get on: wagon full or doors closed!"
#~ msgstr ""
-#~ "Vous devez être propriétaire d'au moins un wagon voisin pour supprimer "
-#~ "cet attelage."
+#~ "Embarquement impossible : le wagon est plein ou ses portes sont closes !"
+
+#~ msgid "Can't place: protected position!"
+#~ msgstr "Placement impossible : emplacement protégé"
+
+#~ msgid "Default Seat"
+#~ msgstr "Siège par défaut"
+
+#~ msgid "Default Seat (driver stand)"
+#~ msgstr "Siège par défaut (poste de pilotage)"
+
+#~ msgid "Deprecated Track"
+#~ msgstr "Voie déconseillée"
+
+#~ msgid "Lock couples"
+#~ msgstr "Verrouiller l'accouplement"
#~ msgid "Speed:"
#~ msgstr "Vitesse : "
@@ -572,8 +702,24 @@ msgstr "Voiture de Métropolitain"
#~ msgid "Target:"
#~ msgstr "Destination : "
-#~ msgid "Default Seat"
-#~ msgstr "Siège par défaut"
+#, fuzzy
+#~ msgid "This node can't be rotated using the trackworker,"
+#~ msgstr "Ce nœud ne peut être tourné avec l'outil \"Trackworker\" !"
-#~ msgid "Default Seat (driver stand)"
-#~ msgstr "Siège par défaut (poste de pilotage)"
+#~ msgid "This position is protected!"
+#~ msgstr "Cet emplacement est protégé !"
+
+#~ msgid "Use Sneak+rightclick to bypass closed doors!"
+#~ msgstr ""
+#~ "Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour franchir les "
+#~ "portes closes !"
+
+#, fuzzy
+#~ msgid "You are not allowed to modify this protected track."
+#~ msgstr "Vous ne pouvez pas construire une voie à cet emplacement protégé"
+
+#~ msgid ""
+#~ "You need to own at least one neighboring wagon to destroy this couple."
+#~ msgstr ""
+#~ "Vous devez être propriétaire d'au moins un wagon voisin pour supprimer "
+#~ "cet attelage."
diff --git a/advtrains/po/update-translations.sh b/advtrains/po/update-translations.sh
index d86c568..3a56c7c 100755
--- a/advtrains/po/update-translations.sh
+++ b/advtrains/po/update-translations.sh
@@ -1,24 +1,28 @@
#!/bin/sh
# NOTE: Please make sure you also have basic_trains installed, as it uses attrans for historical reasons
-ATDIR=`dirname "$0"`/../..
-BTDIR="$ATDIR"/../basic_trains
+PODIR=`dirname "$0"`
+ATDIR="$PODIR/../.."
+BTDIR="$ATDIR/../basic_trains"
+POTFILE="$PODIR/advtrains.pot"
xgettext \
-D "$ATDIR" \
-D "$BTDIR" \
-d advtrains \
+ -o "$POTFILE" \
-p . \
-L lua \
--from-code=UTF-8 \
+ --sort-by-file \
--keyword='attrans' \
--keyword='S' \
--package-name='advtrains' \
--msgid-bugs-address='advtrains-discuss@lists.sr.ht' \
`find $ATDIR $BTDIR -name '*.lua' -printf '%P\n'` \
&&
-mv advtrains.po template.pot &&
-for i in *.po; do
+for i in "$PODIR"/*.po; do
msgmerge -U \
- $i template.pot
+ --sort-by-file \
+ $i "$POTFILE"
done
diff --git a/advtrains/po/zh_CN.po b/advtrains/po/zh_CN.po
index c81cf6c..5bcc316 100644
--- a/advtrains/po/zh_CN.po
+++ b/advtrains/po/zh_CN.po
@@ -2,17 +2,18 @@ msgid ""
msgstr ""
"Project-Id-Version: advtrains\n"
"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
-"POT-Creation-Date: 2023-10-04 15:40+0200\n"
-"PO-Revision-Date: 2022-11-02 15:08+0100\n"
+"POT-Creation-Date: 2023-10-09 11:02+0200\n"
+"PO-Revision-Date: 2023-10-09 11:24+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: Chinese (Simplified)\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 3.3.2\n"
#: advtrains/atc.lua:109
-msgid "ATC controller, unconfigured."
+msgid "Unconfigured ATC controller"
msgstr "ATC 控制器 (未配置)"
#: advtrains/atc.lua:150
@@ -37,20 +38,21 @@ msgid "Digiline channel"
msgstr "Digiline 频道"
#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
+#: advtrains_luaautomation/active_common.lua:48
msgid "Save"
msgstr "保存"
#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving!"
-msgstr "ATC 警告:未执行“R”命令,火车在移动"
+msgid "ATC Reverse command warning: didn't reverse train, train moving."
+msgstr "ATC 警告:火车正在移动,无法改变行车方向。"
#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: Doors closed"
-msgstr ""
+msgid "ATC Kick command warning: doors are closed."
+msgstr "ATC 警告:车门已关闭,无法踢出乘客。"
#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: Train moving"
-msgstr ""
+msgid "ATC Kick command warning: train moving."
+msgstr "ATC 警告:火车正在移动,无法踢出乘客。"
#: advtrains/atc.lua:322
msgid "ATC command syntax error: I statement not closed: @1"
@@ -60,12 +62,85 @@ msgstr "ATC 语法错误:“I”命令不完整:@1"
msgid "ATC command parse error: Unknown command: @1"
msgstr "ATC 语法错误:未知命令:@1"
+#: advtrains/copytool.lua:8
+msgid ""
+"Train copy/paste tool\n"
+"\n"
+"Left-click: copy train\n"
+"Right-click: paste train"
+msgstr ""
+"火车复制工具\n"
+"\n"
+"左键单击:复制\n"
+"右键单击:粘帖"
+
+#: advtrains/copytool.lua:29
+msgid "You do not have the @1 privilege."
+msgstr "您没有“@1”权限。"
+
+#: advtrains/copytool.lua:41
+msgid "The track you are trying to place the wagon on is not long enough."
+msgstr "轨道太短。"
+
+#: advtrains/copytool.lua:47
+msgid "The clipboard couldn't access the metadata. Paste failed."
+msgstr "无法粘贴:剪贴板无法访问元数据。"
+
+#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
+msgid "The clipboard is empty."
+msgstr "剪贴板是空的。"
+
+#: advtrains/copytool.lua:74
+msgid "Back of train would end up off track, cancelling."
+msgstr "火车后部不在轨道上。"
+
+#: advtrains/copytool.lua:92
+msgid "No such lua entity."
+msgstr "您没有指向一个可以用火车复制工具复制的物体。"
+
+#: advtrains/copytool.lua:98
+msgid "No such wagon: @1."
+msgstr "ID 为“@1”的车厢不存在。"
+
+#: advtrains/copytool.lua:104
+msgid "No such train: @1."
+msgstr "ID 为“@1”的列车不存在。"
+
+#: advtrains/copytool.lua:176
+msgid "The clipboard couldn't access the metadata. Copy failed."
+msgstr "无法复制:剪贴板无法访问元数据。"
+
+#: advtrains/copytool.lua:180
+msgid "Train copied."
+msgstr "已复制列车。"
+
+#: advtrains/couple.lua:28
+msgid "Buffer and Chain Coupler"
+msgstr "链式车钩"
+
+#: advtrains/couple.lua:29
+msgid "Scharfenberg Coupler"
+msgstr "Scharfenberg 式车钩"
+
+#: advtrains/couple.lua:185
+msgid ""
+"You are not allowed to couple trains without the train_operator privilege."
+msgstr "您没有“train_operator”权限,不能连接这两节车厢。"
+
+#: advtrains/couple.lua:329 advtrains/couple.lua:333
+msgid "<No coupler>"
+msgstr "<没有车钩>"
+
+#: advtrains/couple.lua:334
+msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
+msgstr "您无法连接这两节车厢:这两节车厢使用不同的车钩 (@1和@2)。"
+
#: advtrains/craft_items.lua:3
msgid "Boiler"
msgstr "锅炉"
#: advtrains/craft_items.lua:9
-msgid "driver's cab"
+msgid "Driver's cab"
msgstr "驾驶室"
#: advtrains/craft_items.lua:15
@@ -92,12 +167,78 @@ msgstr "较高的@1站台 (45°)"
msgid "@1 Platform (low, 45 degree)"
msgstr "较低的@1站台 (45°)"
+#: advtrains/protection.lua:7
+msgid "Can place, remove and operate trains"
+msgstr ""
+
+#: advtrains/protection.lua:12
+msgid ""
+"Can place, remove and operate any train, regardless of owner, whitelist, or "
+"protection"
+msgstr ""
+
+#: advtrains/protection.lua:18
+msgid "Can place and dig tracks in unprotected areas"
+msgstr ""
+
+#: advtrains/protection.lua:24
+msgid "Can operate turnouts and signals in unprotected areas"
+msgstr ""
+
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build near tracks without the track_builder privilege."
+msgstr "您没有“train_operator”权限,不能在铁路附近建任何东西。"
+
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build tracks without the track_builder privilege."
+msgstr "您没有“train_operator”权限,不能在这里建造铁路。"
+
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build near tracks at this protected position."
+msgstr "这里已被保护,您不能在这里的铁路附近建任何东西。"
+
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build tracks at this protected position."
+msgstr "这里已被保护,您不能在这里建造铁路。"
+
+#: advtrains/protection.lua:184
+msgid ""
+"You are not allowed to operate turnouts and signals without the "
+"railway_operator privilege."
+msgstr "您没有“railway_operator”权限,不能控制铁路设施。"
+
+#: advtrains/signals.lua:63
+msgid "Lampless Signal"
+msgstr "臂板信号机"
+
+#: advtrains/signals.lua:127
+msgid "Signal"
+msgstr "信号灯"
+
+#: advtrains/signals.lua:191
+msgid "Wallmounted Signal (left)"
+msgstr "壁挂式信号灯 (左侧)"
+
+#: advtrains/signals.lua:192
+msgid "Wallmounted Signal (right)"
+msgstr "壁挂式信号灯 (右侧)"
+
+#: advtrains/signals.lua:193
+msgid "Wallmounted Signal (top)"
+msgstr "悬挂式信号灯"
+
+#: advtrains/signals.lua:281 advtrains/signals.lua:322
+msgid "Andrew's Cross"
+msgstr "铁路道口信号灯"
+
#: advtrains/trackplacer.lua:313
msgid ""
"Track Worker Tool\n"
"\n"
"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate rail/bumper/signal/etc."
+"Right-click: rotate object"
msgstr ""
"铁路调整工具\n"
"\n"
@@ -105,27 +246,71 @@ msgstr ""
"右键单击:旋转方块"
#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
-msgid "This node can't be rotated using the trackworker!"
+msgid "This node can't be rotated using the trackworker."
msgstr "您不能使用铁路调整工具旋转这个方块。"
#: advtrains/trackplacer.lua:350
-msgid "This track can not be rotated!"
+msgid "This track can not be rotated."
msgstr "您不能旋转这段轨道。"
#: advtrains/trackplacer.lua:404
-msgid "This node can't be changed using the trackworker!"
+msgid "This node can't be changed using the trackworker."
msgstr "您不能使用铁路调整工具调整这个方块。"
#: advtrains/trackplacer.lua:414
-msgid "This track can not be changed!"
+msgid "This track can not be changed."
msgstr "您不能调整这段轨道。"
+#: advtrains/tracks.lua:449
+msgid "This track can not be removed."
+msgstr "您不能移除这段轨道。"
+
+#: advtrains/tracks.lua:616
+msgid "Position is occupied by a train."
+msgstr ""
+
+#: advtrains/tracks.lua:622
+msgid "There's a Track Circuit Break here."
+msgstr ""
+
+#: advtrains/tracks.lua:626
+msgid "There's a Signal Influence Point here."
+msgstr ""
+
+#: advtrains/tracks.lua:637
+msgid "@1 Slope"
+msgstr "@1斜坡"
+
+#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
+msgid "Can't place slope: not pointing at node."
+msgstr "无法放置斜坡:您没有选择任何方块。"
+
+#: advtrains/tracks.lua:658
+msgid "Can't place slope: space occupied."
+msgstr "无法放置斜坡:此区域已被占用。"
+
+#: advtrains/tracks.lua:711
+msgid "Can't place slope: Not enough slope items left (@1 required)."
+msgstr "无法放置斜坡:您没有足够的铁路斜坡放置工具 (您总共需要@1个)"
+
+#: advtrains/tracks.lua:714
+msgid "Can't place slope: There's no slope of length @1."
+msgstr "无法放置斜坡:advtrains 不支持长度为@1米的斜坡。"
+
+#: advtrains/tracks.lua:721
+msgid "Can't place slope: no supporting node at upper end."
+msgstr "无法放置斜坡:较高端没有支撑方块。"
+
+#: advtrains/trainhud.lua:305
+msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
+msgstr ""
+
#: advtrains/wagons.lua:179
msgid "This wagon is owned by @1, you can't destroy it."
msgstr "这是 @1 的车厢,您不能摧毁它。"
#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty!"
+msgid "The wagon's inventory is not empty."
msgstr ""
#: advtrains/wagons.lua:210
@@ -164,13 +349,25 @@ msgstr "强制下车"
msgid "(Doors closed)"
msgstr "(车门已关闭)"
+#: advtrains/wagons.lua:692
+msgid "This wagon has no seats."
+msgstr "这节车厢没有座位。"
+
+#: advtrains/wagons.lua:703
+msgid "This wagon is full."
+msgstr "车厢已满。"
+
+#: advtrains/wagons.lua:706
+msgid "Doors are closed! (Try holding sneak key!)"
+msgstr ""
+
#: advtrains/wagons.lua:712
-msgid "Can't get on: "
+msgid "You can't get on this wagon."
msgstr ""
#: advtrains/wagons.lua:838
msgid "Select seat:"
-msgstr "请选择座位"
+msgstr "请选择座位:"
#: advtrains/wagons.lua:880
msgid "Save wagon properties"
@@ -194,174 +391,35 @@ msgstr "路由码"
#: advtrains/wagons.lua:1241
msgid ""
-"Doors are closed! Use Sneak+rightclick to ignore the closed doors and get "
-"off!"
+"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
+"off."
msgstr "车门已关闭,请使用潜行+右键单击下车。"
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
+#: advtrains/wagons.lua:1250
+msgid "You are not allowed to access the driver stand."
msgstr ""
-#: advtrains/tracks.lua:449
-msgid "This track can not be removed!"
-msgstr "您不能移除这段轨道。"
-
-#: advtrains/tracks.lua:616
-msgid "Position is occupied by a train."
+#: advtrains_interlocking/tsr_rail.lua:13
+msgid "Point speed restriction: @1"
msgstr ""
-#: advtrains/tracks.lua:622
-msgid "There's a Track Circuit Break here."
+#: advtrains_interlocking/tsr_rail.lua:14
+msgid "Set point speed restriction:"
msgstr ""
-#: advtrains/tracks.lua:626
-msgid "There's a Signal Influence Point here."
-msgstr ""
-
-#: advtrains/tracks.lua:637
-msgid "@1 Slope"
-msgstr "@1斜坡"
-
-#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place: not pointing at node"
-msgstr "无法放置:您没有选择任何方块。"
-
-#: advtrains/tracks.lua:658
-msgid "Can't place: space occupied!"
-msgstr "无法放置:此区域已被占用。"
-
-#: advtrains/tracks.lua:711
-msgid "Can't place: Not enough slope items left (@1 required)"
-msgstr "无法放置:您没有足够的铁路斜坡放置工具 (您总共需要@1个)"
-
-#: advtrains/tracks.lua:714
-msgid "Can't place: There's no slope of length @1"
-msgstr "无法放置:advtrains 不支持长度为@1米的斜坡。"
-
-#: advtrains/tracks.lua:721
-msgid "Can't place: no supporting node at upper end."
-msgstr "无法放置:较高端没有支撑方块。"
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr "臂板信号机"
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr "信号灯"
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (l)"
-msgstr "壁挂式信号灯 (左侧)"
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (r)"
-msgstr "壁挂式信号灯 (右侧)"
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (t)"
-msgstr "悬挂式信号灯"
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr "铁路道口信号灯"
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr "链式车钩"
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr "Scharfenberg 式车钩"
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
-msgstr "您没有“train_operator”权限,不能连接这两节车厢。"
-
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<none>"
-msgstr ""
+#: advtrains_interlocking/tsr_rail.lua:30
+msgid "You are not allowed to configure this track without the @1 privilege."
+msgstr "您没有“@1”权限,不能调整这段轨道。"
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
-msgstr "您无法连接这两节车厢:这两节车厢使用不同的车钩 (@1和@2)。"
+#: advtrains_interlocking/tsr_rail.lua:34
+#: advtrains_line_automation/stoprail.lua:31
+#: advtrains_line_automation/stoprail.lua:76
+msgid "You are not allowed to configure this track."
+msgstr "您不能调整这段轨道。"
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
+#: advtrains_interlocking/tsr_rail.lua:64
+msgid "Point Speed Restriction Track"
msgstr ""
-"火车复制工具\n"
-"\n"
-"左键单击:复制\n"
-"右键单击:粘帖"
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr "您没有“@1”权限。"
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough!"
-msgstr "轨道太短。"
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr "无法粘贴:剪贴板无法访问元数据。"
-
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr "剪贴板是空的。"
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr "火车后部不在轨道上。"
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity!"
-msgstr "您没有指向一个可以用火车复制工具复制的物体。"
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1"
-msgstr "ID 为“@1”的车厢不存在。"
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1"
-msgstr "ID 为“@1”的列车不存在。"
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr "无法复制:剪贴板无法访问元数据。"
-
-#: advtrains/copytool.lua:180
-msgid "Train copied!"
-msgstr "已复制"
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
-msgstr "您没有“train_operator”权限,不能在铁路附近建任何东西。"
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
-msgstr "您没有“train_operator”权限,不能在这里建造铁路。"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr "这里已被保护,您不能在这里的铁路附近建任何东西。"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr "这里已被保护,您不能在这里建造铁路。"
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr "您没有“railway_operator”权限,不能控制铁路设施。"
#: advtrains_line_automation/stoprail.lua:54
msgid "Station Code"
@@ -394,61 +452,91 @@ msgstr ""
#: advtrains_line_automation/stoprail.lua:62
msgid "Reverse train"
-msgstr ""
+msgstr "改变行车方向"
#: advtrains_line_automation/stoprail.lua:63
msgid "Kick out passengers"
+msgstr "踢出乘客"
+
+#: advtrains_line_automation/stoprail.lua:97
+msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""
-#: advtrains_luaautomation/pcnaming.lua:26
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
+#: advtrains_line_automation/stoprail.lua:111
+msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""
-"被动元件命名工具\n"
-"\n"
-"右键单击命名所选元件"
-#: advtrains_train_track/init.lua:31
-msgid "Y-turnout"
-msgstr "对称道岔"
+#: advtrains_line_automation/stoprail.lua:221
+msgid "Station/Stop Track"
+msgstr "车站轨道"
-#: advtrains_train_track/init.lua:49
-msgid "3-way turnout"
-msgstr "三开道岔"
+#: advtrains_luaautomation/active_common.lua:17
+msgid "Unconfigured LuaATC component"
+msgstr "LuaATC 部件 (未配置)"
-#: advtrains_train_track/init.lua:69
-msgid "Perpendicular Diamond Crossing Track"
-msgstr "垂直交叉轨道"
+#: advtrains_luaautomation/active_common.lua:46
+msgid "LuaATC Environment"
+msgstr ""
-#: advtrains_train_track/init.lua:91
-msgid "90+Angle Diamond Crossing Track"
-msgstr "交叉轨道 (其中一条轨道与坐标轴平行)"
+#: advtrains_luaautomation/active_common.lua:49
+msgid "Clear Local Environment"
+msgstr ""
-#: advtrains_train_track/init.lua:132
-msgid "Diagonal Diamond Crossing Track"
-msgstr "交叉轨道"
+#: advtrains_luaautomation/active_common.lua:50
+msgid "Code"
+msgstr ""
-#: advtrains_train_track/init.lua:179
-msgid "Bumper"
-msgstr "保险杠"
+#: advtrains_luaautomation/active_common.lua:64
+msgid ""
+"You are not allowed to configure this LuaATC component without the @1 "
+"privilege."
+msgstr "您没有“@1”权限,不能配置这个 LuaATC 部件。"
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr "ATC 控制器"
+#: advtrains_luaautomation/active_common.lua:94
+msgid "LuaATC component assigned to environment '@1'"
+msgstr ""
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr "卸货轨道"
+#: advtrains_luaautomation/active_common.lua:96
+msgid "LuaATC component assigned to an invalid environment"
+msgstr ""
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr "装货轨道"
+#: advtrains_luaautomation/active_common.lua:171
+msgid "LuaATC component with error: @1"
+msgstr ""
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr "探测轨道"
+#: advtrains_luaautomation/init.lua:13
+msgid ""
+"Can place and configure LuaATC components, including execute potentially "
+"harmful Lua code"
+msgstr ""
+
+#: advtrains_luaautomation/mesecon_controller.lua:211
+msgid "LuaATC Mesecon Controller"
+msgstr ""
+
+#: advtrains_luaautomation/operation_panel.lua:11
+msgid "LuaATC Operation Panel"
+msgstr ""
+
+#: advtrains_luaautomation/pcnaming.lua:28
+msgid ""
+"Passive Component Naming Tool\n"
+"\n"
+"Right-click to name a passive component."
+msgstr ""
+"被动元件命名工具\n"
+"\n"
+"右键单击命名所选元件。"
+
+#: advtrains_luaautomation/pcnaming.lua:39
+msgid ""
+"You are not allowed to name LuaATC passive components without the @1 "
+"privilege."
+msgstr "您没有“@1”权限,不能命名被动元件。"
+
+#: advtrains_luaautomation/pcnaming.lua:62
+msgid "Set name of component (empty to clear)"
+msgstr ""
#: advtrains_train_industrial/init.lua:10
#: advtrains_train_industrial/init.lua:49 advtrains_train_steam/init.lua:20
@@ -514,23 +602,45 @@ msgstr "货运车厢"
msgid "Subway Passenger Wagon"
msgstr "地铁车厢"
-#~ msgid "This position is protected!"
-#~ msgstr "这里已被保护。"
+#: advtrains_train_track/init.lua:31
+msgid "Y-turnout"
+msgstr "对称道岔"
-#~ msgid "Can't place: protected position!"
-#~ msgstr "无法放置:此区域已被保护。"
+#: advtrains_train_track/init.lua:49
+msgid "3-way turnout"
+msgstr "三开道岔"
-#~ msgid "Deprecated Track"
-#~ msgstr "请不要使用"
+#: advtrains_train_track/init.lua:69
+msgid "Perpendicular Diamond Crossing Track"
+msgstr "垂直交叉轨道"
-#~ msgid "Can't get on: wagon full or doors closed!"
-#~ msgstr "无法上车:车门已关闭或车厢已满。"
+#: advtrains_train_track/init.lua:91
+msgid "90+Angle Diamond Crossing Track"
+msgstr "交叉轨道 (其中一条轨道与坐标轴平行)"
-#~ msgid "Use Sneak+rightclick to bypass closed doors!"
-#~ msgstr "请使用潜行+右键上车。"
+#: advtrains_train_track/init.lua:132
+msgid "Diagonal Diamond Crossing Track"
+msgstr "交叉轨道"
-#~ msgid "Access to @1"
-#~ msgstr "可前往@1"
+#: advtrains_train_track/init.lua:179
+msgid "Bumper"
+msgstr "保险杠"
+
+#: advtrains_train_track/init.lua:201
+msgid "ATC controller"
+msgstr "ATC 控制器"
+
+#: advtrains_train_track/init.lua:317
+msgid "Unloading Track"
+msgstr "卸货轨道"
+
+#: advtrains_train_track/init.lua:342
+msgid "Loading Track"
+msgstr "装货轨道"
+
+#: advtrains_train_track/init.lua:406
+msgid "Detector Rail"
+msgstr "探测轨道"
#~ msgid ""
#~ "ATC controller, mode @1\n"
@@ -540,21 +650,47 @@ msgstr "地铁车厢"
#~ "模式:@1\n"
#~ "频道:@2"
+#~ msgid "Access to @1"
+#~ msgstr "可前往@1"
+
+#~ msgid "Can't get on: wagon full or doors closed!"
+#~ msgstr "无法上车:车门已关闭或车厢已满。"
+
+#~ msgid "Can't place: protected position!"
+#~ msgstr "无法放置:此区域已被保护。"
+
+#~ msgid "Default Seat"
+#~ msgstr "默认座位"
+
+#~ msgid "Default Seat (driver stand)"
+#~ msgstr "默认座位 (司机座位)"
+
+#~ msgid "Deprecated Track"
+#~ msgstr "请不要使用"
+
#~ msgid "Lock couples"
#~ msgstr "锁定连接处"
-#~ msgid ""
-#~ "You need to own at least one neighboring wagon to destroy this couple."
-#~ msgstr "您必须至少拥有其中一节车厢才能分开这两节车厢。"
-
#~ msgid "Speed:"
#~ msgstr "速度"
#~ msgid "Target:"
#~ msgstr "目标速度"
-#~ msgid "Default Seat"
-#~ msgstr "默认座位"
+#, fuzzy
+#~ msgid "This node can't be rotated using the trackworker,"
+#~ msgstr "您不能使用铁路调整工具旋转这个方块。"
-#~ msgid "Default Seat (driver stand)"
-#~ msgstr "默认座位 (司机座位)"
+#~ msgid "This position is protected!"
+#~ msgstr "这里已被保护。"
+
+#~ msgid "Use Sneak+rightclick to bypass closed doors!"
+#~ msgstr "请使用潜行+右键上车。"
+
+#, fuzzy
+#~ msgid "You are not allowed to modify this protected track."
+#~ msgstr "这里已被保护,您不能在这里建造铁路。"
+
+#~ msgid ""
+#~ "You need to own at least one neighboring wagon to destroy this couple."
+#~ msgstr "您必须至少拥有其中一节车厢才能分开这两节车厢。"
diff --git a/advtrains/po/zh_TW.po b/advtrains/po/zh_TW.po
index 91a205f..ece82c3 100644
--- a/advtrains/po/zh_TW.po
+++ b/advtrains/po/zh_TW.po
@@ -2,17 +2,18 @@ msgid ""
msgstr ""
"Project-Id-Version: advtrains\n"
"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
-"POT-Creation-Date: 2023-10-04 15:40+0200\n"
-"PO-Revision-Date: 2022-11-02 15:08+0100\n"
+"POT-Creation-Date: 2023-10-09 11:02+0200\n"
+"PO-Revision-Date: 2023-10-09 11:31+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: Chinese (Traditional)\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 3.3.2\n"
#: advtrains/atc.lua:109
-msgid "ATC controller, unconfigured."
+msgid "Unconfigured ATC controller"
msgstr "ATC 控制器 (未配置)"
#: advtrains/atc.lua:150
@@ -37,20 +38,21 @@ msgid "Digiline channel"
msgstr "Digiline 頻道"
#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
+#: advtrains_luaautomation/active_common.lua:48
msgid "Save"
msgstr "儲存"
#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving!"
-msgstr "ATC 警告:未執行「R」命令,火車在移動"
+msgid "ATC Reverse command warning: didn't reverse train, train moving."
+msgstr "ATC 警告:火車正在移動,無法改變行車方向。"
#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: Doors closed"
-msgstr ""
+msgid "ATC Kick command warning: doors are closed."
+msgstr "ATC 警告:車門已關閉,無法踢出乘客。"
#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: Train moving"
-msgstr ""
+msgid "ATC Kick command warning: train moving."
+msgstr "ATC 警告:火車正在移動,無法踢出乘客。"
#: advtrains/atc.lua:322
msgid "ATC command syntax error: I statement not closed: @1"
@@ -60,12 +62,85 @@ msgstr "ATC 語法錯誤:「I」命令不完整:@1"
msgid "ATC command parse error: Unknown command: @1"
msgstr "ATC 語法錯誤:未知命令:@1"
+#: advtrains/copytool.lua:8
+msgid ""
+"Train copy/paste tool\n"
+"\n"
+"Left-click: copy train\n"
+"Right-click: paste train"
+msgstr ""
+"火車複製工具\n"
+"\n"
+"左鍵單擊:複製\n"
+"右鍵單擊:粘帖"
+
+#: advtrains/copytool.lua:29
+msgid "You do not have the @1 privilege."
+msgstr "您沒有「@1」許可權。"
+
+#: advtrains/copytool.lua:41
+msgid "The track you are trying to place the wagon on is not long enough."
+msgstr "軌道太短。"
+
+#: advtrains/copytool.lua:47
+msgid "The clipboard couldn't access the metadata. Paste failed."
+msgstr "無法貼上:剪貼簿無法訪問元資料。"
+
+#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
+msgid "The clipboard is empty."
+msgstr "剪貼簿是空的。"
+
+#: advtrains/copytool.lua:74
+msgid "Back of train would end up off track, cancelling."
+msgstr "火車後部不在軌道上。"
+
+#: advtrains/copytool.lua:92
+msgid "No such lua entity."
+msgstr "您沒有指向一個可以用火車複製工具複製的物體。"
+
+#: advtrains/copytool.lua:98
+msgid "No such wagon: @1."
+msgstr "ID 為「@1」的車廂不存在。"
+
+#: advtrains/copytool.lua:104
+msgid "No such train: @1."
+msgstr "ID 為「@1」的列車不存在。"
+
+#: advtrains/copytool.lua:176
+msgid "The clipboard couldn't access the metadata. Copy failed."
+msgstr "無法複製:剪貼簿無法訪問元資料。"
+
+#: advtrains/copytool.lua:180
+msgid "Train copied."
+msgstr "已複製火車。"
+
+#: advtrains/couple.lua:28
+msgid "Buffer and Chain Coupler"
+msgstr "鏈式連結器"
+
+#: advtrains/couple.lua:29
+msgid "Scharfenberg Coupler"
+msgstr "Scharfenberg 式連結器"
+
+#: advtrains/couple.lua:185
+msgid ""
+"You are not allowed to couple trains without the train_operator privilege."
+msgstr "您沒有「train_operator」許可權,不能連結這兩節車廂。"
+
+#: advtrains/couple.lua:329 advtrains/couple.lua:333
+msgid "<No coupler>"
+msgstr "<無連結器>"
+
+#: advtrains/couple.lua:334
+msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
+msgstr "您無法連結這兩節車廂:這兩節車廂使用不同的連結器 (@1和@2)。"
+
#: advtrains/craft_items.lua:3
msgid "Boiler"
msgstr "鍋爐"
#: advtrains/craft_items.lua:9
-msgid "driver's cab"
+msgid "Driver's cab"
msgstr "駕駛室"
#: advtrains/craft_items.lua:15
@@ -92,12 +167,78 @@ msgstr "較高的@1月臺 (45°)"
msgid "@1 Platform (low, 45 degree)"
msgstr "較低的@1月臺 (45°)"
+#: advtrains/protection.lua:7
+msgid "Can place, remove and operate trains"
+msgstr ""
+
+#: advtrains/protection.lua:12
+msgid ""
+"Can place, remove and operate any train, regardless of owner, whitelist, or "
+"protection"
+msgstr ""
+
+#: advtrains/protection.lua:18
+msgid "Can place and dig tracks in unprotected areas"
+msgstr ""
+
+#: advtrains/protection.lua:24
+msgid "Can operate turnouts and signals in unprotected areas"
+msgstr ""
+
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build near tracks without the track_builder privilege."
+msgstr "您沒有「train_operator」許可權,不能在鐵路附近建任何東西。"
+
+#: advtrains/protection.lua:148
+msgid ""
+"You are not allowed to build tracks without the track_builder privilege."
+msgstr "您沒有「train_operator」許可權,不能在這裡建造鐵路。"
+
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build near tracks at this protected position."
+msgstr "這裡已被保護,您不能在這裡的鐵路附近建任何東西。"
+
+#: advtrains/protection.lua:153
+msgid "You are not allowed to build tracks at this protected position."
+msgstr "這裡已被保護,您不能在這裡建造鐵路。"
+
+#: advtrains/protection.lua:184
+msgid ""
+"You are not allowed to operate turnouts and signals without the "
+"railway_operator privilege."
+msgstr "您沒有「railway_operator」許可權,不能控制鐵路設施。"
+
+#: advtrains/signals.lua:63
+msgid "Lampless Signal"
+msgstr "臂木式號誌機"
+
+#: advtrains/signals.lua:127
+msgid "Signal"
+msgstr "色燈號誌機"
+
+#: advtrains/signals.lua:191
+msgid "Wallmounted Signal (left)"
+msgstr "壁掛式色燈號誌機 (左側)"
+
+#: advtrains/signals.lua:192
+msgid "Wallmounted Signal (right)"
+msgstr "壁掛式色燈號誌機 (右側)"
+
+#: advtrains/signals.lua:193
+msgid "Wallmounted Signal (top)"
+msgstr "懸掛式色燈號誌機"
+
+#: advtrains/signals.lua:281 advtrains/signals.lua:322
+msgid "Andrew's Cross"
+msgstr "平交道號誌燈"
+
#: advtrains/trackplacer.lua:313
msgid ""
"Track Worker Tool\n"
"\n"
"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate rail/bumper/signal/etc."
+"Right-click: rotate object"
msgstr ""
"鐵路調整工具\n"
"\n"
@@ -105,27 +246,71 @@ msgstr ""
"右鍵單擊:旋轉方塊"
#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
-msgid "This node can't be rotated using the trackworker!"
+msgid "This node can't be rotated using the trackworker."
msgstr "您不能使用鐵路調整工具旋轉這個方塊。"
#: advtrains/trackplacer.lua:350
-msgid "This track can not be rotated!"
+msgid "This track can not be rotated."
msgstr "您不能旋轉這段軌道。"
#: advtrains/trackplacer.lua:404
-msgid "This node can't be changed using the trackworker!"
+msgid "This node can't be changed using the trackworker."
msgstr "您不能使用鐵路調整工具調整這個方塊。"
#: advtrains/trackplacer.lua:414
-msgid "This track can not be changed!"
+msgid "This track can not be changed."
msgstr "您不能調整這段軌道。"
+#: advtrains/tracks.lua:449
+msgid "This track can not be removed."
+msgstr "您不能移除這段軌道。"
+
+#: advtrains/tracks.lua:616
+msgid "Position is occupied by a train."
+msgstr ""
+
+#: advtrains/tracks.lua:622
+msgid "There's a Track Circuit Break here."
+msgstr ""
+
+#: advtrains/tracks.lua:626
+msgid "There's a Signal Influence Point here."
+msgstr ""
+
+#: advtrains/tracks.lua:637
+msgid "@1 Slope"
+msgstr "@1斜坡"
+
+#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
+msgid "Can't place slope: not pointing at node."
+msgstr "無法放置斜坡:您沒有選擇任何方塊。"
+
+#: advtrains/tracks.lua:658
+msgid "Can't place slope: space occupied."
+msgstr "無法放置斜坡:此區域已被佔用。"
+
+#: advtrains/tracks.lua:711
+msgid "Can't place slope: Not enough slope items left (@1 required)."
+msgstr "無法放置斜坡:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)"
+
+#: advtrains/tracks.lua:714
+msgid "Can't place slope: There's no slope of length @1."
+msgstr "無法放置斜坡:advtrains 不支援長度為@1米的斜坡。"
+
+#: advtrains/tracks.lua:721
+msgid "Can't place slope: no supporting node at upper end."
+msgstr "無法放置斜坡:較高階沒有支撐方塊。"
+
+#: advtrains/trainhud.lua:305
+msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
+msgstr ""
+
#: advtrains/wagons.lua:179
msgid "This wagon is owned by @1, you can't destroy it."
msgstr "這是 @1 的車廂,您不能摧毀它。"
#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty!"
+msgid "The wagon's inventory is not empty."
msgstr ""
#: advtrains/wagons.lua:210
@@ -164,13 +349,25 @@ msgstr "強制下車"
msgid "(Doors closed)"
msgstr "(車門已關閉)"
+#: advtrains/wagons.lua:692
+msgid "This wagon has no seats."
+msgstr "這節車廂沒有座位。"
+
+#: advtrains/wagons.lua:703
+msgid "This wagon is full."
+msgstr "車廂已滿。"
+
+#: advtrains/wagons.lua:706
+msgid "Doors are closed! (Try holding sneak key!)"
+msgstr ""
+
#: advtrains/wagons.lua:712
-msgid "Can't get on: "
+msgid "You can't get on this wagon."
msgstr ""
#: advtrains/wagons.lua:838
msgid "Select seat:"
-msgstr "請選擇座位"
+msgstr "請選擇座位:"
#: advtrains/wagons.lua:880
msgid "Save wagon properties"
@@ -194,174 +391,35 @@ msgstr "路由碼"
#: advtrains/wagons.lua:1241
msgid ""
-"Doors are closed! Use Sneak+rightclick to ignore the closed doors and get "
-"off!"
+"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
+"off."
msgstr "車門已關閉,請使用潛行+右鍵單擊下車。"
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
+#: advtrains/wagons.lua:1250
+msgid "You are not allowed to access the driver stand."
msgstr ""
-#: advtrains/tracks.lua:449
-msgid "This track can not be removed!"
-msgstr "您不能移除這段軌道。"
-
-#: advtrains/tracks.lua:616
-msgid "Position is occupied by a train."
+#: advtrains_interlocking/tsr_rail.lua:13
+msgid "Point speed restriction: @1"
msgstr ""
-#: advtrains/tracks.lua:622
-msgid "There's a Track Circuit Break here."
+#: advtrains_interlocking/tsr_rail.lua:14
+msgid "Set point speed restriction:"
msgstr ""
-#: advtrains/tracks.lua:626
-msgid "There's a Signal Influence Point here."
-msgstr ""
-
-#: advtrains/tracks.lua:637
-msgid "@1 Slope"
-msgstr "@1斜坡"
-
-#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place: not pointing at node"
-msgstr "無法放置:您沒有選擇任何方塊。"
-
-#: advtrains/tracks.lua:658
-msgid "Can't place: space occupied!"
-msgstr "無法放置:此區域已被佔用。"
-
-#: advtrains/tracks.lua:711
-msgid "Can't place: Not enough slope items left (@1 required)"
-msgstr "無法放置:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)"
-
-#: advtrains/tracks.lua:714
-msgid "Can't place: There's no slope of length @1"
-msgstr "無法放置:advtrains 不支援長度為@1米的斜坡。"
-
-#: advtrains/tracks.lua:721
-msgid "Can't place: no supporting node at upper end."
-msgstr "無法放置:較高階沒有支撐方塊。"
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr "臂木式號誌機"
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr "色燈號誌機"
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (l)"
-msgstr "壁掛式色燈號誌機 (左側)"
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (r)"
-msgstr "壁掛式色燈號誌機 (右側)"
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (t)"
-msgstr "懸掛式色燈號誌機"
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr "平交道號誌燈"
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr "鏈式連結器"
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr "Scharfenberg 式連結器"
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
-msgstr "您沒有「train_operator」許可權,不能連結這兩節車廂。"
-
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<none>"
-msgstr ""
+#: advtrains_interlocking/tsr_rail.lua:30
+msgid "You are not allowed to configure this track without the @1 privilege."
+msgstr "您沒有「@1」許可權,不能調整這段軌道。"
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
-msgstr "您無法連結這兩節車廂:這兩節車廂使用不同的連結器 (@1和@2)。"
+#: advtrains_interlocking/tsr_rail.lua:34
+#: advtrains_line_automation/stoprail.lua:31
+#: advtrains_line_automation/stoprail.lua:76
+msgid "You are not allowed to configure this track."
+msgstr "您不能調整這段軌道。"
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
+#: advtrains_interlocking/tsr_rail.lua:64
+msgid "Point Speed Restriction Track"
msgstr ""
-"火車複製工具\n"
-"\n"
-"左鍵單擊:複製\n"
-"右鍵單擊:粘帖"
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr "您沒有「@1」許可權。"
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough!"
-msgstr "軌道太短。"
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr "無法貼上:剪貼簿無法訪問元資料。"
-
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr "剪貼簿是空的。"
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr "火車後部不在軌道上。"
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity!"
-msgstr "您沒有指向一個可以用火車複製工具複製的物體。"
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1"
-msgstr "ID 為「@1」的車廂不存在。"
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1"
-msgstr "ID 為「@1」的列車不存在。"
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr "無法複製:剪貼簿無法訪問元資料。"
-
-#: advtrains/copytool.lua:180
-msgid "Train copied!"
-msgstr "已複製"
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
-msgstr "您沒有「train_operator」許可權,不能在鐵路附近建任何東西。"
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
-msgstr "您沒有「train_operator」許可權,不能在這裡建造鐵路。"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr "這裡已被保護,您不能在這裡的鐵路附近建任何東西。"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr "這裡已被保護,您不能在這裡建造鐵路。"
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr "您沒有「railway_operator」許可權,不能控制鐵路設施。"
#: advtrains_line_automation/stoprail.lua:54
msgid "Station Code"
@@ -394,61 +452,91 @@ msgstr ""
#: advtrains_line_automation/stoprail.lua:62
msgid "Reverse train"
-msgstr ""
+msgstr "改變行車方向"
#: advtrains_line_automation/stoprail.lua:63
msgid "Kick out passengers"
+msgstr "踢出乘客"
+
+#: advtrains_line_automation/stoprail.lua:97
+msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""
-#: advtrains_luaautomation/pcnaming.lua:26
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
+#: advtrains_line_automation/stoprail.lua:111
+msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""
-"被動元件命名工具\n"
-"\n"
-"右鍵單擊命名所選元件"
-#: advtrains_train_track/init.lua:31
-msgid "Y-turnout"
-msgstr "對稱道岔"
+#: advtrains_line_automation/stoprail.lua:221
+msgid "Station/Stop Track"
+msgstr "車站軌道"
-#: advtrains_train_track/init.lua:49
-msgid "3-way turnout"
-msgstr "三開道岔"
+#: advtrains_luaautomation/active_common.lua:17
+msgid "Unconfigured LuaATC component"
+msgstr "LuaATC 元件 (未配置)"
-#: advtrains_train_track/init.lua:69
-msgid "Perpendicular Diamond Crossing Track"
-msgstr "垂直交叉軌道"
+#: advtrains_luaautomation/active_common.lua:46
+msgid "LuaATC Environment"
+msgstr ""
-#: advtrains_train_track/init.lua:91
-msgid "90+Angle Diamond Crossing Track"
-msgstr "交叉軌道 (其中一條軌道與座標軸平行)"
+#: advtrains_luaautomation/active_common.lua:49
+msgid "Clear Local Environment"
+msgstr ""
-#: advtrains_train_track/init.lua:132
-msgid "Diagonal Diamond Crossing Track"
-msgstr "交叉軌道"
+#: advtrains_luaautomation/active_common.lua:50
+msgid "Code"
+msgstr ""
-#: advtrains_train_track/init.lua:179
-msgid "Bumper"
-msgstr "保險槓"
+#: advtrains_luaautomation/active_common.lua:64
+msgid ""
+"You are not allowed to configure this LuaATC component without the @1 "
+"privilege."
+msgstr "您沒有「@1」許可權,不能配置這個 LuaATC 元件。"
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr "ATC 控制器"
+#: advtrains_luaautomation/active_common.lua:94
+msgid "LuaATC component assigned to environment '@1'"
+msgstr ""
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr "卸貨軌道"
+#: advtrains_luaautomation/active_common.lua:96
+msgid "LuaATC component assigned to an invalid environment"
+msgstr ""
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr "裝貨軌道"
+#: advtrains_luaautomation/active_common.lua:171
+msgid "LuaATC component with error: @1"
+msgstr ""
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr "探測軌道"
+#: advtrains_luaautomation/init.lua:13
+msgid ""
+"Can place and configure LuaATC components, including execute potentially "
+"harmful Lua code"
+msgstr ""
+
+#: advtrains_luaautomation/mesecon_controller.lua:211
+msgid "LuaATC Mesecon Controller"
+msgstr ""
+
+#: advtrains_luaautomation/operation_panel.lua:11
+msgid "LuaATC Operation Panel"
+msgstr ""
+
+#: advtrains_luaautomation/pcnaming.lua:28
+msgid ""
+"Passive Component Naming Tool\n"
+"\n"
+"Right-click to name a passive component."
+msgstr ""
+"被動元件命名工具\n"
+"\n"
+"右鍵單擊命名所選元件。"
+
+#: advtrains_luaautomation/pcnaming.lua:39
+msgid ""
+"You are not allowed to name LuaATC passive components without the @1 "
+"privilege."
+msgstr "您沒有「@1」許可權,不能命名這個元件。"
+
+#: advtrains_luaautomation/pcnaming.lua:62
+msgid "Set name of component (empty to clear)"
+msgstr ""
#: advtrains_train_industrial/init.lua:10
#: advtrains_train_industrial/init.lua:49 advtrains_train_steam/init.lua:20
@@ -514,23 +602,45 @@ msgstr "貨運車廂"
msgid "Subway Passenger Wagon"
msgstr "地鐵車廂"
-#~ msgid "This position is protected!"
-#~ msgstr "這裡已被保護。"
+#: advtrains_train_track/init.lua:31
+msgid "Y-turnout"
+msgstr "對稱道岔"
-#~ msgid "Can't place: protected position!"
-#~ msgstr "無法放置:此區域已被保護。"
+#: advtrains_train_track/init.lua:49
+msgid "3-way turnout"
+msgstr "三開道岔"
-#~ msgid "Deprecated Track"
-#~ msgstr "請不要使用"
+#: advtrains_train_track/init.lua:69
+msgid "Perpendicular Diamond Crossing Track"
+msgstr "垂直交叉軌道"
-#~ msgid "Can't get on: wagon full or doors closed!"
-#~ msgstr "無法上車:車門已關閉或車廂已滿。"
+#: advtrains_train_track/init.lua:91
+msgid "90+Angle Diamond Crossing Track"
+msgstr "交叉軌道 (其中一條軌道與座標軸平行)"
-#~ msgid "Use Sneak+rightclick to bypass closed doors!"
-#~ msgstr "請使用潛行+右鍵上車。"
+#: advtrains_train_track/init.lua:132
+msgid "Diagonal Diamond Crossing Track"
+msgstr "交叉軌道"
-#~ msgid "Access to @1"
-#~ msgstr "可前往@1"
+#: advtrains_train_track/init.lua:179
+msgid "Bumper"
+msgstr "保險槓"
+
+#: advtrains_train_track/init.lua:201
+msgid "ATC controller"
+msgstr "ATC 控制器"
+
+#: advtrains_train_track/init.lua:317
+msgid "Unloading Track"
+msgstr "卸貨軌道"
+
+#: advtrains_train_track/init.lua:342
+msgid "Loading Track"
+msgstr "裝貨軌道"
+
+#: advtrains_train_track/init.lua:406
+msgid "Detector Rail"
+msgstr "探測軌道"
#~ msgid ""
#~ "ATC controller, mode @1\n"
@@ -540,21 +650,47 @@ msgstr "地鐵車廂"
#~ "模式:@1\n"
#~ "頻道:@2"
+#~ msgid "Access to @1"
+#~ msgstr "可前往@1"
+
+#~ msgid "Can't get on: wagon full or doors closed!"
+#~ msgstr "無法上車:車門已關閉或車廂已滿。"
+
+#~ msgid "Can't place: protected position!"
+#~ msgstr "無法放置:此區域已被保護。"
+
+#~ msgid "Default Seat"
+#~ msgstr "預設座位"
+
+#~ msgid "Default Seat (driver stand)"
+#~ msgstr "預設座位 (司機座位)"
+
+#~ msgid "Deprecated Track"
+#~ msgstr "請不要使用"
+
#~ msgid "Lock couples"
#~ msgstr "鎖定連結處"
-#~ msgid ""
-#~ "You need to own at least one neighboring wagon to destroy this couple."
-#~ msgstr "您必須至少擁有其中一節車廂才能分開這兩節車廂。"
-
#~ msgid "Speed:"
#~ msgstr "速度"
#~ msgid "Target:"
#~ msgstr "目標速度"
-#~ msgid "Default Seat"
-#~ msgstr "預設座位"
+#, fuzzy
+#~ msgid "This node can't be rotated using the trackworker,"
+#~ msgstr "您不能使用鐵路調整工具旋轉這個方塊。"
-#~ msgid "Default Seat (driver stand)"
-#~ msgstr "預設座位 (司機座位)"
+#~ msgid "This position is protected!"
+#~ msgstr "這裡已被保護。"
+
+#~ msgid "Use Sneak+rightclick to bypass closed doors!"
+#~ msgstr "請使用潛行+右鍵上車。"
+
+#, fuzzy
+#~ msgid "You are not allowed to modify this protected track."
+#~ msgstr "這裡已被保護,您不能在這裡建造鐵路。"
+
+#~ msgid ""
+#~ "You need to own at least one neighboring wagon to destroy this couple."
+#~ msgstr "您必須至少擁有其中一節車廂才能分開這兩節車廂。"
diff --git a/advtrains/protection.lua b/advtrains/protection.lua
index 89e15eb..ac1cd66 100644
--- a/advtrains/protection.lua
+++ b/advtrains/protection.lua
@@ -4,24 +4,24 @@
-- Privileges to control TRAIN DRIVING/COUPLING
minetest.register_privilege("train_operator", {
- description = "Without this privilege, a player can't do anything about trains, neither place or remove them nor drive or couple them (but he can build tracks if he has track_builder)",
+ description = attrans("Can place, remove and operate trains"),
give_to_singleplayer= true,
});
minetest.register_privilege("train_admin", {
- description = "Player may drive, place or remove any trains from/to anywhere, regardless of owner, whitelist or protection",
+ description = attrans("Can place, remove and operate any train, regardless of owner, whitelist, or protection"),
give_to_singleplayer= true,
});
-- Privileges to control TRACK BUILDING
minetest.register_privilege("track_builder", {
- description = "Player can place and/or dig rails not protected from him. If he also has protection_bypass, he can place/dig any rails",
+ description = attrans("Can place and dig tracks in unprotected areas"),
give_to_singleplayer= true,
});
-- Privileges to control OPERATING TURNOUTS/SIGNALS
minetest.register_privilege("railway_operator", {
- description = "Player can operate turnouts and signals not protected from him. If he also has protection_bypass, he can operate any turnouts/signals",
+ description = attrans("Can operate turnouts and signals in unprotected areas"),
give_to_singleplayer= true,
});
diff --git a/advtrains/signals.lua b/advtrains/signals.lua
index 74841d3..c03afbf 100644
--- a/advtrains/signals.lua
+++ b/advtrains/signals.lua
@@ -188,9 +188,9 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red",
--tunnel signals. no rotations.
local swdesc = { -- needed for xgettext
- l = attrans("Wallmounted Signal (l)"),
- r = attrans("Wallmounted Signal (r)"),
- t = attrans("Wallmounted Signal (t)"),
+ l = attrans("Wallmounted Signal (left)"),
+ r = attrans("Wallmounted Signal (right)"),
+ t = attrans("Wallmounted Signal (top)"),
}
for loc, sbox in pairs({l={-1/2, -1/2, -1/4, 0, 1/2, 1/4}, r={0, -1/2, -1/4, 1/2, 1/2, 1/4}, t={-1/2, 0, -1/4, 1/2, 1/2, 1/4}}) do
minetest.register_node("advtrains:signal_wall_"..loc.."_"..r, {
diff --git a/advtrains/trackplacer.lua b/advtrains/trackplacer.lua
index fe76290..9f97171 100644
--- a/advtrains/trackplacer.lua
+++ b/advtrains/trackplacer.lua
@@ -310,7 +310,7 @@ end
minetest.register_craftitem("advtrains:trackworker",{
- description = attrans("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 object"),
groups = {cracky=1}, -- key=name, value=rating; rating=1..3.
inventory_image = "advtrains_trackworker.png",
wield_image = "advtrains_trackworker.png",
@@ -337,7 +337,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(), attrans("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
@@ -347,7 +347,7 @@ minetest.register_craftitem("advtrains:trackworker",{
-- is a track, we can query
local can_modify, reason = advtrains.can_dig_or_modify_track(pos)
if not can_modify then
- local str = attrans("This track can not be rotated!")
+ local str = attrans("This track can not be rotated.")
if reason then
str = str .. " " .. reason
end
@@ -374,7 +374,7 @@ minetest.register_craftitem("advtrains:trackworker",{
if v==rotation then modpos=k end
end
if not modpos then
- minetest.chat_send_player(placer:get_player_name(), attrans("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})
@@ -401,7 +401,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(), attrans("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
@@ -411,7 +411,7 @@ minetest.register_craftitem("advtrains:trackworker",{
-- is a track, we can query
local can_modify, reason = advtrains.can_dig_or_modify_track(pos)
if not can_modify then
- local str = attrans("This track can not be changed!")
+ local str = attrans("This track can not be changed.")
if reason then
str = str .. " " .. reason
end
diff --git a/advtrains/tracks.lua b/advtrains/tracks.lua
index 3959232..ee82426 100644
--- a/advtrains/tracks.lua
+++ b/advtrains/tracks.lua
@@ -446,7 +446,7 @@ Depending on the number of connections:
local function can_dig_callback(pos, player)
local ok, reason = advtrains.can_dig_or_modify_track(pos)
if not ok and player then
- minetest.chat_send_player(player:get_player_name(), attrans("This track can not be removed!") .. " " .. reason)
+ minetest.chat_send_player(player:get_player_name(), attrans("This track can not be removed.") .. " " .. reason)
end
return ok
end
@@ -646,17 +646,17 @@ 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(), attrans("Can't place: not pointing at node"))
+ minetest.chat_send_player(player:get_player_name(), attrans("Can't place slope: not pointing at node."))
return istack
end
local pos=pt.above
if not pos then
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: not pointing at node"))
+ minetest.chat_send_player(player:get_player_name(), attrans("Can't place slope: 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(), attrans("Can't place: space occupied!"))
+ minetest.chat_send_player(player:get_player_name(), attrans("Can't place slope: space occupied."))
return istack
end
if not advtrains.check_track_protection(pos, player:get_player_name()) then
@@ -709,17 +709,17 @@ function sl.create_slopeplacer_on_place(def, preset)
pos=vector.subtract(pos, dirvec)
end
else
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: Not enough slope items left (@1 required)", step))
+ minetest.chat_send_player(player:get_player_name(), attrans("Can't place slope: Not enough slope items left (@1 required).", step))
end
else
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: There's no slope of length @1",step))
+ minetest.chat_send_player(player:get_player_name(), attrans("Can't place slope: 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(), attrans("Can't place: no supporting node at upper end."))
+ minetest.chat_send_player(player:get_player_name(), attrans("Can't place slope: no supporting node at upper end."))
return itemstack
end
end
diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index 536c8d4..993d7d3 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -213,7 +213,7 @@ function wagon:on_punch(puncher, time_from_last_punch, tool_capabilities, direct
end
for listname, _ in pairs(inv:get_lists()) do
if not inv:is_empty(listname) then
- minetest.chat_send_player(puncher:get_player_name(), attrans("The wagon's inventory is not empty!"));
+ minetest.chat_send_player(puncher:get_player_name(), attrans("The wagon's inventory is not empty."));
return
end
end
@@ -711,7 +711,7 @@ function wagon:on_rightclick(clicker)
end
local doors_open = self:train().door_open~=0 or clicker:get_player_control().sneak
- local allow, rsn=false, "Wagon has no seats!"
+ local allow, rsn=false, attrans("This wagon has no seats.")
for _,sgr in ipairs(self.assign_to_seat_group) do
allow, rsn = self:check_seat_group_access(pname, sgr)
if allow then
@@ -722,16 +722,16 @@ function wagon:on_rightclick(clicker)
self:get_on(clicker, seatid)
return
else
- rsn="Wagon is full."
+ rsn=attrans("This wagon is full.")
end
else
- rsn="Doors are closed! (try holding sneak key!)"
+ rsn=attrans("Doors are closed! (Try holding sneak key!)")
end
end
end
end
end
- minetest.chat_send_player(pname, attrans("Can't get on: "..rsn))
+ minetest.chat_send_player(pname, rsn or attrans("You can't get on this wagon."))
else
self:show_get_on_form(pname)
end
@@ -1262,7 +1262,7 @@ function wagon:seating_from_key_helper(pname, fields, no)
self:show_bordcom(pname)
end
if fields.dcwarn then
- minetest.chat_send_player(pname, attrans("Doors are closed! Use Sneak+rightclick to ignore the closed doors and get off!"))
+ minetest.chat_send_player(pname, attrans("Doors are closed. Use Sneak+rightclick to ignore the closed doors and get off."))
end
if fields.off then
self:get_off(no)
@@ -1271,7 +1271,7 @@ end
function wagon:check_seat_group_access(pname, sgr)
local data = advtrains.wagons[self.id]
if self.seat_groups[sgr].driving_ctrl_access and not (advtrains.check_driving_couple_protection(pname, data.owner, data.whitelist)) then
- return false, "Not allowed to access a driver stand!"
+ return false, attrans("You are not allowed to access the driver stand.")
end
if self.seat_groups[sgr].driving_ctrl_access then
advtrains.log("Drive", pname, self.object:getpos(), self:train().text_outside)
diff --git a/advtrains_interlocking/tsr_rail.lua b/advtrains_interlocking/tsr_rail.lua
index f302540..c1e3c1c 100644
--- a/advtrains_interlocking/tsr_rail.lua
+++ b/advtrains_interlocking/tsr_rail.lua
@@ -3,13 +3,15 @@
-- Simple rail whose only purpose is to place a TSR on the position, as a temporary solution until the timetable system covers everything.
-- This code resembles the code in lines/stoprail.lua
+local S = attrans
+
local function updateform(pos)
local meta = minetest.get_meta(pos)
local pe = advtrains.encode_pos(pos)
local npr = advtrains.interlocking.npr_rails[pe] or 2
- meta:set_string("infotext", "Point speed restriction: "..npr)
- meta:set_string("formspec", "field[npr;Set point speed restriction:;"..npr.."]")
+ meta:set_string("infotext", S("Point speed restriction: @1",npr))
+ meta:set_string("formspec", "field[npr;"..S("Set point speed restriction:")..";"..npr.."]")
end
@@ -25,11 +27,11 @@ local adefunc = function(def, preset, suffix, rotation)
on_receive_fields = function(pos, formname, fields, player)
local pname = player:get_player_name()
if not minetest.check_player_privs(pname, {interlocking=true}) then
- minetest.chat_send_player(pname, "Interlocking privilege required!")
+ minetest.chat_send_player(pname, S("You are not allowed to configure this track without the @1 privilege.", "interlocking"))
return
end
if minetest.is_protected(pos, pname) then
- minetest.chat_send_player(pname, "This rail is protected!")
+ minetest.chat_send_player(pname, S("You are not allowed to configure this track."))
minetest.record_protection_violation(pos, pname)
return
end
@@ -59,7 +61,7 @@ if minetest.get_modpath("advtrains_train_track") ~= nil then
models_prefix="advtrains_dtrack",
models_suffix=".b3d",
shared_texture="advtrains_dtrack_shared_npr.png",
- description="Point Speed Restriction Rail",
+ description=S("Point Speed Restriction Track"),
formats={},
get_additional_definiton = adefunc,
}, advtrains.trackpresets.t_30deg_straightonly)
diff --git a/advtrains_line_automation/stoprail.lua b/advtrains_line_automation/stoprail.lua
index 55a4785..6c74a3d 100644
--- a/advtrains_line_automation/stoprail.lua
+++ b/advtrains_line_automation/stoprail.lua
@@ -28,7 +28,7 @@ local function show_stoprailform(pos, player)
local pe = advtrains.encode_pos(pos)
local pname = player:get_player_name()
if minetest.is_protected(pos, pname) then
- minetest.chat_send_player(pname, "Position is protected!")
+ minetest.chat_send_player(pname, attrans("You are not allowed to configure this track."))
return
end
@@ -73,7 +73,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
local pos = advtrains.decode_pos(pe)
if pos then
if minetest.is_protected(pos, pname) then
- minetest.chat_send_player(pname, "Position is protected!")
+ minetest.chat_send_player(pname, attrans("You are not allowed to configure this track."))
return
end
@@ -94,7 +94,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if (stn.owner == pname or minetest.check_player_privs(pname, "train_admin")) then
stdata.stn = fields.stn
else
- minetest.chat_send_player(pname, "Station code '"..fields.stn.."' does already exist and is owned by "..stn.owner)
+ minetest.chat_send_player(pname, attrans("Station code \"@1\" already exists and is owned by @2.", fields.stn, stn.owner))
show_stoprailform(pos,player)
return
end
@@ -108,7 +108,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if (stn.owner == pname or minetest.check_player_privs(pname, "train_admin")) then
stn.name = fields.stnname
else
- minetest.chat_send_player(pname, "Not allowed to edit station name, owned by "..stn.owner)
+ minetest.chat_send_player(pname, attrans("This station is owned by @1. You are not allowed to edit its name.", stn.owner))
end
end
@@ -218,7 +218,7 @@ if minetest.get_modpath("advtrains_train_track") ~= nil then
models_prefix="advtrains_dtrack",
models_suffix=".b3d",
shared_texture="advtrains_dtrack_shared_stop.png",
- description="Station/Stop Rail",
+ description=attrans("Station/Stop Track"),
formats={},
get_additional_definiton = adefunc,
}, advtrains.trackpresets.t_30deg_straightonly)
diff --git a/advtrains_luaautomation/active_common.lua b/advtrains_luaautomation/active_common.lua
index 50fb2bc..1a7009f 100644
--- a/advtrains_luaautomation/active_common.lua
+++ b/advtrains_luaautomation/active_common.lua
@@ -1,4 +1,4 @@
-
+local S = atltrans
local ac = {nodes={}}
@@ -14,7 +14,7 @@ end
function ac.after_place_node(pos, player)
local meta=minetest.get_meta(pos)
meta:set_string("formspec", ac.getform(pos, meta))
- meta:set_string("infotext", "LuaATC component, unconfigured.")
+ meta:set_string("infotext", S("Unconfigured LuaATC component"))
local ph=minetest.pos_to_string(pos)
--just get first available key!
for en,_ in pairs(atlatc.envs) do
@@ -43,11 +43,11 @@ function ac.getform(pos, meta_p)
end
local form = "size["..atlatc.CODE_FORM_SIZE.."]"
.."style[code;font=mono]"
- .."label[0,-0.1;Environment]"
+ .."label[0,-0.1;"..S("LuaATC Environment").."]"
.."dropdown[0,0.3;3;env;"..table.concat(envs_asvalues, ",")..";"..sel.."]"
- .."button[5,0.2;2,1;save;Save]"
- .."button[7,0.2;3,1;cle;Clear Local Env.]"
- .."textarea[0.3,1.5;"..atlatc.CODE_FORM_SIZE..";code;Code;"..minetest.formspec_escape(code).."]"
+ .."button[5,0.2;2,1;save;"..S("Save").."]"
+ .."button[7,0.2;3,1;cle;"..S("Clear Local Environment").."]"
+ .."textarea[0.3,1.5;"..atlatc.CODE_FORM_SIZE..";code;"..S("Code")..";"..minetest.formspec_escape(code).."]"
.."label["..atlatc.CODE_FORM_ERRLABELPOS..";"..err.."]"
return form
end
@@ -61,7 +61,7 @@ end
function ac.on_receive_fields(pos, formname, fields, player)
if not minetest.check_player_privs(player:get_player_name(), {atlatc=true}) then
- minetest.chat_send_player(player:get_player_name(), "Missing privilege: atlatc - Operation cancelled!")
+ minetest.chat_send_player(player:get_player_name(), S("You are not allowed to configure this LuaATC component without the @1 privilege.", "atlatc"))
return
end
@@ -91,9 +91,9 @@ function ac.on_receive_fields(pos, formname, fields, player)
meta:set_string("formspec", ac.getform(pos, meta))
if nodetbl.env then
- meta:set_string("infotext", "LuaATC component, assigned to environment '"..nodetbl.env.."'")
+ meta:set_string("infotext", S("LuaATC component assigned to environment '@1'", nodetbl.env))
else
- meta:set_string("infotext", "LuaATC component, invalid enviroment set!")
+ meta:set_string("infotext", S("LuaATC component assigned to an invalid environment"))
end
end
@@ -168,7 +168,7 @@ function ac.run_in_env(pos, evtdata, customfct_p, ignore_no_code)
atlatc.active.nodes[ph].err=dataout
env:log("error", "LuaATC component at",ph,": LUA Error:",dataout)
if meta then
- meta:set_string("infotext", "LuaATC component, ERROR:"..dataout)
+ meta:set_string("infotext", S("LuaATC component with error: @1", dataout))
end
--TODO temporary
--if customfct.atc_id then
diff --git a/advtrains_luaautomation/atc_rail.lua b/advtrains_luaautomation/atc_rail.lua
index b98648e..f6a7823 100644
--- a/advtrains_luaautomation/atc_rail.lua
+++ b/advtrains_luaautomation/atc_rail.lua
@@ -220,7 +220,7 @@ advtrains.register_tracks("default", {
models_prefix="advtrains_dtrack",
models_suffix=".b3d",
shared_texture="advtrains_dtrack_shared_atc.png",
- description=atltrans("LuaATC Rail"),
+ description=atltrans("LuaATC Track"),
formats={},
get_additional_definiton = function(def, preset, suffix, rotation)
return {
diff --git a/advtrains_luaautomation/init.lua b/advtrains_luaautomation/init.lua
index c51aa71..b359142 100644
--- a/advtrains_luaautomation/init.lua
+++ b/advtrains_luaautomation/init.lua
@@ -2,15 +2,15 @@
-- Lua automation features for advtrains
-- Uses global table 'atlatc' (AdvTrains_LuaATC)
---TODO: re-add localization (if merging localization, discard this hunk please)
-atltrans = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
+atltrans = attrans
+local S = atltrans
--Privilege
--Only trusted players should be enabled to build stuff which can break the server.
atlatc = { envs = {}}
-minetest.register_privilege("atlatc", { description = "Player can place and modify LUA ATC components. Grant with care! Allows to execute bad LUA code.", give_to_singleplayer = false, default= false })
+minetest.register_privilege("atlatc", { description = S("Can place and configure LuaATC components, including execute potentially harmful Lua code"), give_to_singleplayer = false, default= false })
--Size of code input forms in X,Y notation. Must be at least 10x10
atlatc.CODE_FORM_SIZE = "15,12"
diff --git a/advtrains_luaautomation/mesecon_controller.lua b/advtrains_luaautomation/mesecon_controller.lua
index bffff84..6981839 100644
--- a/advtrains_luaautomation/mesecon_controller.lua
+++ b/advtrains_luaautomation/mesecon_controller.lua
@@ -6,6 +6,7 @@
-- From Mesecons mod https://mesecons.net/
-- (c) Jeija and Contributors
+local S = atltrans
local BASENAME = "advtrains_luaautomation:mesecon_controller"
local rules = {
@@ -207,7 +208,7 @@ for d = 0, 1 do
}
minetest.register_node(node_name, {
- description = "LuaATC Mesecon Controller",
+ description = S("LuaATC Mesecon Controller"),
drawtype = "nodebox",
tiles = {
top,
diff --git a/advtrains_luaautomation/operation_panel.lua b/advtrains_luaautomation/operation_panel.lua
index c118ff3..8e12651 100644
--- a/advtrains_luaautomation/operation_panel.lua
+++ b/advtrains_luaautomation/operation_panel.lua
@@ -1,3 +1,4 @@
+local S = atltrans
local function on_punch(pos,node,player)
atlatc.interrupt.add(0, pos, {type="punch", punch=true, name=player:get_player_name()})
@@ -7,7 +8,7 @@ end
minetest.register_node("advtrains_luaautomation:oppanel", {
drawtype = "normal",
tiles={"atlatc_oppanel.png"},
- description = "LuaATC operation panel",
+ description = S("LuaATC Operation Panel"),
groups = {
cracky = 1,
save_in_at_nodedb=1,
diff --git a/advtrains_luaautomation/pcnaming.lua b/advtrains_luaautomation/pcnaming.lua
index 5624b74..0089ae7 100644
--- a/advtrains_luaautomation/pcnaming.lua
+++ b/advtrains_luaautomation/pcnaming.lua
@@ -2,6 +2,8 @@
--a.k.a Passive component naming
--Allows to assign names to passive components, so they can be called like:
--setstate("iamasignal", "green")
+local S = atltrans
+
atlatc.pcnaming={name_map={}}
function atlatc.pcnaming.load(stuff)
if type(stuff)=="table" then
@@ -26,7 +28,7 @@ end
local pcrename = {}
minetest.register_craftitem("advtrains_luaautomation:pcnaming",{
- description = attrans("Passive Component Naming Tool\n\nRight-click to name a passive component."),
+ description = S("Passive Component Naming Tool\n\nRight-click to name a passive component."),
groups = {cracky=1}, -- key=name, value=rating; rating=1..3.
inventory_image = "atlatc_pcnaming.png",
wield_image = "atlatc_pcnaming.png",
@@ -37,7 +39,7 @@ minetest.register_craftitem("advtrains_luaautomation:pcnaming",{
return
end
if not minetest.check_player_privs(pname, {atlatc=true}) then
- minetest.chat_send_player(pname, "Missing privilege: atlatc")
+ minetest.chat_send_player(pname, S("You are not allowed to name LuaATC passive components without the @1 privilege.", "atlatc"))
return
end
if pointed_thing.type=="node" then
@@ -62,7 +64,7 @@ minetest.register_craftitem("advtrains_luaautomation:pcnaming",{
end
end
pcrename[pname] = pos
- minetest.show_formspec(pname, "atlatc_naming", "field[pn;Set name of component (empty to clear);"..minetest.formspec_escape(pn).."]")
+ minetest.show_formspec(pname, "atlatc_naming", "field[pn;"..S("Set name of component (empty to clear)")..";"..minetest.formspec_escape(pn).."]")
end
end
end,