diff options
Diffstat (limited to 'advtrains_interlocking')
23 files changed, 7507 insertions, 223 deletions
diff --git a/advtrains_interlocking/autonaming.lua b/advtrains_interlocking/autonaming.lua index f88ccbd..78886c0 100644 --- a/advtrains_interlocking/autonaming.lua +++ b/advtrains_interlocking/autonaming.lua @@ -1,6 +1,8 @@ -- autonaming.lua -- Automatically set names of signals (and maybe track sections) based on numbering +-- Get current translator +local S = advtrains.interlocking.translate local function find_highest_count(prefix) local cnt = 0 @@ -34,10 +36,10 @@ function advtrains.interlocking.set_autoname_prefix(pname, prefix) -- scan database for this prefix to find out the highest count local count = find_highest_count(prefix) player_prefix_info[pname] = { prefix = prefix, count = count} - return true, "Prefix set, next signal name will be: ".. advtrains.interlocking.get_next_autoname(pname, true) + return true, S("Prefix set, next signal name will be: @1", advtrains.interlocking.get_next_autoname(pname, true)) else player_prefix_info[pname] = nil - return true, "Prefix unset, signals are not auto-named for you!" + return true, S("Prefix unset, signals are not auto-named for you!") end end @@ -62,7 +64,7 @@ end minetest.register_chatcommand("at_nameprefix", { params = "<prefix>", - description = "Sets the current prefix for automatically naming interlocking components. Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on", + description = S("Sets the current prefix for automatically naming interlocking components. Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on"), privs = {interlocking = true}, func = advtrains.interlocking.set_autoname_prefix, }) diff --git a/advtrains_interlocking/database.lua b/advtrains_interlocking/database.lua index 5e35dba..bd90e36 100644 --- a/advtrains_interlocking/database.lua +++ b/advtrains_interlocking/database.lua @@ -55,6 +55,9 @@ Every time a repair operation takes place, and on every track edit operation, th ]]-- +-- Get current translator +local S = advtrains.interlocking.translate + local TRAVERSER_LIMIT = 1000 @@ -380,7 +383,7 @@ function ildb.check_and_repair_ts_at_pos(pos, tcb_connid, notify_pname, force_cr if ts_id ~= tcbs_ts_id then -- inconsistency is found, repair it --atdebug("check_and_repair_ts_at_pos: Inconsistency is found!") - tsrepair_notify(notify_pname, "Track section inconsistent here, repairing...") + tsrepair_notify(notify_pname, S("Track section inconsistent here, repairing...")) return ildb.repair_ts_merge_all(all_tcbs, force_create, notify_pname) -- Step2 check is no longer necessary since we just created that new section end @@ -409,7 +412,7 @@ function ildb.check_and_repair_ts_at_pos(pos, tcb_connid, notify_pname, force_cr -- That means it is sufficient to compare the LENGTHS of both lists, if one is longer then it is inconsistent if #ts.tc_breaks ~= #all_tcbs then --atdebug("check_and_repair_ts_at_pos: Partition is found!") - tsrepair_notify(notify_pname, "Track section partition found, repairing...") + tsrepair_notify(notify_pname, S("Track section partition found, repairing...")) return ildb.repair_ts_merge_all(all_tcbs, force_create, notify_pname) end --tsrepair_notify(notify_pname, "Found section", ts.name or ts_id, "here.") @@ -537,7 +540,7 @@ function ildb.repair_ts_merge_all(all_tcbs, force_create, notify_pname) end -- Create a new fresh track section with all the TCBs we have in our collection local new_ts_id, new_ts = ildb.create_ts_from_tcb_list(all_tcbs) - tsrepair_notify(notify_pname, "Created track section",new_ts_id,"from",#all_tcbs,"TCBs") + tsrepair_notify(notify_pname, S("Created track section @1 from @2 TCBs", new_ts_id, #all_tcbs)) return new_ts_id end @@ -738,7 +741,8 @@ local function recursively_find_routes(s_pos, s_connid, locks_found, result_tabl local end_pkey = advtrains.encode_pos(pos) --atdebug("Found end TCB", pos, end_pkey,", returning") if result_table[end_pkey] then - atwarn("While caching track section routing, found multiple route paths within same track section. Only first one found will be used") + --atwarn("While caching track section routing, found multiple route paths within same track section. Only first one found will be used") + -- this warning appears too often and is typically harmless else result_table[end_pkey] = table.copy(locks_found) end @@ -784,9 +788,9 @@ function ildb.update_rs_cache(ts_id) end end -- warn about superfluous entry - for sup_end_pkey, sup_entry in pairs(result_table) do - atwarn("In update_rs_cache for section",ts_id,"found superfluous endpoint",sup_end_pkey,"->",sup_entry) - end + --for sup_end_pkey, sup_entry in pairs(result_table) do + -- atwarn("In update_rs_cache for section",ts_id,"found superfluous endpoint",sup_end_pkey,"->",sup_entry) + --end -- this warning appears too often and is typically harmless end ts.rs_cache = rscache --atdebug("== Done update_rs_cache for ",ts_id, "result:",rscache) diff --git a/advtrains_interlocking/init.lua b/advtrains_interlocking/init.lua index ee08c30..c30a22f 100644 --- a/advtrains_interlocking/init.lua +++ b/advtrains_interlocking/init.lua @@ -3,6 +3,14 @@ advtrains.interlocking = {} +-- Initialize internationalization (using ywang's poconvert) +advtrains.poconvert.from_flat("advtrains_interlocking") +-- ask engine for translator instance, this will load the translation files +advtrains.interlocking.translate = core.get_translator("advtrains_interlocking") + +-- Get current translator +local S = advtrains.interlocking.translate + advtrains.SHUNT_SPEED_MAX = 6 function advtrains.interlocking.sigd_equal(sigd, cmp) @@ -30,4 +38,4 @@ dofile(modpath.."ars.lua") dofile(modpath.."tsr_rail.lua") -minetest.register_privilege("interlocking", {description = "Can set up track sections, routes and signals.", give_to_singleplayer = true}) +minetest.register_privilege("interlocking", {description = S("Can set up track sections, routes and signals"), give_to_singleplayer = true}) diff --git a/advtrains_interlocking/locale/advtrains_interlocking.de.tr b/advtrains_interlocking/locale/advtrains_interlocking.de.tr new file mode 100644 index 0000000..2c67a9f --- /dev/null +++ b/advtrains_interlocking/locale/advtrains_interlocking.de.tr @@ -0,0 +1,191 @@ +# textdomain: advtrains_interlocking +Prefix set, next signal name will be: @1=Präfix gesetzt, nächster Signalname: @1 +Prefix unset, signals are not auto-named for you!=Präfix gelöscht, automatische Signalbenennung deaktiviert! +Sets the current prefix for automatically naming interlocking components. Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on=Setze einen Präfix für die automatische Benennung von neu hinzugefügten Signalen. Beispiel: '/at_nameprefix TEST' - Signale werden mit TEST1, TEST2 usw. benannt +Created track section @1 from @2 TCBs=Gleisabschnitt @1 aus @2 TCBs erstellt +Track section inconsistent here, repairing...=Gleisabschnitt ist inkonsistent, repariere... +Track section partition found, repairing...=Gleisabschnitt partitioniert, repariere... +Can set up track sections, routes and signals=Darf Gleisabschnitte, Fahrstraßen und Signale bearbeiten +@1 Terminal @2=@1 Ziel @2 +@1 is held in @2 position when this route is set and freed =@1 wird durch die Fahrstraße in Position @2 festgelegt +@1 is no longer affected when this route is set.=@1 wird nicht mehr durch die Fahrstraße festgelegt +Added track section @1 to the route.=Gleisabschnitt @1 zur Fahrstraße hinzugefügt. +Advance to next route section=Nächsten Gleisabschnitt hinzufügen +Advance/Complete Route=Fahrstraße fortsetzen/beenden +Advancing over next section is=Fortsetzen über nächsten Gleisabschnitt hinaus +Cancel if you are unsure!=Abbrechen, wenn Sie unsicher sind! +Cancel route programming=Fahrstraßenprogrammierung abbrechen +Cannot program route without a target=Kann keine Fahrstraße ohne Ziel programmieren +End of interlocking=Ende der Zugsicherung +Enter Route Name=Fahrstraßennamen eingeben +Finish programming route=Fahrstraße abschließen +Finish route HERE=Fahrstraße HIER abschließen +Finish route at end of NEXT section=Fahrstraße am Ende des NÄCHSTEN Abschnitts abschließen +Fixed in state @1 by route @2 (punch to unfix)=Festgelegt in Zustand @1 durch Fahrstraße @2 (Schlagen um freizugeben) +Fixed in state @1 by route @2 until segment #@3 is freed.=Festgelegt in Zustand @1 durch Fahrstraße @2, bis Segment @3 freigegeben wird. +Insufficient privileges to use this!=Unzureichende Privilegien, um dies zu benutzen! +Next section is diverging (>2 TCBs)=Nächster Abschnitt enthält eine Weiche (>2 TCBs) +Route discarded.=Fahrstraße verworfen. +Route ends at signal:=Fahrstraße endet bei Signal: +Route leads into=Fahrstraße führt in +Route programming mode active. Punch TCBs to add route segments, punch turnouts to lock them.=Fahrstraßenprogrammierung aktiv. Schlage Gleisabschnittsgrenzen (TCB) um Segmente hinzuzufügen, schlage Weichen um sie festzulegen. +Route section @1 removed.=Fahrstraßenabschnitt @1 entfernt. +Routes should in most cases end at signals.=Fahrstraßen sollten normalerweise an einem Signal enden. +Save Route=Fahrstraße speichern +Step back one section=Einen Abschnitt zurück +Successfully programmed route.=Fahrstraße erfolgreich programmiert. +The origin TCB has become unknown during programming. Try again.=Der Start-TCB ist unbekannt geworden. Versuche nochmal. +This TCB is not suitable as=Diese Gleisabschnittsgrenze ist +This TCB is unconfigured, you first need to assign it to a rail=Diese Gleisabschnittsgrenze ist noch nicht konfiguiert, sie muss erst zugewiesen werden +WARNING: Route does not end at a signal.=ACHTUNG: Fahrstraße endet nicht an einem Signal. +[Route programming] =[Fahrstraßenprogrammierung] +impossible at this place.=ist hier nicht möglich. +non-interlocked area=nicht-überwachtes Gebiet +route continuation.=nicht als Fortsetzung geeignet. +<< Select a route part to edit options=<< Wähle einen Abschnitt, um Optionen zu bearbeiten +<Default Aspect>=<Standardbegriff> +ARS Rule List=ARS-Regelliste +Announce distant signal=Entferntes Hauptsignal ankündigen +Back to signal=Zurück zum Signal +Call-on (section may be occupied)=Abschnitt darf belegt sein +Clone Route=Duplizieren +Delete Route=Fahrstraße löschen +Error:=Fehler: +New From Route=Neu aus dieser FS +No Signal at this TCB=Kein Signal hier +Route name=Fahrstraßenname +Route overview=Fahrstraßenübersicht +Save ARS List=ARS-Liste speichern +Section Options:=Abschnittsoptionen: +Set=Setzen +Signal Aspect:=Signalbegriff: +TCB at @1 has different section than previous TCB=TCB bei @1 hat einen anderen Gleisabschnitt als der vorherige TCB +TCB at @1 is missing=TCB bei @1 fehlt +TCB at @1 is not assigned to previous track section=TCB bei @1 ist dem vorherigen Gleisabschnitt nicht zugewiesen +Track section after @1 missing=Gleisabschnitt nach @1 fehlt +Turnout/component missing at @1=Weiche oder Komponente bei @1 fehlt +Lock conflict at @1, Held locked by:=Sperrenkonflikt bei @1, bereits gesperrt durch: +No TCB found at @1. Please update or reconfigure route!=TCB bei @1 nicht gefunden. Bitte Fahrstraße korrigieren! +No track section adjacent to @1. Please reconfigure route!=Gleisabschnitt nach @1 nicht gefunden. Bitte Fahrstraße korrigieren! +Route @1 from signal @2=Fahrstraße @1 von Signal @2 +Route @1 from signal @2, segment #@3=Fahrstraße @1 von Signal @2, Segment @3 +Section '@1' already has route set from @2:=Abschnitt '@1' bereits durch Fahrstraße von @2 belegt: +Section '@1' is occupied!=Abschnitt '@1' ist durch einen Zug belegt! +Section '@1' not found!=Abschnitt '@1' nicht gefunden! +TCB at @1 has different section than previous TCB. Please update track section or reconfigure route!=TCB bei @1 hat anderen Abschnitt als vorhergehender TCB. Bitte Fahrstraße korrigieren! +Turnout/component missing at @1. Please update track section or reconfigure route!=Weiche/Komponente bei @1 nicht gefunden. Bitte Fahrstraße korrigieren! +<assign distant>=<entf. Hauptsignal festl.> +<none>=<kein> +Assigned distant signal to the main signal at @1=Vorsignal dem Hauptsignal bei @1 zugewiesen +Assigned signal to the TCB at @1=Signal der Gleisabschnittsgrenze bei @1 zugewiesen +Clear=Leeren +Configuring Signal: Influence point of another signal is already present!=Signal einstellen: Beeinflussungspunkt eines anderen Signals bereits vorhanden! +Configuring Signal: Node is too far away. Aborted.=Signal einstellen: Block ist zu weit entfernt. Abbruch. +Configuring Signal: Please look in train's driving direction and punch rail to set influence point.=Signal einstellen: In Fahrtrichtung schauen und Gleis schlagen, um Beeinflussungspunkt zu setzen. +Configuring Signal: Successfully set influence point=Signal einstellen: Beeinflussungspunkt erfolgreich gesetzt +Configuring Signal: This is not a normal two-connection rail! Aborted.=Signal einstellen: Dies ist kein geeignetes Gleis! Abbruch. +Dst: @1=Haupts.: @1 +Influence point is not set.=Beeinflussungspunkt ist nicht gesetzt. +Influence point is set at @1.=Beeinflussungspunkt ist gesetzt bei @1. +Modify=Bearbeiten +Set distant signal: Punch the main signal to assign!=Hauptsignal zuweisen: Bitte schlage das Hauptsignal! +Set influence point=Beeinflussungspunkt setzen +Apply=Anwenden +Route search: @1 found=Fahrstraßensuche: @1 gefunden +Search further=Weitersuchen +Smartroute: No track section directly ahead!=Fahrstraßensuche: Kein Gleisabschnitt voraus! +Smartroute: TCBS or routes don't exist here!=Fahrstraßensuche: Gleisabschnittsgrenze oder Fahrstraßen existieren hier nicht! + (invalid)=(ungültig) +@1 locks in state @2=@1 gesperrt in Position @2 +A route is requested from this signal:=Fahrstraße von diesem Signal: +Add locks=Sperre hinzu. +Assign a signal=Signal zuweisen +Automatic Working is active.=Automatischer Blockbetrieb aktiv. +Automatic routesetting=ARS (autom. Fahrstraßenauswahl) +Boundary TCBs:=Gleisabschnittsgrenzen: +Can't remove TCB: Both sides must have no signal assigned!=Kann Gleisabschnittsgrenze nicht entfernen: mindestens eine Seite hat noch ein Signal zugewiesen! +Can't remove track, a train is here!=Kann Gleisabschnittsgrenze nicht entfernen: hier ist noch ein Zug! +Cancel=Abbruch +Cancel Route=Fahrstraße auflösen +Cannot delete route which has ARS rules, please review and then delete through edit dialog!=Fahrstraße hat ARS-Regeln, bitte überprüfe diese und lösche die Fahrstraße über den Bearbeitungsdialog! +Clear locks=Sperren löschen +Configuring TCB: Already existed at this position, it is now linked to this TCB marker=Gleisabschnittsgrenze einstellen: Existierte hier bereits, der Marker ist nun verbunden +Configuring TCB: Cannot use static signals for routesetting. Aborted.=Gleisabschnittsgrenze einstellen: statische Signale können nicht für Fahrstraßen benutzt werden. Abbruch. +Configuring TCB: Internal error, TCBS doesn't exist. Aborted.=Gleisabschnittsgrenze einstellen: Interner Fehler, TCB existiert nicht. Abbruch. +Configuring TCB: Node is too far away. Aborted.=Gleisabschnittsgrenze einstellen: Block ist zu weit entfernt. Abbruch. +Configuring TCB: Not a compatible signal. Aborted.=Gleisabschnittsgrenze einstellen: Kein kompatibles Signal. Abbruch. +Configuring TCB: Please punch the rail you want to assign this TCB to.=Gleisabschnittsgrenze einstellen: Bitte das Gleis schlagen, wo die Grenze erstellt werden soll. +Configuring TCB: Please punch the signal to assign.=Gleisabschnittsgrenze einstellen: Bitte das zuzuweisende Signal schlagen. +Configuring TCB: Successfully assigned signal.=Gleisabschnittsgrenze einstellen: Signal erfolgreich zugewiesen. +Configuring TCB: Successfully configured TCB=Gleisabschnittsgrenze einstellen: Grenze erfolgreich erstellt +Configuring TCB: This is not a normal two-connection rail! Aborted.=Gleisabschnittsgrenze einstellen: Dies ist kein geeignetes Gleis! Abbruch. +Create Interlocked Track Section=Gleisabschnitt anlegen +Delete this route=Fahrstraße löschen +Disable Automatic Working=Auto. Blockbetrieb aus +Distant signal triggers ARS=Vorsignal kann ARS auslösen +Edit=Bearbeiten +Enable Automatic Working=Automatischer Blockbetrieb +Error: TS modified, abort!=Fehler: Abschnitt verändert, Abbruch! +Final TCBS unset (legacy-style buffer route)=Letzte Abschnittsgrenze fehlt (Prellbockroute aus älterer Version) +Fixed route locks (e.g. level crossings):=Feste Fahrstraßensperren (z.B. Bahnübergang): +Link @1=Verknüpfe @1 +Link: @1=Verknüpfung: @1 +Multiple routes are requested (first available is set):=Mehrere Fahrstraßen angefragt (erste verfügbare wird eingestellt): +NOTE: ARS is disabled.=ACHTUNG: ARS deaktiviert! +New (Manual)=Neu (Manuell) +No Link=Keine Verknüpfung +No routes are yet defined.=Bisher keine Fahrstraßen definiert. +No trains on this section.=Keine Züge auf diesem Abschnitt. +Punch components to add fixed locks. (punch anything else @= end)=Schlage auf Komponenten um diese zu sperren (schlage irgendetwas anderes @= Ende) +Remove Section=Gleisabschnitt löschen +Reset section state=Gleisabschnitt zurücksetzen +Reset track section=Gleisabschnitt zurücksetzen +Reset track section @1!=Streckenabschnitt @1 zurückgesetzt! +Route has been set.=Fahrstraße ist festgelegt. +Route is re-set when a train passed.=Fahrstraße wird nach Passieren eines Zuges nicht aufgelöst. +Route is set over this signal by:=Eine Fahrstraße ist über dieses Signal gestellt von: +Route is set: =Fahrstraße ist festgelegt: +Routes are not automatically set.=Fahrstraßen werden nicht automatisch gestellt. +Routes:=Fahrstraßen: +Section holds @1 route locks.=Abschnitt hält @1 Sperren. +Section name=Name des Streckenabschnitts +Set ARS default route=Setze als ARS-Standardroute +Set Route=Fahrstraße einstellen +Setting fixed locks finished!=Feste Fahrstraßensperren hinzugefügt! +Show=Anzeigen +Show track section=Gleisabschnitt anzeigen +Side @1=Seite @1 +Signal at @1=Signal bei @1 +Signal name=Signalname +Signal on B side already assigned!=Signal auf Seite B bereits zugewiesen! +Signalling=Fahrstraßen stellen +Smart Route=Fahrstraßensuche +TCB Link: Select linked TCB now!=Gleisabschnitte verknüpfen: Zu verknüpfende Gleisabschnittsgrenze jetzt auswählen! +TCB already existed at this position, now linked to this node=Gleisabschnittsgrenze existierte hier bereits, der Block ist nun verbunden +TCB assigned to @1=Gleisabschnittsgrenze an @1 zugewiesen +This TCB has been removed. Please dig marker.=Gleisabschnittsgrenze wurde gelöscht. Bitte Marker entfernen. +This is a pure distant signal@nNo route is currently set through.=Dies ist ein reines Vorsignal@nAktuell keine Fahrstraße eingestellt. +This is an always-halt signal (e.g. a buffer)@nNo routes can be set from here.=Dies ist ein Haltsignal (z.B. Prellbock)@nVon hier aus können keine Fahrstraßen eingestellt werden. +This will clear the list of trains@nand the routesetting status of this section.@nAre you sure?=Dies löscht die Liste der Züge im Abschnitt@nsowie den Fahrstraßenstatus.@nSind Sie sicher? +This will remove the track section and set all its end points to End Of Interlocking=Dies wird den Gleisabschnitt löschen +Track Circuit Break=Gleisabschnittsgrenze +Track Circuit Break Configuration=Einstellungen der Gleisabschnittsgrenze +Track Section Detail - @1=Gleisabschnitts-Details - @1 +Trains on this section:=Züge in diesem Abschnitt +Unconfigured Track Circuit Break, right-click to assign.=Nicht konfiguierte Gleisabschnittsgrenze (TCB). Rechtsklick zum Zuweisen. +Wait for this route to be cancelled in order to do anything here.=Erst nach Auflösung dieser Fahrstraße kann von hier gestellt werden. +Waiting for route to be set...=Warten, bis Fahrstraße verfügbar ist... +Yes=Ja +You cannot modify track sections when a route is set or a train is on the section.=Abschnitt kann nicht bearbeitet werden, wenn eine Fahrstraße gesetzt ist oder der Abschnitt belegt ist. +Emplace manual lock=Manuelle Sperre setzen +Interlocking tool@nPunch: Highlight track section@nPlace: check route locks/show track section info=Zugsicherungswerkzeug@nSchlagen: Gleisabschnitte hervorheben@nPlatzieren: Gleisabschnittsinformation/Fahrstraßensperren anzeigen +No route locks set=Keine Fahrstraßensperren gehalten +No track section at this location!=Kein Gleisabschnitt gefunden! +Node is not a track!=Block ist kein Gleis! +Route lock inspector=Fahrstraßensperren-Inspektor +Route locks currently put:=Gesetzte Fahrstraßensperren: +Point Speed Restriction Track=Geschwindigkeitskontrollgleis +Point speed restriction: @1=Geschwindigkeitskontrolle: @1 +Set point speed restriction:=Setze Kontrollgeschwindigkeit: +You are not allowed to configure this track without the @1 privilege.=Sie dürfen ohne das „@1“-Privileg dieses Gleis nicht konfigurieren. +You are not allowed to configure this track.=Sie dürfen dieses Gleis nicht konfigurieren.
\ No newline at end of file diff --git a/advtrains_interlocking/locale/advtrains_interlocking.fr.tr b/advtrains_interlocking/locale/advtrains_interlocking.fr.tr new file mode 100644 index 0000000..93bbaf2 --- /dev/null +++ b/advtrains_interlocking/locale/advtrains_interlocking.fr.tr @@ -0,0 +1,191 @@ +# textdomain: advtrains_interlocking +Prefix set, next signal name will be: @1= +Prefix unset, signals are not auto-named for you!= +Sets the current prefix for automatically naming interlocking components. Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on= +Created track section @1 from @2 TCBs= +Track section inconsistent here, repairing...= +Track section partition found, repairing...= +Can set up track sections, routes and signals= +@1 Terminal @2= +@1 is held in @2 position when this route is set and freed = +@1 is no longer affected when this route is set.= +Added track section @1 to the route.= +Advance to next route section= +Advance/Complete Route= +Advancing over next section is= +Cancel if you are unsure!= +Cancel route programming= +Cannot program route without a target= +End of interlocking= +Enter Route Name= +Finish programming route= +Finish route HERE= +Finish route at end of NEXT section= +Fixed in state @1 by route @2 (punch to unfix)= +Fixed in state @1 by route @2 until segment #@3 is freed.= +Insufficient privileges to use this!=Privilèges insuffisants pour utiliser ceci ! +Next section is diverging (>2 TCBs)= +#Route discarded.=Changement d'état de l'itinéraire. +Route ends at signal:= +Route leads into= +Route programming mode active. Punch TCBs to add route segments, punch turnouts to lock them.= +Route section @1 removed.= +Routes should in most cases end at signals.= +Save Route= +Step back one section= +#Successfully programmed route.=Succès d'invalidation des routages des trains +The origin TCB has become unknown during programming. Try again.= +This TCB is not suitable as= +This TCB is unconfigured, you first need to assign it to a rail= +WARNING: Route does not end at a signal.= +[Route programming] = +impossible at this place.= +non-interlocked area= +route continuation.= +<< Select a route part to edit options= +#<Default Aspect>=Siège par défaut +ARS Rule List= +#Announce distant signal=Signal distant métro de Munich ( +Back to signal= +Call-on (section may be occupied)= +Clone Route= +Delete Route= +Error:= +New From Route= +No Signal at this TCB= +Route name= +Route overview= +Save ARS List= +Section Options:= +Set= +#Signal Aspect:=Signal +TCB at @1 has different section than previous TCB= +TCB at @1 is missing= +TCB at @1 is not assigned to previous track section= +Track section after @1 missing= +Turnout/component missing at @1= +Lock conflict at @1, Held locked by:= +No TCB found at @1. Please update or reconfigure route!= +No track section adjacent to @1. Please reconfigure route!= +Route @1 from signal @2= +Route @1 from signal @2, segment #@3= +Section '@1' already has route set from @2:= +Section '@1' is occupied!= +Section '@1' not found!= +TCB at @1 has different section than previous TCB. Please update track section or reconfigure route!= +Turnout/component missing at @1. Please update track section or reconfigure route!= +<assign distant>= +<none>= +Assigned distant signal to the main signal at @1= +Assigned signal to the TCB at @1= +Clear= +Configuring Signal: Influence point of another signal is already present!= +Configuring Signal: Node is too far away. Aborted.= +Configuring Signal: Please look in train's driving direction and punch rail to set influence point.= +Configuring Signal: Successfully set influence point= +Configuring Signal: This is not a normal two-connection rail! Aborted.= +Dst: @1= +Influence point is not set.= +Influence point is set at @1.= +Modify= +Set distant signal: Punch the main signal to assign!= +Set influence point= +Apply= +Route search: @1 found= +Search further= +Smartroute: No track section directly ahead!= +Smartroute: TCBS or routes don't exist here!= + (invalid)= +@1 locks in state @2= +A route is requested from this signal:= +Add locks= +Assign a signal= +Automatic Working is active.= +#Automatic routesetting=Routage à distance +Boundary TCBs:= +Can't remove TCB: Both sides must have no signal assigned!= +Can't remove track, a train is here!= +Cancel= +Cancel Route= +Cannot delete route which has ARS rules, please review and then delete through edit dialog!= +#Clear locks=Autorisation (procédez) +Configuring TCB: Already existed at this position, it is now linked to this TCB marker= +Configuring TCB: Cannot use static signals for routesetting. Aborted.= +Configuring TCB: Internal error, TCBS doesn't exist. Aborted.= +Configuring TCB: Node is too far away. Aborted.= +Configuring TCB: Not a compatible signal. Aborted.= +Configuring TCB: Please punch the rail you want to assign this TCB to.= +Configuring TCB: Please punch the signal to assign.= +Configuring TCB: Successfully assigned signal.= +Configuring TCB: Successfully configured TCB= +Configuring TCB: This is not a normal two-connection rail! Aborted.= +Create Interlocked Track Section= +Delete this route= +Disable Automatic Working= +Distant signal triggers ARS= +Edit= +Enable Automatic Working= +Error: TS modified, abort!= +Final TCBS unset (legacy-style buffer route)= +Fixed route locks (e.g. level crossings):= +Link @1= +Link: @1= +Multiple routes are requested (first available is set):= +NOTE: ARS is disabled.= +New (Manual)= +No Link= +No routes are yet defined.= +No trains on this section.= +Punch components to add fixed locks. (punch anything else @= end)= +#Remove Section=Routage à distance +Reset section state= +#Reset track section=Inversion du sens de marche +Reset track section @1!= +Route has been set.= +Route is re-set when a train passed.= +Route is set over this signal by:= +Route is set: = +Routes are not automatically set.= +Routes:= +Section holds @1 route locks.= +#Section name=Nom de Station +Set ARS default route= +Set Route= +Setting fixed locks finished!= +Show= +Show track section= +Side @1= +#Signal at @1=Signal +#Signal name=Signal +Signal on B side already assigned!= +#Signalling=Signal +Smart Route= +TCB Link: Select linked TCB now!= +TCB already existed at this position, now linked to this node= +TCB assigned to @1= +This TCB has been removed. Please dig marker.= +This is a pure distant signal@nNo route is currently set through.= +This is an always-halt signal (e.g. a buffer)@nNo routes can be set from here.= +This will clear the list of trains@nand the routesetting status of this section.@nAre you sure?= +This will remove the track section and set all its end points to End Of Interlocking= +#Track Circuit Break=Il y a un "Track Circuit Break" ici. +#Track Circuit Break Configuration=Il y a un "Track Circuit Break" ici. +Track Section Detail - @1= +Trains on this section:= +Unconfigured Track Circuit Break, right-click to assign.= +Wait for this route to be cancelled in order to do anything here.= +Waiting for route to be set...= +Yes= +You cannot modify track sections when a route is set or a train is on the section.= +Emplace manual lock= +Interlocking tool@nPunch: Highlight track section@nPlace: check route locks/show track section info= +No route locks set= +No track section at this location!= +Node is not a track!= +Route lock inspector= +Route locks currently put:= +Point Speed Restriction Track=Voie de point de limitation de vitesse +Point speed restriction: @1=Point de limitation de vitesse : @1 +Set point speed restriction:=Placez un point de limitation de vitesse : +You are not allowed to configure this track without the @1 privilege.=Vous n'êtes pas autorisé à configurer cette voie sans le privilège @1. +You are not allowed to configure this track.=Vous n'êtes pas autorisé à configurer cette voie.
\ No newline at end of file diff --git a/advtrains_interlocking/locale/advtrains_interlocking.zh_CN.tr b/advtrains_interlocking/locale/advtrains_interlocking.zh_CN.tr new file mode 100644 index 0000000..701d283 --- /dev/null +++ b/advtrains_interlocking/locale/advtrains_interlocking.zh_CN.tr @@ -0,0 +1,191 @@ +# textdomain: advtrains_interlocking +Prefix set, next signal name will be: @1= +Prefix unset, signals are not auto-named for you!= +Sets the current prefix for automatically naming interlocking components. Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on= +Created track section @1 from @2 TCBs= +Track section inconsistent here, repairing...= +Track section partition found, repairing...= +Can set up track sections, routes and signals= +@1 Terminal @2= +@1 is held in @2 position when this route is set and freed = +@1 is no longer affected when this route is set.= +Added track section @1 to the route.= +Advance to next route section= +Advance/Complete Route= +Advancing over next section is= +Cancel if you are unsure!= +Cancel route programming= +Cannot program route without a target= +End of interlocking= +Enter Route Name= +Finish programming route= +Finish route HERE= +Finish route at end of NEXT section= +Fixed in state @1 by route @2 (punch to unfix)= +Fixed in state @1 by route @2 until segment #@3 is freed.= +Insufficient privileges to use this!= +Next section is diverging (>2 TCBs)= +Route discarded.= +Route ends at signal:= +Route leads into= +Route programming mode active. Punch TCBs to add route segments, punch turnouts to lock them.= +Route section @1 removed.= +Routes should in most cases end at signals.= +Save Route= +Step back one section= +Successfully programmed route.= +The origin TCB has become unknown during programming. Try again.= +This TCB is not suitable as= +This TCB is unconfigured, you first need to assign it to a rail= +WARNING: Route does not end at a signal.= +[Route programming] = +impossible at this place.= +non-interlocked area= +route continuation.= +<< Select a route part to edit options= +#<Default Aspect>=默认座位 +ARS Rule List= +Announce distant signal= +Back to signal= +Call-on (section may be occupied)= +Clone Route= +Delete Route= +Error:= +New From Route= +No Signal at this TCB= +Route name= +Route overview= +Save ARS List= +Section Options:= +Set= +#Signal Aspect:=信号灯 +TCB at @1 has different section than previous TCB= +TCB at @1 is missing= +TCB at @1 is not assigned to previous track section= +Track section after @1 missing= +Turnout/component missing at @1= +Lock conflict at @1, Held locked by:= +No TCB found at @1. Please update or reconfigure route!= +No track section adjacent to @1. Please reconfigure route!= +Route @1 from signal @2= +Route @1 from signal @2, segment #@3= +Section '@1' already has route set from @2:= +Section '@1' is occupied!= +Section '@1' not found!= +TCB at @1 has different section than previous TCB. Please update track section or reconfigure route!= +Turnout/component missing at @1. Please update track section or reconfigure route!= +<assign distant>= +<none>= +Assigned distant signal to the main signal at @1= +Assigned signal to the TCB at @1= +Clear= +Configuring Signal: Influence point of another signal is already present!= +Configuring Signal: Node is too far away. Aborted.= +Configuring Signal: Please look in train's driving direction and punch rail to set influence point.= +Configuring Signal: Successfully set influence point= +Configuring Signal: This is not a normal two-connection rail! Aborted.= +Dst: @1= +Influence point is not set.= +Influence point is set at @1.= +Modify= +Set distant signal: Punch the main signal to assign!= +Set influence point= +Apply= +Route search: @1 found= +Search further= +Smartroute: No track section directly ahead!= +Smartroute: TCBS or routes don't exist here!= + (invalid)= +@1 locks in state @2= +A route is requested from this signal:= +Add locks= +Assign a signal= +Automatic Working is active.= +Automatic routesetting= +Boundary TCBs:= +Can't remove TCB: Both sides must have no signal assigned!= +Can't remove track, a train is here!= +Cancel= +Cancel Route= +Cannot delete route which has ARS rules, please review and then delete through edit dialog!= +Clear locks= +Configuring TCB: Already existed at this position, it is now linked to this TCB marker= +Configuring TCB: Cannot use static signals for routesetting. Aborted.= +Configuring TCB: Internal error, TCBS doesn't exist. Aborted.= +Configuring TCB: Node is too far away. Aborted.= +Configuring TCB: Not a compatible signal. Aborted.= +Configuring TCB: Please punch the rail you want to assign this TCB to.= +Configuring TCB: Please punch the signal to assign.= +Configuring TCB: Successfully assigned signal.= +Configuring TCB: Successfully configured TCB= +Configuring TCB: This is not a normal two-connection rail! Aborted.= +Create Interlocked Track Section= +Delete this route= +Disable Automatic Working= +Distant signal triggers ARS= +Edit= +Enable Automatic Working= +Error: TS modified, abort!= +Final TCBS unset (legacy-style buffer route)= +Fixed route locks (e.g. level crossings):= +Link @1= +Link: @1= +Multiple routes are requested (first available is set):= +NOTE: ARS is disabled.= +New (Manual)= +No Link= +No routes are yet defined.= +No trains on this section.= +Punch components to add fixed locks. (punch anything else @= end)= +Remove Section= +Reset section state= +#Reset track section=改变行车方向 +Reset track section @1!= +Route has been set.= +Route is re-set when a train passed.= +Route is set over this signal by:= +Route is set: = +Routes are not automatically set.= +Routes:= +Section holds @1 route locks.= +#Section name=车站名称 +Set ARS default route= +Set Route= +Setting fixed locks finished!= +Show= +Show track section= +Side @1= +#Signal at @1=信号灯 +#Signal name=信号灯 +Signal on B side already assigned!= +#Signalling=信号灯 +Smart Route= +TCB Link: Select linked TCB now!= +TCB already existed at this position, now linked to this node= +TCB assigned to @1= +This TCB has been removed. Please dig marker.= +This is a pure distant signal@nNo route is currently set through.= +This is an always-halt signal (e.g. a buffer)@nNo routes can be set from here.= +This will clear the list of trains@nand the routesetting status of this section.@nAre you sure?= +This will remove the track section and set all its end points to End Of Interlocking= +Track Circuit Break= +Track Circuit Break Configuration= +Track Section Detail - @1= +Trains on this section:= +Unconfigured Track Circuit Break, right-click to assign.= +Wait for this route to be cancelled in order to do anything here.= +Waiting for route to be set...= +Yes= +You cannot modify track sections when a route is set or a train is on the section.= +Emplace manual lock= +Interlocking tool@nPunch: Highlight track section@nPlace: check route locks/show track section info= +No route locks set= +No track section at this location!= +Node is not a track!= +Route lock inspector= +Route locks currently put:= +Point Speed Restriction Track= +Point speed restriction: @1= +Set point speed restriction:= +You are not allowed to configure this track without the @1 privilege.=您没有“@1”权限,不能调整这段轨道。 +You are not allowed to configure this track.=您不能调整这段轨道。
\ No newline at end of file diff --git a/advtrains_interlocking/locale/advtrains_interlocking.zh_TW.tr b/advtrains_interlocking/locale/advtrains_interlocking.zh_TW.tr new file mode 100644 index 0000000..64e1626 --- /dev/null +++ b/advtrains_interlocking/locale/advtrains_interlocking.zh_TW.tr @@ -0,0 +1,191 @@ +# textdomain: advtrains_interlocking +Prefix set, next signal name will be: @1= +Prefix unset, signals are not auto-named for you!= +Sets the current prefix for automatically naming interlocking components. Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on= +Created track section @1 from @2 TCBs= +Track section inconsistent here, repairing...= +Track section partition found, repairing...= +Can set up track sections, routes and signals= +@1 Terminal @2= +@1 is held in @2 position when this route is set and freed = +@1 is no longer affected when this route is set.= +Added track section @1 to the route.= +Advance to next route section= +Advance/Complete Route= +Advancing over next section is= +Cancel if you are unsure!= +Cancel route programming= +Cannot program route without a target= +End of interlocking= +Enter Route Name= +Finish programming route= +Finish route HERE= +Finish route at end of NEXT section= +Fixed in state @1 by route @2 (punch to unfix)= +Fixed in state @1 by route @2 until segment #@3 is freed.= +Insufficient privileges to use this!= +Next section is diverging (>2 TCBs)= +Route discarded.= +Route ends at signal:= +Route leads into= +Route programming mode active. Punch TCBs to add route segments, punch turnouts to lock them.= +Route section @1 removed.= +Routes should in most cases end at signals.= +Save Route= +Step back one section= +Successfully programmed route.= +The origin TCB has become unknown during programming. Try again.= +This TCB is not suitable as= +This TCB is unconfigured, you first need to assign it to a rail= +WARNING: Route does not end at a signal.= +[Route programming] = +impossible at this place.= +non-interlocked area= +route continuation.= +<< Select a route part to edit options= +#<Default Aspect>=預設座位 +ARS Rule List= +Announce distant signal= +Back to signal= +Call-on (section may be occupied)= +Clone Route= +Delete Route= +Error:= +New From Route= +No Signal at this TCB= +Route name= +Route overview= +Save ARS List= +Section Options:= +Set= +#Signal Aspect:=色燈號誌機 +TCB at @1 has different section than previous TCB= +TCB at @1 is missing= +TCB at @1 is not assigned to previous track section= +Track section after @1 missing= +Turnout/component missing at @1= +Lock conflict at @1, Held locked by:= +No TCB found at @1. Please update or reconfigure route!= +No track section adjacent to @1. Please reconfigure route!= +Route @1 from signal @2= +Route @1 from signal @2, segment #@3= +Section '@1' already has route set from @2:= +Section '@1' is occupied!= +Section '@1' not found!= +TCB at @1 has different section than previous TCB. Please update track section or reconfigure route!= +Turnout/component missing at @1. Please update track section or reconfigure route!= +<assign distant>= +<none>= +Assigned distant signal to the main signal at @1= +Assigned signal to the TCB at @1= +Clear= +Configuring Signal: Influence point of another signal is already present!= +Configuring Signal: Node is too far away. Aborted.= +Configuring Signal: Please look in train's driving direction and punch rail to set influence point.= +Configuring Signal: Successfully set influence point= +Configuring Signal: This is not a normal two-connection rail! Aborted.= +Dst: @1= +Influence point is not set.= +Influence point is set at @1.= +Modify= +Set distant signal: Punch the main signal to assign!= +Set influence point= +Apply= +Route search: @1 found= +Search further= +Smartroute: No track section directly ahead!= +Smartroute: TCBS or routes don't exist here!= + (invalid)= +@1 locks in state @2= +A route is requested from this signal:= +Add locks= +Assign a signal= +Automatic Working is active.= +Automatic routesetting= +Boundary TCBs:= +Can't remove TCB: Both sides must have no signal assigned!= +Can't remove track, a train is here!= +Cancel= +Cancel Route= +Cannot delete route which has ARS rules, please review and then delete through edit dialog!= +Clear locks= +Configuring TCB: Already existed at this position, it is now linked to this TCB marker= +Configuring TCB: Cannot use static signals for routesetting. Aborted.= +Configuring TCB: Internal error, TCBS doesn't exist. Aborted.= +Configuring TCB: Node is too far away. Aborted.= +Configuring TCB: Not a compatible signal. Aborted.= +Configuring TCB: Please punch the rail you want to assign this TCB to.= +Configuring TCB: Please punch the signal to assign.= +Configuring TCB: Successfully assigned signal.= +Configuring TCB: Successfully configured TCB= +Configuring TCB: This is not a normal two-connection rail! Aborted.= +Create Interlocked Track Section= +Delete this route= +Disable Automatic Working= +Distant signal triggers ARS= +Edit= +Enable Automatic Working= +Error: TS modified, abort!= +Final TCBS unset (legacy-style buffer route)= +Fixed route locks (e.g. level crossings):= +Link @1= +Link: @1= +Multiple routes are requested (first available is set):= +NOTE: ARS is disabled.= +New (Manual)= +No Link= +No routes are yet defined.= +No trains on this section.= +Punch components to add fixed locks. (punch anything else @= end)= +Remove Section= +Reset section state= +#Reset track section=改變行車方向 +Reset track section @1!= +Route has been set.= +Route is re-set when a train passed.= +Route is set over this signal by:= +Route is set: = +Routes are not automatically set.= +Routes:= +Section holds @1 route locks.= +#Section name=車站名稱 +Set ARS default route= +Set Route= +Setting fixed locks finished!= +Show= +Show track section= +Side @1= +#Signal at @1=色燈號誌機 +#Signal name=色燈號誌機 +Signal on B side already assigned!= +#Signalling=色燈號誌機 +Smart Route= +TCB Link: Select linked TCB now!= +TCB already existed at this position, now linked to this node= +TCB assigned to @1= +This TCB has been removed. Please dig marker.= +This is a pure distant signal@nNo route is currently set through.= +This is an always-halt signal (e.g. a buffer)@nNo routes can be set from here.= +This will clear the list of trains@nand the routesetting status of this section.@nAre you sure?= +This will remove the track section and set all its end points to End Of Interlocking= +Track Circuit Break= +Track Circuit Break Configuration= +Track Section Detail - @1= +Trains on this section:= +Unconfigured Track Circuit Break, right-click to assign.= +Wait for this route to be cancelled in order to do anything here.= +Waiting for route to be set...= +Yes= +You cannot modify track sections when a route is set or a train is on the section.= +Emplace manual lock= +Interlocking tool@nPunch: Highlight track section@nPlace: check route locks/show track section info= +No route locks set= +No track section at this location!= +Node is not a track!= +Route lock inspector= +Route locks currently put:= +Point Speed Restriction Track= +Point speed restriction: @1= +Set point speed restriction:= +You are not allowed to configure this track without the @1 privilege.=您沒有「@1」許可權,不能調整這段軌道。 +You are not allowed to configure this track.=您不能調整這段軌道。
\ No newline at end of file diff --git a/advtrains_interlocking/po/README.md b/advtrains_interlocking/po/README.md new file mode 100644 index 0000000..3e94682 --- /dev/null +++ b/advtrains_interlocking/po/README.md @@ -0,0 +1,70 @@ +# 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_interlocking/po/advtrains_interlocking.pot b/advtrains_interlocking/po/advtrains_interlocking.pot new file mode 100644 index 0000000..312a843 --- /dev/null +++ b/advtrains_interlocking/po/advtrains_interlocking.pot @@ -0,0 +1,807 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the advtrains_interlocking package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: advtrains_interlocking\n" +"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n" +"POT-Creation-Date: 2025-06-11 23:21+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" + +#: autonaming.lua +msgid "Prefix set, next signal name will be: @1" +msgstr "" + +#: autonaming.lua +msgid "Prefix unset, signals are not auto-named for you!" +msgstr "" + +#: autonaming.lua +msgid "" +"Sets the current prefix for automatically naming interlocking components. " +"Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on" +msgstr "" + +#: database.lua +msgid "Track section inconsistent here, repairing..." +msgstr "" + +#: database.lua +msgid "Track section partition found, repairing..." +msgstr "" + +#: database.lua +msgid "Created track section @1 from @2 TCBs" +msgstr "" + +#: init.lua +msgid "Can set up track sections, routes and signals" +msgstr "" + +#: route_prog.lua +msgid "[Route programming] " +msgstr "" + +#: route_prog.lua +msgid "@1 is no longer affected when this route is set." +msgstr "" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 until segment #@3 is freed." +msgstr "" + +#: route_prog.lua +msgid "@1 Terminal @2" +msgstr "" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 (punch to unfix)" +msgstr "" + +#: route_prog.lua route_ui.lua signal_aspect_ui.lua tcb_ts_ui.lua tool.lua +msgid "Insufficient privileges to use this!" +msgstr "" + +#: route_prog.lua +msgid "" +"Route programming mode active. Punch TCBs to add route segments, punch " +"turnouts to lock them." +msgstr "" + +#: route_prog.lua +msgid "Added track section @1 to the route." +msgstr "" + +#: route_prog.lua +msgid "Finish programming route" +msgstr "" + +#: route_prog.lua +msgid "Route ends at signal:" +msgstr "" + +#: route_prog.lua +msgid "WARNING: Route does not end at a signal." +msgstr "" + +#: route_prog.lua +msgid "Routes should in most cases end at signals." +msgstr "" + +#: route_prog.lua +msgid "Cancel if you are unsure!" +msgstr "" + +#: route_prog.lua +msgid "Route leads into" +msgstr "" + +#: route_prog.lua +msgid "non-interlocked area" +msgstr "" + +#: route_prog.lua +msgid "Enter Route Name" +msgstr "" + +#: route_prog.lua +msgid "Save Route" +msgstr "" + +#: route_prog.lua +msgid "Next section is diverging (>2 TCBs)" +msgstr "" + +#: route_prog.lua tcb_ts_ui.lua +msgid "End of interlocking" +msgstr "" + +#: route_prog.lua +msgid "Advance/Complete Route" +msgstr "" + +#: route_prog.lua +msgid "Advance to next route section" +msgstr "" + +#: route_prog.lua +msgid "This TCB is not suitable as" +msgstr "" + +#: route_prog.lua +msgid "route continuation." +msgstr "" + +#: route_prog.lua +msgid "Finish route HERE" +msgstr "" + +#: route_prog.lua +msgid "Finish route at end of NEXT section" +msgstr "" + +#: route_prog.lua +msgid "Advancing over next section is" +msgstr "" + +#: route_prog.lua +msgid "impossible at this place." +msgstr "" + +#: route_prog.lua +msgid "Step back one section" +msgstr "" + +#: route_prog.lua +msgid "Cancel route programming" +msgstr "" + +#: route_prog.lua +msgid "Route section @1 removed." +msgstr "" + +#: route_prog.lua +msgid "Route discarded." +msgstr "" + +#: route_prog.lua +msgid "Cannot program route without a target" +msgstr "" + +#: route_prog.lua +msgid "The origin TCB has become unknown during programming. Try again." +msgstr "" + +#: route_prog.lua +msgid "Successfully programmed route." +msgstr "" + +#: route_prog.lua +msgid "This TCB is unconfigured, you first need to assign it to a rail" +msgstr "" + +#: route_prog.lua +msgid "@1 is held in @2 position when this route is set and freed " +msgstr "" + +#: route_ui.lua +msgid "Route overview" +msgstr "" + +#: route_ui.lua +msgid "Route name" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Set" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is missing" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Track section after @1 missing" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Turnout/component missing at @1" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is not assigned to previous track section" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 has different section than previous TCB" +msgstr "" + +#: route_ui.lua signal_aspect_ui.lua +msgid "Signal Aspect:" +msgstr "" + +#: route_ui.lua +msgid "<Default Aspect>" +msgstr "" + +#: route_ui.lua +msgid "Announce distant signal" +msgstr "" + +#: route_ui.lua +msgid "No Signal at this TCB" +msgstr "" + +#: route_ui.lua +msgid "Section Options:" +msgstr "" + +#: route_ui.lua +msgid "Call-on (section may be occupied)" +msgstr "" + +#: route_ui.lua +msgid "Error:" +msgstr "" + +#: route_ui.lua +msgid "<< Select a route part to edit options" +msgstr "" + +#: route_ui.lua +msgid "Delete Route" +msgstr "" + +#: route_ui.lua +msgid "Back to signal" +msgstr "" + +#: route_ui.lua +msgid "Clone Route" +msgstr "" + +#: route_ui.lua +msgid "New From Route" +msgstr "" + +#: route_ui.lua +msgid "ARS Rule List" +msgstr "" + +#: route_ui.lua +msgid "Save ARS List" +msgstr "" + +#: routesetting.lua +msgid "No TCB found at @1. Please update or reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "No track section adjacent to @1. Please reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' not found!" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' already has route set from @2:" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' is occupied!" +msgstr "" + +#: routesetting.lua +msgid "Lock conflict at @1, Held locked by:" +msgstr "" + +#: routesetting.lua +msgid "Route @1 from signal @2" +msgstr "" + +#: routesetting.lua +msgid "" +"Turnout/component missing at @1. Please update track section or reconfigure " +"route!" +msgstr "" + +#: routesetting.lua +msgid "" +"TCB at @1 has different section than previous TCB. Please update track " +"section or reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "Route @1 from signal @2, segment #@3" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Influence point is set at @1." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Modify" +msgstr "" + +#: signal_aspect_ui.lua tool.lua +msgid "Clear" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Influence point is not set." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Set influence point" +msgstr "" + +#: signal_aspect_ui.lua +msgid "<none>" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Dst: @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "<assign distant>" +msgstr "" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Please look in train's driving direction and punch rail " +"to set influence point." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Set distant signal: Punch the main signal to assign!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Assigned signal to the TCB at @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Assigned distant signal to the main signal at @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Successfully set influence point" +msgstr "" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Influence point of another signal is already present!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: This is not a normal two-connection rail! Aborted." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Node is too far away. Aborted." +msgstr "" + +#: smartroute.lua +msgid "Smartroute: TCBS or routes don't exist here!" +msgstr "" + +#: smartroute.lua +msgid "Smartroute: No track section directly ahead!" +msgstr "" + +#: smartroute.lua +msgid "Route search: @1 found" +msgstr "" + +#: smartroute.lua +msgid "Search further" +msgstr "" + +#: smartroute.lua +msgid "Apply" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Circuit Break" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Unconfigured Track Circuit Break, right-click to assign." +msgstr "" + +#: tcb_ts_ui.lua +msgid "This TCB has been removed. Please dig marker." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the rail you want to assign this TCB to." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Can't remove TCB: Both sides must have no signal assigned!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"Configuring TCB: Already existed at this position, it is now linked to this " +"TCB marker" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB assigned to @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully configured TCB" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: This is not a normal two-connection rail! Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Node is too far away. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully assigned signal." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Internal error, TCBS doesn't exist. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Cannot use static signals for routesetting. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Not a compatible signal. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "@1 locks in state @2" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Error: TS modified, abort!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Setting fixed locks finished!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB already existed at this position, now linked to this node" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Signal on B side already assigned!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Can't remove track, a train is here!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Side @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Show track section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Create Interlocked Track Section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Link: @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Link @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No Link" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Signalling" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Assign a signal" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Circuit Break Configuration" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB Link: Select linked TCB now!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the signal to assign." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Section Detail - @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Section name" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Boundary TCBs:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Fixed route locks (e.g. level crossings):" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Add locks" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Clear locks" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Remove Section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This will remove the track section and set all its end points to End Of " +"Interlocking" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is set: " +msgstr "" + +#: tcb_ts_ui.lua +msgid "Section holds @1 route locks." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Trains on this section:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No trains on this section." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Reset section state" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"You cannot modify track sections when a route is set or a train is on the " +"section." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Punch components to add fixed locks. (punch anything else = end)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Reset track section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This will clear the list of trains\n" +"and the routesetting status of this section.\n" +"Are you sure?" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Yes" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Cancel" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Reset track section @1!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Final TCBS unset (legacy-style buffer route)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Signal at @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Signal name" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Multiple routes are requested (first available is set):" +msgstr "" + +#: tcb_ts_ui.lua +msgid "A route is requested from this signal:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route has been set." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Waiting for route to be set..." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Enable Automatic Working" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Automatic Working is active." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is re-set when a train passed." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Disable Automatic Working" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Cancel Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid " (invalid)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Routes:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Set Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Show" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Set ARS default route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Edit" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Delete this route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "NOTE: ARS is disabled." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Routes are not automatically set." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Smart Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "New (Manual)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Automatic routesetting" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Distant signal triggers ARS" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No routes are yet defined." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This is an always-halt signal (e.g. a buffer)\n" +"No routes can be set from here." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This is a pure distant signal\n" +"No route is currently set through." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is set over this signal by:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Wait for this route to be cancelled in order to do anything here." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"Cannot delete route which has ARS rules, please review and then delete " +"through edit dialog!" +msgstr "" + +#: tool.lua +msgid "Route lock inspector" +msgstr "" + +#: tool.lua +msgid "Route locks currently put:" +msgstr "" + +#: tool.lua +msgid "No route locks set" +msgstr "" + +#: tool.lua +msgid "Emplace manual lock" +msgstr "" + +#: tool.lua +msgid "Node is not a track!" +msgstr "" + +#: tool.lua +msgid "No track section at this location!" +msgstr "" + +#: tool.lua +msgid "" +"Interlocking tool\n" +"Punch: Highlight track section\n" +"Place: check route locks/show track section info" +msgstr "" + +#: tsr_rail.lua +msgid "Point speed restriction: @1" +msgstr "" + +#: tsr_rail.lua +msgid "Set point speed restriction:" +msgstr "" + +#: tsr_rail.lua +msgid "You are not allowed to configure this track without the @1 privilege." +msgstr "" + +#: tsr_rail.lua +msgid "You are not allowed to configure this track." +msgstr "" + +#: tsr_rail.lua +msgid "Point Speed Restriction Track" +msgstr "" diff --git a/advtrains_interlocking/po/de.po b/advtrains_interlocking/po/de.po new file mode 100644 index 0000000..d3aa1dc --- /dev/null +++ b/advtrains_interlocking/po/de.po @@ -0,0 +1,1378 @@ +msgid "" +msgstr "" +"Project-Id-Version: advtrains\n" +"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n" +"POT-Creation-Date: 2025-06-11 23:21+0200\n" +"PO-Revision-Date: 2025-06-12 22:55+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.2.2\n" + +#: autonaming.lua +msgid "Prefix set, next signal name will be: @1" +msgstr "Präfix gesetzt, nächster Signalname: @1" + +#: autonaming.lua +msgid "Prefix unset, signals are not auto-named for you!" +msgstr "Präfix gelöscht, automatische Signalbenennung deaktiviert!" + +#: autonaming.lua +msgid "" +"Sets the current prefix for automatically naming interlocking components. " +"Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on" +msgstr "" +"Setze einen Präfix für die automatische Benennung von neu hinzugefügten " +"Signalen. Beispiel: '/at_nameprefix TEST' - Signale werden mit TEST1, TEST2 " +"usw. benannt" + +#: database.lua +msgid "Created track section @1 from @2 TCBs" +msgstr "Gleisabschnitt @1 aus @2 TCBs erstellt" + +#: database.lua +msgid "Track section inconsistent here, repairing..." +msgstr "Gleisabschnitt ist inkonsistent, repariere..." + +#: database.lua +msgid "Track section partition found, repairing..." +msgstr "Gleisabschnitt partitioniert, repariere..." + +#: init.lua +msgid "Can set up track sections, routes and signals" +msgstr "Darf Gleisabschnitte, Fahrstraßen und Signale bearbeiten" + +#: route_prog.lua +msgid "@1 Terminal @2" +msgstr "@1 Ziel @2" + +#: route_prog.lua +msgid "@1 is held in @2 position when this route is set and freed " +msgstr "@1 wird durch die Fahrstraße in Position @2 festgelegt" + +#: route_prog.lua +msgid "@1 is no longer affected when this route is set." +msgstr "@1 wird nicht mehr durch die Fahrstraße festgelegt" + +#: route_prog.lua +msgid "Added track section @1 to the route." +msgstr "Gleisabschnitt @1 zur Fahrstraße hinzugefügt." + +#: route_prog.lua +msgid "Advance to next route section" +msgstr "Nächsten Gleisabschnitt hinzufügen" + +#: route_prog.lua +msgid "Advance/Complete Route" +msgstr "Fahrstraße fortsetzen/beenden" + +#: route_prog.lua +msgid "Advancing over next section is" +msgstr "Fortsetzen über nächsten Gleisabschnitt hinaus" + +#: route_prog.lua +msgid "Cancel if you are unsure!" +msgstr "Abbrechen, wenn Sie unsicher sind!" + +#: route_prog.lua +msgid "Cancel route programming" +msgstr "Fahrstraßenprogrammierung abbrechen" + +#: route_prog.lua +msgid "Cannot program route without a target" +msgstr "Kann keine Fahrstraße ohne Ziel programmieren" + +#: route_prog.lua tcb_ts_ui.lua +msgid "End of interlocking" +msgstr "Ende der Zugsicherung" + +#: route_prog.lua +msgid "Enter Route Name" +msgstr "Fahrstraßennamen eingeben" + +#: route_prog.lua +msgid "Finish programming route" +msgstr "Fahrstraße abschließen" + +#: route_prog.lua +msgid "Finish route HERE" +msgstr "Fahrstraße HIER abschließen" + +#: route_prog.lua +msgid "Finish route at end of NEXT section" +msgstr "Fahrstraße am Ende des NÄCHSTEN Abschnitts abschließen" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 (punch to unfix)" +msgstr "Festgelegt in Zustand @1 durch Fahrstraße @2 (Schlagen um freizugeben)" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 until segment #@3 is freed." +msgstr "" +"Festgelegt in Zustand @1 durch Fahrstraße @2, bis Segment @3 freigegeben " +"wird." + +#: route_prog.lua route_ui.lua signal_aspect_ui.lua tcb_ts_ui.lua tool.lua +msgid "Insufficient privileges to use this!" +msgstr "Unzureichende Privilegien, um dies zu benutzen!" + +#: route_prog.lua +msgid "Next section is diverging (>2 TCBs)" +msgstr "Nächster Abschnitt enthält eine Weiche (>2 TCBs)" + +#: route_prog.lua +msgid "Route discarded." +msgstr "Fahrstraße verworfen." + +#: route_prog.lua +msgid "Route ends at signal:" +msgstr "Fahrstraße endet bei Signal:" + +#: route_prog.lua +msgid "Route leads into" +msgstr "Fahrstraße führt in" + +#: route_prog.lua +msgid "" +"Route programming mode active. Punch TCBs to add route segments, punch " +"turnouts to lock them." +msgstr "" +"Fahrstraßenprogrammierung aktiv. Schlage Gleisabschnittsgrenzen (TCB) um " +"Segmente hinzuzufügen, schlage Weichen um sie festzulegen." + +#: route_prog.lua +msgid "Route section @1 removed." +msgstr "Fahrstraßenabschnitt @1 entfernt." + +#: route_prog.lua +msgid "Routes should in most cases end at signals." +msgstr "Fahrstraßen sollten normalerweise an einem Signal enden." + +#: route_prog.lua +msgid "Save Route" +msgstr "Fahrstraße speichern" + +#: route_prog.lua +msgid "Step back one section" +msgstr "Einen Abschnitt zurück" + +#: route_prog.lua +msgid "Successfully programmed route." +msgstr "Fahrstraße erfolgreich programmiert." + +#: route_prog.lua +msgid "The origin TCB has become unknown during programming. Try again." +msgstr "Der Start-TCB ist unbekannt geworden. Versuche nochmal." + +#: route_prog.lua +msgid "This TCB is not suitable as" +msgstr "Diese Gleisabschnittsgrenze ist" + +#: route_prog.lua +msgid "This TCB is unconfigured, you first need to assign it to a rail" +msgstr "" +"Diese Gleisabschnittsgrenze ist noch nicht konfiguiert, sie muss erst " +"zugewiesen werden" + +#: route_prog.lua +msgid "WARNING: Route does not end at a signal." +msgstr "ACHTUNG: Fahrstraße endet nicht an einem Signal." + +#: route_prog.lua +msgid "[Route programming] " +msgstr "[Fahrstraßenprogrammierung] " + +#: route_prog.lua +msgid "impossible at this place." +msgstr "ist hier nicht möglich." + +#: route_prog.lua +msgid "non-interlocked area" +msgstr "nicht-überwachtes Gebiet" + +#: route_prog.lua +msgid "route continuation." +msgstr "nicht als Fortsetzung geeignet." + +#: route_ui.lua +msgid "<< Select a route part to edit options" +msgstr "<< Wähle einen Abschnitt, um Optionen zu bearbeiten" + +#: route_ui.lua +msgid "<Default Aspect>" +msgstr "<Standardbegriff>" + +#: route_ui.lua +msgid "ARS Rule List" +msgstr "ARS-Regelliste" + +#: route_ui.lua +msgid "Announce distant signal" +msgstr "Entferntes Hauptsignal ankündigen" + +#: route_ui.lua +msgid "Back to signal" +msgstr "Zurück zum Signal" + +#: route_ui.lua +msgid "Call-on (section may be occupied)" +msgstr "Abschnitt darf belegt sein" + +#: route_ui.lua +msgid "Clone Route" +msgstr "Duplizieren" + +#: route_ui.lua +msgid "Delete Route" +msgstr "Fahrstraße löschen" + +#: route_ui.lua +msgid "Error:" +msgstr "Fehler:" + +#: route_ui.lua +msgid "New From Route" +msgstr "Neu aus dieser FS" + +#: route_ui.lua +msgid "No Signal at this TCB" +msgstr "Kein Signal hier" + +#: route_ui.lua +msgid "Route name" +msgstr "Fahrstraßenname" + +#: route_ui.lua +msgid "Route overview" +msgstr "Fahrstraßenübersicht" + +#: route_ui.lua +msgid "Save ARS List" +msgstr "ARS-Liste speichern" + +#: route_ui.lua +msgid "Section Options:" +msgstr "Abschnittsoptionen:" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Set" +msgstr "Setzen" + +#: route_ui.lua signal_aspect_ui.lua +msgid "Signal Aspect:" +msgstr "Signalbegriff:" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 has different section than previous TCB" +msgstr "TCB bei @1 hat einen anderen Gleisabschnitt als der vorherige TCB" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is missing" +msgstr "TCB bei @1 fehlt" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is not assigned to previous track section" +msgstr "TCB bei @1 ist dem vorherigen Gleisabschnitt nicht zugewiesen" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Track section after @1 missing" +msgstr "Gleisabschnitt nach @1 fehlt" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Turnout/component missing at @1" +msgstr "Weiche oder Komponente bei @1 fehlt" + +#: routesetting.lua +msgid "Lock conflict at @1, Held locked by:" +msgstr "Sperrenkonflikt bei @1, bereits gesperrt durch:" + +#: routesetting.lua +msgid "No TCB found at @1. Please update or reconfigure route!" +msgstr "TCB bei @1 nicht gefunden. Bitte Fahrstraße korrigieren!" + +#: routesetting.lua +msgid "No track section adjacent to @1. Please reconfigure route!" +msgstr "Gleisabschnitt nach @1 nicht gefunden. Bitte Fahrstraße korrigieren!" + +#: routesetting.lua +msgid "Route @1 from signal @2" +msgstr "Fahrstraße @1 von Signal @2" + +#: routesetting.lua +msgid "Route @1 from signal @2, segment #@3" +msgstr "Fahrstraße @1 von Signal @2, Segment @3" + +#: routesetting.lua +msgid "Section '@1' already has route set from @2:" +msgstr "Abschnitt '@1' bereits durch Fahrstraße von @2 belegt:" + +#: routesetting.lua +msgid "Section '@1' is occupied!" +msgstr "Abschnitt '@1' ist durch einen Zug belegt!" + +#: routesetting.lua +msgid "Section '@1' not found!" +msgstr "Abschnitt '@1' nicht gefunden!" + +#: routesetting.lua +msgid "" +"TCB at @1 has different section than previous TCB. Please update track " +"section or reconfigure route!" +msgstr "" +"TCB bei @1 hat anderen Abschnitt als vorhergehender TCB. Bitte Fahrstraße " +"korrigieren!" + +#: routesetting.lua +msgid "" +"Turnout/component missing at @1. Please update track section or reconfigure " +"route!" +msgstr "Weiche/Komponente bei @1 nicht gefunden. Bitte Fahrstraße korrigieren!" + +#: signal_aspect_ui.lua +msgid "<assign distant>" +msgstr "<entf. Hauptsignal festl.>" + +#: signal_aspect_ui.lua +msgid "<none>" +msgstr "<kein>" + +#: signal_aspect_ui.lua +msgid "Assigned distant signal to the main signal at @1" +msgstr "Vorsignal dem Hauptsignal bei @1 zugewiesen" + +#: signal_aspect_ui.lua +msgid "Assigned signal to the TCB at @1" +msgstr "Signal der Gleisabschnittsgrenze bei @1 zugewiesen" + +#: signal_aspect_ui.lua tool.lua +msgid "Clear" +msgstr "Leeren" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Influence point of another signal is already present!" +msgstr "" +"Signal einstellen: Beeinflussungspunkt eines anderen Signals bereits " +"vorhanden!" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Node is too far away. Aborted." +msgstr "Signal einstellen: Block ist zu weit entfernt. Abbruch." + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Please look in train's driving direction and punch rail " +"to set influence point." +msgstr "" +"Signal einstellen: In Fahrtrichtung schauen und Gleis schlagen, um " +"Beeinflussungspunkt zu setzen." + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Successfully set influence point" +msgstr "Signal einstellen: Beeinflussungspunkt erfolgreich gesetzt" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: This is not a normal two-connection rail! Aborted." +msgstr "Signal einstellen: Dies ist kein geeignetes Gleis! Abbruch." + +#: signal_aspect_ui.lua +msgid "Dst: @1" +msgstr "Haupts.: @1" + +#: signal_aspect_ui.lua +msgid "Influence point is not set." +msgstr "Beeinflussungspunkt ist nicht gesetzt." + +#: signal_aspect_ui.lua +msgid "Influence point is set at @1." +msgstr "Beeinflussungspunkt ist gesetzt bei @1." + +#: signal_aspect_ui.lua +msgid "Modify" +msgstr "Bearbeiten" + +#: signal_aspect_ui.lua +msgid "Set distant signal: Punch the main signal to assign!" +msgstr "Hauptsignal zuweisen: Bitte schlage das Hauptsignal!" + +#: signal_aspect_ui.lua +msgid "Set influence point" +msgstr "Beeinflussungspunkt setzen" + +#: smartroute.lua +msgid "Apply" +msgstr "Anwenden" + +#: smartroute.lua +msgid "Route search: @1 found" +msgstr "Fahrstraßensuche: @1 gefunden" + +#: smartroute.lua +msgid "Search further" +msgstr "Weitersuchen" + +#: smartroute.lua +msgid "Smartroute: No track section directly ahead!" +msgstr "Fahrstraßensuche: Kein Gleisabschnitt voraus!" + +#: smartroute.lua +msgid "Smartroute: TCBS or routes don't exist here!" +msgstr "" +"Fahrstraßensuche: Gleisabschnittsgrenze oder Fahrstraßen existieren hier " +"nicht!" + +#: tcb_ts_ui.lua +msgid " (invalid)" +msgstr "(ungültig)" + +#: tcb_ts_ui.lua +msgid "@1 locks in state @2" +msgstr "@1 gesperrt in Position @2" + +#: tcb_ts_ui.lua +msgid "A route is requested from this signal:" +msgstr "Fahrstraße von diesem Signal:" + +#: tcb_ts_ui.lua +msgid "Add locks" +msgstr "Sperre hinzu." + +#: tcb_ts_ui.lua +msgid "Assign a signal" +msgstr "Signal zuweisen" + +#: tcb_ts_ui.lua +msgid "Automatic Working is active." +msgstr "Automatischer Blockbetrieb aktiv." + +#: tcb_ts_ui.lua +msgid "Automatic routesetting" +msgstr "ARS (autom. Fahrstraßenauswahl)" + +#: tcb_ts_ui.lua +msgid "Boundary TCBs:" +msgstr "Gleisabschnittsgrenzen:" + +#: tcb_ts_ui.lua +msgid "Can't remove TCB: Both sides must have no signal assigned!" +msgstr "" +"Kann Gleisabschnittsgrenze nicht entfernen: mindestens eine Seite hat noch " +"ein Signal zugewiesen!" + +#: tcb_ts_ui.lua +msgid "Can't remove track, a train is here!" +msgstr "Kann Gleisabschnittsgrenze nicht entfernen: hier ist noch ein Zug!" + +#: tcb_ts_ui.lua +msgid "Cancel" +msgstr "Abbruch" + +#: tcb_ts_ui.lua +msgid "Cancel Route" +msgstr "Fahrstraße auflösen" + +#: tcb_ts_ui.lua +msgid "" +"Cannot delete route which has ARS rules, please review and then delete " +"through edit dialog!" +msgstr "" +"Fahrstraße hat ARS-Regeln, bitte überprüfe diese und lösche die Fahrstraße " +"über den Bearbeitungsdialog!" + +#: tcb_ts_ui.lua +msgid "Clear locks" +msgstr "Sperren löschen" + +#: tcb_ts_ui.lua +msgid "" +"Configuring TCB: Already existed at this position, it is now linked to this " +"TCB marker" +msgstr "" +"Gleisabschnittsgrenze einstellen: Existierte hier bereits, der Marker ist " +"nun verbunden" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Cannot use static signals for routesetting. Aborted." +msgstr "" +"Gleisabschnittsgrenze einstellen: statische Signale können nicht für " +"Fahrstraßen benutzt werden. Abbruch." + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Internal error, TCBS doesn't exist. Aborted." +msgstr "" +"Gleisabschnittsgrenze einstellen: Interner Fehler, TCB existiert nicht. " +"Abbruch." + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Node is too far away. Aborted." +msgstr "Gleisabschnittsgrenze einstellen: Block ist zu weit entfernt. Abbruch." + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Not a compatible signal. Aborted." +msgstr "Gleisabschnittsgrenze einstellen: Kein kompatibles Signal. Abbruch." + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the rail you want to assign this TCB to." +msgstr "" +"Gleisabschnittsgrenze einstellen: Bitte das Gleis schlagen, wo die Grenze " +"erstellt werden soll." + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the signal to assign." +msgstr "" +"Gleisabschnittsgrenze einstellen: Bitte das zuzuweisende Signal schlagen." + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully assigned signal." +msgstr "Gleisabschnittsgrenze einstellen: Signal erfolgreich zugewiesen." + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully configured TCB" +msgstr "Gleisabschnittsgrenze einstellen: Grenze erfolgreich erstellt" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: This is not a normal two-connection rail! Aborted." +msgstr "" +"Gleisabschnittsgrenze einstellen: Dies ist kein geeignetes Gleis! Abbruch." + +#: tcb_ts_ui.lua +msgid "Create Interlocked Track Section" +msgstr "Gleisabschnitt anlegen" + +#: tcb_ts_ui.lua +msgid "Delete this route" +msgstr "Fahrstraße löschen" + +#: tcb_ts_ui.lua +msgid "Disable Automatic Working" +msgstr "Auto. Blockbetrieb aus" + +#: tcb_ts_ui.lua +msgid "Distant signal triggers ARS" +msgstr "Vorsignal kann ARS auslösen" + +#: tcb_ts_ui.lua +msgid "Edit" +msgstr "Bearbeiten" + +#: tcb_ts_ui.lua +msgid "Enable Automatic Working" +msgstr "Automatischer Blockbetrieb" + +#: tcb_ts_ui.lua +msgid "Error: TS modified, abort!" +msgstr "Fehler: Abschnitt verändert, Abbruch!" + +#: tcb_ts_ui.lua +msgid "Final TCBS unset (legacy-style buffer route)" +msgstr "Letzte Abschnittsgrenze fehlt (Prellbockroute aus älterer Version)" + +#: tcb_ts_ui.lua +msgid "Fixed route locks (e.g. level crossings):" +msgstr "Feste Fahrstraßensperren (z.B. Bahnübergang):" + +#: tcb_ts_ui.lua +msgid "Link @1" +msgstr "Verknüpfe @1" + +#: tcb_ts_ui.lua +msgid "Link: @1" +msgstr "Verknüpfung: @1" + +#: tcb_ts_ui.lua +msgid "Multiple routes are requested (first available is set):" +msgstr "Mehrere Fahrstraßen angefragt (erste verfügbare wird eingestellt):" + +#: tcb_ts_ui.lua +msgid "NOTE: ARS is disabled." +msgstr "ACHTUNG: ARS deaktiviert!" + +#: tcb_ts_ui.lua +msgid "New (Manual)" +msgstr "Neu (Manuell)" + +#: tcb_ts_ui.lua +msgid "No Link" +msgstr "Keine Verknüpfung" + +#: tcb_ts_ui.lua +msgid "No routes are yet defined." +msgstr "Bisher keine Fahrstraßen definiert." + +#: tcb_ts_ui.lua +msgid "No trains on this section." +msgstr "Keine Züge auf diesem Abschnitt." + +#: tcb_ts_ui.lua +msgid "Punch components to add fixed locks. (punch anything else = end)" +msgstr "" +"Schlage auf Komponenten um diese zu sperren (schlage irgendetwas anderes = " +"Ende)" + +#: tcb_ts_ui.lua +msgid "Remove Section" +msgstr "Gleisabschnitt löschen" + +#: tcb_ts_ui.lua +msgid "Reset section state" +msgstr "Gleisabschnitt zurücksetzen" + +#: tcb_ts_ui.lua +msgid "Reset track section" +msgstr "Gleisabschnitt zurücksetzen" + +#: tcb_ts_ui.lua +msgid "Reset track section @1!" +msgstr "Streckenabschnitt @1 zurückgesetzt!" + +#: tcb_ts_ui.lua +msgid "Route has been set." +msgstr "Fahrstraße ist festgelegt." + +#: tcb_ts_ui.lua +msgid "Route is re-set when a train passed." +msgstr "Fahrstraße wird nach Passieren eines Zuges nicht aufgelöst." + +#: tcb_ts_ui.lua +msgid "Route is set over this signal by:" +msgstr "Eine Fahrstraße ist über dieses Signal gestellt von:" + +#: tcb_ts_ui.lua +msgid "Route is set: " +msgstr "Fahrstraße ist festgelegt: " + +#: tcb_ts_ui.lua +msgid "Routes are not automatically set." +msgstr "Fahrstraßen werden nicht automatisch gestellt." + +#: tcb_ts_ui.lua +msgid "Routes:" +msgstr "Fahrstraßen:" + +#: tcb_ts_ui.lua +msgid "Section holds @1 route locks." +msgstr "Abschnitt hält @1 Sperren." + +#: tcb_ts_ui.lua +msgid "Section name" +msgstr "Name des Streckenabschnitts" + +#: tcb_ts_ui.lua +msgid "Set ARS default route" +msgstr "Setze als ARS-Standardroute" + +#: tcb_ts_ui.lua +msgid "Set Route" +msgstr "Fahrstraße einstellen" + +#: tcb_ts_ui.lua +msgid "Setting fixed locks finished!" +msgstr "Feste Fahrstraßensperren hinzugefügt!" + +#: tcb_ts_ui.lua +msgid "Show" +msgstr "Anzeigen" + +#: tcb_ts_ui.lua +msgid "Show track section" +msgstr "Gleisabschnitt anzeigen" + +#: tcb_ts_ui.lua +msgid "Side @1" +msgstr "Seite @1" + +#: tcb_ts_ui.lua +msgid "Signal at @1" +msgstr "Signal bei @1" + +#: tcb_ts_ui.lua +msgid "Signal name" +msgstr "Signalname" + +#: tcb_ts_ui.lua +msgid "Signal on B side already assigned!" +msgstr "Signal auf Seite B bereits zugewiesen!" + +#: tcb_ts_ui.lua +msgid "Signalling" +msgstr "Fahrstraßen stellen" + +#: tcb_ts_ui.lua +msgid "Smart Route" +msgstr "Fahrstraßensuche" + +#: tcb_ts_ui.lua +msgid "TCB Link: Select linked TCB now!" +msgstr "" +"Gleisabschnitte verknüpfen: Zu verknüpfende Gleisabschnittsgrenze jetzt " +"auswählen!" + +#: tcb_ts_ui.lua +msgid "TCB already existed at this position, now linked to this node" +msgstr "" +"Gleisabschnittsgrenze existierte hier bereits, der Block ist nun verbunden" + +#: tcb_ts_ui.lua +msgid "TCB assigned to @1" +msgstr "Gleisabschnittsgrenze an @1 zugewiesen" + +#: tcb_ts_ui.lua +msgid "This TCB has been removed. Please dig marker." +msgstr "Gleisabschnittsgrenze wurde gelöscht. Bitte Marker entfernen." + +#: tcb_ts_ui.lua +msgid "" +"This is a pure distant signal\n" +"No route is currently set through." +msgstr "" +"Dies ist ein reines Vorsignal\n" +"Aktuell keine Fahrstraße eingestellt." + +#: tcb_ts_ui.lua +msgid "" +"This is an always-halt signal (e.g. a buffer)\n" +"No routes can be set from here." +msgstr "" +"Dies ist ein Haltsignal (z.B. Prellbock)\n" +"Von hier aus können keine Fahrstraßen eingestellt werden." + +#: tcb_ts_ui.lua +msgid "" +"This will clear the list of trains\n" +"and the routesetting status of this section.\n" +"Are you sure?" +msgstr "" +"Dies löscht die Liste der Züge im Abschnitt\n" +"sowie den Fahrstraßenstatus.\n" +"Sind Sie sicher?" + +#: tcb_ts_ui.lua +msgid "" +"This will remove the track section and set all its end points to End Of " +"Interlocking" +msgstr "Dies wird den Gleisabschnitt löschen" + +#: tcb_ts_ui.lua +msgid "Track Circuit Break" +msgstr "Gleisabschnittsgrenze" + +#: tcb_ts_ui.lua +msgid "Track Circuit Break Configuration" +msgstr "Einstellungen der Gleisabschnittsgrenze" + +#: tcb_ts_ui.lua +msgid "Track Section Detail - @1" +msgstr "Gleisabschnitts-Details - @1" + +#: tcb_ts_ui.lua +msgid "Trains on this section:" +msgstr "Züge in diesem Abschnitt" + +#: tcb_ts_ui.lua +msgid "Unconfigured Track Circuit Break, right-click to assign." +msgstr "" +"Nicht konfiguierte Gleisabschnittsgrenze (TCB). Rechtsklick zum Zuweisen." + +#: tcb_ts_ui.lua +msgid "Wait for this route to be cancelled in order to do anything here." +msgstr "Erst nach Auflösung dieser Fahrstraße kann von hier gestellt werden." + +#: tcb_ts_ui.lua +msgid "Waiting for route to be set..." +msgstr "Warten, bis Fahrstraße verfügbar ist..." + +#: tcb_ts_ui.lua +msgid "Yes" +msgstr "Ja" + +#: tcb_ts_ui.lua +msgid "" +"You cannot modify track sections when a route is set or a train is on the " +"section." +msgstr "" +"Abschnitt kann nicht bearbeitet werden, wenn eine Fahrstraße gesetzt ist " +"oder der Abschnitt belegt ist." + +#: tool.lua +msgid "Emplace manual lock" +msgstr "Manuelle Sperre setzen" + +#: tool.lua +msgid "" +"Interlocking tool\n" +"Punch: Highlight track section\n" +"Place: check route locks/show track section info" +msgstr "" +"Zugsicherungswerkzeug\n" +"Schlagen: Gleisabschnitte hervorheben\n" +"Platzieren: Gleisabschnittsinformation/Fahrstraßensperren anzeigen" + +#: tool.lua +msgid "No route locks set" +msgstr "Keine Fahrstraßensperren gehalten" + +#: tool.lua +msgid "No track section at this location!" +msgstr "Kein Gleisabschnitt gefunden!" + +#: tool.lua +msgid "Node is not a track!" +msgstr "Block ist kein Gleis!" + +#: tool.lua +msgid "Route lock inspector" +msgstr "Fahrstraßensperren-Inspektor" + +#: tool.lua +msgid "Route locks currently put:" +msgstr "Gesetzte Fahrstraßensperren:" + +#: tsr_rail.lua +msgid "Point Speed Restriction Track" +msgstr "Geschwindigkeitskontrollgleis" + +#: tsr_rail.lua +msgid "Point speed restriction: @1" +msgstr "Geschwindigkeitskontrolle: @1" + +#: tsr_rail.lua +msgid "Set point speed restriction:" +msgstr "Setze Kontrollgeschwindigkeit:" + +#: tsr_rail.lua +msgid "You are not allowed to configure this track without the @1 privilege." +msgstr "Sie dürfen ohne das „@1“-Privileg dieses Gleis nicht konfigurieren." + +#: tsr_rail.lua +msgid "You are not allowed to configure this track." +msgstr "Sie dürfen dieses Gleis nicht konfigurieren." + +#~ msgid "(Doors closed)" +#~ msgstr "(Türen geschlossen)" + +#~ msgid "3-way turnout" +#~ msgstr "Dreiwegweiche" + +#~ msgid "90+Angle Diamond Crossing Track" +#~ msgstr "Kreuzung mit einem achsenparallelen Gleis" + +#~ msgid "<No coupler>" +#~ msgstr "<Keine Kupplung vorhanden>" + +#~ msgid "@1 Platform (45 degree)" +#~ msgstr "Hoher @1-Bahnsteig (45°)" + +#~ msgid "@1 Platform (high)" +#~ msgstr "Hoher @1-Bahnsteig" + +#~ msgid "@1 Platform (low)" +#~ msgstr "Niedriger @1-Bahnsteig" + +#~ msgid "@1 Platform (low, 45 degree)" +#~ msgstr "Niedriger @1-Bahnsteig (45°)" + +#~ msgid "@1 Slope" +#~ msgstr "@1 Steigung" + +#~ msgid "ATC Kick command warning: doors are closed." +#~ msgstr "" +#~ "Zugbeeinflussung: Wegen geschlossener Türen werden Fahrgäste nicht zum " +#~ "Ausstieg gezwungen." + +#~ msgid "ATC Kick command warning: train moving." +#~ msgstr "" +#~ "Zugbeeinflussung: Der Zug befindet sich in Bewegung, Fahrgäste werden " +#~ "nicht zum Ausstieg gezwungen." + +#~ msgid "ATC Reverse command warning: didn't reverse train, train moving." +#~ msgstr "" +#~ "Zugbeeinflussung: Der Zug befindet sich in Bewegung und kann nicht " +#~ "umgekehrt werden." + +#~ msgid "ATC command parse error: Unknown command: @1" +#~ msgstr "Zugbeeinflussung: Unbekannter Befehl: @1" + +#~ msgid "ATC command syntax error: I statement not closed: @1" +#~ msgstr "Zugbeeinflussung: Unvollständiger I-Befehl: @1" + +#~ msgid "ATC controller" +#~ msgstr "Zugbeeinflussungsgleis" + +#~ msgid "" +#~ "ATC controller, mode @1\n" +#~ "Channel: @2" +#~ msgstr "" +#~ "Zugbeeinflussungsgleis in Betriebsart „@1“\n" +#~ "Kanal: @2" + +#~ msgid "" +#~ "ATC controller, mode @1\n" +#~ "Command: @2" +#~ msgstr "" +#~ "Zugbeeinflussungsgleis in Betriebsart „@1“\n" +#~ "Befehl: @2" + +#~ msgid "Access to @1" +#~ msgstr "Zugang zu @1" + +#~ msgid "Andrew's Cross" +#~ msgstr "Andreaskreuz" + +#~ msgid "Back of train would end up off track, cancelling." +#~ msgstr "Der hinterer Teil dez Zuges wäre nicht auf dem Gleis." + +#~ msgid "Big Industrial Train Engine" +#~ msgstr "Große Industrielle Lokomotive" + +#~ msgid "Box Wagon" +#~ msgstr "Güterwaggon" + +#~ msgid "Buffer and Chain Coupler" +#~ msgstr "Schraubenkupplung" + +#~ msgid "Bumper" +#~ msgstr "Prellbock" + +#~ 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)." + +#~ 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)" + +#~ 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." + +#, fuzzy +#~ msgid "Can't place: Not enough slope items left (@1 required)" +#~ msgstr "" +#~ "Es kann nicht platziert werden: Sie haben nicht genug Steigungsblöcke, es " +#~ "werden insgesamt @1 benötigt." + +#, fuzzy +#~ msgid "Can't place: There's no slope of length @1" +#~ msgstr "" +#~ "Es kann nicht platziert werden: die Steigung der Länge @1 ist nicht " +#~ "definiert." + +#, fuzzy +#~ msgid "Can't place: no supporting node at upper end." +#~ msgstr "" +#~ "Es kann nicht platziert werden: es gibt keinen unterstützenden Block am " +#~ "Ende der Steigung." + +#, fuzzy +#~ msgid "Can't place: not pointing at node" +#~ msgstr "Es kann nicht platziert werden: Sie zeigen nicht auf einem Block." + +#~ msgid "Can't place: protected position!" +#~ msgstr "Es kann nicht platziert werden: diese Position ist geschützt." + +#, fuzzy +#~ msgid "Can't place: space occupied!" +#~ msgstr "Es kann nicht platziert werden: Diese Position ist besetzt." + +#~ msgid "Command" +#~ msgstr "Befehl" + +#~ msgid "Command (on)" +#~ msgstr "Befehl (wenn aktiviert)" + +#~ msgid "Default Seat (driver stand)" +#~ msgstr "Standardsitzplatz (Führerstand)" + +#~ msgid "Dep. Speed" +#~ msgstr "Zielgeschwindigkeit bei Abfahrt" + +#~ msgid "Deprecated Track" +#~ msgstr "ausrangiertes Gleis, nicht verwenden." + +#~ msgid "Detailed Steam Engine" +#~ msgstr "Detaillierte Dampflokomotive" + +#~ msgid "Detector Rail" +#~ msgstr "Detektorgleis" + +#~ msgid "Diagonal Diamond Crossing Track" +#~ msgstr "Diagonale Gleiskreuzung" + +#~ msgid "Digiline channel" +#~ msgstr "Digiline-Kanal" + +#~ msgid "Door Delay" +#~ msgstr "Zeit für die Türschließung" + +#~ msgid "Door Side" +#~ msgstr "Türseite" + +#~ msgid "Doors are closed! (Try holding sneak key!)" +#~ msgstr "Die Türen sind geschlossen." + +#~ 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." + +#, fuzzy +#~ msgid "Driver Stand" +#~ msgstr "Führerstand" + +#~ msgid "Driver Stand (left)" +#~ msgstr "Führerstand Links" + +#~ msgid "Driver Stand (right)" +#~ msgstr "Führerstand Rechts" + +#~ msgid "Driver stand" +#~ msgstr "Führerstand" + +#~ msgid "Driver's cab" +#~ msgstr "Führerstand" + +#~ msgid "Get off" +#~ msgstr "Aussteigen" + +#~ msgid "Get off (forced)" +#~ msgstr "Ausstieg zwingen" + +#~ msgid "Industrial Train Engine" +#~ msgstr "Industrielle Lokomotive" + +#~ msgid "Industrial tank wagon" +#~ msgstr "Tankwaggon" + +#~ msgid "Industrial wood wagon" +#~ msgstr "Holztransportwaggon" + +#~ msgid "Japanese Train Engine" +#~ msgstr "Japanische Personenzug-Lokomotive" + +#~ msgid "Japanese Train Inter-Wagon Connection" +#~ msgstr "Waggonzwischenverbindung Japanischer Personenzüge" + +#~ msgid "Japanese Train Wagon" +#~ msgstr "Japanischer Personenzug-Passagierwaggon" + +#, fuzzy +#~ msgid "Japanese signal pole" +#~ msgstr "Japanischer Personenzug-Passagierwaggon" + +#~ msgid "Kick out passengers" +#~ msgstr "Fahrgäste zum Ausstieg zwingen" + +#~ msgid "Lampless Signal" +#~ msgstr "Mechanisches Signal" + +#~ msgid "Line" +#~ msgstr "Linie" + +#~ msgid "Loading Track" +#~ msgstr "Beladungsgleis" + +#~ msgid "Lock couples" +#~ msgstr "Kupplungen sperren" + +#~ msgid "LuaATC component with error: @1" +#~ msgstr "LuaATC-Bauteil mit Fehlermeldung: @1" + +#~ msgid "No such lua entity." +#~ msgstr "" +#~ "Sie zeigen nicht auf einem Objekt, das mit diesem Werkzeug kopiert werden " +#~ "kann." + +#~ msgid "No such train: @1." +#~ msgstr "Es gibt keinen mit „@1“ identifizierbaren Zug." + +#~ msgid "No such wagon: @1." +#~ msgstr "Es gibt keinen mit „@1“ identifizierbaren Waggon." + +#, fuzzy +#~ msgid "Not allowed to do this." +#~ msgstr "Sie dürfen dieses Gleis nicht konfigurieren." + +#~ msgid "Passenger Wagon" +#~ msgstr "Passagierwaggon" + +#, fuzzy +#~ msgid "Passenger area" +#~ msgstr "Passagierwaggon" + +#~ 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." + +#~ msgid "Perpendicular Diamond Crossing Track" +#~ msgstr "Kreuzung mit zueinander orthogonalen Gleisen" + +#~ msgid "Position is occupied by a train." +#~ msgstr "Ein Zug steht an dieser Position." + +#~ msgid "Save" +#~ msgstr "Speichern" + +#~ msgid "Save wagon properties" +#~ msgstr "Waggon-Einstellungen speichern" + +#~ msgid "Scharfenberg Coupler" +#~ msgstr "Scharfenbergkupplung" + +#~ msgid "Select seat:" +#~ msgstr "Wählen Sie einen Sitzplatz aus:" + +#~ msgid "Show Inventory" +#~ msgstr "Inventar Zeigen" + +#~ msgid "Speed:" +#~ msgstr "Geschw.:" + +#~ msgid "Station Code" +#~ msgstr "Kennzeichen der Haltestelle" + +#~ 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." + +#~ msgid "Station/Stop Track" +#~ msgstr "Gleis zur Kennzeichnung einer Haltestelle" + +#~ msgid "Steam Engine" +#~ msgstr "Dampflokomotive" + +#~ msgid "Stop Time" +#~ msgstr "Wartezeit" + +#~ msgid "Subway Passenger Wagon" +#~ msgstr "U-Bahn-Waggon" + +#~ msgid "Target:" +#~ msgstr "Zielges.:" + +#~ msgid "Text displayed inside train" +#~ msgstr "Innere Anzeige" + +#~ msgid "Text displayed outside on train" +#~ msgstr "Äußere Anzeige" + +#, fuzzy +#~ msgid "That wagon does not exist!" +#~ msgstr "In diesem Waggon ist kein Sitzplatz vorhanden." + +#~ msgid "The clipboard couldn't access the metadata. Copy failed." +#~ msgstr "" +#~ "Wegen des fehlgeschlagenen Zugriffs auf die Metadaten konnte der Zug " +#~ "nicht kopiert werden." + +#~ 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." + +#~ msgid "The clipboard is empty." +#~ msgstr "Das Clipboard ist leer." + +#, fuzzy +#~ msgid "The track you are trying to place the wagon on is not long enough!" +#~ msgstr "Das Gleis, auf dem der Waggon platziert werden woll, ist zu kurz." + +#~ 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." + +#~ msgid "The wagon's inventory is not empty." +#~ msgstr "Das Inventar dieses Waggons ist nicht leer." + +#~ msgid "There's a Signal Influence Point here." +#~ msgstr "Hier ist ein Signal-Beeinflussungspunkt." + +#, fuzzy +#~ msgid "This Wagon ID" +#~ msgstr "Der Waggon ist voll." + +#, fuzzy +#~ msgid "This node can't be changed using the trackworker!" +#~ msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug bearbeitet werden." + +#, fuzzy +#~ msgid "This node can't be rotated using the trackworker!" +#~ msgstr "Dieser Block kann nicht mit dem Gleiswerkzeug gedreht werden." + +#~ msgid "This position is protected!" +#~ msgstr "Diese Position ist geschützt!" + +#~ 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." + +#~ msgid "This track can not be changed." +#~ msgstr "Dieses Gleis kann nicht geändert werden." + +#, fuzzy +#~ msgid "This track can not be removed!" +#~ msgstr "Dieses Gleis kann nicht entfernt werden." + +#, fuzzy +#~ msgid "This track can not be rotated!" +#~ msgstr "Dieses Gleis kann nicht gedreht werden." + +#~ msgid "This wagon has no seats." +#~ msgstr "In diesem Waggon ist kein Sitzplatz vorhanden." + +#~ msgid "This wagon is full." +#~ msgstr "Der Waggon ist voll." + +#~ msgid "This wagon is owned by @1, you can't destroy it." +#~ msgstr "Dieser Waggon gehört @1, Sie dürfen ihn nicht abbauen." + +#~ msgid "Track" +#~ msgstr "Gleis" + +#~ 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" + +#, fuzzy +#~ msgid "Train " +#~ msgstr "Der Zug wurde Kopiert." + +#~ msgid "Train copied." +#~ msgstr "Der Zug wurde Kopiert." + +#~ 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" + +#~ msgid "Unconfigured ATC controller" +#~ msgstr "Nicht konfiguiertes Zugbeeinflussungsgleis" + +#~ msgid "Unconfigured LuaATC component" +#~ msgstr "Nicht konfiguierter LuaATC-Bauteil" + +#~ msgid "Unloading Track" +#~ msgstr "Abladungsgleis" + +#~ msgid "Use Sneak+rightclick to bypass closed doors!" +#~ msgstr "" +#~ "Nutzen Sie Schleichen+Rechtsklick, um trotz geschlossener Türen " +#~ "einzusteigen." + +#, fuzzy +#~ msgid "Wagon Properties Tool" +#~ msgstr "Waggon-Einstellungen" + +#~ 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." + +#~ msgid "Wagon properties" +#~ msgstr "Waggon-Einstellungen" + +#~ msgid "Wallmounted Signal (left)" +#~ msgstr "An der linken Seite montiertes Signal" + +#~ msgid "Wallmounted Signal (right)" +#~ msgstr "An der rechten Seite montiertes Signal" + +#~ msgid "Wallmounted Signal (top)" +#~ msgstr "An der Decke montiertes Signal" + +#~ 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." + +#~ msgid "Y-turnout" +#~ msgstr "Y-Weiche" + +#~ msgid "You are not allowed to access the driver stand." +#~ msgstr "Sie haben keinen Zugang zum Führerstand." + +#~ 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." + +#~ 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." + +#~ msgid "You are not allowed to build tracks at this protected position." +#~ msgstr "Sie dürfen an geschützten Stellen kein Gleis bauen." + +#~ 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." + +#~ 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." + +#~ 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." + +#, fuzzy +#~ msgid "You are not allowed to modify this protected track." +#~ msgstr "Sie dürfen an geschützten Stellen kein Gleis bauen." + +#~ 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." + +#~ 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." + +#~ msgid "You can't get on this wagon." +#~ msgstr "Sie können nicht in diesen Waggon einsteigen." + +#~ msgid "You do not have the @1 privilege." +#~ msgstr "Ihnen fehlt das „@1“-Privileg." + +#, fuzzy +#~ msgid "You don't have the train_operator privilege." +#~ msgstr "Ihnen fehlt das „@1“-Privileg." + +#~ 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_interlocking/po/fr.po b/advtrains_interlocking/po/fr.po new file mode 100644 index 0000000..1ebf2bb --- /dev/null +++ b/advtrains_interlocking/po/fr.po @@ -0,0 +1,1629 @@ +msgid "" +msgstr "" +"Project-Id-Version: advtrains\n" +"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n" +"POT-Creation-Date: 2025-06-11 23:21+0200\n" +"PO-Revision-Date: 2025-03-25 15:06+0100\n" +"Last-Translator: Tanavit <tanavit@posto.ovh>\n" +"Language-Team: French\n" +"Language: fr\n" +"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" + +#: autonaming.lua +msgid "Prefix set, next signal name will be: @1" +msgstr "" + +#: autonaming.lua +msgid "Prefix unset, signals are not auto-named for you!" +msgstr "" + +#: autonaming.lua +msgid "" +"Sets the current prefix for automatically naming interlocking components. " +"Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on" +msgstr "" + +#: database.lua +msgid "Created track section @1 from @2 TCBs" +msgstr "" + +#: database.lua +msgid "Track section inconsistent here, repairing..." +msgstr "" + +#: database.lua +msgid "Track section partition found, repairing..." +msgstr "" + +#: init.lua +msgid "Can set up track sections, routes and signals" +msgstr "" + +#: route_prog.lua +msgid "@1 Terminal @2" +msgstr "" + +#: route_prog.lua +msgid "@1 is held in @2 position when this route is set and freed " +msgstr "" + +#: route_prog.lua +msgid "@1 is no longer affected when this route is set." +msgstr "" + +#: route_prog.lua +msgid "Added track section @1 to the route." +msgstr "" + +#: route_prog.lua +msgid "Advance to next route section" +msgstr "" + +#: route_prog.lua +msgid "Advance/Complete Route" +msgstr "" + +#: route_prog.lua +msgid "Advancing over next section is" +msgstr "" + +#: route_prog.lua +msgid "Cancel if you are unsure!" +msgstr "" + +#: route_prog.lua +msgid "Cancel route programming" +msgstr "" + +#: route_prog.lua +msgid "Cannot program route without a target" +msgstr "" + +#: route_prog.lua tcb_ts_ui.lua +msgid "End of interlocking" +msgstr "" + +#: route_prog.lua +msgid "Enter Route Name" +msgstr "" + +#: route_prog.lua +msgid "Finish programming route" +msgstr "" + +#: route_prog.lua +msgid "Finish route HERE" +msgstr "" + +#: route_prog.lua +msgid "Finish route at end of NEXT section" +msgstr "" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 (punch to unfix)" +msgstr "" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 until segment #@3 is freed." +msgstr "" + +#: route_prog.lua route_ui.lua signal_aspect_ui.lua tcb_ts_ui.lua tool.lua +msgid "Insufficient privileges to use this!" +msgstr "Privilèges insuffisants pour utiliser ceci !" + +#: route_prog.lua +msgid "Next section is diverging (>2 TCBs)" +msgstr "" + +#: route_prog.lua +#, fuzzy +msgid "Route discarded." +msgstr "Changement d'état de l'itinéraire." + +#: route_prog.lua +msgid "Route ends at signal:" +msgstr "" + +#: route_prog.lua +msgid "Route leads into" +msgstr "" + +#: route_prog.lua +msgid "" +"Route programming mode active. Punch TCBs to add route segments, punch " +"turnouts to lock them." +msgstr "" + +#: route_prog.lua +msgid "Route section @1 removed." +msgstr "" + +#: route_prog.lua +msgid "Routes should in most cases end at signals." +msgstr "" + +#: route_prog.lua +msgid "Save Route" +msgstr "" + +#: route_prog.lua +msgid "Step back one section" +msgstr "" + +# Routage est il le bon terme ? +#: route_prog.lua +#, fuzzy +msgid "Successfully programmed route." +msgstr "Succès d'invalidation des routages des trains" + +#: route_prog.lua +msgid "The origin TCB has become unknown during programming. Try again." +msgstr "" + +#: route_prog.lua +msgid "This TCB is not suitable as" +msgstr "" + +#: route_prog.lua +msgid "This TCB is unconfigured, you first need to assign it to a rail" +msgstr "" + +#: route_prog.lua +msgid "WARNING: Route does not end at a signal." +msgstr "" + +#: route_prog.lua +msgid "[Route programming] " +msgstr "" + +#: route_prog.lua +msgid "impossible at this place." +msgstr "" + +#: route_prog.lua +msgid "non-interlocked area" +msgstr "" + +#: route_prog.lua +msgid "route continuation." +msgstr "" + +#: route_ui.lua +msgid "<< Select a route part to edit options" +msgstr "" + +#: route_ui.lua +#, fuzzy +msgid "<Default Aspect>" +msgstr "Siège par défaut" + +#: route_ui.lua +msgid "ARS Rule List" +msgstr "" + +#: route_ui.lua +#, fuzzy +msgid "Announce distant signal" +msgstr "Signal distant métro de Munich (" + +#: route_ui.lua +msgid "Back to signal" +msgstr "" + +#: route_ui.lua +msgid "Call-on (section may be occupied)" +msgstr "" + +#: route_ui.lua +msgid "Clone Route" +msgstr "" + +#: route_ui.lua +msgid "Delete Route" +msgstr "" + +#: route_ui.lua +msgid "Error:" +msgstr "" + +#: route_ui.lua +msgid "New From Route" +msgstr "" + +#: route_ui.lua +msgid "No Signal at this TCB" +msgstr "" + +#: route_ui.lua +msgid "Route name" +msgstr "" + +#: route_ui.lua +msgid "Route overview" +msgstr "" + +#: route_ui.lua +msgid "Save ARS List" +msgstr "" + +#: route_ui.lua +msgid "Section Options:" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Set" +msgstr "" + +#: route_ui.lua signal_aspect_ui.lua +#, fuzzy +msgid "Signal Aspect:" +msgstr "Signal" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 has different section than previous TCB" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is missing" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is not assigned to previous track section" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Track section after @1 missing" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Turnout/component missing at @1" +msgstr "" + +#: routesetting.lua +msgid "Lock conflict at @1, Held locked by:" +msgstr "" + +#: routesetting.lua +msgid "No TCB found at @1. Please update or reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "No track section adjacent to @1. Please reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "Route @1 from signal @2" +msgstr "" + +#: routesetting.lua +msgid "Route @1 from signal @2, segment #@3" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' already has route set from @2:" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' is occupied!" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' not found!" +msgstr "" + +#: routesetting.lua +msgid "" +"TCB at @1 has different section than previous TCB. Please update track " +"section or reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "" +"Turnout/component missing at @1. Please update track section or reconfigure " +"route!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "<assign distant>" +msgstr "" + +#: signal_aspect_ui.lua +msgid "<none>" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Assigned distant signal to the main signal at @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Assigned signal to the TCB at @1" +msgstr "" + +#: signal_aspect_ui.lua tool.lua +msgid "Clear" +msgstr "" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Influence point of another signal is already present!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Node is too far away. Aborted." +msgstr "" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Please look in train's driving direction and punch rail " +"to set influence point." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Successfully set influence point" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: This is not a normal two-connection rail! Aborted." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Dst: @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Influence point is not set." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Influence point is set at @1." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Modify" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Set distant signal: Punch the main signal to assign!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Set influence point" +msgstr "" + +#: smartroute.lua +msgid "Apply" +msgstr "" + +#: smartroute.lua +msgid "Route search: @1 found" +msgstr "" + +#: smartroute.lua +msgid "Search further" +msgstr "" + +#: smartroute.lua +msgid "Smartroute: No track section directly ahead!" +msgstr "" + +#: smartroute.lua +msgid "Smartroute: TCBS or routes don't exist here!" +msgstr "" + +#: tcb_ts_ui.lua +msgid " (invalid)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "@1 locks in state @2" +msgstr "" + +#: tcb_ts_ui.lua +msgid "A route is requested from this signal:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Add locks" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Assign a signal" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Automatic Working is active." +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Automatic routesetting" +msgstr "Routage à distance" + +#: tcb_ts_ui.lua +msgid "Boundary TCBs:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Can't remove TCB: Both sides must have no signal assigned!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Can't remove track, a train is here!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Cancel" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Cancel Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"Cannot delete route which has ARS rules, please review and then delete " +"through edit dialog!" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Clear locks" +msgstr "Autorisation (procédez)" + +#: tcb_ts_ui.lua +msgid "" +"Configuring TCB: Already existed at this position, it is now linked to this " +"TCB marker" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Cannot use static signals for routesetting. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Internal error, TCBS doesn't exist. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Node is too far away. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Not a compatible signal. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the rail you want to assign this TCB to." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the signal to assign." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully assigned signal." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully configured TCB" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: This is not a normal two-connection rail! Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Create Interlocked Track Section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Delete this route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Disable Automatic Working" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Distant signal triggers ARS" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Edit" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Enable Automatic Working" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Error: TS modified, abort!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Final TCBS unset (legacy-style buffer route)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Fixed route locks (e.g. level crossings):" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Link @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Link: @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Multiple routes are requested (first available is set):" +msgstr "" + +#: tcb_ts_ui.lua +msgid "NOTE: ARS is disabled." +msgstr "" + +#: tcb_ts_ui.lua +msgid "New (Manual)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No Link" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No routes are yet defined." +msgstr "" + +#: tcb_ts_ui.lua +msgid "No trains on this section." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Punch components to add fixed locks. (punch anything else = end)" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Remove Section" +msgstr "Routage à distance" + +#: tcb_ts_ui.lua +msgid "Reset section state" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Reset track section" +msgstr "Inversion du sens de marche" + +#: tcb_ts_ui.lua +msgid "Reset track section @1!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route has been set." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is re-set when a train passed." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is set over this signal by:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is set: " +msgstr "" + +#: tcb_ts_ui.lua +msgid "Routes are not automatically set." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Routes:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Section holds @1 route locks." +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Section name" +msgstr "Nom de Station" + +#: tcb_ts_ui.lua +msgid "Set ARS default route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Set Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Setting fixed locks finished!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Show" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Show track section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Side @1" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signal at @1" +msgstr "Signal" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signal name" +msgstr "Signal" + +#: tcb_ts_ui.lua +msgid "Signal on B side already assigned!" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signalling" +msgstr "Signal" + +#: tcb_ts_ui.lua +msgid "Smart Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB Link: Select linked TCB now!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB already existed at this position, now linked to this node" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB assigned to @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "This TCB has been removed. Please dig marker." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This is a pure distant signal\n" +"No route is currently set through." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This is an always-halt signal (e.g. a buffer)\n" +"No routes can be set from here." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This will clear the list of trains\n" +"and the routesetting status of this section.\n" +"Are you sure?" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This will remove the track section and set all its end points to End Of " +"Interlocking" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Track Circuit Break" +msgstr "Il y a un \"Track Circuit Break\" ici." + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Track Circuit Break Configuration" +msgstr "Il y a un \"Track Circuit Break\" ici." + +#: tcb_ts_ui.lua +msgid "Track Section Detail - @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Trains on this section:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Unconfigured Track Circuit Break, right-click to assign." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Wait for this route to be cancelled in order to do anything here." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Waiting for route to be set..." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Yes" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"You cannot modify track sections when a route is set or a train is on the " +"section." +msgstr "" + +#: tool.lua +msgid "Emplace manual lock" +msgstr "" + +#: tool.lua +msgid "" +"Interlocking tool\n" +"Punch: Highlight track section\n" +"Place: check route locks/show track section info" +msgstr "" + +#: tool.lua +msgid "No route locks set" +msgstr "" + +#: tool.lua +msgid "No track section at this location!" +msgstr "" + +#: tool.lua +msgid "Node is not a track!" +msgstr "" + +#: tool.lua +msgid "Route lock inspector" +msgstr "" + +#: tool.lua +msgid "Route locks currently put:" +msgstr "" + +#: tsr_rail.lua +msgid "Point Speed Restriction Track" +msgstr "Voie de point de limitation de vitesse" + +#: tsr_rail.lua +msgid "Point speed restriction: @1" +msgstr "Point de limitation de vitesse : @1" + +#: tsr_rail.lua +msgid "Set point speed restriction:" +msgstr "Placez un point de limitation de vitesse :" + +#: tsr_rail.lua +msgid "You are not allowed to configure this track without the @1 privilege." +msgstr "Vous n'êtes pas autorisé à configurer cette voie sans le privilège @1." + +#: tsr_rail.lua +msgid "You are not allowed to configure this track." +msgstr "Vous n'êtes pas autorisé à configurer cette voie." + +#~ msgid " does not exist or is invalid" +#~ msgstr " n'existe pas ou est invalide" + +#~ msgid " is at " +#~ msgstr " est à la position " + +#~ msgid " units" +#~ msgstr " Unités" + +#~ msgid " wagon:destroy(): data is not set!" +#~ msgstr " Appel de wagon:destroy() : données non définies !" + +#~ msgid "!!! Train off track !!!" +#~ msgstr "!!! Train hors voie !!!" + +#~ msgid "(Doors closed)" +#~ msgstr "(Portes closes)" + +#~ msgid "(log" +#~ msgstr "(log" + +#~ msgid ", using placeholder" +#~ msgstr ", dans un espace réservé" + +#~ msgid "3-way turnout" +#~ msgstr "Embranchement triple" + +#~ msgid "90+Angle Diamond Crossing Track" +#~ msgstr "Croisement perpendiculo-diagonal" + +#~ msgid "<No coupler>" +#~ msgstr "<Pas de coupleur>" + +#~ msgid "@1 Platform (45 degree)" +#~ msgstr "Quai @1 (haut, 45°)" + +#~ msgid "@1 Platform (high)" +#~ msgstr "Quai @1 (haut)" + +#~ msgid "@1 Platform (low)" +#~ msgstr "Quai @1 (bas)" + +#~ msgid "@1 Platform (low, 45 degree)" +#~ msgstr "Quai @1 (bas, 45°)" + +#~ msgid "@1 Slope" +#~ msgstr "Pente @1" + +#~ msgid "ATC Kick command warning: doors are closed." +#~ msgstr "Avertissement commande ATC Éjecter : portes closes." + +#~ msgid "ATC Kick command warning: train moving." +#~ msgstr "Avertissement commande ATC Éjecter : train en mouvement." + +#~ msgid "ATC Reverse command warning: didn't reverse train, train moving." +#~ msgstr "" +#~ "Attention : Commande ATC de renversement impossible car le train se " +#~ "déplace." + +#~ msgid "ATC command parse error: Unknown command: @1" +#~ msgstr "Erreur d'analyse de commande ATC : Commande inconnue : @1" + +#~ msgid "ATC command syntax error: I statement not closed: @1" +#~ msgstr "" +#~ "Erreur de syntaxe de commande ATC : instruction \"I\" incomplète : @1" + +#~ msgid "ATC controller" +#~ msgstr "Controlleur ATC" + +#~ msgid "" +#~ "ATC controller, mode @1\n" +#~ "Channel: @2" +#~ msgstr "" +#~ "Controlleur ATC, mode @1\n" +#~ "Canal : @2" + +#~ msgid "" +#~ "ATC controller, mode @1\n" +#~ "Command: @2" +#~ msgstr "" +#~ "Controlleur ATC, mode @1\n" +#~ "Commande : @2" + +#~ msgid "Access to @1" +#~ msgstr "Accès à @1" + +#~ msgid "Advtrains Status: no_action" +#~ msgstr "État d'advtrains : aucune action" + +#~ msgid "Advtrains is already running normally!" +#~ msgstr "Advtrains fonctionne déjà correctement !" + +#~ msgid "Allow these players to access your wagon:" +#~ msgstr "Autoriser ces joueurs à embarquer :" + +#~ msgid "Andrew's Cross" +#~ msgstr "Croix de Saint André" + +#~ msgid "Back of train would end up off track, cancelling." +#~ msgstr "La fin du train serait hors voie : annulation." + +#~ msgid "Big Industrial Train Engine" +#~ msgstr "Grosse locomotive industrielle" + +#~ msgid "Boiler" +#~ msgstr "Chaudière à vapeur" + +#~ msgid "Box Wagon" +#~ msgstr "Wagon de frêt" + +#~ msgid "Buffer and Chain Coupler" +#~ msgstr "Attelage à tampon et vis" + +#~ msgid "Bumper" +#~ msgstr "Heurtoir" + +#~ 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)." + +#~ 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" + +#~ 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" + +#~ msgid "Can place and dig tracks in unprotected areas" +#~ msgstr "" +#~ "Possibilité de poser ou retirer des voies dans les zones non protégées" + +#~ 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" + +#~ msgid "Can place, remove and operate trains" +#~ msgstr "Possibilité de poser, retirer ou opérer les trains" + +#~ 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: Not enough slope items left (@1 required)" +#~ msgstr "" +#~ "Placement impossible : quantité insuffisante de voie pentue (@1 manquant)" + +#~ msgid "Can't place: There's no slope of length @1" +#~ msgstr "Placement impossible : il n'y a pas de voie pentue de longueur @1" + +#~ msgid "Can't place: no supporting node at upper end." +#~ msgstr "" +#~ "Placement impossible : pas de nœud d'appui à l'extrémité supérieure." + +#~ msgid "Can't place: not pointing at node" +#~ msgstr "Placement impossible : ne pointe pas un nœud" + +#~ msgid "Can't place: protected position!" +#~ msgstr "Placement impossible : emplacement protégé" + +#~ msgid "Can't place: space occupied!" +#~ msgstr "Placement impossible : espace occupé !" + +#~ msgid "Caution" +#~ msgstr "Attention" + +#~ msgid "Chimney" +#~ msgstr "Cheminée" + +#~ msgid "Clear 'Disable ARS' flag" +#~ msgstr "Effacer le drapeau \"Désactiver l'ARS\"" + +#~ msgid "Clear Local Environment" +#~ msgstr "Effacer l'environnement LuaATC" + +#~ msgid "Closed" +#~ msgstr "Fermé" + +#~ msgid "Code" +#~ msgstr "Code" + +#~ msgid "Command" +#~ msgstr "Commande" + +#~ msgid "Command (on)" +#~ msgstr "Commande (marche)" + +#~ msgid "" +#~ "Crash during advtrains main step - skipping the shutdown save operation " +#~ "to not save inconsistent data!" +#~ msgstr "" +#~ "Crash durant le pas principal d'advtrains - saut de l'opération de " +#~ "sauvegarde de terminaison pour éviter l'enregistrement de données " +#~ "corrompues !" + +#~ msgid "Current FC: " +#~ msgstr "Code de fret courant: " + +#~ msgid "Danger (halt)" +#~ msgstr "Danger (stop)" + +#~ msgid "" +#~ "Data is being saved. While saving, advtrains will remove the players from " +#~ "trains. Save files will be reloaded afterwards!" +#~ msgstr "" +#~ "Données en cours de sauvegarde. Durant cette phase, advtrains débarquera " +#~ "les joueurs des trains. Les fichiers de sauvegarde seront ultérieurement " +#~ "rechargés !" + +#~ msgid "Default Seat (driver stand)" +#~ msgstr "Siège par défaut (poste de pilotage)" + +# Routage est il le bon terme ? +#~ msgid "Delete all train routes, force them to recalculate" +#~ msgstr "Suppression et recalcul de tous les routages" + +#~ msgid "Dep. Speed" +#~ msgstr "Vit. de départ" + +#~ msgid "Deprecated Track" +#~ msgstr "Voie déconseillée" + +#~ msgid "" +#~ "Destroying wagon with inventory, but inventory is not found? Shouldn't " +#~ "happen!" +#~ msgstr "Desctruction d'un wagon avec inventaire introuvable ? Anomalie !" + +#~ msgid "" +#~ "Detach all players, especially the offline ones, from all trains. Use " +#~ "only when no one serious is on a train." +#~ msgstr "" +#~ "Débarque tous les joueurs, en particulier ceux déconnectés, de tous les " +#~ "trains. À n'utiliser que quand aucun joueur sérieux n'a embarqué." + +#~ msgid "Detailed Steam Engine" +#~ msgstr "Locomotive à vapeur complexe" + +#~ msgid "Detector Rail" +#~ msgstr "Voie détectrice" + +#~ msgid "Diagonal Diamond Crossing Track" +#~ msgstr "Croisement diagonal" + +#~ msgid "Digiline channel" +#~ msgstr "Canal Digiline" + +#~ msgid "Disable the advtrains globalstep temporarily" +#~ msgstr "Désactive temporairement le pas global d'advtrains" + +#~ msgid "Disabled advtrains successfully" +#~ msgstr "Succès de la désactivation d'advtrains" + +#~ msgid "Door Delay" +#~ msgstr "Durée d'ouverture des portes" + +#~ msgid "Door Side" +#~ msgstr "Ouv. des portes coté" + +#~ msgid "Doors are closed! (Try holding sneak key!)" +#~ msgstr "Portes closes : (Essayez la \"sneak key\"!\")" + +#~ 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." + +#~ msgid "Driver Stand" +#~ msgstr "Poste de pilotage" + +#~ msgid "Driver Stand (left)" +#~ msgstr "Poste de pilotage (gauche)" + +#~ msgid "Driver Stand (right)" +#~ msgstr "Poste de pilotage (droit)" + +#~ msgid "Driver stand" +#~ msgstr "Poste de pilotage" + +#~ msgid "Driver's cab" +#~ msgstr "Cabine de pilotage" + +#~ msgid "Freight Code:" +#~ msgstr "Code de frêt :" + +#~ msgid "Get off" +#~ msgstr "Débarquer" + +#~ msgid "Get off (forced)" +#~ msgstr "Débarquer (de force)" + +#~ msgid "Industrial Train Engine" +#~ msgstr "Locomotive industrielle" + +#~ msgid "Industrial tank wagon" +#~ msgstr "Wagon-citerne industriel" + +#~ msgid "Industrial wood wagon" +#~ msgstr "Wagon grumier industriel" + +#~ msgid "Instructed to save() but load() was never called!" +#~ msgstr "Appel de save() requis sans appel préalable de load() !" + +#~ msgid "Japanese Train Engine" +#~ msgstr "Motrice Japonaise" + +#~ msgid "Japanese Train Inter-Wagon Connection" +#~ msgstr "Passage inter-voiture de train Japonais" + +#~ msgid "Japanese Train Wagon" +#~ msgstr "Voiture Japonaise" + +#~ msgid "Japanese signal pole" +#~ msgstr "Voiture Japonaise" + +#~ msgid "Kick out passengers" +#~ msgstr "Éjecter les passagers" + +#~ msgid "Lampless Signal" +#~ msgstr "Sémaphore" + +#~ msgid "Left" +#~ msgstr "Gauche" + +#~ msgid "Left,Right,Closed;" +#~ msgstr "Gauche,Droit,Fermé;" + +#~ msgid "Line" +#~ msgstr "Ligne" + +#~ msgid "Liquid: " +#~ msgstr "Liquide : " + +#~ msgid "Liquid: empty" +#~ msgstr "Liquide : vide" + +#~ msgid "Loading Track" +#~ msgstr "Voie de Chargement" + +#~ msgid "Lock couples" +#~ msgstr "Verrouiller l'accouplement" + +#~ msgid "LuaATC Environment" +#~ msgstr "Environnement LuaATC" + +#~ msgid "LuaATC Mesecon Controller" +#~ msgstr "Commande Mesecon de LuaATC" + +#~ msgid "LuaATC Operation Panel" +#~ msgstr "Panneau de commande de LuaATC" + +#~ msgid "LuaATC component assigned to an invalid environment" +#~ msgstr "Composant LuaATC assigné à un environnement invalide" + +#~ msgid "LuaATC component assigned to environment '@1'" +#~ msgstr "Composant LuaATC assigné à l'environnement '@1'" + +#~ msgid "LuaATC component with error: @1" +#~ msgstr "Erreur @1 du composant LuaATC" + +#~ msgid "Missing train_operator privilege" +#~ msgstr "Privilège \"train_operator\" manquant" + +#~ msgid "Munich U-Bahn Main Signal (" +#~ msgstr "Signal principal métro de Munich (" + +#~ msgid "Next FC:" +#~ msgstr "Code de fret suivant :" + +#~ msgid "Next Stop:\n" +#~ msgstr "Prochain arrêt :\n" + +#~ msgid "No callback to handle schedule" +#~ msgstr "Absence de fonction de gestion de planning" + +#~ msgid "No such lua entity." +#~ msgstr "Pas de telle entité lua." + +#~ msgid "No such train: @1." +#~ msgstr "Pas de tel train : @1." + +#~ msgid "No such wagon: @1." +#~ msgstr "Pas de tel wagon : @1." + +#~ msgid "Not a valid wagon id." +#~ msgstr "Identificateur de wagon invalide." + +#~ msgid "Not allowed to do this." +#~ msgstr "Vous n'êtes pas autorisé effectuer ceci." + +#~ 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." + +#~ msgid "Onboard Computer" +#~ msgstr "Ordinateur embarqué" + +#~ msgid "Passenger Wagon" +#~ msgstr "Voiture passager" + +#~ msgid "Passenger area" +#~ msgstr "Voiture Passager" + +#~ 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." + +#~ msgid "Perpendicular Diamond Crossing Track" +#~ msgstr "Croisement perpendiculaire" + +#~ msgid "Please specify a player name to transfer ownership to." +#~ msgstr "" +#~ "Spécifiez le nom du joueur à qui la propriété doit être transférée, SVP." + +#~ msgid "Position is occupied by a train." +#~ msgstr "Cet emplacement est occupé par un train." + +#~ msgid "Prev FC" +#~ msgstr "Code de fret précédent" + +#~ msgid "Print advtrains status info" +#~ msgstr "Affiche les informations d'état d'advtrains" + +#~ msgid "Re-enabling advtrains globalstep..." +#~ msgstr "Réacivation du pas global d'advtrains..." + +#~ msgid "Reduced speed" +#~ msgstr "Vitesse réduite" + +#~ msgid "Reload successful!" +#~ msgstr "Succès du rechargement !" + +#~ msgid "Removing unused wagon" +#~ msgstr "Suppression d'un wagon inutilisé" + +#~ msgid "Restoring saved state in 1 second..." +#~ msgstr "Restauration du l'état sauvegardé dans une seconde..." + +#~ msgid "Restricted speed" +#~ msgstr "Vitesse limitée" + +#~ msgid "Returns the position of the train with the given id" +#~ msgstr "Affiche la position du train identifié" + +#~ msgid "Right" +#~ msgstr "Droit" + +#~ msgid "Routingcode" +#~ msgstr "Code de routage" + +#~ msgid "Save" +#~ msgstr "Sauvegarder" + +#~ msgid "Save wagon properties" +#~ msgstr "Sauvegarder les propriétés du wagon" + +#~ msgid "Saving failed: " +#~ msgstr "Échec de sauvegarde : " + +#~ msgid "Scharfenberg Coupler" +#~ msgstr "Attelage Scharfenberg" + +#~ msgid "Select seat:" +#~ msgstr "Choisir le siège :" + +#~ msgid "Set name of component (empty to clear)" +#~ msgstr "Nommer le composant (chaîne vide pour effacer)" + +#~ msgid "Show Inventory" +#~ msgstr "Montrer le stock" + +#~ msgid "Speed:" +#~ msgstr "Vitesse : " + +#~ msgid "Station Code" +#~ msgstr "Code de Station" + +#~ msgid "Station code \"@1\" already exists and is owned by @2." +#~ msgstr "Le code de station \"@1\" existe et est possédé par @2." + +#~ msgid "Station/Stop Track" +#~ msgstr "Voie d'arrêt en station" + +#~ msgid "Steam Engine" +#~ msgstr "Locomotive à vapeur" + +#~ msgid "Stop Time" +#~ msgstr "Durée d'arrêt" + +#~ msgid "Subway Passenger Wagon" +#~ msgstr "Voiture de Métropolitain" + +#~ msgid "Target:" +#~ msgstr "Destination : " + +#~ msgid "Teleporting to train " +#~ msgstr "Téléportation au train " + +#~ msgid "Teleports you to the position of the train with the given id" +#~ msgstr "Vous téléporte à la position du train identifié" + +#~ msgid "Text displayed inside train" +#~ msgstr "Texte affiché à l'intérieur du train" + +#~ msgid "Text displayed outside on train" +#~ msgstr "Texte affiché à l'extérieur du train" + +#~ msgid "That player does not exist!" +#~ msgstr "Ce joueur n'existe pas !" + +#~ msgid "That wagon does not exist!" +#~ msgstr "Ce wagon n'a pas de siège !" + +#~ msgid "" +#~ "The advtrains globalstep has been disabled. Trains are not moving, and no " +#~ "data is saved! Run '/at_disable_step no' to enable again!" +#~ msgstr "" +#~ "Le pas global d'advtrains est désactivé. Les trains sont immobiles et " +#~ "aucune donnée n'est sauvegardée. Exécutez '/at_disable_step no ' pour le " +#~ "réactiver !" + +#~ 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." + +#~ 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." + +#~ msgid "The clipboard is empty." +#~ msgstr "Le presse-papier est vide." + +#~ 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 !" + +#~ 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." + +#~ msgid "The wagon's inventory is not empty." +#~ msgstr "Le stock de ce wagon n'est pas vide." + +#~ msgid "There's a Signal Influence Point here." +#~ msgstr "Il y a un \"Signal Influence Point\" ici." + +#~ msgid "This Wagon ID" +#~ msgstr "Identificateur du wagon" + +#~ msgid "This node can't be changed using the trackworker!" +#~ msgstr "Ce nœud ne peut être modifié avec l'outil \"Trackworker\" !" + +#~ msgid "This node can't be rotated using the trackworker!" +#~ msgstr "Ce nœud ne peut être tourné avec l'outil \"Trackworker\" !" + +#, 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 "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." + +#~ msgid "This track can not be changed." +#~ msgstr "Cette voie ne peut pas être modifiée." + +#~ msgid "This track can not be removed!" +#~ msgstr "Cette voie ne peut pas être enlevée !" + +#~ msgid "This track can not be rotated!" +#~ msgstr "Cette voie ne peut pas être tournée !" + +#~ msgid "This wagon has no seats." +#~ msgstr "Ce wagon n'a pas de siège." + +#~ msgid "This wagon is full." +#~ msgstr "Ce wagon est plein." + +#~ 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." + +#~ msgid "Track" +#~ msgstr "Voie" + +#~ 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" + +#~ msgid "Train" +#~ msgstr "Identificateur du train" + +#~ msgid "Train " +#~ msgstr "Identificateur du train " + +#~ msgid "Train ID" +#~ msgstr "Identificateur du train" + +#~ msgid "Train copied." +#~ msgstr "Train copié." + +#~ 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" + +#~ msgid "" +#~ "Train overview / coupling control is only shown when the train stands." +#~ msgstr "" +#~ "Aperçu du train / commande d'accouplement montré uniquement à l'arrêt du " +#~ "train." + +#~ msgid "Train overview /coupling control:" +#~ msgstr "Aperçu du train / commande d'accouplement :" + +#~ msgid "Trains stopping here (ARS rules)" +#~ msgstr "Trains marquant l'arrêt (règles ARS)" + +#~ msgid "Unable to load wagon type" +#~ msgstr "Impossible de charger le type du wagon" + +#~ msgid "Unconfigured ATC controller" +#~ msgstr "Controlleur ATC, non-configuré" + +#~ msgid "Unconfigured LuaATC component" +#~ msgstr "Composant LuaATC non configuré" + +#~ msgid "Uninitialized init=" +#~ msgstr "Variable init non initialisée" + +#~ msgid "Uninitialized, removing" +#~ msgstr "Non initialisé, retiré" + +#~ msgid "Unknown Station" +#~ msgstr "Gare inconnue" + +#~ msgid "Unloading Track" +#~ msgstr "Voie de Déchargement" + +#~ msgid "Use Sneak+rightclick to bypass closed doors!" +#~ msgstr "" +#~ "Utilisez \"Marcher lentement (Sneak)\" et Clic-Droit pour franchir les " +#~ "portes closes !" + +#~ msgid "Wagon @1 ownership changed from @2 to @3" +#~ msgstr "La propriété du wagon @1 a été transférée de @2 à @3" + +#~ msgid "Wagon Properties Tool" +#~ msgstr "Outil de propriété du wagon" + +#~ msgid "" +#~ "Wagon Properties Tool\n" +#~ "Punch a wagon to view and edit the Wagon Properties" +#~ msgstr "" +#~ "Outil de propriété du wagon\n" +#~ "Frappez un wagon pour voir et modifier ses propriétés" + +#~ 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." + +#~ msgid "Wagon properties" +#~ msgstr "Propriétés du wagon" + +#~ msgid "Wagon road number:" +#~ msgstr "Immatriculation du wagon :" + +#~ msgid "Wait for signal to clear" +#~ msgstr "En attente de signal d'autorisation" + +#~ msgid "Wallmounted Signal (left)" +#~ msgstr "Signal mural (gauche)" + +#~ msgid "Wallmounted Signal (right)" +#~ msgstr "Signal mural (droit)" + +#~ msgid "Wallmounted Signal (top)" +#~ msgstr "Signal mural (plafond)" + +#~ 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." + +#~ msgid "Wheel" +#~ msgstr "Roue" + +#~ msgid "Y-turnout" +#~ msgstr "Embranchement en Y" + +#~ msgid "You are not allowed to access the driver stand." +#~ msgstr "Accès interdit au poste de pilotage." + +#~ 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é." + +#~ 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\" (?)" + +#~ msgid "You are not allowed to build tracks at this protected position." +#~ msgstr "Vous ne pouvez pas construire une voie à cet emplacement protégé." + +#~ 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\"." + +#~ 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." + +#~ 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\"." + +#, 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 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." + +#~ 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)" + +#~ msgid "You can't get on this wagon." +#~ msgstr "Montée impossible dans ce wagon." + +#~ msgid "You do not have the @1 privilege." +#~ msgstr "Vous ne possédez pas le privilège \"@1\"." + +#~ msgid "You don't have the train_operator privilege." +#~ msgstr "Vous ne possédez pas le privilège \"train_operator\"." + +#~ msgid "You have been given ownership of wagon @1" +#~ msgstr "La propriété du wagon @1 vous a été transférée" + +#~ 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." + +#~ msgid "from wagon_save table." +#~ msgstr "de la table wagon_save." + +#~ msgid "" +#~ "had no wagons left because of some bug. It is being deleted. Wave it " +#~ "goodbye!" +#~ msgstr "" +#~ "n'a plus de wagon à cause d'un bug quelconque. Il est détruit. Faites lui " +#~ "coucou !" + +#~ msgid "slowdown" +#~ msgstr "ralentissement" diff --git a/advtrains_interlocking/po/update-translations.sh b/advtrains_interlocking/po/update-translations.sh new file mode 100644 index 0000000..5c42e7b --- /dev/null +++ b/advtrains_interlocking/po/update-translations.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +MODNAME="advtrains_interlocking" +MSGID_BUGS_ADDR='advtrains-discuss@lists.sr.ht' + +PODIR=`dirname "$0"` +ATDIR="$PODIR/.." +POTFILE="$PODIR/$MODNAME.pot" + +xgettext \ + -D "$ATDIR" \ + -d "$MODNAME" \ + -o "$POTFILE" \ + -p . \ + -L lua \ + --add-location=file \ + --from-code=UTF-8 \ + --sort-by-file \ + --keyword='S' \ + --package-name="$MODNAME" \ + --msgid-bugs-address="$MSGID_BUGS_ADDR" \ + `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_interlocking/po/zh_CN.po b/advtrains_interlocking/po/zh_CN.po new file mode 100644 index 0000000..48c5805 --- /dev/null +++ b/advtrains_interlocking/po/zh_CN.po @@ -0,0 +1,1278 @@ +msgid "" +msgstr "" +"Project-Id-Version: advtrains\n" +"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n" +"POT-Creation-Date: 2025-06-11 23:21+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" + +#: autonaming.lua +msgid "Prefix set, next signal name will be: @1" +msgstr "" + +#: autonaming.lua +msgid "Prefix unset, signals are not auto-named for you!" +msgstr "" + +#: autonaming.lua +msgid "" +"Sets the current prefix for automatically naming interlocking components. " +"Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on" +msgstr "" + +#: database.lua +msgid "Created track section @1 from @2 TCBs" +msgstr "" + +#: database.lua +msgid "Track section inconsistent here, repairing..." +msgstr "" + +#: database.lua +msgid "Track section partition found, repairing..." +msgstr "" + +#: init.lua +msgid "Can set up track sections, routes and signals" +msgstr "" + +#: route_prog.lua +msgid "@1 Terminal @2" +msgstr "" + +#: route_prog.lua +msgid "@1 is held in @2 position when this route is set and freed " +msgstr "" + +#: route_prog.lua +msgid "@1 is no longer affected when this route is set." +msgstr "" + +#: route_prog.lua +msgid "Added track section @1 to the route." +msgstr "" + +#: route_prog.lua +msgid "Advance to next route section" +msgstr "" + +#: route_prog.lua +msgid "Advance/Complete Route" +msgstr "" + +#: route_prog.lua +msgid "Advancing over next section is" +msgstr "" + +#: route_prog.lua +msgid "Cancel if you are unsure!" +msgstr "" + +#: route_prog.lua +msgid "Cancel route programming" +msgstr "" + +#: route_prog.lua +msgid "Cannot program route without a target" +msgstr "" + +#: route_prog.lua tcb_ts_ui.lua +msgid "End of interlocking" +msgstr "" + +#: route_prog.lua +msgid "Enter Route Name" +msgstr "" + +#: route_prog.lua +msgid "Finish programming route" +msgstr "" + +#: route_prog.lua +msgid "Finish route HERE" +msgstr "" + +#: route_prog.lua +msgid "Finish route at end of NEXT section" +msgstr "" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 (punch to unfix)" +msgstr "" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 until segment #@3 is freed." +msgstr "" + +#: route_prog.lua route_ui.lua signal_aspect_ui.lua tcb_ts_ui.lua tool.lua +msgid "Insufficient privileges to use this!" +msgstr "" + +#: route_prog.lua +msgid "Next section is diverging (>2 TCBs)" +msgstr "" + +#: route_prog.lua +msgid "Route discarded." +msgstr "" + +#: route_prog.lua +msgid "Route ends at signal:" +msgstr "" + +#: route_prog.lua +msgid "Route leads into" +msgstr "" + +#: route_prog.lua +msgid "" +"Route programming mode active. Punch TCBs to add route segments, punch " +"turnouts to lock them." +msgstr "" + +#: route_prog.lua +msgid "Route section @1 removed." +msgstr "" + +#: route_prog.lua +msgid "Routes should in most cases end at signals." +msgstr "" + +#: route_prog.lua +msgid "Save Route" +msgstr "" + +#: route_prog.lua +msgid "Step back one section" +msgstr "" + +#: route_prog.lua +msgid "Successfully programmed route." +msgstr "" + +#: route_prog.lua +msgid "The origin TCB has become unknown during programming. Try again." +msgstr "" + +#: route_prog.lua +msgid "This TCB is not suitable as" +msgstr "" + +#: route_prog.lua +msgid "This TCB is unconfigured, you first need to assign it to a rail" +msgstr "" + +#: route_prog.lua +msgid "WARNING: Route does not end at a signal." +msgstr "" + +#: route_prog.lua +msgid "[Route programming] " +msgstr "" + +#: route_prog.lua +msgid "impossible at this place." +msgstr "" + +#: route_prog.lua +msgid "non-interlocked area" +msgstr "" + +#: route_prog.lua +msgid "route continuation." +msgstr "" + +#: route_ui.lua +msgid "<< Select a route part to edit options" +msgstr "" + +#: route_ui.lua +#, fuzzy +msgid "<Default Aspect>" +msgstr "默认座位" + +#: route_ui.lua +msgid "ARS Rule List" +msgstr "" + +#: route_ui.lua +msgid "Announce distant signal" +msgstr "" + +#: route_ui.lua +msgid "Back to signal" +msgstr "" + +#: route_ui.lua +msgid "Call-on (section may be occupied)" +msgstr "" + +#: route_ui.lua +msgid "Clone Route" +msgstr "" + +#: route_ui.lua +msgid "Delete Route" +msgstr "" + +#: route_ui.lua +msgid "Error:" +msgstr "" + +#: route_ui.lua +msgid "New From Route" +msgstr "" + +#: route_ui.lua +msgid "No Signal at this TCB" +msgstr "" + +#: route_ui.lua +msgid "Route name" +msgstr "" + +#: route_ui.lua +msgid "Route overview" +msgstr "" + +#: route_ui.lua +msgid "Save ARS List" +msgstr "" + +#: route_ui.lua +msgid "Section Options:" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Set" +msgstr "" + +#: route_ui.lua signal_aspect_ui.lua +#, fuzzy +msgid "Signal Aspect:" +msgstr "信号灯" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 has different section than previous TCB" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is missing" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is not assigned to previous track section" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Track section after @1 missing" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Turnout/component missing at @1" +msgstr "" + +#: routesetting.lua +msgid "Lock conflict at @1, Held locked by:" +msgstr "" + +#: routesetting.lua +msgid "No TCB found at @1. Please update or reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "No track section adjacent to @1. Please reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "Route @1 from signal @2" +msgstr "" + +#: routesetting.lua +msgid "Route @1 from signal @2, segment #@3" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' already has route set from @2:" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' is occupied!" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' not found!" +msgstr "" + +#: routesetting.lua +msgid "" +"TCB at @1 has different section than previous TCB. Please update track " +"section or reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "" +"Turnout/component missing at @1. Please update track section or reconfigure " +"route!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "<assign distant>" +msgstr "" + +#: signal_aspect_ui.lua +msgid "<none>" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Assigned distant signal to the main signal at @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Assigned signal to the TCB at @1" +msgstr "" + +#: signal_aspect_ui.lua tool.lua +msgid "Clear" +msgstr "" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Influence point of another signal is already present!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Node is too far away. Aborted." +msgstr "" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Please look in train's driving direction and punch rail " +"to set influence point." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Successfully set influence point" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: This is not a normal two-connection rail! Aborted." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Dst: @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Influence point is not set." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Influence point is set at @1." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Modify" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Set distant signal: Punch the main signal to assign!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Set influence point" +msgstr "" + +#: smartroute.lua +msgid "Apply" +msgstr "" + +#: smartroute.lua +msgid "Route search: @1 found" +msgstr "" + +#: smartroute.lua +msgid "Search further" +msgstr "" + +#: smartroute.lua +msgid "Smartroute: No track section directly ahead!" +msgstr "" + +#: smartroute.lua +msgid "Smartroute: TCBS or routes don't exist here!" +msgstr "" + +#: tcb_ts_ui.lua +msgid " (invalid)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "@1 locks in state @2" +msgstr "" + +#: tcb_ts_ui.lua +msgid "A route is requested from this signal:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Add locks" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Assign a signal" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Automatic Working is active." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Automatic routesetting" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Boundary TCBs:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Can't remove TCB: Both sides must have no signal assigned!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Can't remove track, a train is here!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Cancel" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Cancel Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"Cannot delete route which has ARS rules, please review and then delete " +"through edit dialog!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Clear locks" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"Configuring TCB: Already existed at this position, it is now linked to this " +"TCB marker" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Cannot use static signals for routesetting. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Internal error, TCBS doesn't exist. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Node is too far away. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Not a compatible signal. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the rail you want to assign this TCB to." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the signal to assign." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully assigned signal." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully configured TCB" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: This is not a normal two-connection rail! Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Create Interlocked Track Section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Delete this route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Disable Automatic Working" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Distant signal triggers ARS" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Edit" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Enable Automatic Working" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Error: TS modified, abort!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Final TCBS unset (legacy-style buffer route)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Fixed route locks (e.g. level crossings):" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Link @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Link: @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Multiple routes are requested (first available is set):" +msgstr "" + +#: tcb_ts_ui.lua +msgid "NOTE: ARS is disabled." +msgstr "" + +#: tcb_ts_ui.lua +msgid "New (Manual)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No Link" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No routes are yet defined." +msgstr "" + +#: tcb_ts_ui.lua +msgid "No trains on this section." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Punch components to add fixed locks. (punch anything else = end)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Remove Section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Reset section state" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Reset track section" +msgstr "改变行车方向" + +#: tcb_ts_ui.lua +msgid "Reset track section @1!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route has been set." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is re-set when a train passed." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is set over this signal by:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is set: " +msgstr "" + +#: tcb_ts_ui.lua +msgid "Routes are not automatically set." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Routes:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Section holds @1 route locks." +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Section name" +msgstr "车站名称" + +#: tcb_ts_ui.lua +msgid "Set ARS default route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Set Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Setting fixed locks finished!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Show" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Show track section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Side @1" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signal at @1" +msgstr "信号灯" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signal name" +msgstr "信号灯" + +#: tcb_ts_ui.lua +msgid "Signal on B side already assigned!" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signalling" +msgstr "信号灯" + +#: tcb_ts_ui.lua +msgid "Smart Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB Link: Select linked TCB now!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB already existed at this position, now linked to this node" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB assigned to @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "This TCB has been removed. Please dig marker." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This is a pure distant signal\n" +"No route is currently set through." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This is an always-halt signal (e.g. a buffer)\n" +"No routes can be set from here." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This will clear the list of trains\n" +"and the routesetting status of this section.\n" +"Are you sure?" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This will remove the track section and set all its end points to End Of " +"Interlocking" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Circuit Break" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Circuit Break Configuration" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Section Detail - @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Trains on this section:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Unconfigured Track Circuit Break, right-click to assign." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Wait for this route to be cancelled in order to do anything here." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Waiting for route to be set..." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Yes" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"You cannot modify track sections when a route is set or a train is on the " +"section." +msgstr "" + +#: tool.lua +msgid "Emplace manual lock" +msgstr "" + +#: tool.lua +msgid "" +"Interlocking tool\n" +"Punch: Highlight track section\n" +"Place: check route locks/show track section info" +msgstr "" + +#: tool.lua +msgid "No route locks set" +msgstr "" + +#: tool.lua +msgid "No track section at this location!" +msgstr "" + +#: tool.lua +msgid "Node is not a track!" +msgstr "" + +#: tool.lua +msgid "Route lock inspector" +msgstr "" + +#: tool.lua +msgid "Route locks currently put:" +msgstr "" + +#: tsr_rail.lua +msgid "Point Speed Restriction Track" +msgstr "" + +#: tsr_rail.lua +msgid "Point speed restriction: @1" +msgstr "" + +#: tsr_rail.lua +msgid "Set point speed restriction:" +msgstr "" + +#: tsr_rail.lua +msgid "You are not allowed to configure this track without the @1 privilege." +msgstr "您没有“@1”权限,不能调整这段轨道。" + +#: tsr_rail.lua +msgid "You are not allowed to configure this track." +msgstr "您不能调整这段轨道。" + +#~ msgid "(Doors closed)" +#~ msgstr "(车门已关闭)" + +#~ msgid "3-way turnout" +#~ msgstr "三开道岔" + +#~ msgid "90+Angle Diamond Crossing Track" +#~ msgstr "交叉轨道 (其中一条轨道与坐标轴平行)" + +#~ msgid "<No coupler>" +#~ msgstr "<没有车钩>" + +#~ msgid "@1 Platform (45 degree)" +#~ msgstr "较高的@1站台 (45°)" + +#~ msgid "@1 Platform (high)" +#~ msgstr "较高的@1站台" + +#~ msgid "@1 Platform (low)" +#~ msgstr "较低的@1站台" + +#~ msgid "@1 Platform (low, 45 degree)" +#~ msgstr "较低的@1站台 (45°)" + +#~ msgid "@1 Slope" +#~ msgstr "@1斜坡" + +#~ msgid "ATC Kick command warning: doors are closed." +#~ msgstr "ATC 警告:车门已关闭,无法踢出乘客。" + +#~ msgid "ATC Kick command warning: train moving." +#~ msgstr "ATC 警告:火车正在移动,无法踢出乘客。" + +#~ msgid "ATC Reverse command warning: didn't reverse train, train moving." +#~ msgstr "ATC 警告:火车正在移动,无法改变行车方向。" + +#~ msgid "ATC command parse error: Unknown command: @1" +#~ msgstr "ATC 语法错误:未知命令:@1" + +#~ msgid "ATC command syntax error: I statement not closed: @1" +#~ msgstr "ATC 语法错误:“I”命令不完整:@1" + +#~ msgid "ATC controller" +#~ msgstr "ATC 控制器" + +#~ msgid "" +#~ "ATC controller, mode @1\n" +#~ "Channel: @2" +#~ msgstr "" +#~ "ATC 控制器\n" +#~ "模式:@1\n" +#~ "频道:@2" + +#~ msgid "" +#~ "ATC controller, mode @1\n" +#~ "Command: @2" +#~ msgstr "" +#~ "ATC 控制器\n" +#~ "模式:@1\n" +#~ "命令:@2" + +#~ msgid "Access to @1" +#~ msgstr "可前往@1" + +#~ msgid "Andrew's Cross" +#~ msgstr "铁路道口信号灯" + +#~ msgid "Back of train would end up off track, cancelling." +#~ msgstr "火车后部不在轨道上。" + +#~ msgid "Big Industrial Train Engine" +#~ msgstr "大型工业用火车头" + +#~ msgid "Boiler" +#~ msgstr "锅炉" + +#~ msgid "Box Wagon" +#~ msgstr "货运车厢" + +#~ msgid "Buffer and Chain Coupler" +#~ msgstr "链式车钩" + +#~ msgid "Bumper" +#~ msgstr "保险杠" + +#~ msgid "Can not couple: The couplers of the trains do not match (@1 and @2)." +#~ msgstr "您无法连接这两节车厢:这两节车厢使用不同的车钩 (@1和@2)。" + +#~ msgid "Can't get on: wagon full or doors closed!" +#~ msgstr "无法上车:车门已关闭或车厢已满。" + +#, fuzzy +#~ msgid "Can't place: Not enough slope items left (@1 required)" +#~ msgstr "无法放置斜坡:您没有足够的铁路斜坡放置工具 (您总共需要@1个)" + +#, fuzzy +#~ msgid "Can't place: There's no slope of length @1" +#~ msgstr "无法放置斜坡:advtrains 不支持长度为@1米的斜坡。" + +#, fuzzy +#~ msgid "Can't place: no supporting node at upper end." +#~ msgstr "无法放置斜坡:较高端没有支撑方块。" + +#, fuzzy +#~ msgid "Can't place: not pointing at node" +#~ msgstr "无法放置斜坡:您没有选择任何方块。" + +#~ msgid "Can't place: protected position!" +#~ msgstr "无法放置:此区域已被保护。" + +#, fuzzy +#~ msgid "Can't place: space occupied!" +#~ msgstr "无法放置斜坡:此区域已被占用。" + +#~ msgid "Chimney" +#~ msgstr "烟囱" + +#~ msgid "Command" +#~ msgstr "命令" + +#~ msgid "Command (on)" +#~ msgstr "命令 (激活时)" + +#~ msgid "Default Seat (driver stand)" +#~ msgstr "默认座位 (司机座位)" + +#~ msgid "Dep. Speed" +#~ msgstr "出发速度" + +#~ msgid "Deprecated Track" +#~ msgstr "请不要使用" + +#~ msgid "Detailed Steam Engine" +#~ msgstr "精细的蒸汽机车" + +#~ msgid "Detector Rail" +#~ msgstr "探测轨道" + +#~ msgid "Diagonal Diamond Crossing Track" +#~ msgstr "交叉轨道" + +#~ msgid "Digiline channel" +#~ msgstr "Digiline 频道" + +#~ msgid "Door Delay" +#~ msgstr "车门关闭时间" + +#~ msgid "" +#~ "Doors are closed. Use Sneak+rightclick to ignore the closed doors and get " +#~ "off." +#~ msgstr "车门已关闭,请使用潜行+右键单击下车。" + +#, fuzzy +#~ msgid "Driver Stand" +#~ msgstr "司机座位" + +#~ msgid "Driver Stand (left)" +#~ msgstr "左侧司机座位" + +#~ msgid "Driver Stand (right)" +#~ msgstr "右侧司机座位" + +#~ msgid "Driver stand" +#~ msgstr "司机座位" + +#~ msgid "Driver's cab" +#~ msgstr "驾驶室" + +#~ msgid "Get off" +#~ msgstr "下车" + +#~ msgid "Get off (forced)" +#~ msgstr "强制下车" + +#~ msgid "Industrial Train Engine" +#~ msgstr "工业用火车头" + +#~ msgid "Industrial tank wagon" +#~ msgstr "液体运输车厢" + +#~ msgid "Industrial wood wagon" +#~ msgstr "木材运输车厢" + +#~ msgid "Japanese Train Engine" +#~ msgstr "高速列车车头" + +#~ msgid "Japanese Train Inter-Wagon Connection" +#~ msgstr "日本火车车钩" + +#~ msgid "Japanese Train Wagon" +#~ msgstr "高速列车车厢" + +#, fuzzy +#~ msgid "Japanese signal pole" +#~ msgstr "高速列车车厢" + +#~ msgid "Kick out passengers" +#~ msgstr "踢出乘客" + +#~ msgid "Lampless Signal" +#~ msgstr "臂板信号机" + +#~ msgid "Line" +#~ msgstr "火车线路" + +#~ msgid "Loading Track" +#~ msgstr "装货轨道" + +#~ msgid "Lock couples" +#~ msgstr "锁定连接处" + +#~ msgid "No such lua entity." +#~ msgstr "您没有指向一个可以用火车复制工具复制的物体。" + +#~ msgid "No such train: @1." +#~ msgstr "ID 为“@1”的列车不存在。" + +#~ msgid "No such wagon: @1." +#~ msgstr "ID 为“@1”的车厢不存在。" + +#, fuzzy +#~ msgid "Not allowed to do this." +#~ msgstr "您不能调整这段轨道。" + +#~ msgid "Passenger Wagon" +#~ msgstr "客车" + +#, fuzzy +#~ msgid "Passenger area" +#~ msgstr "客车" + +#~ msgid "" +#~ "Passive Component Naming Tool\n" +#~ "\n" +#~ "Right-click to name a passive component." +#~ msgstr "" +#~ "被动元件命名工具\n" +#~ "\n" +#~ "右键单击命名所选元件。" + +#~ msgid "Perpendicular Diamond Crossing Track" +#~ msgstr "垂直交叉轨道" + +#~ msgid "Routingcode" +#~ msgstr "路由码" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Save wagon properties" +#~ msgstr "保存车厢属性" + +#~ msgid "Scharfenberg Coupler" +#~ msgstr "Scharfenberg 式车钩" + +#~ msgid "Select seat:" +#~ msgstr "请选择座位:" + +#~ msgid "Show Inventory" +#~ msgstr "显示物品栏" + +#~ msgid "Speed:" +#~ msgstr "速度" + +#~ msgid "Station Code" +#~ msgstr "车站代码" + +#~ msgid "Station/Stop Track" +#~ msgstr "车站轨道" + +#~ msgid "Steam Engine" +#~ msgstr "蒸汽机车" + +#~ msgid "Stop Time" +#~ msgstr "停站时间" + +#~ msgid "Subway Passenger Wagon" +#~ msgstr "地铁车厢" + +#~ msgid "Target:" +#~ msgstr "目标速度" + +#~ msgid "Text displayed inside train" +#~ msgstr "车厢内部显示" + +#~ msgid "Text displayed outside on train" +#~ msgstr "车厢外部显示" + +#, fuzzy +#~ msgid "That wagon does not exist!" +#~ msgstr "这节车厢没有座位。" + +#~ msgid "The clipboard couldn't access the metadata. Copy failed." +#~ msgstr "无法复制:剪贴板无法访问元数据。" + +#~ msgid "The clipboard couldn't access the metadata. Paste failed." +#~ msgstr "无法粘贴:剪贴板无法访问元数据。" + +#~ msgid "The clipboard is empty." +#~ msgstr "剪贴板是空的。" + +#, fuzzy +#~ msgid "The track you are trying to place the wagon on is not long enough!" +#~ msgstr "轨道太短。" + +#~ msgid "The track you are trying to place the wagon on is not long enough." +#~ msgstr "轨道太短。" + +#, fuzzy +#~ msgid "This Wagon ID" +#~ msgstr "车厢已满。" + +#, fuzzy +#~ msgid "This node can't be changed using the trackworker!" +#~ msgstr "您不能使用铁路调整工具调整这个方块。" + +#, fuzzy +#~ msgid "This node can't be rotated using the trackworker!" +#~ msgstr "您不能使用铁路调整工具旋转这个方块。" + +#, fuzzy +#~ msgid "This node can't be rotated using the trackworker," +#~ msgstr "您不能使用铁路调整工具旋转这个方块。" + +#~ msgid "This position is protected!" +#~ msgstr "这里已被保护。" + +#~ msgid "This track can not be changed." +#~ msgstr "您不能调整这段轨道。" + +#, fuzzy +#~ msgid "This track can not be removed!" +#~ msgstr "您不能移除这段轨道。" + +#, fuzzy +#~ msgid "This track can not be rotated!" +#~ msgstr "您不能旋转这段轨道。" + +#~ msgid "This wagon has no seats." +#~ msgstr "这节车厢没有座位。" + +#~ msgid "This wagon is full." +#~ msgstr "车厢已满。" + +#~ msgid "This wagon is owned by @1, you can't destroy it." +#~ msgstr "这是 @1 的车厢,您不能摧毁它。" + +#~ msgid "Track" +#~ msgstr "轨道" + +#~ msgid "" +#~ "Track Worker Tool\n" +#~ "\n" +#~ "Left-click: change rail type (straight/curve/switch)\n" +#~ "Right-click: rotate object" +#~ msgstr "" +#~ "铁路调整工具\n" +#~ "\n" +#~ "左键单击:切换轨道类型\n" +#~ "右键单击:旋转方块" + +#, fuzzy +#~ msgid "Train " +#~ msgstr "已复制列车。" + +#~ msgid "Train copied." +#~ msgstr "已复制列车。" + +#~ msgid "" +#~ "Train copy/paste tool\n" +#~ "\n" +#~ "Left-click: copy train\n" +#~ "Right-click: paste train" +#~ msgstr "" +#~ "火车复制工具\n" +#~ "\n" +#~ "左键单击:复制\n" +#~ "右键单击:粘帖" + +#~ msgid "Unconfigured ATC controller" +#~ msgstr "ATC 控制器 (未配置)" + +#~ msgid "Unconfigured LuaATC component" +#~ msgstr "LuaATC 部件 (未配置)" + +#~ msgid "Unloading Track" +#~ msgstr "卸货轨道" + +#~ msgid "Use Sneak+rightclick to bypass closed doors!" +#~ msgstr "请使用潜行+右键上车。" + +#, fuzzy +#~ msgid "Wagon Properties Tool" +#~ msgstr "车厢属性" + +#~ msgid "Wagon properties" +#~ msgstr "车厢属性" + +#~ msgid "Wallmounted Signal (left)" +#~ msgstr "壁挂式信号灯 (左侧)" + +#~ msgid "Wallmounted Signal (right)" +#~ msgstr "壁挂式信号灯 (右侧)" + +#~ msgid "Wallmounted Signal (top)" +#~ msgstr "悬挂式信号灯" + +#~ 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 "" +#~ "警告:如果您摧毁此车厢,您只能拿到一些钢方块。如果您确定要摧毁这节车厢,请" +#~ "按潜行键并左键单击此车厢。" + +#~ msgid "Wheel" +#~ msgstr "车轮" + +#~ msgid "Y-turnout" +#~ msgstr "对称道岔" + +#~ msgid "You are not allowed to build near tracks at this protected position." +#~ msgstr "这里已被保护,您不能在这里的铁路附近建任何东西。" + +#~ msgid "" +#~ "You are not allowed to build near tracks without the track_builder " +#~ "privilege." +#~ msgstr "您没有“train_operator”权限,不能在铁路附近建任何东西。" + +#~ msgid "You are not allowed to build tracks at this protected position." +#~ msgstr "这里已被保护,您不能在这里建造铁路。" + +#~ msgid "" +#~ "You are not allowed to build tracks without the track_builder privilege." +#~ msgstr "您没有“train_operator”权限,不能在这里建造铁路。" + +#~ msgid "" +#~ "You are not allowed to configure this LuaATC component without the @1 " +#~ "privilege." +#~ msgstr "您没有“@1”权限,不能配置这个 LuaATC 部件。" + +#~ msgid "" +#~ "You are not allowed to couple trains without the train_operator privilege." +#~ msgstr "您没有“train_operator”权限,不能连接这两节车厢。" + +#, fuzzy +#~ msgid "You are not allowed to modify this protected track." +#~ msgstr "这里已被保护,您不能在这里建造铁路。" + +#~ msgid "" +#~ "You are not allowed to name LuaATC passive components without the @1 " +#~ "privilege." +#~ msgstr "您没有“@1”权限,不能命名被动元件。" + +#~ msgid "" +#~ "You are not allowed to operate turnouts and signals without the " +#~ "railway_operator privilege." +#~ msgstr "您没有“railway_operator”权限,不能控制铁路设施。" + +#~ msgid "You do not have the @1 privilege." +#~ msgstr "您没有“@1”权限。" + +#, fuzzy +#~ msgid "You don't have the train_operator privilege." +#~ msgstr "您没有“@1”权限。" + +#~ msgid "" +#~ "You need to own at least one neighboring wagon to destroy this couple." +#~ msgstr "您必须至少拥有其中一节车厢才能分开这两节车厢。" diff --git a/advtrains_interlocking/po/zh_TW.po b/advtrains_interlocking/po/zh_TW.po new file mode 100644 index 0000000..6f07afb --- /dev/null +++ b/advtrains_interlocking/po/zh_TW.po @@ -0,0 +1,1278 @@ +msgid "" +msgstr "" +"Project-Id-Version: advtrains\n" +"Report-Msgid-Bugs-To: advtrains-discuss@lists.sr.ht\n" +"POT-Creation-Date: 2025-06-11 23:21+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" + +#: autonaming.lua +msgid "Prefix set, next signal name will be: @1" +msgstr "" + +#: autonaming.lua +msgid "Prefix unset, signals are not auto-named for you!" +msgstr "" + +#: autonaming.lua +msgid "" +"Sets the current prefix for automatically naming interlocking components. " +"Example: '/at_nameprefix TEST' - signals will be named TEST1, TEST2 and so on" +msgstr "" + +#: database.lua +msgid "Created track section @1 from @2 TCBs" +msgstr "" + +#: database.lua +msgid "Track section inconsistent here, repairing..." +msgstr "" + +#: database.lua +msgid "Track section partition found, repairing..." +msgstr "" + +#: init.lua +msgid "Can set up track sections, routes and signals" +msgstr "" + +#: route_prog.lua +msgid "@1 Terminal @2" +msgstr "" + +#: route_prog.lua +msgid "@1 is held in @2 position when this route is set and freed " +msgstr "" + +#: route_prog.lua +msgid "@1 is no longer affected when this route is set." +msgstr "" + +#: route_prog.lua +msgid "Added track section @1 to the route." +msgstr "" + +#: route_prog.lua +msgid "Advance to next route section" +msgstr "" + +#: route_prog.lua +msgid "Advance/Complete Route" +msgstr "" + +#: route_prog.lua +msgid "Advancing over next section is" +msgstr "" + +#: route_prog.lua +msgid "Cancel if you are unsure!" +msgstr "" + +#: route_prog.lua +msgid "Cancel route programming" +msgstr "" + +#: route_prog.lua +msgid "Cannot program route without a target" +msgstr "" + +#: route_prog.lua tcb_ts_ui.lua +msgid "End of interlocking" +msgstr "" + +#: route_prog.lua +msgid "Enter Route Name" +msgstr "" + +#: route_prog.lua +msgid "Finish programming route" +msgstr "" + +#: route_prog.lua +msgid "Finish route HERE" +msgstr "" + +#: route_prog.lua +msgid "Finish route at end of NEXT section" +msgstr "" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 (punch to unfix)" +msgstr "" + +#: route_prog.lua +msgid "Fixed in state @1 by route @2 until segment #@3 is freed." +msgstr "" + +#: route_prog.lua route_ui.lua signal_aspect_ui.lua tcb_ts_ui.lua tool.lua +msgid "Insufficient privileges to use this!" +msgstr "" + +#: route_prog.lua +msgid "Next section is diverging (>2 TCBs)" +msgstr "" + +#: route_prog.lua +msgid "Route discarded." +msgstr "" + +#: route_prog.lua +msgid "Route ends at signal:" +msgstr "" + +#: route_prog.lua +msgid "Route leads into" +msgstr "" + +#: route_prog.lua +msgid "" +"Route programming mode active. Punch TCBs to add route segments, punch " +"turnouts to lock them." +msgstr "" + +#: route_prog.lua +msgid "Route section @1 removed." +msgstr "" + +#: route_prog.lua +msgid "Routes should in most cases end at signals." +msgstr "" + +#: route_prog.lua +msgid "Save Route" +msgstr "" + +#: route_prog.lua +msgid "Step back one section" +msgstr "" + +#: route_prog.lua +msgid "Successfully programmed route." +msgstr "" + +#: route_prog.lua +msgid "The origin TCB has become unknown during programming. Try again." +msgstr "" + +#: route_prog.lua +msgid "This TCB is not suitable as" +msgstr "" + +#: route_prog.lua +msgid "This TCB is unconfigured, you first need to assign it to a rail" +msgstr "" + +#: route_prog.lua +msgid "WARNING: Route does not end at a signal." +msgstr "" + +#: route_prog.lua +msgid "[Route programming] " +msgstr "" + +#: route_prog.lua +msgid "impossible at this place." +msgstr "" + +#: route_prog.lua +msgid "non-interlocked area" +msgstr "" + +#: route_prog.lua +msgid "route continuation." +msgstr "" + +#: route_ui.lua +msgid "<< Select a route part to edit options" +msgstr "" + +#: route_ui.lua +#, fuzzy +msgid "<Default Aspect>" +msgstr "預設座位" + +#: route_ui.lua +msgid "ARS Rule List" +msgstr "" + +#: route_ui.lua +msgid "Announce distant signal" +msgstr "" + +#: route_ui.lua +msgid "Back to signal" +msgstr "" + +#: route_ui.lua +msgid "Call-on (section may be occupied)" +msgstr "" + +#: route_ui.lua +msgid "Clone Route" +msgstr "" + +#: route_ui.lua +msgid "Delete Route" +msgstr "" + +#: route_ui.lua +msgid "Error:" +msgstr "" + +#: route_ui.lua +msgid "New From Route" +msgstr "" + +#: route_ui.lua +msgid "No Signal at this TCB" +msgstr "" + +#: route_ui.lua +msgid "Route name" +msgstr "" + +#: route_ui.lua +msgid "Route overview" +msgstr "" + +#: route_ui.lua +msgid "Save ARS List" +msgstr "" + +#: route_ui.lua +msgid "Section Options:" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Set" +msgstr "" + +#: route_ui.lua signal_aspect_ui.lua +#, fuzzy +msgid "Signal Aspect:" +msgstr "色燈號誌機" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 has different section than previous TCB" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is missing" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "TCB at @1 is not assigned to previous track section" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Track section after @1 missing" +msgstr "" + +#: route_ui.lua tcb_ts_ui.lua +msgid "Turnout/component missing at @1" +msgstr "" + +#: routesetting.lua +msgid "Lock conflict at @1, Held locked by:" +msgstr "" + +#: routesetting.lua +msgid "No TCB found at @1. Please update or reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "No track section adjacent to @1. Please reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "Route @1 from signal @2" +msgstr "" + +#: routesetting.lua +msgid "Route @1 from signal @2, segment #@3" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' already has route set from @2:" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' is occupied!" +msgstr "" + +#: routesetting.lua +msgid "Section '@1' not found!" +msgstr "" + +#: routesetting.lua +msgid "" +"TCB at @1 has different section than previous TCB. Please update track " +"section or reconfigure route!" +msgstr "" + +#: routesetting.lua +msgid "" +"Turnout/component missing at @1. Please update track section or reconfigure " +"route!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "<assign distant>" +msgstr "" + +#: signal_aspect_ui.lua +msgid "<none>" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Assigned distant signal to the main signal at @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Assigned signal to the TCB at @1" +msgstr "" + +#: signal_aspect_ui.lua tool.lua +msgid "Clear" +msgstr "" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Influence point of another signal is already present!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Node is too far away. Aborted." +msgstr "" + +#: signal_aspect_ui.lua +msgid "" +"Configuring Signal: Please look in train's driving direction and punch rail " +"to set influence point." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: Successfully set influence point" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Configuring Signal: This is not a normal two-connection rail! Aborted." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Dst: @1" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Influence point is not set." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Influence point is set at @1." +msgstr "" + +#: signal_aspect_ui.lua +msgid "Modify" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Set distant signal: Punch the main signal to assign!" +msgstr "" + +#: signal_aspect_ui.lua +msgid "Set influence point" +msgstr "" + +#: smartroute.lua +msgid "Apply" +msgstr "" + +#: smartroute.lua +msgid "Route search: @1 found" +msgstr "" + +#: smartroute.lua +msgid "Search further" +msgstr "" + +#: smartroute.lua +msgid "Smartroute: No track section directly ahead!" +msgstr "" + +#: smartroute.lua +msgid "Smartroute: TCBS or routes don't exist here!" +msgstr "" + +#: tcb_ts_ui.lua +msgid " (invalid)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "@1 locks in state @2" +msgstr "" + +#: tcb_ts_ui.lua +msgid "A route is requested from this signal:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Add locks" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Assign a signal" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Automatic Working is active." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Automatic routesetting" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Boundary TCBs:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Can't remove TCB: Both sides must have no signal assigned!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Can't remove track, a train is here!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Cancel" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Cancel Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"Cannot delete route which has ARS rules, please review and then delete " +"through edit dialog!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Clear locks" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"Configuring TCB: Already existed at this position, it is now linked to this " +"TCB marker" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Cannot use static signals for routesetting. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Internal error, TCBS doesn't exist. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Node is too far away. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Not a compatible signal. Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the rail you want to assign this TCB to." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Please punch the signal to assign." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully assigned signal." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: Successfully configured TCB" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Configuring TCB: This is not a normal two-connection rail! Aborted." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Create Interlocked Track Section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Delete this route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Disable Automatic Working" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Distant signal triggers ARS" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Edit" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Enable Automatic Working" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Error: TS modified, abort!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Final TCBS unset (legacy-style buffer route)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Fixed route locks (e.g. level crossings):" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Link @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Link: @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Multiple routes are requested (first available is set):" +msgstr "" + +#: tcb_ts_ui.lua +msgid "NOTE: ARS is disabled." +msgstr "" + +#: tcb_ts_ui.lua +msgid "New (Manual)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No Link" +msgstr "" + +#: tcb_ts_ui.lua +msgid "No routes are yet defined." +msgstr "" + +#: tcb_ts_ui.lua +msgid "No trains on this section." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Punch components to add fixed locks. (punch anything else = end)" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Remove Section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Reset section state" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Reset track section" +msgstr "改變行車方向" + +#: tcb_ts_ui.lua +msgid "Reset track section @1!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route has been set." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is re-set when a train passed." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is set over this signal by:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Route is set: " +msgstr "" + +#: tcb_ts_ui.lua +msgid "Routes are not automatically set." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Routes:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Section holds @1 route locks." +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Section name" +msgstr "車站名稱" + +#: tcb_ts_ui.lua +msgid "Set ARS default route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Set Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Setting fixed locks finished!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Show" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Show track section" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Side @1" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signal at @1" +msgstr "色燈號誌機" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signal name" +msgstr "色燈號誌機" + +#: tcb_ts_ui.lua +msgid "Signal on B side already assigned!" +msgstr "" + +#: tcb_ts_ui.lua +#, fuzzy +msgid "Signalling" +msgstr "色燈號誌機" + +#: tcb_ts_ui.lua +msgid "Smart Route" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB Link: Select linked TCB now!" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB already existed at this position, now linked to this node" +msgstr "" + +#: tcb_ts_ui.lua +msgid "TCB assigned to @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "This TCB has been removed. Please dig marker." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This is a pure distant signal\n" +"No route is currently set through." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This is an always-halt signal (e.g. a buffer)\n" +"No routes can be set from here." +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This will clear the list of trains\n" +"and the routesetting status of this section.\n" +"Are you sure?" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"This will remove the track section and set all its end points to End Of " +"Interlocking" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Circuit Break" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Circuit Break Configuration" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Track Section Detail - @1" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Trains on this section:" +msgstr "" + +#: tcb_ts_ui.lua +msgid "Unconfigured Track Circuit Break, right-click to assign." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Wait for this route to be cancelled in order to do anything here." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Waiting for route to be set..." +msgstr "" + +#: tcb_ts_ui.lua +msgid "Yes" +msgstr "" + +#: tcb_ts_ui.lua +msgid "" +"You cannot modify track sections when a route is set or a train is on the " +"section." +msgstr "" + +#: tool.lua +msgid "Emplace manual lock" +msgstr "" + +#: tool.lua +msgid "" +"Interlocking tool\n" +"Punch: Highlight track section\n" +"Place: check route locks/show track section info" +msgstr "" + +#: tool.lua +msgid "No route locks set" +msgstr "" + +#: tool.lua +msgid "No track section at this location!" +msgstr "" + +#: tool.lua +msgid "Node is not a track!" +msgstr "" + +#: tool.lua +msgid "Route lock inspector" +msgstr "" + +#: tool.lua +msgid "Route locks currently put:" +msgstr "" + +#: tsr_rail.lua +msgid "Point Speed Restriction Track" +msgstr "" + +#: tsr_rail.lua +msgid "Point speed restriction: @1" +msgstr "" + +#: tsr_rail.lua +msgid "Set point speed restriction:" +msgstr "" + +#: tsr_rail.lua +msgid "You are not allowed to configure this track without the @1 privilege." +msgstr "您沒有「@1」許可權,不能調整這段軌道。" + +#: tsr_rail.lua +msgid "You are not allowed to configure this track." +msgstr "您不能調整這段軌道。" + +#~ msgid "(Doors closed)" +#~ msgstr "(車門已關閉)" + +#~ msgid "3-way turnout" +#~ msgstr "三開道岔" + +#~ msgid "90+Angle Diamond Crossing Track" +#~ msgstr "交叉軌道 (其中一條軌道與座標軸平行)" + +#~ msgid "<No coupler>" +#~ msgstr "<無連結器>" + +#~ msgid "@1 Platform (45 degree)" +#~ msgstr "較高的@1月臺 (45°)" + +#~ msgid "@1 Platform (high)" +#~ msgstr "較高的@1月臺" + +#~ msgid "@1 Platform (low)" +#~ msgstr "較低的@1月臺" + +#~ msgid "@1 Platform (low, 45 degree)" +#~ msgstr "較低的@1月臺 (45°)" + +#~ msgid "@1 Slope" +#~ msgstr "@1斜坡" + +#~ msgid "ATC Kick command warning: doors are closed." +#~ msgstr "ATC 警告:車門已關閉,無法踢出乘客。" + +#~ msgid "ATC Kick command warning: train moving." +#~ msgstr "ATC 警告:火車正在移動,無法踢出乘客。" + +#~ msgid "ATC Reverse command warning: didn't reverse train, train moving." +#~ msgstr "ATC 警告:火車正在移動,無法改變行車方向。" + +#~ msgid "ATC command parse error: Unknown command: @1" +#~ msgstr "ATC 語法錯誤:未知命令:@1" + +#~ msgid "ATC command syntax error: I statement not closed: @1" +#~ msgstr "ATC 語法錯誤:「I」命令不完整:@1" + +#~ msgid "ATC controller" +#~ msgstr "ATC 控制器" + +#~ msgid "" +#~ "ATC controller, mode @1\n" +#~ "Channel: @2" +#~ msgstr "" +#~ "ATC 控制器\n" +#~ "模式:@1\n" +#~ "頻道:@2" + +#~ msgid "" +#~ "ATC controller, mode @1\n" +#~ "Command: @2" +#~ msgstr "" +#~ "ATC 控制器\n" +#~ "模式:@1\n" +#~ "命令:@2" + +#~ msgid "Access to @1" +#~ msgstr "可前往@1" + +#~ msgid "Andrew's Cross" +#~ msgstr "平交道號誌燈" + +#~ msgid "Back of train would end up off track, cancelling." +#~ msgstr "火車後部不在軌道上。" + +#~ msgid "Big Industrial Train Engine" +#~ msgstr "大型工業用火車頭" + +#~ msgid "Boiler" +#~ msgstr "鍋爐" + +#~ msgid "Box Wagon" +#~ msgstr "貨運車廂" + +#~ msgid "Buffer and Chain Coupler" +#~ msgstr "鏈式連結器" + +#~ msgid "Bumper" +#~ msgstr "保險槓" + +#~ msgid "Can not couple: The couplers of the trains do not match (@1 and @2)." +#~ msgstr "您無法連結這兩節車廂:這兩節車廂使用不同的連結器 (@1和@2)。" + +#~ msgid "Can't get on: wagon full or doors closed!" +#~ msgstr "無法上車:車門已關閉或車廂已滿。" + +#, fuzzy +#~ msgid "Can't place: Not enough slope items left (@1 required)" +#~ msgstr "無法放置斜坡:您沒有足夠的鐵路斜坡放置工具 (您總共需要@1個)" + +#, fuzzy +#~ msgid "Can't place: There's no slope of length @1" +#~ msgstr "無法放置斜坡:advtrains 不支援長度為@1米的斜坡。" + +#, fuzzy +#~ msgid "Can't place: no supporting node at upper end." +#~ msgstr "無法放置斜坡:較高階沒有支撐方塊。" + +#, fuzzy +#~ msgid "Can't place: not pointing at node" +#~ msgstr "無法放置斜坡:您沒有選擇任何方塊。" + +#~ msgid "Can't place: protected position!" +#~ msgstr "無法放置:此區域已被保護。" + +#, fuzzy +#~ msgid "Can't place: space occupied!" +#~ msgstr "無法放置斜坡:此區域已被佔用。" + +#~ msgid "Chimney" +#~ msgstr "煙囪" + +#~ msgid "Command" +#~ msgstr "命令" + +#~ msgid "Command (on)" +#~ msgstr "命令 (啟用時)" + +#~ msgid "Default Seat (driver stand)" +#~ msgstr "預設座位 (司機座位)" + +#~ msgid "Dep. Speed" +#~ msgstr "出發速度" + +#~ msgid "Deprecated Track" +#~ msgstr "請不要使用" + +#~ msgid "Detailed Steam Engine" +#~ msgstr "精細的蒸汽機車" + +#~ msgid "Detector Rail" +#~ msgstr "探測軌道" + +#~ msgid "Diagonal Diamond Crossing Track" +#~ msgstr "交叉軌道" + +#~ msgid "Digiline channel" +#~ msgstr "Digiline 頻道" + +#~ msgid "Door Delay" +#~ msgstr "車門關閉時間" + +#~ msgid "" +#~ "Doors are closed. Use Sneak+rightclick to ignore the closed doors and get " +#~ "off." +#~ msgstr "車門已關閉,請使用潛行+右鍵單擊下車。" + +#, fuzzy +#~ msgid "Driver Stand" +#~ msgstr "司機座位" + +#~ msgid "Driver Stand (left)" +#~ msgstr "左側司機座位" + +#~ msgid "Driver Stand (right)" +#~ msgstr "右側司機座位" + +#~ msgid "Driver stand" +#~ msgstr "司機座位" + +#~ msgid "Driver's cab" +#~ msgstr "駕駛室" + +#~ msgid "Get off" +#~ msgstr "下車" + +#~ msgid "Get off (forced)" +#~ msgstr "強制下車" + +#~ msgid "Industrial Train Engine" +#~ msgstr "工業用火車頭" + +#~ msgid "Industrial tank wagon" +#~ msgstr "液體運輸車廂" + +#~ msgid "Industrial wood wagon" +#~ msgstr "木材運輸車廂" + +#~ msgid "Japanese Train Engine" +#~ msgstr "高速列車車頭" + +#~ msgid "Japanese Train Inter-Wagon Connection" +#~ msgstr "日本火車連結器" + +#~ msgid "Japanese Train Wagon" +#~ msgstr "高速列車車廂" + +#, fuzzy +#~ msgid "Japanese signal pole" +#~ msgstr "高速列車車廂" + +#~ msgid "Kick out passengers" +#~ msgstr "踢出乘客" + +#~ msgid "Lampless Signal" +#~ msgstr "臂木式號誌機" + +#~ msgid "Line" +#~ msgstr "火車線路" + +#~ msgid "Loading Track" +#~ msgstr "裝貨軌道" + +#~ msgid "Lock couples" +#~ msgstr "鎖定連結處" + +#~ msgid "No such lua entity." +#~ msgstr "您沒有指向一個可以用火車複製工具複製的物體。" + +#~ msgid "No such train: @1." +#~ msgstr "ID 為「@1」的列車不存在。" + +#~ msgid "No such wagon: @1." +#~ msgstr "ID 為「@1」的車廂不存在。" + +#, fuzzy +#~ msgid "Not allowed to do this." +#~ msgstr "您不能調整這段軌道。" + +#~ msgid "Passenger Wagon" +#~ msgstr "客車" + +#, fuzzy +#~ msgid "Passenger area" +#~ msgstr "客車" + +#~ msgid "" +#~ "Passive Component Naming Tool\n" +#~ "\n" +#~ "Right-click to name a passive component." +#~ msgstr "" +#~ "被動元件命名工具\n" +#~ "\n" +#~ "右鍵單擊命名所選元件。" + +#~ msgid "Perpendicular Diamond Crossing Track" +#~ msgstr "垂直交叉軌道" + +#~ msgid "Routingcode" +#~ msgstr "路由碼" + +#~ msgid "Save" +#~ msgstr "儲存" + +#~ msgid "Save wagon properties" +#~ msgstr "儲存車廂屬性" + +#~ msgid "Scharfenberg Coupler" +#~ msgstr "Scharfenberg 式連結器" + +#~ msgid "Select seat:" +#~ msgstr "請選擇座位:" + +#~ msgid "Show Inventory" +#~ msgstr "顯示物品欄" + +#~ msgid "Speed:" +#~ msgstr "速度" + +#~ msgid "Station Code" +#~ msgstr "車站碼" + +#~ msgid "Station/Stop Track" +#~ msgstr "車站軌道" + +#~ msgid "Steam Engine" +#~ msgstr "蒸汽機車" + +#~ msgid "Stop Time" +#~ msgstr "停站時間" + +#~ msgid "Subway Passenger Wagon" +#~ msgstr "地鐵車廂" + +#~ msgid "Target:" +#~ msgstr "目標速度" + +#~ msgid "Text displayed inside train" +#~ msgstr "車廂內部顯示" + +#~ msgid "Text displayed outside on train" +#~ msgstr "車廂外部顯示" + +#, fuzzy +#~ msgid "That wagon does not exist!" +#~ msgstr "這節車廂沒有座位。" + +#~ msgid "The clipboard couldn't access the metadata. Copy failed." +#~ msgstr "無法複製:剪貼簿無法訪問元資料。" + +#~ msgid "The clipboard couldn't access the metadata. Paste failed." +#~ msgstr "無法貼上:剪貼簿無法訪問元資料。" + +#~ msgid "The clipboard is empty." +#~ msgstr "剪貼簿是空的。" + +#, fuzzy +#~ msgid "The track you are trying to place the wagon on is not long enough!" +#~ msgstr "軌道太短。" + +#~ msgid "The track you are trying to place the wagon on is not long enough." +#~ msgstr "軌道太短。" + +#, fuzzy +#~ msgid "This Wagon ID" +#~ msgstr "車廂已滿。" + +#, fuzzy +#~ msgid "This node can't be changed using the trackworker!" +#~ msgstr "您不能使用鐵路調整工具調整這個方塊。" + +#, fuzzy +#~ msgid "This node can't be rotated using the trackworker!" +#~ msgstr "您不能使用鐵路調整工具旋轉這個方塊。" + +#, fuzzy +#~ msgid "This node can't be rotated using the trackworker," +#~ msgstr "您不能使用鐵路調整工具旋轉這個方塊。" + +#~ msgid "This position is protected!" +#~ msgstr "這裡已被保護。" + +#~ msgid "This track can not be changed." +#~ msgstr "您不能調整這段軌道。" + +#, fuzzy +#~ msgid "This track can not be removed!" +#~ msgstr "您不能移除這段軌道。" + +#, fuzzy +#~ msgid "This track can not be rotated!" +#~ msgstr "您不能旋轉這段軌道。" + +#~ msgid "This wagon has no seats." +#~ msgstr "這節車廂沒有座位。" + +#~ msgid "This wagon is full." +#~ msgstr "車廂已滿。" + +#~ msgid "This wagon is owned by @1, you can't destroy it." +#~ msgstr "這是 @1 的車廂,您不能摧毀它。" + +#~ msgid "Track" +#~ msgstr "軌道" + +#~ msgid "" +#~ "Track Worker Tool\n" +#~ "\n" +#~ "Left-click: change rail type (straight/curve/switch)\n" +#~ "Right-click: rotate object" +#~ msgstr "" +#~ "鐵路調整工具\n" +#~ "\n" +#~ "左鍵單擊:切換軌道型別\n" +#~ "右鍵單擊:旋轉方塊" + +#, fuzzy +#~ msgid "Train " +#~ msgstr "已複製火車。" + +#~ msgid "Train copied." +#~ msgstr "已複製火車。" + +#~ msgid "" +#~ "Train copy/paste tool\n" +#~ "\n" +#~ "Left-click: copy train\n" +#~ "Right-click: paste train" +#~ msgstr "" +#~ "火車複製工具\n" +#~ "\n" +#~ "左鍵單擊:複製\n" +#~ "右鍵單擊:粘帖" + +#~ msgid "Unconfigured ATC controller" +#~ msgstr "ATC 控制器 (未配置)" + +#~ msgid "Unconfigured LuaATC component" +#~ msgstr "LuaATC 元件 (未配置)" + +#~ msgid "Unloading Track" +#~ msgstr "卸貨軌道" + +#~ msgid "Use Sneak+rightclick to bypass closed doors!" +#~ msgstr "請使用潛行+右鍵上車。" + +#, fuzzy +#~ msgid "Wagon Properties Tool" +#~ msgstr "車廂屬性" + +#~ msgid "Wagon properties" +#~ msgstr "車廂屬性" + +#~ msgid "Wallmounted Signal (left)" +#~ msgstr "壁掛式色燈號誌機 (左側)" + +#~ msgid "Wallmounted Signal (right)" +#~ msgstr "壁掛式色燈號誌機 (右側)" + +#~ msgid "Wallmounted Signal (top)" +#~ msgstr "懸掛式色燈號誌機" + +#~ 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 "" +#~ "警告:如果您摧毀此車廂,您只能拿到一些鋼方塊。如果您確定要摧毀這節車廂,請" +#~ "按潛行鍵並左鍵單擊此車廂。" + +#~ msgid "Wheel" +#~ msgstr "車輪" + +#~ msgid "Y-turnout" +#~ msgstr "對稱道岔" + +#~ msgid "You are not allowed to build near tracks at this protected position." +#~ msgstr "這裡已被保護,您不能在這裡的鐵路附近建任何東西。" + +#~ msgid "" +#~ "You are not allowed to build near tracks without the track_builder " +#~ "privilege." +#~ msgstr "您沒有「train_operator」許可權,不能在鐵路附近建任何東西。" + +#~ msgid "You are not allowed to build tracks at this protected position." +#~ msgstr "這裡已被保護,您不能在這裡建造鐵路。" + +#~ msgid "" +#~ "You are not allowed to build tracks without the track_builder privilege." +#~ msgstr "您沒有「train_operator」許可權,不能在這裡建造鐵路。" + +#~ msgid "" +#~ "You are not allowed to configure this LuaATC component without the @1 " +#~ "privilege." +#~ msgstr "您沒有「@1」許可權,不能配置這個 LuaATC 元件。" + +#~ msgid "" +#~ "You are not allowed to couple trains without the train_operator privilege." +#~ msgstr "您沒有「train_operator」許可權,不能連結這兩節車廂。" + +#, fuzzy +#~ msgid "You are not allowed to modify this protected track." +#~ msgstr "這裡已被保護,您不能在這裡建造鐵路。" + +#~ msgid "" +#~ "You are not allowed to name LuaATC passive components without the @1 " +#~ "privilege." +#~ msgstr "您沒有「@1」許可權,不能命名這個元件。" + +#~ msgid "" +#~ "You are not allowed to operate turnouts and signals without the " +#~ "railway_operator privilege." +#~ msgstr "您沒有「railway_operator」許可權,不能控制鐵路設施。" + +#~ msgid "You do not have the @1 privilege." +#~ msgstr "您沒有「@1」許可權。" + +#, fuzzy +#~ msgid "You don't have the train_operator privilege." +#~ msgstr "您沒有「@1」許可權。" + +#~ msgid "" +#~ "You need to own at least one neighboring wagon to destroy this couple." +#~ msgstr "您必須至少擁有其中一節車廂才能分開這兩節車廂。" diff --git a/advtrains_interlocking/route_prog.lua b/advtrains_interlocking/route_prog.lua index 81aa133..b080945 100644 --- a/advtrains_interlocking/route_prog.lua +++ b/advtrains_interlocking/route_prog.lua @@ -19,6 +19,9 @@ C. punch a turnout (or some other passive component) to fix its state (toggle) The route visualization will also be used to visualize routes after they have been programmed. ]]-- +-- Get current translator +local S = advtrains.interlocking.translate + -- TODO duplicate local lntrans = { "A", "B" } local function sigd_to_string(sigd) @@ -123,11 +126,11 @@ the distant signal aspect is determined as DANGER. ]]-- local function chat(pname, message) - minetest.chat_send_player(pname, "[Route programming] "..message) + minetest.chat_send_player(pname, S("[Route programming] ")..message) end local function clear_lock(locks, pname, pts) locks[pts] = nil - chat(pname, pts.." is no longer affected when this route is set.") + chat(pname, S("@1 is no longer affected when this route is set.", pts)) end local function otherside(s) @@ -178,7 +181,9 @@ function advtrains.interlocking.visualize_route(origin, route, context, tmp_lcks if not pos then pos = advtrains.decode_pos(pts) end - routesprite(context, pos, "fix"..k..pts, "at_il_route_lock.png", "Fixed in state '"..state.."' by route "..route.name.." until segment #"..k.." is freed.") + routesprite(context, pos, "fix"..k..pts, "at_il_route_lock.png", + S("Fixed in state @1 by route @2 until segment #@3 is freed.", state, route.name, k) + ) end end @@ -197,7 +202,8 @@ function advtrains.interlocking.visualize_route(origin, route, context, tmp_lcks if node_ok then yaw = advtrains.dir_to_angle(conns[otherside(sigd.s)].c) end - routemarker(context, sigd.p, "rteterm"..i, "at_il_route_end.png", yaw, route.name.." Terminal "..i) + routemarker(context, sigd.p, "rteterm"..i, "at_il_route_end.png", yaw, + S("@1 Terminal @2", route.name, i)) end end end @@ -205,7 +211,8 @@ function advtrains.interlocking.visualize_route(origin, route, context, tmp_lcks -- display locks set by player for pts, state in pairs(tmp_lcks) do local pos = advtrains.decode_pos(pts) - routesprite(context, pos, "fixp"..pts, "at_il_route_lock_edit.png", "Fixed in state '"..state.."' by route "..route.name.." (punch to unfix)", + routesprite(context, pos, "fixp"..pts, "at_il_route_lock_edit.png", + S("Fixed in state @1 by route @2 (punch to unfix)", state, route.name), function() clear_lock(tmp_lcks, pname, pts) end) end end @@ -216,7 +223,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, S("Insufficient privileges to use this!")) return end local rp = { @@ -240,7 +247,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, S("Route programming mode active. Punch TCBs to add route segments, punch turnouts to lock them.")) end local function get_last_route_item(origin, route) @@ -253,33 +260,33 @@ 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, "Added track section '"..(tsref and (tsref.name or "") or "--EOI--").."' to the route.") + chat(pname, S("Added track section @1 to the route.", (tsref and (tsref.name or "") or "--EOI--"))) end local function finishrpform(pname) local rp = player_rte_prog[pname] if not rp then return end - local form = "size[7,6]label[0.5,0.5;Finish programming route]" + local form = "size[7,6]label[0.5,0.5;"..S("Finish programming route").."]" local terminal = get_last_route_item(rp.origin, rp.route) if terminal then local term_tcbs = advtrains.interlocking.db.get_tcbs(terminal) if term_tcbs.signal then local signalname = (term_tcbs.signal_name or "") .. sigd_to_string(terminal) - form = form .. "label[0.5,1.5;Route ends at signal:]" + form = form .. "label[0.5,1.5;"..S("Route ends at signal:").."]" form = form .. "label[0.5,2 ;"..signalname.."]" else - form = form .. "label[0.5,1.5;WARNING: Route does not end at a signal.]" - form = form .. "label[0.5,2 ;Routes should in most cases end at signals.]" - form = form .. "label[0.5,2.5;Cancel if you are unsure!]" + form = form .. "label[0.5,1.5;"..S("WARNING: Route does not end at a signal.").."]" + form = form .. "label[0.5,2 ;"..S("Routes should in most cases end at signals.").."]" + form = form .. "label[0.5,2.5;"..S("Cancel if you are unsure!").."]" end else - form = form .. "label[0.5,1.5;Route leads into]" - form = form .. "label[0.5,2 ;non-interlocked area]" + form = form .. "label[0.5,1.5;"..S("Route leads into").."]" + form = form .. "label[0.5,2 ;"..S("non-interlocked area").."]" end - form = form.."field[0.8,3.5;5.2,1;name;Enter Route Name;]" - form = form.."button_exit[0.5,4.5; 5,1;save;Save Route]" + form = form.."field[0.8,3.5;5.2,1;name;"..S("Enter Route Name")..";]" + form = form.."button_exit[0.5,4.5; 5,1;save;"..S("Save Route").."]" minetest.show_formspec(pname, "at_il_routepf", form) @@ -327,7 +334,7 @@ local function check_advance_valid(tcbpos, rp) local adv_tcbs = advtrains.interlocking.db.get_tcbs(this_sigd) local next_tsid = adv_tcbs.ts_id local can_over, over_ts, next_tc_bs = false, nil, nil - local cannotover_rsn = "Next section is diverging (>2 TCBs)" + local cannotover_rsn = S("Next section is diverging (>2 TCBs)") if next_tsid then -- you may not advance over EOI. While this is technically possible, -- in practise this just enters an unnecessary extra empty route item. @@ -335,7 +342,7 @@ local function check_advance_valid(tcbpos, rp) next_tc_bs = over_ts.tc_breaks can_over = #next_tc_bs <= 2 else - cannotover_rsn = "End of interlocking" + cannotover_rsn = S("End of interlocking") end local over_sigd = nil @@ -377,29 +384,29 @@ local function show_routing_form(pname, tcbpos, message) -- show nothing at all -- In all cases, Discard and Backtrack buttons needed. - local form = "size[7,9.5]label[0.5,0.5;Advance/Complete Route]" + local form = "size[7,9.5]label[0.5,0.5;"..S("Advance/Complete Route").."]" if message then form = form .. "label[0.5,1;"..message.."]" end if advance_valid and not is_endpoint then - form = form.. "label[0.5,1.8;Advance to next route section]" + form = form.. "label[0.5,1.8;"..S("Advance to next route section").."]" form = form.."image_button[0.5,2.2; 5,1;at_il_routep_advance.png;advance;]" form = form.. "label[0.5,3.5;-------------------------]" else - form = form.. "label[0.5,2.3;This TCB is not suitable as]" - form = form.. "label[0.5,2.8;route continuation.]" + form = form.. "label[0.5,2.3;"..S("This TCB is not suitable as").."]" + form = form.. "label[0.5,2.8;"..S("route continuation.").."]" end if advance_valid or is_endpoint then - form = form.. "label[0.5,3.8;Finish route HERE]" + form = form.. "label[0.5,3.8;"..S("Finish route HERE").."]" form = form.."image_button[0.5, 4.2; 5,1;at_il_routep_end_here.png;endhere;]" if can_over then - form = form.. "label[0.5,5.3;Finish route at end of NEXT section]" + form = form.. "label[0.5,5.3;"..S("Finish route at end of NEXT section").."]" form = form.."image_button[0.5,5.7; 5,1;at_il_routep_end_over.png;endover;]" else - form = form.. "label[0.5,5.3;Advancing over next section is]" - form = form.. "label[0.5,5.8;impossible at this place.]" + form = form.. "label[0.5,5.3;"..S("Advancing over next section is").."]" + form = form.. "label[0.5,5.8;"..S("impossible at this place.").."]" if cannotover_rsn then form = form.. "label[0.5,6.3;"..cannotover_rsn.."]" end @@ -408,9 +415,9 @@ local function show_routing_form(pname, tcbpos, message) form = form.. "label[0.5,7;-------------------------]" if #rp.route > 0 then - form = form.."button[0.5,7.4; 5,1;retract;Step back one section]" + form = form.."button[0.5,7.4; 5,1;retract;"..S("Step back one section").."]" end - form = form.."button[0.5,8.4; 5,1;cancel;Cancel route programming]" + form = form.."button[0.5,8.4; 5,1;cancel;"..S("Cancel route programming").."]" minetest.show_formspec(pname, "at_il_rprog_"..minetest.pos_to_string(tcbpos), form) end @@ -461,12 +468,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end rp.tmp_locks = rp.route[#rp.route].locks rp.route[#rp.route] = nil - chat(pname, "Route section "..(#rp.route+1).." removed.") + chat(pname, S("Route section @1 removed.", (#rp.route+1))) end if fields.cancel then player_rte_prog[pname] = nil advtrains.interlocking.clear_visu_context("prog_"..pname) - chat(pname, "Route discarded.") + chat(pname, S("Route discarded.")) minetest.close_formspec(pname, formname) return end @@ -487,13 +494,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local rp = player_rte_prog[pname] if rp then if #rp.route <= 0 then - chat(pname, "Cannot program route without a target") + chat(pname, S("Cannot program route without a target")) return end local tcbs = advtrains.interlocking.db.get_tcbs(rp.origin) if not tcbs then - chat(pname, "The origin TCB has become unknown during programming. Try again.") + chat(pname, S("The origin TCB has become unknown during programming. Try again.")) return end @@ -507,7 +514,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) advtrains.interlocking.clear_visu_context("prog_"..pname) player_rte_prog[pname] = nil - chat(pname, "Successfully programmed route.") + chat(pname, S("Successfully programmed route.")) advtrains.interlocking.show_route_edit_form(pname, rp.origin, #tcbs.routes) return @@ -530,7 +537,7 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) local meta = minetest.get_meta(pos) local tcbpts = meta:get_string("tcb_pos") if tcbpts == "" then - chat(pname, "This TCB is unconfigured, you first need to assign it to a rail") + chat(pname, S("This TCB is unconfigured, you first need to assign it to a rail")) return end local tcbpos = minetest.string_to_pos(tcbpts) @@ -553,7 +560,7 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) else local state = advtrains.getstate(pos) rp.tmp_lcks[pts] = state - chat(pname, pts.." is held in "..state.." position when this route is set and freed ") + chat(pname, S("@1 is held in @2 position when this route is set and freed ", pts, state)) end advtrains.interlocking.visualize_route(rp.origin, rp.route, "prog_"..pname, rp.tmp_lcks, pname) return diff --git a/advtrains_interlocking/route_ui.lua b/advtrains_interlocking/route_ui.lua index 3c7bd64..d1bae63 100644 --- a/advtrains_interlocking/route_ui.lua +++ b/advtrains_interlocking/route_ui.lua @@ -1,6 +1,9 @@ -- route_ui.lua -- User interface for showing and editing routes +-- Get current translator +local S = advtrains.interlocking.translate + local atil = advtrains.interlocking local ildb = atil.db local F = advtrains.formspec @@ -17,7 +20,7 @@ local sel_rpartcache = {} function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx) if not minetest.check_player_privs(pname, {train_operator=true, interlocking=true}) then - minetest.chat_send_player(pname, "Insufficient privileges to use this!") + minetest.chat_send_player(pname, S("Insufficient privileges to use this!")) return end @@ -26,9 +29,9 @@ 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,11]label[0.5,0.2;Route overview]" - form = form.."field[0.8,1.2;6.5,1;name;Route name;"..minetest.formspec_escape(route.name).."]" - form = form.."button[7.0,0.9;1.5,1;setname;Set]" + local form = "size[9,11]label[0.5,0.2;"..S("Route overview").."]" + form = form.."field[0.8,1.2;6.5,1;name;"..S("Route name")..";"..minetest.formspec_escape(route.name).."]" + form = form.."button[7.0,0.9;1.5,1;setname;"..S("Set").."]" -- construct textlist for route information local tab = {} @@ -47,12 +50,12 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx) while c_sigd and i<=#route do c_tcbs = ildb.get_tcbs(c_sigd) if not c_tcbs then - itab(i, "-!- No TCBS at "..sigd_to_string(c_sigd)..". Please reconfigure route!", "err", nil) + itab(i, "-!- "..S("TCB at @1 is missing", sigd_to_string(c_sigd)), "err", nil) break end c_ts_id = c_tcbs.ts_id if not c_ts_id then - itab(i, "-!- No track section adjacent to "..sigd_to_string(c_sigd)..". Please reconfigure route!", "err", nil) + itab(i, "-!- "..S("Track section after @1 missing", sigd_to_string(c_sigd)), "err", nil) break end c_ts = ildb.get_ts(c_ts_id) @@ -70,7 +73,7 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx) local pos = advtrains.decode_pos(pts) itab(i, "L "..pts.." -> "..state, "lock", pos) if not advtrains.is_passive(pos) then - itab(i, "-!- No passive component at "..pts..". Please reconfigure route!", "err", nil) + itab(i, "-!- "..S("Turnout/component missing at @1", minetest.pos_to_string(pos)), "err", nil) break end end @@ -79,8 +82,14 @@ function atil.show_route_edit_form(pname, sigd, routeid, sel_rpartidx) local nvar = c_rseg.next 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) + if not re_tcbs then + itab(i, "-!- "..S("TCB at @1 is missing", minetest.pos_to_string(nvar.p)), "err", nil) + break + elseif not re_tcbs.ts_id then + itab(i, "-!- "..S("TCB at @1 is not assigned to previous track section", minetest.pos_to_string(nvar.p)), "err", nil) + break + elseif re_tcbs.ts_id~=c_ts_id then + itab(i, "-!- "..S("TCB at @1 has different section than previous TCB", minetest.pos_to_string(nvar.p)), "err", nil) break end end @@ -113,10 +122,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(4.5, 2, S("Signal Aspect:")) 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 = { S("<Default Aspect>") } local sel = 1 for i, mae in ipairs(ndef.advtrains.main_aspects) do entries[i+1] = mae.description @@ -133,21 +142,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[4.5,4.0;sa_distant;"..S("Announce distant signal")..";%s]", assign_dst) else - form = form..F.label(4.5, 2, "No Signal at this TCB") + form = form..F.label(4.5, 2, S("No Signal at this TCB")) 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(4.5, 2, S("Section Options:")) -- 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[4.5,4.0;se_callon;"..S("Call-on (section may be occupied)")..";%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[4.5,2.5;4,4;errorta;"..S("Error:")..";"..tab[sel_rpartidx].."]" else - form = form..F.label(4.5, 2, "<< Select a route part to edit options") + form = form..F.label(4.5, 2, S("<< Select a route part to edit options")) end form = form.."button[0.5,6;1,1;prev;<<<]" @@ -158,15 +167,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;"..S("Delete Route").."]" + form = form.."button[0.5,7;3,1;back;"..S("Back to signal").."]" + form = form.."button[3.5,7;2,1;clone;"..S("Clone Route").."]" + form = form.."button[5.5,7;3,1;newfrom;"..S("New From Route").."]" --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;"..S("ARS Rule List")..";"..atil.ars_to_text(route.ars).."]" + form = form.."button[5.5,8.23;3,1;savears;"..S("Save ARS List").."]" 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 9901d23..353b521 100644 --- a/advtrains_interlocking/routesetting.lua +++ b/advtrains_interlocking/routesetting.lua @@ -1,5 +1,8 @@ -- Setting and clearing routes +-- Get current translator +local S = advtrains.interlocking.translate + -- TODO duplicate local lntrans = { "A", "B" } local function sigd_to_string(sigd) @@ -52,7 +55,7 @@ function ilrs.set_route(signal, route, try) c_tcbs = ildb.get_tcbs(c_sigd) if not c_tcbs then if not try then atwarn("Did not find TCBS",c_sigd,"while setting route",rtename,"of",signal) end - return false, "No TCB found at "..sigd_to_string(c_sigd)..". Please update or reconfigure route!" + return false, S("No TCB found at @1. Please update or reconfigure route!", sigd_to_string(c_sigd)) end if i == 1 then nodst = c_tcbs.nodst @@ -60,7 +63,7 @@ function ilrs.set_route(signal, route, try) c_ts_id = c_tcbs.ts_id if not c_ts_id then if not try then atwarn("Encountered End-Of-Interlocking while setting route",rtename,"of",signal) end - return false, "No track section adjacent to "..sigd_to_string(c_sigd)..". Please reconfigure route!" + return false, S("No track section adjacent to @1. Please reconfigure route!", sigd_to_string(c_sigd)) end c_ts = ildb.get_ts(c_ts_id) c_rseg = route[i] @@ -68,17 +71,18 @@ function ilrs.set_route(signal, route, try) if not c_ts then if not try then atwarn("Encountered ts missing during a real run of routesetting routine, at ts=",c_ts_id,"while setting route",rtename,"of",signal) end - return false, "Section '"..(c_ts_id).."' not found!", c_ts_id, nil + return false, S("Section '@1' not found!", c_ts_id), c_ts_id, nil elseif c_ts.route then if not try then atwarn("Encountered ts lock during a real run of routesetting routine, at ts=",c_ts_id,"while setting route",rtename,"of",signal) end - return false, "Section '"..(c_ts.name or c_ts_id).."' already has route set from "..sigd_to_string(c_ts.route.origin)..":\n"..c_ts.route.rsn, c_ts_id, nil + return false, S("Section '@1' already has route set from @2:", (c_ts.name or c_ts_id), sigd_to_string(c_ts.route.origin)) + .."\n"..c_ts.route.rsn, c_ts_id, nil end if c_ts.trains and #c_ts.trains>0 then if c_rseg.call_on then --atdebug("Routesetting: Call-on situation in", c_ts_id) else if not try then atwarn("Encountered ts occupied during a real run of routesetting routine, at ts=",c_ts_id,"while setting route",rtename,"of",signal) end - return false, "Section '"..(c_ts.name or c_ts_id).."' is occupied!", c_ts_id, nil + return false, S("Section '@1' is occupied!", (c_ts.name or c_ts_id)), c_ts_id, nil end end @@ -113,18 +117,18 @@ function ilrs.set_route(signal, route, try) local confl = ilrs.has_route_lock(lp) if confl then if not try then atwarn("Encountered route lock while a real run of routesetting routine, at position",pos,"while setting route",rtename,"of",signal) end - return false, "Lock conflict at "..minetest.pos_to_string(pos)..", Held locked by:\n"..confl, nil, lp + return false, S("Lock conflict at @1, Held locked by:", minetest.pos_to_string(pos)).."\n"..confl, nil, lp elseif not try then advtrains.setstate(pos, state) end end if not try then - ilrs.add_route_lock(lp, c_ts_id, "Route '"..rtename.."' from signal '"..signalname.."'", signal) + ilrs.add_route_lock(lp, c_ts_id, S("Route @1 from signal @2", rtename, signalname), signal) c_lckp[#c_lckp+1] = lp end else if not try then atwarn("Encountered route lock misconfiguration (no passive component) while a real run of routesetting routine, at position",pts,"while setting route",rtename,"of",signal) end - return false, "No passive component at "..minetest.pos_to_string(pos)..". Please update track section or reconfigure route!" + return false, S("Turnout/component missing at @1. Please update track section or reconfigure route!", minetest.pos_to_string(pos)) end end -- sanity check, is section at next the same as the current? @@ -134,7 +138,7 @@ function ilrs.set_route(signal, route, try) if (not re_tcbs or not re_tcbs.ts_id or re_tcbs.ts_id~=c_ts_id) and route[i+1] then --FIX 2025-01-08: in old worlds the final TCB may be wrong (it didn't matter back then), don't error out here (route still shown invalid in UI) if not try then atwarn("Encountered inconsistent ts (front~=back) while a real run of routesetting routine, at position",pts,"while setting route",rtename,"of",signal) end - return false, "TCB at "..minetest.pos_to_string(nvar.p).." has different section than previous TCB. Please update track section or reconfigure route!" + return false, S("TCB at @1 has different section than previous TCB. Please update track section or reconfigure route!", minetest.pos_to_string(nvar.p)) end end -- reserve ts and write locks @@ -146,7 +150,7 @@ function ilrs.set_route(signal, route, try) c_ts.route = { origin = signal, entry = c_sigd, - rsn = "Route '"..rtename.."' from signal '"..signalname.."', segment #"..i, + rsn = S("Route @1 from signal @2, segment #@3", rtename, signalname, i), first = first, } c_ts.route_post = { diff --git a/advtrains_interlocking/signal_api.lua b/advtrains_interlocking/signal_api.lua index f624f7a..e7c2248 100644 --- a/advtrains_interlocking/signal_api.lua +++ b/advtrains_interlocking/signal_api.lua @@ -460,7 +460,7 @@ function signal.after_dig(pos, oldnode, oldmetadata, player) local sigd = advtrains.interlocking.db.get_sigd_for_signal(pos) if sigd then advtrains.interlocking.db.unassign_signal_for_tcbs(sigd) - minetest.chat_send_player(player:get_player_name(), "Signal has been unassigned. Name and routes are kept for reuse.") + --minetest.chat_send_player(player:get_player_name(), "Signal has been unassigned. Name and routes are kept for reuse.") end -- clear influence point local ipts,iconnid = advtrains.interlocking.db.get_ip_by_signalpos(pos) diff --git a/advtrains_interlocking/signal_aspect_ui.lua b/advtrains_interlocking/signal_aspect_ui.lua index 49e7d8b..6ba1f7a 100644 --- a/advtrains_interlocking/signal_aspect_ui.lua +++ b/advtrains_interlocking/signal_aspect_ui.lua @@ -1,5 +1,8 @@ local F = advtrains.formspec +-- Get current translator +local S = advtrains.interlocking.translate + function advtrains.interlocking.show_signal_form(pos, node, pname, aux_key) local sigd = advtrains.interlocking.db.get_sigd_for_signal(pos) if sigd and not aux_key then @@ -38,14 +41,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.label(x, y, S("Influence point is set at @1.", string.format("%s/%s", pts, connid))), + F.button_exit(x, y+0.5, w/2-0.125, "ip_set", S("Modify")), + F.button_exit(x+w/2+0.125, y+0.5, w/2-0.125, "ip_clear", S("Clear")), } 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.label(x, y, S("Influence point is not set.")), + F.button_exit(x, y+0.5, w, "ip_set", S("Set influence point")), } end end @@ -83,10 +86,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, S("Signal Aspect:")) -- main aspect list if ndef.advtrains.main_aspects then - local entries = { "<none>" } + local entries = { S("<none>") } local sel = 1 for i, mae in ipairs(ndef.advtrains.main_aspects) do entries[i+1] = mae.description @@ -98,9 +101,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", S("Dst: @1", 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", S("<assign distant>")) end end @@ -165,12 +168,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, S("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, S("Configuring Signal: Please look in train's driving direction and punch rail to set influence point.")) players_assign_ip[pname] = pos end @@ -178,10 +181,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, S("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, S("Set distant signal: Punch the main signal to assign!")) players_assign_distant[pname] = pos end @@ -203,7 +206,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, S("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 +218,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, S("Assigned distant signal to the main signal at @1", core.pos_to_string(mainsig)) ) return end end @@ -245,7 +248,7 @@ 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, S("Configuring Signal: Successfully set influence point")) -- Try to find a TCB ahead and auto assign this signal there local pc = player:get_player_control() local no_auto_assign = pc.aux1 @@ -253,13 +256,13 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) 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, S("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, S("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, S("Configuring Signal: Node is too far away. Aborted.")) end players_assign_ip[pname] = nil end diff --git a/advtrains_interlocking/smartroute.lua b/advtrains_interlocking/smartroute.lua index 76c7814..2b9138c 100644 --- a/advtrains_interlocking/smartroute.lua +++ b/advtrains_interlocking/smartroute.lua @@ -1,6 +1,9 @@ -- smartroute.lua -- Implementation of the advtrains auto-route search +-- Get current translator +local S = advtrains.interlocking.translate + local atil = advtrains.interlocking local ildb = atil.db local sr = {} @@ -143,10 +146,10 @@ local players_smartroute_actions = {} function sr.propose_next(pname, sigd, find_more_than, searching_shunt) local tcbs = ildb.get_tcbs(sigd) if not tcbs or not tcbs.routes then - minetest.chat_send_player(pname, "Smartroute: TCBS or routes don't exist here!") + minetest.chat_send_player(pname, S("Smartroute: TCBS or routes don't exist here!")) return elseif not tcbs.ts_id then - minetest.chat_send_player(pname, "Smartroute: No track section directly ahead!") + minetest.chat_send_player(pname, S("Smartroute: No track section directly ahead!")) return end -- Step 1: search for routes using the current settings @@ -158,7 +161,7 @@ function sr.propose_next(pname, sigd, find_more_than, searching_shunt) found_routes = found_routes } -- step 3: build form - local form = "size[8,5]label[0,0;Route search: "..#found_routes.." found]" + local form = "size[8,5]label[0,0;"..S("Route search: @1 found", #found_routes).."]" local tab = {} for idx, froute in ipairs(found_routes) do local secfl = table.copy(froute.secseq) @@ -172,8 +175,8 @@ function sr.propose_next(pname, sigd, find_more_than, searching_shunt) tab[idx] = minetest.formspec_escape(froute.name..viatext) end form=form.."textlist[0.5,1;7,3;rtelist;"..table.concat(tab, ",").."]" - form=form.."button[0.5,4;2,1;continue;Search further]" - form=form.."button[2.5,4;2,1;apply;Apply]" + form=form.."button[0.5,4;2,1;continue;"..S("Search further").."]" + form=form.."button[2.5,4;2,1;apply;"..S("Apply").."]" minetest.show_formspec(pname, "at_il_smartroute_propose", form) end diff --git a/advtrains_interlocking/tcb_ts_ui.lua b/advtrains_interlocking/tcb_ts_ui.lua index 0be943a..0111f5e 100755 --- a/advtrains_interlocking/tcb_ts_ui.lua +++ b/advtrains_interlocking/tcb_ts_ui.lua @@ -1,5 +1,8 @@ -- Track Circuit Breaks and Track Sections - Player interaction +-- Get current translator +local S = advtrains.interlocking.translate + local players_assign_tcb = {} local players_assign_signal = {} local players_assign_xlink = {} @@ -30,7 +33,7 @@ minetest.register_node("advtrains_interlocking:tcb_node", { }, mesh = "at_il_tcb_node.obj", tiles = {"at_il_tcb_node.png"}, - description="Track Circuit Break", + description=S("Track Circuit Break"), sunlight_propagates=true, groups = { cracky=3, @@ -40,12 +43,12 @@ minetest.register_node("advtrains_interlocking:tcb_node", { }, after_place_node = function(pos, node, player) local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Unconfigured Track Circuit Break, right-click to assign.") + meta:set_string("infotext", S("Unconfigured Track Circuit Break, right-click to assign.")) end, on_rightclick = function(pos, node, player) local pname = player:get_player_name() if not minetest.check_player_privs(pname, "interlocking") then - minetest.chat_send_player(pname, "Insufficient privileges to use this!") + minetest.chat_send_player(pname, S("Insufficient privileges to use this!")) return end @@ -57,11 +60,11 @@ minetest.register_node("advtrains_interlocking:tcb_node", { if tcb then advtrains.interlocking.show_tcb_form(tcbpos, pname) else - minetest.chat_send_player(pname, "This TCB has been removed. Please dig marker.") + minetest.chat_send_player(pname, S("This TCB has been removed. Please dig marker.")) end else --unconfigured - minetest.chat_send_player(pname, "Configuring TCB: Please punch the rail you want to assign this TCB to.") + minetest.chat_send_player(pname, S("Configuring TCB: Please punch the rail you want to assign this TCB to.")) players_assign_tcb[pname] = pos end @@ -85,7 +88,7 @@ minetest.register_node("advtrains_interlocking:tcb_node", { local tcbpts = meta:get_string("tcb_pos") if tcbpts ~= "" then if not minetest.check_player_privs(pname, "interlocking") then - minetest.chat_send_player(pname, "Insufficient privileges to use this!") + minetest.chat_send_player(pname, S("Insufficient privileges to use this!")) return end local tcbpos = minetest.string_to_pos(tcbpts) @@ -93,7 +96,7 @@ minetest.register_node("advtrains_interlocking:tcb_node", { if not tcb then return true end for connid=1,2 do if tcb[connid].signal then - minetest.chat_send_player(pname, "Can't remove TCB: Both sides must have no signal assigned!") + minetest.chat_send_player(pname, S("Can't remove TCB: Both sides must have no signal assigned!")) return false end end @@ -162,21 +165,21 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) if node_ok and #conns == 2 then -- if there is already a tcb here, reassign it if ildb.get_tcb(pos) then - minetest.chat_send_player(pname, "Configuring TCB: Already existed at this position, it is now linked to this TCB marker") + minetest.chat_send_player(pname, S("Configuring TCB: Already existed at this position, it is now linked to this TCB marker")) else ildb.create_tcb_at(pos, pname) end local meta = minetest.get_meta(tcbnpos) meta:set_string("tcb_pos", minetest.pos_to_string(pos)) - meta:set_string("infotext", "TCB assigned to "..minetest.pos_to_string(pos)) - minetest.chat_send_player(pname, "Configuring TCB: Successfully configured TCB") + meta:set_string("infotext", S("TCB assigned to @1", minetest.pos_to_string(pos))) + minetest.chat_send_player(pname, S("Configuring TCB: Successfully configured TCB")) advtrains.interlocking.show_tcb_marker(pos) else - minetest.chat_send_player(pname, "Configuring TCB: This is not a normal two-connection rail! Aborted.") + minetest.chat_send_player(pname, S("Configuring TCB: This is not a normal two-connection rail! Aborted.")) end else - minetest.chat_send_player(pname, "Configuring TCB: Node is too far away. Aborted.") + minetest.chat_send_player(pname, S("Configuring TCB: Node is too far away. Aborted.")) end players_assign_tcb[pname] = nil end @@ -194,19 +197,19 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) ildb.assign_signal_to_tcbs(pos, sigd) -- use auto-naming advtrains.interlocking.add_autoname_to_tcbs(tcbs, pname) - minetest.chat_send_player(pname, "Configuring TCB: Successfully assigned signal.") + minetest.chat_send_player(pname, S("Configuring TCB: Successfully assigned signal.")) advtrains.interlocking.show_ip_form(pos, pname, true) else - minetest.chat_send_player(pname, "Configuring TCB: Internal error, TCBS doesn't exist. Aborted.") + minetest.chat_send_player(pname, S("Configuring TCB: Internal error, TCBS doesn't exist. Aborted.")) end else - minetest.chat_send_player(pname, "Configuring TCB: Cannot use static signals for routesetting. Aborted.") + minetest.chat_send_player(pname, S("Configuring TCB: Cannot use static signals for routesetting. Aborted.")) end else - minetest.chat_send_player(pname, "Configuring TCB: Not a compatible signal. Aborted.") + minetest.chat_send_player(pname, S("Configuring TCB: Not a compatible signal. Aborted.")) end else - minetest.chat_send_player(pname, "Configuring TCB: Node is too far away. Aborted.") + minetest.chat_send_player(pname, S("Configuring TCB: Node is too far away. Aborted.")) end players_assign_signal[pname] = nil end @@ -219,14 +222,14 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) local state = advtrains.getstate(pos) local ts = ildb.get_ts(ts_id) if ts and ts.fixed_locks then - minetest.chat_send_player(pname, minetest.pos_to_string(pos).." locks in state "..state) + minetest.chat_send_player(pname, S("@1 locks in state @2", minetest.pos_to_string(pos), state)) ts.fixed_locks[pts] = state else - minetest.chat_send_player(pname, "Error: TS modified, abort!") + minetest.chat_send_player(pname, S("Error: TS modified, abort!")) players_assign_fixedlocks[pname] = nil end else - minetest.chat_send_player(pname, "Setting fixed locks finished!") + minetest.chat_send_player(pname, S("Setting fixed locks finished!")) players_assign_fixedlocks[pname] = nil ildb.update_rs_cache(ts_id) advtrains.interlocking.show_ts_form(ts_id, pname) @@ -247,12 +250,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, S("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, S("TCB already existed at this position, now linked to this node")) else ildb.create_tcb_at(pos, pname) end @@ -261,7 +264,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, S("Signal on B side already assigned!")) return end ildb.assign_signal_to_tcbs(pos, sigd) @@ -281,7 +284,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, S("Can't remove track, a train is here!")) return false end -- end of standard checks @@ -335,7 +338,7 @@ function advtrains.interlocking.self_tcb_make_on_rightclick_callback(fail_silent 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, S("Insufficient privileges to use this!")) end return end @@ -383,30 +386,30 @@ 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..";"..S("Side @1", btnpref)..": "..minetest.formspec_escape(ts.name or tcbs.ts_id).."]" + form = form.."button[0.5,"..(offset+0.5)..";5,1;"..btnpref.."_gotots;"..S("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..";Side "..btnpref..": "..S("End of interlocking").."]" + form = form.."button[0.5,"..(offset+0.5)..";5,1;"..btnpref.."_makeil;"..S("Create Interlocked Track Section").."]" end -- xlink if tcbs.xlink then - form = form.."label[0.5,"..(offset+1.5)..";Link:"..ildb.sigd_to_string(tcbs.xlink).."]" + form = form.."label[0.5,"..(offset+1.5)..";"..S("Link: @1", ildb.sigd_to_string(tcbs.xlink)).."]" 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;"..S("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)..";"..S("No Link").."]" form = form.."button[4.5,"..(offset+1.5)..";1,1;"..btnpref.."_xlinkadd;+]" end end if tcbs.signal then - form = form.."button[0.5,"..(offset+2.5)..";5,1;"..btnpref.."_sigdia;Signalling]" + form = form.."button[0.5,"..(offset+2.5)..";5,1;"..btnpref.."_sigdia;"..S("Signalling").."]" else - form = form.."button[0.5,"..(offset+2.5)..";5,1;"..btnpref.."_asnsig;Assign a signal]" + form = form.."button[0.5,"..(offset+2.5)..";5,1;"..btnpref.."_asnsig;"..S("Assign a signal").."]" end return form end @@ -414,13 +417,13 @@ end function advtrains.interlocking.show_tcb_form(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, S("Insufficient privileges to use this!")) return end local tcb = ildb.get_tcb(pos) if not tcb then return end - local form = "size[6,9] label[0.5,0.5;Track Circuit Break Configuration]" + local form = "size[6,9] label[0.5,0.5;"..S("Track Circuit Break Configuration").."]" form = form .. mktcbformspec(pos, 1, tcb[1], 1, pname) form = form .. mktcbformspec(pos, 2, tcb[2], 5, pname) @@ -487,14 +490,14 @@ 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, S("TCB Link: Select linked TCB now!")) minetest.close_formspec(pname, formname) return -- to not reopen form end end end if f_asnsig[connid] and not tcbs.signal then - minetest.chat_send_player(pname, "Configuring TCB: Please punch the signal to assign.") + minetest.chat_send_player(pname, S("Configuring TCB: Please punch the signal to assign.")) players_assign_signal[pname] = {p=pos, s=connid} minetest.close_formspec(pname, formname) return @@ -516,15 +519,15 @@ end) function advtrains.interlocking.show_ts_form(ts_id, 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, S("Insufficient privileges to use this!")) return end local ts = ildb.get_ts(ts_id) if not ts_id then return end - local form = "size[10.5,10]label[0.5,0.5;Track Section Detail - "..ts_id.."]" - form = form.."field[0.8,2;5.2,1;name;Section name;"..minetest.formspec_escape(ts.name or "").."]" - form = form.."button[5.5,1.7;1,1;setname;Set]" + local form = "size[10.5,10]label[0.5,0.5;"..S("Track Section Detail - @1", ts_id).."]" + form = form.."field[0.8,2;5.2,1;name;"..S("Section name")..";"..minetest.formspec_escape(ts.name or "").."]" + form = form.."button[5.5,1.7;1,1;setname;"..S("Set").."]" local hint local strtab = {} @@ -533,7 +536,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;"..S("Boundary TCBs:").."]" form = form.."textlist[0.5,3;4,3;tcblist;"..table.concat(strtab, ",").."]" -- additional route locks (e.g. for level crossings) @@ -545,36 +548,36 @@ 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;"..S("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;"..S("Add locks").."]" + form = form.."button[7.5,6;2,1;flk_clear;"..S("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;"..S("Remove Section").."]" + form = form.."tooltip[remove;"..S("This will remove the track section and set all its end points to End Of Interlocking").."]" else hint=3 end if ts.route then - form = form.."label[0.5,6.1;Route is set: "..ts.route.rsn.."]" + form = form.."label[0.5,6.1;"..S("Route is set: ")..ts.route.rsn.."]" elseif ts.route_post then - form = form.."label[0.5,6.1;Section holds "..#(ts.route_post.lcks or {}).." route locks.]" + form = form.."label[0.5,6.1;"..S("Section holds @1 route locks.", #(ts.route_post.lcks or {})).."]" end -- occupying trains if ts.trains and #ts.trains>0 then - form = form.."label[0.5,7.1;Trains on this section:]" + form = form.."label[0.5,7.1;"..S("Trains on this section:").."]" form = form.."textlist[0.5,7.7;3,2;trnlist;"..table.concat(ts.trains, ",").."]" else - form = form.."label[0.5,7.1;No trains on this section.]" + form = form.."label[0.5,7.1;"..S("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;"..S("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;"..S("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 @@ -615,7 +618,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, S("Punch components to add fixed locks. (punch anything else = end)")) minetest.close_formspec(pname, formname) return elseif fields.flk_clear then @@ -625,10 +628,10 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.reset then -- User requested resetting the section -- Show him what this means... - local form = "size[7,5]label[0.5,0.5;Reset track section]" - form = form.."label[0.5,1;This will clear the list of trains\nand the routesetting status of this section.\nAre you sure?]" - form = form.."button_exit[0.5,2.5; 5,1;reset;Yes]" - form = form.."button_exit[0.5,3.5; 5,1;cancel;Cancel]" + local form = "size[7,5]label[0.5,0.5;"..S("Reset track section").."]" + form = form.."label[0.5,1;"..S("This will clear the list of trains\nand the routesetting status of this section.\nAre you sure?").."]" + form = form.."button_exit[0.5,2.5; 5,1;reset;"..S("Yes").."]" + form = form.."button_exit[0.5,3.5; 5,1;cancel;"..S("Cancel").."]" minetest.show_formspec(pname, "at_il_tsreset_"..ts_id, form) return end @@ -651,7 +654,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local tcbs = ildb.get_tcbs(sigd) advtrains.interlocking.signal.update_route_aspect(tcbs) end - minetest.chat_send_player(pname, "Reset track section "..ts_id.."!") + minetest.chat_send_player(pname, S("Reset track section @1!", ts_id)) end end) @@ -764,11 +767,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, S("TCB at @1 is missing", 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, S("Track section after @1 missing", sigd_to_string(c_sigd)) end c_ts = ildb.get_ts(c_ts_id) @@ -778,7 +781,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, S("Turnout/component missing at @1", minetest.pos_to_string(pos)) end end end @@ -786,8 +789,12 @@ function advtrains.interlocking.check_route_valid(route, sigd) local nvar = c_rseg.next 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." + if not re_tcbs then + return false, S("TCB at @1 is missing", minetest.pos_to_string(nvar.p)) + elseif not re_tcbs.ts_id then + return false, S("TCB at @1 is not assigned to previous track section", minetest.pos_to_string(nvar.p)) + elseif re_tcbs.ts_id~=c_ts_id then + return false, S("TCB at @1 has different section than previous TCB", minetest.pos_to_string(nvar.p)) end end -- advance @@ -796,11 +803,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, S("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, S("TCB at @1 is missing", sigd_to_string(c_sigd)) end return true, nil, c_sigd end @@ -814,7 +821,7 @@ local p_open_sig_form = {} function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, called_from_form_update) if not minetest.check_player_privs(pname, "train_operator") then - minetest.chat_send_player(pname, "Insufficient privileges to use this!") + minetest.chat_send_player(pname, S("Insufficient privileges to use this!")) return end local hasprivs = minetest.check_player_privs(pname, "interlocking") @@ -823,9 +830,9 @@ 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 - local form = "size[7,10.25]label[0.5,0.5;Signal at "..minetest.pos_to_string(sigd.p).."]" - form = form.."field[0.8,1.5;5.2,1;name;Signal name;"..minetest.formspec_escape(tcbs.signal_name or "").."]" - form = form.."button[5.5,1.2;1,1;setname;Set]" + local form = "size[7,10.25]label[0.5,0.5;"..S("Signal at @1", minetest.pos_to_string(sigd.p)).."]" + form = form.."field[0.8,1.5;5.2,1;name;"..S("Signal name")..";"..minetest.formspec_escape(tcbs.signal_name or "").."]" + form = form.."button[5.5,1.2;1,1;setname;"..S("Set").."]" if tcbs.routeset then if type(tcbs.routeset)=="table" then @@ -839,7 +846,7 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, calle end rtenames[midx] = rte.name end - form = form.."label[0.5,2.5;Multiple routes are requested (first available is set):]" + form = form.."label[0.5,2.5;"..S("Multiple routes are requested (first available is set):").."]" form = form.."label[0.5,3.0;"..minetest.formspec_escape(table.concat(rtenames,", ")).."]" else local rte = tcbs.routes[tcbs.routeset] @@ -848,26 +855,26 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, calle tcbs.routeset = nil return end - form = form.."label[0.5,2.5;A route is requested from this signal:]" + form = form.."label[0.5,2.5;"..S("A route is requested from this signal:").."]" form = form.."label[0.5,3.0;"..minetest.formspec_escape(rte.name).."]" end if tcbs.route_committed then - form = form.."label[0.5,3.5;Route has been set.]" + form = form.."label[0.5,3.5;"..S("Route has been set.").."]" else - form = form.."label[0.5,3.5;Waiting for route to be set...]" + form = form.."label[0.5,3.5;"..S("Waiting for route to be set...").."]" if tcbs.route_rsn then form = form.."label[0.5,4;"..minetest.formspec_escape(tcbs.route_rsn).."]" end end if not tcbs.route_auto then - form = form.."button[0.5,7; 5,1;auto;Enable Automatic Working]" + form = form.."button[0.5,7; 5,1;auto;"..S("Enable Automatic Working").."]" else - form = form.."label[0.5,7 ;Automatic Working is active.]" - form = form.."label[0.5,7.3;Route is re-set when a train passed.]" - form = form.."button[0.5,7.7; 5,1;noauto;Disable Automatic Working]" + form = form.."label[0.5,7 ;"..S("Automatic Working is active.").."]" + form = form.."label[0.5,7.3;"..S("Route is re-set when a train passed.").."]" + form = form.."button[0.5,7.7; 5,1;noauto;"..S("Disable Automatic Working").."]" end - form = form.."button[0.5,6; 5,1;cancelroute;Cancel Route]" + form = form.."button[0.5,6; 5,1;cancelroute;"..S("Cancel Route").."]" else if not tcbs.route_origin then if #tcbs.routes > 0 then @@ -879,7 +886,7 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, calle local clr = "" if not valid then clr = "#FF5555" - rname = rname.." (invalid)" + rname = rname..S(" (invalid)") elseif route.ars then clr = "#FFFF55" if route.ars.default then @@ -888,35 +895,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;"..S("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;"..S("Set Route").."]" + form = form.."button[0.5,7;2,1;dsproute;"..S("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;D]tooltip[setarsdefault;"..S("Set ARS default route").."]" + form = form.."button[3.5,7;2,1;editroute;"..S("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;"..S("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 ;"..S("NOTE: ARS is disabled.").."]" + form = form.."label[0.5,6.5;"..S("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;"..S("Smart Route").."]" + form = form.."button[ 3,8;2.5,1;newroute;"..S("New (Manual)").."]" + form = form..string.format("checkbox[0.5,8.75;ars;"..S("Automatic routesetting")..";%s]", not tcbs.ars_disabled) + form = form..string.format("checkbox[0.5,9.25;dstarstrig;"..S("Distant signal triggers ARS")..";%s]", not tcbs.no_dst_ars_trig) end else -- no route is active, and no route is so far defined @@ -924,29 +931,27 @@ 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;"..S("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;"..S("Smart Route").."]" + form = form.."button[ 3,4;2.5,1;newroute;"..S("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;"..S("This is an always-halt signal (e.g. a buffer)\nNo routes can be set from here.").."]" 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;"..S("This is a pure distant signal\nNo route is currently set through.").."]" end end elseif sigd_equal(tcbs.route_origin, sigd) then -- something has gone wrong: tcbs.routeset should have been set... - form = form.."label[0.5,2.5;Inconsistent state: route_origin is same TCBS but no route set. Try again.]" + form = form.."label[0.5,2.5;".."Inconsistent state: route_origin is same TCBS but no route set. Try again.".."]" ilrs.cancel_route_from(sigd) else - form = form.."label[0.5,2.5;Route is set over this signal by:\n"..sigd_to_string(tcbs.route_origin).."]" - form = form.."label[0.5,4;Wait for this route to be cancelled in order to do anything here.]" + form = form.."label[0.5,2.5;"..S("Route is set over this signal by:").."\n"..sigd_to_string(tcbs.route_origin).."]" + form = form.."label[0.5,4;"..S("Wait for this route to be cancelled in order to do anything here.").."]" end end sig_pselidx[pname] = sel_rte @@ -1024,11 +1029,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) advtrains.interlocking.init_route_prog(pname, sigd) minetest.close_formspec(pname, formname) tcbs.ars_ignore_next = nil + p_open_sig_form[pname] = nil -- form is closed/left, do not reopen return end if fields.smartroute and hasprivs then advtrains.interlocking.smartroute.start(pname, sigd) tcbs.ars_ignore_next = nil + p_open_sig_form[pname] = nil -- form is closed/left, do not reopen return end if sel_rte and tcbs.routes[sel_rte] then @@ -1042,6 +1049,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end if fields.editroute and hasprivs then advtrains.interlocking.show_route_edit_form(pname, sigd, sel_rte) + p_open_sig_form[pname] = nil -- form is closed/left, do not reopen return end if fields.setarsdefault and hasprivs then @@ -1067,7 +1075,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, S("Cannot delete route which has ARS rules, please review and then delete through edit dialog!")) else table.remove(tcbs.routes,sel_rte) end diff --git a/advtrains_interlocking/tool.lua b/advtrains_interlocking/tool.lua index 5ceae04..d7a42b4 100644 --- a/advtrains_interlocking/tool.lua +++ b/advtrains_interlocking/tool.lua @@ -1,21 +1,24 @@ -- tool.lua -- Interlocking tool +-- Get current translator +local S = advtrains.interlocking.translate + 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;"..S("Route lock inspector").."]" 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;"..S("Route locks currently put:").."\n"..rtl.."]" + form = form.."button_exit[0.5,3.5; 5,1;clear;"..S("Clear").."]" 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;"..S("No route locks set").."]" + form = form.."button_exit[0.5,3.5; 5,1;emplace;"..S("Emplace manual lock").."]" end minetest.show_formspec(pname, "at_il_rtool_"..pts, form) @@ -25,7 +28,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, S("Node is not a track!")) return end if advtrains.interlocking.db.get_tcb(pos) then @@ -37,14 +40,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, S("No track section at this location!")) 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, S("Node is not a track!")) return end @@ -62,13 +65,13 @@ 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, S("No track section at this location!")) end end minetest.register_craftitem("advtrains_interlocking:tool",{ - description = "Interlocking tool\nPunch: Highlight track section\nPlace: check route locks/show track section info", + description = S("Interlocking tool\nPunch: Highlight track section\nPlace: check route locks/show track section info"), groups = {cracky=1}, -- key=name, value=rating; rating=1..3. inventory_image = "at_il_tool.png", wield_image = "at_il_tool.png", @@ -79,7 +82,7 @@ minetest.register_craftitem("advtrains_interlocking:tool",{ return end if not minetest.check_player_privs(pname, {interlocking=true}) then - minetest.chat_send_player(pname, "Insufficient privileges to use this!") + minetest.chat_send_player(pname, S("Insufficient privileges to use this!")) return end if pointed_thing.type=="node" then @@ -93,7 +96,7 @@ minetest.register_craftitem("advtrains_interlocking:tool",{ return end if not minetest.check_player_privs(pname, {interlocking=true}) then - minetest.chat_send_player(pname, "Insufficient privileges to use this!") + minetest.chat_send_player(pname, S("Insufficient privileges to use this!")) return end if pointed_thing.type=="node" then @@ -129,4 +132,4 @@ minetest.register_craft({ output = "advtrains_interlocking:tool", type = "shapeless", recipe = {"dye:green","advtrains:trackworker", "advtrains_interlocking:tcb_node"} -})
\ No newline at end of file +}) diff --git a/advtrains_interlocking/tsr_rail.lua b/advtrains_interlocking/tsr_rail.lua index c1e3c1c..5a808fc 100644 --- a/advtrains_interlocking/tsr_rail.lua +++ b/advtrains_interlocking/tsr_rail.lua @@ -3,7 +3,8 @@ -- Simple rail whose only purpose is to place a TSR on the position, as a temporary solution until the timetable system covers everything. -- This code resembles the code in lines/stoprail.lua -local S = attrans +-- Get current translator +local S = advtrains.interlocking.translate local function updateform(pos) local meta = minetest.get_meta(pos) |