From af43c413b0f57d7ee907a05139515f2b3eb9e4cd Mon Sep 17 00:00:00 2001 From: ywang Date: Sat, 27 Mar 2021 16:45:41 +0100 Subject: Update German translation; add script to update l10n files --- advtrains/locale/advtrains.de.tr | 117 ++++++++++++++++++++++++------------ advtrains/locale/advtrains.zh_CN.tr | 2 +- advtrains/locale/template.txt | 1 - advtrains/locale/update-l10n.lua | 46 ++++++++++++++ 4 files changed, 127 insertions(+), 39 deletions(-) create mode 100644 advtrains/locale/update-l10n.lua diff --git a/advtrains/locale/advtrains.de.tr b/advtrains/locale/advtrains.de.tr index 6abbc12..dd29622 100644 --- a/advtrains/locale/advtrains.de.tr +++ b/advtrains/locale/advtrains.de.tr @@ -1,59 +1,100 @@ # textdomain: advtrains -This wagon is owned by @1, you can't destroy it.=Dieser Waggon gehört @1, du kannst ihn nicht abbauen. -Warning: If you destroy this wagon, you only get some steel back! If you are sure, hold Sneak and left-click the wagon.=Warnung: Du erhältst nur etwas Stahl zurück. Wenn du sicher bist, dass du den Waggon zerstören willst, halte 'Schleichen' und klicke links. -Show Inventory=Zeige Inventar -Select seat:=Wähle einen Sitzplatz aus: -ATC controller, unconfigured.=Zugbeeinflussungsschiene, nicht konfiguiert. + +# Advtrains Core (unorganized) +This wagon is owned by @1, you can't destroy it.=Dieser Waggon gehört @1, Sie dürfen ihn nicht abbauen. +Warning: If you destroy this wagon, you only get some steel back! If you are sure, hold Sneak and left-click the wagon.=Warnung: Sie erhalten nur etwas Stahl zurück. Halten Sie „Schleichen“ und klicken Sie links, um den Waggon abzubauen. +ATC controller, unconfigured.=Nicht konfiguierte Zugbeeinflussungsschiene ATC controller=Zugbeeinflussungsschiene -ATC controller, mode @1@nChannel: @2=Zugbeeinflussungsschiene in Betriebsart "@1"@nKanal: @2 -ATC controller, mode @1@nCommand: @2=Zugbeeinflussungsschiene in Betriebsart "@1"@nBefehl: @2 +ATC controller, mode @1@nChannel: @2=Zugbeeinflussungsschiene in Betriebsart „@1“@nKanal: @2 +ATC controller, mode @1@nCommand: @2=Zugbeeinflussungsschiene in Betriebsart „@1“@nBefehl: @2 Command=Befehl -Command (on)=Befehl (wenn ein) +Command (on)=Befehl (wenn angeschaltet) Digiline channel=Digiline-Kanal -Save=Speichern -ATC Reverse command warning: didn't reverse train, train moving!=Zugbeeinflussung - Warnung: Befehl 'R' nicht ausgeführt, Zug in Bewegung! +ATC Reverse command warning: didn't reverse train, train moving!=Zugbeeinflussung - Warnung: der Befehl „R“ wurde nicht ausgeführt, Zug in Bewegung! ATC command syntax error: I statement not closed: @1=Zugbeeinflussung - Syntaxfehler: I-Anweisung nicht geschlossen: @1 ATC command parse error: Unknown command: @1=Zugbeeinflussung - Fehler: Unbekannter Befehl: @1 This position is protected!=Diese Position ist geschützt! -You need to own at least one neighboring wagon to destroy this couple.=Du musst Besitzer eines angrenzenden Waggons sein, um hier abzukuppeln. -@1 Platform (low)=Niedriger @1-Bahnsteig -@1 Platform (high)=Hoher @1-Bahnsteig +You need to own at least one neighboring wagon to destroy this couple.=Sie müssen Besitzer eines angrenzenden Waggons sein, um hier abzukuppeln. +This node can't be rotated using the trackworker!=Dieser Block kann nicht mit dem Schienenwerkzeug gedreht werden. +This node can't be changed using the trackworker!=Dieser Block kann nicht mit dem Schienenwerkzeug bearbeitet werden. +Can't place: not pointing at node=Es kann nicht platziert werden: Sie zeigen nicht auf einem Block. +Can't place: space occupied!=Es kann nicht platziert werden: diese Position ist besetzt. +Can't place: protected position!=Es kann nicht platziert werden: diese Position ist geschützt. +Can't place: Not enough slope items left (@1 required)=Es kann nicht platziert werden: Sie haben nicht genug Steigungsblöcke, es werden insgesamt @1 benötigt. +Can't place: There's no slope of length @1=Es kann nicht platziert werden: die Steigung der Länge @1 ist nicht definiert. +Can't place: no supporting node at upper end.=Es kann nicht platziert werden: es gibt keinen unterstützenden Block am Ende der Steigung. +Deprecated Track=ausrangierte Schiene, nicht verwenden. +Can't get on: wagon full or doors closed!=Sie können nicht einsteigen: der Waggon ist voll oder die Türen sind geschlossen. +Use Sneak+rightclick to bypass closed doors!=Nutzen Sie Sneak+Rechtsklick, um trotz geschlossener Türen einzusteigen. +Lock couples=Kupplungen sperren +Doors are closed! Use Sneak+rightclick to ignore the closed doors and get off!=Die Türen sind geschlossen. Nutzen Sie Sneak+Rechtsklick, um trotz geschlossener Türen auszusteigen. +Access to @1=Zugang zu @1 +The clipboard couldn't access the metadata. Paste failed.=Wegen eines fehlgeschlagenen Zugriffs auf die Metadaten konnte eine Kopie des Zuges nicht eingefügt werden. +The clipboard couldn't access the metadata. Copy failed.=Wegen eines fehlgeschlagenen Zugriffs auf die Metadaten konnte der Zug nicht kopiert werden. + +# Train HUD/Formspecs +Speed:=Geschw.: +Target:=Zielges.: +Show Inventory=Inventar Zeigen +Select seat:=Wählen Sie einen Sitzplatz aus: +Wagon properties=Waggon-Einstellungen +Save wagon properties=Waggon-Einstellungen speichern +Text displayed outside on train=Äußere Anzeige +Text displayed inside train=Innere Anzeige +Line=Linie +Routingcode=Routingcode +Get off=Aussteigen +Get off (forced)=Ausstieg zwingen +(Doors closed)=(Türen geschlossen) + +# General +Save=Speichern off=aus on=ein -Lampless Signal (@1)=Mechanisches Signal (@1) -Signal (@1)=Lichtsignal (@1) + +# Line automation +Station Code=Code der Haltestelle +Station Name=Name der Haltestelle +Door Delay=Zeit für die Türschließung +Departure Speed=Zielgeschwindigkeit bei Abfahrt +Stop Time=Wartezeit + +# Items Track Worker Tool@n@nLeft-click: change rail type (straight/curve/switch)@nRight-click: rotate rail/bumper/signal/etc.=Schienenwerkzeug@n@nLinksklick: Schienentyp ändern, Rechtsklick: Objekt drehen. -This node can't be rotated using the trackworker!=Kann diesen Block nicht mit dem Schienenwerkzeug drehen. -This node can't be changed using the trackworker!=Kann diesen Block nicht mit dem Schienenwerkzeug bearbeiten. -Can't place: not pointing at node=Kann nicht platzieren: Du zeigst nicht auf einen Block. -Can't place: space occupied!=Kann nicht platzieren: Platz besetzt. -Can't place: protected position!=Kann nicht platzieren: Position geschützt. -Can't place: Not enough slope items left (@1 required)=Kann nicht platzieren: nicht genug Steigungsblöcke, es werden insgesamt @1 benötigt. -Can't place: There's no slope of length @1=Kann nicht platzieren: Keine Steigung der Länge @1 definiert. -Can't place: no supporting node at upper end.=Kann nicht platzieren: kein unterstützender Block am Ende der Steigung. -Deprecated Track=ausrangierte Schiene, nicht verwenden. +Passive Component Naming Tool@n@nRight-click to name a passive component.=PC-Benennungswerkzeug@n@nRechtsklick zur Benennung der passiven Komponente +Train copy/paste tool@n@nLeft-click: copy train@nRight-click: paste train=Train copy/paste tool@n@nLeft-click: copy train@nRight-click: paste train Track=Schiene +Perpendicular Diamond Crossing Track=Perpendicular Diamond Crossing Track +45/90 Degree Diamond Crossing Track=45/90 Degree Diamond Crossing Track +Unloading Track=Abladungsschiene +Loading Track=Beladungsschiene Bumper=Prellbock Detector Rail=Detektorschiene -Speed:=Geschw.: -Target:=Zielges.: @1 Slope=@1 Steigung -Can't get on: wagon full or doors closed!=Kann nicht einsteigen: Waggon voll oder Türen geschlossen. -Use Sneak+rightclick to bypass closed doors!=Nutze Sneak+Rechtsklick, um die Türnotöffnung zu aktivieren und trotzdem einzusteigen. -Lock couples=Kupplungen sperren -Save wagon properties=Waggon-Einstellungen speichern -Doors are closed! Use Sneak+rightclick to ignore the closed doors and get off!=Türen sind geschlossen! Sneak+Rechtsklick, um die Türnotöffnung zu aktivieren und trotzdem auszusteigen. -Wagon properties=Waggon-Einstellungen -Get off=Aussteigen -Get off (forced)=Aussteigen (erzwingen) -(Doors closed)=(Türen geschlossen) -Access to @1=Zugang zu @1 +@1 Platform (low)=Niedriger @1-Bahnsteig +@1 Platform (high)=Hoher @1-Bahnsteig +@1 Platform (45 degree)=@1-Bahnsteig (45°) +Lampless Signal (@1)=Mechanisches Signal (@1) +Signal (@1)=Lichtsignal (@1) +Wallmounted Signal (l)=An der linken Seite montiertes Signal +Wallmounted Signal (r)=An der rechten Seite montiertes Signal +Wallmounted Signal (t)=An der Decke montiertes Signal +Andrew's Cross=Andrew's Cross +Boiler=Boiler +driver's cab=driver's cab +Wheel=Wheel +Chimney=Chimney + +# Seats Default Seat=Standardsitzplatz Default Seat (driver stand)=Standardsitzplatz (Führerstand) Driver Stand=Führerstand Driver Stand (left)=Führerstand Links Driver Stand (right)=Führerstand Rechts + +# Wagon/engine types Industrial Train Engine=Industrielle Lokomotive +Big Industrial Train Engine=Große Industrielle Lokomotive Industrial tank wagon=Tankwaggon Industrial wood wagon=Holztransportwaggon Japanese Train Engine=Japanische Personenzug-Lokomotive @@ -61,8 +102,10 @@ Japanese Train Wagon=Japanischer Personenzug-Passagierwaggon Steam Engine=Dampflokomotive Detailed Steam Engine=detaillierte Dampflokomotive Passenger Wagon=Passagierwaggon -Box wagon=Güterwaggon +Box Wagon=Güterwaggon Subway Passenger Wagon=U-Bahn-Waggon + +# TODO: rebase fixup The wagon's inventory is not empty!=Das Inventar dieses Waggons ist nicht leer! This track can not be changed!=Diese Schiene kann nicht geändert werden! This track can not be rotated!=Diese Schiene kann nicht gedreht werden! diff --git a/advtrains/locale/advtrains.zh_CN.tr b/advtrains/locale/advtrains.zh_CN.tr index ef9c99b..0767b3c 100644 --- a/advtrains/locale/advtrains.zh_CN.tr +++ b/advtrains/locale/advtrains.zh_CN.tr @@ -104,4 +104,4 @@ Steam Engine=蒸汽机车 Detailed Steam Engine=精细的蒸汽机车 Passenger Wagon=客车 Box Wagon=货运车厢 -Subway Passenger Wagon=地铁车厢 +Subway Passenger Wagon=地铁车厢 \ No newline at end of file diff --git a/advtrains/locale/template.txt b/advtrains/locale/template.txt index 0eb7591..c51770d 100644 --- a/advtrains/locale/template.txt +++ b/advtrains/locale/template.txt @@ -49,7 +49,6 @@ Get off (forced)=Get off (forced) # General Save=Save -# "off" and "on" can be translated differently depending on the context and are therefore not translated. off=off on=on diff --git a/advtrains/locale/update-l10n.lua b/advtrains/locale/update-l10n.lua new file mode 100644 index 0000000..011f9c6 --- /dev/null +++ b/advtrains/locale/update-l10n.lua @@ -0,0 +1,46 @@ +local lang = arg[1] or error("No language supplied") +local tfn = string.format("advtrains.%s.tr", lang) +local f = io.open(tfn, "rb") or error("Cannot read from translation file") +local tf = {} +for l in f:lines() do + tf[#tf+1] = l +end +f:close() + +local ot = {[0] = ""} +local f = io.open("template.txt", "rb") or error("Cannot read from translation template") +for l in f:lines() do + if l == "" then -- blank line + if ot[#ot] ~= l then ot[#ot+1] = l end + elseif l:find("^#") then -- comment + if ot[#ot] ~= l then ot[#ot+1] = l end + else + s = l:match("^(.+[^@]=)") + if s then + local found = false + for i = 1, #tf, 1 do + if tf[i]:find(s, 1, true) == 1 then + found = i + break + end + end + if found then + local fc = found-1 + while fc > 0 do + if not tf[fc]:find("^#") then break end + fc = fc-1 + end + for i = fc+1, found, 1 do + if ot[#ot] ~= tf[i] then ot[#ot+1] = tf[i] end + end + else + if ot[#ot] ~= l then ot[#ot+1] = l end + end + end + end +end +f:close() + +local f = io.open(tfn, "wb") or error("Cannot write to translation file") +f:write(table.concat(ot,"\n")) +f:close() \ No newline at end of file -- cgit v1.2.3