aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSingularis <singularis@volny.cz>2025-04-21 12:31:34 +0200
committerorwell <orwell@bleipb.de>2025-05-27 20:22:02 +0200
commit4f5ec9170e8b7890d2a6e70cab3a39067c84b3e2 (patch)
tree76f54650c8e21bc736be537c9cd0190a2167d46b
parent95a5586e0fe196e2291acaf128b8d1b4f8a32510 (diff)
downloadadvtrains-4f5ec9170e8b7890d2a6e70cab3a39067c84b3e2.tar.gz
advtrains-4f5ec9170e8b7890d2a6e70cab3a39067c84b3e2.tar.bz2
advtrains-4f5ec9170e8b7890d2a6e70cab3a39067c84b3e2.zip
[advtrains,*] přechod na Advtrains 2.5.0 (2. fáze)
-rw-r--r--advtrains/helpers.lua2
-rw-r--r--advtrains/init.lua2
l---------advtrains/locale/README.md1
-rw-r--r--advtrains/locale/advtrains.cs.tr36
-rw-r--r--advtrains/po/README.md70
-rw-r--r--advtrains/po/advtrains.pot632
-rw-r--r--advtrains/po/de.po724
-rw-r--r--advtrains/po/fr.po728
-rwxr-xr-xadvtrains/po/update-translations.sh28
-rw-r--r--advtrains/po/zh_CN.po696
-rw-r--r--advtrains/po/zh_TW.po696
-rw-r--r--advtrains/poconvert.lua185
-rw-r--r--advtrains/wagons.lua4
-rw-r--r--advtrains_interlocking/database.lua4
-rw-r--r--advtrains_interlocking/route_prog.lua12
-rw-r--r--advtrains_interlocking/route_ui.lua48
-rw-r--r--advtrains_interlocking/routesetting.lua4
-rw-r--r--advtrains_interlocking/signal_aspect_ui.lua38
-rw-r--r--advtrains_interlocking/tcb_ts_ui.lua112
-rw-r--r--advtrains_interlocking/tool.lua21
-rw-r--r--advtrains_signals_ks/init.lua153
-rw-r--r--advtrains_train_track/init.lua18
22 files changed, 293 insertions, 3921 deletions
diff --git a/advtrains/helpers.lua b/advtrains/helpers.lua
index 1ed5a7e..6f5d1eb 100644
--- a/advtrains/helpers.lua
+++ b/advtrains/helpers.lua
@@ -520,7 +520,7 @@ function advtrains.after_place_signal(pos, placer, itemstack, pointed_thing)
local rn = minetest.registered_nodes
local prefix = name:sub(1, -2)
if not (rn[prefix.."30"] and rn[prefix.."45"] and rn[prefix.."60"]) then return end
- local variant = math.floor(placer:get_look_horizontal() * -8 / math.pi + 16.5)
+ local variant = math.floor(placer:get_look_horizontal() * -8 / math.pi + 16.25) % 16
local n = variants[variant + 1]
if n == nil then return end
local node = advtrains.ndb.get_node(pos)
diff --git a/advtrains/init.lua b/advtrains/init.lua
index f602c44..82c3bbb 100644
--- a/advtrains/init.lua
+++ b/advtrains/init.lua
@@ -207,8 +207,6 @@ advtrains.meseconrules =
advtrains.fpath=minetest.get_worldpath().."/advtrains"
-advtrains.poconvert = dofile(advtrains.modpath.."/poconvert.lua")
-advtrains.poconvert.from_flat("advtrains")
attrans = minetest.get_translator("advtrains")
advtrains.speed = dofile(advtrains.modpath.."/speed.lua")
diff --git a/advtrains/locale/README.md b/advtrains/locale/README.md
deleted file mode 120000
index 61e473c..0000000
--- a/advtrains/locale/README.md
+++ /dev/null
@@ -1 +0,0 @@
-../po/README.md \ No newline at end of file
diff --git a/advtrains/locale/advtrains.cs.tr b/advtrains/locale/advtrains.cs.tr
index 21abf9c..dbf62c0 100644
--- a/advtrains/locale/advtrains.cs.tr
+++ b/advtrains/locale/advtrains.cs.tr
@@ -23,15 +23,19 @@ ATC controller, mode @1@nCommand: @2=Řídicí obvod ATC v režimu "@1"@nPříka
ATC controller, unconfigured.=Řídicí obvod ATC, nenastavený.
ATC controller=řídicí obvod ATC
Access to @1=Přístup k: @1
+Add locks=Přidat zámky
Allow these players to access your wagon:=Dovolit těmto hráčským postavám řídit váš vlak:
Andrew's Cross=výstražný kříž
Assign a signal=Přiřadit signál
+Assigned distant signal to the main signal at @1=Předzvěst přiřazena hlavnímu signálu na pozici @1
+Automatic routesetting=ARS
Automatic Working is active.=Automatika je aktivní.
BBÖ 1080=zelená elektrická lokomotiva (výkonná)
Big Industrial Train Engine=velká průmyslová lokomotiva
Black Subway Passenger Wagon=černý vůz metra
Blue Subway Passenger Wagon=modrý vůz metra
Boiler=kotel (pro parní lokomotivu)
+Boundary TCBs=Hraniční TCB
Box Wagon=dřevěný nákladní vagon
Buffer and Chain Coupler=Spřáhlo typu BCC
Bumper=zarážka
@@ -53,6 +57,7 @@ Cannot use this here.=Zde tento nástroj nelze použít.
Chimney=komín (pro parní lokomotivu)
Clear 'Disable ARS' flag=Zrušit příznak 'vypnout ARS'
Clear=Uvolnit/smazat
+Clear locks=Smazat zámky
Closed=neotevírat
Coal Wagon(for transib)=výsypný nákladní vagon
Command (on)=Příkaz (zapnutý)
@@ -82,6 +87,7 @@ Current FC:=Akt. NK:
Default Seat (driver stand)=Výchozí sedadlo (sedadlo řidiče/ky)
Default Seat=Výchozí sedadlo
Delete all train routes, force them to recalculate=Smaže všechny vlakové cesty, čímž vynutí jejich nové vypočítání.
+Delete this route=Smazat tuto cestu.
Demo signal at Danger=ukázkový signál: Stůj
Demo signal at Free=ukázkový signál: Volno
Demo signal at Slow=ukázkový signál: Pomalu
@@ -97,10 +103,12 @@ Disable Automatic Working=Vypnout automatiku
Disable the advtrains globalstep temporarily=Dočasně vypne globální krok advtrains
Display advtrains train map of given area.@nFirst form:[x1 z1 x2 z2] - specify area directly.@nSecond form:[mdef] - Use a predefined map background(see init.lua)@nThird form: No parameters - use WorldEdit position markers.=Zobrazí mapu dané oblasti podle advtrains.@nPrvní forma: [x1 z1 x2 z2] - určit oblast přímo.@nDruhá forma:[mdef] - Použít předdefinované pozadí mapy (viz init.lua)@nTřetí forma: Bez parametrů - použít pozice nastavené v Editoru světa.
Dissolve Section=Rozpustit úsek
+Distant signal triggers ARS=Předzvěst spouští ARS
Door Delay=Zpoždění dveří
Door Side=Otevřít dveře
Doors are closed! (try holding sneak key!)=Dveře jsou zavřené! (zkuste při nástupu držet Shift)
Doors are closed! Use Sneak+rightclick to ignore the closed doors and get off!=Dveře jsou zavřeny! Pro obejití dveří držte při výstupu Shift.
+Driver's cab=kabina strojvedoucí/ho
Driver Stand (left)=Sedadlo řidiče/ky (vlevo)
Driver Stand (right)=Sedadlo řidiče/ky (vpravo)
Driver Stand=Sedadlo řidiče/ky
@@ -118,6 +126,7 @@ Expect to pass the next signal at maximum speed=Bude: Volno
Expect to pass the next signal at speed of @1=Bude: Volno s omezením rychlosti na @1
Expect to stop at the next signal=Bude: Stůj
Failed to remove TCB!=Odstranění TCB selhalo!
+Fixed route locks (e.g. level crossings)=Zámky (např. výhybky a křížení)
Freight Code:=Nákladní kód:
Get off (forced)=Vystoupit (vynutit)
Get off=Vystoupit
@@ -132,6 +141,7 @@ Industrial wood wagon=klanicový vůz
Influence Point=Bod účinku
Influence point is not set.=Bod účinku není nastaven.
Influence point is set at @1/@2=Bod účinku je nastaven na: @1/@2
+Influence point is set at @1.=Bod účinku je nastaven na: @1
Insufficient privileges to use this!=Nemáte právo použít tento nástroj!
Interlocking privilege required!=Na přehazování výhybek je potřeba právo!
Interlocking tool@nright-click turnouts to inspect route locks=železniční inspekční nástroj@nKlikněte pravým tlačítkem na výhybku pro prozkoumání vlakových cest
@@ -154,17 +164,21 @@ Lampless Signal (@1)=mechanický signál (@1)
Left=vlevo
Line speed restriction sign=linkové omezení traťové rychlosti
Line=Linka
+Link @1=Spojeno s @1
Loading Track=kolej nakládání/vykládání
Lock couples=Spřažení uzamčeno
Manual lock (@1)=Ručně nastavená vlaková cesta (@1)
MeseJet Engine=hnací článek moderní elektrické jednotky
MeseJet Wagon=článek moderní elektrické jednotky
Missing train_operator privilege=Chybí vám právo train_operator
+Modify=Změnit
Move=Přesunout
NOTE: ARS is disabled.=Poznámka: ARS je vypnuto.
New Route=Nová vlaková cesta
+New (Manual)=Přidat cestu ručně
Next Stop:=Příští zastávka/stanice:
No info=Bez informace
+No Link=Žádné spojení
No route locks set=Žádné vlakové cesty
No trains on this section.=Žádné vlaky
Not allowed to do this.=Toto vám není dovoleno.
@@ -179,16 +193,19 @@ Permanent local speed restriction sign=trvalé omezení traťové rychlosti
Perpendicular Diamond Crossing Track=pravoúhlé křížení kolejí
Please cancel route first!=Nejdřív prosím zrušte vlakovou cestu!
Please unassign signal first!=Nejdřív prosím odpojte signál!
-Point Speed Restriction Rail=kolej s omezením rychlosti
+Point Speed Restriction Track=kolej s omezením rychlosti
+Point speed restriction: @1=omezení rychlosti: @1
Point speed restriction=omezení rychlosti
Position is occupied by a train.=Pozice je zabrána vlakem.
+Punch components to add fixed locks. (punch anything else @= end)=Levý klik na komponenty pro jejich uzamčení. (levý klik na cokoliv jiného @= konec)
Red Subway Passenger Wagon=červený vůz metra
Remote Routesetting=Vzdálené nastavení vlakové cesty
Remote Detector Rail=detekující kolej (dálková)
Remove from section=Odstranit z trať. úseku
+Remove Section=Rozpustit traťový úsek
Reset section state=Vymazat stav úseku
-Reset track section @1!=Smazat stav traťového úseku @1!
-Reset track section=Smazat stav traťového úseku
+Reset track section @1!=Smazán stav traťového úseku @1!
+Reset track section=Smazán stav traťového úseku
Returns the position of the train with the given id=Vypíše pozici vlaku podle jeho id
Reverse train=Obrátit směr jízdy
Right=vpravo
@@ -211,19 +228,24 @@ Section name=Název úseku
Select Signal Aspect:=Signál:
Select seat:=Vybrat místo k sezení:
Set Route=Nastavit vlakovou cestu
+Set ARS default route=Nastavit cestu jako výchozí
Set aspect manually=Nastavit stav signalizace ručně
+Set distant signal: Punch the main signal to assign!=Nastavení předzvěsti: levý klik na hlavní signál pro přiřazení.
Set point speed restriction:=nastavit omezení rychlosti:
Set=Nastavit
Show Inventory=Zobrazit inventář
Show track section=Zobrazit traťový úsek
Show=Zobrazit
Side @1=Strana @1
+Side A=Strana A
+Side B=Strana B
Signal (@1)=světelný signál (@1)
Signal Sign=železniční značka
Signal at @1=Signalizace na pozici @1
Signal has been unassigned. Name and routes are kept for reuse.=Signál byl odpojen. Jméno a vlakové cesty jsou zachovány pro znovupoužití.
Signal name=Název signalizace
Signalling=Signalizace
+Smart Route=Přidat automaticky
Speed:=Rychlost:
Station Code=Kód dopravny
Station Name=Název dopravny
@@ -235,6 +257,7 @@ Stop Time=Doba stání
Subway Passenger Wagon=žlutý vůz metra
TCB assigned to @1=TCB přiřazeno na @1
TCB has been removed.=TCB byla odstraněna.
+TCB Link: Select linked TCB now!=Spojení TCB: Zvolte TCB ke spojení.
Target:=Cíl:
Temporary local speed restriction sign=dočasné omezení traťové rychlosti
Text displayed inside train=Text zobrazený uvnitř (5 ř.)
@@ -253,15 +276,17 @@ This track can not be changed!=Tento úsek nemůže být změněn!
This track can not be removed!=Tento úsek nemůže být odstraněn!
This track can not be rotated!=Tento úsek nemůže být otočen!
This wagon is owned by @1, you can't destroy it.=Vlastníkem/cí toho vagonu je @1, nemáte právo ho rozebrat.
+This Wagon ID=ID vagonu
This will clear the list of trains@nand the routesetting status of this section.@nAre you sure?=Toto smaže seznam vlaků@na stav tohoto úseku.@nJste si jistý/á?
This will remove the track section and set all its end points to End Of Interlocking=Toto odstraní traťový úsek a nastaví všechny jsou konce jako konce zabezpečení
Track Circuit Break Configuration=Nastavení hranice traťových oddílů
Track Circuit Break=hranice traťových úseků (TCB)
-Track Section Detail - @1=Přehled traťové sekce - @1
-Track Worker Tool@n@nLeft-click: change rail type (straight/curve/switch)@nRight-click: rotate rail/bumper/signal/etc.=klíč na konstrukci výhybek@n@nLevé tlačítko přepíná typ trati (rovná/zatáčka/výhybka),@nPravé tlačítko otáčí kolejový úsek.
+Track Section Detail - @1=Přehled traťového úseku - @1
+Track Worker Tool@n@nLeft-click: change rail type (straight/curve/switch)@nRight-click: rotate object=klíč na konstrukci výhybek@n@nLevé tlačítko přepíná typ trati (rovná/zatáčka/výhybka),@nPravé tlačítko otáčí kolejový úsek.
Track with Railway Gravel=kolej s železničním štěrkem
Track=kolej
Train copy/paste tool@n@nLeft-click: copy train@nRight-click: paste train=duplikátor vlakových souprav@n@nKlik levým: zkopírovat soupravu do schránky@nKlik pravým: umístit duplikát na trať
+Train ID=ID vlaku
Train overview / coupling control is only shown when the train stands.=Ovládání spřáhel je možné jen u strojícího vlaku
Train overview/coupling control:=Ovládání spřáhel:
Trains on this section:=Vlaky v tomto úseku:
@@ -279,6 +304,7 @@ Use the 'Join' button to designate rail crosses and link not listed far-away TCB
Wagon is full.=Vůz je plně obsazen.
Wagon placeholder=Místodržící vagonu
Wagon properties=Vlastnosti vagonu
+Wagon Properties Tool@nPunch a wagon to view and edit the Wagon Properties=editor vlastností vagonu (použít levým klikem)
Wagon road number:=Číslo vagonu:
Wait for this route to be cancelled in order to do anything here.=
Wait for this route to be cancelled in order to do anything here.=Počkejte na zrušení vlakové cesty, než tu budete moci cokoliv dělat.
diff --git a/advtrains/po/README.md b/advtrains/po/README.md
deleted file mode 100644
index 3e94682..0000000
--- a/advtrains/po/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# Translations
-Please read this document before working on any translations.
-
-Unlike many other mods, Advtrains uses `.po` files for localization,
-which are then automatically converted to `.tr` files when the mod is
-loaded. Therefore, please submit patches that edit the `.po` files.
-
-## Getting Started
-The translation files can be edited like any other `.po` file.
-
-If the translation file for your language does not exist, create it by
-copying `template.txt` to `advtrains.XX.tr`, where `XX` is replaced by
-the language code.
-
-Feel free to use the [discussion mailing list][srht-discuss] if you
-have any questions regarding localization.
-
-You can share your `.po` file directly or [as a patch][gsm] to the [dev
-mailing list][srht-devel]. The latter is encouraged, but, unlike code
-changes, translation files sent directly are also accepted.
-
-[tr-format]: https://minetest.gitlab.io/minetest/translations/#translation-file-format
-[srht-discuss]: https://lists.sr.ht/~gpcf/advtrains-discuss
-[srht-devel]: https://lists.sr.ht/~gpcf/advtrains-devel
-[gsm]: https://git-send-email.io
-
-## Translation Notes
-* Translations should be consistent. You can use other entries or the
-translations in Minetest as a reference.
-* Translations do not have to fully correspond to the original text -
-they only need to provide the same information. In particular,
-translations do not need to have the same linguistical structure as the
-original text.
-* Replacement sequences (`@1`, `@2`, etc) should not be translated.
-* Certain abbreviations or names, such as "Ks" or "Zs 3", should
-generally not be translated.
-
-### (de) German
-* Verwenden Sie die neue Rechtschreibung und die Sie-Form.
-* Mit der deutschen Tastaturbelegung unter Linux können die
-Anführungszeichen „“ mit AltGr-V bzw. AltGr-B eingegeben werden.
-
-### (zh) Chinese
-(This section is written in English to avoid writing the note twice or
-using only one of the variants, as most of this section applies to both
-the traditional and simplified variants.)
-
-* Please use the 「」 quotation marks for Traditional Chinese and “”
-for Simplified Chinese.
-* Please use the fullwidth variants of: , 、 。 ? ! : ;
-* Please use the halfwidth variants of: ( ) [ ] / \ |
-* Please do not leave any space between Han characters (including
-fullwidth punctuation marks).
-* Please leave a space between Han characters (excluding fullwidth
-punctuation marks) and characters from other scripts (including
-halfwidth punctuation marks). However, do not leave any space between
-Han characters and Arabic numerals.
-
-## Notes for developers
-* The `update-translations.sh` script can be used to update the
-translation files. However, please make sure to install the
-`basic_trains` mod before running the script.
-* Please make sure that the first argument to `S` (or `attrans`) _only_
-includes string literals without formatting or concatenation. This is
-unfortunately a limitation of the `xgettext` utility.
-* Avoid word-by-word translations.
-* Avoid manipulating translated strings (except for concatenation). Use
-server-side translations if you have to modify the text sent to users.
-* Avoid truncating strings unless multibyte characters are handled
-properly.
diff --git a/advtrains/po/advtrains.pot b/advtrains/po/advtrains.pot
deleted file mode 100644
index 6fda1d7..0000000
--- a/advtrains/po/advtrains.pot
+++ /dev/null
@@ -1,632 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the advtrains package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-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"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: advtrains/atc.lua:109
-msgid "Unconfigured ATC controller"
-msgstr ""
-
-#: advtrains/atc.lua:150
-msgid ""
-"ATC controller, mode @1\n"
-"Command: @2"
-msgstr ""
-
-#: advtrains/atc.lua:180
-msgid "Command"
-msgstr ""
-
-#: advtrains/atc.lua:184
-msgid "Command (on)"
-msgstr ""
-
-#: advtrains/atc.lua:187
-msgid "Digiline channel"
-msgstr ""
-
-#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
-#: advtrains_luaautomation/active_common.lua:48
-msgid "Save"
-msgstr ""
-
-#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving."
-msgstr ""
-
-#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: doors are closed."
-msgstr ""
-
-#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: train moving."
-msgstr ""
-
-#: advtrains/atc.lua:322
-msgid "ATC command syntax error: I statement not closed: @1"
-msgstr ""
-
-#: advtrains/atc.lua:385
-msgid "ATC command parse error: Unknown command: @1"
-msgstr ""
-
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
-msgstr ""
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr ""
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough."
-msgstr ""
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr ""
-
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr ""
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr ""
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity."
-msgstr ""
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1."
-msgstr ""
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1."
-msgstr ""
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr ""
-
-#: advtrains/copytool.lua:180
-msgid "Train copied."
-msgstr ""
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr ""
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr ""
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
-msgstr ""
-
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<No coupler>"
-msgstr ""
-
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
-msgstr ""
-
-#: advtrains/craft_items.lua:3
-msgid "Boiler"
-msgstr ""
-
-#: advtrains/craft_items.lua:9
-msgid "Driver's cab"
-msgstr ""
-
-#: advtrains/craft_items.lua:15
-msgid "Wheel"
-msgstr ""
-
-#: advtrains/craft_items.lua:21
-msgid "Chimney"
-msgstr ""
-
-#: advtrains/misc_nodes.lua:16
-msgid "@1 Platform (low)"
-msgstr ""
-
-#: advtrains/misc_nodes.lua:33
-msgid "@1 Platform (high)"
-msgstr ""
-
-#: advtrains/misc_nodes.lua:59
-msgid "@1 Platform (45 degree)"
-msgstr ""
-
-#: advtrains/misc_nodes.lua:81
-msgid "@1 Platform (low, 45 degree)"
-msgstr ""
-
-#: advtrains/protection.lua:7
-msgid "Can place, remove and operate trains"
-msgstr ""
-
-#: advtrains/protection.lua:12
-msgid ""
-"Can place, remove and operate any train, regardless of owner, whitelist, or "
-"protection"
-msgstr ""
-
-#: advtrains/protection.lua:18
-msgid "Can place and dig tracks in unprotected areas"
-msgstr ""
-
-#: advtrains/protection.lua:24
-msgid "Can operate turnouts and signals in unprotected areas"
-msgstr ""
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
-msgstr ""
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
-msgstr ""
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr ""
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr ""
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr ""
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr ""
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr ""
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (left)"
-msgstr ""
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (right)"
-msgstr ""
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (top)"
-msgstr ""
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr ""
-
-#: advtrains/trackplacer.lua:313
-msgid ""
-"Track Worker Tool\n"
-"\n"
-"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate object"
-msgstr ""
-
-#: advtrains/trackplacer.lua:340 advtrains/trackplacer.lua:377
-msgid "This node can't be rotated using the trackworker."
-msgstr ""
-
-#: advtrains/trackplacer.lua:350
-msgid "This track can not be rotated."
-msgstr ""
-
-#: advtrains/trackplacer.lua:404
-msgid "This node can't be changed using the trackworker."
-msgstr ""
-
-#: advtrains/trackplacer.lua:414
-msgid "This track can not be changed."
-msgstr ""
-
-#: advtrains/tracks.lua:449
-msgid "This track can not be removed."
-msgstr ""
-
-#: advtrains/tracks.lua:616
-msgid "Position is occupied by a train."
-msgstr ""
-
-#: advtrains/tracks.lua:622
-msgid "There's a Track Circuit Break here."
-msgstr ""
-
-#: advtrains/tracks.lua:626
-msgid "There's a Signal Influence Point here."
-msgstr ""
-
-#: advtrains/tracks.lua:637
-msgid "@1 Slope"
-msgstr ""
-
-#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place slope: not pointing at node."
-msgstr ""
-
-#: advtrains/tracks.lua:658
-msgid "Can't place slope: space occupied."
-msgstr ""
-
-#: advtrains/tracks.lua:711
-msgid "Can't place slope: Not enough slope items left (@1 required)."
-msgstr ""
-
-#: advtrains/tracks.lua:714
-msgid "Can't place slope: There's no slope of length @1."
-msgstr ""
-
-#: advtrains/tracks.lua:721
-msgid "Can't place slope: no supporting node at upper end."
-msgstr ""
-
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
-msgstr ""
-
-#: advtrains/wagons.lua:179
-msgid "This wagon is owned by @1, you can't destroy it."
-msgstr ""
-
-#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty."
-msgstr ""
-
-#: advtrains/wagons.lua:210
-msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
-msgstr ""
-
-#: advtrains/wagons.lua:216
-msgid ""
-"Warning: If you destroy this wagon, you only get some steel back! If you are "
-"sure, hold Sneak and left-click the wagon."
-msgstr ""
-
-#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
-msgid "Show Inventory"
-msgstr ""
-
-#: advtrains/wagons.lua:652
-msgid "Onboard Computer"
-msgstr ""
-
-#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
-msgid "Wagon properties"
-msgstr ""
-
-#: advtrains/wagons.lua:658
-msgid "Get off"
-msgstr ""
-
-#: advtrains/wagons.lua:661
-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:706
-msgid "Doors are closed! (Try holding sneak key!)"
-msgstr ""
-
-#: advtrains/wagons.lua:712
-msgid "You can't get on this wagon."
-msgstr ""
-
-#: advtrains/wagons.lua:838
-msgid "Select seat:"
-msgstr ""
-
-#: advtrains/wagons.lua:880
-msgid "Save wagon properties"
-msgstr ""
-
-#: advtrains/wagons.lua:965
-msgid "Text displayed outside on train"
-msgstr ""
-
-#: advtrains/wagons.lua:966
-msgid "Text displayed inside train"
-msgstr ""
-
-#: advtrains/wagons.lua:967
-msgid "Line"
-msgstr ""
-
-#: advtrains/wagons.lua:968
-msgid "Routingcode"
-msgstr ""
-
-#: advtrains/wagons.lua:1241
-msgid ""
-"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
-"off."
-msgstr ""
-
-#: advtrains/wagons.lua:1250
-msgid "You are not allowed to access the driver stand."
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:13
-msgid "Point speed restriction: @1"
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:14
-msgid "Set point speed restriction:"
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:30
-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
-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
-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:60
-msgid "Door Side"
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:62
-msgid "Reverse train"
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:63
-msgid "Kick out passengers"
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:97
-msgid "Station code \"@1\" already exists and is owned by @2."
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:111
-msgid "This station is owned by @1. You are not allowed to edit its name."
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:221
-msgid "Station/Stop Track"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:17
-msgid "Unconfigured LuaATC component"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:46
-msgid "LuaATC Environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:49
-msgid "Clear Local Environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:50
-msgid "Code"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:64
-msgid ""
-"You are not allowed to configure this LuaATC component without the @1 "
-"privilege."
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:94
-msgid "LuaATC component assigned to environment '@1'"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:96
-msgid "LuaATC component assigned to an invalid environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:171
-msgid "LuaATC component with error: @1"
-msgstr ""
-
-#: advtrains_luaautomation/init.lua:13
-msgid ""
-"Can place and configure LuaATC components, including execute potentially "
-"harmful Lua code"
-msgstr ""
-
-#: advtrains_luaautomation/mesecon_controller.lua:211
-msgid "LuaATC Mesecon Controller"
-msgstr ""
-
-#: advtrains_luaautomation/operation_panel.lua:11
-msgid "LuaATC Operation Panel"
-msgstr ""
-
-#: advtrains_luaautomation/pcnaming.lua:28
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
-msgstr ""
-
-#: advtrains_luaautomation/pcnaming.lua:39
-msgid ""
-"You are not allowed to name LuaATC passive components without the @1 "
-"privilege."
-msgstr ""
-
-#: advtrains_luaautomation/pcnaming.lua:62
-msgid "Set name of component (empty to clear)"
-msgstr ""
-
-#: advtrains_train_industrial/init.lua:10
-#: 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:17
-#: advtrains_train_industrial/init.lua:56 advtrains_train_steam/init.lua:14
-#: advtrains_train_steam/init.lua:85
-msgid "Driver Stand (left)"
-msgstr ""
-
-#: advtrains_train_industrial/init.lua:40
-msgid "Industrial Train Engine"
-msgstr ""
-
-#: advtrains_train_industrial/init.lua:79
-msgid "Big Industrial Train Engine"
-msgstr ""
-
-#: advtrains_train_industrial/init.lua:98
-msgid "Industrial tank wagon"
-msgstr ""
-
-#: advtrains_train_industrial/init.lua:116
-msgid "Industrial wood wagon"
-msgstr ""
-
-#: advtrains_train_japan/init.lua:4
-msgid "Japanese Train Inter-Wagon Connection"
-msgstr ""
-
-#: advtrains_train_japan/init.lua:37
-msgid "Driver stand"
-msgstr ""
-
-#: advtrains_train_japan/init.lua:101
-msgid "Japanese Train Engine"
-msgstr ""
-
-#: advtrains_train_japan/init.lua:176
-msgid "Japanese Train Wagon"
-msgstr ""
-
-#: advtrains_train_steam/init.lua:75
-msgid "Steam Engine"
-msgstr ""
-
-#: advtrains_train_steam/init.lua:159
-msgid "Detailed Steam Engine"
-msgstr ""
-
-#: advtrains_train_steam/init.lua:206
-msgid "Passenger Wagon"
-msgstr ""
-
-#: advtrains_train_steam/init.lua:226
-msgid "Box Wagon"
-msgstr ""
-
-#: advtrains_train_subway/init.lua:144
-msgid "Subway Passenger Wagon"
-msgstr ""
-
-#: advtrains_train_track/init.lua:31
-msgid "Y-turnout"
-msgstr ""
-
-#: advtrains_train_track/init.lua:49
-msgid "3-way turnout"
-msgstr ""
-
-#: advtrains_train_track/init.lua:69
-msgid "Perpendicular Diamond Crossing Track"
-msgstr ""
-
-#: advtrains_train_track/init.lua:91
-msgid "90+Angle Diamond Crossing Track"
-msgstr ""
-
-#: advtrains_train_track/init.lua:132
-msgid "Diagonal Diamond Crossing Track"
-msgstr ""
-
-#: advtrains_train_track/init.lua:179
-msgid "Bumper"
-msgstr ""
-
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr ""
-
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr ""
-
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr ""
-
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr ""
diff --git a/advtrains/po/de.po b/advtrains/po/de.po
deleted file mode 100644
index 8821fe3..0000000
--- a/advtrains/po/de.po
+++ /dev/null
@@ -1,724 +0,0 @@
-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"
-"PO-Revision-Date: 2023-10-09 11:18+0200\n"
-"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
-"Language-Team: German\n"
-"Language: de\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 3.3.2\n"
-
-#: advtrains/atc.lua:109
-msgid "Unconfigured ATC controller"
-msgstr "Nicht konfiguiertes Zugbeeinflussungsgleis"
-
-#: advtrains/atc.lua:150
-msgid ""
-"ATC controller, mode @1\n"
-"Command: @2"
-msgstr ""
-"Zugbeeinflussungsgleis in Betriebsart „@1“\n"
-"Befehl: @2"
-
-#: advtrains/atc.lua:180
-msgid "Command"
-msgstr "Befehl"
-
-#: advtrains/atc.lua:184
-msgid "Command (on)"
-msgstr "Befehl (wenn aktiviert)"
-
-#: advtrains/atc.lua:187
-msgid "Digiline channel"
-msgstr "Digiline-Kanal"
-
-#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
-#: advtrains_luaautomation/active_common.lua:48
-msgid "Save"
-msgstr "Speichern"
-
-#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving."
-msgstr ""
-"Zugbeeinflussung: Der Zug befindet sich in Bewegung und kann nicht umgekehrt "
-"werden."
-
-#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: doors are closed."
-msgstr ""
-"Zugbeeinflussung: Wegen geschlossener Türen werden Fahrgäste nicht zum "
-"Ausstieg gezwungen."
-
-#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: train moving."
-msgstr ""
-"Zugbeeinflussung: Der Zug befindet sich in Bewegung, Fahrgäste werden nicht "
-"zum Ausstieg gezwungen."
-
-#: advtrains/atc.lua:322
-msgid "ATC command syntax error: I statement not closed: @1"
-msgstr "Zugbeeinflussung: Unvollständiger I-Befehl: @1"
-
-#: advtrains/atc.lua:385
-msgid "ATC command parse error: Unknown command: @1"
-msgstr "Zugbeeinflussung: Unbekannter Befehl: @1"
-
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
-msgstr ""
-"Werkzeug zur Erstellung von Zugkopien\n"
-"\n"
-"Linksklick: Zug ins Clipboard kopieren\n"
-"Right-click: Kopierten Zug einfügen"
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr "Ihnen fehlt das „@1“-Privileg."
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough."
-msgstr "Das Gleis, auf dem der Waggon platziert werden woll, ist zu kurz."
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr ""
-"Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte eine Kopie des "
-"Zuges nicht eingefügt werden."
-
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr "Das Clipboard ist leer."
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr "Der hinterer Teil dez Zuges wäre nicht auf dem Gleis."
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity."
-msgstr ""
-"Sie zeigen nicht auf einem Objekt, das mit diesem Werkzeug kopiert werden "
-"kann."
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1."
-msgstr "Es gibt keinen mit „@1“ identifizierbaren Waggon."
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1."
-msgstr "Es gibt keinen mit „@1“ identifizierbaren Zug."
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr ""
-"Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte der Zug nicht "
-"kopiert werden."
-
-#: advtrains/copytool.lua:180
-msgid "Train copied."
-msgstr "Der Zug wurde Kopiert."
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr "Schraubenkupplung"
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr "Scharfenbergkupplung"
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
-msgstr "Sie dürfen ohne das „train_operator“-Privileg keine Züge ankuppeln."
-
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<No coupler>"
-msgstr "<Keine Kupplung vorhanden>"
-
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
-msgstr "Die Kupplungen der Züge passen nicht zueinander (@1 und @2)."
-
-#: advtrains/craft_items.lua:3
-msgid "Boiler"
-msgstr ""
-
-#: advtrains/craft_items.lua:9
-msgid "Driver's cab"
-msgstr "Führerstand"
-
-#: advtrains/craft_items.lua:15
-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:33
-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:81
-msgid "@1 Platform (low, 45 degree)"
-msgstr "Niedriger @1-Bahnsteig (45°)"
-
-#: advtrains/protection.lua:7
-msgid "Can place, remove and operate trains"
-msgstr ""
-
-#: advtrains/protection.lua:12
-msgid ""
-"Can place, remove and operate any train, regardless of owner, whitelist, or "
-"protection"
-msgstr ""
-
-#: advtrains/protection.lua:18
-msgid "Can place and dig tracks in unprotected areas"
-msgstr ""
-
-#: advtrains/protection.lua:24
-msgid "Can operate turnouts and signals in unprotected areas"
-msgstr ""
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
-msgstr ""
-"Sie dürfen ohne das „track_builder“-Privileg nicht in der Nähe von Gleisen "
-"bauen."
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
-msgstr "Sie dürfen ohne das „track_builder“-Privileg kein Gleis bauen."
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr "Sie dürfen an geschützten Stellen nicht in der Nähe von Gleisen bauen."
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr "Sie dürfen an geschützten Stellen kein Gleis bauen."
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr ""
-"Sie dürfen ohne das „railway_operator“-Privileg keine Bahnanlage operieren."
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr "Mechanisches Signal"
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr "Lichtsignal"
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (left)"
-msgstr "An der linken Seite montiertes Signal"
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (right)"
-msgstr "An der rechten Seite montiertes Signal"
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (top)"
-msgstr "An der Decke montiertes Signal"
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr "Andreaskreuz"
-
-#: advtrains/trackplacer.lua:313
-msgid ""
-"Track Worker Tool\n"
-"\n"
-"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate object"
-msgstr ""
-"Gleiswerkzeug\n"
-"\n"
-"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
-msgid "@1 Slope"
-msgstr "@1 Steigung"
-
-#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place slope: not pointing at node."
-msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block."
-
-#: advtrains/tracks.lua:658
-msgid "Can't place slope: space occupied."
-msgstr "Es kann nicht platziert werden: Diese Position ist besetzt."
-
-#: advtrains/tracks.lua:711
-msgid "Can't place slope: Not enough slope items left (@1 required)."
-msgstr ""
-"Es kann nicht platziert werden: Sie haben nicht genug Steigungsblöcke, es "
-"werden insgesamt @1 benötigt."
-
-#: advtrains/tracks.lua:714
-msgid "Can't place slope: There's no slope of length @1."
-msgstr ""
-"Es kann nicht platziert werden: die Steigung der Länge @1 ist nicht "
-"definiert."
-
-#: advtrains/tracks.lua:721
-msgid "Can't place slope: no supporting node at upper end."
-msgstr ""
-"Es kann nicht platziert werden: es gibt keinen unterstützenden Block am Ende "
-"der Steigung."
-
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
-msgstr ""
-
-#: advtrains/wagons.lua:179
-msgid "This wagon is owned by @1, you can't destroy it."
-msgstr "Dieser Waggon gehört @1, Sie dürfen ihn nicht abbauen."
-
-#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty."
-msgstr "Das Inventar dieses Waggons ist nicht leer."
-
-#: 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/wagons.lua:216
-msgid ""
-"Warning: If you destroy this wagon, you only get some steel back! If you are "
-"sure, hold Sneak and left-click the wagon."
-msgstr ""
-"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:652
-msgid "Onboard Computer"
-msgstr ""
-
-#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
-msgid "Wagon properties"
-msgstr "Waggon-Einstellungen"
-
-#: advtrains/wagons.lua:658
-msgid "Get off"
-msgstr "Aussteigen"
-
-#: advtrains/wagons.lua:661
-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:703
-msgid "This wagon is full."
-msgstr "Der Waggon ist voll."
-
-#: advtrains/wagons.lua:706
-msgid "Doors are closed! (Try holding sneak key!)"
-msgstr "Die Türen sind geschlossen."
-
-#: advtrains/wagons.lua:712
-msgid "You can't get on this wagon."
-msgstr "Sie können nicht in diesen Waggon einsteigen."
-
-#: advtrains/wagons.lua:838
-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:965
-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:967
-msgid "Line"
-msgstr "Linie"
-
-#: advtrains/wagons.lua:968
-msgid "Routingcode"
-msgstr ""
-
-#: advtrains/wagons.lua:1241
-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:1250
-msgid "You are not allowed to access the driver stand."
-msgstr "Sie haben keinen Zugang zum Führerstand."
-
-#: advtrains_interlocking/tsr_rail.lua:13
-msgid "Point speed restriction: @1"
-msgstr "Geschwindigkeitskontrolle: @1"
-
-#: advtrains_interlocking/tsr_rail.lua:14
-msgid "Set point speed restriction:"
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:30
-msgid "You are not allowed to configure this track without the @1 privilege."
-msgstr "Sie dürfen ohne das „@1“-Privileg dieses Gleis nicht konfigurieren."
-
-#: advtrains_interlocking/tsr_rail.lua:34
-#: advtrains_line_automation/stoprail.lua:31
-#: advtrains_line_automation/stoprail.lua:76
-msgid "You are not allowed to configure this track."
-msgstr "Sie dürfen dieses Gleis nicht konfigurieren."
-
-#: advtrains_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
-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:60
-msgid "Door Side"
-msgstr "Türseite"
-
-#: advtrains_line_automation/stoprail.lua:62
-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:97
-msgid "Station code \"@1\" already exists and is owned by @2."
-msgstr ""
-"Die Haltestelle mit dem Kennzeichen „@1“ ist bereits vorhanden und wird von "
-"@2 verwaltet."
-
-#: advtrains_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
-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_luaautomation/active_common.lua:46
-msgid "LuaATC Environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:49
-msgid "Clear Local Environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:50
-msgid "Code"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:64
-msgid ""
-"You are not allowed to configure this LuaATC component without the @1 "
-"privilege."
-msgstr ""
-"Sie dürfen ohne das „@1“-Privileg diesen LuaATC-Bauteil nicht konfigurieren."
-
-#: advtrains_luaautomation/active_common.lua:94
-msgid "LuaATC component assigned to environment '@1'"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:96
-msgid "LuaATC component assigned to an invalid environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:171
-msgid "LuaATC component with error: @1"
-msgstr "LuaATC-Bauteil mit Fehlermeldung: @1"
-
-#: advtrains_luaautomation/init.lua:13
-msgid ""
-"Can place and configure LuaATC components, including execute potentially "
-"harmful Lua code"
-msgstr ""
-"Kann LuaATC-Bauteile platzieren und konfigurieren (auch evtl. schädliche "
-"Programme ausführen)"
-
-#: advtrains_luaautomation/mesecon_controller.lua:211
-msgid "LuaATC Mesecon Controller"
-msgstr ""
-
-#: advtrains_luaautomation/operation_panel.lua:11
-msgid "LuaATC Operation Panel"
-msgstr ""
-
-#: advtrains_luaautomation/pcnaming.lua:28
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
-msgstr ""
-"PC-Benennungswerkzeug\n"
-"\n"
-"Rechtsklick zur Benennung der passiven Komponente."
-
-#: advtrains_luaautomation/pcnaming.lua:39
-msgid ""
-"You are not allowed to name LuaATC passive components without the @1 "
-"privilege."
-msgstr "Sie dürfen ohne das „@1“ keinen passiven LuaATC-Bauteil benennen."
-
-#: advtrains_luaautomation/pcnaming.lua:62
-msgid "Set name of component (empty to clear)"
-msgstr ""
-
-#: advtrains_train_industrial/init.lua:10
-#: advtrains_train_industrial/init.lua:49 advtrains_train_steam/init.lua:20
-#: advtrains_train_steam/init.lua:91
-msgid "Driver Stand (right)"
-msgstr "Führerstand Rechts"
-
-#: advtrains_train_industrial/init.lua:17
-#: advtrains_train_industrial/init.lua:56 advtrains_train_steam/init.lua:14
-#: advtrains_train_steam/init.lua:85
-msgid "Driver Stand (left)"
-msgstr "Führerstand Links"
-
-#: advtrains_train_industrial/init.lua:40
-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
-msgid "Industrial tank wagon"
-msgstr "Tankwaggon"
-
-#: advtrains_train_industrial/init.lua:116
-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
-msgid "Driver stand"
-msgstr "Führerstand"
-
-#: advtrains_train_japan/init.lua:101
-msgid "Japanese Train Engine"
-msgstr "Japanische Personenzug-Lokomotive"
-
-#: advtrains_train_japan/init.lua:176
-msgid "Japanese Train Wagon"
-msgstr "Japanischer Personenzug-Passagierwaggon"
-
-#: advtrains_train_steam/init.lua:75
-msgid "Steam Engine"
-msgstr "Dampflokomotive"
-
-#: advtrains_train_steam/init.lua:159
-msgid "Detailed Steam Engine"
-msgstr "Detaillierte Dampflokomotive"
-
-#: advtrains_train_steam/init.lua:206
-msgid "Passenger Wagon"
-msgstr "Passagierwaggon"
-
-#: advtrains_train_steam/init.lua:226
-msgid "Box Wagon"
-msgstr "Güterwaggon"
-
-#: advtrains_train_subway/init.lua:144
-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
-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
-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:179
-msgid "Bumper"
-msgstr "Prellbock"
-
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr "Zugbeeinflussungsgleis"
-
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr "Abladungsgleis"
-
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr "Beladungsgleis"
-
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr "Detektorgleis"
-
-#~ msgid ""
-#~ "ATC controller, mode @1\n"
-#~ "Channel: @2"
-#~ msgstr ""
-#~ "Zugbeeinflussungsgleis in Betriebsart „@1“\n"
-#~ "Kanal: @2"
-
-#~ msgid "Access to @1"
-#~ msgstr "Zugang zu @1"
-
-#~ msgid "Can't get on: wagon full or doors closed!"
-#~ msgstr ""
-#~ "Sie können nicht einsteigen: der Waggon ist voll oder die Türen sind "
-#~ "geschlossen."
-
-#~ msgid "Can't place: protected position!"
-#~ msgstr "Es kann nicht platziert werden: diese Position ist geschützt."
-
-#~ msgid "Default Seat"
-#~ msgstr "Standardsitzplatz"
-
-#~ msgid "Default Seat (driver stand)"
-#~ msgstr "Standardsitzplatz (Führerstand)"
-
-#~ msgid "Deprecated Track"
-#~ msgstr "ausrangiertes Gleis, nicht verwenden."
-
-#~ msgid "Lock couples"
-#~ msgstr "Kupplungen sperren"
-
-#~ msgid "Speed:"
-#~ msgstr "Geschw.:"
-
-#~ msgid "Target:"
-#~ msgstr "Zielges.:"
-
-#~ msgid "This position is protected!"
-#~ msgstr "Diese Position ist geschützt!"
-
-#~ msgid "Use Sneak+rightclick to bypass closed doors!"
-#~ msgstr ""
-#~ "Nutzen Sie Schleichen+Rechtsklick, um trotz geschlossener Türen "
-#~ "einzusteigen."
-
-#, fuzzy
-#~ msgid "You are not allowed to modify this protected track."
-#~ msgstr "Sie dürfen an geschützten Stellen kein Gleis bauen."
-
-#~ msgid ""
-#~ "You need to own at least one neighboring wagon to destroy this couple."
-#~ msgstr ""
-#~ "Sie müssen Besitzer eines angrenzenden Waggons sein, um hier abzukuppeln."
diff --git a/advtrains/po/fr.po b/advtrains/po/fr.po
deleted file mode 100644
index c744d2c..0000000
--- a/advtrains/po/fr.po
+++ /dev/null
@@ -1,728 +0,0 @@
-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"
-"PO-Revision-Date: 2024-11-02 21:31+0100\n"
-"Last-Translator: Tanavit <tanavit@posto.ovh>\n"
-"Language-Team: French\n"
-"Language: fr\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"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:150
-msgid ""
-"ATC controller, mode @1\n"
-"Command: @2"
-msgstr ""
-"Controlleur ATC, mode @1\n"
-"Commande : @2"
-
-#: advtrains/atc.lua:180
-msgid "Command"
-msgstr "Commande"
-
-#: advtrains/atc.lua:184
-msgid "Command (on)"
-msgstr "Commande (marche)"
-
-#: advtrains/atc.lua:187
-msgid "Digiline channel"
-msgstr "Canal Digiline"
-
-#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
-#: advtrains_luaautomation/active_common.lua:48
-msgid "Save"
-msgstr "Sauvegarder"
-
-#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving."
-msgstr ""
-"Attention : Commande ATC de renversement impossible car le train se déplace."
-
-#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: doors are closed."
-msgstr "Avertissement commande ATC Éjecter : portes closes."
-
-#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: train moving."
-msgstr "Avertissement commande ATC Éjecter : train en mouvement."
-
-#: 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/atc.lua:385
-msgid "ATC command parse error: Unknown command: @1"
-msgstr "Erreur d'analyse de commande ATC : Commande inconnue : @1"
-
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
-msgstr ""
-"Outil de copie/collage de train\n"
-"\n"
-"Clic-Gauche : copie\n"
-"\n"
-"Clic-Droit : collage"
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr "Vous ne possédez pas le privilège \"@1\"."
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough."
-msgstr "La voie sur laquelle vous tentez de placer le wagon est trop courte."
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr "Le presse-papier ne peut accéder aux métadonnées. Échec du collage."
-
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr "Le presse-papier est vide."
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr "La fin du train serait hors voie : annulation."
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity."
-msgstr "Pas de telle entité lua."
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1."
-msgstr "Pas de tel wagon : @1."
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1."
-msgstr "Pas de tel train : @1."
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr "Le presse-papier ne peut accéder aux métadonnées. Échec de la copie."
-
-#: advtrains/copytool.lua:180
-msgid "Train copied."
-msgstr "Train copié."
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr "Attelage à tampon et vis"
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr "Attelage Scharfenberg"
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
-msgstr ""
-"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
-msgid "Boiler"
-msgstr "Chaudière à vapeur"
-
-#: advtrains/craft_items.lua:9
-msgid "Driver's cab"
-msgstr "Cabine de pilotage"
-
-#: advtrains/craft_items.lua:15
-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:33
-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:81
-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:12
-msgid ""
-"Can place, remove and operate any train, regardless of owner, whitelist, or "
-"protection"
-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:24
-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:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
-msgstr ""
-"Vous ne pouvez pas construire à proximité d'une voie sans le privilège "
-"\"track_builder\" (?)"
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
-msgstr ""
-"Vous ne pouvez pas construire une voie sans le privilège \"track_builder\"."
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr ""
-"Vous ne pouvez pas construire à proximité d'une voie à cet emplacement "
-"protégé."
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr "Vous ne pouvez pas construire une voie à cet emplacement protégé."
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr ""
-"Vous ne pouvez pas actionner les aiguillages ou les signaux (privilège "
-"\"railway_operator\" manquant)"
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr "Sémaphore"
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr "Signal"
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (left)"
-msgstr "Signal mural (gauche)"
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (right)"
-msgstr "Signal mural (droit)"
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (top)"
-msgstr "Signal mural (plafond)"
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr "Croix de Saint André"
-
-#: advtrains/trackplacer.lua:313
-msgid ""
-"Track Worker Tool\n"
-"\n"
-"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate object"
-msgstr ""
-"Outil \"Trackworker\"\n"
-"\n"
-"Clic-Gauche : change le type de rail (droit/courbé/aiguillage)\n"
-"\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
-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
-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
-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
-msgid "Can't place slope: no supporting node at upper end."
-msgstr "Placement impossible : pas de nœud d'appui à l'extrémité supérieure."
-
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
-msgstr ""
-"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."
-msgstr ""
-"Les wagons doivent être désaccouplés des autres pour pouvoir être détruits."
-
-#: advtrains/wagons.lua:216
-msgid ""
-"Warning: If you destroy this wagon, you only get some steel back! If you are "
-"sure, hold Sneak and left-click the wagon."
-msgstr ""
-"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:652
-msgid "Onboard Computer"
-msgstr "Ordinateur embarqué"
-
-#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
-msgid "Wagon properties"
-msgstr "Propriétés du wagon"
-
-#: advtrains/wagons.lua:658
-msgid "Get off"
-msgstr "Débarquer"
-
-#: advtrains/wagons.lua:661
-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:703
-msgid "This wagon is full."
-msgstr "Ce wagon est plein."
-
-#: advtrains/wagons.lua:706
-msgid "Doors are closed! (Try holding sneak key!)"
-msgstr "Portes closes : (Essayez la \"sneak key\"!\")"
-
-#: advtrains/wagons.lua:712
-msgid "You can't get on this wagon."
-msgstr "Montée impossible dans ce wagon."
-
-#: advtrains/wagons.lua:838
-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:965
-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:967
-msgid "Line"
-msgstr "Ligne"
-
-#: advtrains/wagons.lua:968
-msgid "Routingcode"
-msgstr "Code de routage"
-
-#: advtrains/wagons.lua:1241
-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:1250
-msgid "You are not allowed to access the driver stand."
-msgstr "Accès interdit au poste de pilotage."
-
-#: advtrains_interlocking/tsr_rail.lua:13
-msgid "Point speed restriction: @1"
-msgstr "Point de limitation de vitesse : @1"
-
-#: advtrains_interlocking/tsr_rail.lua:14
-msgid "Set point speed restriction:"
-msgstr "Placez un point de limitation de vitesse :"
-
-#: advtrains_interlocking/tsr_rail.lua:30
-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
-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
-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:60
-msgid "Door Side"
-msgstr "Coté d'ouvertures des portes"
-
-#: advtrains_line_automation/stoprail.lua:62
-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:97
-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
-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_luaautomation/active_common.lua:49
-msgid "Clear Local Environment"
-msgstr "Effacer l'environnement LuaATC"
-
-#: advtrains_luaautomation/active_common.lua:50
-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:96
-msgid "LuaATC component assigned to an invalid environment"
-msgstr "Composant LuaATC assigné à un environnement invalide"
-
-#: advtrains_luaautomation/active_common.lua:171
-msgid "LuaATC component with error: @1"
-msgstr "Erreur @1 du composant LuaATC"
-
-#: advtrains_luaautomation/init.lua:13
-msgid ""
-"Can place and configure LuaATC components, including execute potentially "
-"harmful Lua code"
-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
-msgid "LuaATC Mesecon Controller"
-msgstr "Commande Mesecon de LuaATC"
-
-#: advtrains_luaautomation/operation_panel.lua:11
-msgid "LuaATC Operation Panel"
-msgstr "Panneau de commande de LuaATC"
-
-#: advtrains_luaautomation/pcnaming.lua:28
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
-msgstr ""
-"Outil de nommage de composant passif\n"
-"\n"
-"Clic-Droit pour nommer un composant passif."
-
-#: advtrains_luaautomation/pcnaming.lua:39
-msgid ""
-"You are not allowed to name LuaATC passive components without the @1 "
-"privilege."
-msgstr "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:17
-#: advtrains_train_industrial/init.lua:56 advtrains_train_steam/init.lua:14
-#: advtrains_train_steam/init.lua:85
-msgid "Driver Stand (left)"
-msgstr "Poste de pilotage (gauche)"
-
-#: advtrains_train_industrial/init.lua:40
-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
-msgid "Industrial tank wagon"
-msgstr "Wagon-citerne industriel"
-
-#: advtrains_train_industrial/init.lua:116
-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
-msgid "Driver stand"
-msgstr "Poste de pilotage"
-
-#: advtrains_train_japan/init.lua:101
-msgid "Japanese Train Engine"
-msgstr "Motrice Japonaise"
-
-#: advtrains_train_japan/init.lua:176
-msgid "Japanese Train Wagon"
-msgstr "Voiture Japonaise"
-
-#: advtrains_train_steam/init.lua:75
-msgid "Steam Engine"
-msgstr "Locomotive à vapeur"
-
-#: advtrains_train_steam/init.lua:159
-msgid "Detailed Steam Engine"
-msgstr "Locomotive à vapeur complexe"
-
-#: advtrains_train_steam/init.lua:206
-msgid "Passenger Wagon"
-msgstr "Voiture passager"
-
-#: advtrains_train_steam/init.lua:226
-msgid "Box Wagon"
-msgstr "Wagon de frêt"
-
-#: advtrains_train_subway/init.lua:144
-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
-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
-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:179
-msgid "Bumper"
-msgstr "Heurtoir"
-
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr "Controlleur ATC"
-
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr "Voie de Déchargement"
-
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr "Voie de Chargement"
-
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr "Voie détectrice"
-
-#~ msgid ""
-#~ "ATC controller, mode @1\n"
-#~ "Channel: @2"
-#~ msgstr ""
-#~ "Controlleur ATC, mode @1\n"
-#~ "Canal : @2"
-
-#~ msgid "Access to @1"
-#~ msgstr "Accès à @1"
-
-#~ msgid "Can't get on: wagon full or doors closed!"
-#~ msgstr ""
-#~ "Embarquement impossible : le wagon est plein ou ses portes sont closes !"
-
-#~ msgid "Can't place: protected position!"
-#~ msgstr "Placement impossible : emplacement protégé"
-
-#~ msgid "Default Seat"
-#~ msgstr "Siège par défaut"
-
-#~ msgid "Default Seat (driver stand)"
-#~ msgstr "Siège par défaut (poste de pilotage)"
-
-#~ msgid "Deprecated Track"
-#~ msgstr "Voie déconseillée"
-
-#~ msgid "Lock couples"
-#~ msgstr "Verrouiller l'accouplement"
-
-#~ msgid "Speed:"
-#~ msgstr "Vitesse : "
-
-#~ msgid "Target:"
-#~ msgstr "Destination : "
-
-#, fuzzy
-#~ msgid "This node can't be rotated using the trackworker,"
-#~ msgstr "Ce nœud ne peut être tourné avec l'outil \"Trackworker\" !"
-
-#~ msgid "This position is protected!"
-#~ msgstr "Cet emplacement est protégé !"
-
-#~ msgid "Use Sneak+rightclick to bypass closed doors!"
-#~ msgstr ""
-#~ "Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour franchir les "
-#~ "portes closes !"
-
-#, fuzzy
-#~ msgid "You are not allowed to modify this protected track."
-#~ msgstr "Vous ne pouvez pas construire une voie à cet emplacement protégé"
-
-#~ msgid ""
-#~ "You need to own at least one neighboring wagon to destroy this couple."
-#~ msgstr ""
-#~ "Vous devez être propriétaire d'au moins un wagon voisin pour supprimer "
-#~ "cet attelage."
diff --git a/advtrains/po/update-translations.sh b/advtrains/po/update-translations.sh
deleted file mode 100755
index 3a56c7c..0000000
--- a/advtrains/po/update-translations.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-# NOTE: Please make sure you also have basic_trains installed, as it uses attrans for historical reasons
-
-PODIR=`dirname "$0"`
-ATDIR="$PODIR/../.."
-BTDIR="$ATDIR/../basic_trains"
-POTFILE="$PODIR/advtrains.pot"
-
-xgettext \
- -D "$ATDIR" \
- -D "$BTDIR" \
- -d advtrains \
- -o "$POTFILE" \
- -p . \
- -L lua \
- --from-code=UTF-8 \
- --sort-by-file \
- --keyword='attrans' \
- --keyword='S' \
- --package-name='advtrains' \
- --msgid-bugs-address='advtrains-discuss@lists.sr.ht' \
- `find $ATDIR $BTDIR -name '*.lua' -printf '%P\n'` \
- &&
-for i in "$PODIR"/*.po; do
- msgmerge -U \
- --sort-by-file \
- $i "$POTFILE"
-done
diff --git a/advtrains/po/zh_CN.po b/advtrains/po/zh_CN.po
deleted file mode 100644
index 5bcc316..0000000
--- a/advtrains/po/zh_CN.po
+++ /dev/null
@@ -1,696 +0,0 @@
-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"
-"PO-Revision-Date: 2023-10-09 11:24+0200\n"
-"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
-"Language-Team: Chinese (Simplified)\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 3.3.2\n"
-
-#: advtrains/atc.lua:109
-msgid "Unconfigured ATC controller"
-msgstr "ATC 控制器 (未配置)"
-
-#: advtrains/atc.lua:150
-msgid ""
-"ATC controller, mode @1\n"
-"Command: @2"
-msgstr ""
-"ATC 控制器\n"
-"模式:@1\n"
-"命令:@2"
-
-#: advtrains/atc.lua:180
-msgid "Command"
-msgstr "命令"
-
-#: advtrains/atc.lua:184
-msgid "Command (on)"
-msgstr "命令 (激活时)"
-
-#: advtrains/atc.lua:187
-msgid "Digiline channel"
-msgstr "Digiline 频道"
-
-#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
-#: advtrains_luaautomation/active_common.lua:48
-msgid "Save"
-msgstr "保存"
-
-#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving."
-msgstr "ATC 警告:火车正在移动,无法改变行车方向。"
-
-#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: doors are closed."
-msgstr "ATC 警告:车门已关闭,无法踢出乘客。"
-
-#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: train moving."
-msgstr "ATC 警告:火车正在移动,无法踢出乘客。"
-
-#: advtrains/atc.lua:322
-msgid "ATC command syntax error: I statement not closed: @1"
-msgstr "ATC 语法错误:“I”命令不完整:@1"
-
-#: advtrains/atc.lua:385
-msgid "ATC command parse error: Unknown command: @1"
-msgstr "ATC 语法错误:未知命令:@1"
-
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
-msgstr ""
-"火车复制工具\n"
-"\n"
-"左键单击:复制\n"
-"右键单击:粘帖"
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr "您没有“@1”权限。"
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough."
-msgstr "轨道太短。"
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr "无法粘贴:剪贴板无法访问元数据。"
-
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr "剪贴板是空的。"
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr "火车后部不在轨道上。"
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity."
-msgstr "您没有指向一个可以用火车复制工具复制的物体。"
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1."
-msgstr "ID 为“@1”的车厢不存在。"
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1."
-msgstr "ID 为“@1”的列车不存在。"
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr "无法复制:剪贴板无法访问元数据。"
-
-#: advtrains/copytool.lua:180
-msgid "Train copied."
-msgstr "已复制列车。"
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr "链式车钩"
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr "Scharfenberg 式车钩"
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
-msgstr "您没有“train_operator”权限,不能连接这两节车厢。"
-
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<No coupler>"
-msgstr "<没有车钩>"
-
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
-msgstr "您无法连接这两节车厢:这两节车厢使用不同的车钩 (@1和@2)。"
-
-#: advtrains/craft_items.lua:3
-msgid "Boiler"
-msgstr "锅炉"
-
-#: advtrains/craft_items.lua:9
-msgid "Driver's cab"
-msgstr "驾驶室"
-
-#: advtrains/craft_items.lua:15
-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:33
-msgid "@1 Platform (high)"
-msgstr "较高的@1站台"
-
-#: advtrains/misc_nodes.lua:59
-msgid "@1 Platform (45 degree)"
-msgstr "较高的@1站台 (45°)"
-
-#: advtrains/misc_nodes.lua:81
-msgid "@1 Platform (low, 45 degree)"
-msgstr "较低的@1站台 (45°)"
-
-#: advtrains/protection.lua:7
-msgid "Can place, remove and operate trains"
-msgstr ""
-
-#: advtrains/protection.lua:12
-msgid ""
-"Can place, remove and operate any train, regardless of owner, whitelist, or "
-"protection"
-msgstr ""
-
-#: advtrains/protection.lua:18
-msgid "Can place and dig tracks in unprotected areas"
-msgstr ""
-
-#: advtrains/protection.lua:24
-msgid "Can operate turnouts and signals in unprotected areas"
-msgstr ""
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
-msgstr "您没有“train_operator”权限,不能在铁路附近建任何东西。"
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
-msgstr "您没有“train_operator”权限,不能在这里建造铁路。"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr "这里已被保护,您不能在这里的铁路附近建任何东西。"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr "这里已被保护,您不能在这里建造铁路。"
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr "您没有“railway_operator”权限,不能控制铁路设施。"
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr "臂板信号机"
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr "信号灯"
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (left)"
-msgstr "壁挂式信号灯 (左侧)"
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (right)"
-msgstr "壁挂式信号灯 (右侧)"
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (top)"
-msgstr "悬挂式信号灯"
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr "铁路道口信号灯"
-
-#: advtrains/trackplacer.lua:313
-msgid ""
-"Track Worker Tool\n"
-"\n"
-"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate object"
-msgstr ""
-"铁路调整工具\n"
-"\n"
-"左键单击:切换轨道类型\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
-msgid "@1 Slope"
-msgstr "@1斜坡"
-
-#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place slope: not pointing at node."
-msgstr "无法放置斜坡:您没有选择任何方块。"
-
-#: advtrains/tracks.lua:658
-msgid "Can't place slope: space occupied."
-msgstr "无法放置斜坡:此区域已被占用。"
-
-#: advtrains/tracks.lua:711
-msgid "Can't place slope: Not enough slope items left (@1 required)."
-msgstr "无法放置斜坡:您没有足够的铁路斜坡放置工具 (您总共需要@1个)"
-
-#: advtrains/tracks.lua:714
-msgid "Can't place slope: There's no slope of length @1."
-msgstr "无法放置斜坡:advtrains 不支持长度为@1米的斜坡。"
-
-#: advtrains/tracks.lua:721
-msgid "Can't place slope: no supporting node at upper end."
-msgstr "无法放置斜坡:较高端没有支撑方块。"
-
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
-msgstr ""
-
-#: advtrains/wagons.lua:179
-msgid "This wagon is owned by @1, you can't destroy it."
-msgstr "这是 @1 的车厢,您不能摧毁它。"
-
-#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty."
-msgstr ""
-
-#: advtrains/wagons.lua:210
-msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
-msgstr ""
-
-#: advtrains/wagons.lua:216
-msgid ""
-"Warning: If you destroy this wagon, you only get some steel back! If you are "
-"sure, hold Sneak and left-click the wagon."
-msgstr ""
-"警告:如果您摧毁此车厢,您只能拿到一些钢方块。如果您确定要摧毁这节车厢,请按"
-"潜行键并左键单击此车厢。"
-
-#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
-msgid "Show Inventory"
-msgstr "显示物品栏"
-
-#: advtrains/wagons.lua:652
-msgid "Onboard Computer"
-msgstr ""
-
-#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
-msgid "Wagon properties"
-msgstr "车厢属性"
-
-#: advtrains/wagons.lua:658
-msgid "Get off"
-msgstr "下车"
-
-#: advtrains/wagons.lua:661
-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:706
-msgid "Doors are closed! (Try holding sneak key!)"
-msgstr ""
-
-#: advtrains/wagons.lua:712
-msgid "You can't get on this wagon."
-msgstr ""
-
-#: advtrains/wagons.lua:838
-msgid "Select seat:"
-msgstr "请选择座位:"
-
-#: advtrains/wagons.lua:880
-msgid "Save wagon properties"
-msgstr "保存车厢属性"
-
-#: advtrains/wagons.lua:965
-msgid "Text displayed outside on train"
-msgstr "车厢外部显示"
-
-#: advtrains/wagons.lua:966
-msgid "Text displayed inside train"
-msgstr "车厢内部显示"
-
-#: advtrains/wagons.lua:967
-msgid "Line"
-msgstr "火车线路"
-
-#: advtrains/wagons.lua:968
-msgid "Routingcode"
-msgstr "路由码"
-
-#: advtrains/wagons.lua:1241
-msgid ""
-"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
-"off."
-msgstr "车门已关闭,请使用潜行+右键单击下车。"
-
-#: advtrains/wagons.lua:1250
-msgid "You are not allowed to access the driver stand."
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:13
-msgid "Point speed restriction: @1"
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:14
-msgid "Set point speed restriction:"
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:30
-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
-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
-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:60
-msgid "Door Side"
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:62
-msgid "Reverse train"
-msgstr "改变行车方向"
-
-#: advtrains_line_automation/stoprail.lua:63
-msgid "Kick out passengers"
-msgstr "踢出乘客"
-
-#: advtrains_line_automation/stoprail.lua:97
-msgid "Station code \"@1\" already exists and is owned by @2."
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:111
-msgid "This station is owned by @1. You are not allowed to edit its name."
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:221
-msgid "Station/Stop Track"
-msgstr "车站轨道"
-
-#: advtrains_luaautomation/active_common.lua:17
-msgid "Unconfigured LuaATC component"
-msgstr "LuaATC 部件 (未配置)"
-
-#: advtrains_luaautomation/active_common.lua:46
-msgid "LuaATC Environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:49
-msgid "Clear Local Environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:50
-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'"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:96
-msgid "LuaATC component assigned to an invalid environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:171
-msgid "LuaATC component with error: @1"
-msgstr ""
-
-#: advtrains_luaautomation/init.lua:13
-msgid ""
-"Can place and configure LuaATC components, including execute potentially "
-"harmful Lua code"
-msgstr ""
-
-#: advtrains_luaautomation/mesecon_controller.lua:211
-msgid "LuaATC Mesecon Controller"
-msgstr ""
-
-#: advtrains_luaautomation/operation_panel.lua:11
-msgid "LuaATC Operation Panel"
-msgstr ""
-
-#: advtrains_luaautomation/pcnaming.lua:28
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
-msgstr ""
-"被动元件命名工具\n"
-"\n"
-"右键单击命名所选元件。"
-
-#: advtrains_luaautomation/pcnaming.lua:39
-msgid ""
-"You are not allowed to name LuaATC passive components without the @1 "
-"privilege."
-msgstr "您没有“@1”权限,不能命名被动元件。"
-
-#: advtrains_luaautomation/pcnaming.lua:62
-msgid "Set name of component (empty to clear)"
-msgstr ""
-
-#: advtrains_train_industrial/init.lua:10
-#: advtrains_train_industrial/init.lua:49 advtrains_train_steam/init.lua:20
-#: advtrains_train_steam/init.lua:91
-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
-msgid "Driver Stand (left)"
-msgstr "左侧司机座位"
-
-#: advtrains_train_industrial/init.lua:40
-msgid "Industrial Train Engine"
-msgstr "工业用火车头"
-
-#: advtrains_train_industrial/init.lua:79
-msgid "Big Industrial Train Engine"
-msgstr "大型工业用火车头"
-
-#: advtrains_train_industrial/init.lua:98
-msgid "Industrial tank wagon"
-msgstr "液体运输车厢"
-
-#: advtrains_train_industrial/init.lua:116
-msgid "Industrial wood wagon"
-msgstr "木材运输车厢"
-
-#: advtrains_train_japan/init.lua:4
-msgid "Japanese Train Inter-Wagon Connection"
-msgstr "日本火车车钩"
-
-#: advtrains_train_japan/init.lua:37
-msgid "Driver stand"
-msgstr "司机座位"
-
-#: advtrains_train_japan/init.lua:101
-msgid "Japanese Train Engine"
-msgstr "高速列车车头"
-
-#: advtrains_train_japan/init.lua:176
-msgid "Japanese Train Wagon"
-msgstr "高速列车车厢"
-
-#: advtrains_train_steam/init.lua:75
-msgid "Steam Engine"
-msgstr "蒸汽机车"
-
-#: advtrains_train_steam/init.lua:159
-msgid "Detailed Steam Engine"
-msgstr "精细的蒸汽机车"
-
-#: advtrains_train_steam/init.lua:206
-msgid "Passenger Wagon"
-msgstr "客车"
-
-#: advtrains_train_steam/init.lua:226
-msgid "Box Wagon"
-msgstr "货运车厢"
-
-#: advtrains_train_subway/init.lua:144
-msgid "Subway Passenger Wagon"
-msgstr "地铁车厢"
-
-#: advtrains_train_track/init.lua:31
-msgid "Y-turnout"
-msgstr "对称道岔"
-
-#: advtrains_train_track/init.lua:49
-msgid "3-way turnout"
-msgstr "三开道岔"
-
-#: advtrains_train_track/init.lua:69
-msgid "Perpendicular Diamond Crossing Track"
-msgstr "垂直交叉轨道"
-
-#: advtrains_train_track/init.lua:91
-msgid "90+Angle Diamond Crossing Track"
-msgstr "交叉轨道 (其中一条轨道与坐标轴平行)"
-
-#: advtrains_train_track/init.lua:132
-msgid "Diagonal Diamond Crossing Track"
-msgstr "交叉轨道"
-
-#: advtrains_train_track/init.lua:179
-msgid "Bumper"
-msgstr "保险杠"
-
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr "ATC 控制器"
-
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr "卸货轨道"
-
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr "装货轨道"
-
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr "探测轨道"
-
-#~ msgid ""
-#~ "ATC controller, mode @1\n"
-#~ "Channel: @2"
-#~ msgstr ""
-#~ "ATC 控制器\n"
-#~ "模式:@1\n"
-#~ "频道:@2"
-
-#~ msgid "Access to @1"
-#~ msgstr "可前往@1"
-
-#~ msgid "Can't get on: wagon full or doors closed!"
-#~ msgstr "无法上车:车门已关闭或车厢已满。"
-
-#~ msgid "Can't place: protected position!"
-#~ msgstr "无法放置:此区域已被保护。"
-
-#~ msgid "Default Seat"
-#~ msgstr "默认座位"
-
-#~ msgid "Default Seat (driver stand)"
-#~ msgstr "默认座位 (司机座位)"
-
-#~ msgid "Deprecated Track"
-#~ msgstr "请不要使用"
-
-#~ msgid "Lock couples"
-#~ msgstr "锁定连接处"
-
-#~ msgid "Speed:"
-#~ msgstr "速度"
-
-#~ msgid "Target:"
-#~ msgstr "目标速度"
-
-#, fuzzy
-#~ msgid "This node can't be rotated using the trackworker,"
-#~ msgstr "您不能使用铁路调整工具旋转这个方块。"
-
-#~ msgid "This position is protected!"
-#~ msgstr "这里已被保护。"
-
-#~ msgid "Use Sneak+rightclick to bypass closed doors!"
-#~ msgstr "请使用潜行+右键上车。"
-
-#, fuzzy
-#~ msgid "You are not allowed to modify this protected track."
-#~ msgstr "这里已被保护,您不能在这里建造铁路。"
-
-#~ msgid ""
-#~ "You need to own at least one neighboring wagon to destroy this couple."
-#~ msgstr "您必须至少拥有其中一节车厢才能分开这两节车厢。"
diff --git a/advtrains/po/zh_TW.po b/advtrains/po/zh_TW.po
deleted file mode 100644
index ece82c3..0000000
--- a/advtrains/po/zh_TW.po
+++ /dev/null
@@ -1,696 +0,0 @@
-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"
-"PO-Revision-Date: 2023-10-09 11:31+0200\n"
-"Last-Translator: Y. Wang <yw05@forksworld.de>\n"
-"Language-Team: Chinese (Traditional)\n"
-"Language: zh_TW\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 3.3.2\n"
-
-#: advtrains/atc.lua:109
-msgid "Unconfigured ATC controller"
-msgstr "ATC 控制器 (未配置)"
-
-#: advtrains/atc.lua:150
-msgid ""
-"ATC controller, mode @1\n"
-"Command: @2"
-msgstr ""
-"ATC 控制器\n"
-"模式:@1\n"
-"命令:@2"
-
-#: advtrains/atc.lua:180
-msgid "Command"
-msgstr "命令"
-
-#: advtrains/atc.lua:184
-msgid "Command (on)"
-msgstr "命令 (啟用時)"
-
-#: advtrains/atc.lua:187
-msgid "Digiline channel"
-msgstr "Digiline 頻道"
-
-#: advtrains/atc.lua:189 advtrains_line_automation/stoprail.lua:65
-#: advtrains_luaautomation/active_common.lua:48
-msgid "Save"
-msgstr "儲存"
-
-#: advtrains/atc.lua:236
-msgid "ATC Reverse command warning: didn't reverse train, train moving."
-msgstr "ATC 警告:火車正在移動,無法改變行車方向。"
-
-#: advtrains/atc.lua:248
-msgid "ATC Kick command warning: doors are closed."
-msgstr "ATC 警告:車門已關閉,無法踢出乘客。"
-
-#: advtrains/atc.lua:252
-msgid "ATC Kick command warning: train moving."
-msgstr "ATC 警告:火車正在移動,無法踢出乘客。"
-
-#: advtrains/atc.lua:322
-msgid "ATC command syntax error: I statement not closed: @1"
-msgstr "ATC 語法錯誤:「I」命令不完整:@1"
-
-#: advtrains/atc.lua:385
-msgid "ATC command parse error: Unknown command: @1"
-msgstr "ATC 語法錯誤:未知命令:@1"
-
-#: advtrains/copytool.lua:8
-msgid ""
-"Train copy/paste tool\n"
-"\n"
-"Left-click: copy train\n"
-"Right-click: paste train"
-msgstr ""
-"火車複製工具\n"
-"\n"
-"左鍵單擊:複製\n"
-"右鍵單擊:粘帖"
-
-#: advtrains/copytool.lua:29
-msgid "You do not have the @1 privilege."
-msgstr "您沒有「@1」許可權。"
-
-#: advtrains/copytool.lua:41
-msgid "The track you are trying to place the wagon on is not long enough."
-msgstr "軌道太短。"
-
-#: advtrains/copytool.lua:47
-msgid "The clipboard couldn't access the metadata. Paste failed."
-msgstr "無法貼上:剪貼簿無法訪問元資料。"
-
-#: advtrains/copytool.lua:52 advtrains/copytool.lua:57
-msgid "The clipboard is empty."
-msgstr "剪貼簿是空的。"
-
-#: advtrains/copytool.lua:74
-msgid "Back of train would end up off track, cancelling."
-msgstr "火車後部不在軌道上。"
-
-#: advtrains/copytool.lua:92
-msgid "No such lua entity."
-msgstr "您沒有指向一個可以用火車複製工具複製的物體。"
-
-#: advtrains/copytool.lua:98
-msgid "No such wagon: @1."
-msgstr "ID 為「@1」的車廂不存在。"
-
-#: advtrains/copytool.lua:104
-msgid "No such train: @1."
-msgstr "ID 為「@1」的列車不存在。"
-
-#: advtrains/copytool.lua:176
-msgid "The clipboard couldn't access the metadata. Copy failed."
-msgstr "無法複製:剪貼簿無法訪問元資料。"
-
-#: advtrains/copytool.lua:180
-msgid "Train copied."
-msgstr "已複製火車。"
-
-#: advtrains/couple.lua:28
-msgid "Buffer and Chain Coupler"
-msgstr "鏈式連結器"
-
-#: advtrains/couple.lua:29
-msgid "Scharfenberg Coupler"
-msgstr "Scharfenberg 式連結器"
-
-#: advtrains/couple.lua:185
-msgid ""
-"You are not allowed to couple trains without the train_operator privilege."
-msgstr "您沒有「train_operator」許可權,不能連結這兩節車廂。"
-
-#: advtrains/couple.lua:329 advtrains/couple.lua:333
-msgid "<No coupler>"
-msgstr "<無連結器>"
-
-#: advtrains/couple.lua:334
-msgid "Can not couple: The couplers of the trains do not match (@1 and @2)."
-msgstr "您無法連結這兩節車廂:這兩節車廂使用不同的連結器 (@1和@2)。"
-
-#: advtrains/craft_items.lua:3
-msgid "Boiler"
-msgstr "鍋爐"
-
-#: advtrains/craft_items.lua:9
-msgid "Driver's cab"
-msgstr "駕駛室"
-
-#: advtrains/craft_items.lua:15
-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:33
-msgid "@1 Platform (high)"
-msgstr "較高的@1月臺"
-
-#: advtrains/misc_nodes.lua:59
-msgid "@1 Platform (45 degree)"
-msgstr "較高的@1月臺 (45°)"
-
-#: advtrains/misc_nodes.lua:81
-msgid "@1 Platform (low, 45 degree)"
-msgstr "較低的@1月臺 (45°)"
-
-#: advtrains/protection.lua:7
-msgid "Can place, remove and operate trains"
-msgstr ""
-
-#: advtrains/protection.lua:12
-msgid ""
-"Can place, remove and operate any train, regardless of owner, whitelist, or "
-"protection"
-msgstr ""
-
-#: advtrains/protection.lua:18
-msgid "Can place and dig tracks in unprotected areas"
-msgstr ""
-
-#: advtrains/protection.lua:24
-msgid "Can operate turnouts and signals in unprotected areas"
-msgstr ""
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build near tracks without the track_builder privilege."
-msgstr "您沒有「train_operator」許可權,不能在鐵路附近建任何東西。"
-
-#: advtrains/protection.lua:148
-msgid ""
-"You are not allowed to build tracks without the track_builder privilege."
-msgstr "您沒有「train_operator」許可權,不能在這裡建造鐵路。"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build near tracks at this protected position."
-msgstr "這裡已被保護,您不能在這裡的鐵路附近建任何東西。"
-
-#: advtrains/protection.lua:153
-msgid "You are not allowed to build tracks at this protected position."
-msgstr "這裡已被保護,您不能在這裡建造鐵路。"
-
-#: advtrains/protection.lua:184
-msgid ""
-"You are not allowed to operate turnouts and signals without the "
-"railway_operator privilege."
-msgstr "您沒有「railway_operator」許可權,不能控制鐵路設施。"
-
-#: advtrains/signals.lua:63
-msgid "Lampless Signal"
-msgstr "臂木式號誌機"
-
-#: advtrains/signals.lua:127
-msgid "Signal"
-msgstr "色燈號誌機"
-
-#: advtrains/signals.lua:191
-msgid "Wallmounted Signal (left)"
-msgstr "壁掛式色燈號誌機 (左側)"
-
-#: advtrains/signals.lua:192
-msgid "Wallmounted Signal (right)"
-msgstr "壁掛式色燈號誌機 (右側)"
-
-#: advtrains/signals.lua:193
-msgid "Wallmounted Signal (top)"
-msgstr "懸掛式色燈號誌機"
-
-#: advtrains/signals.lua:281 advtrains/signals.lua:322
-msgid "Andrew's Cross"
-msgstr "平交道號誌燈"
-
-#: advtrains/trackplacer.lua:313
-msgid ""
-"Track Worker Tool\n"
-"\n"
-"Left-click: change rail type (straight/curve/switch)\n"
-"Right-click: rotate object"
-msgstr ""
-"鐵路調整工具\n"
-"\n"
-"左鍵單擊:切換軌道型別\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
-msgid "@1 Slope"
-msgstr "@1斜坡"
-
-#: advtrains/tracks.lua:648 advtrains/tracks.lua:653
-msgid "Can't place slope: not pointing at node."
-msgstr "無法放置斜坡:您沒有選擇任何方塊。"
-
-#: advtrains/tracks.lua:658
-msgid "Can't place slope: space occupied."
-msgstr "無法放置斜坡:此區域已被佔用。"
-
-#: advtrains/tracks.lua:711
-msgid "Can't place slope: Not enough slope items left (@1 required)."
-msgstr "無法放置斜坡:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)"
-
-#: advtrains/tracks.lua:714
-msgid "Can't place slope: There's no slope of length @1."
-msgstr "無法放置斜坡:advtrains 不支援長度為@1米的斜坡。"
-
-#: advtrains/tracks.lua:721
-msgid "Can't place slope: no supporting node at upper end."
-msgstr "無法放置斜坡:較高階沒有支撐方塊。"
-
-#: advtrains/trainhud.lua:305
-msgid "OVERRUN RED SIGNAL! Examine situation and reverse train to move again."
-msgstr ""
-
-#: advtrains/wagons.lua:179
-msgid "This wagon is owned by @1, you can't destroy it."
-msgstr "這是 @1 的車廂,您不能摧毀它。"
-
-#: advtrains/wagons.lua:203
-msgid "The wagon's inventory is not empty."
-msgstr ""
-
-#: advtrains/wagons.lua:210
-msgid "Wagon needs to be decoupled from other wagons in order to destroy it."
-msgstr ""
-
-#: advtrains/wagons.lua:216
-msgid ""
-"Warning: If you destroy this wagon, you only get some steel back! If you are "
-"sure, hold Sneak and left-click the wagon."
-msgstr ""
-"警告:如果您摧毀此車廂,您只能拿到一些鋼方塊。如果您確定要摧毀這節車廂,請按"
-"潛行鍵並左鍵單擊此車廂。"
-
-#: advtrains/wagons.lua:649 advtrains/wagons.lua:850
-msgid "Show Inventory"
-msgstr "顯示物品欄"
-
-#: advtrains/wagons.lua:652
-msgid "Onboard Computer"
-msgstr ""
-
-#: advtrains/wagons.lua:655 advtrains/wagons.lua:1328
-msgid "Wagon properties"
-msgstr "車廂屬性"
-
-#: advtrains/wagons.lua:658
-msgid "Get off"
-msgstr "下車"
-
-#: advtrains/wagons.lua:661
-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:706
-msgid "Doors are closed! (Try holding sneak key!)"
-msgstr ""
-
-#: advtrains/wagons.lua:712
-msgid "You can't get on this wagon."
-msgstr ""
-
-#: advtrains/wagons.lua:838
-msgid "Select seat:"
-msgstr "請選擇座位:"
-
-#: advtrains/wagons.lua:880
-msgid "Save wagon properties"
-msgstr "儲存車廂屬性"
-
-#: advtrains/wagons.lua:965
-msgid "Text displayed outside on train"
-msgstr "車廂外部顯示"
-
-#: advtrains/wagons.lua:966
-msgid "Text displayed inside train"
-msgstr "車廂內部顯示"
-
-#: advtrains/wagons.lua:967
-msgid "Line"
-msgstr "火車線路"
-
-#: advtrains/wagons.lua:968
-msgid "Routingcode"
-msgstr "路由碼"
-
-#: advtrains/wagons.lua:1241
-msgid ""
-"Doors are closed. Use Sneak+rightclick to ignore the closed doors and get "
-"off."
-msgstr "車門已關閉,請使用潛行+右鍵單擊下車。"
-
-#: advtrains/wagons.lua:1250
-msgid "You are not allowed to access the driver stand."
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:13
-msgid "Point speed restriction: @1"
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:14
-msgid "Set point speed restriction:"
-msgstr ""
-
-#: advtrains_interlocking/tsr_rail.lua:30
-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
-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
-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:60
-msgid "Door Side"
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:62
-msgid "Reverse train"
-msgstr "改變行車方向"
-
-#: advtrains_line_automation/stoprail.lua:63
-msgid "Kick out passengers"
-msgstr "踢出乘客"
-
-#: advtrains_line_automation/stoprail.lua:97
-msgid "Station code \"@1\" already exists and is owned by @2."
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:111
-msgid "This station is owned by @1. You are not allowed to edit its name."
-msgstr ""
-
-#: advtrains_line_automation/stoprail.lua:221
-msgid "Station/Stop Track"
-msgstr "車站軌道"
-
-#: advtrains_luaautomation/active_common.lua:17
-msgid "Unconfigured LuaATC component"
-msgstr "LuaATC 元件 (未配置)"
-
-#: advtrains_luaautomation/active_common.lua:46
-msgid "LuaATC Environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:49
-msgid "Clear Local Environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:50
-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'"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:96
-msgid "LuaATC component assigned to an invalid environment"
-msgstr ""
-
-#: advtrains_luaautomation/active_common.lua:171
-msgid "LuaATC component with error: @1"
-msgstr ""
-
-#: advtrains_luaautomation/init.lua:13
-msgid ""
-"Can place and configure LuaATC components, including execute potentially "
-"harmful Lua code"
-msgstr ""
-
-#: advtrains_luaautomation/mesecon_controller.lua:211
-msgid "LuaATC Mesecon Controller"
-msgstr ""
-
-#: advtrains_luaautomation/operation_panel.lua:11
-msgid "LuaATC Operation Panel"
-msgstr ""
-
-#: advtrains_luaautomation/pcnaming.lua:28
-msgid ""
-"Passive Component Naming Tool\n"
-"\n"
-"Right-click to name a passive component."
-msgstr ""
-"被動元件命名工具\n"
-"\n"
-"右鍵單擊命名所選元件。"
-
-#: advtrains_luaautomation/pcnaming.lua:39
-msgid ""
-"You are not allowed to name LuaATC passive components without the @1 "
-"privilege."
-msgstr "您沒有「@1」許可權,不能命名這個元件。"
-
-#: advtrains_luaautomation/pcnaming.lua:62
-msgid "Set name of component (empty to clear)"
-msgstr ""
-
-#: advtrains_train_industrial/init.lua:10
-#: advtrains_train_industrial/init.lua:49 advtrains_train_steam/init.lua:20
-#: advtrains_train_steam/init.lua:91
-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
-msgid "Driver Stand (left)"
-msgstr "左側司機座位"
-
-#: advtrains_train_industrial/init.lua:40
-msgid "Industrial Train Engine"
-msgstr "工業用火車頭"
-
-#: advtrains_train_industrial/init.lua:79
-msgid "Big Industrial Train Engine"
-msgstr "大型工業用火車頭"
-
-#: advtrains_train_industrial/init.lua:98
-msgid "Industrial tank wagon"
-msgstr "液體運輸車廂"
-
-#: advtrains_train_industrial/init.lua:116
-msgid "Industrial wood wagon"
-msgstr "木材運輸車廂"
-
-#: advtrains_train_japan/init.lua:4
-msgid "Japanese Train Inter-Wagon Connection"
-msgstr "日本火車連結器"
-
-#: advtrains_train_japan/init.lua:37
-msgid "Driver stand"
-msgstr "司機座位"
-
-#: advtrains_train_japan/init.lua:101
-msgid "Japanese Train Engine"
-msgstr "高速列車車頭"
-
-#: advtrains_train_japan/init.lua:176
-msgid "Japanese Train Wagon"
-msgstr "高速列車車廂"
-
-#: advtrains_train_steam/init.lua:75
-msgid "Steam Engine"
-msgstr "蒸汽機車"
-
-#: advtrains_train_steam/init.lua:159
-msgid "Detailed Steam Engine"
-msgstr "精細的蒸汽機車"
-
-#: advtrains_train_steam/init.lua:206
-msgid "Passenger Wagon"
-msgstr "客車"
-
-#: advtrains_train_steam/init.lua:226
-msgid "Box Wagon"
-msgstr "貨運車廂"
-
-#: advtrains_train_subway/init.lua:144
-msgid "Subway Passenger Wagon"
-msgstr "地鐵車廂"
-
-#: advtrains_train_track/init.lua:31
-msgid "Y-turnout"
-msgstr "對稱道岔"
-
-#: advtrains_train_track/init.lua:49
-msgid "3-way turnout"
-msgstr "三開道岔"
-
-#: advtrains_train_track/init.lua:69
-msgid "Perpendicular Diamond Crossing Track"
-msgstr "垂直交叉軌道"
-
-#: advtrains_train_track/init.lua:91
-msgid "90+Angle Diamond Crossing Track"
-msgstr "交叉軌道 (其中一條軌道與座標軸平行)"
-
-#: advtrains_train_track/init.lua:132
-msgid "Diagonal Diamond Crossing Track"
-msgstr "交叉軌道"
-
-#: advtrains_train_track/init.lua:179
-msgid "Bumper"
-msgstr "保險槓"
-
-#: advtrains_train_track/init.lua:201
-msgid "ATC controller"
-msgstr "ATC 控制器"
-
-#: advtrains_train_track/init.lua:317
-msgid "Unloading Track"
-msgstr "卸貨軌道"
-
-#: advtrains_train_track/init.lua:342
-msgid "Loading Track"
-msgstr "裝貨軌道"
-
-#: advtrains_train_track/init.lua:406
-msgid "Detector Rail"
-msgstr "探測軌道"
-
-#~ msgid ""
-#~ "ATC controller, mode @1\n"
-#~ "Channel: @2"
-#~ msgstr ""
-#~ "ATC 控制器\n"
-#~ "模式:@1\n"
-#~ "頻道:@2"
-
-#~ msgid "Access to @1"
-#~ msgstr "可前往@1"
-
-#~ msgid "Can't get on: wagon full or doors closed!"
-#~ msgstr "無法上車:車門已關閉或車廂已滿。"
-
-#~ msgid "Can't place: protected position!"
-#~ msgstr "無法放置:此區域已被保護。"
-
-#~ msgid "Default Seat"
-#~ msgstr "預設座位"
-
-#~ msgid "Default Seat (driver stand)"
-#~ msgstr "預設座位 (司機座位)"
-
-#~ msgid "Deprecated Track"
-#~ msgstr "請不要使用"
-
-#~ msgid "Lock couples"
-#~ msgstr "鎖定連結處"
-
-#~ msgid "Speed:"
-#~ msgstr "速度"
-
-#~ msgid "Target:"
-#~ msgstr "目標速度"
-
-#, fuzzy
-#~ msgid "This node can't be rotated using the trackworker,"
-#~ msgstr "您不能使用鐵路調整工具旋轉這個方塊。"
-
-#~ msgid "This position is protected!"
-#~ msgstr "這裡已被保護。"
-
-#~ msgid "Use Sneak+rightclick to bypass closed doors!"
-#~ msgstr "請使用潛行+右鍵上車。"
-
-#, fuzzy
-#~ msgid "You are not allowed to modify this protected track."
-#~ msgstr "這裡已被保護,您不能在這裡建造鐵路。"
-
-#~ msgid ""
-#~ "You need to own at least one neighboring wagon to destroy this couple."
-#~ msgstr "您必須至少擁有其中一節車廂才能分開這兩節車廂。"
diff --git a/advtrains/poconvert.lua b/advtrains/poconvert.lua
deleted file mode 100644
index 74f962e..0000000
--- a/advtrains/poconvert.lua
+++ /dev/null
@@ -1,185 +0,0 @@
-local unescape_string
-do
- local schartbl = { -- https://en.wikipedia.org/wiki/Escape_sequences_in_C
- a = "\a",
- b = "\b",
- e = string.char(0x1b),
- f = "\f",
- n = "\n",
- r = "\r",
- t = "\t",
- v = "\v",
- }
- local function replace_single(pfx, c)
- local pl = #pfx
- if pl % 2 == 0 then
- return string.sub(pfx, 1, pl/2) .. c
- end
- return string.sub(pfx, 1, math.floor(pl/2)) .. (schartbl[c] or c)
- end
- unescape_string = function(str)
- return string.gsub(str, [[(\+)([abefnrtv'"?])]], replace_single)
- end
-end
-
-local function readstring_aux(str, pos)
- local _, spos = string.find(str, [[^%s*"]], pos)
- if not spos then
- return nil
- end
- local ipos = spos
- while true do
- local _, epos, m = string.find(str, [[(\*)"]], ipos+1)
- if not epos then
- return error("String extends beyond the end of input")
- end
- ipos = epos
- if #m % 2 == 0 then
- return unescape_string(string.sub(str, spos+1, epos-1)), epos+1
- end
- end
-end
-
-local function readstring(str, pos)
- local st = {}
- local nxt = pos
- while true do
- local s, npos = readstring_aux(str, nxt)
- if not s then
- if not st[1] then
- return nil, nxt
- else
- return table.concat(st), nxt
- end
- end
- nxt = npos
- table.insert(st, s)
- end
-end
-
-local function readtoken(str, pos)
- local _, epos, tok = string.find(str, [[^%s*(%S+)]], pos)
- if epos == nil then
- return nil, pos
- end
- return tok, epos+1
-end
-
-local function readcomment_add_flags(flags, s)
- for flag in string.gmatch(s, ",%s*([^,]+)") do
- flags[flag] = true
- end
-end
-
-local function readcomment_aux(str, pos)
- local _, epos, sval = string.find(str, "^\n*#([^\n]*)", pos)
- if not epos then
- return nil
- end
- return sval, epos+1
-end
-
-local function readcomment(str, pos)
- local st = {}
- local nxt = pos
- local flags = {}
- while true do
- local s, npos = readcomment_aux(str, nxt)
- if not npos then
- local t = {
- comment = table.concat(st, "\n"),
- flags = flags,
- }
- return t, nxt
- end
- if string.sub(s, 1, 1) == "," then
- readcomment_add_flags(flags, s)
- end
- table.insert(st, s)
- nxt = npos
- end
-end
-
-local function readpo(str)
- local st = {}
- local pos = 1
- while true do
- local entry, nxt = readcomment(str, pos)
- local msglines = 0
- while true do
- local tok, npos = readtoken(str, nxt)
- if tok == nil or string.sub(tok, 1, 1) == "#" then
- break
- elseif string.sub(tok, 1, 3) ~= "msg" then
- return error("Invalid token: " .. tok)
- elseif entry[tok] ~= nil then
- break
- else
- local value, npos = readstring(str, npos)
- assert(value ~= nil, "No string provided for " .. tok)
- entry[tok] = value
- nxt = npos
- msglines = msglines+1
- end
- end
- if msglines == 0 then
- return st
- elseif entry.msgid ~= "" then
- assert(entry.msgid ~= nil, "Missing untranslated string")
- assert(entry.msgstr ~= nil, "Missing translated string")
- table.insert(st, entry)
- end
- pos = nxt
- end
-end
-
-local escape_lookup = {
- ["="] = "@=",
- ["\n"] = "@n"
-}
-local function escape_string(st)
- return (string.gsub(st, "[=\n]", escape_lookup))
-end
-
-local function convert_po_string(textdomain, str)
- local st = {string.format("# textdomain: %s", textdomain)}
- for _, entry in ipairs(readpo(str)) do
- local line = ("%s=%s"):format(escape_string(entry.msgid), escape_string(entry.msgstr))
- if entry.flags.fuzzy then
- line = "#" .. line
- end
- table.insert(st, line)
- end
- return table.concat(st, "\n")
-end
-
-local function convert_po_file(textdomain, inpath, outpath)
- local f, err = io.open(inpath, "rb")
- assert(f, err)
- local str = convert_po_string(textdomain, f:read("*a"))
- f:close()
- minetest.safe_file_write(outpath, str)
- return str
-end
-
-local function convert_flat_po_directory(textdomain, modpath)
- assert(textdomain, "No textdomain specified for po file conversion")
- local mp = modpath or minetest.get_modpath(textdomain)
- assert(mp ~= nil, "No path to write for " .. textdomain)
- local popath = mp .. "/po"
- local trpath = mp .. "/locale"
- for _, infile in pairs(minetest.get_dir_list(popath, false)) do
- local lang = string.match(infile, [[^([^%.]+)%.po$]])
- if lang then
- local inpath = popath .. "/" .. infile
- local outpath = ("%s/%s.%s.tr"):format(trpath, textdomain, lang)
- convert_po_file(textdomain, inpath, outpath)
- end
- end
-end
-
-return {
- from_string = convert_po_string,
- from_file = convert_po_file,
- from_flat = convert_flat_po_directory,
-}
diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index 38210ef..0557f4d 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -883,8 +883,8 @@ function wagon:show_wagon_properties(pname)
local data = advtrains.wagons[self.id]
local form="size[5,5]"
form=form.."label[0.2,0;"..attrans("This Wagon ID")..": "..self.id.."]"
- 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 "").."]"
+ form = form .. "field[0.5,1;4.5,1;whitelist;"..attrans("Allow these players to access your wagon:")..";"..minetest.formspec_escape(data.whitelist or "").."]"
+ form = form .. "field[0.5,2;4.5,1;roadnumber;"..attrans("Wagon road number:")..";"..minetest.formspec_escape(data.roadnumber or "").."]"
local fc = ""
if data.fc then
fc = table.concat(data.fc, "!")
diff --git a/advtrains_interlocking/database.lua b/advtrains_interlocking/database.lua
index 844d350..9bcd441 100644
--- a/advtrains_interlocking/database.lua
+++ b/advtrains_interlocking/database.lua
@@ -760,7 +760,7 @@ function ildb.update_rs_cache(ts_id)
--atdebug("== Running update_rs_cache for ",ts_id)
-- start on every of the TS's TCBs, walk the track forward and store locks along the way
for start_tcbi, start_tcbs in ipairs(ts.tc_breaks) do
- start_pkey = advtrains.encode_pos(start_tcbs.p)
+ local start_pkey = advtrains.encode_pos(start_tcbs.p)
rscache[start_pkey] = {}
--atdebug("Starting for ",start_tcbi, start_tcbs)
local locks_found = {}
@@ -770,7 +770,7 @@ function ildb.update_rs_cache(ts_id)
-- now result_table contains found route locks. Match them with the other TCBs we have in this section
for end_tcbi, end_tcbs in ipairs(ts.tc_breaks) do
if end_tcbi ~= start_tcbi then
- end_pkey = advtrains.encode_pos(end_tcbs.p)
+ local end_pkey = advtrains.encode_pos(end_tcbs.p)
if result_table[end_pkey] then
--atdebug("Set RSCache entry",end_pkey.."-"..end_pkey,"=",result_table[end_pkey])
local lockstab = result_table[end_pkey]
diff --git a/advtrains_interlocking/route_prog.lua b/advtrains_interlocking/route_prog.lua
index e0634d4..76dad28 100644
--- a/advtrains_interlocking/route_prog.lua
+++ b/advtrains_interlocking/route_prog.lua
@@ -176,7 +176,7 @@ function advtrains.interlocking.visualize_route(origin, route, context, tmp_lcks
end
-- display locks
for pts, state in pairs(v.locks) do
- local pos = minetest.string_to_pos(pts)
+ local pos = assert(advtrains.decode_pos(pts))
routesprite(context, pos, "fix"..k..pts, "at_il_route_lock.png", "Zajištěna ve stavu '"..state.."' po cestě "..route.name.." dokud není úsek #"..k.." uvolněn.")
end
end
@@ -215,7 +215,7 @@ local player_rte_prog = {}
function advtrains.interlocking.init_route_prog(pname, sigd, default_route)
if not minetest.check_player_privs(pname, "interlocking") then
- minetest.chat_send_player(pname, "Insufficient privileges to use this!")
+ minetest.chat_send_player(pname, attrans("Insufficient privileges to use this!"))
return
end
local rp = {
@@ -239,7 +239,7 @@ function advtrains.interlocking.init_route_prog(pname, sigd, default_route)
end
player_rte_prog[pname] = rp
advtrains.interlocking.visualize_route(sigd, rp.route, "prog_"..pname, rp.tmp_lcks, pname)
- minetest.chat_send_player(pname, "Route programming mode active. Punch TCBs to add route segments, punch turnouts to lock them.")
+ minetest.chat_send_player(pname, "Režim programování cesty je aktivní. Klikejte levým tlačítkem na TCB pro přidání úseků a na výhybky pro jejich uzamčení.")
end
local function get_last_route_item(origin, route)
@@ -252,7 +252,7 @@ end
local function do_advance_route(pname, rp, sigd, tsref)
table.insert(rp.route, {next = sigd, locks = rp.tmp_lcks})
rp.tmp_lcks = {}
- chat(pname, "Úsek '"..(tsref and (tsref.name or "") or "--EOI--").."' přidán na cestu.")
+ chat(pname, "Úsek '"..(tsref and (tsref.name or "") or "--konec zab.--").."' přidán na cestu.")
end
local function finishrpform(pname)
@@ -419,7 +419,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
local tcbpts = string.match(formname, "^at_il_rprog_([^_]+)$")
local tcbpos
if tcbpts then
- tcbpos = minetest.string_to_pos(tcbpts)
+ tcbpos = assert(minetest.string_to_pos(tcbpts))
end
if tcbpos then
-- RPROG form
@@ -531,7 +531,7 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing)
chat(pname, "Tato TCB není nastavena, nejprve k ní musíte přiřadit kolej")
return
end
- local tcbpos = minetest.string_to_pos(tcbpts)
+ local tcbpos = assert(minetest.string_to_pos(tcbpts))
-- show formspec
diff --git a/advtrains_interlocking/route_ui.lua b/advtrains_interlocking/route_ui.lua
index 3fb5bc6..baaa957 100644
--- a/advtrains_interlocking/route_ui.lua
+++ b/advtrains_interlocking/route_ui.lua
@@ -26,7 +26,7 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
local route = tcbs.routes[routeid]
if not route then return end
- local form = "size[9,10]label[0.5,0.2;Přehled cesty]"
+ local form = "size[9,11]label[0.5,0.2;Přehled cesty]"
form = form.."field[0.8,1.2;6.5,1;name;Název cesty;"..minetest.formspec_escape(route.name).."]"
form = form.."button[7.0,0.9;1.5,1;setname;Nastavit]"
@@ -37,7 +37,7 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
tab[#tab+1] = minetest.formspec_escape(string.gsub(t, ",", " "))
tabref[#tab] = { [rty] = true, param = rpara, seg = rseg, idx = #tab }
end
- itab(1, "("..(tcbs.signal_name or "+")..") Route #"..routeid, "signal", sigd)
+ itab(1, "("..(tcbs.signal_name or "+")..") Cesta #"..routeid, "signal", sigd)
-- this code is partially copy-pasted from routesetting.lua
-- we start at the tc designated by signal
@@ -62,15 +62,15 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
local signame = "-"
if c_tcbs and c_tcbs.signal then signame = c_tcbs.signal_name or "o" end
itab(i, ""..i.." "..sigd_to_string(c_sigd).." ("..signame..")", "signal", c_sigd)
- itab(i, "= "..(c_ts and c_ts.name or c_ts_id).." ="..(c_rseg.call_on and " [CO]" or ""), "section", c_ts_id)
+ itab(i, "= "..(c_ts and c_ts.name or c_ts_id).." ="..(c_rseg.call_on and " [pov.]" or ""), "section", c_ts_id)
if c_rseg.locks then
for pts, state in pairs(c_rseg.locks) do
local pos = advtrains.decode_pos(pts)
- itab(i, "Zámek "..pts.." -> "..state, "lock", pos)
+ itab(i, "Zámek "..core.pos_to_string(pos).." -> "..state, "lock", pos)
if not advtrains.is_passive(pos) then
- itab("-!- Na "..pts.." není žádná pasivní komponenta. Prosím, přenastavte cestu!")
+ itab("-!- Na "..core.pos_to_string(pos).." není žádná pasivní komponenta. Prosím, přenastavte cestu!")
break
end
end
@@ -80,7 +80,7 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
if nvar then
local re_tcbs = ildb.get_tcbs({p = nvar.p, s = (nvar.s==1) and 2 or 1})
if not re_tcbs or not re_tcbs.ts_id or re_tcbs.ts_id~=c_ts_id then
- itab(i, "-!- At "..sigd_to_string(c_sigd)..".Section Start and End do not match!", "err", nil)
+ itab(i, "-!- Na "..sigd_to_string(c_sigd)..".neodpovídají začátek a konec úseku!", "err", nil)
break
end
end
@@ -92,13 +92,13 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
local e_tcbs = ildb.get_tcbs(c_sigd)
local signame = "-"
if e_tcbs and e_tcbs.signal then signame = e_tcbs.signal_name or "o" end
- itab(i, "E "..sigd_to_string(c_sigd).." ("..signame..")", "end", c_sigd)
+ itab(i, "K "..sigd_to_string(c_sigd).." ("..signame..")", "end", c_sigd)
else
- itab(i, "E (none)", "end", nil)
+ itab(i, "K (žádný)", "end", nil)
end
if not sel_rpartidx then sel_rpartidx = 1 end
- form = form.."textlist[0.5,2;3.5,3.9;routelog;"..table.concat(tab, ",")..";"..(sel_rpartidx or 1)..";false]"
+ form = form.."textlist[0.5,2;4.5,3.9;routelog;"..table.concat(tab, ",")..";"..(sel_rpartidx or 1)..";false]"
-- to the right of rtelog, controls are displayed for the thing in focus
-- What is in focus is determined by the parameter sel_rpartidx
@@ -113,10 +113,10 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
-- main aspect list
local signalpos = s_tcbs and s_tcbs.signal
if signalpos and rseg then
- form = form..F.label(4.5, 2, "Signal Aspect:")
+ form = form..F.label(5.5, 2, "Signál:")
local ndef = signalpos and advtrains.ndb.get_ndef(signalpos)
if ndef and ndef.advtrains and ndef.advtrains.main_aspects then
- local entries = { "<Default Aspect>" }
+ local entries = { "<výchozí>" }
local sel = 1
for i, mae in ipairs(ndef.advtrains.main_aspects) do
entries[i+1] = mae.description
@@ -124,7 +124,7 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
sel = i+1
end
end
- form = form..F.dropdown(4.5, 3.0, 4, "sa_main_aspect", entries, sel, true)
+ form = form..F.dropdown(5.5, 3.0, 4, "sa_main_aspect", entries, sel, true)
end
-- checkbox for assign distant signal
local assign_dst = rseg.assign_dst
@@ -133,21 +133,21 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
-- defaults to false for the very first signal and true for all others (= minimal user configuration overhead)
-- Note: on save, the value will be fixed at either false or true
end
- form = form..string.format("checkbox[4.5,4.0;sa_distant;Announce distant signal;%s]", assign_dst)
+ form = form..string.format("checkbox[5.5,4.0;sa_distant;Ohlásit předzvěst;%s]", assign_dst)
else
- form = form..F.label(4.5, 2, "No Signal at this TCB")
+ form = form..F.label(5.5, 2, "Tato TCB nemá žádné návěstidlo")
end
elseif sel_rpart and sel_rpart.section then
local rseg = route[sel_rpart.seg]
if rseg then
- form = form..F.label(4.5, 2, "Section Options:")
+ form = form..F.label(5.5, 2, "Volby:")
-- checkbox for call-on
- form = form..string.format("checkbox[4.5,4.0;se_callon;Call-on (section may be occupied);%s]", rseg.call_on)
+ form = form..string.format("checkbox[5.5,4.0;se_callon;Povolit (úsek může být obsazen);%s]", rseg.call_on)
end
elseif sel_rpart and sel_rpart.err then
- form = form.."textarea[4.5,2.5;4,4;errorta;Error:;"..tab[sel_rpartidx].."]"
+ form = form.."textarea[5.5,2.5;4,4;errorta;Chyba:;"..tab[sel_rpartidx].."]"
else
- form = form..F.label(4.5, 2, "<< Select a route part to edit options")
+ form = form..F.label(5.5, 2, "<< Vyberte část cesty pro nastavení voleb")
end
form = form.."button[0.5,6;1,1;prev;<<<]"
@@ -158,15 +158,15 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx)
--if route.smartroute_generated or route.default_autoworking then
-- form = form.."button[3.5,6;2,1;noautogen;Clr Autogen]"
--end
- form = form.."button[5.5,6;3,1;delete;Delete Route]"
- form = form.."button[0.5,7;3,1;back;Back to signal]"
- form = form.."button[3.5,7;2,1;clone;Clone Route]"
- form = form.."button[5.5,7;3,1;newfrom;New From Route]"
+ form = form.."button[5.5,6;3,1;delete;Smazat cestu]"
+ form = form.."button[0.5,7;3,1;back;Zpět na návěstidlo]"
+ form = form.."button[3.5,7;2,1;clone;Klonovat cestu]"
+ form = form.."button[5.5,7;3,1;newfrom;Nová z cesty]"
--atdebug(route.ars)
form = form.."style[ars;font=mono]"
- form = form.."textarea[0.8,8.3;5,3;ars;ARS Rule List;"..atil.ars_to_text(route.ars).."]"
- form = form.."button[5.5,8.23;3,1;savears;Save ARS List]"
+ form = form.."textarea[0.8,8.3;5,3;ars;ARS pravidla;"..atil.ars_to_text(route.ars).."]"
+ form = form.."button[5.5,8.23;3,1;savears;Uložit ARS pravidla]"
local formname = "at_il_routeedit_"..minetest.pos_to_string(sigd.p).."_"..sigd.s.."_"..routeid
minetest.show_formspec(pname, formname, form)
diff --git a/advtrains_interlocking/routesetting.lua b/advtrains_interlocking/routesetting.lua
index 6544a92..1065cad 100644
--- a/advtrains_interlocking/routesetting.lua
+++ b/advtrains_interlocking/routesetting.lua
@@ -86,8 +86,8 @@ function ilrs.set_route(signal, route, try)
local c_locks = {}
if route.use_rscache and c_ts.rs_cache and c_rseg.next then
-- rscache needs to be enabled, present and next must be defined
- start_pkey = advtrains.encode_pos(c_sigd.p)
- end_pkey = advtrains.encode_pos(c_rseg.next.p)
+ local start_pkey = advtrains.encode_pos(c_sigd.p)
+ local end_pkey = advtrains.encode_pos(c_rseg.next.p)
if c_ts.rs_cache[start_pkey] and c_ts.rs_cache[start_pkey][end_pkey] then
for lp,lst in pairs(c_ts.rs_cache[start_pkey][end_pkey]) do
--atdebug("Add lock from RSCache:",lp,"->",lst)
diff --git a/advtrains_interlocking/signal_aspect_ui.lua b/advtrains_interlocking/signal_aspect_ui.lua
index 98a332a..818f6d6 100644
--- a/advtrains_interlocking/signal_aspect_ui.lua
+++ b/advtrains_interlocking/signal_aspect_ui.lua
@@ -38,14 +38,14 @@ function advtrains.interlocking.make_ip_formspec_component(pos, x, y, w)
local ipos = minetest.string_to_pos(pts)
ipmarker(ipos, connid)
return table.concat {
- F.S_label(x, y, "Influence point is set at @1.", string.format("%s/%s", pts, connid)),
- F.S_button_exit(x, y+0.5, w/2-0.125, "ip_set", "Modify"),
- F.S_button_exit(x+w/2+0.125, y+0.5, w/2-0.125, "ip_clear", "Clear"),
+ F.S_label(x, y, "Bod účinku nastaven na @1.", string.format("%s/%s", pts, connid)),
+ F.S_button_exit(x, y+0.5, w/2-0.125, "ip_set", "Změnit"),
+ F.S_button_exit(x+w/2+0.125, y+0.5, w/2-0.125, "ip_clear", "Odebrat bod účinku"),
}
else
return table.concat {
- F.S_label(x, y, "Influence point is not set."),
- F.S_button_exit(x, y+0.5, w, "ip_set", "Set influence point"),
+ F.S_label(x, y, "Bod účinku není nastaven."),
+ F.S_button_exit(x, y+0.5, w, "ip_set", "Nastavit bod účinku"),
}
end
end
@@ -83,10 +83,10 @@ function advtrains.interlocking.show_ip_sa_form(pos, pname)
-- Create Signal aspect formspec elements
local ndef = advtrains.ndb.get_ndef(pos)
if ndef and ndef.advtrains then
- form[#form+1] = F.label(0.5, 2, "Signal Aspect:")
+ form[#form+1] = F.label(0.5, 2, "signál:")
-- main aspect list
if ndef.advtrains.main_aspects then
- local entries = { "<none>" }
+ local entries = { "<žádný>" }
local sel = 1
for i, mae in ipairs(ndef.advtrains.main_aspects) do
entries[i+1] = mae.description
@@ -98,9 +98,9 @@ function advtrains.interlocking.show_ip_sa_form(pos, pname)
end
-- distant signal assign (is shown either when main_aspect is not none, or when pure distant signal)
if rpos then
- form[#form+1] = F.button_exit(0.5, 3.5, 4, "sa_undistant", "Dst: " .. minetest.pos_to_string(rpos))
+ form[#form+1] = F.button_exit(0.5, 3.5, 4, "sa_undistant", "odpojit od: " .. minetest.pos_to_string(rpos))
elseif (ma and not ma.halt) or not ndef.advtrains.main_aspects then
- form[#form+1] = F.button_exit(0.5, 3.5, 4, "sa_distant", "<assign distant>")
+ form[#form+1] = F.button_exit(0.5, 3.5, 4, "sa_distant", "<přiřadit předzvěst>")
end
end
@@ -165,12 +165,12 @@ end)
-- inits the signal IP assignment process
function advtrains.interlocking.init_ip_assign(pos, pname)
if not minetest.check_player_privs(pname, "interlocking") then
- minetest.chat_send_player(pname, "Insufficient privileges to use this!")
+ minetest.chat_send_player(pname, attrans("Insufficient privileges to use this!"))
return
end
--remove old IP
--advtrains.interlocking.db.clear_ip_by_signalpos(pos)
- minetest.chat_send_player(pname, "Configuring Signal: Please look in train's driving direction and punch rail to set influence point.")
+ minetest.chat_send_player(pname, attrans("Configuring Signal: Please look in train's driving direction and punch rail to set influence point."))
players_assign_ip[pname] = pos
end
@@ -178,10 +178,10 @@ end
-- inits the distant signal assignment process
function advtrains.interlocking.init_distant_assign(pos, pname)
if not minetest.check_player_privs(pname, "interlocking") then
- minetest.chat_send_player(pname, "Insufficient privileges to use this!")
+ minetest.chat_send_player(pname, attrans("Insufficient privileges to use this!"))
return
end
- minetest.chat_send_player(pname, "Set distant signal: Punch the main signal to assign!")
+ minetest.chat_send_player(pname, attrans("Set distant signal: Punch the main signal to assign!"))
players_assign_distant[pname] = pos
end
@@ -203,7 +203,7 @@ local function try_auto_assign_to_tcb(signalpos, pos, connid, pname)
advtrains.interlocking.db.assign_signal_to_tcbs(signalpos, sigd)
-- use auto-naming
advtrains.interlocking.add_autoname_to_tcbs(tcb[aconnid], pname)
- minetest.chat_send_player(pname, "Assigned signal to the TCB at "..core.pos_to_string(apos))
+ minetest.chat_send_player(pname, attrans("Assigned signal to the TCB at @1", core.pos_to_string(apos)))
advtrains.interlocking.show_tcb_marker(apos)
advtrains.interlocking.show_signalling_form(sigd, pname)
end
@@ -215,7 +215,7 @@ local function try_auto_assign_to_tcb(signalpos, pos, connid, pname)
local mainsig = advtrains.interlocking.db.get_ip_signal(pts, aconnid)
if mainsig and advtrains.interlocking.signal.get_signal_cap_level(mainsig) >= 3 then
advtrains.interlocking.signal.set_aspect(signalpos, "_default", mainsig)
- minetest.chat_send_player(pname, "Assigned distant signal to the main signal at "..core.pos_to_string(mainsig))
+ minetest.chat_send_player(pname, attrans("Assigned distant signal to the main signal at @1", core.pos_to_string(mainsig)))
return
end
end
@@ -245,19 +245,19 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing)
if not advtrains.interlocking.db.get_ip_signal_asp(pts, plconnid) then
advtrains.interlocking.db.set_ip_signal(pts, plconnid, signalpos)
ipmarker(pos, plconnid)
- minetest.chat_send_player(pname, "Configuring Signal: Successfully set influence point")
+ minetest.chat_send_player(pname, attrans("Configuring Signal: Successfully set influence point"))
-- Try to find a TCB ahead and auto assign this signal there
if advtrains.interlocking.signal.get_signal_cap_level(signalpos) >= 2 then
try_auto_assign_to_tcb(signalpos, pos, plconnid, pname)
end
else
- minetest.chat_send_player(pname, "Configuring Signal: Influence point of another signal is already present!")
+ minetest.chat_send_player(pname, attrans("Configuring Signal: Influence point of another signal is already present!"))
end
else
- minetest.chat_send_player(pname, "Configuring Signal: This is not a normal two-connection rail! Aborted.")
+ minetest.chat_send_player(pname, attrans("Configuring Signal: This is not a normal two-connection rail! Aborted."))
end
else
- minetest.chat_send_player(pname, "Configuring Signal: Node is too far away. Aborted.")
+ minetest.chat_send_player(pname, attrans("Configuring Signal: Node is too far away. Aborted."))
end
players_assign_ip[pname] = nil
end
diff --git a/advtrains_interlocking/tcb_ts_ui.lua b/advtrains_interlocking/tcb_ts_ui.lua
index 9a44b4d..167b791 100644
--- a/advtrains_interlocking/tcb_ts_ui.lua
+++ b/advtrains_interlocking/tcb_ts_ui.lua
@@ -247,12 +247,12 @@ function advtrains.interlocking.self_tcb_make_after_place_callback(fail_silently
local pname = player:get_player_name()
if not minetest.check_player_privs(pname, "interlocking") then
if not fail_silently_on_noprivs then
- minetest.chat_send_player(pname, "Insufficient privileges to use this!")
+ minetest.chat_send_player(pname, attrans("Insufficient privileges to use this!"))
end
return
end
if ildb.get_tcb(pos) then
- minetest.chat_send_player(pname, "TCB already existed at this position, now linked to this node")
+ minetest.chat_send_player(pname, attrans("TCB already existed at this position, now linked to this node"))
else
ildb.create_tcb_at(pos, pname)
end
@@ -261,7 +261,7 @@ function advtrains.interlocking.self_tcb_make_after_place_callback(fail_silently
local tcbs = ildb.get_tcbs(sigd)
-- make sure signal doesn't already exist
if tcbs.signal then
- minetest.chat_send_player(pname, "Signal on B side already assigned!")
+ minetest.chat_send_player(pname, attrans("Signal on B side already assigned!"))
return
end
ildb.assign_signal_to_tcbs(pos, sigd)
@@ -281,7 +281,7 @@ function advtrains.interlocking.self_tcb_make_can_dig_callback(is_signal)
local pname = player and player:get_player_name() or ""
-- need to duplicate logic of the regular "can_dig_or_modify_track()" function in core/tracks.lua
if advtrains.get_train_at_pos(pos) then
- minetest.chat_send_player(pname, "Can't remove track, a train is here!")
+ minetest.chat_send_player(pname, attrans("Can't remove track, a train is here!"))
return false
end
-- end of standard checks
@@ -376,8 +376,12 @@ local sidecolorB = minetest.get_color_escape_sequence("#068b00")
local function mktcbformspec(pos, side, tcbs, offset, pname)
local form = ""
- local btnpref = side==1 and "A" or "B"
- local ts
+ local btncolor, btnpref, ts
+ if side == 1 then
+ btncolor, btnpref = sidecolorA, "A"
+ else
+ btncolor, btnpref = sidecolorB, "B"
+ end
-- ensure that mapping and xlink are up to date
ildb.tcbs_ensure_ts_ref_exists({p=pos, s=side, tcbs=tcbs})
ildb.validate_tcb_xlink({p=pos, s=side, tcbs=tcbs})
@@ -386,12 +390,12 @@ local function mktcbformspec(pos, side, tcbs, offset, pname)
ts = ildb.get_ts(tcbs.ts_id)
end
if ts then
- form = form.."label[0.5,"..offset..";Side "..btnpref..": "..minetest.formspec_escape(ts.name or tcbs.ts_id).."]"
- form = form.."button[0.5,"..(offset+0.5)..";5,1;"..btnpref.."_gotots;Show track section]"
+ form = form.."label[0.5,"..offset..";"..btncolor..attrans("Side "..btnpref)..": "..minetest.formspec_escape(ts.name or tcbs.ts_id).."]"
+ form = form.."button[0.5,"..(offset+0.5)..";5,1;"..btnpref.."_gotots;"..attrans("Show track section").."]"
else
tcbs.ts_id = nil
- form = form.."label[0.5,"..offset..";Side "..btnpref..": ".."End of interlocking]"
- form = form.."button[0.5,"..(offset+0.5)..";5,1;"..btnpref.."_makeil;Create Interlocked Track Section]"
+ form = form.."label[0.5,"..offset..";"..btncolor..attrans("Side "..btnpref)..": "..attrans("End of interlocking").."]"
+ form = form.."button[0.5,"..(offset+0.5)..";5,1;"..btnpref.."_makeil;"..attrans("Create Interlocked Track Section").."]"
end
-- xlink
if tcbs.xlink then
@@ -399,10 +403,10 @@ local function mktcbformspec(pos, side, tcbs, offset, pname)
form = form.."button[4.5,"..(offset+1.5)..";1,1;"..btnpref.."_xlinkdel;X]"
else
if players_assign_xlink[pname] then
- form = form.."button[0.5,"..(offset+1.5)..";4,1;"..btnpref.."_xlinklink;Link "..ildb.sigd_to_string(players_assign_xlink[pname]).."]"
+ form = form.."button[0.5,"..(offset+1.5)..";4,1;"..btnpref.."_xlinklink;"..attrans("Link @1", ildb.sigd_to_string(players_assign_xlink[pname])).."]"
form = form.."button[4.5,"..(offset+1.5)..";1,1;"..btnpref.."_xlinkabrt;X]"
else
- form = form.."label[0.5,"..(offset+1.5)..";No Link]"
+ form = form.."label[0.5,"..(offset+1.5)..";"..attrans("No Link").."]"
form = form.."button[4.5,"..(offset+1.5)..";1,1;"..btnpref.."_xlinkadd;+]"
end
end
@@ -490,7 +494,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
else
if f_xlinkadd[connid] then
players_assign_xlink[pname] = {p=pos, s=connid}
- minetest.chat_send_player(pname, "TCB Link: Select linked TCB now!")
+ minetest.chat_send_player(pname, attrans("TCB Link: Select linked TCB now!"))
minetest.close_formspec(pname, formname)
return -- to not reopen form
end
@@ -536,7 +540,7 @@ function advtrains.interlocking.show_ts_form(ts_id, pname)
advtrains.interlocking.show_tcb_marker(sigd.p)
end
- form = form.."label[0.5,2.5;Boundary TCBs:]"
+ form = form.."label[0.5,2.5;"..attrans("Boundary TCBs")..":]"
form = form.."textlist[0.5,3;4,3;tcblist;"..table.concat(strtab, ",").."]"
-- additional route locks (e.g. for level crossings)
@@ -548,15 +552,15 @@ function advtrains.interlocking.show_ts_form(ts_id, pname)
minetest.pos_to_string(advtrains.decode_pos(pts)).." = "..state)
end
end
- form = form.."label[5.5,2.5;Fixed route locks (e.g. level crossings):]"
+ form = form.."label[5.5,2.5;"..attrans("Fixed route locks (e.g. level crossings)")..":]"
form = form.."textlist[5.5,3;4,3;fixedlocks;"..table.concat(strtab, ",").."]"
if ildb.may_modify_ts(ts) then
- form = form.."button[5.5,6;2,1;flk_add;Add locks]"
- form = form.."button[7.5,6;2,1;flk_clear;Clear locks]"
+ form = form.."button[5.5,6;2,1;flk_add;"..attrans("Add locks").."]"
+ form = form.."button[7.5,6;2,1;flk_clear;"..attrans("Clear locks").."]"
- form = form.."button[5.5,8;4,1;remove;Remove Section]"
- form = form.."tooltip[remove;This will remove the track section and set all its end points to End Of Interlocking]"
+ form = form.."button[5.5,8;4,1;remove;"..attrans("Remove Section").."]"
+ form = form.."tooltip[remove;"..attrans("This will remove the track section and set all its end points to End Of Interlocking").."]"
else
hint=3
end
@@ -574,10 +578,10 @@ function advtrains.interlocking.show_ts_form(ts_id, pname)
form = form.."label[0.5,7.1;"..attrans("No trains on this section.").."]"
end
- form = form.."button[5.5,7;4,1;reset;Reset section state]"
+ form = form.."button[5.5,7;4,1;reset;"..attrans("Reset section state").."]"
if hint == 3 then
- form = form.."label[0.5,0.75;You cannot modify track sections when a route is set or a train is on the section.]"
+ form = form.."label[0.5,0.75;"..attrans("You cannot modify track sections when a route is set or a train is on the section.").."]"
--form = form.."label[0.5,1;Trying to unlink a TCB directly connected to this track will not work.]"
end
@@ -618,7 +622,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
ts.fixed_locks = {}
end
players_assign_fixedlocks[pname] = ts_id
- minetest.chat_send_player(pname, "Punch components to add fixed locks. (punch anything else = end)")
+ minetest.chat_send_player(pname, attrans("Punch components to add fixed locks. (punch anything else = end)"))
minetest.close_formspec(pname, formname)
return
elseif fields.flk_clear then
@@ -709,7 +713,7 @@ function advtrains.interlocking.show_tcb_marker(pos)
if ts then
itex[connid] = ts.name or tcbs.ts_id or "???"
else
- itex[connid] = "--EOI--"
+ itex[connid] = "--kon.zab.ob.--"
end
end
@@ -769,11 +773,11 @@ function advtrains.interlocking.check_route_valid(route, sigd)
while c_sigd and i<=#route do
c_tcbs = ildb.get_tcbs(c_sigd)
if not c_tcbs then
- return false, "No TCBS at "..sigd_to_string(c_sigd)
+ return false, attrans("No TCBS at @1", sigd_to_string(c_sigd))
end
c_ts_id = c_tcbs.ts_id
if not c_ts_id then
- return false, "No track section adjacent to "..sigd_to_string(c_sigd)
+ return false, attrans("No track section adjacent to @1", sigd_to_string(c_sigd))
end
c_ts = ildb.get_ts(c_ts_id)
@@ -783,7 +787,7 @@ function advtrains.interlocking.check_route_valid(route, sigd)
for pts, state in pairs(c_rseg.locks) do
local pos = advtrains.decode_pos(pts)
if not advtrains.is_passive(pos) then
- return false, "No passive component for lock at "..pts
+ return false, attrans("No passive component for lock at @1", pts)
end
end
end
@@ -792,7 +796,7 @@ function advtrains.interlocking.check_route_valid(route, sigd)
if nvar then
local re_tcbs = ildb.get_tcbs({p = nvar.p, s = (nvar.s==1) and 2 or 1})
if not re_tcbs or not re_tcbs.ts_id or re_tcbs.ts_id~=c_ts_id then
- return false, "TCB at "..minetest.pos_to_string(nvar.p).." has different section than previous TCB."
+ return false, attrans("TCB at @1 has different section than previous TCB.", minetest.pos_to_string(nvar.p))
end
end
-- advance
@@ -801,11 +805,11 @@ function advtrains.interlocking.check_route_valid(route, sigd)
end
-- check end TCB
if not c_sigd then
- return false, "Final TCBS unset (legacy-style buffer route)"
+ return false, attrans("Final TCBS unset (legacy-style buffer route)")
end
c_tcbs = ildb.get_tcbs(c_sigd)
if not c_tcbs then
- return false, "Final TCBS missing at "..sigd_to_string(c_sigd)
+ return false, attrans("Final TCBS missing at @1", sigd_to_string(c_sigd))
end
return true, nil, c_sigd
end
@@ -827,7 +831,8 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, calle
if not tcbs.signal then return end
if not tcbs.routes then tcbs.routes = {} end
-
+ if not tcbs.signal_name then tcbs.signal_name = minetest.pos_to_string(sigd.p) end
+
local form = "size[7,10]label[0.5,0.5;"..attrans("Signal at @1", minetest.pos_to_string(sigd.p)).."]"
form = form.."field[0.8,1.5;5.2,1;name;"..attrans("Signal name")..";"..minetest.formspec_escape(tcbs.signal_name).."]"
form = form.."button[5.5,1.2;1,1;setname;"..attrans("Set").."]"
@@ -878,35 +883,35 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, calle
end
strtab[#strtab+1] = clr .. minetest.formspec_escape(rname)
end
- form = form.."label[0.5,2.5;Routes:]"
+ form = form.."label[0.5,2.5;"..attrans("Routes:").."]"
form = form.."textlist[0.5,3;5,3;rtelist;"..table.concat(strtab, ",")
if sel_rte then
form = form .. ";" .. sel_rte .."]"
- form = form.."button[0.5,6; 5,1;setroute;Set Route]"
- form = form.."button[0.5,7;2,1;dsproute;Show]"
+ form = form.."button[0.5,6; 5,1;setroute;"..attrans("Set Route").."]"
+ form = form.."button[0.5,7;2,1;dsproute;"..attrans("Show").."]"
if hasprivs then
- form = form.."button[5.5,3.3;1,0.3;setarsdefault;D]tooltip[setarsdefault;Set ARS default route]"
- form = form.."button[3.5,7;2,1;editroute;Edit]"
+ form = form.."button[5.5,3.3;1,0.3;setarsdefault;Vých]tooltip[setarsdefault;"..attrans("Set ARS default route").."]"
+ form = form.."button[3.5,7;2,1;editroute;"..attrans("Edit").."]"
if sel_rte > 1 then
form = form .. "button[5.5,4;1,0.3;moveup;↑]"
end
if sel_rte < #strtab then
form = form .. "button[5.5,4.7;1,0.3;movedown;↓]"
end
- form = form.."button[5.5,5.4;1,0.3;delroute;X]tooltip[delroute;Delete this route]"
+ form = form.."button[5.5,5.4;1,0.3;delroute;X]tooltip[delroute;"..attrans("Delete this route").."]"
end
else
form = form .. "]"
if tcbs.ars_disabled then
- form = form.."label[0.5,6 ;NOTE: ARS is disabled.]"
- form = form.."label[0.5,6.5;Routes are not automatically set.]"
+ form = form.."label[0.5,6 ;"..attrans("NOTE: ARS is disabled.").."]"
+ form = form.."label[0.5,6.5;"..attrans("Routes are not automatically set.").."]"
end
end
if hasprivs then
- form = form.."button[0.5,8;2.5,1;smartroute;Smart Route]"
- form = form.."button[ 3,8;2.5,1;newroute;New (Manual)]"
- form = form..string.format("checkbox[0.5,8.75;ars;Automatic routesetting;%s]", not tcbs.ars_disabled)
- form = form..string.format("checkbox[0.5,9.25;dstarstrig;Distant signal triggers ARS;%s]", not tcbs.no_dst_ars_trig)
+ form = form.."button[0.5,8;2.5,1;smartroute;"..attrans("Smart Route").."]"
+ form = form.."button[ 3,8;2.5,1;newroute;"..attrans("New (Manual)").."]"
+ form = form..string.format("checkbox[0.5,8.75;ars;"..attrans("Automatic routesetting")..";%s]", not tcbs.ars_disabled)
+ form = form..string.format("checkbox[0.5,9.25;dstarstrig;"..attrans("Distant signal triggers ARS")..";%s]", not tcbs.no_dst_ars_trig)
end
else
-- no route is active, and no route is so far defined
@@ -914,19 +919,19 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, calle
local caps = advtrains.interlocking.signal.get_signal_cap_level(tcbs.signal)
if caps >= 4 then
-- offer user the "block signal mode"
- form = form.."label[0.5,2.5;No routes are yet defined.]"
+ form = form.."label[0.5,2.5;"..attrans("No routes are yet defined.").."]"
if hasprivs then
- form = form.."button[0.5,4;2.5,1;smartroute;Smart Route]"
- form = form.."button[ 3,4;2.5,1;newroute;New (Manual)]"
+ form = form.."button[0.5,4;2.5,1;smartroute;"..attrans("Smart Route").."]"
+ form = form.."button[ 3,4;2.5,1;newroute;"..attrans("New (Manual)").."]"
end
elseif caps >= 3 then
-- it's a buffer!
- form = form.."label[0.5,2.5;This is an always-halt signal (e.g. a buffer)\n"
- .."No routes can be set from here.]"
+ form = form.."label[0.5,2.5;Tento signál vždy ukazuje červenou.\n"
+ .."Vlakové cesty odsud nemohou být nastaveny.]"
else
-- signal caps say it cannot be route start/end
- form = form.."label[0.5,2.5;This is a pure distant signal\n"
- .."No route is currently set through.]"
+ form = form.."label[0.5,2.5;Toto je vzdálená předzvěst.\n"
+ .."Aktuálně tudy není nastavena vlaková cesta.]"
end
end
@@ -1059,7 +1064,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
if fields.delroute and hasprivs then
if tcbs.routes[sel_rte] and tcbs.routes[sel_rte].ars then
- minetest.chat_send_player(pname, "Cannot delete route which has ARS rules, please review and then delete through edit dialog!")
+ minetest.chat_send_player(pname, attrans("Cannot delete route which has ARS rules, please review and then delete through edit dialog!"))
else
table.remove(tcbs.routes,sel_rte)
end
@@ -1069,6 +1074,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.ars then
tcbs.ars_disabled = not minetest.is_yes(fields.ars)
+ local action
+ if tcbs.ars_disabled then
+ action = "disabled"
+ else
+ action = "enabled"
+ end
+ core.log("action", pname.." "..action.." ARS at "..pts)
end
if fields.dstarstrig then
diff --git a/advtrains_interlocking/tool.lua b/advtrains_interlocking/tool.lua
index 7ccab46..c8f8521 100644
--- a/advtrains_interlocking/tool.lua
+++ b/advtrains_interlocking/tool.lua
@@ -5,17 +5,17 @@ local ilrs = advtrains.interlocking.route
local function node_right_click(pos, pname, player)
if advtrains.is_passive(pos) then
- local form = "size[7,5]label[0.5,0.5;Route lock inspector]"
+ local form = "size[7,5]label[0.5,0.5;Průzkumník zámků]"
local pts = advtrains.encode_pos(pos)
local rtl = ilrs.has_route_lock(pts)
if rtl then
- form = form.."label[0.5,1;Route locks currently put:\n"..rtl.."]"
- form = form.."button_exit[0.5,3.5; 5,1;clear;Clear]"
+ form = form.."label[0.5,1;Právě uzamčeno:\n"..rtl.."]"
+ form = form.."button_exit[0.5,3.5; 5,1;clear;Odemknout vše]"
else
- form = form.."label[0.5,1;No route locks set]"
- form = form.."button_exit[0.5,3.5; 5,1;emplace;Emplace manual lock]"
+ form = form.."label[0.5,1;Nic není uzamčeno]"
+ form = form.."button_exit[0.5,3.5; 5,1;emplace;Uzamknout ručně]"
end
minetest.show_formspec(pname, "at_il_rtool_"..pts, form)
@@ -25,7 +25,7 @@ local function node_right_click(pos, pname, player)
-- If not a turnout, check the track section and show a form
local node_ok, conns, rail_y=advtrains.get_rail_info_at(pos)
if not node_ok then
- minetest.chat_send_player(pname, "Node is not a track!")
+ minetest.chat_send_player(pname, "Tento blok není kolej!")
return
end
if advtrains.interlocking.db.get_tcb(pos) then
@@ -37,14 +37,14 @@ local function node_right_click(pos, pname, player)
if ts_id then
advtrains.interlocking.show_ts_form(ts_id, pname)
else
- minetest.chat_send_player(pname, "No track section at this location!")
+ minetest.chat_send_player(pname, "Zde není zabezpečený traťový úsek!")
end
end
local function node_left_click(pos, pname, player)
local node_ok, conns, rail_y=advtrains.get_rail_info_at(pos)
if not node_ok then
- minetest.chat_send_player(pname, "Node is not a track!")
+ minetest.chat_send_player(pname, "Tento blok není kolej!")
return
end
@@ -62,13 +62,14 @@ local function node_left_click(pos, pname, player)
advtrains.interlocking.db.update_rs_cache(ts_id)
advtrains.interlocking.highlight_track_section(pos)
else
- minetest.chat_send_player(pname, "No track section at this location!")
+ minetest.chat_send_player(pname, "Zde není zabezpečený traťový úsek!")
end
end
minetest.register_craftitem("advtrains_interlocking:tool",{
- description = "Interlocking tool\nPunch: Highlight track section\nPlace: check route locks/show track section info",
+ description = "ovladač traťového zabezpečení",
+ _ch_help = "levý klik: zvýraznit traťový úsek\npravý klik: prozkoumat/zkontrolovat zámky nebo zobrazit informace o traťovém úseku",
groups = {cracky=1}, -- key=name, value=rating; rating=1..3.
inventory_image = "at_il_tool.png",
wield_image = "at_il_tool.png",
diff --git a/advtrains_signals_ks/init.lua b/advtrains_signals_ks/init.lua
index 9c59401..fffafd0 100644
--- a/advtrains_signals_ks/init.lua
+++ b/advtrains_signals_ks/init.lua
@@ -89,38 +89,38 @@ end
local mainaspects_main = {
{
name = "proceed",
- description = "Proceed",
+ description = "Volno",
zs3 = "off"
},
{
name = "shunt",
- description = "Shunt",
+ description = "Posun",
zs3 = "off",
shunt = true,
},
{
name = "proceed_16",
- description = "Proceed (speed 16)",
+ description = "Volno (rychlost 16)",
zs3 = "16",
},
{
name = "proceed_12",
- description = "Proceed (speed 12)",
+ description = "Volno (rychlost 12)",
zs3 = "12",
},
{
name = "proceed_8",
- description = "Proceed (speed 8)",
+ description = "Volno (rychlost 8)",
zs3 = "8",
},
{
name = "proceed_6",
- description = "Proceed (speed 6)",
+ description = "Volno (rychlost 6)",
zs3 = "6",
},
{
name = "proceed_4",
- description = "Proceed (speed 4)",
+ description = "Volno (rychlost 4)",
zs3 = "4",
},
}
@@ -154,7 +154,7 @@ end
local mainaspects_dst = {
{
name = "expectclear",
- description = "Expect Clear",
+ description = "Očekávej volno",
},
}
@@ -176,7 +176,7 @@ end
local mainaspects_ra = {
{
name = "shunt",
- description = "Shunt",
+ description = "Posun",
shunt = true,
},
}
@@ -264,6 +264,7 @@ for _, rtab in ipairs({
on_rightclick = advtrains.interlocking.signal.on_rightclick,
can_dig = advtrains.interlocking.signal.can_dig,
after_dig_node = advtrains.interlocking.signal.after_dig,
+ after_place_node = advtrains.after_place_signal,
})
-- rotatable by trackworker
end
@@ -302,7 +303,7 @@ for _, rtab in ipairs({
}
end
minetest.register_node("advtrains_signals_ks:vs_"..typ.."_"..rot, {
- description = "Ks Distant Signal",
+ description = "předzvěst KS",
drawtype = "mesh",
mesh = "advtrains_signals_ks_distant_smr"..rot..".obj",
tiles = {"advtrains_signals_ks_mast.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_head.png", tile},
@@ -337,6 +338,7 @@ for _, rtab in ipairs({
on_rightclick = advtrains.interlocking.signal.on_rightclick,
can_dig = advtrains.interlocking.signal.can_dig,
after_dig_node = advtrains.interlocking.signal.after_dig,
+ after_place_node = advtrains.after_place_signal,
})
-- rotatable by trackworker
end
@@ -354,7 +356,7 @@ for _, rtab in ipairs({
afunc = function() return prts.asp end
end
minetest.register_node("advtrains_signals_ks:ra_"..typ.."_"..rot, {
- description = "Ks Shunting Signal",
+ description = "posunové návěstidlo KS",
drawtype = "mesh",
mesh = "advtrains_signals_ks_sht_smr"..rot..".obj",
tiles = {"advtrains_signals_ks_mast.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_ltm_"..typ..".png"},
@@ -392,6 +394,7 @@ for _, rtab in ipairs({
on_rightclick = advtrains.interlocking.signal.on_rightclick,
can_dig = advtrains.interlocking.signal.can_dig,
after_dig_node = advtrains.interlocking.signal.after_dig,
+ after_place_node = advtrains.after_place_signal,
})
-- rotatable by trackworker
end
@@ -432,27 +435,77 @@ for _, rtab in ipairs({
on_rightclick = advtrains.interlocking.signal.on_rightclick,
can_dig = advtrains.interlocking.signal.can_dig,
after_dig_node = advtrains.interlocking.signal.after_dig,
+ after_place_node = advtrains.after_place_signal,
})
-- rotatable by trackworker
--TODO add rotation using trackworker
end
for typ, prts in pairs {
- ["hfs"] = {asp = {main = false, shunt = false}, n = "pam", mesh = "_hfs", owntile = true},
- ["pam"] = {asp = {main = -1, shunt = false, proceed_as_main = true}, n = "ne4"},
- ["ne4"] = {asp = {}, n = "ne3x1", mesh="_ne4", owntile = true},
- ["ne3x1"] = {asp = {}, n = "ne3x2", mesh="_ne3", owntile = true},
- ["ne3x2"] = {asp = {}, n = "ne3x3", mesh="_ne3", owntile = true},
- ["ne3x3"] = {asp = {}, n = "ne3x4", mesh="_ne3", owntile = true},
- ["ne3x4"] = {asp = {}, n = "ne3x5", mesh="_ne3", owntile = true},
- ["ne3x5"] = {asp = {}, n = "hfs", mesh="_ne3", owntile = true},
+ ["hfs"] = {
+ asp = {main = false, shunt = false},
+ n = "pam",
+ --[[mesh = "_hfs",]]
+ name = "železniční návěst: posun zakázán",
+ tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_hfs.png^[makealpha:255,255,255)",
+ },
+ ["pam"] = {
+ asp = {main = -1, shunt = false, proceed_as_main = true},
+ n = "ne4",
+ name = "železniční návěst: posun pokračuje jako normální vlak",
+ tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_pam.png^[makealpha:255,255,255)"
+ },
+ ["ne4"] = {
+ asp = {},
+ n = "ne3x1",
+ mesh="_ne4",
+ name = "železniční návěst: ne4",
+ tile2 = "advtrains_signals_ks_sign_ne4.png",
+ inventory_image = "[combine:20x20:6,0=\\[combine\\:8x20\\:0,0=advtrains_signals_ks_sign_ne4.png",
+ },
+ ["ne3x1"] = {
+ asp = {},
+ n = "ne3x2",
+ mesh="_ne3",
+ name = "železniční návěst: ne3x1",
+ tile2 = "advtrains_signals_ks_sign_ne3x1.png",
+ inventory_image = "[combine:16x16:6,0=advtrains_signals_ks_sign_ne3x1.png\\^[resize\\:4x16",
+ },
+ ["ne3x2"] = {
+ asp = {},
+ n = "ne3x3",
+ mesh="_ne3",
+ name = "železniční návěst: ne3x2",
+ tile2 = "advtrains_signals_ks_sign_ne3x2.png",
+ inventory_image = "[combine:16x16:6,0=advtrains_signals_ks_sign_ne3x2.png\\^[resize\\:4x16",
+ },
+ ["ne3x3"] = {
+ asp = {},
+ n = "ne3x4",
+ mesh="_ne3",
+ name = "železniční návěst: ne3x3",
+ tile2 = "advtrains_signals_ks_sign_ne3x3.png",
+ inventory_image = "[combine:16x16:6,0=advtrains_signals_ks_sign_ne3x3.png\\^[resize\\:4x16",
+ },
+ ["ne3x4"] = {
+ asp = {},
+ n = "ne3x5",
+ mesh="_ne3",
+ name = "železniční návěst: ne3x4",
+ tile2 = "advtrains_signals_ks_sign_ne3x4.png",
+ inventory_image = "[combine:16x16:6,0=advtrains_signals_ks_sign_ne3x4.png\\^[resize\\:4x16",
+ },
+ ["ne3x5"] = {
+ asp = {},
+ n = "hfs",
+ mesh="_ne3",
+ name = "železniční návěst: ne3x5",
+ tile2 = "advtrains_signals_ks_sign_ne3x5.png",
+ inventory_image = "[combine:16x16:6,0=advtrains_signals_ks_sign_ne3x5.png\\^[resize\\:4x16",
+ },
} do
local mesh = prts.mesh or ""
- local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)"
- if prts.owntile then
- tile2 = "advtrains_signals_ks_sign_"..typ..".png"
- end
- register_sign("sign", typ, prts.n, "Signal Sign", "sign"..mesh, tile2, "hfs", "advtrains_signals_ks_sign_lf7.png", prts.asp)
+ register_sign("sign", typ, prts.n, prts.name, "sign"..mesh, prts.tile2, typ, prts.inventory_image or prts.tile2, prts.asp)
end
for typ, prts in pairs {
@@ -470,7 +523,8 @@ for _, rtab in ipairs({
if typ == "e" then
tile2 = "advtrains_signals_ks_sign_zs10.png"
end
- register_sign("sign", typ, prts.n, attrans("Permanent local speed restriction sign").." ("..(typ == "e" and attrans("end") or typ) ..")", "sign"..mesh, tile2, "8", "advtrains_signals_ks_sign_8.png^[invert:rgb", prts.asp)
+ register_sign("sign", typ, prts.n, attrans("Permanent local speed restriction sign").." ("..(typ == "e" and attrans("end") or typ) ..")",
+ "sign"..mesh, tile2, "8", "advtrains_signals_ks_sign_8.png^[invert:rgb", prts.asp)
end
for typ, prts in pairs {
@@ -483,7 +537,8 @@ for _, rtab in ipairs({
} do
local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)"..(typ == "e" and "" or "^[multiply:orange")
local inv = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_8.png^[makealpha:255,255,255)^[multiply:orange"
- register_sign("sign_lf", typ, prts.n, "Temporary local speed restriction sign", "sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "temp"})
+ register_sign("sign_lf", typ, prts.n, attrans("Temporary local speed restriction sign").." ("..(typ == "e" and attrans("end") or typ) ..")",
+ "sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "temp"})
end
for typ, prts in pairs {
@@ -496,7 +551,7 @@ for _, rtab in ipairs({
} do
local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)"
local inv = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_8.png^[makealpha:255,255,255)"
- register_sign("sign_lf7", typ, prts.n, attrans("Line speed restriction sign").." ("..(typ == "20" and attrans("end") or typ) ..")",
+ register_sign("sign_lf7", typ, prts.n, attrans("Line speed restriction sign").." ("..(typ == "e" and attrans("end") or typ) ..")",
"sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "line"})
end
@@ -528,7 +583,8 @@ for _, rtab in ipairs({
save_in_at_nodedb = 1,
not_in_creative_inventory = (rtab.ici and prts.ici) and 0 or 1,
},
- after_dig_node = function(pos) advtrains.ndb.update(pos) end
+ after_dig_node = function(pos) advtrains.ndb.update(pos) end,
+ after_place_node = advtrains.after_place_signal,
}
-- Zs 3
@@ -584,6 +640,7 @@ for _, rtab in ipairs({
trackworker_rot_incr_param2 = (rot=="60")
},
drop = "advtrains_signals_ks:mast_mast_0",
+ after_place_node = advtrains.after_place_signal,
})
--TODO add rotation using trackworker
end
@@ -609,6 +666,14 @@ minetest.register_craft({
})
minetest.register_craft({
+ output = 'advtrains_signals_ks:vs_slow_0 10',
+ recipe = {
+ {'default:steel_ignot', 'default:steel_ingot'},
+ {'dye:green', 'dye:yellow'},
+ },
+})
+
+minetest.register_craft({
output = "advtrains_signals_ks:ra_danger_0 2",
recipe = {
{'dye:red', 'dye:white', 'dye:red'},
@@ -666,11 +731,41 @@ minetest.register_craft{
}
minetest.register_craft{
- output = "advtrains_signals_ks:sign_lf_8_0 1",
+ output = "advtrains_signals_ks:sign_ne4_0 1",
recipe = {{"advtrains_signals_ks:sign_pam_0"}}
}
minetest.register_craft{
+ output = "advtrains_signals_ks:sign_ne3x1_0 1",
+ recipe = {{"advtrains_signals_ks:sign_ne4_0"}}
+}
+
+minetest.register_craft{
+ output = "advtrains_signals_ks:sign_ne3x2_0 1",
+ recipe = {{"advtrains_signals_ks:sign_ne3x1_0"}}
+}
+
+minetest.register_craft{
+ output = "advtrains_signals_ks:sign_ne3x3_0 1",
+ recipe = {{"advtrains_signals_ks:sign_ne3x2_0"}}
+}
+
+minetest.register_craft{
+ output = "advtrains_signals_ks:sign_ne3x4_0 1",
+ recipe = {{"advtrains_signals_ks:sign_ne3x3_0"}}
+}
+
+minetest.register_craft{
+ output = "advtrains_signals_ks:sign_ne3x5_0 1",
+ recipe = {{"advtrains_signals_ks:sign_ne3x4_0"}}
+}
+
+minetest.register_craft{
+ output = "advtrains_signals_ks:sign_lf_8_0 1",
+ recipe = {{"advtrains_signals_ks:sign_ne3x5_0"}}
+}
+
+minetest.register_craft{
output = "advtrains_signals_ks:sign_lf7_8_0 1",
recipe = {{"advtrains_signals_ks:sign_lf_8_0"}}
}
diff --git a/advtrains_train_track/init.lua b/advtrains_train_track/init.lua
index c773839..3b93fdb 100644
--- a/advtrains_train_track/init.lua
+++ b/advtrains_train_track/init.lua
@@ -607,7 +607,7 @@ advtrains.register_tracks("default", {
models_prefix="advtrains_dtrack",
models_suffix=".obj",
shared_texture="advtrains_dtrack_shared.png",
- second_texture="default_gravel.png^[multiply:#956338",
+ second_texture="ch_extras_gravel.png",
description=attrans("Track with Railway Gravel"),
formats=advtrains.default_slope_formats.t_30deg_slope,
}, advtrains.ap.t_30deg_slope)
@@ -720,12 +720,12 @@ local function show_fc_formspec(pos,player)
local form = 'formspec_version[4]'..
'size[10,5]'..
- 'label[0.5,0.4;Advtrains Loading/Unloading Track]'..
- 'label[0.5,1.1;Set the code to match against the wagon\'s freight code]'..
- 'label[0.5,1.6;A blank field matches all wagons (default)]'..
- 'label[0.5,2.1;Use code # to disable the track section]'..
- 'field[0.5,3;5.5,1;fc;FC;'..minetest.formspec_escape(fc)..']'..
- 'button[6.5,3;3,1;save;Submit]'
+ 'label[0.5,0.4;kolej nakládání/vykládání]'..
+ 'label[0.5,1.1;Nastavte nákladní kód. Vagony se zadaným kódem budou naloženy/vyloženy.]'..
+ 'label[0.5,1.6;Prázdné pole znamená všechny vagony.]'..
+ 'label[0.5,2.1;Pro vypnutí zadejte kód #.]'..
+ 'field[0.5,3;5.5,1;fc;kód:;'..minetest.formspec_escape(fc)..']'..
+ 'button[6.5,3;3,1;save;Uložit]'
minetest.show_formspec(pname, "at_load_unload_"..advtrains.encode_pos(pos), form)
end
@@ -735,13 +735,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
local pos = advtrains.decode_pos(pe)
if pos then
if minetest.is_protected(pos, pname) then
- minetest.chat_send_player(pname, "Position is protected!")
+ minetest.chat_send_player(pname, "Pozice je zastřežená!")
return
end
if fields.save then
minetest.get_meta(pos):set_string("fc",tostring(fields.fc))
- minetest.chat_send_player(pname,"Freight code set: "..tostring(fields.fc))
+ minetest.chat_send_player(pname,"Nákladní kód nastaven: "..tostring(fields.fc))
show_fc_formspec(pos,player)
end
end