Füge Unterstützung für LibreTranslate hinzu und verbessere die Benutzeroberfläche

This commit is contained in:
Torsten Schulz (local)
2026-09-16 12:01:39 +02:00
parent 701720f029
commit 414c218839
4 changed files with 354 additions and 426 deletions

488
mainwindow.ui Executable file → Normal file
View File

@@ -2,412 +2,106 @@
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1266</width>
<height>774</height>
</rect>
</property>
<property name="windowTitle">
<string>Renpy Translation Helper</string>
</property>
<property name="geometry"><rect><x>0</x><y>0</y><width>1280</width><height>820</height></rect></property>
<property name="windowTitle"><string>Ren'Py Translation Helper</string></property>
<widget class="QWidget" name="centralwidget">
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>1233</width>
<height>732</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<layout class="QVBoxLayout" name="mainLayout">
<property name="spacing"><number>10</number></property>
<property name="leftMargin"><number>12</number></property>
<property name="topMargin"><number>12</number></property>
<property name="rightMargin"><number>12</number></property>
<property name="bottomMargin"><number>12</number></property>
<item>
<widget class="QGroupBox" name="projectGroup">
<property name="title"><string>Projekt</string></property>
<layout class="QHBoxLayout" name="projectLayout">
<item><widget class="QLabel" name="projectDirectoryLabel"><property name="text"><string>Projektordner</string></property></widget></item>
<item><widget class="QLineEdit" name="projectDir"><property name="minimumSize"><size><width>480</width><height>0</height></size></property></widget></item>
<item><widget class="QPushButton" name="selectProjectDirButton"><property name="toolTip"><string>Projektordner auswählen</string></property><property name="text"><string>…</string></property></widget></item>
<item><widget class="QPushButton" name="reloadTranslationsButton"><property name="text"><string>Übersetzungen laden</string></property></widget></item>
<item><spacer name="projectSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>16</width><height>20</height></size></property></spacer></item>
<item><widget class="QLabel" name="languageLabel"><property name="text"><string>Sprache</string></property></widget></item>
<item><widget class="QComboBox" name="languageCombo"><property name="minimumSize"><size><width>180</width><height>0</height></size></property></widget></item>
<item><widget class="QPushButton" name="reloadFilesButton"><property name="text"><string>Dateien neu laden</string></property></widget></item>
</layout>
</widget>
</item>
<item>
<widget class="QTreeWidget" name="treeWidget">
<property name="minimumSize"><size><width>0</width><height>300</height></size></property>
<property name="alternatingRowColors"><bool>true</bool></property>
<property name="uniformRowHeights"><bool>true</bool></property>
<column><property name="text"><string>Datei / Zeile</string></property></column>
<column><property name="text"><string>Sprecher</string></property></column>
<column><property name="text"><string>Original</string></property></column>
<column><property name="text"><string>Übersetzung</string></property></column>
</widget>
</item>
<item>
<widget class="QGroupBox" name="editorGroup">
<property name="title"><string>Übersetzung bearbeiten</string></property>
<layout class="QVBoxLayout" name="editorLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Project Directory</string>
</property>
</widget>
<layout class="QHBoxLayout" name="navigationLayout">
<item><widget class="QPushButton" name="nextUntranslatedButton"><property name="text"><string>Nächster offener Text</string></property></widget></item>
<item><widget class="QToolButton" name="searchButton"><property name="text"><string>Suchen</string></property></widget></item>
<item><widget class="QToolButton" name="searchNextButton"><property name="text"><string>Weiter</string></property></widget></item>
<item><spacer name="navigationSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item>
</layout>
</item>
<item>
<widget class="QLineEdit" name="projectDir">
<property name="minimumSize">
<size>
<width>500</width>
<height>0</height>
</size>
</property>
</widget>
<layout class="QFormLayout" name="textFormLayout">
<item row="0" column="0"><widget class="QLabel" name="originalTextLabel"><property name="text"><string>Originaltext</string></property></widget></item>
<item row="0" column="1"><widget class="QLineEdit" name="originalTextEdit"/></item>
<item row="0" column="2"><widget class="QPushButton" name="copyButton"><property name="text"><string>Kopieren</string></property></widget></item>
<item row="1" column="0"><widget class="QLabel" name="translationLabel"><property name="text"><string>Übersetzung</string></property></widget></item>
<item row="1" column="1" colspan="2"><widget class="QLineEdit" name="translationEdit"/></item>
</layout>
</item>
<item>
<widget class="QPushButton" name="selectProjectDirButton">
<property name="maximumSize">
<size>
<width>27</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="reloadTranslationsButton">
<property name="text">
<string>Reload</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Language</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="languageCombo">
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="reloadFilesButton">
<property name="text">
<string>Reload</string>
</property>
</widget>
<layout class="QHBoxLayout" name="translationActionLayout">
<item><widget class="QPushButton" name="setTranslationButton"><property name="text"><string>Übernehmen</string></property></widget></item>
<item><widget class="QPushButton" name="setTranslationAndJumpNextButton"><property name="text"><string>Übernehmen &amp;&amp; weiter</string></property></widget></item>
<item><widget class="QPushButton" name="setAndNextAndAutoTranslate"><property name="text"><string>Übernehmen, weiter &amp;&amp; automatisch übersetzen</string></property></widget></item>
<item><spacer name="translationActionSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QTreeWidget" name="treeWidget">
<property name="minimumSize">
<size>
<width>1231</width>
<height>400</height>
</size>
</property>
<column>
<property name="text">
<string>File</string>
</property>
</column>
<column>
<property name="text">
<string>Speaker</string>
</property>
</column>
<column>
<property name="text">
<string>Original</string>
</property>
</column>
<column>
<property name="text">
<string>Translation</string>
</property>
</column>
<item>
<property name="text">
<string>All items</string>
</property>
<property name="text">
<string/>
</property>
<property name="text">
<string/>
</property>
<property name="text">
<string/>
</property>
</item>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="nextUntranslatedButton">
<property name="text">
<string>Jump to next untranslated item</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="maximumSize">
<size>
<width>137</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Deepl Translate from</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="deeplTranslateFrom"/>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="maximumSize">
<size>
<width>20</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>to</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="deeplTranslateTo"/>
</item>
<item>
<widget class="QLabel" name="label_9">
<property name="text">
<string>Deepl API Key</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="deeplApiKey">
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="autoTranslateButton">
<property name="text">
<string>Auto translate</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="bulkAutoTranslateButton">
<property name="toolTip">
<string>Translate all untranslated texts and review the suggestions before applying them.</string>
</property>
<property name="text">
<string>Translate all open texts</string>
</property>
</widget>
</item>
</widget>
</item>
<item>
<widget class="QGroupBox" name="providerGroup">
<property name="title"><string>Automatische Übersetzung</string></property>
<layout class="QGridLayout" name="providerLayout">
<item row="0" column="0"><widget class="QLabel" name="translationProviderLabel"><property name="text"><string>Anbieter</string></property></widget></item>
<item row="0" column="1"><widget class="QComboBox" name="translationProviderCombo"><item><property name="text"><string>DeepL</string></property></item><item><property name="text"><string>LibreTranslate (lokal)</string></property></item></widget></item>
<item row="0" column="2"><widget class="QLabel" name="label_4"><property name="text"><string>Von</string></property></widget></item>
<item row="0" column="3"><widget class="QComboBox" name="deeplTranslateFrom"/></item>
<item row="0" column="4"><widget class="QLabel" name="label_5"><property name="text"><string>Nach</string></property></widget></item>
<item row="0" column="5"><widget class="QComboBox" name="deeplTranslateTo"/></item>
<item row="0" column="6"><widget class="QPushButton" name="autoTranslateButton"><property name="text"><string>Aktuellen Text übersetzen</string></property></widget></item>
<item row="1" column="0"><widget class="QLabel" name="label_9"><property name="text"><string>DeepL-API-Key</string></property></widget></item>
<item row="1" column="1" colspan="3"><widget class="QLineEdit" name="deeplApiKey"/></item>
<item row="1" column="4"><widget class="QPushButton" name="checkDeeplUsageButton"><property name="text"><string>Kontingent prüfen</string></property></widget></item>
<item row="1" column="5" colspan="2"><widget class="QPushButton" name="bulkAutoTranslateButton"><property name="text"><string>Alle offenen Texte übersetzen</string></property></widget></item>
<item row="2" column="0"><widget class="QLabel" name="libreTranslateUrlLabel"><property name="text"><string>Lokale URL</string></property></widget></item>
<item row="2" column="1" colspan="5"><widget class="QLineEdit" name="libreTranslateUrl"><property name="text"><string>http://localhost:5000</string></property></widget></item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QToolButton" name="searchButton">
<property name="text">
<string>Search</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="searchNextButton">
<property name="text">
<string>Next</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Original Text:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="originalTextEdit">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="copyButton">
<property name="text">
<string>Copy</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>Translation:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="translationEdit"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QPushButton" name="setTranslationButton">
<property name="text">
<string>Set translation</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="setTranslationAndJumpNextButton">
<property name="text">
<string>Set translation and jump to next untranslated</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="setAndNextAndAutoTranslate">
<property name="text">
<string>Set translation, jump to next untranslated and auto translate</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Enter action:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="enterActionCombo">
<property name="minimumSize">
<size>
<width>400</width>
<height>0</height>
</size>
</property>
<item>
<property name="text">
<string>Set translation, jump to next untranslated and auto translate</string>
</property>
</item>
<item>
<property name="text">
<string>Set translation and jump to next untranslated</string>
</property>
</item>
<item>
<property name="text">
<string>Set translation</string>
</property>
</item>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Untranslated:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="untranslatedLabel">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QPushButton" name="saveButton">
<property name="text">
<string>Save translations</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cleanupAndSaveButton">
<property name="text">
<string>Delete backups and save translations</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="cleanupButton">
<property name="text">
<string>Delete backups</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="footerLayout">
<item><widget class="QLabel" name="label_7"><property name="text"><string>Eingabetaste</string></property></widget></item>
<item><widget class="QComboBox" name="enterActionCombo"><property name="minimumSize"><size><width>360</width><height>0</height></size></property><item><property name="text"><string>Übernehmen, weiter &amp;&amp; automatisch übersetzen</string></property></item><item><property name="text"><string>Übernehmen &amp;&amp; weiter</string></property></item><item><property name="text"><string>Nur übernehmen</string></property></item></widget></item>
<item><spacer name="footerSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item>
<item><widget class="QLabel" name="label_8"><property name="text"><string>Offen</string></property></widget></item>
<item><widget class="QLabel" name="untranslatedLabel"><property name="text"><string>0</string></property></widget></item>
<item><widget class="QPushButton" name="saveButton"><property name="text"><string>Übersetzungen speichern</string></property></widget></item>
<item><widget class="QPushButton" name="cleanupAndSaveButton"><property name="text"><string>Backups löschen &amp;&amp; speichern</string></property></widget></item>
<item><widget class="QPushButton" name="cleanupButton"><property name="text"><string>Backups löschen</string></property></widget></item>
</layout>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>