~gpcf/advtrains-devel

Remove line numbers from translation files v2 APPLIED

Tanavit: 3
 Remove line numbers from translation files
 Basic trains french translations
 Translations improvement.

 22 files changed, 3599 insertions(+), 1871 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~gpcf/advtrains-devel/patches/58350/mbox | git am -3
Learn more about email & git

[PATCH v2 1/3] Remove line numbers from translation files Export this patch

From: "update-translations.sh" <u.gpcf.advtrains-devel@lists.sr.ht>

# First patch of a serie of three to be applied to the master branch of advtrains on commit #0b7fdc6
#
# ATTENTION : 
#
# 1. These patches come from a derivation of the l10n branch which, afaik, is not yet merged in the master branch.
# I guess that applying these patches will shortcut the l10n branch.
# 2. These patches contain translations strings of for the modification I proposed some month ago for basic_trains which,
# afaik, are not yet merged in its master branch.



---
 advtrains/po/advtrains.pot          | 325 ++++++------
 advtrains/po/de.po                  | 731 ++++++++++++++-------------
 advtrains/po/fr.po                  | 739 ++++++++++++++--------------
 advtrains/po/update-translations.sh |   1 +
 advtrains/po/zh_CN.po               | 705 +++++++++++++-------------
 advtrains/po/zh_TW.po               | 705 +++++++++++++-------------
 6 files changed, 1655 insertions(+), 1551 deletions(-)

diff --git a/advtrains/po/advtrains.pot b/advtrains/po/advtrains.pot
index 6fda1d7..ae7fb32 100644
--- a/advtrains/po/advtrains.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-09 11:02+0200\n"
"POT-Creation-Date: 2024-12-06 21:17+0100\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"
@@ -17,54 +17,54 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: advtrains/atc.lua:109
#: advtrains/atc.lua
msgid "Unconfigured ATC controller"
msgstr ""

#: advtrains/atc.lua:150
#: advtrains/atc.lua
msgid ""
"ATC controller, mode @1\n"
"Command: @2"
msgstr ""

#: advtrains/atc.lua:180
#: advtrains/atc.lua
msgid "Command"
msgstr ""

#: advtrains/atc.lua:184
#: advtrains/atc.lua
msgid "Command (on)"
msgstr ""

#: advtrains/atc.lua:187
#: advtrains/atc.lua
msgid "Digiline channel"
msgstr ""

#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
#: advtrains_luaautomation/active_common.lua:48
#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr ""

#: advtrains/atc.lua:236
#: advtrains/atc.lua
msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr ""

#: advtrains/atc.lua:248
#: advtrains/atc.lua
msgid "ATC Kick command warning: doors are closed."
msgstr ""

#: advtrains/atc.lua:252
#: advtrains/atc.lua
msgid "ATC Kick command warning: train moving."
msgstr ""

#: advtrains/atc.lua:322
#: advtrains/atc.lua
msgid "ATC command syntax error: I statement not closed: @1"
msgstr ""

#: advtrains/atc.lua:385
#: advtrains/atc.lua
msgid "ATC command parse error: Unknown command: @1"
msgstr ""

#: advtrains/copytool.lua:8
#: advtrains/copytool.lua
msgid ""
"Train copy/paste tool\n"
"\n"
@@ -72,166 +72,166 @@ msgid ""
"Right-click: paste train"
msgstr ""

#: advtrains/copytool.lua:29
#: advtrains/copytool.lua
msgid "You do not have the @1 privilege."
msgstr ""

#: advtrains/copytool.lua:41
#: advtrains/copytool.lua
msgid "The track you are trying to place the wagon on is not long enough."
msgstr ""

#: advtrains/copytool.lua:47
#: advtrains/copytool.lua
msgid "The clipboard couldn't access the metadata. Paste failed."
msgstr ""

#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
#: advtrains/copytool.lua
msgid "The clipboard is empty."
msgstr ""

#: advtrains/copytool.lua:74
#: advtrains/copytool.lua
msgid "Back of train would end up off track, cancelling."
msgstr ""

#: advtrains/copytool.lua:92
#: advtrains/copytool.lua
msgid "No such lua entity."
msgstr ""

#: advtrains/copytool.lua:98
#: advtrains/copytool.lua
msgid "No such wagon: @1."
msgstr ""

#: advtrains/copytool.lua:104
#: advtrains/copytool.lua
msgid "No such train: @1."
msgstr ""

#: advtrains/copytool.lua:176
#: advtrains/copytool.lua
msgid "The clipboard couldn't access the metadata. Copy failed."
msgstr ""

#: advtrains/copytool.lua:180
#: advtrains/copytool.lua
msgid "Train copied."
msgstr ""

#: advtrains/couple.lua:28
#: advtrains/couple.lua
msgid "Buffer and Chain Coupler"
msgstr ""

#: advtrains/couple.lua:29
#: advtrains/couple.lua
msgid "Scharfenberg Coupler"
msgstr ""

#: advtrains/couple.lua:185
#: advtrains/couple.lua
msgid ""
"You are not allowed to couple trains without the train_operator privilege."
msgstr ""

#: advtrains/couple.lua:329 advtrains/couple.lua:333
#: advtrains/couple.lua
msgid "<No coupler>"
msgstr ""

#: advtrains/couple.lua:334
#: advtrains/couple.lua
msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
msgstr ""

#: advtrains/craft_items.lua:3
#: advtrains/craft_items.lua
msgid "Boiler"
msgstr ""

#: advtrains/craft_items.lua:9
#: advtrains/craft_items.lua
msgid "Driver's cab"
msgstr ""

#: advtrains/craft_items.lua:15
#: advtrains/craft_items.lua
msgid "Wheel"
msgstr ""

#: advtrains/craft_items.lua:21
#: advtrains/craft_items.lua
msgid "Chimney"
msgstr ""

#: advtrains/misc_nodes.lua:16
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low)"
msgstr ""

#: advtrains/misc_nodes.lua:33
#: advtrains/misc_nodes.lua
msgid "@1 Platform (high)"
msgstr ""

#: advtrains/misc_nodes.lua:59
#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr ""

#: advtrains/misc_nodes.lua:81
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low, 45 degree)"
msgstr ""

#: advtrains/protection.lua:7
#: advtrains/protection.lua
msgid "Can place, remove and operate trains"
msgstr ""

#: advtrains/protection.lua:12
#: advtrains/protection.lua
msgid ""
"Can place, remove and operate any train, regardless of owner, whitelist, or "
"protection"
msgstr ""

#: advtrains/protection.lua:18
#: advtrains/protection.lua
msgid "Can place and dig tracks in unprotected areas"
msgstr ""

#: advtrains/protection.lua:24
#: advtrains/protection.lua
msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""

#: advtrains/protection.lua:148
#: advtrains/protection.lua
msgid ""
"You are not allowed to build near tracks without the track_builder privilege."
msgstr ""

#: advtrains/protection.lua:148
#: advtrains/protection.lua
msgid ""
"You are not allowed to build tracks without the track_builder privilege."
msgstr ""

#: advtrains/protection.lua:153
#: advtrains/protection.lua
msgid "You are not allowed to build near tracks at this protected position."
msgstr ""

#: advtrains/protection.lua:153
#: advtrains/protection.lua
msgid "You are not allowed to build tracks at this protected position."
msgstr ""

#: advtrains/protection.lua:184
#: advtrains/protection.lua
msgid ""
"You are not allowed to operate turnouts and signals without the "
"railway_operator privilege."
msgstr ""

#: advtrains/signals.lua:63
#: advtrains/signals.lua
msgid "Lampless Signal"
msgstr ""

#: advtrains/signals.lua:127
#: advtrains/signals.lua
msgid "Signal"
msgstr ""

#: advtrains/signals.lua:191
#: advtrains/signals.lua
msgid "Wallmounted Signal (left)"
msgstr ""

#: advtrains/signals.lua:192
#: advtrains/signals.lua
msgid "Wallmounted Signal (right)"
msgstr ""

#: advtrains/signals.lua:193
#: advtrains/signals.lua
msgid "Wallmounted Signal (top)"
msgstr ""

#: advtrains/signals.lua:281 advtrains/signals.lua:322
#: advtrains/signals.lua
msgid "Andrew's Cross"
msgstr ""

#: advtrains/trackplacer.lua:313
#: advtrains/trackplacer.lua
msgid ""
"Track Worker Tool\n"
"\n"
@@ -239,394 +239,413 @@ msgid ""
"Right-click: rotate object"
msgstr ""

#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
msgstr ""

#: advtrains/trackplacer.lua:350
#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
msgstr ""

#: advtrains/trackplacer.lua:404
#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker."
msgstr ""

#: advtrains/trackplacer.lua:414
#: advtrains/trackplacer.lua
msgid "This track can not be changed."
msgstr ""

#: advtrains/tracks.lua:449
#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr ""

#: advtrains/tracks.lua:616
#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr ""

#: advtrains/tracks.lua:622
#: advtrains/tracks.lua
msgid "There's a Track Circuit Break here."
msgstr ""

#: advtrains/tracks.lua:626
#: advtrains/tracks.lua
msgid "There's a Signal Influence Point here."
msgstr ""

#: advtrains/tracks.lua:637
#: advtrains/tracks.lua
msgid "@1 Slope"
msgstr ""

#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
#: advtrains/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr ""

#: advtrains/tracks.lua:658
#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr ""

#: advtrains/tracks.lua:711
#: advtrains/tracks.lua
msgid "Can't place slope: Not enough slope items left (@1 required)."
msgstr ""

#: advtrains/tracks.lua:714
#: advtrains/tracks.lua
msgid "Can't place slope: There's no slope of length @1."
msgstr ""

#: advtrains/tracks.lua:721
#: advtrains/tracks.lua
msgid "Can't place slope: no supporting node at upper end."
msgstr ""

#: advtrains/trainhud.lua:305
#: advtrains/trainhud.lua
msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""

#: advtrains/wagons.lua:179
#: advtrains/wagonprop_tool.lua
msgid ""
"Wagon Properties Tool\n"
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""

#: advtrains/wagonprop_tool.lua
msgid "Wagon Properties Tool"
msgstr ""

#: advtrains/wagonprop_tool.lua
msgid "Insufficient privileges to use this!"
msgstr ""

#: advtrains/wagons.lua
msgid "This wagon is owned by @1, you can't destroy it."
msgstr ""

#: advtrains/wagons.lua:203
#: advtrains/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr ""

#: advtrains/wagons.lua:210
#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr ""

#: advtrains/wagons.lua:216
#: advtrains/wagons.lua
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/wagons.lua:649 advtrains/wagons.lua:850
#: advtrains/wagons.lua
msgid "Show Inventory"
msgstr ""

#: advtrains/wagons.lua:652
#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr ""

#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
#: advtrains/wagons.lua
msgid "Wagon properties"
msgstr ""

#: advtrains/wagons.lua:658
#: advtrains/wagons.lua
msgid "Get off"
msgstr ""

#: advtrains/wagons.lua:661
#: advtrains/wagons.lua
msgid "Get off (forced)"
msgstr ""

#: advtrains/wagons.lua:663
#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr ""

#: advtrains/wagons.lua:692
#: advtrains/wagons.lua
msgid "This wagon has no seats."
msgstr ""

#: advtrains/wagons.lua:703
#: advtrains/wagons.lua
msgid "This wagon is full."
msgstr ""

#: advtrains/wagons.lua:706
#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr ""

#: advtrains/wagons.lua:712
#: advtrains/wagons.lua
msgid "You can't get on this wagon."
msgstr ""

#: advtrains/wagons.lua:838
#: advtrains/wagons.lua
msgid "Select seat:"
msgstr ""

#: advtrains/wagons.lua:880
#: advtrains/wagons.lua
msgid "This Wagon ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Save wagon properties"
msgstr ""

#: advtrains/wagons.lua:965
#: advtrains/wagons.lua
msgid "Train ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Text displayed outside on train"
msgstr ""

#: advtrains/wagons.lua:966
#: advtrains/wagons.lua
msgid "Text displayed inside train"
msgstr ""

#: advtrains/wagons.lua:967
#: advtrains/wagons.lua
msgid "Line"
msgstr ""

#: advtrains/wagons.lua:968
#: advtrains/wagons.lua
msgid "Routingcode"
msgstr ""

#: advtrains/wagons.lua:1241
#: advtrains/wagons.lua
msgid ""
"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
"off."
msgstr ""

#: advtrains/wagons.lua:1250
#: advtrains/wagons.lua
msgid "You are not allowed to access the driver stand."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:13
#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua
msgid "Point speed restriction: @1"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:14
#: advtrains_interlocking/tsr_rail.lua
msgid "Set point speed restriction:"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:30
#: advtrains_interlocking/tsr_rail.lua
msgid "You are not allowed to configure this track without the @1 privilege."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:34
#: advtrains_line_automation/stoprail.lua:31
#: advtrains_line_automation/stoprail.lua:76
#: advtrains_interlocking/tsr_rail.lua advtrains_line_automation/stoprail.lua
msgid "You are not allowed to configure this track."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:64
#: advtrains_interlocking/tsr_rail.lua
msgid "Point Speed Restriction Track"
msgstr ""

#: advtrains_line_automation/stoprail.lua:54
#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr ""

#: advtrains_line_automation/stoprail.lua:55
#: advtrains_line_automation/stoprail.lua
msgid "Station Name"
msgstr ""

#: advtrains_line_automation/stoprail.lua:56
#: advtrains_line_automation/stoprail.lua
msgid "Door Delay"
msgstr ""

#: advtrains_line_automation/stoprail.lua:57
#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr ""

#: advtrains_line_automation/stoprail.lua:58 advtrains_train_track/init.lua:11
#: advtrains_train_track/init.lua:156
#: advtrains_line_automation/stoprail.lua advtrains_train_track/init.lua
msgid "Track"
msgstr ""

#: advtrains_line_automation/stoprail.lua:59
#: advtrains_line_automation/stoprail.lua
msgid "Stop Time"
msgstr ""

#: advtrains_line_automation/stoprail.lua:60
#: advtrains_line_automation/stoprail.lua
msgid "Door Side"
msgstr ""

#: advtrains_line_automation/stoprail.lua:62
#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr ""

#: advtrains_line_automation/stoprail.lua:63
#: advtrains_line_automation/stoprail.lua
msgid "Kick out passengers"
msgstr ""

#: advtrains_line_automation/stoprail.lua:97
#: advtrains_line_automation/stoprail.lua
msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""

#: advtrains_line_automation/stoprail.lua:111
#: advtrains_line_automation/stoprail.lua
msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""

#: advtrains_line_automation/stoprail.lua:221
#: advtrains_line_automation/stoprail.lua
msgid "Station/Stop Track"
msgstr ""

#: advtrains_luaautomation/active_common.lua:17
#: advtrains_luaautomation/active_common.lua
msgid "Unconfigured LuaATC component"
msgstr ""

#: advtrains_luaautomation/active_common.lua:46
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC Environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:49
#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:50
#: advtrains_luaautomation/active_common.lua
msgid "Code"
msgstr ""

#: advtrains_luaautomation/active_common.lua:64
#: advtrains_luaautomation/active_common.lua
msgid ""
"You are not allowed to configure this LuaATC component without the @1 "
"privilege."
msgstr ""

#: advtrains_luaautomation/active_common.lua:94
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to environment '@1'"
msgstr ""

#: advtrains_luaautomation/active_common.lua:96
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to an invalid environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:171
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component with error: @1"
msgstr ""

#: advtrains_luaautomation/init.lua:13
#: advtrains_luaautomation/init.lua
msgid ""
"Can place and configure LuaATC components, including execute potentially "
"harmful Lua code"
msgstr ""

#: advtrains_luaautomation/mesecon_controller.lua:211
#: advtrains_luaautomation/mesecon_controller.lua
msgid "LuaATC Mesecon Controller"
msgstr ""

#: advtrains_luaautomation/operation_panel.lua:11
#: advtrains_luaautomation/operation_panel.lua
msgid "LuaATC Operation Panel"
msgstr ""

#: advtrains_luaautomation/pcnaming.lua:28
#: advtrains_luaautomation/pcnaming.lua
msgid ""
"Passive Component Naming Tool\n"
"\n"
"Right-click to name a passive component."
msgstr ""

#: advtrains_luaautomation/pcnaming.lua:39
#: advtrains_luaautomation/pcnaming.lua
msgid ""
"You are not allowed to name LuaATC passive components without the @1 "
"privilege."
msgstr ""

#: advtrains_luaautomation/pcnaming.lua:62
#: advtrains_luaautomation/pcnaming.lua
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
#: advtrains_train_steam/init.lua:91
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (right)"
msgstr ""

#: advtrains_train_industrial/init.lua:17
#: advtrains_train_industrial/init.lua:56 advtrains_train_steam/init.lua:14
#: advtrains_train_steam/init.lua:85
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr ""

#: advtrains_train_industrial/init.lua:40
#: advtrains_train_industrial/init.lua
msgid "Industrial Train Engine"
msgstr ""

#: advtrains_train_industrial/init.lua:79
#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr ""

#: advtrains_train_industrial/init.lua:98
#: advtrains_train_industrial/init.lua
msgid "Industrial tank wagon"
msgstr ""

#: advtrains_train_industrial/init.lua:116
#: advtrains_train_industrial/init.lua
msgid "Industrial wood wagon"
msgstr ""

#: advtrains_train_japan/init.lua:4
#: advtrains_train_japan/init.lua
msgid "Japanese Train Inter-Wagon Connection"
msgstr ""

#: advtrains_train_japan/init.lua:37
#: advtrains_train_japan/init.lua
msgid "Driver stand"
msgstr ""

#: advtrains_train_japan/init.lua:101
#: advtrains_train_japan/init.lua
msgid "Japanese Train Engine"
msgstr ""

#: advtrains_train_japan/init.lua:176
#: advtrains_train_japan/init.lua
msgid "Japanese Train Wagon"
msgstr ""

#: advtrains_train_steam/init.lua:75
#: advtrains_train_steam/init.lua
msgid "Steam Engine"
msgstr ""

#: advtrains_train_steam/init.lua:159
#: advtrains_train_steam/init.lua
msgid "Detailed Steam Engine"
msgstr ""

#: advtrains_train_steam/init.lua:206
#: advtrains_train_steam/init.lua
msgid "Passenger Wagon"
msgstr ""

#: advtrains_train_steam/init.lua:226
#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr ""

#: advtrains_train_subway/init.lua:144
#: advtrains_train_subway/init.lua
msgid "Subway Passenger Wagon"
msgstr ""

#: advtrains_train_track/init.lua:31
#: advtrains_train_track/init.lua
msgid "Y-turnout"
msgstr ""

#: advtrains_train_track/init.lua:49
#: advtrains_train_track/init.lua
msgid "3-way turnout"
msgstr ""

#: advtrains_train_track/init.lua:69
#: advtrains_train_track/init.lua
msgid "Perpendicular Diamond Crossing Track"
msgstr ""

#: advtrains_train_track/init.lua:91
#: advtrains_train_track/init.lua
msgid "90+Angle Diamond Crossing Track"
msgstr ""

#: advtrains_train_track/init.lua:132
#: advtrains_train_track/init.lua
msgid "Diagonal Diamond Crossing Track"
msgstr ""

#: advtrains_train_track/init.lua:179
#: advtrains_train_track/init.lua
msgid "Bumper"
msgstr ""

#: advtrains_train_track/init.lua:201
#: advtrains_train_track/init.lua
msgid "ATC controller"
msgstr ""

#: advtrains_train_track/init.lua:317
#: advtrains_train_track/init.lua
msgid "Unloading Track"
msgstr ""

#: advtrains_train_track/init.lua:342
#: advtrains_train_track/init.lua
msgid "Loading Track"
msgstr ""

#: advtrains_train_track/init.lua:406
#: advtrains_train_track/init.lua
msgid "Detector Rail"
msgstr ""
diff --git a/advtrains/po/de.po b/advtrains/po/de.po
index 8821fe3..2d43078 100644
--- a/advtrains/po/de.po
+++ b/advtrains/po/de.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-09 11:02+0200\n"
"POT-Creation-Date: 2024-12-06 21:17+0100\n"
"PO-Revision-Date: 2023-10-09 11:18+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: German\n"
@@ -12,11 +12,33 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.3.2\n"

#: advtrains/atc.lua:109
msgid "Unconfigured ATC controller"
msgstr "Nicht konfiguiertes Zugbeeinflussungsgleis"
#: advtrains/atc.lua
msgid "ATC Kick command warning: doors are closed."
msgstr ""
"Zugbeeinflussung: Wegen geschlossener Türen werden Fahrgäste nicht zum "
"Ausstieg gezwungen."

#: advtrains/atc.lua
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:150
#: advtrains/atc.lua
msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr ""
"Zugbeeinflussung: Der Zug befindet sich in Bewegung und kann nicht umgekehrt "
"werden."

#: advtrains/atc.lua
msgid "ATC command parse error: Unknown command: @1"
msgstr "Zugbeeinflussung: Unbekannter Befehl: @1"

#: advtrains/atc.lua
msgid "ATC command syntax error: I statement not closed: @1"
msgstr "Zugbeeinflussung: Unvollständiger I-Befehl: @1"

#: advtrains/atc.lua
msgid ""
"ATC controller, mode @1\n"
"Command: @2"
@@ -24,50 +46,70 @@ msgstr ""
"Zugbeeinflussungsgleis in Betriebsart „@1“\n"
"Befehl: @2"

#: advtrains/atc.lua:180
#: advtrains/atc.lua
msgid "Command"
msgstr "Befehl"

#: advtrains/atc.lua:184
#: advtrains/atc.lua
msgid "Command (on)"
msgstr "Befehl (wenn aktiviert)"

#: advtrains/atc.lua:187
#: advtrains/atc.lua
msgid "Digiline channel"
msgstr "Digiline-Kanal"

#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
#: advtrains_luaautomation/active_common.lua:48
#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr "Speichern"

#: advtrains/atc.lua:236
msgid "ATC Reverse command warning: didn't reverse train, train moving."
#: advtrains/atc.lua
msgid "Unconfigured ATC controller"
msgstr "Nicht konfiguiertes Zugbeeinflussungsgleis"

#: advtrains/copytool.lua
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
msgid "No such lua entity."
msgstr ""
"Zugbeeinflussung: Der Zug befindet sich in Bewegung und kann nicht umgekehrt "
"werden."
"Sie zeigen nicht auf einem Objekt, das mit diesem Werkzeug kopiert werden "
"kann."

#: advtrains/atc.lua:248
msgid "ATC Kick command warning: doors are closed."
#: advtrains/copytool.lua
msgid "No such train: @1."
msgstr "Es gibt keinen mit „@1“ identifizierbaren Zug."

#: advtrains/copytool.lua
msgid "No such wagon: @1."
msgstr "Es gibt keinen mit „@1“ identifizierbaren Waggon."

#: advtrains/copytool.lua
msgid "The clipboard couldn't access the metadata. Copy failed."
msgstr ""
"Zugbeeinflussung: Wegen geschlossener Türen werden Fahrgäste nicht zum "
"Ausstieg gezwungen."
"Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte der Zug nicht "
"kopiert werden."

#: advtrains/atc.lua:252
msgid "ATC Kick command warning: train moving."
#: advtrains/copytool.lua
msgid "The clipboard couldn't access the metadata. Paste failed."
msgstr ""
"Zugbeeinflussung: Der Zug befindet sich in Bewegung, Fahrgäste werden nicht "
"zum Ausstieg gezwungen."
"Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte eine Kopie des "
"Zuges nicht eingefügt werden."

#: advtrains/atc.lua:322
msgid "ATC command syntax error: I statement not closed: @1"
msgstr "Zugbeeinflussung: Unvollständiger I-Befehl: @1"
#: advtrains/copytool.lua
msgid "The clipboard is empty."
msgstr "Das Clipboard ist leer."

#: advtrains/atc.lua:385
msgid "ATC command parse error: Unknown command: @1"
msgstr "Zugbeeinflussung: Unbekannter Befehl: @1"
#: advtrains/copytool.lua
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:8
#: advtrains/copytool.lua
msgid "Train copied."
msgstr "Der Zug wurde Kopiert."

#: advtrains/copytool.lua
msgid ""
"Train copy/paste tool\n"
"\n"
@@ -79,175 +121,149 @@ msgstr ""
"Linksklick: Zug ins Clipboard kopieren\n"
"Right-click: Kopierten Zug einfügen"

#: advtrains/copytool.lua:29
#: advtrains/copytool.lua
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
msgid "<No coupler>"
msgstr "<Keine Kupplung vorhanden>"

#: advtrains/couple.lua:28
#: advtrains/couple.lua
msgid "Buffer and Chain Coupler"
msgstr "Schraubenkupplung"

#: advtrains/couple.lua:29
#: advtrains/couple.lua
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/couple.lua
msgid "Scharfenberg Coupler"
msgstr "Scharfenbergkupplung"

#: advtrains/couple.lua:185
#: advtrains/couple.lua
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
#: advtrains/craft_items.lua
msgid "Boiler"
msgstr ""

#: advtrains/craft_items.lua:9
#: advtrains/craft_items.lua
msgid "Chimney"
msgstr ""

#: advtrains/craft_items.lua
msgid "Driver's cab"
msgstr "Führerstand"

#: advtrains/craft_items.lua:15
#: advtrains/craft_items.lua
msgid "Wheel"
msgstr ""

#: advtrains/craft_items.lua:21
msgid "Chimney"
msgstr ""

#: advtrains/misc_nodes.lua:16
msgid "@1 Platform (low)"
msgstr "Niedriger @1-Bahnsteig"
#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr "Hoher @1-Bahnsteig (45°)"

#: advtrains/misc_nodes.lua:33
#: advtrains/misc_nodes.lua
msgid "@1 Platform (high)"
msgstr "Hoher @1-Bahnsteig"

#: advtrains/misc_nodes.lua:59
msgid "@1 Platform (45 degree)"
msgstr "Hoher @1-Bahnsteig (45°)"
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low)"
msgstr "Niedriger @1-Bahnsteig"

#: advtrains/misc_nodes.lua:81
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low, 45 degree)"
msgstr "Niedriger @1-Bahnsteig (45°)"

#: advtrains/protection.lua:7
msgid "Can place, remove and operate trains"
#: advtrains/protection.lua
msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""

#: advtrains/protection.lua:12
#: advtrains/protection.lua
msgid "Can place and dig tracks in unprotected areas"
msgstr ""

#: advtrains/protection.lua
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"
#: advtrains/protection.lua
msgid "Can place, remove and operate trains"
msgstr ""

#: advtrains/protection.lua:24
msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""
#: advtrains/protection.lua
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:148
#: advtrains/protection.lua
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
#: advtrains/protection.lua
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
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
#: advtrains/protection.lua
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
#: advtrains/signals.lua
msgid "Andrew's Cross"
msgstr "Andreaskreuz"

#: advtrains/signals.lua
msgid "Lampless Signal"
msgstr "Mechanisches Signal"

#: advtrains/signals.lua:127
#: advtrains/signals.lua
msgid "Signal"
msgstr "Lichtsignal"

#: advtrains/signals.lua:191
#: advtrains/signals.lua
msgid "Wallmounted Signal (left)"
msgstr "An der linken Seite montiertes Signal"

#: advtrains/signals.lua:192
#: advtrains/signals.lua
msgid "Wallmounted Signal (right)"
msgstr "An der rechten Seite montiertes Signal"

#: advtrains/signals.lua:193
#: advtrains/signals.lua
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
msgid "This node can't be changed using the trackworker."
msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug bearbeitet werden."

#: advtrains/trackplacer.lua:313
#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug gedreht werden."

#: advtrains/trackplacer.lua
msgid "This track can not be changed."
msgstr "Dieses Gleis kann nicht geändert werden."

#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
msgstr "Dieses Gleis kann nicht gedreht werden."

#: advtrains/trackplacer.lua
msgid ""
"Track Worker Tool\n"
"\n"
@@ -259,278 +275,287 @@ msgstr ""
"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."
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."

#: advtrains/trackplacer.lua:404
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."

#: 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
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block."

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr "Es kann nicht platziert werden: Diese Position ist besetzt."

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr "Ein Zug steht an dieser Position."

#: advtrains/tracks.lua
msgid "There's a Signal Influence Point here."
msgstr "Hier ist ein Signal-Beeinflussungspunkt."

#: advtrains/tracks.lua
msgid "There's a Track Circuit Break here."
msgstr "Hier ist eine Gleisabschnittsgrenze (TCB)."

#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr "Dieses Gleis kann nicht entfernt werden."

#: advtrains/trainhud.lua
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."
#: advtrains/wagonprop_tool.lua
msgid "Insufficient privileges to use this!"
msgstr ""

#: advtrains/wagons.lua:210
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr "Der Waggon muss abgekoppelt sein, damit Sie ihn abbauen können."
#: advtrains/wagonprop_tool.lua
#, fuzzy
msgid "Wagon Properties Tool"
msgstr "Waggon-Einstellungen"

#: advtrains/wagons.lua:216
#: advtrains/wagonprop_tool.lua
msgid ""
"Warning: If you destroy this wagon, you only get some steel back! If you are "
"sure, hold Sneak and left-click the wagon."
"Wagon Properties Tool\n"
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""
"Warnung: Durch den Abbau des Waggons erhalten Sie nur etwas Stahl zurück. "
"Nutzen Sie Schleichen+Linksklick, um dem Waggon abzubauen."

#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
msgid "Show Inventory"
msgstr "Inventar Zeigen"
#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr "(Türen geschlossen)"

#: advtrains/wagons.lua:652
msgid "Onboard Computer"
msgstr ""
#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr "Die Türen sind geschlossen."

#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
msgid "Wagon properties"
msgstr "Waggon-Einstellungen"
#: advtrains/wagons.lua
msgid ""
"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/wagons.lua:658
#: advtrains/wagons.lua
msgid "Get off"
msgstr "Aussteigen"

#: advtrains/wagons.lua:661
#: advtrains/wagons.lua
msgid "Get off (forced)"
msgstr "Ausstieg zwingen"

#: advtrains/wagons.lua:663
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
msgid "Line"
msgstr "Linie"

#: advtrains/wagons.lua:703
msgid "This wagon is full."
msgstr "Der Waggon ist voll."
#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr ""

#: advtrains/wagons.lua:706
msgid "Doors are closed! (Try holding sneak key!)"
msgstr "Die Türen sind geschlossen."
#: advtrains/wagons.lua
msgid "Routingcode"
msgstr ""

#: advtrains/wagons.lua:712
msgid "You can't get on this wagon."
msgstr "Sie können nicht in diesen Waggon einsteigen."
#: advtrains/wagons.lua
msgid "Save wagon properties"
msgstr "Waggon-Einstellungen speichern"

#: advtrains/wagons.lua:838
#: advtrains/wagons.lua
msgid "Select seat:"
msgstr "Wählen Sie einen Sitzplatz aus:"

#: advtrains/wagons.lua:880
msgid "Save wagon properties"
msgstr "Waggon-Einstellungen speichern"
#: advtrains/wagons.lua
msgid "Show Inventory"
msgstr "Inventar Zeigen"

#: advtrains/wagons.lua:965
#: advtrains/wagons.lua
msgid "Text displayed inside train"
msgstr "Innere Anzeige"

#: advtrains/wagons.lua
msgid "Text displayed outside on train"
msgstr "Äußere Anzeige"

#: advtrains/wagons.lua:966
msgid "Text displayed inside train"
msgstr "Innere Anzeige"
#: advtrains/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr "Das Inventar dieses Waggons ist nicht leer."

#: advtrains/wagons.lua:967
msgid "Line"
msgstr "Linie"
#: advtrains/wagons.lua
#, fuzzy
msgid "This Wagon ID"
msgstr "Der Waggon ist voll."

#: advtrains/wagons.lua:968
msgid "Routingcode"
#: advtrains/wagons.lua
msgid "This wagon has no seats."
msgstr "In diesem Waggon ist kein Sitzplatz vorhanden."

#: advtrains/wagons.lua
msgid "This wagon is full."
msgstr "Der Waggon ist voll."

#: advtrains/wagons.lua
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
msgid "Train ID"
msgstr ""

#: advtrains/wagons.lua:1241
#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr "Der Waggon muss abgekoppelt sein, damit Sie ihn abbauen können."

#: advtrains/wagons.lua
msgid "Wagon properties"
msgstr "Waggon-Einstellungen"

#: advtrains/wagons.lua
msgid ""
"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
"off."
"Warning: If you destroy this wagon, you only get some steel back! If you are "
"sure, hold Sneak and left-click the wagon."
msgstr ""
"Die Türen sind geschlossen. Nutzen Sie Schleichen+Rechtsklick, um trotz "
"geschlossener Türen auszusteigen."
"Warnung: Durch den Abbau des Waggons erhalten Sie nur etwas Stahl zurück. "
"Nutzen Sie Schleichen+Linksklick, um dem Waggon abzubauen."

#: advtrains/wagons.lua:1250
#: advtrains/wagons.lua
msgid "You are not allowed to access the driver stand."
msgstr "Sie haben keinen Zugang zum Führerstand."

#: advtrains_interlocking/tsr_rail.lua:13
#: advtrains/wagons.lua
msgid "You can't get on this wagon."
msgstr "Sie können nicht in diesen Waggon einsteigen."

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua
msgid "Point Speed Restriction Track"
msgstr "Geschwindigkeitskontrollgleis"

#: advtrains_interlocking/tsr_rail.lua
msgid "Point speed restriction: @1"
msgstr "Geschwindigkeitskontrolle: @1"

#: advtrains_interlocking/tsr_rail.lua:14
#: advtrains_interlocking/tsr_rail.lua
msgid "Set point speed restriction:"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:30
#: advtrains_interlocking/tsr_rail.lua
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_interlocking/tsr_rail.lua:34
#: advtrains_line_automation/stoprail.lua:31
#: advtrains_line_automation/stoprail.lua:76
#: advtrains_interlocking/tsr_rail.lua advtrains_line_automation/stoprail.lua
msgid "You are not allowed to configure this track."
msgstr "Sie dürfen dieses Gleis nicht konfigurieren."

#: advtrains_interlocking/tsr_rail.lua:64
msgid "Point Speed Restriction Track"
msgstr "Geschwindigkeitskontrollgleis"

#: advtrains_line_automation/stoprail.lua:54
msgid "Station Code"
msgstr "Kennzeichen der Haltestelle"

#: advtrains_line_automation/stoprail.lua:55
msgid "Station Name"
msgstr "Name der Haltestelle"

#: advtrains_line_automation/stoprail.lua:56
msgid "Door Delay"
msgstr "Zeit für die Türschließung"

#: advtrains_line_automation/stoprail.lua:57
#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr "Zielgeschwindigkeit bei Abfahrt"

#: advtrains_line_automation/stoprail.lua:58 advtrains_train_track/init.lua:11
#: advtrains_train_track/init.lua:156
msgid "Track"
msgstr "Gleis"

#: advtrains_line_automation/stoprail.lua:59
msgid "Stop Time"
msgstr "Wartezeit"
#: advtrains_line_automation/stoprail.lua
msgid "Door Delay"
msgstr "Zeit für die Türschließung"

#: advtrains_line_automation/stoprail.lua:60
#: advtrains_line_automation/stoprail.lua
msgid "Door Side"
msgstr "Türseite"

#: advtrains_line_automation/stoprail.lua:62
#: advtrains_line_automation/stoprail.lua
msgid "Kick out passengers"
msgstr "Fahrgäste zum Ausstieg zwingen"

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr "Zug Umkehren"

#: advtrains_line_automation/stoprail.lua:63
msgid "Kick out passengers"
msgstr "Fahrgäste zum Ausstieg zwingen"
#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr "Kennzeichen der Haltestelle"

#: advtrains_line_automation/stoprail.lua
msgid "Station Name"
msgstr "Name der Haltestelle"

#: advtrains_line_automation/stoprail.lua:97
#: advtrains_line_automation/stoprail.lua
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_line_automation/stoprail.lua:111
msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""
"Diese Haltestelle wird von @1 verwaltet. Sie dürfen sie nicht umbenennen."

#: advtrains_line_automation/stoprail.lua:221
#: advtrains_line_automation/stoprail.lua
msgid "Station/Stop Track"
msgstr "Gleis zur Kennzeichnung einer Haltestelle"

#: advtrains_luaautomation/active_common.lua:17
msgid "Unconfigured LuaATC component"
msgstr "Nicht konfiguierter LuaATC-Bauteil"
#: advtrains_line_automation/stoprail.lua
msgid "Stop Time"
msgstr "Wartezeit"

#: advtrains_luaautomation/active_common.lua:46
msgid "LuaATC Environment"
#: advtrains_line_automation/stoprail.lua
msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""
"Diese Haltestelle wird von @1 verwaltet. Sie dürfen sie nicht umbenennen."

#: advtrains_line_automation/stoprail.lua advtrains_train_track/init.lua
msgid "Track"
msgstr "Gleis"

#: advtrains_luaautomation/active_common.lua:49
#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:50
#: advtrains_luaautomation/active_common.lua
msgid "Code"
msgstr ""

#: advtrains_luaautomation/active_common.lua:64
msgid ""
"You are not allowed to configure this LuaATC component without the @1 "
"privilege."
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC Environment"
msgstr ""
"Sie dürfen ohne das „@1“-Privileg diesen LuaATC-Bauteil nicht konfigurieren."

#: advtrains_luaautomation/active_common.lua:94
msgid "LuaATC component assigned to environment '@1'"
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to an invalid environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:96
msgid "LuaATC component assigned to an invalid environment"
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to environment '@1'"
msgstr ""

#: advtrains_luaautomation/active_common.lua:171
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component with error: @1"
msgstr "LuaATC-Bauteil mit Fehlermeldung: @1"

#: advtrains_luaautomation/init.lua:13
#: advtrains_luaautomation/active_common.lua
msgid "Unconfigured LuaATC component"
msgstr "Nicht konfiguierter LuaATC-Bauteil"

#: advtrains_luaautomation/active_common.lua
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_luaautomation/init.lua
msgid ""
"Can place and configure LuaATC components, including execute potentially "
"harmful Lua code"
@@ -538,15 +563,15 @@ msgstr ""
"Kann LuaATC-Bauteile platzieren und konfigurieren (auch evtl. schädliche "
"Programme ausführen)"

#: advtrains_luaautomation/mesecon_controller.lua:211
#: advtrains_luaautomation/mesecon_controller.lua
msgid "LuaATC Mesecon Controller"
msgstr ""

#: advtrains_luaautomation/operation_panel.lua:11
#: advtrains_luaautomation/operation_panel.lua
msgid "LuaATC Operation Panel"
msgstr ""

#: advtrains_luaautomation/pcnaming.lua:28
#: advtrains_luaautomation/pcnaming.lua
msgid ""
"Passive Component Naming Tool\n"
"\n"
@@ -556,119 +581,115 @@ msgstr ""
"\n"
"Rechtsklick zur Benennung der passiven Komponente."

#: advtrains_luaautomation/pcnaming.lua:39
#: advtrains_luaautomation/pcnaming.lua
msgid "Set name of component (empty to clear)"
msgstr ""

#: advtrains_luaautomation/pcnaming.lua
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
#: advtrains_train_steam/init.lua:91
msgid "Driver Stand (right)"
msgstr "Führerstand Rechts"
#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr "Große Industrielle Lokomotive"

#: advtrains_train_industrial/init.lua:17
#: advtrains_train_industrial/init.lua:56 advtrains_train_steam/init.lua:14
#: advtrains_train_steam/init.lua:85
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr "Führerstand Links"

#: advtrains_train_industrial/init.lua:40
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (right)"
msgstr "Führerstand Rechts"

#: advtrains_train_industrial/init.lua
msgid "Industrial Train Engine"
msgstr "Industrielle Lokomotive"

#: advtrains_train_industrial/init.lua:79
msgid "Big Industrial Train Engine"
msgstr "Große Industrielle Lokomotive"

#: advtrains_train_industrial/init.lua:98
#: advtrains_train_industrial/init.lua
msgid "Industrial tank wagon"
msgstr "Tankwaggon"

#: advtrains_train_industrial/init.lua:116
#: advtrains_train_industrial/init.lua
msgid "Industrial wood wagon"
msgstr "Holztransportwaggon"

#: advtrains_train_japan/init.lua:4
msgid "Japanese Train Inter-Wagon Connection"
msgstr "Waggonzwischenverbindung Japanischer Personenzüge"

#: advtrains_train_japan/init.lua:37
#: advtrains_train_japan/init.lua
msgid "Driver stand"
msgstr "Führerstand"

#: advtrains_train_japan/init.lua:101
#: advtrains_train_japan/init.lua
msgid "Japanese Train Engine"
msgstr "Japanische Personenzug-Lokomotive"

#: advtrains_train_japan/init.lua:176
#: advtrains_train_japan/init.lua
msgid "Japanese Train Inter-Wagon Connection"
msgstr "Waggonzwischenverbindung Japanischer Personenzüge"

#: advtrains_train_japan/init.lua
msgid "Japanese Train Wagon"
msgstr "Japanischer Personenzug-Passagierwaggon"

#: advtrains_train_steam/init.lua:75
msgid "Steam Engine"
msgstr "Dampflokomotive"
#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr "Güterwaggon"

#: advtrains_train_steam/init.lua:159
#: advtrains_train_steam/init.lua
msgid "Detailed Steam Engine"
msgstr "Detaillierte Dampflokomotive"

#: advtrains_train_steam/init.lua:206
#: advtrains_train_steam/init.lua
msgid "Passenger Wagon"
msgstr "Passagierwaggon"

#: advtrains_train_steam/init.lua:226
msgid "Box Wagon"
msgstr "Güterwaggon"
#: advtrains_train_steam/init.lua
msgid "Steam Engine"
msgstr "Dampflokomotive"

#: advtrains_train_subway/init.lua:144
#: advtrains_train_subway/init.lua
msgid "Subway Passenger Wagon"
msgstr "U-Bahn-Waggon"

#: advtrains_train_track/init.lua:31
msgid "Y-turnout"
msgstr "Y-Weiche"

#: advtrains_train_track/init.lua:49
#: advtrains_train_track/init.lua
msgid "3-way turnout"
msgstr "Dreiwegweiche"

#: advtrains_train_track/init.lua:69
msgid "Perpendicular Diamond Crossing Track"
msgstr "Kreuzung mit zueinander orthogonalen Gleisen"

#: advtrains_train_track/init.lua:91
#: advtrains_train_track/init.lua
msgid "90+Angle Diamond Crossing Track"
msgstr "Kreuzung mit einem achsenparallelen Gleis"

#: advtrains_train_track/init.lua:132
msgid "Diagonal Diamond Crossing Track"
msgstr "Diagonale Gleiskreuzung"
#: advtrains_train_track/init.lua
msgid "ATC controller"
msgstr "Zugbeeinflussungsgleis"

#: advtrains_train_track/init.lua:179
#: advtrains_train_track/init.lua
msgid "Bumper"
msgstr "Prellbock"

#: advtrains_train_track/init.lua:201
msgid "ATC controller"
msgstr "Zugbeeinflussungsgleis"
#: advtrains_train_track/init.lua
msgid "Detector Rail"
msgstr "Detektorgleis"

#: advtrains_train_track/init.lua:317
msgid "Unloading Track"
msgstr "Abladungsgleis"
#: advtrains_train_track/init.lua
msgid "Diagonal Diamond Crossing Track"
msgstr "Diagonale Gleiskreuzung"

#: advtrains_train_track/init.lua:342
#: advtrains_train_track/init.lua
msgid "Loading Track"
msgstr "Beladungsgleis"

#: advtrains_train_track/init.lua:406
msgid "Detector Rail"
msgstr "Detektorgleis"
#: advtrains_train_track/init.lua
msgid "Perpendicular Diamond Crossing Track"
msgstr "Kreuzung mit zueinander orthogonalen Gleisen"

#: advtrains_train_track/init.lua
msgid "Unloading Track"
msgstr "Abladungsgleis"

#: advtrains_train_track/init.lua
msgid "Y-turnout"
msgstr "Y-Weiche"

#~ msgid ""
#~ "ATC controller, mode @1\n"
diff --git a/advtrains/po/fr.po b/advtrains/po/fr.po
index c744d2c..6404583 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-09 11:02+0200\n"
"POT-Creation-Date: 2024-12-06 21:17+0100\n"
"PO-Revision-Date: 2024-11-02 21:31+0100\n"
"Last-Translator: Tanavit <tanavit@posto.ovh>\n"
"Language-Team: French\n"
@@ -12,11 +12,28 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"

#: advtrains/atc.lua:109
msgid "Unconfigured ATC controller"
msgstr "Controlleur ATC, non-configuré"
#: advtrains/atc.lua
msgid "ATC Kick command warning: doors are closed."
msgstr "Avertissement commande ATC Éjecter : portes closes."

#: advtrains/atc.lua
msgid "ATC Kick command warning: train moving."
msgstr "Avertissement commande ATC Éjecter : train en mouvement."

#: advtrains/atc.lua
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
msgid "ATC command parse error: Unknown command: @1"
msgstr "Erreur d'analyse de commande ATC : Commande inconnue : @1"

#: advtrains/atc.lua:150
#: advtrains/atc.lua
msgid "ATC command syntax error: I statement not closed: @1"
msgstr "Erreur de syntaxe de commande ATC : instruction \"I\" incomplète : @1"

#: advtrains/atc.lua
msgid ""
"ATC controller, mode @1\n"
"Command: @2"
@@ -24,45 +41,64 @@ msgstr ""
"Controlleur ATC, mode @1\n"
"Commande : @2"

#: advtrains/atc.lua:180
#: advtrains/atc.lua
msgid "Command"
msgstr "Commande"

#: advtrains/atc.lua:184
#: advtrains/atc.lua
msgid "Command (on)"
msgstr "Commande (marche)"

#: advtrains/atc.lua:187
#: advtrains/atc.lua
msgid "Digiline channel"
msgstr "Canal Digiline"

#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
#: advtrains_luaautomation/active_common.lua:48
#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr "Sauvegarder"

#: advtrains/atc.lua:236
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
msgid "Unconfigured ATC controller"
msgstr "Controlleur ATC, non-configuré"

#: advtrains/atc.lua:248
msgid "ATC Kick command warning: doors are closed."
msgstr "Avertissement commande ATC Éjecter : portes closes."
#: advtrains/copytool.lua
msgid "Back of train would end up off track, cancelling."
msgstr "La fin du train serait hors voie : annulation."

#: advtrains/atc.lua:252
msgid "ATC Kick command warning: train moving."
msgstr "Avertissement commande ATC Éjecter : train en mouvement."
#: advtrains/copytool.lua
msgid "No such lua entity."
msgstr "Pas de telle entité lua."

#: advtrains/atc.lua:322
msgid "ATC command syntax error: I statement not closed: @1"
msgstr "Erreur de syntaxe de commande ATC : instruction \"I\" incomplète : @1"
#: advtrains/copytool.lua
msgid "No such train: @1."
msgstr "Pas de tel train : @1."

#: advtrains/atc.lua:385
msgid "ATC command parse error: Unknown command: @1"
msgstr "Erreur d'analyse de commande ATC : Commande inconnue : @1"
#: advtrains/copytool.lua
msgid "No such wagon: @1."
msgstr "Pas de tel wagon : @1."

#: advtrains/copytool.lua
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:8
#: advtrains/copytool.lua
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
msgid "The clipboard is empty."
msgstr "Le presse-papier est vide."

#: advtrains/copytool.lua
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
msgid "Train copied."
msgstr "Train copié."

#: advtrains/copytool.lua
msgid ""
"Train copy/paste tool\n"
"\n"
@@ -75,108 +111,78 @@ msgstr ""
"\n"
"Clic-Droit : collage"

#: advtrains/copytool.lua:29
#: advtrains/copytool.lua
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/couple.lua
msgid "<No coupler>"
msgstr "<Pas de coupleur>"

#: advtrains/couple.lua:28
#: advtrains/couple.lua
msgid "Buffer and Chain Coupler"
msgstr "Attelage à tampon et vis"

#: advtrains/couple.lua:29
#: advtrains/couple.lua
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/couple.lua
msgid "Scharfenberg Coupler"
msgstr "Attelage Scharfenberg"

#: advtrains/couple.lua:185
#: advtrains/couple.lua
msgid ""
"You are not allowed to couple trains without the train_operator privilege."
msgstr ""
"Vous n'êtes pas autorisé à coupler des trains sans le privilège "
"\"train_operator\"."

#: advtrains/couple.lua:329 advtrains/couple.lua:333
msgid "<No coupler>"
msgstr "<Pas de coupleur>"

#: 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
#: advtrains/craft_items.lua
msgid "Boiler"
msgstr "Chaudière à vapeur"

#: advtrains/craft_items.lua:9
#: advtrains/craft_items.lua
msgid "Chimney"
msgstr "Cheminée"

#: advtrains/craft_items.lua
msgid "Driver's cab"
msgstr "Cabine de pilotage"

#: advtrains/craft_items.lua:15
#: advtrains/craft_items.lua
msgid "Wheel"
msgstr "Roue"

#: advtrains/craft_items.lua:21
msgid "Chimney"
msgstr "Cheminée"

#: advtrains/misc_nodes.lua:16
msgid "@1 Platform (low)"
msgstr "Quai @1 (bas)"
#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr "Quai @1 (haut, 45°)"

#: advtrains/misc_nodes.lua:33
#: advtrains/misc_nodes.lua
msgid "@1 Platform (high)"
msgstr "Quai @1 (haut)"

#: advtrains/misc_nodes.lua:59
msgid "@1 Platform (45 degree)"
msgstr "Quai @1 (haut, 45°)"
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low)"
msgstr "Quai @1 (bas)"

#: advtrains/misc_nodes.lua:81
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low, 45 degree)"
msgstr "Quai @1 (bas, 45°)"

#: advtrains/protection.lua:7
msgid "Can place, remove and operate trains"
msgstr "Possibilité de poser, retirer ou opérer les trains"
#: advtrains/protection.lua
msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""
"Possibilité d'opérer des embranchements et signaux dans les zones non "
"protégées"

#: advtrains/protection.lua:12
#: advtrains/protection.lua
msgid "Can place and dig tracks in unprotected areas"
msgstr "Possibilité de poser ou retirer des voies dans les zones non protégées"

#: advtrains/protection.lua
msgid ""
"Can place, remove and operate any train, regardless of owner, whitelist, or "
"protection"
@@ -184,40 +190,34 @@ msgstr ""
"Possibilité de poser, retirer ou opérer un quelconque train, indépendamment "
"du propriétaire, de la liste blanche ou de protection"

#: advtrains/protection.lua:18
msgid "Can place and dig tracks in unprotected areas"
msgstr "Possibilité de poser ou retirer des voies dans les zones non protégées"
#: advtrains/protection.lua
msgid "Can place, remove and operate trains"
msgstr "Possibilité de poser, retirer ou opérer les trains"

#: advtrains/protection.lua:24
msgid "Can operate turnouts and signals in unprotected areas"
#: advtrains/protection.lua
msgid "You are not allowed to build near tracks at this protected position."
msgstr ""
"Possibilité d'opérer des embranchements et signaux dans les zones non "
"protégées"
"Vous ne pouvez pas construire à proximité d'une voie à cet emplacement "
"protégé."

#: advtrains/protection.lua:148
#: advtrains/protection.lua
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
#: advtrains/protection.lua
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
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
#: advtrains/protection.lua
msgid ""
"You are not allowed to operate turnouts and signals without the "
"railway_operator privilege."
@@ -225,31 +225,47 @@ msgstr ""
"Vous ne pouvez pas actionner les aiguillages ou les signaux (privilège "
"\"railway_operator\" manquant)"

#: advtrains/signals.lua:63
#: advtrains/signals.lua
msgid "Andrew's Cross"
msgstr "Croix de Saint André"

#: advtrains/signals.lua
msgid "Lampless Signal"
msgstr "Sémaphore"

#: advtrains/signals.lua:127
#: advtrains/signals.lua
msgid "Signal"
msgstr "Signal"

#: advtrains/signals.lua:191
#: advtrains/signals.lua
msgid "Wallmounted Signal (left)"
msgstr "Signal mural (gauche)"

#: advtrains/signals.lua:192
#: advtrains/signals.lua
msgid "Wallmounted Signal (right)"
msgstr "Signal mural (droit)"

#: advtrains/signals.lua:193
#: advtrains/signals.lua
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
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
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:313
#: advtrains/trackplacer.lua
msgid "This track can not be changed."
msgstr "Cette voie ne peut pas être modifiée."

#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
msgstr "Cette voie ne peut pas être tournée."

#: advtrains/trackplacer.lua
msgid ""
"Track Worker Tool\n"
"\n"
@@ -262,275 +278,284 @@ msgstr ""
"\n"
"Clic-Droit : tourne l'objet"

#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
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."

#: advtrains/trackplacer.lua:404
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."

#: 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
#: advtrains/tracks.lua
msgid "@1 Slope"
msgstr "Pente @1"

#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
msgid "Can't place slope: not pointing at node."
msgstr "Placement impossible : ne pointe pas un nœud."

#: advtrains/tracks.lua:658
msgid "Can't place slope: space occupied."
msgstr "Placement impossible : espace occupé."

#: advtrains/tracks.lua:711
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr "Placement impossible : ne pointe pas un nœud."

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr "Placement impossible : espace occupé."

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr "Cet emplacement est occupé par un train."

#: advtrains/tracks.lua
msgid "There's a Signal Influence Point here."
msgstr "Il y a un \"Signal Influence Point\" ici."

#: advtrains/tracks.lua
msgid "There's a Track Circuit Break here."
msgstr "Il y a un \"Track Circuit Break\" ici."

#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr "Cette voie ne peut pas être enlevée."

#: advtrains/trainhud.lua
msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""
"Franchissement de signal rouge : examinez la situation et inversez le sens "
"de marche du train."

#: 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."

#: advtrains/wagons.lua:210
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
#: advtrains/wagonprop_tool.lua
msgid "Insufficient privileges to use this!"
msgstr ""
"Les wagons doivent être désaccouplés des autres pour pouvoir être détruits."

#: advtrains/wagons.lua:216
#: advtrains/wagonprop_tool.lua
#, fuzzy
msgid "Wagon Properties Tool"
msgstr "Propriétés du wagon"

#: advtrains/wagonprop_tool.lua
msgid ""
"Warning: If you destroy this wagon, you only get some steel back! If you are "
"sure, hold Sneak and left-click the wagon."
"Wagon Properties Tool\n"
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""
"Attention: Si vous détruisez ce wagon, vous ne récupérerez que de la "
"ferraille ! Si vous êtes sûr de vous, appuyez la touche \"Marcher lentement "
"(Sneak)\" et Clic-Gauche."

#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
msgid "Show Inventory"
msgstr "Montrer le stock"
#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr "(Portes closes)"

#: advtrains/wagons.lua:652
msgid "Onboard Computer"
msgstr "Ordinateur embarqué"
#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr "Portes closes : (Essayez la \"sneak key\"!\")"

#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
msgid "Wagon properties"
msgstr "Propriétés du wagon"
#: advtrains/wagons.lua
msgid ""
"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/wagons.lua:658
#: advtrains/wagons.lua
msgid "Get off"
msgstr "Débarquer"

#: advtrains/wagons.lua:661
#: advtrains/wagons.lua
msgid "Get off (forced)"
msgstr "Débarquer (de force)"

#: advtrains/wagons.lua:663
msgid "(Doors closed)"
msgstr "(Portes closes)"

#: advtrains/wagons.lua:692
msgid "This wagon has no seats."
msgstr "Ce wagon n'a pas de siège."
#: advtrains/wagons.lua
msgid "Line"
msgstr "Ligne"

#: advtrains/wagons.lua:703
msgid "This wagon is full."
msgstr "Ce wagon est plein."
#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr "Ordinateur embarqué"

#: advtrains/wagons.lua:706
msgid "Doors are closed! (Try holding sneak key!)"
msgstr "Portes closes : (Essayez la \"sneak key\"!\")"
#: advtrains/wagons.lua
msgid "Routingcode"
msgstr "Code de routage"

#: advtrains/wagons.lua:712
msgid "You can't get on this wagon."
msgstr "Montée impossible dans ce wagon."
#: advtrains/wagons.lua
msgid "Save wagon properties"
msgstr "Sauvegarder les propriétés du wagon"

#: advtrains/wagons.lua:838
#: advtrains/wagons.lua
msgid "Select seat:"
msgstr "Choisir le siège :"

#: advtrains/wagons.lua:880
msgid "Save wagon properties"
msgstr "Sauvegarder les propriétés du wagon"
#: advtrains/wagons.lua
msgid "Show Inventory"
msgstr "Montrer le stock"

#: advtrains/wagons.lua:965
#: advtrains/wagons.lua
msgid "Text displayed inside train"
msgstr "Texte affiché à l'intérieur du train"

#: advtrains/wagons.lua
msgid "Text displayed outside on train"
msgstr "Texte affiché à l'extérieur du train"

#: advtrains/wagons.lua:966
msgid "Text displayed inside train"
msgstr "Texte affiché à l'intérieur du train"
#: advtrains/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr "Le stock de ce wagon n'est pas vide."

#: advtrains/wagons.lua:967
msgid "Line"
msgstr "Ligne"
#: advtrains/wagons.lua
#, fuzzy
msgid "This Wagon ID"
msgstr "Ce wagon est plein."

#: advtrains/wagons.lua:968
msgid "Routingcode"
msgstr "Code de routage"
#: advtrains/wagons.lua
msgid "This wagon has no seats."
msgstr "Ce wagon n'a pas de siège."

#: advtrains/wagons.lua
msgid "This wagon is full."
msgstr "Ce wagon est plein."

#: advtrains/wagons.lua:1241
#: advtrains/wagons.lua
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
msgid "Train ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr ""
"Les wagons doivent être désaccouplés des autres pour pouvoir être détruits."

#: advtrains/wagons.lua
msgid "Wagon properties"
msgstr "Propriétés du wagon"

#: advtrains/wagons.lua
msgid ""
"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
"off."
"Warning: If you destroy this wagon, you only get some steel back! If you are "
"sure, hold Sneak and left-click the wagon."
msgstr ""
"Portes closes ! Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour "
"franchir les portes et débarquer."
"Attention: Si vous détruisez ce wagon, vous ne récupérerez que de la "
"ferraille ! Si vous êtes sûr de vous, appuyez la touche \"Marcher lentement "
"(Sneak)\" et Clic-Gauche."

#: advtrains/wagons.lua:1250
#: advtrains/wagons.lua
msgid "You are not allowed to access the driver stand."
msgstr "Accès interdit au poste de pilotage."

#: advtrains_interlocking/tsr_rail.lua:13
#: advtrains/wagons.lua
msgid "You can't get on this wagon."
msgstr "Montée impossible dans ce wagon."

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua
msgid "Point Speed Restriction Track"
msgstr "Voie de point de limitation de vitesse"

#: advtrains_interlocking/tsr_rail.lua
msgid "Point speed restriction: @1"
msgstr "Point de limitation de vitesse : @1"

#: advtrains_interlocking/tsr_rail.lua:14
#: advtrains_interlocking/tsr_rail.lua
msgid "Set point speed restriction:"
msgstr "Placez un point de limitation de vitesse :"

#: advtrains_interlocking/tsr_rail.lua:30
#: advtrains_interlocking/tsr_rail.lua
msgid "You are not allowed to configure this track without the @1 privilege."
msgstr "Vous n'êtes pas autorisé à configurer cette voie sans le privilège @1."

#: advtrains_interlocking/tsr_rail.lua:34
#: advtrains_line_automation/stoprail.lua:31
#: advtrains_line_automation/stoprail.lua:76
#: advtrains_interlocking/tsr_rail.lua advtrains_line_automation/stoprail.lua
msgid "You are not allowed to configure this track."
msgstr "Vous n'êtes pas autorisé à configurer cette voie."

#: advtrains_interlocking/tsr_rail.lua:64
msgid "Point Speed Restriction Track"
msgstr "Voie de point de limitation de vitesse"

#: advtrains_line_automation/stoprail.lua:54
msgid "Station Code"
msgstr "Code de Station"

#: advtrains_line_automation/stoprail.lua:55
msgid "Station Name"
msgstr "Nom de Station"

#: advtrains_line_automation/stoprail.lua:56
msgid "Door Delay"
msgstr "Durée d'ouverture des portes"

#: advtrains_line_automation/stoprail.lua:57
#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr "Vitesse de départ"

#: advtrains_line_automation/stoprail.lua:58 advtrains_train_track/init.lua:11
#: advtrains_train_track/init.lua:156
msgid "Track"
msgstr "Voie"

#: advtrains_line_automation/stoprail.lua:59
msgid "Stop Time"
msgstr "Durée d'arrêt"
#: advtrains_line_automation/stoprail.lua
msgid "Door Delay"
msgstr "Durée d'ouverture des portes"

#: advtrains_line_automation/stoprail.lua:60
#: advtrains_line_automation/stoprail.lua
msgid "Door Side"
msgstr "Coté d'ouvertures des portes"

#: advtrains_line_automation/stoprail.lua:62
#: advtrains_line_automation/stoprail.lua
msgid "Kick out passengers"
msgstr "Éjecter les passagers"

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr "Inversion du sens de marche"

#: advtrains_line_automation/stoprail.lua:63
msgid "Kick out passengers"
msgstr "Éjecter les passagers"
#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr "Code de Station"

#: advtrains_line_automation/stoprail.lua:97
#: advtrains_line_automation/stoprail.lua
msgid "Station Name"
msgstr "Nom de Station"

#: advtrains_line_automation/stoprail.lua
msgid "Station code \"@1\" already exists and is owned by @2."
msgstr "Le code de station \"@1\" existe et est possédé par @2."

#: advtrains_line_automation/stoprail.lua:111
#: advtrains_line_automation/stoprail.lua
msgid "Station/Stop Track"
msgstr "Voie d'arrêt en station"

#: advtrains_line_automation/stoprail.lua
msgid "Stop Time"
msgstr "Durée d'arrêt"

#: advtrains_line_automation/stoprail.lua
msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""
"Cette station est la propriété de @1. Vous n'êtes pas autorisé à modifier "
"son nom."

#: advtrains_line_automation/stoprail.lua:221
msgid "Station/Stop Track"
msgstr "Voie d'arrêt en station"

#: advtrains_luaautomation/active_common.lua:17
msgid "Unconfigured LuaATC component"
msgstr "Composant LuaATC non configuré"

#: advtrains_luaautomation/active_common.lua:46
msgid "LuaATC Environment"
msgstr "Environnement LuaATC"
#: advtrains_line_automation/stoprail.lua advtrains_train_track/init.lua
msgid "Track"
msgstr "Voie"

#: advtrains_luaautomation/active_common.lua:49
#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr "Effacer l'environnement LuaATC"

#: advtrains_luaautomation/active_common.lua:50
#: advtrains_luaautomation/active_common.lua
msgid "Code"
msgstr "Code"

#: advtrains_luaautomation/active_common.lua:64
msgid ""
"You are not allowed to configure this LuaATC component without the @1 "
"privilege."
msgstr "Vous ne pouvez configurer ce composant LuaATC sans le privilege @1."

#: advtrains_luaautomation/active_common.lua:94
msgid "LuaATC component assigned to environment '@1'"
msgstr "Composant LuaATC assigné à l'environnement '@1'"
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC Environment"
msgstr "Environnement LuaATC"

#: advtrains_luaautomation/active_common.lua:96
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to an invalid environment"
msgstr "Composant LuaATC assigné à un environnement invalide"

#: advtrains_luaautomation/active_common.lua:171
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to environment '@1'"
msgstr "Composant LuaATC assigné à l'environnement '@1'"

#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component with error: @1"
msgstr "Erreur @1 du composant LuaATC"

#: advtrains_luaautomation/init.lua:13
#: advtrains_luaautomation/active_common.lua
msgid "Unconfigured LuaATC component"
msgstr "Composant LuaATC non configuré"

#: advtrains_luaautomation/active_common.lua
msgid ""
"You are not allowed to configure this LuaATC component without the @1 "
"privilege."
msgstr "Vous ne pouvez configurer ce composant LuaATC sans le privilege @1."

#: advtrains_luaautomation/init.lua
msgid ""
"Can place and configure LuaATC components, including execute potentially "
"harmful Lua code"
@@ -538,15 +563,15 @@ msgstr ""
"Permet le placement et la configuration de composants LuaATC avec risque "
"d'exécution de code Lua dangereux"

#: advtrains_luaautomation/mesecon_controller.lua:211
#: advtrains_luaautomation/mesecon_controller.lua
msgid "LuaATC Mesecon Controller"
msgstr "Commande Mesecon de LuaATC"

#: advtrains_luaautomation/operation_panel.lua:11
#: advtrains_luaautomation/operation_panel.lua
msgid "LuaATC Operation Panel"
msgstr "Panneau de commande de LuaATC"

#: advtrains_luaautomation/pcnaming.lua:28
#: advtrains_luaautomation/pcnaming.lua
msgid ""
"Passive Component Naming Tool\n"
"\n"
@@ -556,119 +581,115 @@ msgstr ""
"\n"
"Clic-Droit pour nommer un composant passif."

#: advtrains_luaautomation/pcnaming.lua:39
#: advtrains_luaautomation/pcnaming.lua
msgid "Set name of component (empty to clear)"
msgstr "Nommer le composant (chaîne vide pour effacer)"

#: advtrains_luaautomation/pcnaming.lua
msgid ""
"You are not allowed to name LuaATC passive components without the @1 "
"privilege."
msgstr "Vous ne pouvez nommer un composant LuaATC passif sans le privilege @1."

#: advtrains_luaautomation/pcnaming.lua:62
msgid "Set name of component (empty to clear)"
msgstr "Nommer le composant (chaîne vide pour effacer)"

#: advtrains_train_industrial/init.lua:10
#: advtrains_train_industrial/init.lua:49 advtrains_train_steam/init.lua:20
#: advtrains_train_steam/init.lua:91
msgid "Driver Stand (right)"
msgstr "Poste de pilotage (droit)"
#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr "Grosse locomotive industrielle"

#: advtrains_train_industrial/init.lua:17
#: advtrains_train_industrial/init.lua:56 advtrains_train_steam/init.lua:14
#: advtrains_train_steam/init.lua:85
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr "Poste de pilotage (gauche)"

#: advtrains_train_industrial/init.lua:40
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (right)"
msgstr "Poste de pilotage (droit)"

#: advtrains_train_industrial/init.lua
msgid "Industrial Train Engine"
msgstr "Locomotive industrielle"

#: advtrains_train_industrial/init.lua:79
msgid "Big Industrial Train Engine"
msgstr "Grosse locomotive industrielle"

#: advtrains_train_industrial/init.lua:98
#: advtrains_train_industrial/init.lua
msgid "Industrial tank wagon"
msgstr "Wagon-citerne industriel"

#: advtrains_train_industrial/init.lua:116
#: advtrains_train_industrial/init.lua
msgid "Industrial wood wagon"
msgstr "Wagon grumier industriel"

#: advtrains_train_japan/init.lua:4
msgid "Japanese Train Inter-Wagon Connection"
msgstr "Passage inter-voiture de train Japonais"

#: advtrains_train_japan/init.lua:37
#: advtrains_train_japan/init.lua
msgid "Driver stand"
msgstr "Poste de pilotage"

#: advtrains_train_japan/init.lua:101
#: advtrains_train_japan/init.lua
msgid "Japanese Train Engine"
msgstr "Motrice Japonaise"

#: advtrains_train_japan/init.lua:176
#: advtrains_train_japan/init.lua
msgid "Japanese Train Inter-Wagon Connection"
msgstr "Passage inter-voiture de train Japonais"

#: advtrains_train_japan/init.lua
msgid "Japanese Train Wagon"
msgstr "Voiture Japonaise"

#: advtrains_train_steam/init.lua:75
msgid "Steam Engine"
msgstr "Locomotive à vapeur"
#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr "Wagon de frêt"

#: advtrains_train_steam/init.lua:159
#: advtrains_train_steam/init.lua
msgid "Detailed Steam Engine"
msgstr "Locomotive à vapeur complexe"

#: advtrains_train_steam/init.lua:206
#: advtrains_train_steam/init.lua
msgid "Passenger Wagon"
msgstr "Voiture passager"

#: advtrains_train_steam/init.lua:226
msgid "Box Wagon"
msgstr "Wagon de frêt"
#: advtrains_train_steam/init.lua
msgid "Steam Engine"
msgstr "Locomotive à vapeur"

#: advtrains_train_subway/init.lua:144
#: advtrains_train_subway/init.lua
msgid "Subway Passenger Wagon"
msgstr "Voiture de Métropolitain"

#: advtrains_train_track/init.lua:31
msgid "Y-turnout"
msgstr "Embranchement en Y"

#: advtrains_train_track/init.lua:49
#: advtrains_train_track/init.lua
msgid "3-way turnout"
msgstr "Embranchement triple"

#: advtrains_train_track/init.lua:69
msgid "Perpendicular Diamond Crossing Track"
msgstr "Croisement perpendiculaire"

#: advtrains_train_track/init.lua:91
#: advtrains_train_track/init.lua
msgid "90+Angle Diamond Crossing Track"
msgstr "Croisement perpendiculo-diagonal"

#: advtrains_train_track/init.lua:132
msgid "Diagonal Diamond Crossing Track"
msgstr "Croisement diagonal"
#: advtrains_train_track/init.lua
msgid "ATC controller"
msgstr "Controlleur ATC"

#: advtrains_train_track/init.lua:179
#: advtrains_train_track/init.lua
msgid "Bumper"
msgstr "Heurtoir"

#: advtrains_train_track/init.lua:201
msgid "ATC controller"
msgstr "Controlleur ATC"
#: advtrains_train_track/init.lua
msgid "Detector Rail"
msgstr "Voie détectrice"

#: advtrains_train_track/init.lua:317
msgid "Unloading Track"
msgstr "Voie de Déchargement"
#: advtrains_train_track/init.lua
msgid "Diagonal Diamond Crossing Track"
msgstr "Croisement diagonal"

#: advtrains_train_track/init.lua:342
#: advtrains_train_track/init.lua
msgid "Loading Track"
msgstr "Voie de Chargement"

#: advtrains_train_track/init.lua:406
msgid "Detector Rail"
msgstr "Voie détectrice"
#: advtrains_train_track/init.lua
msgid "Perpendicular Diamond Crossing Track"
msgstr "Croisement perpendiculaire"

#: advtrains_train_track/init.lua
msgid "Unloading Track"
msgstr "Voie de Déchargement"

#: advtrains_train_track/init.lua
msgid "Y-turnout"
msgstr "Embranchement en Y"

#~ msgid ""
#~ "ATC controller, mode @1\n"
diff --git a/advtrains/po/update-translations.sh b/advtrains/po/update-translations.sh
index 3a56c7c..4c22c85 100755
--- a/advtrains/po/update-translations.sh
+++ b/advtrains/po/update-translations.sh
@@ -13,6 +13,7 @@ xgettext \
	-o "$POTFILE" \
	-p . \
	-L lua \
	--add-location=file \
	--from-code=UTF-8 \
	--sort-by-file \
	--keyword='attrans' \
diff --git a/advtrains/po/zh_CN.po b/advtrains/po/zh_CN.po
index 5bcc316..9f5f84f 100644
--- a/advtrains/po/zh_CN.po
+++ b/advtrains/po/zh_CN.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-09 11:02+0200\n"
"POT-Creation-Date: 2024-12-06 21:17+0100\n"
"PO-Revision-Date: 2023-10-09 11:24+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: Chinese (Simplified)\n"
@@ -12,11 +12,27 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.3.2\n"

#: advtrains/atc.lua:109
msgid "Unconfigured ATC controller"
msgstr "ATC 控制器 (未配置)"
#: advtrains/atc.lua
msgid "ATC Kick command warning: doors are closed."
msgstr "ATC 警告:车门已关闭,无法踢出乘客。"

#: advtrains/atc.lua
msgid "ATC Kick command warning: train moving."
msgstr "ATC 警告:火车正在移动,无法踢出乘客。"

#: advtrains/atc.lua
msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr "ATC 警告:火车正在移动,无法改变行车方向。"

#: advtrains/atc.lua
msgid "ATC command parse error: Unknown command: @1"
msgstr "ATC 语法错误:未知命令:@1"

#: advtrains/atc.lua:150
#: advtrains/atc.lua
msgid "ATC command syntax error: I statement not closed: @1"
msgstr "ATC 语法错误:“I”命令不完整:@1"

#: advtrains/atc.lua
msgid ""
"ATC controller, mode @1\n"
"Command: @2"
@@ -25,44 +41,64 @@ msgstr ""
"模式:@1\n"
"命令:@2"

#: advtrains/atc.lua:180
#: advtrains/atc.lua
msgid "Command"
msgstr "命令"

#: advtrains/atc.lua:184
#: advtrains/atc.lua
msgid "Command (on)"
msgstr "命令 (激活时)"

#: advtrains/atc.lua:187
#: advtrains/atc.lua
msgid "Digiline channel"
msgstr "Digiline 频道"

#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
#: advtrains_luaautomation/active_common.lua:48
#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr "保存"

#: advtrains/atc.lua:236
msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr "ATC 警告:火车正在移动,无法改变行车方向。"
#: advtrains/atc.lua
msgid "Unconfigured ATC controller"
msgstr "ATC 控制器 (未配置)"

#: advtrains/atc.lua:248
msgid "ATC Kick command warning: doors are closed."
msgstr "ATC 警告:车门已关闭,无法踢出乘客。"
#: advtrains/copytool.lua
msgid "Back of train would end up off track, cancelling."
msgstr "火车后部不在轨道上。"

#: advtrains/atc.lua:252
msgid "ATC Kick command warning: train moving."
msgstr "ATC 警告:火车正在移动,无法踢出乘客。"
#: advtrains/copytool.lua
msgid "No such lua entity."
msgstr "您没有指向一个可以用火车复制工具复制的物体。"

#: advtrains/atc.lua:322
msgid "ATC command syntax error: I statement not closed: @1"
msgstr "ATC 语法错误:“I”命令不完整:@1"
#: advtrains/copytool.lua
msgid "No such train: @1."
msgstr "ID 为“@1”的列车不存在。"

#: advtrains/atc.lua:385
msgid "ATC command parse error: Unknown command: @1"
msgstr "ATC 语法错误:未知命令:@1"
#: advtrains/copytool.lua
msgid "No such wagon: @1."
msgstr "ID 为“@1”的车厢不存在。"

#: advtrains/copytool.lua:8
#: advtrains/copytool.lua
msgid "The clipboard couldn't access the metadata. Copy failed."
msgstr "无法复制:剪贴板无法访问元数据。"

#: advtrains/copytool.lua
msgid "The clipboard couldn't access the metadata. Paste failed."
msgstr "无法粘贴:剪贴板无法访问元数据。"

#: advtrains/copytool.lua
msgid "The clipboard is empty."
msgstr "剪贴板是空的。"

#: advtrains/copytool.lua
msgid "The track you are trying to place the wagon on is not long enough."
msgstr "轨道太短。"

#: advtrains/copytool.lua
msgid "Train copied."
msgstr "已复制列车。"

#: advtrains/copytool.lua
msgid ""
"Train copy/paste tool\n"
"\n"
@@ -74,166 +110,146 @@ msgstr ""
"左键单击:复制\n"
"右键单击:粘帖"

#: advtrains/copytool.lua:29
#: advtrains/copytool.lua
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
msgid "<No coupler>"
msgstr "<没有车钩>"

#: advtrains/couple.lua:28
#: advtrains/couple.lua
msgid "Buffer and Chain Coupler"
msgstr "链式车钩"

#: advtrains/couple.lua:29
#: advtrains/couple.lua
msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
msgstr "您无法连接这两节车厢:这两节车厢使用不同的车钩 (@1和@2)。"

#: advtrains/couple.lua
msgid "Scharfenberg Coupler"
msgstr "Scharfenberg 式车钩"

#: advtrains/couple.lua:185
#: advtrains/couple.lua
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
#: advtrains/craft_items.lua
msgid "Boiler"
msgstr "锅炉"

#: advtrains/craft_items.lua:9
#: advtrains/craft_items.lua
msgid "Chimney"
msgstr "烟囱"

#: advtrains/craft_items.lua
msgid "Driver's cab"
msgstr "驾驶室"

#: advtrains/craft_items.lua:15
#: advtrains/craft_items.lua
msgid "Wheel"
msgstr "车轮"

#: advtrains/craft_items.lua:21
msgid "Chimney"
msgstr "烟囱"

#: advtrains/misc_nodes.lua:16
msgid "@1 Platform (low)"
msgstr "较低的@1站台"
#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr "较高的@1站台 (45°)"

#: advtrains/misc_nodes.lua:33
#: advtrains/misc_nodes.lua
msgid "@1 Platform (high)"
msgstr "较高的@1站台"

#: advtrains/misc_nodes.lua:59
msgid "@1 Platform (45 degree)"
msgstr "较高的@1站台 (45°)"
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low)"
msgstr "较低的@1站台"

#: advtrains/misc_nodes.lua:81
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low, 45 degree)"
msgstr "较低的@1站台 (45°)"

#: advtrains/protection.lua:7
msgid "Can place, remove and operate trains"
#: advtrains/protection.lua
msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""

#: advtrains/protection.lua:12
#: advtrains/protection.lua
msgid "Can place and dig tracks in unprotected areas"
msgstr ""

#: advtrains/protection.lua
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"
#: advtrains/protection.lua
msgid "Can place, remove and operate trains"
msgstr ""

#: advtrains/protection.lua:24
msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""
#: advtrains/protection.lua
msgid "You are not allowed to build near tracks at this protected position."
msgstr "这里已被保护,您不能在这里的铁路附近建任何东西。"

#: advtrains/protection.lua:148
#: advtrains/protection.lua
msgid ""
"You are not allowed to build near tracks without the track_builder privilege."
msgstr "您没有“train_operator”权限,不能在铁路附近建任何东西。"

#: advtrains/protection.lua:148
#: advtrains/protection.lua
msgid "You are not allowed to build tracks at this protected position."
msgstr "这里已被保护,您不能在这里建造铁路。"

#: advtrains/protection.lua
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
#: advtrains/protection.lua
msgid ""
"You are not allowed to operate turnouts and signals without the "
"railway_operator privilege."
msgstr "您没有“railway_operator”权限,不能控制铁路设施。"

#: advtrains/signals.lua:63
#: advtrains/signals.lua
msgid "Andrew's Cross"
msgstr "铁路道口信号灯"

#: advtrains/signals.lua
msgid "Lampless Signal"
msgstr "臂板信号机"

#: advtrains/signals.lua:127
#: advtrains/signals.lua
msgid "Signal"
msgstr "信号灯"

#: advtrains/signals.lua:191
#: advtrains/signals.lua
msgid "Wallmounted Signal (left)"
msgstr "壁挂式信号灯 (左侧)"

#: advtrains/signals.lua:192
#: advtrains/signals.lua
msgid "Wallmounted Signal (right)"
msgstr "壁挂式信号灯 (右侧)"

#: advtrains/signals.lua:193
#: advtrains/signals.lua
msgid "Wallmounted Signal (top)"
msgstr "悬挂式信号灯"

#: advtrains/signals.lua:281 advtrains/signals.lua:322
msgid "Andrew's Cross"
msgstr "铁路道口信号灯"
#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker."
msgstr "您不能使用铁路调整工具调整这个方块。"

#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
msgstr "您不能使用铁路调整工具旋转这个方块。"

#: advtrains/trackplacer.lua
msgid "This track can not be changed."
msgstr "您不能调整这段轨道。"

#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
msgstr "您不能旋转这段轨道。"

#: advtrains/trackplacer.lua:313
#: advtrains/trackplacer.lua
msgid ""
"Track Worker Tool\n"
"\n"
@@ -245,280 +261,289 @@ msgstr ""
"左键单击:切换轨道类型\n"
"右键单击:旋转方块"

#: 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."
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
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
msgid "Can't place slope: Not enough slope items left (@1 required)."
msgstr "无法放置斜坡:您没有足够的铁路斜坡放置工具 (您总共需要@1个)"

#: advtrains/tracks.lua:714
#: advtrains/tracks.lua
msgid "Can't place slope: There's no slope of length @1."
msgstr "无法放置斜坡:advtrains 不支持长度为@1米的斜坡。"

#: advtrains/tracks.lua:721
#: advtrains/tracks.lua
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."
#: advtrains/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr "无法放置斜坡:您没有选择任何方块。"

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr "无法放置斜坡:此区域已被占用。"

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr ""

#: advtrains/wagons.lua:179
msgid "This wagon is owned by @1, you can't destroy it."
msgstr "这是 @1 的车厢,您不能摧毁它。"
#: advtrains/tracks.lua
msgid "There's a Signal Influence Point here."
msgstr ""

#: advtrains/wagons.lua:203
msgid "The wagon's inventory is not empty."
#: advtrains/tracks.lua
msgid "There's a Track Circuit Break here."
msgstr ""

#: advtrains/wagons.lua:210
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr "您不能移除这段轨道。"

#: advtrains/trainhud.lua
msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""

#: advtrains/wagonprop_tool.lua
msgid "Insufficient privileges to use this!"
msgstr ""

#: advtrains/wagons.lua:216
#: advtrains/wagonprop_tool.lua
#, fuzzy
msgid "Wagon Properties Tool"
msgstr "车厢属性"

#: advtrains/wagonprop_tool.lua
msgid ""
"Warning: If you destroy this wagon, you only get some steel back! If you are "
"sure, hold Sneak and left-click the wagon."
"Wagon Properties Tool\n"
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""
"警告:如果您摧毁此车厢,您只能拿到一些钢方块。如果您确定要摧毁这节车厢,请按"
"潜行键并左键单击此车厢。"

#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
msgid "Show Inventory"
msgstr "显示物品栏"
#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr "(车门已关闭)"

#: advtrains/wagons.lua:652
msgid "Onboard Computer"
#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr ""

#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
msgid "Wagon properties"
msgstr "车厢属性"
#: advtrains/wagons.lua
msgid ""
"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
"off."
msgstr "车门已关闭,请使用潜行+右键单击下车。"

#: advtrains/wagons.lua:658
#: advtrains/wagons.lua
msgid "Get off"
msgstr "下车"

#: advtrains/wagons.lua:661
#: advtrains/wagons.lua
msgid "Get off (forced)"
msgstr "强制下车"

#: advtrains/wagons.lua:663
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
msgid "Line"
msgstr "火车线路"

#: advtrains/wagons.lua:706
msgid "Doors are closed! (Try holding sneak key!)"
#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr ""

#: advtrains/wagons.lua:712
msgid "You can't get on this wagon."
msgstr ""
#: advtrains/wagons.lua
msgid "Routingcode"
msgstr "路由码"

#: advtrains/wagons.lua
msgid "Save wagon properties"
msgstr "保存车厢属性"

#: advtrains/wagons.lua:838
#: advtrains/wagons.lua
msgid "Select seat:"
msgstr "请选择座位:"

#: advtrains/wagons.lua:880
msgid "Save wagon properties"
msgstr "保存车厢属性"
#: advtrains/wagons.lua
msgid "Show Inventory"
msgstr "显示物品栏"

#: advtrains/wagons.lua
msgid "Text displayed inside train"
msgstr "车厢内部显示"

#: advtrains/wagons.lua:965
#: advtrains/wagons.lua
msgid "Text displayed outside on train"
msgstr "车厢外部显示"

#: advtrains/wagons.lua:966
msgid "Text displayed inside train"
msgstr "车厢内部显示"
#: advtrains/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr ""

#: advtrains/wagons.lua:967
msgid "Line"
msgstr "火车线路"
#: advtrains/wagons.lua
#, fuzzy
msgid "This Wagon ID"
msgstr "车厢已满。"

#: advtrains/wagons.lua:968
msgid "Routingcode"
msgstr "路由码"
#: advtrains/wagons.lua
msgid "This wagon has no seats."
msgstr "这节车厢没有座位。"

#: advtrains/wagons.lua:1241
#: advtrains/wagons.lua
msgid "This wagon is full."
msgstr "车厢已满。"

#: advtrains/wagons.lua
msgid "This wagon is owned by @1, you can't destroy it."
msgstr "这是 @1 的车厢,您不能摧毁它。"

#: advtrains/wagons.lua
msgid "Train ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon properties"
msgstr "车厢属性"

#: advtrains/wagons.lua
msgid ""
"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
"off."
msgstr "车门已关闭,请使用潜行+右键单击下车。"
"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/wagons.lua:1250
#: advtrains/wagons.lua
msgid "You are not allowed to access the driver stand."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:13
#: advtrains/wagons.lua
msgid "You can't get on this wagon."
msgstr ""

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua
msgid "Point Speed Restriction Track"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua
msgid "Point speed restriction: @1"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:14
#: advtrains_interlocking/tsr_rail.lua
msgid "Set point speed restriction:"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:30
#: advtrains_interlocking/tsr_rail.lua
msgid "You are not allowed to configure this track without the @1 privilege."
msgstr "您没有“@1”权限,不能调整这段轨道。"

#: advtrains_interlocking/tsr_rail.lua:34
#: advtrains_line_automation/stoprail.lua:31
#: advtrains_line_automation/stoprail.lua:76
#: advtrains_interlocking/tsr_rail.lua advtrains_line_automation/stoprail.lua
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
msgid "Station Code"
msgstr "车站代码"

#: advtrains_line_automation/stoprail.lua:55
msgid "Station Name"
msgstr "车站名称"

#: advtrains_line_automation/stoprail.lua:56
msgid "Door Delay"
msgstr "车门关闭时间"

#: advtrains_line_automation/stoprail.lua:57
#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr "出发速度"

#: advtrains_line_automation/stoprail.lua:58 advtrains_train_track/init.lua:11
#: advtrains_train_track/init.lua:156
msgid "Track"
msgstr "轨道"

#: advtrains_line_automation/stoprail.lua:59
msgid "Stop Time"
msgstr "停站时间"
#: advtrains_line_automation/stoprail.lua
msgid "Door Delay"
msgstr "车门关闭时间"

#: advtrains_line_automation/stoprail.lua:60
#: advtrains_line_automation/stoprail.lua
msgid "Door Side"
msgstr ""

#: advtrains_line_automation/stoprail.lua:62
#: advtrains_line_automation/stoprail.lua
msgid "Kick out passengers"
msgstr "踢出乘客"

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr "改变行车方向"

#: advtrains_line_automation/stoprail.lua:63
msgid "Kick out passengers"
msgstr "踢出乘客"
#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr "车站代码"

#: advtrains_line_automation/stoprail.lua:97
msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""
#: advtrains_line_automation/stoprail.lua
msgid "Station Name"
msgstr "车站名称"

#: advtrains_line_automation/stoprail.lua:111
msgid "This station is owned by @1. You are not allowed to edit its name."
#: advtrains_line_automation/stoprail.lua
msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""

#: advtrains_line_automation/stoprail.lua:221
#: advtrains_line_automation/stoprail.lua
msgid "Station/Stop Track"
msgstr "车站轨道"

#: advtrains_luaautomation/active_common.lua:17
msgid "Unconfigured LuaATC component"
msgstr "LuaATC 部件 (未配置)"
#: advtrains_line_automation/stoprail.lua
msgid "Stop Time"
msgstr "停站时间"

#: advtrains_luaautomation/active_common.lua:46
msgid "LuaATC Environment"
#: advtrains_line_automation/stoprail.lua
msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""

#: advtrains_luaautomation/active_common.lua:49
#: advtrains_line_automation/stoprail.lua advtrains_train_track/init.lua
msgid "Track"
msgstr "轨道"

#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:50
#: advtrains_luaautomation/active_common.lua
msgid "Code"
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_luaautomation/active_common.lua:94
msgid "LuaATC component assigned to environment '@1'"
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC Environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:96
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to an invalid environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:171
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to environment '@1'"
msgstr ""

#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component with error: @1"
msgstr ""

#: advtrains_luaautomation/init.lua:13
#: advtrains_luaautomation/active_common.lua
msgid "Unconfigured LuaATC component"
msgstr "LuaATC 部件 (未配置)"

#: advtrains_luaautomation/active_common.lua
msgid ""
"You are not allowed to configure this LuaATC component without the @1 "
"privilege."
msgstr "您没有“@1”权限,不能配置这个 LuaATC 部件。"

#: advtrains_luaautomation/init.lua
msgid ""
"Can place and configure LuaATC components, including execute potentially "
"harmful Lua code"
msgstr ""

#: advtrains_luaautomation/mesecon_controller.lua:211
#: advtrains_luaautomation/mesecon_controller.lua
msgid "LuaATC Mesecon Controller"
msgstr ""

#: advtrains_luaautomation/operation_panel.lua:11
#: advtrains_luaautomation/operation_panel.lua
msgid "LuaATC Operation Panel"
msgstr ""

#: advtrains_luaautomation/pcnaming.lua:28
#: advtrains_luaautomation/pcnaming.lua
msgid ""
"Passive Component Naming Tool\n"
"\n"
@@ -528,119 +553,115 @@ msgstr ""
"\n"
"右键单击命名所选元件。"

#: advtrains_luaautomation/pcnaming.lua:39
#: advtrains_luaautomation/pcnaming.lua
msgid "Set name of component (empty to clear)"
msgstr ""

#: advtrains_luaautomation/pcnaming.lua
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
#: advtrains_train_steam/init.lua:91
msgid "Driver Stand (right)"
msgstr "右侧司机座位"
#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr "大型工业用火车头"

#: advtrains_train_industrial/init.lua:17
#: advtrains_train_industrial/init.lua:56 advtrains_train_steam/init.lua:14
#: advtrains_train_steam/init.lua:85
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr "左侧司机座位"

#: advtrains_train_industrial/init.lua:40
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (right)"
msgstr "右侧司机座位"

#: advtrains_train_industrial/init.lua
msgid "Industrial Train Engine"
msgstr "工业用火车头"

#: advtrains_train_industrial/init.lua:79
msgid "Big Industrial Train Engine"
msgstr "大型工业用火车头"

#: advtrains_train_industrial/init.lua:98
#: advtrains_train_industrial/init.lua
msgid "Industrial tank wagon"
msgstr "液体运输车厢"

#: advtrains_train_industrial/init.lua:116
#: advtrains_train_industrial/init.lua
msgid "Industrial wood wagon"
msgstr "木材运输车厢"

#: advtrains_train_japan/init.lua:4
msgid "Japanese Train Inter-Wagon Connection"
msgstr "日本火车车钩"

#: advtrains_train_japan/init.lua:37
#: advtrains_train_japan/init.lua
msgid "Driver stand"
msgstr "司机座位"

#: advtrains_train_japan/init.lua:101
#: advtrains_train_japan/init.lua
msgid "Japanese Train Engine"
msgstr "高速列车车头"

#: advtrains_train_japan/init.lua:176
#: advtrains_train_japan/init.lua
msgid "Japanese Train Inter-Wagon Connection"
msgstr "日本火车车钩"

#: advtrains_train_japan/init.lua
msgid "Japanese Train Wagon"
msgstr "高速列车车厢"

#: advtrains_train_steam/init.lua:75
msgid "Steam Engine"
msgstr "蒸汽机车"
#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr "货运车厢"

#: advtrains_train_steam/init.lua:159
#: advtrains_train_steam/init.lua
msgid "Detailed Steam Engine"
msgstr "精细的蒸汽机车"

#: advtrains_train_steam/init.lua:206
#: advtrains_train_steam/init.lua
msgid "Passenger Wagon"
msgstr "客车"

#: advtrains_train_steam/init.lua:226
msgid "Box Wagon"
msgstr "货运车厢"
#: advtrains_train_steam/init.lua
msgid "Steam Engine"
msgstr "蒸汽机车"

#: advtrains_train_subway/init.lua:144
#: advtrains_train_subway/init.lua
msgid "Subway Passenger Wagon"
msgstr "地铁车厢"

#: advtrains_train_track/init.lua:31
msgid "Y-turnout"
msgstr "对称道岔"

#: advtrains_train_track/init.lua:49
#: advtrains_train_track/init.lua
msgid "3-way turnout"
msgstr "三开道岔"

#: advtrains_train_track/init.lua:69
msgid "Perpendicular Diamond Crossing Track"
msgstr "垂直交叉轨道"

#: advtrains_train_track/init.lua:91
#: advtrains_train_track/init.lua
msgid "90+Angle Diamond Crossing Track"
msgstr "交叉轨道 (其中一条轨道与坐标轴平行)"

#: advtrains_train_track/init.lua:132
msgid "Diagonal Diamond Crossing Track"
msgstr "交叉轨道"
#: advtrains_train_track/init.lua
msgid "ATC controller"
msgstr "ATC 控制器"

#: advtrains_train_track/init.lua:179
#: advtrains_train_track/init.lua
msgid "Bumper"
msgstr "保险杠"

#: advtrains_train_track/init.lua:201
msgid "ATC controller"
msgstr "ATC 控制器"
#: advtrains_train_track/init.lua
msgid "Detector Rail"
msgstr "探测轨道"

#: advtrains_train_track/init.lua:317
msgid "Unloading Track"
msgstr "卸货轨道"
#: advtrains_train_track/init.lua
msgid "Diagonal Diamond Crossing Track"
msgstr "交叉轨道"

#: advtrains_train_track/init.lua:342
#: advtrains_train_track/init.lua
msgid "Loading Track"
msgstr "装货轨道"

#: advtrains_train_track/init.lua:406
msgid "Detector Rail"
msgstr "探测轨道"
#: advtrains_train_track/init.lua
msgid "Perpendicular Diamond Crossing Track"
msgstr "垂直交叉轨道"

#: advtrains_train_track/init.lua
msgid "Unloading Track"
msgstr "卸货轨道"

#: advtrains_train_track/init.lua
msgid "Y-turnout"
msgstr "对称道岔"

#~ msgid ""
#~ "ATC controller, mode @1\n"
diff --git a/advtrains/po/zh_TW.po b/advtrains/po/zh_TW.po
index ece82c3..97dab1b 100644
--- a/advtrains/po/zh_TW.po
+++ b/advtrains/po/zh_TW.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-09 11:02+0200\n"
"POT-Creation-Date: 2024-12-06 21:17+0100\n"
"PO-Revision-Date: 2023-10-09 11:31+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: Chinese (Traditional)\n"
@@ -12,11 +12,27 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.3.2\n"

#: advtrains/atc.lua:109
msgid "Unconfigured ATC controller"
msgstr "ATC 控制器 (未配置)"
#: advtrains/atc.lua
msgid "ATC Kick command warning: doors are closed."
msgstr "ATC 警告:車門已關閉,無法踢出乘客。"

#: advtrains/atc.lua
msgid "ATC Kick command warning: train moving."
msgstr "ATC 警告:火車正在移動,無法踢出乘客。"

#: advtrains/atc.lua
msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr "ATC 警告:火車正在移動,無法改變行車方向。"

#: advtrains/atc.lua
msgid "ATC command parse error: Unknown command: @1"
msgstr "ATC 語法錯誤:未知命令:@1"

#: advtrains/atc.lua:150
#: advtrains/atc.lua
msgid "ATC command syntax error: I statement not closed: @1"
msgstr "ATC 語法錯誤:「I」命令不完整:@1"

#: advtrains/atc.lua
msgid ""
"ATC controller, mode @1\n"
"Command: @2"
@@ -25,44 +41,64 @@ msgstr ""
"模式:@1\n"
"命令:@2"

#: advtrains/atc.lua:180
#: advtrains/atc.lua
msgid "Command"
msgstr "命令"

#: advtrains/atc.lua:184
#: advtrains/atc.lua
msgid "Command (on)"
msgstr "命令 (啟用時)"

#: advtrains/atc.lua:187
#: advtrains/atc.lua
msgid "Digiline channel"
msgstr "Digiline 頻道"

#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
#: advtrains_luaautomation/active_common.lua:48
#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr "儲存"

#: advtrains/atc.lua:236
msgid "ATC Reverse command warning: didn't reverse train, train moving."
msgstr "ATC 警告:火車正在移動,無法改變行車方向。"
#: advtrains/atc.lua
msgid "Unconfigured ATC controller"
msgstr "ATC 控制器 (未配置)"

#: advtrains/atc.lua:248
msgid "ATC Kick command warning: doors are closed."
msgstr "ATC 警告:車門已關閉,無法踢出乘客。"
#: advtrains/copytool.lua
msgid "Back of train would end up off track, cancelling."
msgstr "火車後部不在軌道上。"

#: advtrains/atc.lua:252
msgid "ATC Kick command warning: train moving."
msgstr "ATC 警告:火車正在移動,無法踢出乘客。"
#: advtrains/copytool.lua
msgid "No such lua entity."
msgstr "您沒有指向一個可以用火車複製工具複製的物體。"

#: advtrains/atc.lua:322
msgid "ATC command syntax error: I statement not closed: @1"
msgstr "ATC 語法錯誤:「I」命令不完整:@1"
#: advtrains/copytool.lua
msgid "No such train: @1."
msgstr "ID 為「@1」的列車不存在。"

#: advtrains/atc.lua:385
msgid "ATC command parse error: Unknown command: @1"
msgstr "ATC 語法錯誤:未知命令:@1"
#: advtrains/copytool.lua
msgid "No such wagon: @1."
msgstr "ID 為「@1」的車廂不存在。"

#: advtrains/copytool.lua:8
#: advtrains/copytool.lua
msgid "The clipboard couldn't access the metadata. Copy failed."
msgstr "無法複製:剪貼簿無法訪問元資料。"

#: advtrains/copytool.lua
msgid "The clipboard couldn't access the metadata. Paste failed."
msgstr "無法貼上:剪貼簿無法訪問元資料。"

#: advtrains/copytool.lua
msgid "The clipboard is empty."
msgstr "剪貼簿是空的。"

#: advtrains/copytool.lua
msgid "The track you are trying to place the wagon on is not long enough."
msgstr "軌道太短。"

#: advtrains/copytool.lua
msgid "Train copied."
msgstr "已複製火車。"

#: advtrains/copytool.lua
msgid ""
"Train copy/paste tool\n"
"\n"
@@ -74,166 +110,146 @@ msgstr ""
"左鍵單擊:複製\n"
"右鍵單擊:粘帖"

#: advtrains/copytool.lua:29
#: advtrains/copytool.lua
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
msgid "<No coupler>"
msgstr "<無連結器>"

#: advtrains/couple.lua:28
#: advtrains/couple.lua
msgid "Buffer and Chain Coupler"
msgstr "鏈式連結器"

#: advtrains/couple.lua:29
#: advtrains/couple.lua
msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
msgstr "您無法連結這兩節車廂:這兩節車廂使用不同的連結器 (@1和@2)。"

#: advtrains/couple.lua
msgid "Scharfenberg Coupler"
msgstr "Scharfenberg 式連結器"

#: advtrains/couple.lua:185
#: advtrains/couple.lua
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
#: advtrains/craft_items.lua
msgid "Boiler"
msgstr "鍋爐"

#: advtrains/craft_items.lua:9
#: advtrains/craft_items.lua
msgid "Chimney"
msgstr "煙囪"

#: advtrains/craft_items.lua
msgid "Driver's cab"
msgstr "駕駛室"

#: advtrains/craft_items.lua:15
#: advtrains/craft_items.lua
msgid "Wheel"
msgstr "車輪"

#: advtrains/craft_items.lua:21
msgid "Chimney"
msgstr "煙囪"

#: advtrains/misc_nodes.lua:16
msgid "@1 Platform (low)"
msgstr "較低的@1月臺"
#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr "較高的@1月臺 (45°)"

#: advtrains/misc_nodes.lua:33
#: advtrains/misc_nodes.lua
msgid "@1 Platform (high)"
msgstr "較高的@1月臺"

#: advtrains/misc_nodes.lua:59
msgid "@1 Platform (45 degree)"
msgstr "較高的@1月臺 (45°)"
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low)"
msgstr "較低的@1月臺"

#: advtrains/misc_nodes.lua:81
#: advtrains/misc_nodes.lua
msgid "@1 Platform (low, 45 degree)"
msgstr "較低的@1月臺 (45°)"

#: advtrains/protection.lua:7
msgid "Can place, remove and operate trains"
#: advtrains/protection.lua
msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""

#: advtrains/protection.lua:12
#: advtrains/protection.lua
msgid "Can place and dig tracks in unprotected areas"
msgstr ""

#: advtrains/protection.lua
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"
#: advtrains/protection.lua
msgid "Can place, remove and operate trains"
msgstr ""

#: advtrains/protection.lua:24
msgid "Can operate turnouts and signals in unprotected areas"
msgstr ""
#: advtrains/protection.lua
msgid "You are not allowed to build near tracks at this protected position."
msgstr "這裡已被保護,您不能在這裡的鐵路附近建任何東西。"

#: advtrains/protection.lua:148
#: advtrains/protection.lua
msgid ""
"You are not allowed to build near tracks without the track_builder privilege."
msgstr "您沒有「train_operator」許可權,不能在鐵路附近建任何東西。"

#: advtrains/protection.lua:148
#: advtrains/protection.lua
msgid "You are not allowed to build tracks at this protected position."
msgstr "這裡已被保護,您不能在這裡建造鐵路。"

#: advtrains/protection.lua
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
#: advtrains/protection.lua
msgid ""
"You are not allowed to operate turnouts and signals without the "
"railway_operator privilege."
msgstr "您沒有「railway_operator」許可權,不能控制鐵路設施。"

#: advtrains/signals.lua:63
#: advtrains/signals.lua
msgid "Andrew's Cross"
msgstr "平交道號誌燈"

#: advtrains/signals.lua
msgid "Lampless Signal"
msgstr "臂木式號誌機"

#: advtrains/signals.lua:127
#: advtrains/signals.lua
msgid "Signal"
msgstr "色燈號誌機"

#: advtrains/signals.lua:191
#: advtrains/signals.lua
msgid "Wallmounted Signal (left)"
msgstr "壁掛式色燈號誌機 (左側)"

#: advtrains/signals.lua:192
#: advtrains/signals.lua
msgid "Wallmounted Signal (right)"
msgstr "壁掛式色燈號誌機 (右側)"

#: advtrains/signals.lua:193
#: advtrains/signals.lua
msgid "Wallmounted Signal (top)"
msgstr "懸掛式色燈號誌機"

#: advtrains/signals.lua:281 advtrains/signals.lua:322
msgid "Andrew's Cross"
msgstr "平交道號誌燈"
#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker."
msgstr "您不能使用鐵路調整工具調整這個方塊。"

#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
msgstr "您不能使用鐵路調整工具旋轉這個方塊。"

#: advtrains/trackplacer.lua
msgid "This track can not be changed."
msgstr "您不能調整這段軌道。"

#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
msgstr "您不能旋轉這段軌道。"

#: advtrains/trackplacer.lua:313
#: advtrains/trackplacer.lua
msgid ""
"Track Worker Tool\n"
"\n"
@@ -245,280 +261,289 @@ msgstr ""
"左鍵單擊:切換軌道型別\n"
"右鍵單擊:旋轉方塊"

#: 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."
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
#: advtrains/tracks.lua
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
#: advtrains/tracks.lua
msgid "Can't place slope: Not enough slope items left (@1 required)."
msgstr "無法放置斜坡:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)"

#: advtrains/tracks.lua:714
#: advtrains/tracks.lua
msgid "Can't place slope: There's no slope of length @1."
msgstr "無法放置斜坡:advtrains 不支援長度為@1米的斜坡。"

#: advtrains/tracks.lua:721
#: advtrains/tracks.lua
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."
#: advtrains/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr "無法放置斜坡:您沒有選擇任何方塊。"

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr "無法放置斜坡:此區域已被佔用。"

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr ""

#: advtrains/wagons.lua:179
msgid "This wagon is owned by @1, you can't destroy it."
msgstr "這是 @1 的車廂,您不能摧毀它。"
#: advtrains/tracks.lua
msgid "There's a Signal Influence Point here."
msgstr ""

#: advtrains/wagons.lua:203
msgid "The wagon's inventory is not empty."
#: advtrains/tracks.lua
msgid "There's a Track Circuit Break here."
msgstr ""

#: advtrains/wagons.lua:210
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr "您不能移除這段軌道。"

#: advtrains/trainhud.lua
msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""

#: advtrains/wagonprop_tool.lua
msgid "Insufficient privileges to use this!"
msgstr ""

#: advtrains/wagons.lua:216
#: advtrains/wagonprop_tool.lua
#, fuzzy
msgid "Wagon Properties Tool"
msgstr "車廂屬性"

#: advtrains/wagonprop_tool.lua
msgid ""
"Warning: If you destroy this wagon, you only get some steel back! If you are "
"sure, hold Sneak and left-click the wagon."
"Wagon Properties Tool\n"
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""
"警告:如果您摧毀此車廂,您只能拿到一些鋼方塊。如果您確定要摧毀這節車廂,請按"
"潛行鍵並左鍵單擊此車廂。"

#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
msgid "Show Inventory"
msgstr "顯示物品欄"
#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr "(車門已關閉)"

#: advtrains/wagons.lua:652
msgid "Onboard Computer"
#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr ""

#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
msgid "Wagon properties"
msgstr "車廂屬性"
#: advtrains/wagons.lua
msgid ""
"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
"off."
msgstr "車門已關閉,請使用潛行+右鍵單擊下車。"

#: advtrains/wagons.lua:658
#: advtrains/wagons.lua
msgid "Get off"
msgstr "下車"

#: advtrains/wagons.lua:661
#: advtrains/wagons.lua
msgid "Get off (forced)"
msgstr "強制下車"

#: advtrains/wagons.lua:663
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
msgid "Line"
msgstr "火車線路"

#: advtrains/wagons.lua:706
msgid "Doors are closed! (Try holding sneak key!)"
#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr ""

#: advtrains/wagons.lua:712
msgid "You can't get on this wagon."
msgstr ""
#: advtrains/wagons.lua
msgid "Routingcode"
msgstr "路由碼"

#: advtrains/wagons.lua
msgid "Save wagon properties"
msgstr "儲存車廂屬性"

#: advtrains/wagons.lua:838
#: advtrains/wagons.lua
msgid "Select seat:"
msgstr "請選擇座位:"

#: advtrains/wagons.lua:880
msgid "Save wagon properties"
msgstr "儲存車廂屬性"
#: advtrains/wagons.lua
msgid "Show Inventory"
msgstr "顯示物品欄"

#: advtrains/wagons.lua
msgid "Text displayed inside train"
msgstr "車廂內部顯示"

#: advtrains/wagons.lua:965
#: advtrains/wagons.lua
msgid "Text displayed outside on train"
msgstr "車廂外部顯示"

#: advtrains/wagons.lua:966
msgid "Text displayed inside train"
msgstr "車廂內部顯示"
#: advtrains/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr ""

#: advtrains/wagons.lua:967
msgid "Line"
msgstr "火車線路"
#: advtrains/wagons.lua
#, fuzzy
msgid "This Wagon ID"
msgstr "車廂已滿。"

#: advtrains/wagons.lua:968
msgid "Routingcode"
msgstr "路由碼"
#: advtrains/wagons.lua
msgid "This wagon has no seats."
msgstr "這節車廂沒有座位。"

#: advtrains/wagons.lua:1241
#: advtrains/wagons.lua
msgid "This wagon is full."
msgstr "車廂已滿。"

#: advtrains/wagons.lua
msgid "This wagon is owned by @1, you can't destroy it."
msgstr "這是 @1 的車廂,您不能摧毀它。"

#: advtrains/wagons.lua
msgid "Train ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon properties"
msgstr "車廂屬性"

#: advtrains/wagons.lua
msgid ""
"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
"off."
msgstr "車門已關閉,請使用潛行+右鍵單擊下車。"
"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/wagons.lua:1250
#: advtrains/wagons.lua
msgid "You are not allowed to access the driver stand."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:13
#: advtrains/wagons.lua
msgid "You can't get on this wagon."
msgstr ""

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""

#: advtrains_interlocking/tsr_rail.lua
msgid "Point Speed Restriction Track"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua
msgid "Point speed restriction: @1"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:14
#: advtrains_interlocking/tsr_rail.lua
msgid "Set point speed restriction:"
msgstr ""

#: advtrains_interlocking/tsr_rail.lua:30
#: advtrains_interlocking/tsr_rail.lua
msgid "You are not allowed to configure this track without the @1 privilege."
msgstr "您沒有「@1」許可權,不能調整這段軌道。"

#: advtrains_interlocking/tsr_rail.lua:34
#: advtrains_line_automation/stoprail.lua:31
#: advtrains_line_automation/stoprail.lua:76
#: advtrains_interlocking/tsr_rail.lua advtrains_line_automation/stoprail.lua
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
msgid "Station Code"
msgstr "車站碼"

#: advtrains_line_automation/stoprail.lua:55
msgid "Station Name"
msgstr "車站名稱"

#: advtrains_line_automation/stoprail.lua:56
msgid "Door Delay"
msgstr "車門關閉時間"

#: advtrains_line_automation/stoprail.lua:57
#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr "出發速度"

#: advtrains_line_automation/stoprail.lua:58 advtrains_train_track/init.lua:11
#: advtrains_train_track/init.lua:156
msgid "Track"
msgstr "軌道"

#: advtrains_line_automation/stoprail.lua:59
msgid "Stop Time"
msgstr "停站時間"
#: advtrains_line_automation/stoprail.lua
msgid "Door Delay"
msgstr "車門關閉時間"

#: advtrains_line_automation/stoprail.lua:60
#: advtrains_line_automation/stoprail.lua
msgid "Door Side"
msgstr ""

#: advtrains_line_automation/stoprail.lua:62
#: advtrains_line_automation/stoprail.lua
msgid "Kick out passengers"
msgstr "踢出乘客"

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr "改變行車方向"

#: advtrains_line_automation/stoprail.lua:63
msgid "Kick out passengers"
msgstr "踢出乘客"
#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr "車站碼"

#: advtrains_line_automation/stoprail.lua:97
msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""
#: advtrains_line_automation/stoprail.lua
msgid "Station Name"
msgstr "車站名稱"

#: advtrains_line_automation/stoprail.lua:111
msgid "This station is owned by @1. You are not allowed to edit its name."
#: advtrains_line_automation/stoprail.lua
msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""

#: advtrains_line_automation/stoprail.lua:221
#: advtrains_line_automation/stoprail.lua
msgid "Station/Stop Track"
msgstr "車站軌道"

#: advtrains_luaautomation/active_common.lua:17
msgid "Unconfigured LuaATC component"
msgstr "LuaATC 元件 (未配置)"
#: advtrains_line_automation/stoprail.lua
msgid "Stop Time"
msgstr "停站時間"

#: advtrains_luaautomation/active_common.lua:46
msgid "LuaATC Environment"
#: advtrains_line_automation/stoprail.lua
msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""

#: advtrains_luaautomation/active_common.lua:49
#: advtrains_line_automation/stoprail.lua advtrains_train_track/init.lua
msgid "Track"
msgstr "軌道"

#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:50
#: advtrains_luaautomation/active_common.lua
msgid "Code"
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_luaautomation/active_common.lua:94
msgid "LuaATC component assigned to environment '@1'"
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC Environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:96
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to an invalid environment"
msgstr ""

#: advtrains_luaautomation/active_common.lua:171
#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component assigned to environment '@1'"
msgstr ""

#: advtrains_luaautomation/active_common.lua
msgid "LuaATC component with error: @1"
msgstr ""

#: advtrains_luaautomation/init.lua:13
#: advtrains_luaautomation/active_common.lua
msgid "Unconfigured LuaATC component"
msgstr "LuaATC 元件 (未配置)"

#: advtrains_luaautomation/active_common.lua
msgid ""
"You are not allowed to configure this LuaATC component without the @1 "
"privilege."
msgstr "您沒有「@1」許可權,不能配置這個 LuaATC 元件。"

#: advtrains_luaautomation/init.lua
msgid ""
"Can place and configure LuaATC components, including execute potentially "
"harmful Lua code"
msgstr ""

#: advtrains_luaautomation/mesecon_controller.lua:211
#: advtrains_luaautomation/mesecon_controller.lua
msgid "LuaATC Mesecon Controller"
msgstr ""

#: advtrains_luaautomation/operation_panel.lua:11
#: advtrains_luaautomation/operation_panel.lua
msgid "LuaATC Operation Panel"
msgstr ""

#: advtrains_luaautomation/pcnaming.lua:28
#: advtrains_luaautomation/pcnaming.lua
msgid ""
"Passive Component Naming Tool\n"
"\n"
@@ -528,119 +553,115 @@ msgstr ""
"\n"
"右鍵單擊命名所選元件。"

#: advtrains_luaautomation/pcnaming.lua:39
#: advtrains_luaautomation/pcnaming.lua
msgid "Set name of component (empty to clear)"
msgstr ""

#: advtrains_luaautomation/pcnaming.lua
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
#: advtrains_train_steam/init.lua:91
msgid "Driver Stand (right)"
msgstr "右側司機座位"
#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr "大型工業用火車頭"

#: advtrains_train_industrial/init.lua:17
#: advtrains_train_industrial/init.lua:56 advtrains_train_steam/init.lua:14
#: advtrains_train_steam/init.lua:85
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr "左側司機座位"

#: advtrains_train_industrial/init.lua:40
#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (right)"
msgstr "右側司機座位"

#: advtrains_train_industrial/init.lua
msgid "Industrial Train Engine"
msgstr "工業用火車頭"

#: advtrains_train_industrial/init.lua:79
msgid "Big Industrial Train Engine"
msgstr "大型工業用火車頭"

#: advtrains_train_industrial/init.lua:98
#: advtrains_train_industrial/init.lua
msgid "Industrial tank wagon"
msgstr "液體運輸車廂"

#: advtrains_train_industrial/init.lua:116
#: advtrains_train_industrial/init.lua
msgid "Industrial wood wagon"
msgstr "木材運輸車廂"

#: advtrains_train_japan/init.lua:4
msgid "Japanese Train Inter-Wagon Connection"
msgstr "日本火車連結器"

#: advtrains_train_japan/init.lua:37
#: advtrains_train_japan/init.lua
msgid "Driver stand"
msgstr "司機座位"

#: advtrains_train_japan/init.lua:101
#: advtrains_train_japan/init.lua
msgid "Japanese Train Engine"
msgstr "高速列車車頭"

#: advtrains_train_japan/init.lua:176
#: advtrains_train_japan/init.lua
msgid "Japanese Train Inter-Wagon Connection"
msgstr "日本火車連結器"

#: advtrains_train_japan/init.lua
msgid "Japanese Train Wagon"
msgstr "高速列車車廂"

#: advtrains_train_steam/init.lua:75
msgid "Steam Engine"
msgstr "蒸汽機車"
#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr "貨運車廂"

#: advtrains_train_steam/init.lua:159
#: advtrains_train_steam/init.lua
msgid "Detailed Steam Engine"
msgstr "精細的蒸汽機車"

#: advtrains_train_steam/init.lua:206
#: advtrains_train_steam/init.lua
msgid "Passenger Wagon"
msgstr "客車"

#: advtrains_train_steam/init.lua:226
msgid "Box Wagon"
msgstr "貨運車廂"
#: advtrains_train_steam/init.lua
msgid "Steam Engine"
msgstr "蒸汽機車"

#: advtrains_train_subway/init.lua:144
#: advtrains_train_subway/init.lua
msgid "Subway Passenger Wagon"
msgstr "地鐵車廂"

#: advtrains_train_track/init.lua:31
msgid "Y-turnout"
msgstr "對稱道岔"

#: advtrains_train_track/init.lua:49
#: advtrains_train_track/init.lua
msgid "3-way turnout"
msgstr "三開道岔"

#: advtrains_train_track/init.lua:69
msgid "Perpendicular Diamond Crossing Track"
msgstr "垂直交叉軌道"

#: advtrains_train_track/init.lua:91
#: advtrains_train_track/init.lua
msgid "90+Angle Diamond Crossing Track"
msgstr "交叉軌道 (其中一條軌道與座標軸平行)"

#: advtrains_train_track/init.lua:132
msgid "Diagonal Diamond Crossing Track"
msgstr "交叉軌道"
#: advtrains_train_track/init.lua
msgid "ATC controller"
msgstr "ATC 控制器"

#: advtrains_train_track/init.lua:179
#: advtrains_train_track/init.lua
msgid "Bumper"
msgstr "保險槓"

#: advtrains_train_track/init.lua:201
msgid "ATC controller"
msgstr "ATC 控制器"
#: advtrains_train_track/init.lua
msgid "Detector Rail"
msgstr "探測軌道"

#: advtrains_train_track/init.lua:317
msgid "Unloading Track"
msgstr "卸貨軌道"
#: advtrains_train_track/init.lua
msgid "Diagonal Diamond Crossing Track"
msgstr "交叉軌道"

#: advtrains_train_track/init.lua:342
#: advtrains_train_track/init.lua
msgid "Loading Track"
msgstr "裝貨軌道"

#: advtrains_train_track/init.lua:406
msgid "Detector Rail"
msgstr "探測軌道"
#: advtrains_train_track/init.lua
msgid "Perpendicular Diamond Crossing Track"
msgstr "垂直交叉軌道"

#: advtrains_train_track/init.lua
msgid "Unloading Track"
msgstr "卸貨軌道"

#: advtrains_train_track/init.lua
msgid "Y-turnout"
msgstr "對稱道岔"

#~ msgid ""
#~ "ATC controller, mode @1\n"
-- 
2.30.2
Include update-translations.sh modification to remove file line numbers.

# Second patch of a serie of three to be applied to the master branch of 
advtrains on commit #0b7fdc6
#
# ATTENTION : #
# 1. These patches come from a derivation of the l10n branch which, 
afaik, is not yet merged in the master branch.
# I guess that applying these patches will shortcut the l10n branch.
# 2. These patches contain translations strings of for the modification 
I proposed some month ago for basic_trains which,
# afaik, are not yet merged in its master branch.



---
  advtrains/po/advtrains.pot          | 14 ++++++++++++--
  advtrains/po/de.po                  | 16 ++++++++++++++--
  advtrains/po/fr.po                  | 28 +++++++++++++++++++---------
  advtrains/po/update-translations.sh |  1 +
  advtrains/po/zh_CN.po               | 16 ++++++++++++++--
  advtrains/po/zh_TW.po               | 16 ++++++++++++++--
  6 files changed, 74 insertions(+), 17 deletions(-)

diff --git a/advtrains/po/advtrains.pot b/advtrains/po/advtrains.pot
index ae7fb32..ade6a33 100644
--- a/advtrains/po/advtrains.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: 2024-12-06 21:17+0100\n"
+"POT-Creation-Date: 2024-12-08 15:21+0100\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"
@@ -558,6 +558,11 @@ msgstr ""
  msgid "Driver Stand (left)"
  msgstr ""
  +#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
+#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
+msgid "Driver Stand"
+msgstr ""
+
  #: advtrains_train_industrial/init.lua
  msgid "Industrial Train Engine"
  msgstr ""
@@ -578,10 +583,15 @@ msgstr ""
  msgid "Japanese Train Inter-Wagon Connection"
  msgstr ""
  -#: advtrains_train_japan/init.lua
+#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
  msgid "Driver stand"
  msgstr ""
  +#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
+#: advtrains_train_subway/init.lua
+msgid "Passenger area"
+msgstr ""
+
  #: advtrains_train_japan/init.lua
  msgid "Japanese Train Engine"
  msgstr ""
diff --git a/advtrains/po/de.po b/advtrains/po/de.po
index 2d43078..8a7e009 100644
--- a/advtrains/po/de.po
+++ b/advtrains/po/de.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: 2024-12-06 21:17+0100\n"
+"POT-Creation-Date: 2024-12-08 15:21+0100\n"
  "PO-Revision-Date: 2023-10-09 11:18+0200\n"
  "Last-Translator: Y. Wang <yw05@forksworld.de>\n"
  "Language-Team: German\n"
@@ -595,6 +595,12 @@ msgstr "Sie dürfen ohne das „@1“ keinen passiven 
LuaATC-Bauteil benennen."
  msgid "Big Industrial Train Engine"
  msgstr "Große Industrielle Lokomotive"
  +#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
+#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
+#, fuzzy
+msgid "Driver Stand"
+msgstr "Führerstand"
+
  #: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
  msgid "Driver Stand (left)"
  msgstr "Führerstand Links"
@@ -615,7 +621,7 @@ msgstr "Tankwaggon"
  msgid "Industrial wood wagon"
  msgstr "Holztransportwaggon"
  -#: advtrains_train_japan/init.lua
+#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
  msgid "Driver stand"
  msgstr "Führerstand"
  @@ -631,6 +637,12 @@ msgstr "Waggonzwischenverbindung Japanischer 
Personenzüge"
  msgid "Japanese Train Wagon"
  msgstr "Japanischer Personenzug-Passagierwaggon"
  +#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
+#: advtrains_train_subway/init.lua
+#, fuzzy
+msgid "Passenger area"
+msgstr "Passagierwaggon"
+
  #: advtrains_train_steam/init.lua
  msgid "Box Wagon"
  msgstr "Güterwaggon"
diff --git a/advtrains/po/fr.po b/advtrains/po/fr.po
index 6404583..3c8f5f6 100644
--- a/advtrains/po/fr.po
+++ b/advtrains/po/fr.po
@@ -2,8 +2,8 @@ msgid ""
  msgstr ""
  "Project-Id-Version: advtrains\n"
  "Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
-"POT-Creation-Date: 2024-12-06 21:17+0100\n"
-"PO-Revision-Date: 2024-11-02 21:31+0100\n"
+"POT-Creation-Date: 2024-12-08 15:21+0100\n"
+"PO-Revision-Date: 2024-12-04 15:55+0100\n"
  "Last-Translator: Tanavit <tanavit@posto.ovh>\n"
  "Language-Team: French\n"
  "Language: fr\n"
@@ -327,18 +327,19 @@ msgstr ""
   #: advtrains/wagonprop_tool.lua
  msgid "Insufficient privileges to use this!"
-msgstr ""
+msgstr "Privilèges insuffisants pour utiliser ceci !"
   #: advtrains/wagonprop_tool.lua
-#, fuzzy
  msgid "Wagon Properties Tool"
-msgstr "Propriétés du wagon"
+msgstr "Outil de propriété du wagon"
   #: advtrains/wagonprop_tool.lua
  msgid ""
  "Wagon Properties Tool\n"
  "Punch a wagon to view and edit the Wagon Properties"
  msgstr ""
+"Outil de propriété du wagon\n"
+"Frappez un wagon pour voir et modifier ses propriétés"
   #: advtrains/wagons.lua
  msgid "(Doors closed)"
@@ -401,9 +402,8 @@ msgid "The wagon's inventory is not empty."
  msgstr "Le stock de ce wagon n'est pas vide."
   #: advtrains/wagons.lua
-#, fuzzy
  msgid "This Wagon ID"
-msgstr "Ce wagon est plein."
+msgstr "Identificateur du wagon"
   #: advtrains/wagons.lua
  msgid "This wagon has no seats."
@@ -419,7 +419,7 @@ msgstr "Ce wagon est la propriété de @1, vous ne 
pouvez pas le détruire."
   #: advtrains/wagons.lua
  msgid "Train ID"
-msgstr ""
+msgstr "Identificateur du train"
   #: advtrains/wagons.lua
  msgid "Wagon needs to be decoupled from other wagons in order to 
destroy it."
@@ -595,6 +595,11 @@ msgstr "Vous ne pouvez nommer un composant LuaATC 
passif sans le privilege @1."
  msgid "Big Industrial Train Engine"
  msgstr "Grosse locomotive industrielle"
  +#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
+#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
+msgid "Driver Stand"
+msgstr "Poste de pilotage"
+
  #: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
  msgid "Driver Stand (left)"
  msgstr "Poste de pilotage (gauche)"
@@ -615,7 +620,7 @@ msgstr "Wagon-citerne industriel"
  msgid "Industrial wood wagon"
  msgstr "Wagon grumier industriel"
  -#: advtrains_train_japan/init.lua
+#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
  msgid "Driver stand"
  msgstr "Poste de pilotage"
  @@ -631,6 +636,11 @@ msgstr "Passage inter-voiture de train Japonais"
  msgid "Japanese Train Wagon"
  msgstr "Voiture Japonaise"
  +#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
+#: advtrains_train_subway/init.lua
+msgid "Passenger area"
+msgstr "Voiture Passager"
+
  #: advtrains_train_steam/init.lua
  msgid "Box Wagon"
  msgstr "Wagon de frêt"
diff --git a/advtrains/po/update-translations.sh 
b/advtrains/po/update-translations.sh
index 4c22c85..1b919d9 100755
--- a/advtrains/po/update-translations.sh
+++ b/advtrains/po/update-translations.sh
@@ -7,6 +7,7 @@ BTDIR="$ATDIR/../basic_trains"
  POTFILE="$PODIR/advtrains.pot"
   xgettext \
+	-v -v -v \
  	-D "$ATDIR" \
  	-D "$BTDIR" \
  	-d advtrains \
diff --git a/advtrains/po/zh_CN.po b/advtrains/po/zh_CN.po
index 9f5f84f..1dbf08f 100644
--- a/advtrains/po/zh_CN.po
+++ b/advtrains/po/zh_CN.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: 2024-12-06 21:17+0100\n"
+"POT-Creation-Date: 2024-12-08 15:21+0100\n"
  "PO-Revision-Date: 2023-10-09 11:24+0200\n"
  "Last-Translator: Y. Wang <yw05@forksworld.de>\n"
  "Language-Team: Chinese (Simplified)\n"
@@ -567,6 +567,12 @@ msgstr "您没有“@1”权限,不能命名被动元件。"
  msgid "Big Industrial Train Engine"
  msgstr "大型工业用火车头"
  +#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
+#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
+#, fuzzy
+msgid "Driver Stand"
+msgstr "司机座位"
+
  #: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
  msgid "Driver Stand (left)"
  msgstr "左侧司机座位"
@@ -587,7 +593,7 @@ msgstr "液体运输车厢"
  msgid "Industrial wood wagon"
  msgstr "木材运输车厢"
  -#: advtrains_train_japan/init.lua
+#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
  msgid "Driver stand"
  msgstr "司机座位"
  @@ -603,6 +609,12 @@ msgstr "日本火车车钩"
  msgid "Japanese Train Wagon"
  msgstr "高速列车车厢"
  +#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
+#: advtrains_train_subway/init.lua
+#, fuzzy
+msgid "Passenger area"
+msgstr "客车"
+
  #: advtrains_train_steam/init.lua
  msgid "Box Wagon"
  msgstr "货运车厢"
diff --git a/advtrains/po/zh_TW.po b/advtrains/po/zh_TW.po
index 97dab1b..56b6531 100644
--- a/advtrains/po/zh_TW.po
+++ b/advtrains/po/zh_TW.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: 2024-12-06 21:17+0100\n"
+"POT-Creation-Date: 2024-12-08 15:21+0100\n"
  "PO-Revision-Date: 2023-10-09 11:31+0200\n"
  "Last-Translator: Y. Wang <yw05@forksworld.de>\n"
  "Language-Team: Chinese (Traditional)\n"
@@ -567,6 +567,12 @@ msgstr "您沒有「@1」許可權,不能命名這個元件。"
  msgid "Big Industrial Train Engine"
  msgstr "大型工業用火車頭"
  +#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
+#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
+#, fuzzy
+msgid "Driver Stand"
+msgstr "司機座位"
+
  #: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
  msgid "Driver Stand (left)"
  msgstr "左側司機座位"
@@ -587,7 +593,7 @@ msgstr "液體運輸車廂"
  msgid "Industrial wood wagon"
  msgstr "木材運輸車廂"
  -#: advtrains_train_japan/init.lua
+#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
  msgid "Driver stand"
  msgstr "司機座位"
  @@ -603,6 +609,12 @@ msgstr "日本火車連結器"
  msgid "Japanese Train Wagon"
  msgstr "高速列車車廂"
  +#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
+#: advtrains_train_subway/init.lua
+#, fuzzy
+msgid "Passenger area"
+msgstr "客車"
+
  #: advtrains_train_steam/init.lua
  msgid "Box Wagon"
  msgstr "貨運車廂
File :
- advtrains : init.lua wagons.lua
- advtrains_line_automation : scheduler.lua stoprail.lua

Actions :

- Conversion of attrans() to S()
- Insertion of S() function calls where needed.

Miscellaneous :
- Removing of personnal tries on update-translastions.sh which should
not have been committed.

# Third and last patch of a serie of three to be applied to the master 
branch of advtrains on commit #0b7fdc6
#
# ATTENTION : #
# 1. These patches come from a derivation of the l10n branch which, 
afaik, is not yet merged in the master branch.
# I guess that applying these patches will shortcut the l10n branch.
# 2. These patches contain translations strings of for the modification 
I proposed some month ago for basic_trains which,
# afaik, are not yet merged in its master branch.




---
  advtrains/init.lua                      |  50 +--
  advtrains/po/advtrains.pot              | 366 +++++++++++++++++++--
  advtrains/po/de.po                      | 400 ++++++++++++++++++++---
  advtrains/po/fr.po                      | 413 +++++++++++++++++++++---
  advtrains/po/update-translations.sh     |   1 -
  advtrains/po/zh_CN.po                   | 388 +++++++++++++++++++---
  advtrains/po/zh_TW.po                   | 388 +++++++++++++++++++---
  advtrains/wagons.lua                    | 121 +++----
  advtrains_line_automation/scheduler.lua |   2 +-
  advtrains_line_automation/stoprail.lua  |  44 +--
  10 files changed, 1870 insertions(+), 303 deletions(-)

diff --git a/advtrains/init.lua b/advtrains/init.lua
index 0d76ec0..91b2b58 100644
--- a/advtrains/init.lua
+++ b/advtrains/init.lua
@@ -73,7 +73,7 @@ end
  local no_action=false
   local function reload_saves()
-	atwarn("Restoring saved state in 1 second...")
+	atwarn(S("Restoring saved state in 1 second..."))
  	no_action=true
  	advtrains.lock_path_inval = false
  	--read last save state and continue, as if server was restarted
@@ -84,7 +84,7 @@ local function reload_saves()
  	end
  	minetest.after(1, function()
  		advtrains.load()
-		atwarn("Reload successful!")
+		atwarn(S("Reload successful!"))
  		advtrains.ndb.restore_all()
  	end)
  end
@@ -349,7 +349,7 @@ function advtrains.avt_load()
  				end
  			end
  			for wid, _ in pairs(todel) do
-				atwarn("Removing unused wagon", wid, "from wagon_save table.")
+				atwarn(S("Removing unused wagon"), wid, S("from wagon_save table."))
  				advtrains.wagon_save[wid]=nil
  			end
  		else
@@ -414,7 +414,7 @@ function advtrains.load_version_4()
  			end
  		end
  		for wid, _ in pairs(todel) do
-			atwarn("Removing unused wagon", wid, "from wagon_save table.")
+			atwarn(S("Removing unused wagon"), wid, S("from wagon_save table."))
  			advtrains.wagon_save[wid]=nil
  		end
  	end
@@ -502,7 +502,7 @@ advtrains.avt_save = 
function(remove_players_from_wagons)
  			--then save it
  			tmp_trains[id]=v
  		else
-			atwarn("Train",id,"had no wagons left because of some bug. It is 
being deleted. Wave it goodbye!")
+			atwarn(S("Train"),id,S("had no wagons left because of some bug. It 
is being deleted. Wave it goodbye!"))
  			advtrains.remove_train(id)
  		end
  	end
@@ -583,7 +583,7 @@ advtrains.avt_save = 
function(remove_players_from_wagons)
  	local succ, err = serialize_lib.save_atomic_multiple(parts_table, 
advtrains.fpath.."_", callbacks_table)
  	
  	if not succ then
-		atwarn("Saving failed: "..err)
+		atwarn(S("Saving failed: ")..err)
  	else
  		-- store version
  		advtrains.save_component(4, "version")
@@ -686,7 +686,7 @@ end
  function advtrains.save(remove_players_from_wagons)
  	if not init_load then
  		--wait... we haven't loaded yet?!
-		atwarn("Instructed to save() but load() was never called!")
+		atwarn(S("Instructed to save() but load() was never called!"))
  		return
  	end
  	
@@ -715,7 +715,7 @@ function advtrains.save(remove_players_from_wagons)
  end
  minetest.register_on_shutdown(function()
  	if within_mainstep then
-		atwarn("Crash during advtrains main step - skipping the shutdown save 
operation to not save inconsistent data!")
+		atwarn(S("Crash during advtrains main step - skipping the shutdown 
save operation to not save inconsistent data!"))
  	else
  		advtrains.save()
  	end
@@ -727,10 +727,10 @@ end)
  minetest.register_chatcommand("at_empty_seats",
  	{
          params = "", -- Short parameter description
-        description = "Detach all players, especially the offline ones, 
from all trains. Use only when no one serious is on a train.", -- Full 
description
+        description = S("Detach all players, especially the offline 
ones, from all trains. Use only when no one serious is on a train."), -- 
Full description
          privs = {train_operator=true, server=true}, -- Require the 
"privs" privilege to run
          func = function(name, param)
-				atwarn("Data is being saved. While saving, advtrains will remove 
the players from trains. Save files will be reloaded afterwards!")
+				atwarn(S("Data is being saved. While saving, advtrains will remove 
the players from trains. Save files will be reloaded afterwards!"))
  				advtrains.save(true)
  				reload_saves()
          end,
@@ -739,60 +739,60 @@ minetest.register_chatcommand("at_empty_seats",
  minetest.register_chatcommand("at_reroute",
  	{
          params = "", -        description = "Delete all train routes, 
force them to recalculate", +        description = S("Delete all train 
routes, force them to recalculate"),          privs = 
{train_operator=true}, -- Only train operator is required, since this is 
relatively safe.
          func = function(name, param)
  				advtrains.invalidate_all_paths()
-				return true, "Successfully invalidated train routes"
+				return true, S("Successfully invalidated train routes")
          end,
  })
   minetest.register_chatcommand("at_whereis",
  	{
  		params = "<train id>",
-		description = "Returns the position of the train with the given id",
+		description = S("Returns the position of the train with the given id"),
  		privs = {train_operator = true},
  		func = function(name,param)
  			local train = advtrains.trains[param]  			if not train or not 
train.last_pos then
-				return false, "Train "..param.." does not exist or is invalid"
+				return false, S("Train ")..param..S(" does not exist or is invalid")
  			else
-				return true, "Train "..param.." is at 
"..minetest.pos_to_string(train.last_pos)
+				return true, S("Train ")..param..S(" is at 
")..minetest.pos_to_string(train.last_pos)
  			end
  		end,
  })
  minetest.register_chatcommand("at_tp",
  	{
  		params = "<train id>",
-		description = "Teleports you to the position of the train with the 
given id",
+		description = S("Teleports you to the position of the train with the 
given id"),
  		privs = {train_operator = true, teleport = true},
  		func = function(name,param)
  			local train = advtrains.trains[param]
  			if not train or not train.last_pos then
-				return false, "Train "..param.." does not exist or is invalid"
+				return false, S("Train ")..param..S(" does not exist or is invalid")
  			else
  				minetest.get_player_by_name(name):set_pos(train.last_pos)
-				return true, "Teleporting to train "..param
+				return true, S("Teleporting to train ")..param
  			end
  		end,
  })
  minetest.register_chatcommand("at_disable_step",
  	{
          params = "<yes/no>", -        description = "Disable the 
advtrains globalstep temporarily", +        description = S("Disable the 
advtrains globalstep temporarily"),          privs = {server=true},
          func = function(name, param)
  			if minetest.is_yes(param) then
  				-- disable everything, and turn off saving
  				no_action = true;
-				atwarn("The advtrains globalstep has been disabled. Trains are not 
moving, and no data is saved! Run '/at_disable_step no' to enable again!")
-				return true, "Disabled advtrains successfully"
+				atwarn(S("The advtrains globalstep has been disabled. Trains are 
not moving, and no data is saved! Run '/at_disable_step no' to enable 
again!"))
+				return true, S("Disabled advtrains successfully")
  			elseif no_action then
-				atwarn("Re-enabling advtrains globalstep...")
+				atwarn(S("Re-enabling advtrains globalstep..."))
  				reload_saves()
  				return true
  			else
-				return false, "Advtrains is already running normally!"
+				return false, S("Advtrains is already running normally!")
  			end
          end,
  })
@@ -800,10 +800,10 @@ minetest.register_chatcommand("at_disable_step",
  minetest.register_chatcommand("at_status",
  	{
          params = "", -        description = "Print advtrains status 
info", +        description = S("Print advtrains status info"), 
privs = {train_operator = true},
          func = function(name, param)
-			return true, advtrains.print_concat_table({"Advtrains Status: 
no_action",no_action,"slowdown",advtrains.global_slowdown,"(log",math.log(advtrains.global_slowdown),")"})
+			return true, advtrains.print_concat_table({S("Advtrains Status: 
no_action"),no_action,S("slowdown"),advtrains.global_slowdown,S("(log"),math.log(advtrains.global_slowdown),")"})
          end,
  })
  diff --git a/advtrains/po/advtrains.pot b/advtrains/po/advtrains.pot
index ade6a33..cd6ea75 100644
--- a/advtrains/po/advtrains.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: 2024-12-08 15:21+0100\n"
+"POT-Creation-Date: 2025-03-25 15:40+0100\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"
@@ -39,7 +39,8 @@ msgstr ""
  msgid "Digiline channel"
  msgstr ""
  -#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
+#: advtrains/atc.lua advtrains/wagons.lua
+#: advtrains_line_automation/stoprail.lua
  #: advtrains_luaautomation/active_common.lua
  msgid "Save"
  msgstr ""
@@ -149,6 +150,127 @@ msgstr ""
  msgid "Chimney"
  msgstr ""
  +#: advtrains/init.lua
+msgid "Restoring saved state in 1 second..."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Reload successful!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Removing unused wagon"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "from wagon_save table."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Train"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"had no wagons left because of some bug. It is being deleted. Wave it 
goodbye!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Saving failed: "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Instructed to save() but load() was never called!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Crash during advtrains main step - skipping the shutdown save 
operation to "
+"not save inconsistent data!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Detach all players, especially the offline ones, from all trains. Use 
only "
+"when no one serious is on a train."
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Data is being saved. While saving, advtrains will remove the players 
from "
+"trains. Save files will be reloaded afterwards!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Delete all train routes, force them to recalculate"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Successfully invalidated train routes"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Returns the position of the train with the given id"
+msgstr ""
+
+#: advtrains/init.lua
+msgid " does not exist or is invalid"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Train "
+msgstr ""
+
+#: advtrains/init.lua
+msgid " is at "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Teleports you to the position of the train with the given id"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Teleporting to train "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Disable the advtrains globalstep temporarily"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"The advtrains globalstep has been disabled. Trains are not moving, and 
no "
+"data is saved! Run '/at_disable_step no' to enable again!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Disabled advtrains successfully"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Re-enabling advtrains globalstep..."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Advtrains is already running normally!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Print advtrains status info"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "(log"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Advtrains Status: no_action"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "slowdown"
+msgstr ""
+
  #: advtrains/misc_nodes.lua
  msgid "@1 Platform (low)"
  msgstr ""
@@ -231,68 +353,64 @@ msgstr ""
  msgid "Andrew's Cross"
  msgstr ""
  -#: advtrains/trackplacer.lua
-msgid ""
-"Track Worker Tool\n"
-"\n"
-"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate object"
-msgstr ""
-
-#: advtrains/trackplacer.lua
-msgid "This node can't be rotated using the trackworker."
+#: advtrains/track_reg_helper.lua advtrains/tracks.lua
+msgid "This track can not be removed!"
  msgstr ""
  -#: advtrains/trackplacer.lua
-msgid "This track can not be rotated."
+#: advtrains/track_reg_helper.lua
+msgid "@1 Slope"
  msgstr ""
  -#: advtrains/trackplacer.lua
-msgid "This node can't be changed using the trackworker."
+#: advtrains/track_reg_helper.lua
+msgid "Can't place: not pointing at node"
  msgstr ""
  -#: advtrains/trackplacer.lua
-msgid "This track can not be changed."
+#: advtrains/track_reg_helper.lua
+msgid "Can't place: space occupied!"
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "This track can not be removed."
+#: advtrains/track_reg_helper.lua
+msgid "Can't place: Not enough slope items left (@1 required)"
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "Position is occupied by a train."
+#: advtrains/track_reg_helper.lua
+msgid "Can't place: There's no slope of length @1"
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "There's a Track Circuit Break here."
+#: advtrains/track_reg_helper.lua
+msgid "Can't place: no supporting node at upper end."
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "There's a Signal Influence Point here."
+#: advtrains/trackplacer.lua
+msgid ""
+"Track Worker Tool\n"
+"\n"
+"Left-click: change rail type (straight/curve/switch)\n"
+"Right-click: rotate object"
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "@1 Slope"
+#: advtrains/trackplacer.lua
+msgid "This node can't be rotated using the trackworker!"
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "Can't place slope: not pointing at node."
+#: advtrains/trackplacer.lua
+msgid "This track can not be rotated!"
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "Can't place slope: space occupied."
+#: advtrains/trackplacer.lua
+msgid "This node can't be changed using the trackworker!"
  msgstr ""
   #: advtrains/tracks.lua
-msgid "Can't place slope: Not enough slope items left (@1 required)."
+msgid "Position is occupied by a train."
  msgstr ""
   #: advtrains/tracks.lua
-msgid "Can't place slope: There's no slope of length @1."
+msgid "There's a Track Circuit Break here."
  msgstr ""
   #: advtrains/tracks.lua
-msgid "Can't place slope: no supporting node at upper end."
+msgid "There's a Signal Influence Point here."
  msgstr ""
   #: advtrains/trainhud.lua
@@ -313,10 +431,24 @@ msgstr ""
  msgid "Insufficient privileges to use this!"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Uninitialized init="
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Uninitialized, removing"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "This wagon is owned by @1, you can't destroy it."
  msgstr ""
  +#: advtrains/wagons.lua
+msgid ""
+"Destroying wagon with inventory, but inventory is not found? Shouldn't "
+"happen!"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "The wagon's inventory is not empty."
  msgstr ""
@@ -331,6 +463,26 @@ msgid ""
  "sure, hold Sneak and left-click the wagon."
  msgstr ""
  +#: advtrains/wagons.lua
+msgid " wagon:destroy(): data is not set!"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "!!! Train off track !!!"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid " units"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Liquid: "
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Liquid: empty"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Show Inventory"
  msgstr ""
@@ -379,6 +531,30 @@ msgstr ""
  msgid "This Wagon ID"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Allow these players to access your wagon:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Wagon road number:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Freight Code:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Prev FC"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Current FC: "
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Next FC:"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Save wagon properties"
  msgstr ""
@@ -403,6 +579,22 @@ msgstr ""
  msgid "Routingcode"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Train overview /coupling control:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Train overview / coupling control is only shown when the train 
stands."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Remote Routesetting"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Clear 'Disable ARS' flag"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid ""
  "Doors are closed. Use Sneak+rightclick to ignore the closed doors and 
get "
@@ -413,6 +605,46 @@ msgstr ""
  msgid "You are not allowed to access the driver stand."
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Missing train_operator privilege"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Not allowed to do this."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "You don't have the train_operator privilege."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "The track you are trying to place the wagon on is not long enough!"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Please specify a player name to transfer ownership to."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "That player does not exist!"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Not a valid wagon id."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "That wagon does not exist!"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "You have been given ownership of wagon @1"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Wagon @1 ownership changed from @2 to @3"
+msgstr ""
+
  #: advtrains_interlocking/routesetting.lua
  msgid "Route state changed."
  msgstr ""
@@ -437,6 +669,10 @@ msgstr ""
  msgid "Point Speed Restriction Track"
  msgstr ""
  +#: advtrains_line_automation/scheduler.lua
+msgid "No callback to handle schedule"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Station Code"
  msgstr ""
@@ -465,6 +701,18 @@ msgstr ""
  msgid "Door Side"
  msgstr ""
  +#: advtrains_line_automation/stoprail.lua
+msgid "Closed"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Left"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Right"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Reverse train"
  msgstr ""
@@ -473,6 +721,14 @@ msgstr ""
  msgid "Kick out passengers"
  msgstr ""
  +#: advtrains_line_automation/stoprail.lua
+msgid "Wait for signal to clear"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Trains stopping here (ARS rules)"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Station code \"@1\" already exists and is owned by @2."
  msgstr ""
@@ -481,6 +737,14 @@ msgstr ""
  msgid "This station is owned by @1. You are not allowed to edit its name."
  msgstr ""
  +#: advtrains_line_automation/stoprail.lua
+msgid "Unknown Station"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Next Stop:\n"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Station/Stop Track"
  msgstr ""
@@ -550,6 +814,38 @@ msgstr ""
  msgid "Set name of component (empty to clear)"
  msgstr ""
  +#: advtrains_signals_japan/init.lua
+msgid "Japanese signal pole"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Clear (proceed)"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Reduced speed"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Caution"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Restricted speed"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Danger (halt)"
+msgstr ""
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Distant Signal ("
+msgstr ""
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Main Signal ("
+msgstr ""
+
  #: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
  msgid "Driver Stand (right)"
  msgstr ""
diff --git a/advtrains/po/de.po b/advtrains/po/de.po
index 8a7e009..458e701 100644
--- a/advtrains/po/de.po
+++ b/advtrains/po/de.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: 2024-12-08 15:21+0100\n"
+"POT-Creation-Date: 2025-03-25 15:40+0100\n"
  "PO-Revision-Date: 2023-10-09 11:18+0200\n"
  "Last-Translator: Y. Wang <yw05@forksworld.de>\n"
  "Language-Team: German\n"
@@ -58,7 +58,8 @@ msgstr "Befehl (wenn aktiviert)"
  msgid "Digiline channel"
  msgstr "Digiline-Kanal"
  -#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
+#: advtrains/atc.lua advtrains/wagons.lua
+#: advtrains_line_automation/stoprail.lua
  #: advtrains_luaautomation/active_common.lua
  msgid "Save"
  msgstr "Speichern"
@@ -162,6 +163,128 @@ msgstr "Führerstand"
  msgid "Wheel"
  msgstr ""
  +#: advtrains/init.lua
+msgid " does not exist or is invalid"
+msgstr ""
+
+#: advtrains/init.lua
+msgid " is at "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "(log"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Advtrains Status: no_action"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Advtrains is already running normally!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Crash during advtrains main step - skipping the shutdown save 
operation to "
+"not save inconsistent data!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Data is being saved. While saving, advtrains will remove the players 
from "
+"trains. Save files will be reloaded afterwards!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Delete all train routes, force them to recalculate"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Detach all players, especially the offline ones, from all trains. Use 
only "
+"when no one serious is on a train."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Disable the advtrains globalstep temporarily"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Disabled advtrains successfully"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Instructed to save() but load() was never called!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Print advtrains status info"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Re-enabling advtrains globalstep..."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Reload successful!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Removing unused wagon"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Restoring saved state in 1 second..."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Returns the position of the train with the given id"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Saving failed: "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Successfully invalidated train routes"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Teleporting to train "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Teleports you to the position of the train with the given id"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"The advtrains globalstep has been disabled. Trains are not moving, and 
no "
+"data is saved! Run '/at_disable_step no' to enable again!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Train"
+msgstr ""
+
+#: advtrains/init.lua
+#, fuzzy
+msgid "Train "
+msgstr "Der Zug wurde Kopiert."
+
+#: advtrains/init.lua
+msgid "from wagon_save table."
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"had no wagons left because of some bug. It is being deleted. Wave it 
goodbye!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "slowdown"
+msgstr ""
+
  #: advtrains/misc_nodes.lua
  msgid "@1 Platform (45 degree)"
  msgstr "Hoher @1-Bahnsteig (45°)"
@@ -247,20 +370,59 @@ msgstr "An der rechten Seite montiertes Signal"
  msgid "Wallmounted Signal (top)"
  msgstr "An der Decke montiertes Signal"
  +#: advtrains/track_reg_helper.lua
+msgid "@1 Slope"
+msgstr "@1 Steigung"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+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/track_reg_helper.lua
+#, fuzzy
+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/track_reg_helper.lua
+#, fuzzy
+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/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: not pointing at node"
+msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block."
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: space occupied!"
+msgstr "Es kann nicht platziert werden: Diese Position ist besetzt."
+
+#: advtrains/track_reg_helper.lua advtrains/tracks.lua
+#, fuzzy
+msgid "This track can not be removed!"
+msgstr "Dieses Gleis kann nicht entfernt werden."
+
  #: advtrains/trackplacer.lua
-msgid "This node can't be changed using the trackworker."
+#, fuzzy
+msgid "This node can't be changed using the trackworker!"
  msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug bearbeitet werden."
   #: advtrains/trackplacer.lua
-msgid "This node can't be rotated using the trackworker."
+#, fuzzy
+msgid "This node can't be rotated using the trackworker!"
  msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug gedreht werden."
   #: advtrains/trackplacer.lua
-msgid "This track can not be changed."
-msgstr "Dieses Gleis kann nicht geändert werden."
-
-#: advtrains/trackplacer.lua
-msgid "This track can not be rotated."
+#, fuzzy
+msgid "This track can not be rotated!"
  msgstr "Dieses Gleis kann nicht gedreht werden."
   #: advtrains/trackplacer.lua
@@ -275,36 +437,6 @@ msgstr ""
  "Linksklick: Gleistyp ändern\n"
  "Rechtsklick: Objekt drehen"
  -#: advtrains/tracks.lua
-msgid "@1 Slope"
-msgstr "@1 Steigung"
-
-#: advtrains/tracks.lua
-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
-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
-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/tracks.lua
-msgid "Can't place slope: not pointing at node."
-msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block."
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: space occupied."
-msgstr "Es kann nicht platziert werden: Diese Position ist besetzt."
-
  #: advtrains/tracks.lua
  msgid "Position is occupied by a train."
  msgstr "Ein Zug steht an dieser Position."
@@ -317,10 +449,6 @@ msgstr "Hier ist ein Signal-Beeinflussungspunkt."
  msgid "There's a Track Circuit Break here."
  msgstr "Hier ist eine Gleisabschnittsgrenze (TCB)."
  -#: advtrains/tracks.lua
-msgid "This track can not be removed."
-msgstr "Dieses Gleis kann nicht entfernt werden."
-
  #: advtrains/trainhud.lua
  msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move 
again."
  msgstr ""
@@ -340,10 +468,40 @@ msgid ""
  "Punch a wagon to view and edit the Wagon Properties"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid " units"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid " wagon:destroy(): data is not set!"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "!!! Train off track !!!"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "(Doors closed)"
  msgstr "(Türen geschlossen)"
  +#: advtrains/wagons.lua
+msgid "Allow these players to access your wagon:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Clear 'Disable ARS' flag"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Current FC: "
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid ""
+"Destroying wagon with inventory, but inventory is not found? Shouldn't "
+"happen!"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Doors are closed! (Try holding sneak key!)"
  msgstr "Die Türen sind geschlossen."
@@ -356,6 +514,10 @@ msgstr ""
  "Die Türen sind geschlossen. Nutzen Sie Schleichen+Rechtsklick, um trotz "
  "geschlossener Türen auszusteigen."
  +#: advtrains/wagons.lua
+msgid "Freight Code:"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Get off"
  msgstr "Aussteigen"
@@ -368,10 +530,47 @@ msgstr "Ausstieg zwingen"
  msgid "Line"
  msgstr "Linie"
  +#: advtrains/wagons.lua
+msgid "Liquid: "
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Liquid: empty"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Missing train_operator privilege"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Next FC:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Not a valid wagon id."
+msgstr ""
+
+#: advtrains/wagons.lua
+#, fuzzy
+msgid "Not allowed to do this."
+msgstr "Sie dürfen dieses Gleis nicht konfigurieren."
+
  #: advtrains/wagons.lua
  msgid "Onboard Computer"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Please specify a player name to transfer ownership to."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Prev FC"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Remote Routesetting"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Routingcode"
  msgstr ""
@@ -396,6 +595,20 @@ msgstr "Innere Anzeige"
  msgid "Text displayed outside on train"
  msgstr "Äußere Anzeige"
  +#: advtrains/wagons.lua
+msgid "That player does not exist!"
+msgstr ""
+
+#: advtrains/wagons.lua
+#, fuzzy
+msgid "That wagon does not exist!"
+msgstr "In diesem Waggon ist kein Sitzplatz vorhanden."
+
+#: advtrains/wagons.lua
+#, fuzzy
+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/wagons.lua
  msgid "The wagon's inventory is not empty."
  msgstr "Das Inventar dieses Waggons ist nicht leer."
@@ -421,6 +634,26 @@ msgstr "Dieser Waggon gehört @1, Sie dürfen ihn 
nicht abbauen."
  msgid "Train ID"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Train overview / coupling control is only shown when the train 
stands."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Train overview /coupling control:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Uninitialized init="
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Uninitialized, removing"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Wagon @1 ownership changed from @2 to @3"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Wagon needs to be decoupled from other wagons in order to 
destroy it."
  msgstr "Der Waggon muss abgekoppelt sein, damit Sie ihn abbauen können."
@@ -429,6 +662,10 @@ msgstr "Der Waggon muss abgekoppelt sein, damit Sie 
ihn abbauen können."
  msgid "Wagon properties"
  msgstr "Waggon-Einstellungen"
  +#: advtrains/wagons.lua
+msgid "Wagon road number:"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid ""
  "Warning: If you destroy this wagon, you only get some steel back! If 
you are "
@@ -445,6 +682,15 @@ msgstr "Sie haben keinen Zugang zum Führerstand."
  msgid "You can't get on this wagon."
  msgstr "Sie können nicht in diesen Waggon einsteigen."
  +#: advtrains/wagons.lua
+#, fuzzy
+msgid "You don't have the train_operator privilege."
+msgstr "Ihnen fehlt das „@1“-Privileg."
+
+#: advtrains/wagons.lua
+msgid "You have been given ownership of wagon @1"
+msgstr ""
+
  #: advtrains_interlocking/routesetting.lua
  msgid "Route state changed."
  msgstr ""
@@ -469,6 +715,14 @@ msgstr "Sie dürfen ohne das „@1“-Privileg dieses 
Gleis nicht konfigurieren.
  msgid "You are not allowed to configure this track."
  msgstr "Sie dürfen dieses Gleis nicht konfigurieren."
  +#: advtrains_line_automation/scheduler.lua
+msgid "No callback to handle schedule"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Closed"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Dep. Speed"
  msgstr "Zielgeschwindigkeit bei Abfahrt"
@@ -485,10 +739,22 @@ msgstr "Türseite"
  msgid "Kick out passengers"
  msgstr "Fahrgäste zum Ausstieg zwingen"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Left"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Next Stop:\n"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Reverse train"
  msgstr "Zug Umkehren"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Right"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Station Code"
  msgstr "Kennzeichen der Haltestelle"
@@ -520,6 +786,18 @@ msgstr ""
  msgid "Track"
  msgstr "Gleis"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Trains stopping here (ARS rules)"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Unknown Station"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Wait for signal to clear"
+msgstr ""
+
  #: advtrains_luaautomation/active_common.lua
  msgid "Clear Local Environment"
  msgstr ""
@@ -591,6 +869,39 @@ msgid ""
  "privilege."
  msgstr "Sie dürfen ohne das „@1“ keinen passiven LuaATC-Bauteil benennen."
  +#: advtrains_signals_japan/init.lua
+msgid "Caution"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Clear (proceed)"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Danger (halt)"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+#, fuzzy
+msgid "Japanese signal pole"
+msgstr "Japanischer Personenzug-Passagierwaggon"
+
+#: advtrains_signals_japan/init.lua
+msgid "Reduced speed"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Restricted speed"
+msgstr ""
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Distant Signal ("
+msgstr ""
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Main Signal ("
+msgstr ""
+
  #: advtrains_train_industrial/init.lua
  msgid "Big Industrial Train Engine"
  msgstr "Große Industrielle Lokomotive"
@@ -742,6 +1053,9 @@ msgstr "Y-Weiche"
  #~ msgid "This position is protected!"
  #~ msgstr "Diese Position ist geschützt!"
  +#~ msgid "This track can not be changed."
+#~ msgstr "Dieses Gleis kann nicht geändert werden."
+
  #~ msgid "Use Sneak+rightclick to bypass closed doors!"
  #~ msgstr ""
  #~ "Nutzen Sie Schleichen+Rechtsklick, um trotz geschlossener Türen "
diff --git a/advtrains/po/fr.po b/advtrains/po/fr.po
index 3c8f5f6..d773a98 100644
--- a/advtrains/po/fr.po
+++ b/advtrains/po/fr.po
@@ -2,8 +2,8 @@ msgid ""
  msgstr ""
  "Project-Id-Version: advtrains\n"
  "Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
-"POT-Creation-Date: 2024-12-08 15:21+0100\n"
-"PO-Revision-Date: 2024-12-04 15:55+0100\n"
+"POT-Creation-Date: 2025-03-25 15:40+0100\n"
+"PO-Revision-Date: 2025-03-25 15:06+0100\n"
  "Last-Translator: Tanavit <tanavit@posto.ovh>\n"
  "Language-Team: French\n"
  "Language: fr\n"
@@ -53,7 +53,8 @@ msgstr "Commande (marche)"
  msgid "Digiline channel"
  msgstr "Canal Digiline"
  -#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
+#: advtrains/atc.lua advtrains/wagons.lua
+#: advtrains_line_automation/stoprail.lua
  #: advtrains_luaautomation/active_common.lua
  msgid "Save"
  msgstr "Sauvegarder"
@@ -156,6 +157,141 @@ msgstr "Cabine de pilotage"
  msgid "Wheel"
  msgstr "Roue"
  +#: advtrains/init.lua
+msgid " does not exist or is invalid"
+msgstr " n'existe pas ou est invalide"
+
+#: advtrains/init.lua
+msgid " is at "
+msgstr " est à la position "
+
+#: advtrains/init.lua
+msgid "(log"
+msgstr "(log"
+
+#: advtrains/init.lua
+msgid "Advtrains Status: no_action"
+msgstr "État d'advtrains : aucune action"
+
+#: advtrains/init.lua
+msgid "Advtrains is already running normally!"
+msgstr "Advtrains fonctionne déjà correctement !"
+
+#: advtrains/init.lua
+msgid ""
+"Crash during advtrains main step - skipping the shutdown save 
operation to "
+"not save inconsistent data!"
+msgstr ""
+"Crash durant le pas principal d'advtrains - saut de l'opération de "
+"sauvegarde de terminaison pour éviter l'enregistrement de données "
+"corrompues !"
+
+#: advtrains/init.lua
+msgid ""
+"Data is being saved. While saving, advtrains will remove the players 
from "
+"trains. Save files will be reloaded afterwards!"
+msgstr ""
+"Données en cours de sauvegarde. Durant cette phase, advtrains 
débarquera les "
+"joueurs des trains. Les fichiers de sauvegarde seront ultérieurement "
+"rechargés !"
+
+# Routage est il le bon terme ?
+#: advtrains/init.lua
+msgid "Delete all train routes, force them to recalculate"
+msgstr "Suppression et recalcul de tous les routages"
+
+#: advtrains/init.lua
+msgid ""
+"Detach all players, especially the offline ones, from all trains. Use 
only "
+"when no one serious is on a train."
+msgstr ""
+"Débarque tous les joueurs, en particulier ceux déconnectés, de tous les "
+"trains. À n'utiliser que quand aucun joueur sérieux n'a embarqué."
+
+#: advtrains/init.lua
+msgid "Disable the advtrains globalstep temporarily"
+msgstr "Désactive temporairement le pas global d'advtrains"
+
+#: advtrains/init.lua
+msgid "Disabled advtrains successfully"
+msgstr "Succès de la désactivation d'advtrains"
+
+#: advtrains/init.lua
+msgid "Instructed to save() but load() was never called!"
+msgstr "Appel de save() requis sans appel préalable de load() !"
+
+#: advtrains/init.lua
+msgid "Print advtrains status info"
+msgstr "Affiche les informations d'état d'advtrains"
+
+#: advtrains/init.lua
+msgid "Re-enabling advtrains globalstep..."
+msgstr "Réacivation du pas global d'advtrains..."
+
+#: advtrains/init.lua
+msgid "Reload successful!"
+msgstr "Succès du rechargement !"
+
+#: advtrains/init.lua
+msgid "Removing unused wagon"
+msgstr "Suppression d'un wagon inutilisé"
+
+#: advtrains/init.lua
+msgid "Restoring saved state in 1 second..."
+msgstr "Restauration du l'état sauvegardé dans une seconde..."
+
+#: advtrains/init.lua
+msgid "Returns the position of the train with the given id"
+msgstr "Affiche la position du train identifié"
+
+#: advtrains/init.lua
+msgid "Saving failed: "
+msgstr "Échec de sauvegarde : "
+
+# Routage est il le bon terme ?
+#: advtrains/init.lua
+msgid "Successfully invalidated train routes"
+msgstr "Succès d'invalidation des routages des trains"
+
+#: advtrains/init.lua
+msgid "Teleporting to train "
+msgstr "Téléportation au train "
+
+#: advtrains/init.lua
+msgid "Teleports you to the position of the train with the given id"
+msgstr "Vous téléporte à la position du train identifié"
+
+#: advtrains/init.lua
+msgid ""
+"The advtrains globalstep has been disabled. Trains are not moving, and 
no "
+"data is saved! Run '/at_disable_step no' to enable again!"
+msgstr ""
+"Le pas global d'advtrains est désactivé. Les trains sont immobiles et 
aucune "
+"donnée n'est sauvegardée. Exécutez '/at_disable_step no ' pour le 
réactiver !"
+
+#: advtrains/init.lua
+msgid "Train"
+msgstr "Identificateur du train"
+
+#: advtrains/init.lua
+msgid "Train "
+msgstr "Identificateur du train "
+
+#: advtrains/init.lua
+msgid "from wagon_save table."
+msgstr "de la table wagon_save."
+
+#: advtrains/init.lua
+msgid ""
+"had no wagons left because of some bug. It is being deleted. Wave it 
goodbye!"
+msgstr ""
+"n'a plus de wagon à cause d'un bug quelconque. Il est détruit. Faites 
lui "
+"coucou !"
+
+#: advtrains/init.lua
+msgid "slowdown"
+msgstr "ralentissement"
+
  #: advtrains/misc_nodes.lua
  msgid "@1 Platform (45 degree)"
  msgstr "Quai @1 (haut, 45°)"
@@ -249,21 +385,46 @@ msgstr "Signal mural (droit)"
  msgid "Wallmounted Signal (top)"
  msgstr "Signal mural (plafond)"
  -#: advtrains/trackplacer.lua
-msgid "This node can't be changed using the trackworker."
-msgstr "Ce nœud ne peut être modifié avec l'outil \"Trackworker\"."
+#: advtrains/track_reg_helper.lua
+msgid "@1 Slope"
+msgstr "Pente @1"
+
+#: advtrains/track_reg_helper.lua
+msgid "Can't place: Not enough slope items left (@1 required)"
+msgstr ""
+"Placement impossible : quantité insuffisante de voie pentue (@1 manquant)"
+
+#: advtrains/track_reg_helper.lua
+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/track_reg_helper.lua
+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/track_reg_helper.lua
+msgid "Can't place: not pointing at node"
+msgstr "Placement impossible : ne pointe pas un nœud"
+
+#: advtrains/track_reg_helper.lua
+msgid "Can't place: space occupied!"
+msgstr "Placement impossible : espace occupé !"
+
+#: advtrains/track_reg_helper.lua advtrains/tracks.lua
+msgid "This track can not be removed!"
+msgstr "Cette voie ne peut pas être enlevée !"
   #: advtrains/trackplacer.lua
-msgid "This node can't be rotated using the trackworker."
-msgstr "Ce nœud ne peut être tourné avec l'outil \"Trackworker\"."
+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
-msgid "This track can not be changed."
-msgstr "Cette voie ne peut pas être modifiée."
+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
-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
  msgid ""
@@ -278,31 +439,6 @@ msgstr ""
  "\n"
  "Clic-Droit : tourne l'objet"
  -#: advtrains/tracks.lua
-msgid "@1 Slope"
-msgstr "Pente @1"
-
-#: advtrains/tracks.lua
-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
-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
-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/tracks.lua
-msgid "Can't place slope: not pointing at node."
-msgstr "Placement impossible : ne pointe pas un nœud."
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: space occupied."
-msgstr "Placement impossible : espace occupé."
-
  #: advtrains/tracks.lua
  msgid "Position is occupied by a train."
  msgstr "Cet emplacement est occupé par un train."
@@ -315,10 +451,6 @@ msgstr "Il y a un \"Signal Influence Point\" ici."
  msgid "There's a Track Circuit Break here."
  msgstr "Il y a un \"Track Circuit Break\" ici."
  -#: advtrains/tracks.lua
-msgid "This track can not be removed."
-msgstr "Cette voie ne peut pas être enlevée."
-
  #: advtrains/trainhud.lua
  msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move 
again."
  msgstr ""
@@ -341,10 +473,40 @@ msgstr ""
  "Outil de propriété du wagon\n"
  "Frappez un wagon pour voir et modifier ses propriétés"
  +#: advtrains/wagons.lua
+msgid " units"
+msgstr " Unités"
+
+#: advtrains/wagons.lua
+msgid " wagon:destroy(): data is not set!"
+msgstr " Appel de wagon:destroy() : données non définies !"
+
+#: advtrains/wagons.lua
+msgid "!!! Train off track !!!"
+msgstr "!!! Train hors voie !!!"
+
  #: advtrains/wagons.lua
  msgid "(Doors closed)"
  msgstr "(Portes closes)"
  +#: advtrains/wagons.lua
+msgid "Allow these players to access your wagon:"
+msgstr "Autoriser ces joueurs à embarquer :"
+
+#: advtrains/wagons.lua
+msgid "Clear 'Disable ARS' flag"
+msgstr "Effacer le drapeau \"Désactiver l'ARS\""
+
+#: advtrains/wagons.lua
+msgid "Current FC: "
+msgstr "Code de fret courant: "
+
+#: advtrains/wagons.lua
+msgid ""
+"Destroying wagon with inventory, but inventory is not found? Shouldn't "
+"happen!"
+msgstr "Desctruction d'un wagon avec inventaire introuvable ? Anomalie !"
+
  #: advtrains/wagons.lua
  msgid "Doors are closed! (Try holding sneak key!)"
  msgstr "Portes closes : (Essayez la \"sneak key\"!\")"
@@ -357,6 +519,10 @@ msgstr ""
  "Portes closes ! Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit 
pour "
  "franchir les portes et débarquer."
  +#: advtrains/wagons.lua
+msgid "Freight Code:"
+msgstr "Code de frêt :"
+
  #: advtrains/wagons.lua
  msgid "Get off"
  msgstr "Débarquer"
@@ -369,10 +535,47 @@ msgstr "Débarquer (de force)"
  msgid "Line"
  msgstr "Ligne"
  +#: advtrains/wagons.lua
+msgid "Liquid: "
+msgstr "Liquide : "
+
+#: advtrains/wagons.lua
+msgid "Liquid: empty"
+msgstr "Liquide : vide"
+
+#: advtrains/wagons.lua
+msgid "Missing train_operator privilege"
+msgstr "Privilège \"train_operator\" manquant"
+
+#: advtrains/wagons.lua
+msgid "Next FC:"
+msgstr "Code de fret suivant :"
+
+#: advtrains/wagons.lua
+msgid "Not a valid wagon id."
+msgstr "Identificateur de wagon invalide."
+
+#: advtrains/wagons.lua
+msgid "Not allowed to do this."
+msgstr "Vous n'êtes pas autorisé effectuer ceci."
+
  #: advtrains/wagons.lua
  msgid "Onboard Computer"
  msgstr "Ordinateur embarqué"
  +#: advtrains/wagons.lua
+msgid "Please specify a player name to transfer ownership to."
+msgstr ""
+"Spécifiez le nom du joueur à qui la propriété doit être transférée, SVP."
+
+#: advtrains/wagons.lua
+msgid "Prev FC"
+msgstr "Code de fret précédent"
+
+#: advtrains/wagons.lua
+msgid "Remote Routesetting"
+msgstr "Routage à distance"
+
  #: advtrains/wagons.lua
  msgid "Routingcode"
  msgstr "Code de routage"
@@ -397,6 +600,18 @@ msgstr "Texte affiché à l'intérieur du train"
  msgid "Text displayed outside on train"
  msgstr "Texte affiché à l'extérieur du train"
  +#: advtrains/wagons.lua
+msgid "That player does not exist!"
+msgstr "Ce joueur n'existe pas !"
+
+#: advtrains/wagons.lua
+msgid "That wagon does not exist!"
+msgstr "Ce wagon n'a pas de siège !"
+
+#: advtrains/wagons.lua
+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/wagons.lua
  msgid "The wagon's inventory is not empty."
  msgstr "Le stock de ce wagon n'est pas vide."
@@ -421,6 +636,28 @@ msgstr "Ce wagon est la propriété de @1, vous ne 
pouvez pas le détruire."
  msgid "Train ID"
  msgstr "Identificateur du train"
  +#: advtrains/wagons.lua
+msgid "Train overview / coupling control is only shown when the train 
stands."
+msgstr ""
+"Aperçu du train / commande d'accouplement montré uniquement à l'arrêt du "
+"train."
+
+#: advtrains/wagons.lua
+msgid "Train overview /coupling control:"
+msgstr "Aperçu du train / commande d'accouplement :"
+
+#: advtrains/wagons.lua
+msgid "Uninitialized init="
+msgstr "Variable init non initialisée"
+
+#: advtrains/wagons.lua
+msgid "Uninitialized, removing"
+msgstr "Non initialisé, retiré"
+
+#: advtrains/wagons.lua
+msgid "Wagon @1 ownership changed from @2 to @3"
+msgstr "La propriété du wagon @1 a été transférée de @2 à @3"
+
  #: advtrains/wagons.lua
  msgid "Wagon needs to be decoupled from other wagons in order to 
destroy it."
  msgstr ""
@@ -430,6 +667,10 @@ msgstr ""
  msgid "Wagon properties"
  msgstr "Propriétés du wagon"
  +#: advtrains/wagons.lua
+msgid "Wagon road number:"
+msgstr "Immatriculation du wagon :"
+
  #: advtrains/wagons.lua
  msgid ""
  "Warning: If you destroy this wagon, you only get some steel back! If 
you are "
@@ -447,9 +688,17 @@ msgstr "Accès interdit au poste de pilotage."
  msgid "You can't get on this wagon."
  msgstr "Montée impossible dans ce wagon."
  +#: advtrains/wagons.lua
+msgid "You don't have the train_operator privilege."
+msgstr "Vous ne possédez pas le privilège \"train_operator\"."
+
+#: advtrains/wagons.lua
+msgid "You have been given ownership of wagon @1"
+msgstr "La propriété du wagon @1 vous a été transférée"
+
  #: advtrains_interlocking/routesetting.lua
  msgid "Route state changed."
-msgstr ""
+msgstr "Changement d'état de l'itinéraire."
   #: advtrains_interlocking/tsr_rail.lua
  msgid "Point Speed Restriction Track"
@@ -471,9 +720,17 @@ msgstr "Vous n'êtes pas autorisé à configurer cette 
voie sans le privilège @
  msgid "You are not allowed to configure this track."
  msgstr "Vous n'êtes pas autorisé à configurer cette voie."
  +#: advtrains_line_automation/scheduler.lua
+msgid "No callback to handle schedule"
+msgstr "Absence de fonction de gestion de planning"
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Closed"
+msgstr "Fermé"
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Dep. Speed"
-msgstr "Vitesse de départ"
+msgstr "Vit. de départ"
   #: advtrains_line_automation/stoprail.lua
  msgid "Door Delay"
@@ -481,16 +738,28 @@ msgstr "Durée d'ouverture des portes"
   #: advtrains_line_automation/stoprail.lua
  msgid "Door Side"
-msgstr "Coté d'ouvertures des portes"
+msgstr "Ouv. des portes coté"
   #: advtrains_line_automation/stoprail.lua
  msgid "Kick out passengers"
  msgstr "Éjecter les passagers"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Left"
+msgstr "Gauche"
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Next Stop:\n"
+msgstr "Prochain arrêt :\n"
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Reverse train"
  msgstr "Inversion du sens de marche"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Right"
+msgstr "Droit"
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Station Code"
  msgstr "Code de Station"
@@ -521,6 +790,18 @@ msgstr ""
  msgid "Track"
  msgstr "Voie"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Trains stopping here (ARS rules)"
+msgstr "Trains marquant l'arrêt (règles ARS)"
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Unknown Station"
+msgstr "Gare inconnue"
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Wait for signal to clear"
+msgstr "En attente de signal d'autorisation"
+
  #: advtrains_luaautomation/active_common.lua
  msgid "Clear Local Environment"
  msgstr "Effacer l'environnement LuaATC"
@@ -591,6 +872,38 @@ msgid ""
  "privilege."
  msgstr "Vous ne pouvez nommer un composant LuaATC passif sans le 
privilege @1."
  +#: advtrains_signals_japan/init.lua
+msgid "Caution"
+msgstr "Attention"
+
+#: advtrains_signals_japan/init.lua
+msgid "Clear (proceed)"
+msgstr "Autorisation (procédez)"
+
+#: advtrains_signals_japan/init.lua
+msgid "Danger (halt)"
+msgstr "Danger (stop)"
+
+#: advtrains_signals_japan/init.lua
+msgid "Japanese signal pole"
+msgstr "Voiture Japonaise"
+
+#: advtrains_signals_japan/init.lua
+msgid "Reduced speed"
+msgstr "Vitesse réduite"
+
+#: advtrains_signals_japan/init.lua
+msgid "Restricted speed"
+msgstr "Vitesse limitée"
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Distant Signal ("
+msgstr "Signal distant métro de Munich ("
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Main Signal ("
+msgstr "Signal principal métro de Munich ("
+
  #: advtrains_train_industrial/init.lua
  msgid "Big Industrial Train Engine"
  msgstr "Grosse locomotive industrielle"
@@ -701,6 +1014,9 @@ msgstr "Voie de Déchargement"
  msgid "Y-turnout"
  msgstr "Embranchement en Y"
  +#~ msgid ", using placeholder"
+#~ msgstr ", dans un espace réservé"
+
  #~ msgid ""
  #~ "ATC controller, mode @1\n"
  #~ "Channel: @2"
@@ -727,6 +1043,9 @@ msgstr "Embranchement en Y"
  #~ msgid "Deprecated Track"
  #~ msgstr "Voie déconseillée"
  +#~ msgid "Left,Right,Closed;"
+#~ msgstr "Gauche,Droit,Fermé;"
+
  #~ msgid "Lock couples"
  #~ msgstr "Verrouiller l'accouplement"
  @@ -743,6 +1062,12 @@ msgstr "Embranchement en Y"
  #~ msgid "This position is protected!"
  #~ msgstr "Cet emplacement est protégé !"
  +#~ msgid "This track can not be changed."
+#~ msgstr "Cette voie ne peut pas être modifiée."
+
+#~ msgid "Unable to load wagon type"
+#~ msgstr "Impossible de charger le type du wagon"
+
  #~ msgid "Use Sneak+rightclick to bypass closed doors!"
  #~ msgstr ""
  #~ "Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour franchir 
les "
diff --git a/advtrains/po/update-translations.sh 
b/advtrains/po/update-translations.sh
index 1b919d9..4c22c85 100755
--- a/advtrains/po/update-translations.sh
+++ b/advtrains/po/update-translations.sh
@@ -7,7 +7,6 @@ BTDIR="$ATDIR/../basic_trains"
  POTFILE="$PODIR/advtrains.pot"
   xgettext \
-	-v -v -v \
  	-D "$ATDIR" \
  	-D "$BTDIR" \
  	-d advtrains \
diff --git a/advtrains/po/zh_CN.po b/advtrains/po/zh_CN.po
index 1dbf08f..f1a3c0f 100644
--- a/advtrains/po/zh_CN.po
+++ b/advtrains/po/zh_CN.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: 2024-12-08 15:21+0100\n"
+"POT-Creation-Date: 2025-03-25 15:40+0100\n"
  "PO-Revision-Date: 2023-10-09 11:24+0200\n"
  "Last-Translator: Y. Wang <yw05@forksworld.de>\n"
  "Language-Team: Chinese (Simplified)\n"
@@ -53,7 +53,8 @@ msgstr "命令 (激活时)"
  msgid "Digiline channel"
  msgstr "Digiline 频道"
  -#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
+#: advtrains/atc.lua advtrains/wagons.lua
+#: advtrains_line_automation/stoprail.lua
  #: advtrains_luaautomation/active_common.lua
  msgid "Save"
  msgstr "保存"
@@ -151,6 +152,128 @@ msgstr "驾驶室"
  msgid "Wheel"
  msgstr "车轮"
  +#: advtrains/init.lua
+msgid " does not exist or is invalid"
+msgstr ""
+
+#: advtrains/init.lua
+msgid " is at "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "(log"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Advtrains Status: no_action"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Advtrains is already running normally!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Crash during advtrains main step - skipping the shutdown save 
operation to "
+"not save inconsistent data!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Data is being saved. While saving, advtrains will remove the players 
from "
+"trains. Save files will be reloaded afterwards!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Delete all train routes, force them to recalculate"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Detach all players, especially the offline ones, from all trains. Use 
only "
+"when no one serious is on a train."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Disable the advtrains globalstep temporarily"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Disabled advtrains successfully"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Instructed to save() but load() was never called!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Print advtrains status info"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Re-enabling advtrains globalstep..."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Reload successful!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Removing unused wagon"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Restoring saved state in 1 second..."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Returns the position of the train with the given id"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Saving failed: "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Successfully invalidated train routes"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Teleporting to train "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Teleports you to the position of the train with the given id"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"The advtrains globalstep has been disabled. Trains are not moving, and 
no "
+"data is saved! Run '/at_disable_step no' to enable again!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Train"
+msgstr ""
+
+#: advtrains/init.lua
+#, fuzzy
+msgid "Train "
+msgstr "已复制列车。"
+
+#: advtrains/init.lua
+msgid "from wagon_save table."
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"had no wagons left because of some bug. It is being deleted. Wave it 
goodbye!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "slowdown"
+msgstr ""
+
  #: advtrains/misc_nodes.lua
  msgid "@1 Platform (45 degree)"
  msgstr "较高的@1站台 (45°)"
@@ -233,20 +356,53 @@ msgstr "壁挂式信号灯 (右侧)"
  msgid "Wallmounted Signal (top)"
  msgstr "悬挂式信号灯"
  +#: advtrains/track_reg_helper.lua
+msgid "@1 Slope"
+msgstr "@1斜坡"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: Not enough slope items left (@1 required)"
+msgstr "无法放置斜坡:您没有足够的铁路斜坡放置工具 (您总共需要@1个)"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: There's no slope of length @1"
+msgstr "无法放置斜坡:advtrains 不支持长度为@1米的斜坡。"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: no supporting node at upper end."
+msgstr "无法放置斜坡:较高端没有支撑方块。"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: not pointing at node"
+msgstr "无法放置斜坡:您没有选择任何方块。"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: space occupied!"
+msgstr "无法放置斜坡:此区域已被占用。"
+
+#: advtrains/track_reg_helper.lua advtrains/tracks.lua
+#, fuzzy
+msgid "This track can not be removed!"
+msgstr "您不能移除这段轨道。"
+
  #: advtrains/trackplacer.lua
-msgid "This node can't be changed using the trackworker."
+#, fuzzy
+msgid "This node can't be changed using the trackworker!"
  msgstr "您不能使用铁路调整工具调整这个方块。"
   #: advtrains/trackplacer.lua
-msgid "This node can't be rotated using the trackworker."
+#, fuzzy
+msgid "This node can't be rotated using the trackworker!"
  msgstr "您不能使用铁路调整工具旋转这个方块。"
   #: advtrains/trackplacer.lua
-msgid "This track can not be changed."
-msgstr "您不能调整这段轨道。"
-
-#: advtrains/trackplacer.lua
-msgid "This track can not be rotated."
+#, fuzzy
+msgid "This track can not be rotated!"
  msgstr "您不能旋转这段轨道。"
   #: advtrains/trackplacer.lua
@@ -261,30 +417,6 @@ msgstr ""
  "左键单击:切换轨道类型\n"
  "右键单击:旋转方块"
  -#: advtrains/tracks.lua
-msgid "@1 Slope"
-msgstr "@1斜坡"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: Not enough slope items left (@1 required)."
-msgstr "无法放置斜坡:您没有足够的铁路斜坡放置工具 (您总共需要@1个)"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: There's no slope of length @1."
-msgstr "无法放置斜坡:advtrains 不支持长度为@1米的斜坡。"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: no supporting node at upper end."
-msgstr "无法放置斜坡:较高端没有支撑方块。"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: not pointing at node."
-msgstr "无法放置斜坡:您没有选择任何方块。"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: space occupied."
-msgstr "无法放置斜坡:此区域已被占用。"
-
  #: advtrains/tracks.lua
  msgid "Position is occupied by a train."
  msgstr ""
@@ -297,10 +429,6 @@ msgstr ""
  msgid "There's a Track Circuit Break here."
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "This track can not be removed."
-msgstr "您不能移除这段轨道。"
-
  #: advtrains/trainhud.lua
  msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move 
again."
  msgstr ""
@@ -320,10 +448,40 @@ msgid ""
  "Punch a wagon to view and edit the Wagon Properties"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid " units"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid " wagon:destroy(): data is not set!"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "!!! Train off track !!!"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "(Doors closed)"
  msgstr "(车门已关闭)"
  +#: advtrains/wagons.lua
+msgid "Allow these players to access your wagon:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Clear 'Disable ARS' flag"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Current FC: "
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid ""
+"Destroying wagon with inventory, but inventory is not found? Shouldn't "
+"happen!"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Doors are closed! (Try holding sneak key!)"
  msgstr ""
@@ -334,6 +492,10 @@ msgid ""
  "off."
  msgstr "车门已关闭,请使用潜行+右键单击下车。"
  +#: advtrains/wagons.lua
+msgid "Freight Code:"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Get off"
  msgstr "下车"
@@ -346,10 +508,47 @@ msgstr "强制下车"
  msgid "Line"
  msgstr "火车线路"
  +#: advtrains/wagons.lua
+msgid "Liquid: "
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Liquid: empty"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Missing train_operator privilege"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Next FC:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Not a valid wagon id."
+msgstr ""
+
+#: advtrains/wagons.lua
+#, fuzzy
+msgid "Not allowed to do this."
+msgstr "您不能调整这段轨道。"
+
  #: advtrains/wagons.lua
  msgid "Onboard Computer"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Please specify a player name to transfer ownership to."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Prev FC"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Remote Routesetting"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Routingcode"
  msgstr "路由码"
@@ -374,6 +573,20 @@ msgstr "车厢内部显示"
  msgid "Text displayed outside on train"
  msgstr "车厢外部显示"
  +#: advtrains/wagons.lua
+msgid "That player does not exist!"
+msgstr ""
+
+#: advtrains/wagons.lua
+#, fuzzy
+msgid "That wagon does not exist!"
+msgstr "这节车厢没有座位。"
+
+#: advtrains/wagons.lua
+#, fuzzy
+msgid "The track you are trying to place the wagon on is not long enough!"
+msgstr "轨道太短。"
+
  #: advtrains/wagons.lua
  msgid "The wagon's inventory is not empty."
  msgstr ""
@@ -399,6 +612,26 @@ msgstr "这是 @1 的车厢,您不能摧毁它。"
  msgid "Train ID"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Train overview / coupling control is only shown when the train 
stands."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Train overview /coupling control:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Uninitialized init="
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Uninitialized, removing"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Wagon @1 ownership changed from @2 to @3"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Wagon needs to be decoupled from other wagons in order to 
destroy it."
  msgstr ""
@@ -407,6 +640,10 @@ msgstr ""
  msgid "Wagon properties"
  msgstr "车厢属性"
  +#: advtrains/wagons.lua
+msgid "Wagon road number:"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid ""
  "Warning: If you destroy this wagon, you only get some steel back! If 
you are "
@@ -423,6 +660,15 @@ msgstr ""
  msgid "You can't get on this wagon."
  msgstr ""
  +#: advtrains/wagons.lua
+#, fuzzy
+msgid "You don't have the train_operator privilege."
+msgstr "您没有“@1”权限。"
+
+#: advtrains/wagons.lua
+msgid "You have been given ownership of wagon @1"
+msgstr ""
+
  #: advtrains_interlocking/routesetting.lua
  msgid "Route state changed."
  msgstr ""
@@ -447,6 +693,14 @@ msgstr "您没有“@1”权限,不能调整这段轨道。"
  msgid "You are not allowed to configure this track."
  msgstr "您不能调整这段轨道。"
  +#: advtrains_line_automation/scheduler.lua
+msgid "No callback to handle schedule"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Closed"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Dep. Speed"
  msgstr "出发速度"
@@ -463,10 +717,22 @@ msgstr ""
  msgid "Kick out passengers"
  msgstr "踢出乘客"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Left"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Next Stop:\n"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Reverse train"
  msgstr "改变行车方向"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Right"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Station Code"
  msgstr "车站代码"
@@ -495,6 +761,18 @@ msgstr ""
  msgid "Track"
  msgstr "轨道"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Trains stopping here (ARS rules)"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Unknown Station"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Wait for signal to clear"
+msgstr ""
+
  #: advtrains_luaautomation/active_common.lua
  msgid "Clear Local Environment"
  msgstr ""
@@ -563,6 +841,39 @@ msgid ""
  "privilege."
  msgstr "您没有“@1”权限,不能命名被动元件。"
  +#: advtrains_signals_japan/init.lua
+msgid "Caution"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Clear (proceed)"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Danger (halt)"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+#, fuzzy
+msgid "Japanese signal pole"
+msgstr "高速列车车厢"
+
+#: advtrains_signals_japan/init.lua
+msgid "Reduced speed"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Restricted speed"
+msgstr ""
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Distant Signal ("
+msgstr ""
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Main Signal ("
+msgstr ""
+
  #: advtrains_train_industrial/init.lua
  msgid "Big Industrial Train Engine"
  msgstr "大型工业用火车头"
@@ -717,6 +1028,9 @@ msgstr "对称道岔"
  #~ msgid "This position is protected!"
  #~ msgstr "这里已被保护。"
  +#~ msgid "This track can not be changed."
+#~ msgstr "您不能调整这段轨道。"
+
  #~ msgid "Use Sneak+rightclick to bypass closed doors!"
  #~ msgstr "请使用潜行+右键上车。"
  diff --git a/advtrains/po/zh_TW.po b/advtrains/po/zh_TW.po
index 56b6531..ec65737 100644
--- a/advtrains/po/zh_TW.po
+++ b/advtrains/po/zh_TW.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: 2024-12-08 15:21+0100\n"
+"POT-Creation-Date: 2025-03-25 15:40+0100\n"
  "PO-Revision-Date: 2023-10-09 11:31+0200\n"
  "Last-Translator: Y. Wang <yw05@forksworld.de>\n"
  "Language-Team: Chinese (Traditional)\n"
@@ -53,7 +53,8 @@ msgstr "命令 (啟用時)"
  msgid "Digiline channel"
  msgstr "Digiline 頻道"
  -#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
+#: advtrains/atc.lua advtrains/wagons.lua
+#: advtrains_line_automation/stoprail.lua
  #: advtrains_luaautomation/active_common.lua
  msgid "Save"
  msgstr "儲存"
@@ -151,6 +152,128 @@ msgstr "駕駛室"
  msgid "Wheel"
  msgstr "車輪"
  +#: advtrains/init.lua
+msgid " does not exist or is invalid"
+msgstr ""
+
+#: advtrains/init.lua
+msgid " is at "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "(log"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Advtrains Status: no_action"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Advtrains is already running normally!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Crash during advtrains main step - skipping the shutdown save 
operation to "
+"not save inconsistent data!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Data is being saved. While saving, advtrains will remove the players 
from "
+"trains. Save files will be reloaded afterwards!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Delete all train routes, force them to recalculate"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"Detach all players, especially the offline ones, from all trains. Use 
only "
+"when no one serious is on a train."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Disable the advtrains globalstep temporarily"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Disabled advtrains successfully"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Instructed to save() but load() was never called!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Print advtrains status info"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Re-enabling advtrains globalstep..."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Reload successful!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Removing unused wagon"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Restoring saved state in 1 second..."
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Returns the position of the train with the given id"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Saving failed: "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Successfully invalidated train routes"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Teleporting to train "
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Teleports you to the position of the train with the given id"
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"The advtrains globalstep has been disabled. Trains are not moving, and 
no "
+"data is saved! Run '/at_disable_step no' to enable again!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "Train"
+msgstr ""
+
+#: advtrains/init.lua
+#, fuzzy
+msgid "Train "
+msgstr "已複製火車。"
+
+#: advtrains/init.lua
+msgid "from wagon_save table."
+msgstr ""
+
+#: advtrains/init.lua
+msgid ""
+"had no wagons left because of some bug. It is being deleted. Wave it 
goodbye!"
+msgstr ""
+
+#: advtrains/init.lua
+msgid "slowdown"
+msgstr ""
+
  #: advtrains/misc_nodes.lua
  msgid "@1 Platform (45 degree)"
  msgstr "較高的@1月臺 (45°)"
@@ -233,20 +356,53 @@ msgstr "壁掛式色燈號誌機 (右側)"
  msgid "Wallmounted Signal (top)"
  msgstr "懸掛式色燈號誌機"
  +#: advtrains/track_reg_helper.lua
+msgid "@1 Slope"
+msgstr "@1斜坡"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: Not enough slope items left (@1 required)"
+msgstr "無法放置斜坡:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: There's no slope of length @1"
+msgstr "無法放置斜坡:advtrains 不支援長度為@1米的斜坡。"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: no supporting node at upper end."
+msgstr "無法放置斜坡:較高階沒有支撐方塊。"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: not pointing at node"
+msgstr "無法放置斜坡:您沒有選擇任何方塊。"
+
+#: advtrains/track_reg_helper.lua
+#, fuzzy
+msgid "Can't place: space occupied!"
+msgstr "無法放置斜坡:此區域已被佔用。"
+
+#: advtrains/track_reg_helper.lua advtrains/tracks.lua
+#, fuzzy
+msgid "This track can not be removed!"
+msgstr "您不能移除這段軌道。"
+
  #: advtrains/trackplacer.lua
-msgid "This node can't be changed using the trackworker."
+#, fuzzy
+msgid "This node can't be changed using the trackworker!"
  msgstr "您不能使用鐵路調整工具調整這個方塊。"
   #: advtrains/trackplacer.lua
-msgid "This node can't be rotated using the trackworker."
+#, fuzzy
+msgid "This node can't be rotated using the trackworker!"
  msgstr "您不能使用鐵路調整工具旋轉這個方塊。"
   #: advtrains/trackplacer.lua
-msgid "This track can not be changed."
-msgstr "您不能調整這段軌道。"
-
-#: advtrains/trackplacer.lua
-msgid "This track can not be rotated."
+#, fuzzy
+msgid "This track can not be rotated!"
  msgstr "您不能旋轉這段軌道。"
   #: advtrains/trackplacer.lua
@@ -261,30 +417,6 @@ msgstr ""
  "左鍵單擊:切換軌道型別\n"
  "右鍵單擊:旋轉方塊"
  -#: advtrains/tracks.lua
-msgid "@1 Slope"
-msgstr "@1斜坡"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: Not enough slope items left (@1 required)."
-msgstr "無法放置斜坡:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: There's no slope of length @1."
-msgstr "無法放置斜坡:advtrains 不支援長度為@1米的斜坡。"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: no supporting node at upper end."
-msgstr "無法放置斜坡:較高階沒有支撐方塊。"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: not pointing at node."
-msgstr "無法放置斜坡:您沒有選擇任何方塊。"
-
-#: advtrains/tracks.lua
-msgid "Can't place slope: space occupied."
-msgstr "無法放置斜坡:此區域已被佔用。"
-
  #: advtrains/tracks.lua
  msgid "Position is occupied by a train."
  msgstr ""
@@ -297,10 +429,6 @@ msgstr ""
  msgid "There's a Track Circuit Break here."
  msgstr ""
  -#: advtrains/tracks.lua
-msgid "This track can not be removed."
-msgstr "您不能移除這段軌道。"
-
  #: advtrains/trainhud.lua
  msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move 
again."
  msgstr ""
@@ -320,10 +448,40 @@ msgid ""
  "Punch a wagon to view and edit the Wagon Properties"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid " units"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid " wagon:destroy(): data is not set!"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "!!! Train off track !!!"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "(Doors closed)"
  msgstr "(車門已關閉)"
  +#: advtrains/wagons.lua
+msgid "Allow these players to access your wagon:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Clear 'Disable ARS' flag"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Current FC: "
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid ""
+"Destroying wagon with inventory, but inventory is not found? Shouldn't "
+"happen!"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Doors are closed! (Try holding sneak key!)"
  msgstr ""
@@ -334,6 +492,10 @@ msgid ""
  "off."
  msgstr "車門已關閉,請使用潛行+右鍵單擊下車。"
  +#: advtrains/wagons.lua
+msgid "Freight Code:"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Get off"
  msgstr "下車"
@@ -346,10 +508,47 @@ msgstr "強制下車"
  msgid "Line"
  msgstr "火車線路"
  +#: advtrains/wagons.lua
+msgid "Liquid: "
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Liquid: empty"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Missing train_operator privilege"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Next FC:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Not a valid wagon id."
+msgstr ""
+
+#: advtrains/wagons.lua
+#, fuzzy
+msgid "Not allowed to do this."
+msgstr "您不能調整這段軌道。"
+
  #: advtrains/wagons.lua
  msgid "Onboard Computer"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Please specify a player name to transfer ownership to."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Prev FC"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Remote Routesetting"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Routingcode"
  msgstr "路由碼"
@@ -374,6 +573,20 @@ msgstr "車廂內部顯示"
  msgid "Text displayed outside on train"
  msgstr "車廂外部顯示"
  +#: advtrains/wagons.lua
+msgid "That player does not exist!"
+msgstr ""
+
+#: advtrains/wagons.lua
+#, fuzzy
+msgid "That wagon does not exist!"
+msgstr "這節車廂沒有座位。"
+
+#: advtrains/wagons.lua
+#, fuzzy
+msgid "The track you are trying to place the wagon on is not long enough!"
+msgstr "軌道太短。"
+
  #: advtrains/wagons.lua
  msgid "The wagon's inventory is not empty."
  msgstr ""
@@ -399,6 +612,26 @@ msgstr "這是 @1 的車廂,您不能摧毀它。"
  msgid "Train ID"
  msgstr ""
  +#: advtrains/wagons.lua
+msgid "Train overview / coupling control is only shown when the train 
stands."
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Train overview /coupling control:"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Uninitialized init="
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Uninitialized, removing"
+msgstr ""
+
+#: advtrains/wagons.lua
+msgid "Wagon @1 ownership changed from @2 to @3"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid "Wagon needs to be decoupled from other wagons in order to 
destroy it."
  msgstr ""
@@ -407,6 +640,10 @@ msgstr ""
  msgid "Wagon properties"
  msgstr "車廂屬性"
  +#: advtrains/wagons.lua
+msgid "Wagon road number:"
+msgstr ""
+
  #: advtrains/wagons.lua
  msgid ""
  "Warning: If you destroy this wagon, you only get some steel back! If 
you are "
@@ -423,6 +660,15 @@ msgstr ""
  msgid "You can't get on this wagon."
  msgstr ""
  +#: advtrains/wagons.lua
+#, fuzzy
+msgid "You don't have the train_operator privilege."
+msgstr "您沒有「@1」許可權。"
+
+#: advtrains/wagons.lua
+msgid "You have been given ownership of wagon @1"
+msgstr ""
+
  #: advtrains_interlocking/routesetting.lua
  msgid "Route state changed."
  msgstr ""
@@ -447,6 +693,14 @@ msgstr "您沒有「@1」許可權,不能調整這段軌道。"
  msgid "You are not allowed to configure this track."
  msgstr "您不能調整這段軌道。"
  +#: advtrains_line_automation/scheduler.lua
+msgid "No callback to handle schedule"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Closed"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Dep. Speed"
  msgstr "出發速度"
@@ -463,10 +717,22 @@ msgstr ""
  msgid "Kick out passengers"
  msgstr "踢出乘客"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Left"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Next Stop:\n"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Reverse train"
  msgstr "改變行車方向"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Right"
+msgstr ""
+
  #: advtrains_line_automation/stoprail.lua
  msgid "Station Code"
  msgstr "車站碼"
@@ -495,6 +761,18 @@ msgstr ""
  msgid "Track"
  msgstr "軌道"
  +#: advtrains_line_automation/stoprail.lua
+msgid "Trains stopping here (ARS rules)"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Unknown Station"
+msgstr ""
+
+#: advtrains_line_automation/stoprail.lua
+msgid "Wait for signal to clear"
+msgstr ""
+
  #: advtrains_luaautomation/active_common.lua
  msgid "Clear Local Environment"
  msgstr ""
@@ -563,6 +841,39 @@ msgid ""
  "privilege."
  msgstr "您沒有「@1」許可權,不能命名這個元件。"
  +#: advtrains_signals_japan/init.lua
+msgid "Caution"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Clear (proceed)"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Danger (halt)"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+#, fuzzy
+msgid "Japanese signal pole"
+msgstr "高速列車車廂"
+
+#: advtrains_signals_japan/init.lua
+msgid "Reduced speed"
+msgstr ""
+
+#: advtrains_signals_japan/init.lua
+msgid "Restricted speed"
+msgstr ""
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Distant Signal ("
+msgstr ""
+
+#: advtrains_signals_muc_ubahn/init.lua
+msgid "Munich U-Bahn Main Signal ("
+msgstr ""
+
  #: advtrains_train_industrial/init.lua
  msgid "Big Industrial Train Engine"
  msgstr "大型工業用火車頭"
@@ -717,6 +1028,9 @@ msgstr "對稱道岔"
  #~ msgid "This position is protected!"
  #~ msgstr "這裡已被保護。"
  +#~ msgid "This track can not be changed."
+#~ msgstr "您不能調整這段軌道。"
+
  #~ msgid "Use Sneak+rightclick to bypass closed doors!"
  #~ msgstr "請使用潛行+右鍵上車。"
  diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index 10576c3..760c7da 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -7,6 +7,9 @@
  -- An entity is ONLY spawned by update_trainpart_properties when it 
finds it useful.
  -- Only data that are only important to the entity itself are stored 
in the luaentity
  +-- Translation
+S = attrans
+
  -- TP delay when getting off wagon
  local GETOFF_TP_DELAY = 0.5
  @@ -154,12 +157,12 @@ function wagon:ensure_init()
  		end
  	end
  	if not self.noninitticks then
-		atwarn("wagon",self.id,"uninitialized init=",self.initialized)
+		atwarn("Wagon",self.id,S("Uninitialized init="),self.initialized)
  		self.noninitticks=0
  	end
  	self.noninitticks=self.noninitticks+1
  	if self.noninitticks>20 then
-		atwarn("wagon",self.id,"uninitialized, removing")
+		atwarn("Wagon",self.id,S("Uninitialized, removing"))
  		self:destroy()
  	else
  		self.object:set_velocity({x=0,y=0,z=0})
@@ -182,7 +185,7 @@ function wagon:on_punch(puncher, 
time_from_last_punch, tool_capabilities, direct
  			return
  		end
  		if data.owner and puncher:get_player_name()~=data.owner and (not 
minetest.check_player_privs(puncher, {train_admin = true })) then
-		   minetest.chat_send_player(puncher:get_player_name(), attrans("This 
wagon is owned by @1, you can't destroy it.", data.owner));
+		   minetest.chat_send_player(puncher:get_player_name(), S("This wagon 
is owned by @1, you can't destroy it.", data.owner));
  		   return
  		end
  		
@@ -201,25 +204,25 @@ function wagon:on_punch(puncher, 
time_from_last_punch, tool_capabilities, direct
  		if self.has_inventory then
  			local inv=minetest.get_inventory({type="detached", 
name="advtrains_wgn_"..self.id})
  			if not inv then -- inventory is not initialized when wagon was 
never loaded - should never happen
-				atwarn("Destroying wagon with inventory, but inventory is not 
found? Shouldn't happen!")
+				atwarn(S("Destroying wagon with inventory, but inventory is not 
found? Shouldn't happen!"))
  				return
  			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(), S("The 
wagon's inventory is not empty."));
  					return
  				end
  			end
  		end
  		
  		if #(self:train().trainparts)>1 then
-		   minetest.chat_send_player(puncher:get_player_name(), 
attrans("Wagon needs to be decoupled from other wagons in order to 
destroy it."));
+		   minetest.chat_send_player(puncher:get_player_name(), S("Wagon 
needs to be decoupled from other wagons in order to destroy it."));
  		   return
  		end
   		local pc=puncher:get_player_control()
  		if not pc.sneak then
-			minetest.chat_send_player(puncher:get_player_name(), 
attrans("Warning: If you destroy this wagon, you only get some steel 
back! If you are sure, hold Sneak and left-click the wagon."))
+			minetest.chat_send_player(puncher:get_player_name(), S("Warning: If 
you destroy this wagon, you only get some steel back! If you are sure, 
hold Sneak and left-click the wagon."))
  			return
  		end
  		
@@ -240,7 +243,7 @@ function wagon:destroy()
  	if self.id then
  		local data = advtrains.wagons[self.id]
  		if not data then
-			atwarn("wagon:destroy(): data is not set!")
+			atwarn(S(" wagon:destroy(): data is not set!"))
  			return
  		end
  		
@@ -367,15 +370,15 @@ function wagon:on_step(dtime)
  		
  		--show off-track information in outside text instead of notifying 
the whole server about this
  		if train.off_track then
-			outside = outside .."\n!!! Train off track !!!"
+			outside = outside .."\n"..S("!!! Train off track !!!")
  		end
  		
  		-- liquid container: display liquid contents in infotext
  		if self.techage_liquid_capacity then
  			if data.techage_liquid and data.techage_liquid.name then
-				outside = outside .."\nLiquid: "..data.techage_liquid.name..", 
"..data.techage_liquid.amount.." units"
+				outside = outside .."\n"..S("Liquid: 
")..data.techage_liquid.name..", "..data.techage_liquid.amount..S(" units")
  			else
-				outside = outside .."\nLiquid: empty"
+				outside = outside .."\n"..S("Liquid: empty")
  			end
  		end
  		
@@ -669,21 +672,21 @@ function wagon:on_rightclick(clicker)
  					end
  				end
  				if self.has_inventory and self.get_inventory_formspec and 
advtrains.check_driving_couple_protection(pname, data.owner, 
data.whitelist) then
-					poss[#poss+1]={name=attrans("Show Inventory"), key="inv"}
+					poss[#poss+1]={name=S("Show Inventory"), key="inv"}
  				end
  				if self.seat_groups[sgr].driving_ctrl_access and 
advtrains.check_driving_couple_protection(pname, data.owner, 
data.whitelist) then
-					poss[#poss+1]={name=attrans("Onboard Computer"), key="bordcom"}
+					poss[#poss+1]={name=S("Onboard Computer"), key="bordcom"}
  				end
  				if data.owner==pname then
-					poss[#poss+1]={name=attrans("Wagon properties"), key="prop"}
+					poss[#poss+1]={name=S("Wagon properties"), key="prop"}
  				end
  				if not self.seat_groups[sgr].require_doors_open or 
self:train().door_open~=0 then
-					poss[#poss+1]={name=attrans("Get off"), key="off"}
+					poss[#poss+1]={name=S("Get off"), key="off"}
  				else
  					if clicker:get_player_control().sneak then
-						poss[#poss+1]={name=attrans("Get off (forced)"), key="off"}
+						poss[#poss+1]={name=S("Get off (forced)"), key="off"}
  					else
-						poss[#poss+1]={name=attrans("(Doors closed)"), key="dcwarn"}
+						poss[#poss+1]={name=S("(Doors closed)"), key="dcwarn"}
  					end
  				end
  				if #poss==0 then
@@ -693,7 +696,7 @@ function wagon:on_rightclick(clicker)
  				else
  					local form = "size[5,"..1+(#poss).."]"
  					for pos,ent in ipairs(poss) do
-						form = form .. 
"button_exit[0.5,"..(pos-0.5)..";4,1;"..ent.key..";"..ent.name.."]"
+						form = form.. 
"button_exit[0.5,"..(pos-0.5)..";4,1;"..ent.key..";"..ent.name.."]"
  					end
  					minetest.show_formspec(pname, "advtrains_seating_"..self.id, form)
  				end
@@ -712,7 +715,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, attrans("This wagon has no seats.")
+				local allow, rsn=false, S("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
@@ -723,16 +726,16 @@ function wagon:on_rightclick(clicker)
  										self:get_on(clicker, seatid)
  										return
  									else
-										rsn=attrans("This wagon is full.")
+										rsn=S("This wagon is full.")
  									end
  								else
-									rsn=attrans("Doors are closed! (Try holding sneak key!)")
+									rsn=S("Doors are closed! (Try holding sneak key!)")
  								end
  							end
  						end
  					end
  				end
-				minetest.chat_send_player(pname, rsn or attrans("You can't get on 
this wagon."))
+				minetest.chat_send_player(pname, rsn or S("You can't get on this 
wagon."))
  			else
  				self:show_get_on_form(pname)
  			end
@@ -858,7 +861,7 @@ function wagon:show_get_on_form(pname)
  		end
  		return
  	end
-	local form, comma="size[5,8]label[0.5,0.5;"..attrans("Select 
seat:").."]textlist[0.5,1;4,6;seat;", ""
+	local form, comma="size[5,8]label[0.5,0.5;"..S("Select 
seat:").."]textlist[0.5,1;4,6;seat;", ""
  	for seatno, seattbl in ipairs(self.seats) do
  		local addtext, colorcode="", ""
  		if data.seatp and data.seatp[seatno] then
@@ -870,7 +873,7 @@ function wagon:show_get_on_form(pname)
  	end
  	form=form..";0,false]"
  	if self.has_inventory and self.get_inventory_formspec then
-		form=form.."button_exit[1,7;3,1;inv;"..attrans("Show Inventory").."]"
+		form=form.."button_exit[1,7;3,1;inv;"..S("Show Inventory").."]"
  	end
  	minetest.show_formspec(pname, "advtrains_geton_"..self.id, form)
  end
@@ -881,27 +884,27 @@ function wagon:show_wagon_properties(pname)
  	button: save
  	]]
  	local data = advtrains.wagons[self.id]
-	local form = "size[5,5]"
-	form = form.."label[0.2,0;"..attrans("This Wagon ID")..": 
"..self.id.." ("..data.owner..")]"
-	form = form .. "field[0.5,1;4.5,1;whitelist;Allow these players to 
access your wagon:;"..minetest.formspec_escape(data.whitelist or "").."]"
-	form = form .. "field[0.5,2;4.5,1;roadnumber;Wagon road 
number:;"..minetest.formspec_escape(data.roadnumber or "").."]"
+	local form="size[5,5]"
+	form=form.."label[0.2,0;"..S("This Wagon ID")..": "..self.id.." 
("..data.owner..")]"
+	form = form.."field[0.5,1;4.5,1;whitelist;"..S("Allow these players to 
access your wagon:")..";"..minetest.formspec_escape(data.whitelist or 
"").."]"
+	form = form.."field[0.5,2;4.5,1;roadnumber;"..S("Wagon road 
number:")..";"..minetest.formspec_escape(data.roadnumber or "").."]"
  	local fc = ""
  	if data.fc then
  		fc = table.concat(data.fc, "!")
  	end
-	form = form .. "field[0.5,3;4.5,1;fc;Freight Code:;"..fc.."]"
+	form = form.. "field[0.5,3;4.5,1;fc;"..S("Freight Code:")..";"..fc.."]"
  	if data.fc then
  		if not data.fcind then data.fcind = 1 end
  		if data.fcind > 1 then
-			form=form.."button[0.5,3.5;1,1;fcp;prev FC]"
+			form=form.."button[0.5,3.5;1,1;fcp;"..S("Prev FC").."]"
  		end
-		form=form.."label[1.5,3.5;Current FC:]"
+		form=form.."label[1.5,3.5;"..S("Current FC: ").."]"
   		local cur = data.fc[data.fcind] or ""
  		form=form.."label[1.5,3.75;"..minetest.formspec_escape(cur).."]"
-		form=form.."button[3.5,3.5;1,1;fcn;next FC]"
+		form=form.."button[3.5,3.5;1,1;fcn;"..S("Next FC:").."]"
  	end
-	form=form.."button_exit[0.5,4.5;4,1;save;"..attrans("Save wagon 
properties").."]"
+	form=form.."button_exit[0.5,4.5;4,1;save;"..S("Save wagon 
properties").."]"
  	minetest.show_formspec(pname, "advtrains_prop_"..self.id, form)
  end
  @@ -986,30 +989,30 @@ function wagon:show_bordcom(pname)
  	local linhei
  	
  	local form = "size[11,9]label[0.5,0;AdvTrains Boardcom v0.1]"
-	form=form.."textarea[7.5,0.05;10,1;;"..attrans("Train ID")..": 
"..(minetest.formspec_escape(train.id or ""))..";]"
-	form=form.."textarea[0.5,1.5;7,1;text_outside;"..attrans("Text 
displayed outside on 
train")..";"..(minetest.formspec_escape(train.text_outside or "")).."]"
-	form=form.."textarea[0.5,3;7,1;text_inside;"..attrans("Text displayed 
inside train")..";"..(minetest.formspec_escape(train.text_inside or 
"")).."]"
- 
form=form.."field[7.5,1.75;3,1;line;"..attrans("Line")..";"..(minetest.formspec_escape(train.line 
or "")).."]"
- 
form=form.."field[7.5,3.25;3,1;routingcode;"..attrans("Routingcode")..";"..(minetest.formspec_escape(train.routingcode 
or "")).."]"
+	form=form.."textarea[7.5,0.05;10,1;;"..S("Train ID")..": 
"..(minetest.formspec_escape(train.id or ""))..";]"
+	form=form.."textarea[0.5,1.5;7,1;text_outside;"..S("Text displayed 
outside on train")..";"..(minetest.formspec_escape(train.text_outside or 
"")).."]"
+	form=form.."textarea[0.5,3;7,1;text_inside;"..S("Text displayed inside 
train")..";"..(minetest.formspec_escape(train.text_inside or "")).."]"
+ 
form=form.."field[7.5,1.75;3,1;line;"..S("Line")..";"..(minetest.formspec_escape(train.line 
or "")).."]"
+ 
form=form.."field[7.5,3.25;3,1;routingcode;"..S("Routingcode")..";"..(minetest.formspec_escape(train.routingcode 
or "")).."]"
  	--row 5 : train overview and autocoupling
  	if train.velocity==0 then
-		form=form.."label[0.5,4;Train overview /coupling control:]"
+		form=form.."label[0.5,4;"..S("Train overview /coupling control:").."])"
  		linhei=5
  		local pre_own, pre_wl, owns_any = nil, nil, 
minetest.check_player_privs(pname, "train_admin")
  		for i, tpid in ipairs(train.trainparts) do
  			local ent = advtrains.wagons[tpid]
  			if ent then
  				local roadnumber = ent.roadnumber or ""
-				form = form .. string.format("button[%d,%d;%d,%d;%s;%s]", i, 
linhei, 1, 0.2, "wgprp"..i, roadnumber)
+				form = form.. string.format("button[%d,%d;%d,%d;%s;%s]", i, linhei, 
1, 0.2, "wgprp"..i, roadnumber)
  				local ename = ent.type
-				form = form .. "item_image["..i..","..(linhei+0.5)..";1,1;"..ename.."]"
+				form = form.. "item_image["..i..","..(linhei+0.5)..";1,1;"..ename.."]"
  				if i~=1 then
  					if checklock(pname, ent.owner, pre_own, ent.whitelist, pre_wl) then
-						form = form .. 
"image_button["..(i-0.5)..","..(linhei+1.5)..";1,1;advtrains_discouple.png;dcpl_"..i..";]"
+						form = form.. 
"image_button["..(i-0.5)..","..(linhei+1.5)..";1,1;advtrains_discouple.png;dcpl_"..i..";]"
  					end
  				end
  				if i == data.pos_in_trainparts then
-					form = form .. "box["..(i-0.1)..","..(linhei+0.4)..";1,1;green]"
+					form = form.. "box["..(i-0.1)..","..(linhei+0.4)..";1,1;green]"
  				end
  				pre_own = ent.owner
  				pre_wl = ent.whitelist
@@ -1018,24 +1021,24 @@ function wagon:show_bordcom(pname)
  		end
  		
  		if train.movedir==1 then
-			form = form .. "label["..(#train.trainparts+1)..","..(linhei)..";-->]"
+			form = form.. "label["..(#train.trainparts+1)..","..(linhei)..";-->]"
  		else
-			form = form .. "label[0.5,"..(linhei)..";<--]"
+			form = form.. "label[0.5,"..(linhei)..";<--]"
  		end
  		--check cpl_eid_front and _back of train
  		local couple_front = checkcouple(train.cpl_front)
  		local couple_back = checkcouple(train.cpl_back)
  		if couple_front then
-			form = form .. 
"image_button[0.5,"..(linhei+1)..";1,1;advtrains_couple.png;cpl_f;]"
+			form = form.. 
"image_button[0.5,"..(linhei+1)..";1,1;advtrains_couple.png;cpl_f;]"
  		end
  		if couple_back then
-			form = form .. 
"image_button["..(#train.trainparts+0.5)..","..(linhei+1)..";1,1;advtrains_couple.png;cpl_b;]"
+			form = form.. 
"image_button["..(#train.trainparts+0.5)..","..(linhei+1)..";1,1;advtrains_couple.png;cpl_b;]"
  		end
  		
  	else
-		form=form.."label[0.5,4.5;Train overview / coupling control is only 
shown when the train stands.]"
+		form=form.."label[0.5,4.5;"..S("Train overview / coupling control is 
only shown when the train stands.").."]"
  	end
-	form = form .. "button[0.5,8;3,1;save;Save]"
+	form = form.. "button[0.5,8;3,1;save;"..S("Save").."]"
  	
  	-- Interlocking functionality: If the interlocking module is loaded, 
you can set the signal aspect
  	-- from inside the train
@@ -1045,14 +1048,14 @@ function wagon:show_bordcom(pname)
  			local oci = train.lzb.checkpoints[i]
  			if oci.udata and oci.udata.signal_pos then
  				if 
advtrains.interlocking.db.get_sigd_for_signal(oci.udata.signal_pos) then
-					form = form .. "button[4.5,8;5,1;ilrs;Remote Routesetting]"
+					form = form.. "button[4.5,8;5,1;ilrs;"..S("Remote Routesetting").."]"
  					break
  				end
  			end
  			i=i+1
  		end
  		if train.ars_disable then
-			form = form .. "button[4.5,7;5,1;ilarsenable;Clear 'Disable ARS' flag]"
+			form = form.. "button[4.5,7;5,1;ilarsenable;"..S("Clear 'Disable 
ARS' flag").."]"
  		end
  	end
  	
@@ -1269,7 +1272,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, S("Doors are closed. Use 
Sneak+rightclick to ignore the closed doors and get off."))
  	end
  	if fields.off then
  		self:get_off(no)
@@ -1278,7 +1281,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, attrans("You are not allowed to access the driver stand.")
+		return false, S("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:get_pos(), 
self:train().text_outside)
@@ -1298,7 +1301,7 @@ end
   function advtrains.safe_decouple_wagon(w_id, pname, try_run)
  	if not minetest.check_player_privs(pname, "train_operator") then
-		minetest.chat_send_player(pname, "Missing train_operator privilege")
+		minetest.chat_send_player(pname, S("Missing train_operator privilege"))
  		return false
  	end
  	local data = advtrains.wagons[w_id]
@@ -1316,7 +1319,7 @@ function advtrains.safe_decouple_wagon(w_id, 
pname, try_run)
  	end
  	
  	if not checklock(pname, data.owner, owdata.owner, data.whitelist, 
owdata.whitelist) then
-		minetest.chat_send_player(pname, "Not allowed to do this.")
+		minetest.chat_send_player(pname, S("Not allowed to do this."))
  		return false
  	end
  	
@@ -1341,7 +1344,7 @@ function advtrains.get_wagon_prototype(data)
  	end
  	local rt, proto = advtrains.resolve_wagon_alias(wt)
  	if not rt then
-		--atwarn("Unable to load wagon type",wt,", using placeholder")
+		--atwarn(S("Unable to load wagon type"),wt,S(", using placeholder"))
  		rt = "advtrains:wagon_placeholder"
  		proto = advtrains.wagon_prototypes[rt]
  	end
@@ -1378,7 +1381,7 @@ function 
advtrains.standard_inventory_formspec(self, pname, invname)
  	local r = "size[8,11]"..
  			"list["..invname..";box;0,0;8,3;]"
  	if data.owner==pname then
-		r = r .. "button_exit[0,9;4,1;prop;"..attrans("Wagon properties").."]"
+		r = r .. "button_exit[0,9;4,1;prop;"..S("Wagon properties").."]"
  	end
  	r = r .. "list[current_player;main;0,5;8,4;]"..
  			"listring[]"
@@ -1435,7 +1438,7 @@ function advtrains.register_wagon(sysname_p, 
prototype, desc, inv_img, nincreati
  					return itemstack
  				end
  				if not minetest.check_player_privs(placer, {train_operator = true 
}) then
-					minetest.chat_send_player(pname, "You don't have the 
train_operator privilege.")
+					minetest.chat_send_player(pname, S("You don't have the 
train_operator privilege."))
  					return itemstack
  				end
  				if not minetest.check_player_privs(placer, {train_admin = true }) 
and minetest.is_protected(pos, placer:get_player_name()) then
@@ -1447,7 +1450,7 @@ function advtrains.register_wagon(sysname_p, 
prototype, desc, inv_img, nincreati
  				
  				local prevpos = advtrains.get_adjacent_rail(pos, tconns, plconnid)
  				if not prevpos then
-					minetest.chat_send_player(pname, "The track you are trying to 
place the wagon on is not long enough!")
+					minetest.chat_send_player(pname, S("The track you are trying to 
place the wagon on is not long enough!"))
  					return
  				end
  				
diff --git a/advtrains_line_automation/scheduler.lua 
b/advtrains_line_automation/scheduler.lua
index 6025b02..5cba0a0 100644
--- a/advtrains_line_automation/scheduler.lua
+++ b/advtrains_line_automation/scheduler.lua
@@ -59,7 +59,7 @@ function sched.run()
  				-- run it
  				callbacks[elem.e](elem.d)
  			else
-				atwarn("[lines][scheduler] No callback to handle schedule",elem)
+				atwarn("[lines][scheduler] "..S("No callback to handle schedule"),elem)
  			end
  			cnt=cnt+1
  			ucn = units_cnt[elem.u]
diff --git a/advtrains_line_automation/stoprail.lua 
b/advtrains_line_automation/stoprail.lua
index ba3977d..89f4a09 100644
--- a/advtrains_line_automation/stoprail.lua
+++ b/advtrains_line_automation/stoprail.lua
@@ -1,6 +1,8 @@
  -- stoprail.lua
  -- adds "stop rail". Recognized by lzb. (part of behavior is 
implemented there)
  +-- Translation
+S = attrans
   local function to_int(n)
  	--- Disallow floating-point numbers
@@ -28,7 +30,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, attrans("You are not allowed to 
configure this track."))
+		minetest.chat_send_player(pname, S("You are not allowed to configure 
this track."))
  		return
  	end
  	
@@ -51,19 +53,19 @@ local function show_stoprailform(pos, player)
  	
  	local form = "size[8,7]"
  	form = form.."style[stn,ars;font=mono]"
-	form = form.."field[0.8,0.8;2,1;stn;"..attrans("Station 
Code")..";"..minetest.formspec_escape(stdata.stn).."]"
-	form = form.."field[2.8,0.8;5,1;stnname;"..attrans("Station 
Name")..";"..minetest.formspec_escape(stnname).."]"
-	form = form.."field[0.80,2.0;1.75,1;ddelay;"..attrans("Door 
Delay")..";"..minetest.formspec_escape(stdata.ddelay).."]"
-	form = form.."field[2.55,2.0;1.75,1;speed;"..attrans("Dep. 
Speed")..";"..minetest.formspec_escape(stdata.speed).."]"
-	form = 
form.."field[4.30,2.0;1.75,1;track;"..attrans("Track")..";"..minetest.formspec_escape(stdata.track).."]"
-	form = form.."field[6.05,2.0;1.75,1;wait;"..attrans("Stop 
Time")..";"..stdata.wait.."]"
-	form = form.."label[0.5,2.6;"..attrans("Door Side").."]"
-	form = 
form.."dropdown[0.51,3.0;2;doors;Left,Right,Closed;"..door_dropdown[stdata.doors].."]"
-	form = form.."checkbox[3.00,2.4;reverse;"..attrans("Reverse 
train")..";"..(stdata.reverse and "true" or "false").."]"
-	form = form.."checkbox[3.00,2.8;kick;"..attrans("Kick out 
passengers")..";"..(stdata.kick and "true" or "false").."]"
-	form = form.."checkbox[3.00,3.2;waitsig;"..attrans("Wait for signal to 
clear")..";"..(stdata.waitsig and "true" or "false").."]"
-	form = form.."textarea[0.8,4.2;7,2;ars;Trains stopping here (ARS 
rules);"..advtrains.interlocking.ars_to_text(stdata.ars).."]"
-	form = form.."button[0.5,6;7,1;save;"..attrans("Save").."]"
+	form = form.."field[0.8,0.8;2,1;stn;"..S("Station 
Code")..";"..minetest.formspec_escape(stdata.stn).."]"
+	form = form.."field[2.8,0.8;5,1;stnname;"..S("Station 
Name")..";"..minetest.formspec_escape(stnname).."]"
+	form = form.."field[0.80,2.0;1.75,1;ddelay;"..S("Door 
Delay")..";"..minetest.formspec_escape(stdata.ddelay).."]"
+	form = form.."field[2.55,2.0;1.75,1;speed;"..S("Dep. 
Speed")..";"..minetest.formspec_escape(stdata.speed).."]"
+	form = 
form.."field[4.30,2.0;1.75,1;track;"..S("Track")..";"..minetest.formspec_escape(stdata.track).."]"
+	form = form.."field[6.05,2.0;1.75,1;wait;"..S("Stop 
Time")..";"..stdata.wait.."]"
+	form = form.."label[0.5,2.6;"..S("Door Side").."]"
+	form = 
form.."dropdown[0.51,3.0;2;doors;"..S("Left")..","..S("Right")..","..S("Closed")..";"..door_dropdown[stdata.doors].."]"
+	form = form.."checkbox[3.00,2.4;reverse;"..S("Reverse 
train")..";"..(stdata.reverse and "true" or "false").."]"
+	form = form.."checkbox[3.00,2.8;kick;"..S("Kick out 
passengers")..";"..(stdata.kick and "true" or "false").."]"
+	form = form.."checkbox[3.00,3.2;waitsig;"..S("Wait for signal to 
clear")..";"..(stdata.waitsig and "true" or "false").."]"
+	form = form.."textarea[0.8,4.2;7,2;ars;"..S("Trains stopping here (ARS 
rules)")..";"..advtrains.interlocking.ars_to_text(stdata.ars).."]"
+	form = form.."button[0.5,6;7,1;save;"..S("Save").."]"
  	
  	minetest.show_formspec(pname, "at_lines_stop_"..pe, form)
  end
@@ -74,7 +76,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, attrans("You are not allowed to 
configure this track."))
+			minetest.chat_send_player(pname, S("You are not allowed to configure 
this track."))
  			return
  		end
  		
@@ -98,7 +100,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, attrans("Station code \"@1\" 
already exists and is owned by @2.", fields.stn, stn.owner))
+						minetest.chat_send_player(pname, S("Station code \"@1\" already 
exists and is owned by @2.", fields.stn, stn.owner))
  						show_stoprailform(pos,player)
  						return
  					end
@@ -112,7 +114,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, attrans("This station is owned by 
@1. You are not allowed to edit its name.", stn.owner))
+					minetest.chat_send_player(pname, S("This station is owned by @1. 
You are not allowed to edit its name.", stn.owner))
  				end
  			end
  			
@@ -183,8 +185,8 @@ local adefunc = function(def, preset, suffix, rotation)
  							if stdata.ars and (stdata.ars.default or 
advtrains.interlocking.ars_check_rule_match(stdata.ars, train) ) then
  								advtrains.lzb_add_checkpoint(train, index, 2, nil)
  								local stn = advtrains.lines.stations[stdata.stn]
-								local stnname = stn and stn.name or "Unknown Station"
-								train.text_inside = "Next Stop:\n"..stnname
+								local stnname = stn and stn.name or S("Unknown Station")
+								train.text_inside = S("Next Stop:\n")..stnname
  								advtrains.interlocking.ars_set_disable(train, true)
  							end
  						end
@@ -200,7 +202,7 @@ local adefunc = function(def, preset, suffix, rotation)
  						
  						if stdata.ars and (stdata.ars.default or 
advtrains.interlocking.ars_check_rule_match(stdata.ars, train) ) then
  							local stn = advtrains.lines.stations[stdata.stn]
-							local stnname = stn and stn.name or "Unknown Station"
+							local stnname = stn and stn.name or S("Unknown Station")
  							
  							-- Send ATC command and set text
  							advtrains.atc.train_set_command(train, "B0 W 
O"..stdata.doors..(stdata.kick and "K" or "")
@@ -225,7 +227,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=attrans("Station/Stop Track"),
+		description=S("Station/Stop Track"),
  		formats={},
  		get_additional_definiton = adefunc,
  	}, advtrains.trackpresets.t_30deg_straightonly

[PATCH v2 2/3] Basic trains french translations Export this patch

Include update-translations.sh modification to remove file line numbers.

# Second patch of a serie of three to be applied to the master branch of advtrains on commit #0b7fdc6
#
# ATTENTION : 
#
# 1. These patches come from a derivation of the l10n branch which, afaik, is not yet merged in the master branch.
# I guess that applying these patches will shortcut the l10n branch.
# 2. These patches contain translations strings of for the modification I proposed some month ago for basic_trains which,
# afaik, are not yet merged in its master branch.



---
 advtrains/po/advtrains.pot          | 14 ++++++++++++--
 advtrains/po/de.po                  | 16 ++++++++++++++--
 advtrains/po/fr.po                  | 28 +++++++++++++++++++---------
 advtrains/po/update-translations.sh |  1 +
 advtrains/po/zh_CN.po               | 16 ++++++++++++++--
 advtrains/po/zh_TW.po               | 16 ++++++++++++++--
 6 files changed, 74 insertions(+), 17 deletions(-)

diff --git a/advtrains/po/advtrains.pot b/advtrains/po/advtrains.pot
index ae7fb32..ade6a33 100644
--- a/advtrains/po/advtrains.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: 2024-12-06 21:17+0100\n"
"POT-Creation-Date: 2024-12-08 15:21+0100\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"
@@ -558,6 +558,11 @@ msgstr ""
msgid "Driver Stand (left)"
msgstr ""

#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
msgid "Driver Stand"
msgstr ""

#: advtrains_train_industrial/init.lua
msgid "Industrial Train Engine"
msgstr ""
@@ -578,10 +583,15 @@ msgstr ""
msgid "Japanese Train Inter-Wagon Connection"
msgstr ""

#: advtrains_train_japan/init.lua
#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
msgid "Driver stand"
msgstr ""

#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
#: advtrains_train_subway/init.lua
msgid "Passenger area"
msgstr ""

#: advtrains_train_japan/init.lua
msgid "Japanese Train Engine"
msgstr ""
diff --git a/advtrains/po/de.po b/advtrains/po/de.po
index 2d43078..8a7e009 100644
--- a/advtrains/po/de.po
+++ b/advtrains/po/de.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: 2024-12-06 21:17+0100\n"
"POT-Creation-Date: 2024-12-08 15:21+0100\n"
"PO-Revision-Date: 2023-10-09 11:18+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: German\n"
@@ -595,6 +595,12 @@ msgstr "Sie dürfen ohne das „@1“ keinen passiven LuaATC-Bauteil benennen."
msgid "Big Industrial Train Engine"
msgstr "Große Industrielle Lokomotive"

#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
#, fuzzy
msgid "Driver Stand"
msgstr "Führerstand"

#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr "Führerstand Links"
@@ -615,7 +621,7 @@ msgstr "Tankwaggon"
msgid "Industrial wood wagon"
msgstr "Holztransportwaggon"

#: advtrains_train_japan/init.lua
#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
msgid "Driver stand"
msgstr "Führerstand"

@@ -631,6 +637,12 @@ msgstr "Waggonzwischenverbindung Japanischer Personenzüge"
msgid "Japanese Train Wagon"
msgstr "Japanischer Personenzug-Passagierwaggon"

#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
#: advtrains_train_subway/init.lua
#, fuzzy
msgid "Passenger area"
msgstr "Passagierwaggon"

#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr "Güterwaggon"
diff --git a/advtrains/po/fr.po b/advtrains/po/fr.po
index 6404583..3c8f5f6 100644
--- a/advtrains/po/fr.po
+++ b/advtrains/po/fr.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: advtrains\n"
"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
"POT-Creation-Date: 2024-12-06 21:17+0100\n"
"PO-Revision-Date: 2024-11-02 21:31+0100\n"
"POT-Creation-Date: 2024-12-08 15:21+0100\n"
"PO-Revision-Date: 2024-12-04 15:55+0100\n"
"Last-Translator: Tanavit <tanavit@posto.ovh>\n"
"Language-Team: French\n"
"Language: fr\n"
@@ -327,18 +327,19 @@ msgstr ""

#: advtrains/wagonprop_tool.lua
msgid "Insufficient privileges to use this!"
msgstr ""
msgstr "Privilèges insuffisants pour utiliser ceci !"

#: advtrains/wagonprop_tool.lua
#, fuzzy
msgid "Wagon Properties Tool"
msgstr "Propriétés du wagon"
msgstr "Outil de propriété du wagon"

#: advtrains/wagonprop_tool.lua
msgid ""
"Wagon Properties Tool\n"
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""
"Outil de propriété du wagon\n"
"Frappez un wagon pour voir et modifier ses propriétés"

#: advtrains/wagons.lua
msgid "(Doors closed)"
@@ -401,9 +402,8 @@ msgid "The wagon's inventory is not empty."
msgstr "Le stock de ce wagon n'est pas vide."

#: advtrains/wagons.lua
#, fuzzy
msgid "This Wagon ID"
msgstr "Ce wagon est plein."
msgstr "Identificateur du wagon"

#: advtrains/wagons.lua
msgid "This wagon has no seats."
@@ -419,7 +419,7 @@ msgstr "Ce wagon est la propriété de @1, vous ne pouvez pas le détruire."

#: advtrains/wagons.lua
msgid "Train ID"
msgstr ""
msgstr "Identificateur du train"

#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
@@ -595,6 +595,11 @@ msgstr "Vous ne pouvez nommer un composant LuaATC passif sans le privilege @1."
msgid "Big Industrial Train Engine"
msgstr "Grosse locomotive industrielle"

#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
msgid "Driver Stand"
msgstr "Poste de pilotage"

#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr "Poste de pilotage (gauche)"
@@ -615,7 +620,7 @@ msgstr "Wagon-citerne industriel"
msgid "Industrial wood wagon"
msgstr "Wagon grumier industriel"

#: advtrains_train_japan/init.lua
#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
msgid "Driver stand"
msgstr "Poste de pilotage"

@@ -631,6 +636,11 @@ msgstr "Passage inter-voiture de train Japonais"
msgid "Japanese Train Wagon"
msgstr "Voiture Japonaise"

#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
#: advtrains_train_subway/init.lua
msgid "Passenger area"
msgstr "Voiture Passager"

#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr "Wagon de frêt"
diff --git a/advtrains/po/update-translations.sh b/advtrains/po/update-translations.sh
index 4c22c85..1b919d9 100755
--- a/advtrains/po/update-translations.sh
+++ b/advtrains/po/update-translations.sh
@@ -7,6 +7,7 @@ BTDIR="$ATDIR/../basic_trains"
POTFILE="$PODIR/advtrains.pot"

xgettext \
	-v -v -v \
	-D "$ATDIR" \
	-D "$BTDIR" \
	-d advtrains \
diff --git a/advtrains/po/zh_CN.po b/advtrains/po/zh_CN.po
index 9f5f84f..1dbf08f 100644
--- a/advtrains/po/zh_CN.po
+++ b/advtrains/po/zh_CN.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: 2024-12-06 21:17+0100\n"
"POT-Creation-Date: 2024-12-08 15:21+0100\n"
"PO-Revision-Date: 2023-10-09 11:24+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: Chinese (Simplified)\n"
@@ -567,6 +567,12 @@ msgstr "您没有“@1”权限,不能命名被动元件。"
msgid "Big Industrial Train Engine"
msgstr "大型工业用火车头"

#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
#, fuzzy
msgid "Driver Stand"
msgstr "司机座位"

#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr "左侧司机座位"
@@ -587,7 +593,7 @@ msgstr "液体运输车厢"
msgid "Industrial wood wagon"
msgstr "木材运输车厢"

#: advtrains_train_japan/init.lua
#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
msgid "Driver stand"
msgstr "司机座位"

@@ -603,6 +609,12 @@ msgstr "日本火车车钩"
msgid "Japanese Train Wagon"
msgstr "高速列车车厢"

#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
#: advtrains_train_subway/init.lua
#, fuzzy
msgid "Passenger area"
msgstr "客车"

#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr "货运车厢"
diff --git a/advtrains/po/zh_TW.po b/advtrains/po/zh_TW.po
index 97dab1b..56b6531 100644
--- a/advtrains/po/zh_TW.po
+++ b/advtrains/po/zh_TW.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: 2024-12-06 21:17+0100\n"
"POT-Creation-Date: 2024-12-08 15:21+0100\n"
"PO-Revision-Date: 2023-10-09 11:31+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: Chinese (Traditional)\n"
@@ -567,6 +567,12 @@ msgstr "您沒有「@1」許可權,不能命名這個元件。"
msgid "Big Industrial Train Engine"
msgstr "大型工業用火車頭"

#: advtrains_train_industrial/init.lua advtrains_train_japan/init.lua
#: advtrains_train_steam/init.lua advtrains_train_subway/init.lua
#, fuzzy
msgid "Driver Stand"
msgstr "司機座位"

#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (left)"
msgstr "左側司機座位"
@@ -587,7 +593,7 @@ msgstr "液體運輸車廂"
msgid "Industrial wood wagon"
msgstr "木材運輸車廂"

#: advtrains_train_japan/init.lua
#: advtrains_train_japan/init.lua advtrains_train_subway/init.lua
msgid "Driver stand"
msgstr "司機座位"

@@ -603,6 +609,12 @@ msgstr "日本火車連結器"
msgid "Japanese Train Wagon"
msgstr "高速列車車廂"

#: advtrains_train_japan/init.lua advtrains_train_steam/init.lua
#: advtrains_train_subway/init.lua
#, fuzzy
msgid "Passenger area"
msgstr "客車"

#: advtrains_train_steam/init.lua
msgid "Box Wagon"
msgstr "貨運車廂"
-- 
2.30.2

[PATCH v2 3/3] Translations improvement. Export this patch

File :
- advtrains : init.lua wagons.lua
- advtrains_line_automation : scheduler.lua stoprail.lua

Actions :

- Conversion of attrans() to S()
- Insertion of S() function calls where needed.

Miscellaneous :
- Removing of personnal tries on update-translastions.sh which should
not have been committed.

# Third and last patch of a serie of three to be applied to the master branch of advtrains on commit #0b7fdc6
#
# ATTENTION : 
#
# 1. These patches come from a derivation of the l10n branch which, afaik, is not yet merged in the master branch.
# I guess that applying these patches will shortcut the l10n branch.
# 2. These patches contain translations strings of for the modification I proposed some month ago for basic_trains which,
# afaik, are not yet merged in its master branch.




---
 advtrains/init.lua                      |  50 +--
 advtrains/po/advtrains.pot              | 366 +++++++++++++++++++--
 advtrains/po/de.po                      | 400 ++++++++++++++++++++---
 advtrains/po/fr.po                      | 413 +++++++++++++++++++++---
 advtrains/po/update-translations.sh     |   1 -
 advtrains/po/zh_CN.po                   | 388 +++++++++++++++++++---
 advtrains/po/zh_TW.po                   | 388 +++++++++++++++++++---
 advtrains/wagons.lua                    | 121 +++----
 advtrains_line_automation/scheduler.lua |   2 +-
 advtrains_line_automation/stoprail.lua  |  44 +--
 10 files changed, 1870 insertions(+), 303 deletions(-)

diff --git a/advtrains/init.lua b/advtrains/init.lua
index 0d76ec0..91b2b58 100644
--- a/advtrains/init.lua
+++ b/advtrains/init.lua
@@ -73,7 +73,7 @@ end
local no_action=false

local function reload_saves()
	atwarn("Restoring saved state in 1 second...")
	atwarn(S("Restoring saved state in 1 second..."))
	no_action=true
	advtrains.lock_path_inval = false
	--read last save state and continue, as if server was restarted
@@ -84,7 +84,7 @@ local function reload_saves()
	end
	minetest.after(1, function()
		advtrains.load()
		atwarn("Reload successful!")
		atwarn(S("Reload successful!"))
		advtrains.ndb.restore_all()
	end)
end
@@ -349,7 +349,7 @@ function advtrains.avt_load()
				end
			end
			for wid, _ in pairs(todel) do
				atwarn("Removing unused wagon", wid, "from wagon_save table.")
				atwarn(S("Removing unused wagon"), wid, S("from wagon_save table."))
				advtrains.wagon_save[wid]=nil
			end
		else
@@ -414,7 +414,7 @@ function advtrains.load_version_4()
			end
		end
		for wid, _ in pairs(todel) do
			atwarn("Removing unused wagon", wid, "from wagon_save table.")
			atwarn(S("Removing unused wagon"), wid, S("from wagon_save table."))
			advtrains.wagon_save[wid]=nil
		end
	end
@@ -502,7 +502,7 @@ advtrains.avt_save = function(remove_players_from_wagons)
			--then save it
			tmp_trains[id]=v
		else
			atwarn("Train",id,"had no wagons left because of some bug. It is being deleted. Wave it goodbye!")
			atwarn(S("Train"),id,S("had no wagons left because of some bug. It is being deleted. Wave it goodbye!"))
			advtrains.remove_train(id)
		end
	end
@@ -583,7 +583,7 @@ advtrains.avt_save = function(remove_players_from_wagons)
	local succ, err = serialize_lib.save_atomic_multiple(parts_table, advtrains.fpath.."_", callbacks_table)
	
	if not succ then
		atwarn("Saving failed: "..err)
		atwarn(S("Saving failed: ")..err)
	else
		-- store version
		advtrains.save_component(4, "version")
@@ -686,7 +686,7 @@ end
function advtrains.save(remove_players_from_wagons)
	if not init_load then
		--wait... we haven't loaded yet?!
		atwarn("Instructed to save() but load() was never called!")
		atwarn(S("Instructed to save() but load() was never called!"))
		return
	end
	
@@ -715,7 +715,7 @@ function advtrains.save(remove_players_from_wagons)
end
minetest.register_on_shutdown(function()
	if within_mainstep then
		atwarn("Crash during advtrains main step - skipping the shutdown save operation to not save inconsistent data!")
		atwarn(S("Crash during advtrains main step - skipping the shutdown save operation to not save inconsistent data!"))
	else
		advtrains.save()
	end
@@ -727,10 +727,10 @@ end)
minetest.register_chatcommand("at_empty_seats",
	{
        params = "", -- Short parameter description
        description = "Detach all players, especially the offline ones, from all trains. Use only when no one serious is on a train.", -- Full description
        description = S("Detach all players, especially the offline ones, from all trains. Use only when no one serious is on a train."), -- Full description
        privs = {train_operator=true, server=true}, -- Require the "privs" privilege to run
        func = function(name, param)
				atwarn("Data is being saved. While saving, advtrains will remove the players from trains. Save files will be reloaded afterwards!")
				atwarn(S("Data is being saved. While saving, advtrains will remove the players from trains. Save files will be reloaded afterwards!"))
				advtrains.save(true)
				reload_saves()
        end,
@@ -739,60 +739,60 @@ minetest.register_chatcommand("at_empty_seats",
minetest.register_chatcommand("at_reroute",
	{
        params = "", 
        description = "Delete all train routes, force them to recalculate", 
        description = S("Delete all train routes, force them to recalculate"), 
        privs = {train_operator=true}, -- Only train operator is required, since this is relatively safe.
        func = function(name, param)
				advtrains.invalidate_all_paths()
				return true, "Successfully invalidated train routes"
				return true, S("Successfully invalidated train routes")
        end,
})

minetest.register_chatcommand("at_whereis",
	{
		params = "<train id>",
		description = "Returns the position of the train with the given id",
		description = S("Returns the position of the train with the given id"),
		privs = {train_operator = true},
		func = function(name,param)
			local train = advtrains.trains[param] 
			if not train or not train.last_pos then
				return false, "Train "..param.." does not exist or is invalid"
				return false, S("Train ")..param..S(" does not exist or is invalid")
			else
				return true, "Train "..param.." is at "..minetest.pos_to_string(train.last_pos)
				return true, S("Train ")..param..S(" is at ")..minetest.pos_to_string(train.last_pos)
			end
		end,
})
minetest.register_chatcommand("at_tp",
	{
		params = "<train id>",
		description = "Teleports you to the position of the train with the given id",
		description = S("Teleports you to the position of the train with the given id"),
		privs = {train_operator = true, teleport = true},
		func = function(name,param)
			local train = advtrains.trains[param]
			if not train or not train.last_pos then
				return false, "Train "..param.." does not exist or is invalid"
				return false, S("Train ")..param..S(" does not exist or is invalid")
			else
				minetest.get_player_by_name(name):set_pos(train.last_pos)
				return true, "Teleporting to train "..param
				return true, S("Teleporting to train ")..param
			end
		end,
})
minetest.register_chatcommand("at_disable_step",
	{
        params = "<yes/no>", 
        description = "Disable the advtrains globalstep temporarily", 
        description = S("Disable the advtrains globalstep temporarily"), 
        privs = {server=true},
        func = function(name, param)
			if minetest.is_yes(param) then
				-- disable everything, and turn off saving
				no_action = true;
				atwarn("The advtrains globalstep has been disabled. Trains are not moving, and no data is saved! Run '/at_disable_step no' to enable again!")
				return true, "Disabled advtrains successfully"
				atwarn(S("The advtrains globalstep has been disabled. Trains are not moving, and no data is saved! Run '/at_disable_step no' to enable again!"))
				return true, S("Disabled advtrains successfully")
			elseif no_action then
				atwarn("Re-enabling advtrains globalstep...")
				atwarn(S("Re-enabling advtrains globalstep..."))
				reload_saves()
				return true
			else
				return false, "Advtrains is already running normally!"
				return false, S("Advtrains is already running normally!")
			end
        end,
})
@@ -800,10 +800,10 @@ minetest.register_chatcommand("at_disable_step",
minetest.register_chatcommand("at_status",
	{
        params = "", 
        description = "Print advtrains status info", 
        description = S("Print advtrains status info"), 
        privs = {train_operator = true},
        func = function(name, param)
			return true, advtrains.print_concat_table({"Advtrains Status: no_action",no_action,"slowdown",advtrains.global_slowdown,"(log",math.log(advtrains.global_slowdown),")"})
			return true, advtrains.print_concat_table({S("Advtrains Status: no_action"),no_action,S("slowdown"),advtrains.global_slowdown,S("(log"),math.log(advtrains.global_slowdown),")"})
        end,
})

diff --git a/advtrains/po/advtrains.pot b/advtrains/po/advtrains.pot
index ade6a33..cd6ea75 100644
--- a/advtrains/po/advtrains.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: 2024-12-08 15:21+0100\n"
"POT-Creation-Date: 2025-03-25 15:40+0100\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"
@@ -39,7 +39,8 @@ msgstr ""
msgid "Digiline channel"
msgstr ""

#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains/atc.lua advtrains/wagons.lua
#: advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr ""
@@ -149,6 +150,127 @@ msgstr ""
msgid "Chimney"
msgstr ""

#: advtrains/init.lua
msgid "Restoring saved state in 1 second..."
msgstr ""

#: advtrains/init.lua
msgid "Reload successful!"
msgstr ""

#: advtrains/init.lua
msgid "Removing unused wagon"
msgstr ""

#: advtrains/init.lua
msgid "from wagon_save table."
msgstr ""

#: advtrains/init.lua
msgid "Train"
msgstr ""

#: advtrains/init.lua
msgid ""
"had no wagons left because of some bug. It is being deleted. Wave it goodbye!"
msgstr ""

#: advtrains/init.lua
msgid "Saving failed: "
msgstr ""

#: advtrains/init.lua
msgid "Instructed to save() but load() was never called!"
msgstr ""

#: advtrains/init.lua
msgid ""
"Crash during advtrains main step - skipping the shutdown save operation to "
"not save inconsistent data!"
msgstr ""

#: advtrains/init.lua
msgid ""
"Detach all players, especially the offline ones, from all trains. Use only "
"when no one serious is on a train."
msgstr ""

#: advtrains/init.lua
msgid ""
"Data is being saved. While saving, advtrains will remove the players from "
"trains. Save files will be reloaded afterwards!"
msgstr ""

#: advtrains/init.lua
msgid "Delete all train routes, force them to recalculate"
msgstr ""

#: advtrains/init.lua
msgid "Successfully invalidated train routes"
msgstr ""

#: advtrains/init.lua
msgid "Returns the position of the train with the given id"
msgstr ""

#: advtrains/init.lua
msgid " does not exist or is invalid"
msgstr ""

#: advtrains/init.lua
msgid "Train "
msgstr ""

#: advtrains/init.lua
msgid " is at "
msgstr ""

#: advtrains/init.lua
msgid "Teleports you to the position of the train with the given id"
msgstr ""

#: advtrains/init.lua
msgid "Teleporting to train "
msgstr ""

#: advtrains/init.lua
msgid "Disable the advtrains globalstep temporarily"
msgstr ""

#: advtrains/init.lua
msgid ""
"The advtrains globalstep has been disabled. Trains are not moving, and no "
"data is saved! Run '/at_disable_step no' to enable again!"
msgstr ""

#: advtrains/init.lua
msgid "Disabled advtrains successfully"
msgstr ""

#: advtrains/init.lua
msgid "Re-enabling advtrains globalstep..."
msgstr ""

#: advtrains/init.lua
msgid "Advtrains is already running normally!"
msgstr ""

#: advtrains/init.lua
msgid "Print advtrains status info"
msgstr ""

#: advtrains/init.lua
msgid "(log"
msgstr ""

#: advtrains/init.lua
msgid "Advtrains Status: no_action"
msgstr ""

#: advtrains/init.lua
msgid "slowdown"
msgstr ""

#: advtrains/misc_nodes.lua
msgid "@1 Platform (low)"
msgstr ""
@@ -231,68 +353,64 @@ msgstr ""
msgid "Andrew's Cross"
msgstr ""

#: advtrains/trackplacer.lua
msgid ""
"Track Worker Tool\n"
"\n"
"Left-click: change rail type (straight/curve/switch)\n"
"Right-click: rotate object"
msgstr ""

#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
#: advtrains/track_reg_helper.lua advtrains/tracks.lua
msgid "This track can not be removed!"
msgstr ""

#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
#: advtrains/track_reg_helper.lua
msgid "@1 Slope"
msgstr ""

#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker."
#: advtrains/track_reg_helper.lua
msgid "Can't place: not pointing at node"
msgstr ""

#: advtrains/trackplacer.lua
msgid "This track can not be changed."
#: advtrains/track_reg_helper.lua
msgid "Can't place: space occupied!"
msgstr ""

#: advtrains/tracks.lua
msgid "This track can not be removed."
#: advtrains/track_reg_helper.lua
msgid "Can't place: Not enough slope items left (@1 required)"
msgstr ""

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
#: advtrains/track_reg_helper.lua
msgid "Can't place: There's no slope of length @1"
msgstr ""

#: advtrains/tracks.lua
msgid "There's a Track Circuit Break here."
#: advtrains/track_reg_helper.lua
msgid "Can't place: no supporting node at upper end."
msgstr ""

#: advtrains/tracks.lua
msgid "There's a Signal Influence Point here."
#: advtrains/trackplacer.lua
msgid ""
"Track Worker Tool\n"
"\n"
"Left-click: change rail type (straight/curve/switch)\n"
"Right-click: rotate object"
msgstr ""

#: advtrains/tracks.lua
msgid "@1 Slope"
#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker!"
msgstr ""

#: advtrains/tracks.lua
msgid "Can't place slope: not pointing at node."
#: advtrains/trackplacer.lua
msgid "This track can not be rotated!"
msgstr ""

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker!"
msgstr ""

#: advtrains/tracks.lua
msgid "Can't place slope: Not enough slope items left (@1 required)."
msgid "Position is occupied by a train."
msgstr ""

#: advtrains/tracks.lua
msgid "Can't place slope: There's no slope of length @1."
msgid "There's a Track Circuit Break here."
msgstr ""

#: advtrains/tracks.lua
msgid "Can't place slope: no supporting node at upper end."
msgid "There's a Signal Influence Point here."
msgstr ""

#: advtrains/trainhud.lua
@@ -313,10 +431,24 @@ msgstr ""
msgid "Insufficient privileges to use this!"
msgstr ""

#: advtrains/wagons.lua
msgid "Uninitialized init="
msgstr ""

#: advtrains/wagons.lua
msgid "Uninitialized, removing"
msgstr ""

#: advtrains/wagons.lua
msgid "This wagon is owned by @1, you can't destroy it."
msgstr ""

#: advtrains/wagons.lua
msgid ""
"Destroying wagon with inventory, but inventory is not found? Shouldn't "
"happen!"
msgstr ""

#: advtrains/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr ""
@@ -331,6 +463,26 @@ msgid ""
"sure, hold Sneak and left-click the wagon."
msgstr ""

#: advtrains/wagons.lua
msgid " wagon:destroy(): data is not set!"
msgstr ""

#: advtrains/wagons.lua
msgid "!!! Train off track !!!"
msgstr ""

#: advtrains/wagons.lua
msgid " units"
msgstr ""

#: advtrains/wagons.lua
msgid "Liquid: "
msgstr ""

#: advtrains/wagons.lua
msgid "Liquid: empty"
msgstr ""

#: advtrains/wagons.lua
msgid "Show Inventory"
msgstr ""
@@ -379,6 +531,30 @@ msgstr ""
msgid "This Wagon ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Allow these players to access your wagon:"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon road number:"
msgstr ""

#: advtrains/wagons.lua
msgid "Freight Code:"
msgstr ""

#: advtrains/wagons.lua
msgid "Prev FC"
msgstr ""

#: advtrains/wagons.lua
msgid "Current FC: "
msgstr ""

#: advtrains/wagons.lua
msgid "Next FC:"
msgstr ""

#: advtrains/wagons.lua
msgid "Save wagon properties"
msgstr ""
@@ -403,6 +579,22 @@ msgstr ""
msgid "Routingcode"
msgstr ""

#: advtrains/wagons.lua
msgid "Train overview /coupling control:"
msgstr ""

#: advtrains/wagons.lua
msgid "Train overview / coupling control is only shown when the train stands."
msgstr ""

#: advtrains/wagons.lua
msgid "Remote Routesetting"
msgstr ""

#: advtrains/wagons.lua
msgid "Clear 'Disable ARS' flag"
msgstr ""

#: advtrains/wagons.lua
msgid ""
"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
@@ -413,6 +605,46 @@ msgstr ""
msgid "You are not allowed to access the driver stand."
msgstr ""

#: advtrains/wagons.lua
msgid "Missing train_operator privilege"
msgstr ""

#: advtrains/wagons.lua
msgid "Not allowed to do this."
msgstr ""

#: advtrains/wagons.lua
msgid "You don't have the train_operator privilege."
msgstr ""

#: advtrains/wagons.lua
msgid "The track you are trying to place the wagon on is not long enough!"
msgstr ""

#: advtrains/wagons.lua
msgid "Please specify a player name to transfer ownership to."
msgstr ""

#: advtrains/wagons.lua
msgid "That player does not exist!"
msgstr ""

#: advtrains/wagons.lua
msgid "Not a valid wagon id."
msgstr ""

#: advtrains/wagons.lua
msgid "That wagon does not exist!"
msgstr ""

#: advtrains/wagons.lua
msgid "You have been given ownership of wagon @1"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon @1 ownership changed from @2 to @3"
msgstr ""

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""
@@ -437,6 +669,10 @@ msgstr ""
msgid "Point Speed Restriction Track"
msgstr ""

#: advtrains_line_automation/scheduler.lua
msgid "No callback to handle schedule"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr ""
@@ -465,6 +701,18 @@ msgstr ""
msgid "Door Side"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Closed"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Left"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Right"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr ""
@@ -473,6 +721,14 @@ msgstr ""
msgid "Kick out passengers"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Wait for signal to clear"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Trains stopping here (ARS rules)"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Station code \"@1\" already exists and is owned by @2."
msgstr ""
@@ -481,6 +737,14 @@ msgstr ""
msgid "This station is owned by @1. You are not allowed to edit its name."
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Unknown Station"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Next Stop:\n"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Station/Stop Track"
msgstr ""
@@ -550,6 +814,38 @@ msgstr ""
msgid "Set name of component (empty to clear)"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Japanese signal pole"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Clear (proceed)"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Reduced speed"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Caution"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Restricted speed"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Danger (halt)"
msgstr ""

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Distant Signal ("
msgstr ""

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Main Signal ("
msgstr ""

#: advtrains_train_industrial/init.lua advtrains_train_steam/init.lua
msgid "Driver Stand (right)"
msgstr ""
diff --git a/advtrains/po/de.po b/advtrains/po/de.po
index 8a7e009..458e701 100644
--- a/advtrains/po/de.po
+++ b/advtrains/po/de.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: 2024-12-08 15:21+0100\n"
"POT-Creation-Date: 2025-03-25 15:40+0100\n"
"PO-Revision-Date: 2023-10-09 11:18+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: German\n"
@@ -58,7 +58,8 @@ msgstr "Befehl (wenn aktiviert)"
msgid "Digiline channel"
msgstr "Digiline-Kanal"

#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains/atc.lua advtrains/wagons.lua
#: advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr "Speichern"
@@ -162,6 +163,128 @@ msgstr "Führerstand"
msgid "Wheel"
msgstr ""

#: advtrains/init.lua
msgid " does not exist or is invalid"
msgstr ""

#: advtrains/init.lua
msgid " is at "
msgstr ""

#: advtrains/init.lua
msgid "(log"
msgstr ""

#: advtrains/init.lua
msgid "Advtrains Status: no_action"
msgstr ""

#: advtrains/init.lua
msgid "Advtrains is already running normally!"
msgstr ""

#: advtrains/init.lua
msgid ""
"Crash during advtrains main step - skipping the shutdown save operation to "
"not save inconsistent data!"
msgstr ""

#: advtrains/init.lua
msgid ""
"Data is being saved. While saving, advtrains will remove the players from "
"trains. Save files will be reloaded afterwards!"
msgstr ""

#: advtrains/init.lua
msgid "Delete all train routes, force them to recalculate"
msgstr ""

#: advtrains/init.lua
msgid ""
"Detach all players, especially the offline ones, from all trains. Use only "
"when no one serious is on a train."
msgstr ""

#: advtrains/init.lua
msgid "Disable the advtrains globalstep temporarily"
msgstr ""

#: advtrains/init.lua
msgid "Disabled advtrains successfully"
msgstr ""

#: advtrains/init.lua
msgid "Instructed to save() but load() was never called!"
msgstr ""

#: advtrains/init.lua
msgid "Print advtrains status info"
msgstr ""

#: advtrains/init.lua
msgid "Re-enabling advtrains globalstep..."
msgstr ""

#: advtrains/init.lua
msgid "Reload successful!"
msgstr ""

#: advtrains/init.lua
msgid "Removing unused wagon"
msgstr ""

#: advtrains/init.lua
msgid "Restoring saved state in 1 second..."
msgstr ""

#: advtrains/init.lua
msgid "Returns the position of the train with the given id"
msgstr ""

#: advtrains/init.lua
msgid "Saving failed: "
msgstr ""

#: advtrains/init.lua
msgid "Successfully invalidated train routes"
msgstr ""

#: advtrains/init.lua
msgid "Teleporting to train "
msgstr ""

#: advtrains/init.lua
msgid "Teleports you to the position of the train with the given id"
msgstr ""

#: advtrains/init.lua
msgid ""
"The advtrains globalstep has been disabled. Trains are not moving, and no "
"data is saved! Run '/at_disable_step no' to enable again!"
msgstr ""

#: advtrains/init.lua
msgid "Train"
msgstr ""

#: advtrains/init.lua
#, fuzzy
msgid "Train "
msgstr "Der Zug wurde Kopiert."

#: advtrains/init.lua
msgid "from wagon_save table."
msgstr ""

#: advtrains/init.lua
msgid ""
"had no wagons left because of some bug. It is being deleted. Wave it goodbye!"
msgstr ""

#: advtrains/init.lua
msgid "slowdown"
msgstr ""

#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr "Hoher @1-Bahnsteig (45°)"
@@ -247,20 +370,59 @@ msgstr "An der rechten Seite montiertes Signal"
msgid "Wallmounted Signal (top)"
msgstr "An der Decke montiertes Signal"

#: advtrains/track_reg_helper.lua
msgid "@1 Slope"
msgstr "@1 Steigung"

#: advtrains/track_reg_helper.lua
#, fuzzy
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/track_reg_helper.lua
#, fuzzy
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/track_reg_helper.lua
#, fuzzy
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/track_reg_helper.lua
#, fuzzy
msgid "Can't place: not pointing at node"
msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block."

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: space occupied!"
msgstr "Es kann nicht platziert werden: Diese Position ist besetzt."

#: advtrains/track_reg_helper.lua advtrains/tracks.lua
#, fuzzy
msgid "This track can not be removed!"
msgstr "Dieses Gleis kann nicht entfernt werden."

#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker."
#, fuzzy
msgid "This node can't be changed using the trackworker!"
msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug bearbeitet werden."

#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
#, fuzzy
msgid "This node can't be rotated using the trackworker!"
msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug gedreht werden."

#: advtrains/trackplacer.lua
msgid "This track can not be changed."
msgstr "Dieses Gleis kann nicht geändert werden."

#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
#, fuzzy
msgid "This track can not be rotated!"
msgstr "Dieses Gleis kann nicht gedreht werden."

#: advtrains/trackplacer.lua
@@ -275,36 +437,6 @@ msgstr ""
"Linksklick: Gleistyp ändern\n"
"Rechtsklick: Objekt drehen"

#: advtrains/tracks.lua
msgid "@1 Slope"
msgstr "@1 Steigung"

#: advtrains/tracks.lua
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
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
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/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block."

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr "Es kann nicht platziert werden: Diese Position ist besetzt."

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr "Ein Zug steht an dieser Position."
@@ -317,10 +449,6 @@ msgstr "Hier ist ein Signal-Beeinflussungspunkt."
msgid "There's a Track Circuit Break here."
msgstr "Hier ist eine Gleisabschnittsgrenze (TCB)."

#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr "Dieses Gleis kann nicht entfernt werden."

#: advtrains/trainhud.lua
msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""
@@ -340,10 +468,40 @@ msgid ""
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""

#: advtrains/wagons.lua
msgid " units"
msgstr ""

#: advtrains/wagons.lua
msgid " wagon:destroy(): data is not set!"
msgstr ""

#: advtrains/wagons.lua
msgid "!!! Train off track !!!"
msgstr ""

#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr "(Türen geschlossen)"

#: advtrains/wagons.lua
msgid "Allow these players to access your wagon:"
msgstr ""

#: advtrains/wagons.lua
msgid "Clear 'Disable ARS' flag"
msgstr ""

#: advtrains/wagons.lua
msgid "Current FC: "
msgstr ""

#: advtrains/wagons.lua
msgid ""
"Destroying wagon with inventory, but inventory is not found? Shouldn't "
"happen!"
msgstr ""

#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr "Die Türen sind geschlossen."
@@ -356,6 +514,10 @@ msgstr ""
"Die Türen sind geschlossen. Nutzen Sie Schleichen+Rechtsklick, um trotz "
"geschlossener Türen auszusteigen."

#: advtrains/wagons.lua
msgid "Freight Code:"
msgstr ""

#: advtrains/wagons.lua
msgid "Get off"
msgstr "Aussteigen"
@@ -368,10 +530,47 @@ msgstr "Ausstieg zwingen"
msgid "Line"
msgstr "Linie"

#: advtrains/wagons.lua
msgid "Liquid: "
msgstr ""

#: advtrains/wagons.lua
msgid "Liquid: empty"
msgstr ""

#: advtrains/wagons.lua
msgid "Missing train_operator privilege"
msgstr ""

#: advtrains/wagons.lua
msgid "Next FC:"
msgstr ""

#: advtrains/wagons.lua
msgid "Not a valid wagon id."
msgstr ""

#: advtrains/wagons.lua
#, fuzzy
msgid "Not allowed to do this."
msgstr "Sie dürfen dieses Gleis nicht konfigurieren."

#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr ""

#: advtrains/wagons.lua
msgid "Please specify a player name to transfer ownership to."
msgstr ""

#: advtrains/wagons.lua
msgid "Prev FC"
msgstr ""

#: advtrains/wagons.lua
msgid "Remote Routesetting"
msgstr ""

#: advtrains/wagons.lua
msgid "Routingcode"
msgstr ""
@@ -396,6 +595,20 @@ msgstr "Innere Anzeige"
msgid "Text displayed outside on train"
msgstr "Äußere Anzeige"

#: advtrains/wagons.lua
msgid "That player does not exist!"
msgstr ""

#: advtrains/wagons.lua
#, fuzzy
msgid "That wagon does not exist!"
msgstr "In diesem Waggon ist kein Sitzplatz vorhanden."

#: advtrains/wagons.lua
#, fuzzy
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/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr "Das Inventar dieses Waggons ist nicht leer."
@@ -421,6 +634,26 @@ msgstr "Dieser Waggon gehört @1, Sie dürfen ihn nicht abbauen."
msgid "Train ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Train overview / coupling control is only shown when the train stands."
msgstr ""

#: advtrains/wagons.lua
msgid "Train overview /coupling control:"
msgstr ""

#: advtrains/wagons.lua
msgid "Uninitialized init="
msgstr ""

#: advtrains/wagons.lua
msgid "Uninitialized, removing"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon @1 ownership changed from @2 to @3"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr "Der Waggon muss abgekoppelt sein, damit Sie ihn abbauen können."
@@ -429,6 +662,10 @@ msgstr "Der Waggon muss abgekoppelt sein, damit Sie ihn abbauen können."
msgid "Wagon properties"
msgstr "Waggon-Einstellungen"

#: advtrains/wagons.lua
msgid "Wagon road number:"
msgstr ""

#: advtrains/wagons.lua
msgid ""
"Warning: If you destroy this wagon, you only get some steel back! If you are "
@@ -445,6 +682,15 @@ msgstr "Sie haben keinen Zugang zum Führerstand."
msgid "You can't get on this wagon."
msgstr "Sie können nicht in diesen Waggon einsteigen."

#: advtrains/wagons.lua
#, fuzzy
msgid "You don't have the train_operator privilege."
msgstr "Ihnen fehlt das „@1“-Privileg."

#: advtrains/wagons.lua
msgid "You have been given ownership of wagon @1"
msgstr ""

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""
@@ -469,6 +715,14 @@ msgstr "Sie dürfen ohne das „@1“-Privileg dieses Gleis nicht konfigurieren.
msgid "You are not allowed to configure this track."
msgstr "Sie dürfen dieses Gleis nicht konfigurieren."

#: advtrains_line_automation/scheduler.lua
msgid "No callback to handle schedule"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Closed"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr "Zielgeschwindigkeit bei Abfahrt"
@@ -485,10 +739,22 @@ msgstr "Türseite"
msgid "Kick out passengers"
msgstr "Fahrgäste zum Ausstieg zwingen"

#: advtrains_line_automation/stoprail.lua
msgid "Left"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Next Stop:\n"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr "Zug Umkehren"

#: advtrains_line_automation/stoprail.lua
msgid "Right"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr "Kennzeichen der Haltestelle"
@@ -520,6 +786,18 @@ msgstr ""
msgid "Track"
msgstr "Gleis"

#: advtrains_line_automation/stoprail.lua
msgid "Trains stopping here (ARS rules)"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Unknown Station"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Wait for signal to clear"
msgstr ""

#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr ""
@@ -591,6 +869,39 @@ msgid ""
"privilege."
msgstr "Sie dürfen ohne das „@1“ keinen passiven LuaATC-Bauteil benennen."

#: advtrains_signals_japan/init.lua
msgid "Caution"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Clear (proceed)"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Danger (halt)"
msgstr ""

#: advtrains_signals_japan/init.lua
#, fuzzy
msgid "Japanese signal pole"
msgstr "Japanischer Personenzug-Passagierwaggon"

#: advtrains_signals_japan/init.lua
msgid "Reduced speed"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Restricted speed"
msgstr ""

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Distant Signal ("
msgstr ""

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Main Signal ("
msgstr ""

#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr "Große Industrielle Lokomotive"
@@ -742,6 +1053,9 @@ msgstr "Y-Weiche"
#~ msgid "This position is protected!"
#~ msgstr "Diese Position ist geschützt!"

#~ msgid "This track can not be changed."
#~ msgstr "Dieses Gleis kann nicht geändert werden."

#~ msgid "Use Sneak+rightclick to bypass closed doors!"
#~ msgstr ""
#~ "Nutzen Sie Schleichen+Rechtsklick, um trotz geschlossener Türen "
diff --git a/advtrains/po/fr.po b/advtrains/po/fr.po
index 3c8f5f6..d773a98 100644
--- a/advtrains/po/fr.po
+++ b/advtrains/po/fr.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: advtrains\n"
"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n"
"POT-Creation-Date: 2024-12-08 15:21+0100\n"
"PO-Revision-Date: 2024-12-04 15:55+0100\n"
"POT-Creation-Date: 2025-03-25 15:40+0100\n"
"PO-Revision-Date: 2025-03-25 15:06+0100\n"
"Last-Translator: Tanavit <tanavit@posto.ovh>\n"
"Language-Team: French\n"
"Language: fr\n"
@@ -53,7 +53,8 @@ msgstr "Commande (marche)"
msgid "Digiline channel"
msgstr "Canal Digiline"

#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains/atc.lua advtrains/wagons.lua
#: advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr "Sauvegarder"
@@ -156,6 +157,141 @@ msgstr "Cabine de pilotage"
msgid "Wheel"
msgstr "Roue"

#: advtrains/init.lua
msgid " does not exist or is invalid"
msgstr " n'existe pas ou est invalide"

#: advtrains/init.lua
msgid " is at "
msgstr " est à la position "

#: advtrains/init.lua
msgid "(log"
msgstr "(log"

#: advtrains/init.lua
msgid "Advtrains Status: no_action"
msgstr "État d'advtrains : aucune action"

#: advtrains/init.lua
msgid "Advtrains is already running normally!"
msgstr "Advtrains fonctionne déjà correctement !"

#: advtrains/init.lua
msgid ""
"Crash during advtrains main step - skipping the shutdown save operation to "
"not save inconsistent data!"
msgstr ""
"Crash durant le pas principal d'advtrains - saut de l'opération de "
"sauvegarde de terminaison pour éviter l'enregistrement de données "
"corrompues !"

#: advtrains/init.lua
msgid ""
"Data is being saved. While saving, advtrains will remove the players from "
"trains. Save files will be reloaded afterwards!"
msgstr ""
"Données en cours de sauvegarde. Durant cette phase, advtrains débarquera les "
"joueurs des trains. Les fichiers de sauvegarde seront ultérieurement "
"rechargés !"

# Routage est il le bon terme ?
#: advtrains/init.lua
msgid "Delete all train routes, force them to recalculate"
msgstr "Suppression et recalcul de tous les routages"

#: advtrains/init.lua
msgid ""
"Detach all players, especially the offline ones, from all trains. Use only "
"when no one serious is on a train."
msgstr ""
"Débarque tous les joueurs, en particulier ceux déconnectés, de tous les "
"trains. À n'utiliser que quand aucun joueur sérieux n'a embarqué."

#: advtrains/init.lua
msgid "Disable the advtrains globalstep temporarily"
msgstr "Désactive temporairement le pas global d'advtrains"

#: advtrains/init.lua
msgid "Disabled advtrains successfully"
msgstr "Succès de la désactivation d'advtrains"

#: advtrains/init.lua
msgid "Instructed to save() but load() was never called!"
msgstr "Appel de save() requis sans appel préalable de load() !"

#: advtrains/init.lua
msgid "Print advtrains status info"
msgstr "Affiche les informations d'état d'advtrains"

#: advtrains/init.lua
msgid "Re-enabling advtrains globalstep..."
msgstr "Réacivation du pas global d'advtrains..."

#: advtrains/init.lua
msgid "Reload successful!"
msgstr "Succès du rechargement !"

#: advtrains/init.lua
msgid "Removing unused wagon"
msgstr "Suppression d'un wagon inutilisé"

#: advtrains/init.lua
msgid "Restoring saved state in 1 second..."
msgstr "Restauration du l'état sauvegardé dans une seconde..."

#: advtrains/init.lua
msgid "Returns the position of the train with the given id"
msgstr "Affiche la position du train identifié"

#: advtrains/init.lua
msgid "Saving failed: "
msgstr "Échec de sauvegarde : "

# Routage est il le bon terme ?
#: advtrains/init.lua
msgid "Successfully invalidated train routes"
msgstr "Succès d'invalidation des routages des trains"

#: advtrains/init.lua
msgid "Teleporting to train "
msgstr "Téléportation au train "

#: advtrains/init.lua
msgid "Teleports you to the position of the train with the given id"
msgstr "Vous téléporte à la position du train identifié"

#: advtrains/init.lua
msgid ""
"The advtrains globalstep has been disabled. Trains are not moving, and no "
"data is saved! Run '/at_disable_step no' to enable again!"
msgstr ""
"Le pas global d'advtrains est désactivé. Les trains sont immobiles et aucune "
"donnée n'est sauvegardée. Exécutez '/at_disable_step no ' pour le réactiver !"

#: advtrains/init.lua
msgid "Train"
msgstr "Identificateur du train"

#: advtrains/init.lua
msgid "Train "
msgstr "Identificateur du train "

#: advtrains/init.lua
msgid "from wagon_save table."
msgstr "de la table wagon_save."

#: advtrains/init.lua
msgid ""
"had no wagons left because of some bug. It is being deleted. Wave it goodbye!"
msgstr ""
"n'a plus de wagon à cause d'un bug quelconque. Il est détruit. Faites lui "
"coucou !"

#: advtrains/init.lua
msgid "slowdown"
msgstr "ralentissement"

#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr "Quai @1 (haut, 45°)"
@@ -249,21 +385,46 @@ msgstr "Signal mural (droit)"
msgid "Wallmounted Signal (top)"
msgstr "Signal mural (plafond)"

#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker."
msgstr "Ce nœud ne peut être modifié avec l'outil \"Trackworker\"."
#: advtrains/track_reg_helper.lua
msgid "@1 Slope"
msgstr "Pente @1"

#: advtrains/track_reg_helper.lua
msgid "Can't place: Not enough slope items left (@1 required)"
msgstr ""
"Placement impossible : quantité insuffisante de voie pentue (@1 manquant)"

#: advtrains/track_reg_helper.lua
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/track_reg_helper.lua
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/track_reg_helper.lua
msgid "Can't place: not pointing at node"
msgstr "Placement impossible : ne pointe pas un nœud"

#: advtrains/track_reg_helper.lua
msgid "Can't place: space occupied!"
msgstr "Placement impossible : espace occupé !"

#: advtrains/track_reg_helper.lua advtrains/tracks.lua
msgid "This track can not be removed!"
msgstr "Cette voie ne peut pas être enlevée !"

#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
msgstr "Ce nœud ne peut être tourné avec l'outil \"Trackworker\"."
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
msgid "This track can not be changed."
msgstr "Cette voie ne peut pas être modifiée."
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
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
msgid ""
@@ -278,31 +439,6 @@ msgstr ""
"\n"
"Clic-Droit : tourne l'objet"

#: advtrains/tracks.lua
msgid "@1 Slope"
msgstr "Pente @1"

#: advtrains/tracks.lua
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
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
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/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr "Placement impossible : ne pointe pas un nœud."

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr "Placement impossible : espace occupé."

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr "Cet emplacement est occupé par un train."
@@ -315,10 +451,6 @@ msgstr "Il y a un \"Signal Influence Point\" ici."
msgid "There's a Track Circuit Break here."
msgstr "Il y a un \"Track Circuit Break\" ici."

#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr "Cette voie ne peut pas être enlevée."

#: advtrains/trainhud.lua
msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""
@@ -341,10 +473,40 @@ msgstr ""
"Outil de propriété du wagon\n"
"Frappez un wagon pour voir et modifier ses propriétés"

#: advtrains/wagons.lua
msgid " units"
msgstr " Unités"

#: advtrains/wagons.lua
msgid " wagon:destroy(): data is not set!"
msgstr " Appel de wagon:destroy() : données non définies !"

#: advtrains/wagons.lua
msgid "!!! Train off track !!!"
msgstr "!!! Train hors voie !!!"

#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr "(Portes closes)"

#: advtrains/wagons.lua
msgid "Allow these players to access your wagon:"
msgstr "Autoriser ces joueurs à embarquer :"

#: advtrains/wagons.lua
msgid "Clear 'Disable ARS' flag"
msgstr "Effacer le drapeau \"Désactiver l'ARS\""

#: advtrains/wagons.lua
msgid "Current FC: "
msgstr "Code de fret courant: "

#: advtrains/wagons.lua
msgid ""
"Destroying wagon with inventory, but inventory is not found? Shouldn't "
"happen!"
msgstr "Desctruction d'un wagon avec inventaire introuvable ? Anomalie !"

#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr "Portes closes : (Essayez la \"sneak key\"!\")"
@@ -357,6 +519,10 @@ msgstr ""
"Portes closes ! Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour "
"franchir les portes et débarquer."

#: advtrains/wagons.lua
msgid "Freight Code:"
msgstr "Code de frêt :"

#: advtrains/wagons.lua
msgid "Get off"
msgstr "Débarquer"
@@ -369,10 +535,47 @@ msgstr "Débarquer (de force)"
msgid "Line"
msgstr "Ligne"

#: advtrains/wagons.lua
msgid "Liquid: "
msgstr "Liquide : "

#: advtrains/wagons.lua
msgid "Liquid: empty"
msgstr "Liquide : vide"

#: advtrains/wagons.lua
msgid "Missing train_operator privilege"
msgstr "Privilège \"train_operator\" manquant"

#: advtrains/wagons.lua
msgid "Next FC:"
msgstr "Code de fret suivant :"

#: advtrains/wagons.lua
msgid "Not a valid wagon id."
msgstr "Identificateur de wagon invalide."

#: advtrains/wagons.lua
msgid "Not allowed to do this."
msgstr "Vous n'êtes pas autorisé effectuer ceci."

#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr "Ordinateur embarqué"

#: advtrains/wagons.lua
msgid "Please specify a player name to transfer ownership to."
msgstr ""
"Spécifiez le nom du joueur à qui la propriété doit être transférée, SVP."

#: advtrains/wagons.lua
msgid "Prev FC"
msgstr "Code de fret précédent"

#: advtrains/wagons.lua
msgid "Remote Routesetting"
msgstr "Routage à distance"

#: advtrains/wagons.lua
msgid "Routingcode"
msgstr "Code de routage"
@@ -397,6 +600,18 @@ msgstr "Texte affiché à l'intérieur du train"
msgid "Text displayed outside on train"
msgstr "Texte affiché à l'extérieur du train"

#: advtrains/wagons.lua
msgid "That player does not exist!"
msgstr "Ce joueur n'existe pas !"

#: advtrains/wagons.lua
msgid "That wagon does not exist!"
msgstr "Ce wagon n'a pas de siège !"

#: advtrains/wagons.lua
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/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr "Le stock de ce wagon n'est pas vide."
@@ -421,6 +636,28 @@ msgstr "Ce wagon est la propriété de @1, vous ne pouvez pas le détruire."
msgid "Train ID"
msgstr "Identificateur du train"

#: advtrains/wagons.lua
msgid "Train overview / coupling control is only shown when the train stands."
msgstr ""
"Aperçu du train / commande d'accouplement montré uniquement à l'arrêt du "
"train."

#: advtrains/wagons.lua
msgid "Train overview /coupling control:"
msgstr "Aperçu du train / commande d'accouplement :"

#: advtrains/wagons.lua
msgid "Uninitialized init="
msgstr "Variable init non initialisée"

#: advtrains/wagons.lua
msgid "Uninitialized, removing"
msgstr "Non initialisé, retiré"

#: advtrains/wagons.lua
msgid "Wagon @1 ownership changed from @2 to @3"
msgstr "La propriété du wagon @1 a été transférée de @2 à @3"

#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr ""
@@ -430,6 +667,10 @@ msgstr ""
msgid "Wagon properties"
msgstr "Propriétés du wagon"

#: advtrains/wagons.lua
msgid "Wagon road number:"
msgstr "Immatriculation du wagon :"

#: advtrains/wagons.lua
msgid ""
"Warning: If you destroy this wagon, you only get some steel back! If you are "
@@ -447,9 +688,17 @@ msgstr "Accès interdit au poste de pilotage."
msgid "You can't get on this wagon."
msgstr "Montée impossible dans ce wagon."

#: advtrains/wagons.lua
msgid "You don't have the train_operator privilege."
msgstr "Vous ne possédez pas le privilège \"train_operator\"."

#: advtrains/wagons.lua
msgid "You have been given ownership of wagon @1"
msgstr "La propriété du wagon @1 vous a été transférée"

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""
msgstr "Changement d'état de l'itinéraire."

#: advtrains_interlocking/tsr_rail.lua
msgid "Point Speed Restriction Track"
@@ -471,9 +720,17 @@ msgstr "Vous n'êtes pas autorisé à configurer cette voie sans le privilège @
msgid "You are not allowed to configure this track."
msgstr "Vous n'êtes pas autorisé à configurer cette voie."

#: advtrains_line_automation/scheduler.lua
msgid "No callback to handle schedule"
msgstr "Absence de fonction de gestion de planning"

#: advtrains_line_automation/stoprail.lua
msgid "Closed"
msgstr "Fermé"

#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr "Vitesse de départ"
msgstr "Vit. de départ"

#: advtrains_line_automation/stoprail.lua
msgid "Door Delay"
@@ -481,16 +738,28 @@ msgstr "Durée d'ouverture des portes"

#: advtrains_line_automation/stoprail.lua
msgid "Door Side"
msgstr "Coté d'ouvertures des portes"
msgstr "Ouv. des portes coté"

#: advtrains_line_automation/stoprail.lua
msgid "Kick out passengers"
msgstr "Éjecter les passagers"

#: advtrains_line_automation/stoprail.lua
msgid "Left"
msgstr "Gauche"

#: advtrains_line_automation/stoprail.lua
msgid "Next Stop:\n"
msgstr "Prochain arrêt :\n"

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr "Inversion du sens de marche"

#: advtrains_line_automation/stoprail.lua
msgid "Right"
msgstr "Droit"

#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr "Code de Station"
@@ -521,6 +790,18 @@ msgstr ""
msgid "Track"
msgstr "Voie"

#: advtrains_line_automation/stoprail.lua
msgid "Trains stopping here (ARS rules)"
msgstr "Trains marquant l'arrêt (règles ARS)"

#: advtrains_line_automation/stoprail.lua
msgid "Unknown Station"
msgstr "Gare inconnue"

#: advtrains_line_automation/stoprail.lua
msgid "Wait for signal to clear"
msgstr "En attente de signal d'autorisation"

#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr "Effacer l'environnement LuaATC"
@@ -591,6 +872,38 @@ msgid ""
"privilege."
msgstr "Vous ne pouvez nommer un composant LuaATC passif sans le privilege @1."

#: advtrains_signals_japan/init.lua
msgid "Caution"
msgstr "Attention"

#: advtrains_signals_japan/init.lua
msgid "Clear (proceed)"
msgstr "Autorisation (procédez)"

#: advtrains_signals_japan/init.lua
msgid "Danger (halt)"
msgstr "Danger (stop)"

#: advtrains_signals_japan/init.lua
msgid "Japanese signal pole"
msgstr "Voiture Japonaise"

#: advtrains_signals_japan/init.lua
msgid "Reduced speed"
msgstr "Vitesse réduite"

#: advtrains_signals_japan/init.lua
msgid "Restricted speed"
msgstr "Vitesse limitée"

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Distant Signal ("
msgstr "Signal distant métro de Munich ("

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Main Signal ("
msgstr "Signal principal métro de Munich ("

#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr "Grosse locomotive industrielle"
@@ -701,6 +1014,9 @@ msgstr "Voie de Déchargement"
msgid "Y-turnout"
msgstr "Embranchement en Y"

#~ msgid ", using placeholder"
#~ msgstr ", dans un espace réservé"

#~ msgid ""
#~ "ATC controller, mode @1\n"
#~ "Channel: @2"
@@ -727,6 +1043,9 @@ msgstr "Embranchement en Y"
#~ msgid "Deprecated Track"
#~ msgstr "Voie déconseillée"

#~ msgid "Left,Right,Closed;"
#~ msgstr "Gauche,Droit,Fermé;"

#~ msgid "Lock couples"
#~ msgstr "Verrouiller l'accouplement"

@@ -743,6 +1062,12 @@ msgstr "Embranchement en Y"
#~ msgid "This position is protected!"
#~ msgstr "Cet emplacement est protégé !"

#~ msgid "This track can not be changed."
#~ msgstr "Cette voie ne peut pas être modifiée."

#~ msgid "Unable to load wagon type"
#~ msgstr "Impossible de charger le type du wagon"

#~ msgid "Use Sneak+rightclick to bypass closed doors!"
#~ msgstr ""
#~ "Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour franchir les "
diff --git a/advtrains/po/update-translations.sh b/advtrains/po/update-translations.sh
index 1b919d9..4c22c85 100755
--- a/advtrains/po/update-translations.sh
+++ b/advtrains/po/update-translations.sh
@@ -7,7 +7,6 @@ BTDIR="$ATDIR/../basic_trains"
POTFILE="$PODIR/advtrains.pot"

xgettext \
	-v -v -v \
	-D "$ATDIR" \
	-D "$BTDIR" \
	-d advtrains \
diff --git a/advtrains/po/zh_CN.po b/advtrains/po/zh_CN.po
index 1dbf08f..f1a3c0f 100644
--- a/advtrains/po/zh_CN.po
+++ b/advtrains/po/zh_CN.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: 2024-12-08 15:21+0100\n"
"POT-Creation-Date: 2025-03-25 15:40+0100\n"
"PO-Revision-Date: 2023-10-09 11:24+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: Chinese (Simplified)\n"
@@ -53,7 +53,8 @@ msgstr "命令 (激活时)"
msgid "Digiline channel"
msgstr "Digiline 频道"

#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains/atc.lua advtrains/wagons.lua
#: advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr "保存"
@@ -151,6 +152,128 @@ msgstr "驾驶室"
msgid "Wheel"
msgstr "车轮"

#: advtrains/init.lua
msgid " does not exist or is invalid"
msgstr ""

#: advtrains/init.lua
msgid " is at "
msgstr ""

#: advtrains/init.lua
msgid "(log"
msgstr ""

#: advtrains/init.lua
msgid "Advtrains Status: no_action"
msgstr ""

#: advtrains/init.lua
msgid "Advtrains is already running normally!"
msgstr ""

#: advtrains/init.lua
msgid ""
"Crash during advtrains main step - skipping the shutdown save operation to "
"not save inconsistent data!"
msgstr ""

#: advtrains/init.lua
msgid ""
"Data is being saved. While saving, advtrains will remove the players from "
"trains. Save files will be reloaded afterwards!"
msgstr ""

#: advtrains/init.lua
msgid "Delete all train routes, force them to recalculate"
msgstr ""

#: advtrains/init.lua
msgid ""
"Detach all players, especially the offline ones, from all trains. Use only "
"when no one serious is on a train."
msgstr ""

#: advtrains/init.lua
msgid "Disable the advtrains globalstep temporarily"
msgstr ""

#: advtrains/init.lua
msgid "Disabled advtrains successfully"
msgstr ""

#: advtrains/init.lua
msgid "Instructed to save() but load() was never called!"
msgstr ""

#: advtrains/init.lua
msgid "Print advtrains status info"
msgstr ""

#: advtrains/init.lua
msgid "Re-enabling advtrains globalstep..."
msgstr ""

#: advtrains/init.lua
msgid "Reload successful!"
msgstr ""

#: advtrains/init.lua
msgid "Removing unused wagon"
msgstr ""

#: advtrains/init.lua
msgid "Restoring saved state in 1 second..."
msgstr ""

#: advtrains/init.lua
msgid "Returns the position of the train with the given id"
msgstr ""

#: advtrains/init.lua
msgid "Saving failed: "
msgstr ""

#: advtrains/init.lua
msgid "Successfully invalidated train routes"
msgstr ""

#: advtrains/init.lua
msgid "Teleporting to train "
msgstr ""

#: advtrains/init.lua
msgid "Teleports you to the position of the train with the given id"
msgstr ""

#: advtrains/init.lua
msgid ""
"The advtrains globalstep has been disabled. Trains are not moving, and no "
"data is saved! Run '/at_disable_step no' to enable again!"
msgstr ""

#: advtrains/init.lua
msgid "Train"
msgstr ""

#: advtrains/init.lua
#, fuzzy
msgid "Train "
msgstr "已复制列车。"

#: advtrains/init.lua
msgid "from wagon_save table."
msgstr ""

#: advtrains/init.lua
msgid ""
"had no wagons left because of some bug. It is being deleted. Wave it goodbye!"
msgstr ""

#: advtrains/init.lua
msgid "slowdown"
msgstr ""

#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr "较高的@1站台 (45°)"
@@ -233,20 +356,53 @@ msgstr "壁挂式信号灯 (右侧)"
msgid "Wallmounted Signal (top)"
msgstr "悬挂式信号灯"

#: advtrains/track_reg_helper.lua
msgid "@1 Slope"
msgstr "@1斜坡"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: Not enough slope items left (@1 required)"
msgstr "无法放置斜坡:您没有足够的铁路斜坡放置工具 (您总共需要@1个)"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: There's no slope of length @1"
msgstr "无法放置斜坡:advtrains 不支持长度为@1米的斜坡。"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: no supporting node at upper end."
msgstr "无法放置斜坡:较高端没有支撑方块。"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: not pointing at node"
msgstr "无法放置斜坡:您没有选择任何方块。"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: space occupied!"
msgstr "无法放置斜坡:此区域已被占用。"

#: advtrains/track_reg_helper.lua advtrains/tracks.lua
#, fuzzy
msgid "This track can not be removed!"
msgstr "您不能移除这段轨道。"

#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker."
#, fuzzy
msgid "This node can't be changed using the trackworker!"
msgstr "您不能使用铁路调整工具调整这个方块。"

#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
#, fuzzy
msgid "This node can't be rotated using the trackworker!"
msgstr "您不能使用铁路调整工具旋转这个方块。"

#: advtrains/trackplacer.lua
msgid "This track can not be changed."
msgstr "您不能调整这段轨道。"

#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
#, fuzzy
msgid "This track can not be rotated!"
msgstr "您不能旋转这段轨道。"

#: advtrains/trackplacer.lua
@@ -261,30 +417,6 @@ msgstr ""
"左键单击:切换轨道类型\n"
"右键单击:旋转方块"

#: advtrains/tracks.lua
msgid "@1 Slope"
msgstr "@1斜坡"

#: advtrains/tracks.lua
msgid "Can't place slope: Not enough slope items left (@1 required)."
msgstr "无法放置斜坡:您没有足够的铁路斜坡放置工具 (您总共需要@1个)"

#: advtrains/tracks.lua
msgid "Can't place slope: There's no slope of length @1."
msgstr "无法放置斜坡:advtrains 不支持长度为@1米的斜坡。"

#: advtrains/tracks.lua
msgid "Can't place slope: no supporting node at upper end."
msgstr "无法放置斜坡:较高端没有支撑方块。"

#: advtrains/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr "无法放置斜坡:您没有选择任何方块。"

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr "无法放置斜坡:此区域已被占用。"

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr ""
@@ -297,10 +429,6 @@ msgstr ""
msgid "There's a Track Circuit Break here."
msgstr ""

#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr "您不能移除这段轨道。"

#: advtrains/trainhud.lua
msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""
@@ -320,10 +448,40 @@ msgid ""
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""

#: advtrains/wagons.lua
msgid " units"
msgstr ""

#: advtrains/wagons.lua
msgid " wagon:destroy(): data is not set!"
msgstr ""

#: advtrains/wagons.lua
msgid "!!! Train off track !!!"
msgstr ""

#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr "(车门已关闭)"

#: advtrains/wagons.lua
msgid "Allow these players to access your wagon:"
msgstr ""

#: advtrains/wagons.lua
msgid "Clear 'Disable ARS' flag"
msgstr ""

#: advtrains/wagons.lua
msgid "Current FC: "
msgstr ""

#: advtrains/wagons.lua
msgid ""
"Destroying wagon with inventory, but inventory is not found? Shouldn't "
"happen!"
msgstr ""

#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr ""
@@ -334,6 +492,10 @@ msgid ""
"off."
msgstr "车门已关闭,请使用潜行+右键单击下车。"

#: advtrains/wagons.lua
msgid "Freight Code:"
msgstr ""

#: advtrains/wagons.lua
msgid "Get off"
msgstr "下车"
@@ -346,10 +508,47 @@ msgstr "强制下车"
msgid "Line"
msgstr "火车线路"

#: advtrains/wagons.lua
msgid "Liquid: "
msgstr ""

#: advtrains/wagons.lua
msgid "Liquid: empty"
msgstr ""

#: advtrains/wagons.lua
msgid "Missing train_operator privilege"
msgstr ""

#: advtrains/wagons.lua
msgid "Next FC:"
msgstr ""

#: advtrains/wagons.lua
msgid "Not a valid wagon id."
msgstr ""

#: advtrains/wagons.lua
#, fuzzy
msgid "Not allowed to do this."
msgstr "您不能调整这段轨道。"

#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr ""

#: advtrains/wagons.lua
msgid "Please specify a player name to transfer ownership to."
msgstr ""

#: advtrains/wagons.lua
msgid "Prev FC"
msgstr ""

#: advtrains/wagons.lua
msgid "Remote Routesetting"
msgstr ""

#: advtrains/wagons.lua
msgid "Routingcode"
msgstr "路由码"
@@ -374,6 +573,20 @@ msgstr "车厢内部显示"
msgid "Text displayed outside on train"
msgstr "车厢外部显示"

#: advtrains/wagons.lua
msgid "That player does not exist!"
msgstr ""

#: advtrains/wagons.lua
#, fuzzy
msgid "That wagon does not exist!"
msgstr "这节车厢没有座位。"

#: advtrains/wagons.lua
#, fuzzy
msgid "The track you are trying to place the wagon on is not long enough!"
msgstr "轨道太短。"

#: advtrains/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr ""
@@ -399,6 +612,26 @@ msgstr "这是 @1 的车厢,您不能摧毁它。"
msgid "Train ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Train overview / coupling control is only shown when the train stands."
msgstr ""

#: advtrains/wagons.lua
msgid "Train overview /coupling control:"
msgstr ""

#: advtrains/wagons.lua
msgid "Uninitialized init="
msgstr ""

#: advtrains/wagons.lua
msgid "Uninitialized, removing"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon @1 ownership changed from @2 to @3"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr ""
@@ -407,6 +640,10 @@ msgstr ""
msgid "Wagon properties"
msgstr "车厢属性"

#: advtrains/wagons.lua
msgid "Wagon road number:"
msgstr ""

#: advtrains/wagons.lua
msgid ""
"Warning: If you destroy this wagon, you only get some steel back! If you are "
@@ -423,6 +660,15 @@ msgstr ""
msgid "You can't get on this wagon."
msgstr ""

#: advtrains/wagons.lua
#, fuzzy
msgid "You don't have the train_operator privilege."
msgstr "您没有“@1”权限。"

#: advtrains/wagons.lua
msgid "You have been given ownership of wagon @1"
msgstr ""

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""
@@ -447,6 +693,14 @@ msgstr "您没有“@1”权限,不能调整这段轨道。"
msgid "You are not allowed to configure this track."
msgstr "您不能调整这段轨道。"

#: advtrains_line_automation/scheduler.lua
msgid "No callback to handle schedule"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Closed"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr "出发速度"
@@ -463,10 +717,22 @@ msgstr ""
msgid "Kick out passengers"
msgstr "踢出乘客"

#: advtrains_line_automation/stoprail.lua
msgid "Left"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Next Stop:\n"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr "改变行车方向"

#: advtrains_line_automation/stoprail.lua
msgid "Right"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr "车站代码"
@@ -495,6 +761,18 @@ msgstr ""
msgid "Track"
msgstr "轨道"

#: advtrains_line_automation/stoprail.lua
msgid "Trains stopping here (ARS rules)"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Unknown Station"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Wait for signal to clear"
msgstr ""

#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr ""
@@ -563,6 +841,39 @@ msgid ""
"privilege."
msgstr "您没有“@1”权限,不能命名被动元件。"

#: advtrains_signals_japan/init.lua
msgid "Caution"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Clear (proceed)"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Danger (halt)"
msgstr ""

#: advtrains_signals_japan/init.lua
#, fuzzy
msgid "Japanese signal pole"
msgstr "高速列车车厢"

#: advtrains_signals_japan/init.lua
msgid "Reduced speed"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Restricted speed"
msgstr ""

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Distant Signal ("
msgstr ""

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Main Signal ("
msgstr ""

#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr "大型工业用火车头"
@@ -717,6 +1028,9 @@ msgstr "对称道岔"
#~ msgid "This position is protected!"
#~ msgstr "这里已被保护。"

#~ msgid "This track can not be changed."
#~ msgstr "您不能调整这段轨道。"

#~ msgid "Use Sneak+rightclick to bypass closed doors!"
#~ msgstr "请使用潜行+右键上车。"

diff --git a/advtrains/po/zh_TW.po b/advtrains/po/zh_TW.po
index 56b6531..ec65737 100644
--- a/advtrains/po/zh_TW.po
+++ b/advtrains/po/zh_TW.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: 2024-12-08 15:21+0100\n"
"POT-Creation-Date: 2025-03-25 15:40+0100\n"
"PO-Revision-Date: 2023-10-09 11:31+0200\n"
"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
"Language-Team: Chinese (Traditional)\n"
@@ -53,7 +53,8 @@ msgstr "命令 (啟用時)"
msgid "Digiline channel"
msgstr "Digiline 頻道"

#: advtrains/atc.lua advtrains_line_automation/stoprail.lua
#: advtrains/atc.lua advtrains/wagons.lua
#: advtrains_line_automation/stoprail.lua
#: advtrains_luaautomation/active_common.lua
msgid "Save"
msgstr "儲存"
@@ -151,6 +152,128 @@ msgstr "駕駛室"
msgid "Wheel"
msgstr "車輪"

#: advtrains/init.lua
msgid " does not exist or is invalid"
msgstr ""

#: advtrains/init.lua
msgid " is at "
msgstr ""

#: advtrains/init.lua
msgid "(log"
msgstr ""

#: advtrains/init.lua
msgid "Advtrains Status: no_action"
msgstr ""

#: advtrains/init.lua
msgid "Advtrains is already running normally!"
msgstr ""

#: advtrains/init.lua
msgid ""
"Crash during advtrains main step - skipping the shutdown save operation to "
"not save inconsistent data!"
msgstr ""

#: advtrains/init.lua
msgid ""
"Data is being saved. While saving, advtrains will remove the players from "
"trains. Save files will be reloaded afterwards!"
msgstr ""

#: advtrains/init.lua
msgid "Delete all train routes, force them to recalculate"
msgstr ""

#: advtrains/init.lua
msgid ""
"Detach all players, especially the offline ones, from all trains. Use only "
"when no one serious is on a train."
msgstr ""

#: advtrains/init.lua
msgid "Disable the advtrains globalstep temporarily"
msgstr ""

#: advtrains/init.lua
msgid "Disabled advtrains successfully"
msgstr ""

#: advtrains/init.lua
msgid "Instructed to save() but load() was never called!"
msgstr ""

#: advtrains/init.lua
msgid "Print advtrains status info"
msgstr ""

#: advtrains/init.lua
msgid "Re-enabling advtrains globalstep..."
msgstr ""

#: advtrains/init.lua
msgid "Reload successful!"
msgstr ""

#: advtrains/init.lua
msgid "Removing unused wagon"
msgstr ""

#: advtrains/init.lua
msgid "Restoring saved state in 1 second..."
msgstr ""

#: advtrains/init.lua
msgid "Returns the position of the train with the given id"
msgstr ""

#: advtrains/init.lua
msgid "Saving failed: "
msgstr ""

#: advtrains/init.lua
msgid "Successfully invalidated train routes"
msgstr ""

#: advtrains/init.lua
msgid "Teleporting to train "
msgstr ""

#: advtrains/init.lua
msgid "Teleports you to the position of the train with the given id"
msgstr ""

#: advtrains/init.lua
msgid ""
"The advtrains globalstep has been disabled. Trains are not moving, and no "
"data is saved! Run '/at_disable_step no' to enable again!"
msgstr ""

#: advtrains/init.lua
msgid "Train"
msgstr ""

#: advtrains/init.lua
#, fuzzy
msgid "Train "
msgstr "已複製火車。"

#: advtrains/init.lua
msgid "from wagon_save table."
msgstr ""

#: advtrains/init.lua
msgid ""
"had no wagons left because of some bug. It is being deleted. Wave it goodbye!"
msgstr ""

#: advtrains/init.lua
msgid "slowdown"
msgstr ""

#: advtrains/misc_nodes.lua
msgid "@1 Platform (45 degree)"
msgstr "較高的@1月臺 (45°)"
@@ -233,20 +356,53 @@ msgstr "壁掛式色燈號誌機 (右側)"
msgid "Wallmounted Signal (top)"
msgstr "懸掛式色燈號誌機"

#: advtrains/track_reg_helper.lua
msgid "@1 Slope"
msgstr "@1斜坡"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: Not enough slope items left (@1 required)"
msgstr "無法放置斜坡:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: There's no slope of length @1"
msgstr "無法放置斜坡:advtrains 不支援長度為@1米的斜坡。"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: no supporting node at upper end."
msgstr "無法放置斜坡:較高階沒有支撐方塊。"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: not pointing at node"
msgstr "無法放置斜坡:您沒有選擇任何方塊。"

#: advtrains/track_reg_helper.lua
#, fuzzy
msgid "Can't place: space occupied!"
msgstr "無法放置斜坡:此區域已被佔用。"

#: advtrains/track_reg_helper.lua advtrains/tracks.lua
#, fuzzy
msgid "This track can not be removed!"
msgstr "您不能移除這段軌道。"

#: advtrains/trackplacer.lua
msgid "This node can't be changed using the trackworker."
#, fuzzy
msgid "This node can't be changed using the trackworker!"
msgstr "您不能使用鐵路調整工具調整這個方塊。"

#: advtrains/trackplacer.lua
msgid "This node can't be rotated using the trackworker."
#, fuzzy
msgid "This node can't be rotated using the trackworker!"
msgstr "您不能使用鐵路調整工具旋轉這個方塊。"

#: advtrains/trackplacer.lua
msgid "This track can not be changed."
msgstr "您不能調整這段軌道。"

#: advtrains/trackplacer.lua
msgid "This track can not be rotated."
#, fuzzy
msgid "This track can not be rotated!"
msgstr "您不能旋轉這段軌道。"

#: advtrains/trackplacer.lua
@@ -261,30 +417,6 @@ msgstr ""
"左鍵單擊:切換軌道型別\n"
"右鍵單擊:旋轉方塊"

#: advtrains/tracks.lua
msgid "@1 Slope"
msgstr "@1斜坡"

#: advtrains/tracks.lua
msgid "Can't place slope: Not enough slope items left (@1 required)."
msgstr "無法放置斜坡:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)"

#: advtrains/tracks.lua
msgid "Can't place slope: There's no slope of length @1."
msgstr "無法放置斜坡:advtrains 不支援長度為@1米的斜坡。"

#: advtrains/tracks.lua
msgid "Can't place slope: no supporting node at upper end."
msgstr "無法放置斜坡:較高階沒有支撐方塊。"

#: advtrains/tracks.lua
msgid "Can't place slope: not pointing at node."
msgstr "無法放置斜坡:您沒有選擇任何方塊。"

#: advtrains/tracks.lua
msgid "Can't place slope: space occupied."
msgstr "無法放置斜坡:此區域已被佔用。"

#: advtrains/tracks.lua
msgid "Position is occupied by a train."
msgstr ""
@@ -297,10 +429,6 @@ msgstr ""
msgid "There's a Track Circuit Break here."
msgstr ""

#: advtrains/tracks.lua
msgid "This track can not be removed."
msgstr "您不能移除這段軌道。"

#: advtrains/trainhud.lua
msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
msgstr ""
@@ -320,10 +448,40 @@ msgid ""
"Punch a wagon to view and edit the Wagon Properties"
msgstr ""

#: advtrains/wagons.lua
msgid " units"
msgstr ""

#: advtrains/wagons.lua
msgid " wagon:destroy(): data is not set!"
msgstr ""

#: advtrains/wagons.lua
msgid "!!! Train off track !!!"
msgstr ""

#: advtrains/wagons.lua
msgid "(Doors closed)"
msgstr "(車門已關閉)"

#: advtrains/wagons.lua
msgid "Allow these players to access your wagon:"
msgstr ""

#: advtrains/wagons.lua
msgid "Clear 'Disable ARS' flag"
msgstr ""

#: advtrains/wagons.lua
msgid "Current FC: "
msgstr ""

#: advtrains/wagons.lua
msgid ""
"Destroying wagon with inventory, but inventory is not found? Shouldn't "
"happen!"
msgstr ""

#: advtrains/wagons.lua
msgid "Doors are closed! (Try holding sneak key!)"
msgstr ""
@@ -334,6 +492,10 @@ msgid ""
"off."
msgstr "車門已關閉,請使用潛行+右鍵單擊下車。"

#: advtrains/wagons.lua
msgid "Freight Code:"
msgstr ""

#: advtrains/wagons.lua
msgid "Get off"
msgstr "下車"
@@ -346,10 +508,47 @@ msgstr "強制下車"
msgid "Line"
msgstr "火車線路"

#: advtrains/wagons.lua
msgid "Liquid: "
msgstr ""

#: advtrains/wagons.lua
msgid "Liquid: empty"
msgstr ""

#: advtrains/wagons.lua
msgid "Missing train_operator privilege"
msgstr ""

#: advtrains/wagons.lua
msgid "Next FC:"
msgstr ""

#: advtrains/wagons.lua
msgid "Not a valid wagon id."
msgstr ""

#: advtrains/wagons.lua
#, fuzzy
msgid "Not allowed to do this."
msgstr "您不能調整這段軌道。"

#: advtrains/wagons.lua
msgid "Onboard Computer"
msgstr ""

#: advtrains/wagons.lua
msgid "Please specify a player name to transfer ownership to."
msgstr ""

#: advtrains/wagons.lua
msgid "Prev FC"
msgstr ""

#: advtrains/wagons.lua
msgid "Remote Routesetting"
msgstr ""

#: advtrains/wagons.lua
msgid "Routingcode"
msgstr "路由碼"
@@ -374,6 +573,20 @@ msgstr "車廂內部顯示"
msgid "Text displayed outside on train"
msgstr "車廂外部顯示"

#: advtrains/wagons.lua
msgid "That player does not exist!"
msgstr ""

#: advtrains/wagons.lua
#, fuzzy
msgid "That wagon does not exist!"
msgstr "這節車廂沒有座位。"

#: advtrains/wagons.lua
#, fuzzy
msgid "The track you are trying to place the wagon on is not long enough!"
msgstr "軌道太短。"

#: advtrains/wagons.lua
msgid "The wagon's inventory is not empty."
msgstr ""
@@ -399,6 +612,26 @@ msgstr "這是 @1 的車廂,您不能摧毀它。"
msgid "Train ID"
msgstr ""

#: advtrains/wagons.lua
msgid "Train overview / coupling control is only shown when the train stands."
msgstr ""

#: advtrains/wagons.lua
msgid "Train overview /coupling control:"
msgstr ""

#: advtrains/wagons.lua
msgid "Uninitialized init="
msgstr ""

#: advtrains/wagons.lua
msgid "Uninitialized, removing"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon @1 ownership changed from @2 to @3"
msgstr ""

#: advtrains/wagons.lua
msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
msgstr ""
@@ -407,6 +640,10 @@ msgstr ""
msgid "Wagon properties"
msgstr "車廂屬性"

#: advtrains/wagons.lua
msgid "Wagon road number:"
msgstr ""

#: advtrains/wagons.lua
msgid ""
"Warning: If you destroy this wagon, you only get some steel back! If you are "
@@ -423,6 +660,15 @@ msgstr ""
msgid "You can't get on this wagon."
msgstr ""

#: advtrains/wagons.lua
#, fuzzy
msgid "You don't have the train_operator privilege."
msgstr "您沒有「@1」許可權。"

#: advtrains/wagons.lua
msgid "You have been given ownership of wagon @1"
msgstr ""

#: advtrains_interlocking/routesetting.lua
msgid "Route state changed."
msgstr ""
@@ -447,6 +693,14 @@ msgstr "您沒有「@1」許可權,不能調整這段軌道。"
msgid "You are not allowed to configure this track."
msgstr "您不能調整這段軌道。"

#: advtrains_line_automation/scheduler.lua
msgid "No callback to handle schedule"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Closed"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Dep. Speed"
msgstr "出發速度"
@@ -463,10 +717,22 @@ msgstr ""
msgid "Kick out passengers"
msgstr "踢出乘客"

#: advtrains_line_automation/stoprail.lua
msgid "Left"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Next Stop:\n"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Reverse train"
msgstr "改變行車方向"

#: advtrains_line_automation/stoprail.lua
msgid "Right"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Station Code"
msgstr "車站碼"
@@ -495,6 +761,18 @@ msgstr ""
msgid "Track"
msgstr "軌道"

#: advtrains_line_automation/stoprail.lua
msgid "Trains stopping here (ARS rules)"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Unknown Station"
msgstr ""

#: advtrains_line_automation/stoprail.lua
msgid "Wait for signal to clear"
msgstr ""

#: advtrains_luaautomation/active_common.lua
msgid "Clear Local Environment"
msgstr ""
@@ -563,6 +841,39 @@ msgid ""
"privilege."
msgstr "您沒有「@1」許可權,不能命名這個元件。"

#: advtrains_signals_japan/init.lua
msgid "Caution"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Clear (proceed)"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Danger (halt)"
msgstr ""

#: advtrains_signals_japan/init.lua
#, fuzzy
msgid "Japanese signal pole"
msgstr "高速列車車廂"

#: advtrains_signals_japan/init.lua
msgid "Reduced speed"
msgstr ""

#: advtrains_signals_japan/init.lua
msgid "Restricted speed"
msgstr ""

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Distant Signal ("
msgstr ""

#: advtrains_signals_muc_ubahn/init.lua
msgid "Munich U-Bahn Main Signal ("
msgstr ""

#: advtrains_train_industrial/init.lua
msgid "Big Industrial Train Engine"
msgstr "大型工業用火車頭"
@@ -717,6 +1028,9 @@ msgstr "對稱道岔"
#~ msgid "This position is protected!"
#~ msgstr "這裡已被保護。"

#~ msgid "This track can not be changed."
#~ msgstr "您不能調整這段軌道。"

#~ msgid "Use Sneak+rightclick to bypass closed doors!"
#~ msgstr "請使用潛行+右鍵上車。"

diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index 10576c3..760c7da 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -7,6 +7,9 @@
-- An entity is ONLY spawned by update_trainpart_properties when it finds it useful.
-- Only data that are only important to the entity itself are stored in the luaentity

-- Translation
S = attrans

-- TP delay when getting off wagon
local GETOFF_TP_DELAY = 0.5

@@ -154,12 +157,12 @@ function wagon:ensure_init()
		end
	end
	if not self.noninitticks then
		atwarn("wagon",self.id,"uninitialized init=",self.initialized)
		atwarn("Wagon",self.id,S("Uninitialized init="),self.initialized)
		self.noninitticks=0
	end
	self.noninitticks=self.noninitticks+1
	if self.noninitticks>20 then
		atwarn("wagon",self.id,"uninitialized, removing")
		atwarn("Wagon",self.id,S("Uninitialized, removing"))
		self:destroy()
	else
		self.object:set_velocity({x=0,y=0,z=0})
@@ -182,7 +185,7 @@ function wagon:on_punch(puncher, time_from_last_punch, tool_capabilities, direct
			return
		end
		if data.owner and puncher:get_player_name()~=data.owner and (not minetest.check_player_privs(puncher, {train_admin = true })) then
		   minetest.chat_send_player(puncher:get_player_name(), attrans("This wagon is owned by @1, you can't destroy it.", data.owner));
		   minetest.chat_send_player(puncher:get_player_name(), S("This wagon is owned by @1, you can't destroy it.", data.owner));
		   return
		end
		
@@ -201,25 +204,25 @@ function wagon:on_punch(puncher, time_from_last_punch, tool_capabilities, direct
		if self.has_inventory then
			local inv=minetest.get_inventory({type="detached", name="advtrains_wgn_"..self.id})
			if not inv then -- inventory is not initialized when wagon was never loaded - should never happen
				atwarn("Destroying wagon with inventory, but inventory is not found? Shouldn't happen!")
				atwarn(S("Destroying wagon with inventory, but inventory is not found? Shouldn't happen!"))
				return
			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(), S("The wagon's inventory is not empty."));
					return
				end
			end
		end
		
		if #(self:train().trainparts)>1 then
		   minetest.chat_send_player(puncher:get_player_name(), attrans("Wagon needs to be decoupled from other wagons in order to destroy it."));
		   minetest.chat_send_player(puncher:get_player_name(), S("Wagon needs to be decoupled from other wagons in order to destroy it."));
		   return
		end

		local pc=puncher:get_player_control()
		if not pc.sneak then
			minetest.chat_send_player(puncher:get_player_name(), attrans("Warning: If you destroy this wagon, you only get some steel back! If you are sure, hold Sneak and left-click the wagon."))
			minetest.chat_send_player(puncher:get_player_name(), S("Warning: If you destroy this wagon, you only get some steel back! If you are sure, hold Sneak and left-click the wagon."))
			return
		end
		
@@ -240,7 +243,7 @@ function wagon:destroy()
	if self.id then
		local data = advtrains.wagons[self.id]
		if not data then
			atwarn("wagon:destroy(): data is not set!")
			atwarn(S(" wagon:destroy(): data is not set!"))
			return
		end
		
@@ -367,15 +370,15 @@ function wagon:on_step(dtime)
		
		--show off-track information in outside text instead of notifying the whole server about this
		if train.off_track then
			outside = outside .."\n!!! Train off track !!!"
			outside = outside .."\n"..S("!!! Train off track !!!")
		end
		
		-- liquid container: display liquid contents in infotext
		if self.techage_liquid_capacity then
			if data.techage_liquid and data.techage_liquid.name then
				outside = outside .."\nLiquid: "..data.techage_liquid.name..", "..data.techage_liquid.amount.." units"
				outside = outside .."\n"..S("Liquid: ")..data.techage_liquid.name..", "..data.techage_liquid.amount..S(" units")
			else
				outside = outside .."\nLiquid: empty"
				outside = outside .."\n"..S("Liquid: empty")
			end
		end
		
@@ -669,21 +672,21 @@ function wagon:on_rightclick(clicker)
					end
				end
				if self.has_inventory and self.get_inventory_formspec and advtrains.check_driving_couple_protection(pname, data.owner, data.whitelist) then
					poss[#poss+1]={name=attrans("Show Inventory"), key="inv"}
					poss[#poss+1]={name=S("Show Inventory"), key="inv"}
				end
				if self.seat_groups[sgr].driving_ctrl_access and advtrains.check_driving_couple_protection(pname, data.owner, data.whitelist) then
					poss[#poss+1]={name=attrans("Onboard Computer"), key="bordcom"}
					poss[#poss+1]={name=S("Onboard Computer"), key="bordcom"}
				end
				if data.owner==pname then
					poss[#poss+1]={name=attrans("Wagon properties"), key="prop"}
					poss[#poss+1]={name=S("Wagon properties"), key="prop"}
				end
				if not self.seat_groups[sgr].require_doors_open or self:train().door_open~=0 then
					poss[#poss+1]={name=attrans("Get off"), key="off"}
					poss[#poss+1]={name=S("Get off"), key="off"}
				else
					if clicker:get_player_control().sneak then
						poss[#poss+1]={name=attrans("Get off (forced)"), key="off"}
						poss[#poss+1]={name=S("Get off (forced)"), key="off"}
					else
						poss[#poss+1]={name=attrans("(Doors closed)"), key="dcwarn"}
						poss[#poss+1]={name=S("(Doors closed)"), key="dcwarn"}
					end
				end
				if #poss==0 then
@@ -693,7 +696,7 @@ function wagon:on_rightclick(clicker)
				else
					local form = "size[5,"..1+(#poss).."]"
					for pos,ent in ipairs(poss) do
						form = form .. "button_exit[0.5,"..(pos-0.5)..";4,1;"..ent.key..";"..ent.name.."]"
						form = form.. "button_exit[0.5,"..(pos-0.5)..";4,1;"..ent.key..";"..ent.name.."]"
					end
					minetest.show_formspec(pname, "advtrains_seating_"..self.id, form)
				end
@@ -712,7 +715,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, attrans("This wagon has no seats.")
				local allow, rsn=false, S("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
@@ -723,16 +726,16 @@ function wagon:on_rightclick(clicker)
										self:get_on(clicker, seatid)
										return
									else
										rsn=attrans("This wagon is full.")
										rsn=S("This wagon is full.")
									end
								else
									rsn=attrans("Doors are closed! (Try holding sneak key!)")
									rsn=S("Doors are closed! (Try holding sneak key!)")
								end
							end
						end
					end
				end
				minetest.chat_send_player(pname, rsn or attrans("You can't get on this wagon."))
				minetest.chat_send_player(pname, rsn or S("You can't get on this wagon."))
			else
				self:show_get_on_form(pname)
			end
@@ -858,7 +861,7 @@ function wagon:show_get_on_form(pname)
		end
		return
	end
	local form, comma="size[5,8]label[0.5,0.5;"..attrans("Select seat:").."]textlist[0.5,1;4,6;seat;", ""
	local form, comma="size[5,8]label[0.5,0.5;"..S("Select seat:").."]textlist[0.5,1;4,6;seat;", ""
	for seatno, seattbl in ipairs(self.seats) do
		local addtext, colorcode="", ""
		if data.seatp and data.seatp[seatno] then
@@ -870,7 +873,7 @@ function wagon:show_get_on_form(pname)
	end
	form=form..";0,false]"
	if self.has_inventory and self.get_inventory_formspec then
		form=form.."button_exit[1,7;3,1;inv;"..attrans("Show Inventory").."]"
		form=form.."button_exit[1,7;3,1;inv;"..S("Show Inventory").."]"
	end
	minetest.show_formspec(pname, "advtrains_geton_"..self.id, form)
end
@@ -881,27 +884,27 @@ function wagon:show_wagon_properties(pname)
	button: save
	]]
	local data = advtrains.wagons[self.id]
	local form = "size[5,5]"
	form = form.."label[0.2,0;"..attrans("This Wagon ID")..": "..self.id.." ("..data.owner..")]"
	form = form .. "field[0.5,1;4.5,1;whitelist;Allow these players to access your wagon:;"..minetest.formspec_escape(data.whitelist or "").."]"
	form = form .. "field[0.5,2;4.5,1;roadnumber;Wagon road number:;"..minetest.formspec_escape(data.roadnumber or "").."]"
	local form="size[5,5]"
	form=form.."label[0.2,0;"..S("This Wagon ID")..": "..self.id.." ("..data.owner..")]"
	form = form.."field[0.5,1;4.5,1;whitelist;"..S("Allow these players to access your wagon:")..";"..minetest.formspec_escape(data.whitelist or "").."]"
	form = form.."field[0.5,2;4.5,1;roadnumber;"..S("Wagon road number:")..";"..minetest.formspec_escape(data.roadnumber or "").."]"
	local fc = ""
	if data.fc then
		fc = table.concat(data.fc, "!")
	end
	form = form .. "field[0.5,3;4.5,1;fc;Freight Code:;"..fc.."]"
	form = form.. "field[0.5,3;4.5,1;fc;"..S("Freight Code:")..";"..fc.."]"
	if data.fc then
		if not data.fcind then data.fcind = 1 end
		if data.fcind > 1 then
			form=form.."button[0.5,3.5;1,1;fcp;prev FC]"
			form=form.."button[0.5,3.5;1,1;fcp;"..S("Prev FC").."]"
		end
		form=form.."label[1.5,3.5;Current FC:]"
		form=form.."label[1.5,3.5;"..S("Current FC: ").."]"

		local cur = data.fc[data.fcind] or ""
		form=form.."label[1.5,3.75;"..minetest.formspec_escape(cur).."]"
		form=form.."button[3.5,3.5;1,1;fcn;next FC]"
		form=form.."button[3.5,3.5;1,1;fcn;"..S("Next FC:").."]"
	end
	form=form.."button_exit[0.5,4.5;4,1;save;"..attrans("Save wagon properties").."]"
	form=form.."button_exit[0.5,4.5;4,1;save;"..S("Save wagon properties").."]"
	minetest.show_formspec(pname, "advtrains_prop_"..self.id, form)
end

@@ -986,30 +989,30 @@ function wagon:show_bordcom(pname)
	local linhei
	
	local form = "size[11,9]label[0.5,0;AdvTrains Boardcom v0.1]"
	form=form.."textarea[7.5,0.05;10,1;;"..attrans("Train ID")..": "..(minetest.formspec_escape(train.id or ""))..";]"
	form=form.."textarea[0.5,1.5;7,1;text_outside;"..attrans("Text displayed outside on train")..";"..(minetest.formspec_escape(train.text_outside or "")).."]"
	form=form.."textarea[0.5,3;7,1;text_inside;"..attrans("Text displayed inside train")..";"..(minetest.formspec_escape(train.text_inside or "")).."]"
	form=form.."field[7.5,1.75;3,1;line;"..attrans("Line")..";"..(minetest.formspec_escape(train.line or "")).."]"
	form=form.."field[7.5,3.25;3,1;routingcode;"..attrans("Routingcode")..";"..(minetest.formspec_escape(train.routingcode or "")).."]"
	form=form.."textarea[7.5,0.05;10,1;;"..S("Train ID")..": "..(minetest.formspec_escape(train.id or ""))..";]"
	form=form.."textarea[0.5,1.5;7,1;text_outside;"..S("Text displayed outside on train")..";"..(minetest.formspec_escape(train.text_outside or "")).."]"
	form=form.."textarea[0.5,3;7,1;text_inside;"..S("Text displayed inside train")..";"..(minetest.formspec_escape(train.text_inside or "")).."]"
	form=form.."field[7.5,1.75;3,1;line;"..S("Line")..";"..(minetest.formspec_escape(train.line or "")).."]"
	form=form.."field[7.5,3.25;3,1;routingcode;"..S("Routingcode")..";"..(minetest.formspec_escape(train.routingcode or "")).."]"
	--row 5 : train overview and autocoupling
	if train.velocity==0 then
		form=form.."label[0.5,4;Train overview /coupling control:]"
		form=form.."label[0.5,4;"..S("Train overview /coupling control:").."])"
		linhei=5
		local pre_own, pre_wl, owns_any = nil, nil, minetest.check_player_privs(pname, "train_admin")
		for i, tpid in ipairs(train.trainparts) do
			local ent = advtrains.wagons[tpid]
			if ent then
				local roadnumber = ent.roadnumber or ""
				form = form .. string.format("button[%d,%d;%d,%d;%s;%s]", i, linhei, 1, 0.2, "wgprp"..i, roadnumber)
				form = form.. string.format("button[%d,%d;%d,%d;%s;%s]", i, linhei, 1, 0.2, "wgprp"..i, roadnumber)
				local ename = ent.type
				form = form .. "item_image["..i..","..(linhei+0.5)..";1,1;"..ename.."]"
				form = form.. "item_image["..i..","..(linhei+0.5)..";1,1;"..ename.."]"
				if i~=1 then
					if checklock(pname, ent.owner, pre_own, ent.whitelist, pre_wl) then
						form = form .. "image_button["..(i-0.5)..","..(linhei+1.5)..";1,1;advtrains_discouple.png;dcpl_"..i..";]"
						form = form.. "image_button["..(i-0.5)..","..(linhei+1.5)..";1,1;advtrains_discouple.png;dcpl_"..i..";]"
					end
				end
				if i == data.pos_in_trainparts then
					form = form .. "box["..(i-0.1)..","..(linhei+0.4)..";1,1;green]"
					form = form.. "box["..(i-0.1)..","..(linhei+0.4)..";1,1;green]"
				end
				pre_own = ent.owner
				pre_wl = ent.whitelist
@@ -1018,24 +1021,24 @@ function wagon:show_bordcom(pname)
		end
		
		if train.movedir==1 then
			form = form .. "label["..(#train.trainparts+1)..","..(linhei)..";-->]"
			form = form.. "label["..(#train.trainparts+1)..","..(linhei)..";-->]"
		else
			form = form .. "label[0.5,"..(linhei)..";<--]"
			form = form.. "label[0.5,"..(linhei)..";<--]"
		end
		--check cpl_eid_front and _back of train
		local couple_front = checkcouple(train.cpl_front)
		local couple_back = checkcouple(train.cpl_back)
		if couple_front then
			form = form .. "image_button[0.5,"..(linhei+1)..";1,1;advtrains_couple.png;cpl_f;]"
			form = form.. "image_button[0.5,"..(linhei+1)..";1,1;advtrains_couple.png;cpl_f;]"
		end
		if couple_back then
			form = form .. "image_button["..(#train.trainparts+0.5)..","..(linhei+1)..";1,1;advtrains_couple.png;cpl_b;]"
			form = form.. "image_button["..(#train.trainparts+0.5)..","..(linhei+1)..";1,1;advtrains_couple.png;cpl_b;]"
		end
		
	else
		form=form.."label[0.5,4.5;Train overview / coupling control is only shown when the train stands.]"
		form=form.."label[0.5,4.5;"..S("Train overview / coupling control is only shown when the train stands.").."]"
	end
	form = form .. "button[0.5,8;3,1;save;Save]"
	form = form.. "button[0.5,8;3,1;save;"..S("Save").."]"
	
	-- Interlocking functionality: If the interlocking module is loaded, you can set the signal aspect
	-- from inside the train
@@ -1045,14 +1048,14 @@ function wagon:show_bordcom(pname)
			local oci = train.lzb.checkpoints[i]
			if oci.udata and oci.udata.signal_pos then
				if advtrains.interlocking.db.get_sigd_for_signal(oci.udata.signal_pos) then
					form = form .. "button[4.5,8;5,1;ilrs;Remote Routesetting]"
					form = form.. "button[4.5,8;5,1;ilrs;"..S("Remote Routesetting").."]"
					break
				end
			end
			i=i+1
		end
		if train.ars_disable then
			form = form .. "button[4.5,7;5,1;ilarsenable;Clear 'Disable ARS' flag]"
			form = form.. "button[4.5,7;5,1;ilarsenable;"..S("Clear 'Disable ARS' flag").."]"
		end
	end
	
@@ -1269,7 +1272,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, S("Doors are closed. Use Sneak+rightclick to ignore the closed doors and get off."))
	end
	if fields.off then
		self:get_off(no)
@@ -1278,7 +1281,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, attrans("You are not allowed to access the driver stand.")
		return false, S("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:get_pos(), self:train().text_outside)
@@ -1298,7 +1301,7 @@ end

function advtrains.safe_decouple_wagon(w_id, pname, try_run)
	if not minetest.check_player_privs(pname, "train_operator") then
		minetest.chat_send_player(pname, "Missing train_operator privilege")
		minetest.chat_send_player(pname, S("Missing train_operator privilege"))
		return false
	end
	local data = advtrains.wagons[w_id]
@@ -1316,7 +1319,7 @@ function advtrains.safe_decouple_wagon(w_id, pname, try_run)
	end
	
	if not checklock(pname, data.owner, owdata.owner, data.whitelist, owdata.whitelist) then
		minetest.chat_send_player(pname, "Not allowed to do this.")
		minetest.chat_send_player(pname, S("Not allowed to do this."))
		return false
	end
	
@@ -1341,7 +1344,7 @@ function advtrains.get_wagon_prototype(data)
	end
	local rt, proto = advtrains.resolve_wagon_alias(wt)
	if not rt then
		--atwarn("Unable to load wagon type",wt,", using placeholder")
		--atwarn(S("Unable to load wagon type"),wt,S(", using placeholder"))
		rt = "advtrains:wagon_placeholder"
		proto = advtrains.wagon_prototypes[rt]
	end
@@ -1378,7 +1381,7 @@ function advtrains.standard_inventory_formspec(self, pname, invname)
	local r = "size[8,11]"..
			"list["..invname..";box;0,0;8,3;]"
	if data.owner==pname then
		r = r .. "button_exit[0,9;4,1;prop;"..attrans("Wagon properties").."]"
		r = r .. "button_exit[0,9;4,1;prop;"..S("Wagon properties").."]"
	end
	r = r .. "list[current_player;main;0,5;8,4;]"..
			"listring[]"
@@ -1435,7 +1438,7 @@ function advtrains.register_wagon(sysname_p, prototype, desc, inv_img, nincreati
					return itemstack
				end
				if not minetest.check_player_privs(placer, {train_operator = true }) then
					minetest.chat_send_player(pname, "You don't have the train_operator privilege.")
					minetest.chat_send_player(pname, S("You don't have the train_operator privilege."))
					return itemstack
				end
				if not minetest.check_player_privs(placer, {train_admin = true }) and minetest.is_protected(pos, placer:get_player_name()) then
@@ -1447,7 +1450,7 @@ function advtrains.register_wagon(sysname_p, prototype, desc, inv_img, nincreati
				
				local prevpos = advtrains.get_adjacent_rail(pos, tconns, plconnid)
				if not prevpos then
					minetest.chat_send_player(pname, "The track you are trying to place the wagon on is not long enough!")
					minetest.chat_send_player(pname, S("The track you are trying to place the wagon on is not long enough!"))
					return
				end
				
diff --git a/advtrains_line_automation/scheduler.lua b/advtrains_line_automation/scheduler.lua
index 6025b02..5cba0a0 100644
--- a/advtrains_line_automation/scheduler.lua
+++ b/advtrains_line_automation/scheduler.lua
@@ -59,7 +59,7 @@ function sched.run()
				-- run it
				callbacks[elem.e](elem.d)
			else
				atwarn("[lines][scheduler] No callback to handle schedule",elem)
				atwarn("[lines][scheduler] "..S("No callback to handle schedule"),elem)
			end
			cnt=cnt+1
			ucn = units_cnt[elem.u]
diff --git a/advtrains_line_automation/stoprail.lua b/advtrains_line_automation/stoprail.lua
index ba3977d..89f4a09 100644
--- a/advtrains_line_automation/stoprail.lua
+++ b/advtrains_line_automation/stoprail.lua
@@ -1,6 +1,8 @@
-- stoprail.lua
-- adds "stop rail". Recognized by lzb. (part of behavior is implemented there)

-- Translation
S = attrans

local function to_int(n)
	--- Disallow floating-point numbers
@@ -28,7 +30,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, attrans("You are not allowed to configure this track."))
		minetest.chat_send_player(pname, S("You are not allowed to configure this track."))
		return
	end
	
@@ -51,19 +53,19 @@ local function show_stoprailform(pos, player)
	
	local form = "size[8,7]"
	form = form.."style[stn,ars;font=mono]"
	form = form.."field[0.8,0.8;2,1;stn;"..attrans("Station Code")..";"..minetest.formspec_escape(stdata.stn).."]"
	form = form.."field[2.8,0.8;5,1;stnname;"..attrans("Station Name")..";"..minetest.formspec_escape(stnname).."]"
	form = form.."field[0.80,2.0;1.75,1;ddelay;"..attrans("Door Delay")..";"..minetest.formspec_escape(stdata.ddelay).."]"
	form = form.."field[2.55,2.0;1.75,1;speed;"..attrans("Dep. Speed")..";"..minetest.formspec_escape(stdata.speed).."]"
	form = form.."field[4.30,2.0;1.75,1;track;"..attrans("Track")..";"..minetest.formspec_escape(stdata.track).."]"
	form = form.."field[6.05,2.0;1.75,1;wait;"..attrans("Stop Time")..";"..stdata.wait.."]"
	form = form.."label[0.5,2.6;"..attrans("Door Side").."]"
	form = form.."dropdown[0.51,3.0;2;doors;Left,Right,Closed;"..door_dropdown[stdata.doors].."]"
	form = form.."checkbox[3.00,2.4;reverse;"..attrans("Reverse train")..";"..(stdata.reverse and "true" or "false").."]"
	form = form.."checkbox[3.00,2.8;kick;"..attrans("Kick out passengers")..";"..(stdata.kick and "true" or "false").."]"
	form = form.."checkbox[3.00,3.2;waitsig;"..attrans("Wait for signal to clear")..";"..(stdata.waitsig and "true" or "false").."]"
	form = form.."textarea[0.8,4.2;7,2;ars;Trains stopping here (ARS rules);"..advtrains.interlocking.ars_to_text(stdata.ars).."]"
	form = form.."button[0.5,6;7,1;save;"..attrans("Save").."]"
	form = form.."field[0.8,0.8;2,1;stn;"..S("Station Code")..";"..minetest.formspec_escape(stdata.stn).."]"
	form = form.."field[2.8,0.8;5,1;stnname;"..S("Station Name")..";"..minetest.formspec_escape(stnname).."]"
	form = form.."field[0.80,2.0;1.75,1;ddelay;"..S("Door Delay")..";"..minetest.formspec_escape(stdata.ddelay).."]"
	form = form.."field[2.55,2.0;1.75,1;speed;"..S("Dep. Speed")..";"..minetest.formspec_escape(stdata.speed).."]"
	form = form.."field[4.30,2.0;1.75,1;track;"..S("Track")..";"..minetest.formspec_escape(stdata.track).."]"
	form = form.."field[6.05,2.0;1.75,1;wait;"..S("Stop Time")..";"..stdata.wait.."]"
	form = form.."label[0.5,2.6;"..S("Door Side").."]"
	form = form.."dropdown[0.51,3.0;2;doors;"..S("Left")..","..S("Right")..","..S("Closed")..";"..door_dropdown[stdata.doors].."]"
	form = form.."checkbox[3.00,2.4;reverse;"..S("Reverse train")..";"..(stdata.reverse and "true" or "false").."]"
	form = form.."checkbox[3.00,2.8;kick;"..S("Kick out passengers")..";"..(stdata.kick and "true" or "false").."]"
	form = form.."checkbox[3.00,3.2;waitsig;"..S("Wait for signal to clear")..";"..(stdata.waitsig and "true" or "false").."]"
	form = form.."textarea[0.8,4.2;7,2;ars;"..S("Trains stopping here (ARS rules)")..";"..advtrains.interlocking.ars_to_text(stdata.ars).."]"
	form = form.."button[0.5,6;7,1;save;"..S("Save").."]"
	
	minetest.show_formspec(pname, "at_lines_stop_"..pe, form)
end
@@ -74,7 +76,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, attrans("You are not allowed to configure this track."))
			minetest.chat_send_player(pname, S("You are not allowed to configure this track."))
			return
		end
		
@@ -98,7 +100,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, attrans("Station code \"@1\" already exists and is owned by @2.", fields.stn, stn.owner))
						minetest.chat_send_player(pname, S("Station code \"@1\" already exists and is owned by @2.", fields.stn, stn.owner))
						show_stoprailform(pos,player)
						return
					end
@@ -112,7 +114,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, attrans("This station is owned by @1. You are not allowed to edit its name.", stn.owner))
					minetest.chat_send_player(pname, S("This station is owned by @1. You are not allowed to edit its name.", stn.owner))
				end
			end
			
@@ -183,8 +185,8 @@ local adefunc = function(def, preset, suffix, rotation)
							if stdata.ars and (stdata.ars.default or advtrains.interlocking.ars_check_rule_match(stdata.ars, train) ) then
								advtrains.lzb_add_checkpoint(train, index, 2, nil)
								local stn = advtrains.lines.stations[stdata.stn]
								local stnname = stn and stn.name or "Unknown Station"
								train.text_inside = "Next Stop:\n"..stnname
								local stnname = stn and stn.name or S("Unknown Station")
								train.text_inside = S("Next Stop:\n")..stnname
								advtrains.interlocking.ars_set_disable(train, true)
							end
						end
@@ -200,7 +202,7 @@ local adefunc = function(def, preset, suffix, rotation)
						
						if stdata.ars and (stdata.ars.default or advtrains.interlocking.ars_check_rule_match(stdata.ars, train) ) then
							local stn = advtrains.lines.stations[stdata.stn]
							local stnname = stn and stn.name or "Unknown Station"
							local stnname = stn and stn.name or S("Unknown Station")
							
							-- Send ATC command and set text
							advtrains.atc.train_set_command(train, "B0 W O"..stdata.doors..(stdata.kick and "K" or "")
@@ -225,7 +227,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=attrans("Station/Stop Track"),
		description=S("Station/Stop Track"),
		formats={},
		get_additional_definiton = adefunc,
	}, advtrains.trackpresets.t_30deg_straightonly)
-- 
2.30.2