Browse Source

Undo-redo part 3: enable translations of undo messages and add German translation

master
Nils 3 years ago
parent
commit
2ec50c3e67
  1. 47
      qtgui/mainwindow.py
  2. 1877
      qtgui/resources.py
  3. BIN
      qtgui/resources/translations/de.qm
  4. 306
      qtgui/resources/translations/de.ts

47
qtgui/mainwindow.py

@ -40,6 +40,53 @@ from .resources import *
class MainWindow(TemplateMainWindow):
#Undo/Redo translations by matching strings from the api
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Tempo")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Group Duration")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Steps per Pattern")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Group Size")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Convert Grouping")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Swing")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Measures per Track")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Measures per Group")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Track Name")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Track Color")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Track Midi Channel")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Add Track")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Clone Track")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Add deleted Track again")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Delete Track and autocreated Track")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Delete Track")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Move Track")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Pattern Multiplier")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Set Measures")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Invert Measures")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Track Measures Off")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Track Measures On")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Copy Measures")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Replace Measures")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Set Modal Shift")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Set Half Tone Shift")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Change Group")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Insert/Duplicate Group")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Clear all Group Transpositions")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Delete whole Group")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Change Step")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Remove Step")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Set Scale")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Note Names")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Transpose Scale")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Invert Steps")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "All Steps On")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "All Steps Off")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Invert Row")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Clear Row")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Fill Row with Repeat")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Change Row Velocity")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Change Pattern Velocity")
QtCore.QT_TRANSLATE_NOOP("NOOPengineHistory", "Number of Notes in Pattern")
def __init__(self):
"""The order of calls is very important.
The split ploint is calling the super.__init. Some functions need to be called before,

1877
qtgui/resources.py

File diff suppressed because it is too large

BIN
qtgui/resources/translations/de.qm

Binary file not shown.

306
qtgui/resources/translations/de.ts

@ -4,32 +4,32 @@
<context>
<name>About</name>
<message>
<location filename="../../mainwindow.py" line="59"/>
<location filename="../../mainwindow.py" line="106"/>
<source>Prefer clone track over adding a new empty track when creating a new pattern for an existing &apos;real world&apos; instrument.</source>
<translation>Spuren zu klonen ist meist besser als eine neue, leere Spur zu erstellen. Benutze Klonen immer wenn du ein neues Pattern für ein existierendes Instrument komponieren möchtest.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="60"/>
<location filename="../../mainwindow.py" line="107"/>
<source>You can run multiple Patroneo instances in parallel to create complex polyrhythms.</source>
<translation>Um komplexe Rhythmen zu erstellen versuche Patroneo mehrmals zu starten und verschiedene Taktarten einzustellen.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="61"/>
<location filename="../../mainwindow.py" line="108"/>
<source>To revert all steps that are longer or shorter than default invert the pattern twice in a row.</source>
<translation>Alle gedehnten oder verkürzte Noten im Takt bekommst du am einfachsten zurück auf die normale Länge wenn du zweimal hintereinander die &amp;quot;Umkehren&amp;quot; Funktion benutzt.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="62"/>
<location filename="../../mainwindow.py" line="109"/>
<source>Control a synth with MIDI Control Changes (CC) by routing a Patroneo track into a midi plugin that converts notes to CC.</source>
<translation>MIDI Control Changes (CC) werden nicht direkt von Patroneo erzeugt. Route eine Extraspur in ein Konverterplugin, dass aus Pitch und Velocity CC und Value macht.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="63"/>
<location filename="../../mainwindow.py" line="110"/>
<source>The mouse wheel is very powerful: Use it to transpose measures (with or without Shift pressed), it resizes the measure number line, zooms when Ctrl is held down, changes row volumes in the pattern with the Alt key or sounds a preview if pressed on a step.</source>
<translation>Das Mausrad ist sehr wichtig: Es transponiert Takte (mit oder ohne Umschalttaste), verändert die Größe der Taktgruppen, zoomed wenn Strg gedrückt ist, ändert die Lautstärke einer ganzen Reihe zusammen mit der Alt-Taste oder lässt eine Note erklingen wenn man es auf einem Schritt drückt.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="64"/>
<location filename="../../mainwindow.py" line="111"/>
<source>Many elements have context menus with unique functions: Try right clicking on a Step, the Track name or a measure in the song editor.</source>
<translation>Die meisten Bedienelemente haben ein Kontextmenü. Versuche auf alles mit der rechten Maustaste zu klicken: Schritte, Takte, der Spurname etc.</translation>
</message>
@ -93,35 +93,258 @@
<context>
<name>Menu</name>
<message>
<location filename="../../mainwindow.py" line="70"/>
<location filename="../../mainwindow.py" line="117"/>
<source>Convert Grouping</source>
<translation>Gruppierung umwandeln</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="70"/>
<location filename="../../mainwindow.py" line="117"/>
<source>Change step-grouping but keep your music the same</source>
<translation>Taktartaufspaltung durch Gruppierung umwandeln, versucht die Musik gleich klingen zu lassen</translation>
</message>
</context>
<context>
<name>NOOPengineHistory</name>
<message>
<location filename="../../mainwindow.py" line="44"/>
<source>Tempo</source>
<translation>Tempo</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="45"/>
<source>Group Duration</source>
<translation>Gruppierungsdauer</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="46"/>
<source>Steps per Pattern</source>
<translation>Schritte pro Takt</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="47"/>
<source>Group Size</source>
<translation>Gruppengröße</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="48"/>
<source>Convert Grouping</source>
<translation>Gruppierung umwandeln</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="49"/>
<source>Swing</source>
<translation>Swing</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="50"/>
<source>Measures per Track</source>
<translation>Takte pro Spur</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="51"/>
<source>Measures per Group</source>
<translation>Takte pro Gruppe</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="52"/>
<source>Track Name</source>
<translation>Spurname</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="53"/>
<source>Track Color</source>
<translation>Spurfarbe</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="54"/>
<source>Track Midi Channel</source>
<translation>Spur Midikanal</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="55"/>
<source>Add Track</source>
<translation>Neue Spur</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="56"/>
<source>Clone Track</source>
<translation>Spur klonen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="57"/>
<source>Add deleted Track again</source>
<translation>Gelöschte Spur wieder hinzufügen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="58"/>
<source>Delete Track and autocreated Track</source>
<translation>Lösche Spur und automatische Ersatzspur</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="59"/>
<source>Delete Track</source>
<translation>Spur löschen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="60"/>
<source>Move Track</source>
<translation>Spur bewegen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="61"/>
<source>Pattern Multiplier</source>
<translation>Takt-Skalierung</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="62"/>
<source>Set Measures</source>
<translation>Setze Takte</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="63"/>
<source>Invert Measures</source>
<translation>Taktauswahl umdrehen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="64"/>
<source>Track Measures Off</source>
<translation>Alle Takte ausschalten</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="65"/>
<source>Track Measures On</source>
<translation>Alle Takte einschalten</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="66"/>
<source>Copy Measures</source>
<translation>Takte Kopieren</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="67"/>
<source>Replace Measures</source>
<translation>Takte Ersetzen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="68"/>
<source>Set Modal Shift</source>
<translation>Modale Transposition</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="69"/>
<source>Set Half Tone Shift</source>
<translation>Halbtontransposition</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="70"/>
<source>Change Group</source>
<translation>Gruppe verändern</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="71"/>
<source>Insert/Duplicate Group</source>
<translation>Gruppe einfügen/duplizieren</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="72"/>
<source>Clear all Group Transpositions</source>
<translation>Alle Transpositionen der Taktgruppe zurücksetzen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="73"/>
<source>Delete whole Group</source>
<translation>Taktgruppe Löschen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="74"/>
<source>Change Step</source>
<translation>Schritt verändern</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="75"/>
<source>Remove Step</source>
<translation>Schritt aus</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="76"/>
<source>Set Scale</source>
<translation>Benutze Tonleiter</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="77"/>
<source>Note Names</source>
<translation>Notennamen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="78"/>
<source>Transpose Scale</source>
<translation>Tonleiter transponieren</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="79"/>
<source>Invert Steps</source>
<translation>Schritte invertieren</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="80"/>
<source>All Steps On</source>
<translation>Alle Schritte an</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="81"/>
<source>All Steps Off</source>
<translation>Alles Schritte aus</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="82"/>
<source>Invert Row</source>
<translation>Reihe umkehren</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="83"/>
<source>Clear Row</source>
<translation>Reihe löschen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="84"/>
<source>Fill Row with Repeat</source>
<translation>Reihenwiederholung</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="85"/>
<source>Change Row Velocity</source>
<translation>Reihenlautstärke</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="86"/>
<source>Change Pattern Velocity</source>
<translation>Taktlautstärke</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="87"/>
<source>Number of Notes in Pattern</source>
<translation>Anzahl der Tonhöhen im Takt</translation>
</message>
</context>
<context>
<name>PlaybackControls</name>
<message>
<location filename="../../mainwindow.py" line="89"/>
<location filename="../../mainwindow.py" line="136"/>
<source>[Space] Play / Pause</source>
<translation>[Leertaste] Play / Pause</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="96"/>
<location filename="../../mainwindow.py" line="143"/>
<source>[L] Loop current Measure</source>
<translation>[L] Aktueller Takt in Schleife spielen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="117"/>
<location filename="../../mainwindow.py" line="164"/>
<source>[Home] Jump to Start</source>
<translation>[Pos1] Springe zum Anfang</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="110"/>
<location filename="../../mainwindow.py" line="157"/>
<source>Number of measures in the loop</source>
<translation>Anzahl der Takte pro Schleife</translation>
</message>
@ -235,27 +458,27 @@
<context>
<name>TimeSignature</name>
<message>
<location filename="../../mainwindow.py" line="356"/>
<location filename="../../mainwindow.py" line="403"/>
<source>Whole</source>
<translation>Ganze</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="357"/>
<location filename="../../mainwindow.py" line="404"/>
<source>Half</source>
<translation>Halbe</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="358"/>
<location filename="../../mainwindow.py" line="405"/>
<source>Quarter</source>
<translation>Viertel</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="359"/>
<location filename="../../mainwindow.py" line="406"/>
<source>Eigth</source>
<translation>Achtel</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="360"/>
<location filename="../../mainwindow.py" line="407"/>
<source>Sixteenth</source>
<translation>Sechzehntel</translation>
</message>
@ -271,32 +494,32 @@
<context>
<name>Toolbar</name>
<message>
<location filename="../../mainwindow.py" line="269"/>
<location filename="../../mainwindow.py" line="316"/>
<source>BPM/Tempo: </source>
<translation>BPM/Tempo: </translation>
</message>
<message>
<location filename="../../mainwindow.py" line="270"/>
<location filename="../../mainwindow.py" line="317"/>
<source>Deactivate to beccome JACK Transport Slave. Activate for Master.</source>
<translation>Aus: JACK Transport Slave. An: JACK Master (eigenes Tempo).</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="323"/>
<location filename="../../mainwindow.py" line="370"/>
<source>Overall length of the song</source>
<translation>Länge des Stückes in Takten</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="340"/>
<location filename="../../mainwindow.py" line="387"/>
<source>Please read the manual!</source>
<translation>Bitte im Handbuch nachlesen!</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="367"/>
<location filename="../../mainwindow.py" line="414"/>
<source>Length of the pattern (bottom part of the program)</source>
<translation>Länge des Musters in Schritten (untere Hälfte des Programms)</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="371"/>
<location filename="../../mainwindow.py" line="418"/>
<source>How long is each main step</source>
<translation>Welchen Notenwert repräsentiert ein Schritt</translation>
</message>
@ -311,47 +534,47 @@
<translation type="obsolete">Taktartaufspaltung durch Gruppierung umwandeln, versucht die Musik gleich klingen zu lassen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="445"/>
<location filename="../../mainwindow.py" line="492"/>
<source>Clone Selected Track</source>
<translation>Klone ausgewählte Spur</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="446"/>
<location filename="../../mainwindow.py" line="493"/>
<source>Use this! Create a new track that inherits everything but the content from the original. Already jack connected!</source>
<translation>Das hier benutzen! Neue Spur, die alle Eigenschaften außer der Musik selbst vom Original erbt. Ist bereits in JACK verbunden!</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="447"/>
<location filename="../../mainwindow.py" line="494"/>
<source>Add Track</source>
<translation>Neue Spur</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="448"/>
<location filename="../../mainwindow.py" line="495"/>
<source>Add a complete empty track that needs to be connected to an instrument manually.</source>
<translation>Eine neue, leere Spur, bei der man noch per Hand ein Instrument mit JACK verbinden muss.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="453"/>
<location filename="../../mainwindow.py" line="500"/>
<source>Measures per Track: </source>
<translation>Takte pro Spur: </translation>
</message>
<message>
<location filename="../../mainwindow.py" line="459"/>
<location filename="../../mainwindow.py" line="506"/>
<source>Steps per Pattern:</source>
<translation>Schritte pro Takt:</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="464"/>
<location filename="../../mainwindow.py" line="511"/>
<source> in groups of: </source>
<translation> gruppiert in je: </translation>
</message>
<message>
<location filename="../../mainwindow.py" line="469"/>
<location filename="../../mainwindow.py" line="516"/>
<source> so that each group produces a:</source>
<translation> und jede Gruppe ergibt eine:</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="475"/>
<location filename="../../mainwindow.py" line="522"/>
<source>Set the swing factor. 0 is off. Different effect for different rhythm-grouping!</source>
<translation>Swing-Anteil. 0 ist aus. Andere rhythmische Gruppierungen haben einen anderen Effekt!</translation>
</message>
@ -359,12 +582,12 @@
<context>
<name>TrackLabel</name>
<message>
<location filename="../../songeditor.py" line="782"/>
<location filename="../../songeditor.py" line="792"/>
<source>grab and move to reorder tracks</source>
<translation>mit der maus halten und ziehen um Spuren anzuordnen</translation>
</message>
<message>
<location filename="../../songeditor.py" line="791"/>
<location filename="../../songeditor.py" line="801"/>
<source>change track color</source>
<translation>setze Farbe der Spur</translation>
</message>
@ -411,6 +634,11 @@
<source>Replace Pattern with</source>
<translation>Ersetze Noten des Taktes durch</translation>
</message>
<message>
<location filename="../../songeditor.py" line="766"/>
<source>Send on MIDI Channel</source>
<translation>Sende auf MIDI Kanal</translation>
</message>
</context>
<context>
<name>TransposeControls</name>
@ -511,27 +739,27 @@
<context>
<name>convertSubdivisionsSubMenu</name>
<message>
<location filename="../../mainwindow.py" line="519"/>
<location filename="../../mainwindow.py" line="566"/>
<source>New Grouping</source>
<translation>Neue Gruppierung</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="522"/>
<location filename="../../mainwindow.py" line="569"/>
<source>Do nothing</source>
<translation>Nichts machen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="522"/>
<location filename="../../mainwindow.py" line="569"/>
<source>Delete wrong steps</source>
<translation>Falsche Schritte löschen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="522"/>
<location filename="../../mainwindow.py" line="569"/>
<source>Merge wrong steps</source>
<translation>Falsche Schritte mit einbinden</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="527"/>
<location filename="../../mainwindow.py" line="574"/>
<source>If not possible</source>
<translation>Falls unmöglich</translation>
</message>

Loading…
Cancel
Save