summaryrefslogtreecommitdiffstats
path: root/convert-presets
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2022-05-30 19:40:31 +0900
committerMichele Calgaro <[email protected]>2022-05-31 01:17:58 +0900
commitd95a4fea540b371fa86493d069fdbd54f33c5b40 (patch)
tree079b038ab559439eb7ded40a07bd79fd92926b3b /convert-presets
parente54890e0480e5adee69f5220a7c6dd072bbd75ea (diff)
downloadtderadio-d95a4fea540b371fa86493d069fdbd54f33c5b40.tar.gz
tderadio-d95a4fea540b371fa86493d069fdbd54f33c5b40.zip
Standardize folder structure.
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'convert-presets')
-rw-r--r--convert-presets/CMakeL10n.txt6
-rw-r--r--convert-presets/Makefile.am31
-rw-r--r--convert-presets/convert-presets.cpp192
-rw-r--r--convert-presets/po/Makefile.am2
-rw-r--r--convert-presets/po/de.po410
-rw-r--r--convert-presets/po/tderadio-convert-presets.pot56
6 files changed, 697 insertions, 0 deletions
diff --git a/convert-presets/CMakeL10n.txt b/convert-presets/CMakeL10n.txt
new file mode 100644
index 0000000..250e07f
--- /dev/null
+++ b/convert-presets/CMakeL10n.txt
@@ -0,0 +1,6 @@
+##### create translation templates ##############
+
+tde_l10n_create_template(
+ CATALOG "tderadio-convert-presets"
+ DESTINATION "po"
+)
diff --git a/convert-presets/Makefile.am b/convert-presets/Makefile.am
new file mode 100644
index 0000000..5085b19
--- /dev/null
+++ b/convert-presets/Makefile.am
@@ -0,0 +1,31 @@
+subdirs = po .
+
+bin_PROGRAMS = convert-presets
+
+convert_presets_SOURCES = convert-presets.cpp
+convert_presets_LDADD = $(LIB_TDEFILE) $(LIB_TDEUI) $(LIB_TDECORE)
+
+
+# this 10 paths are KDE specific. Use them:
+# kde_htmldir Where your docs should go to. (contains lang subdirs)
+# kde_appsdir Where your application file (.kdelnk) should go to.
+# kde_icondir Where your icon should go to.
+# kde_minidir Where your mini icon should go to.
+# kde_datadir Where you install application data. (Use a subdir)
+# kde_locale Where translation files should go to.(contains lang subdirs)
+# kde_cgidir Where cgi-bin executables should go to.
+# kde_confdir Where config files should go to.
+# kde_mimedir Where mimetypes should go to.
+# kde_toolbardir Where general toolbar icons should go to.
+# kde_wallpaperdir Where general wallpapers should go to.
+
+# set the include path for X, qt and KDE
+INCLUDES= $(all_includes)
+
+METASOURCES = AUTO
+
+# the library search path.
+convert_presets_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_TQT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_TDEIO) -ltdetexteditor
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o po/tderadio-convert-presets.pot
diff --git a/convert-presets/convert-presets.cpp b/convert-presets/convert-presets.cpp
new file mode 100644
index 0000000..c6ee08c
--- /dev/null
+++ b/convert-presets/convert-presets.cpp
@@ -0,0 +1,192 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <tdeapplication.h>
+#include <tqstring.h>
+#include <tqtextstream.h>
+#include <tqfile.h>
+#include <tdelocale.h>
+#include <kdebug.h>
+#include <tdeaboutdata.h>
+#include <tdecmdlineargs.h>
+#include <tqregexp.h>
+#include <time.h>
+#include <sys/fcntl.h>
+#include <unistd.h>
+
+#define dev_urandom "/dev/urandom"
+
+TQString createStationID()
+{
+ const int buffersize = 32;
+ unsigned char buffer[buffersize];
+
+ TQString stime, srandom = "";
+ stime.setNum(time(NULL));
+
+ int fd = open (dev_urandom, O_RDONLY);
+ read(fd, buffer, buffersize);
+ close(fd);
+ for (int i = 0; i < buffersize; ++i)
+ srandom += TQString().sprintf("%02X", (unsigned int)buffer[i]);
+
+// kdDebug() << i18n("generated StationID: ") << stime << srandom << endl;
+
+ return stime + srandom;
+}
+
+
+
+
+bool convertFile(const TQString &file)
+{
+ ////////////////////////////////////////////////////////////////////////
+ // read input
+ ////////////////////////////////////////////////////////////////////////
+
+ TQFile presetFile (file);
+
+ if (! presetFile.open(IO_ReadOnly)) {
+ kdDebug() << "convertFile: "
+ << i18n("error opening preset file")
+ << " " << file << " "
+ << i18n("for reading") << endl;
+ return false;
+ }
+
+ TQString xmlData;
+
+ // make sure that qtextstream is gone when we close presetFile
+ {
+ TQTextStream ins(&presetFile);
+ ins.setEncoding(TQTextStream::Locale);
+ xmlData = ins.read();
+ }
+
+ if (xmlData.find("<format>", 0, false) >= 0) {
+ kdDebug() << "file " << file << " already in new format" << endl;
+ // but add <?xml line at beginning if missing
+
+ {
+ presetFile.reset();
+ TQTextStream ins(&presetFile);
+ ins.setEncoding(TQTextStream::UnicodeUTF8);
+ xmlData = ins.read();
+ }
+
+ if (xmlData.find("<?xml", 0, false) < 0) {
+ xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlData;
+ }
+
+ } else {
+
+ ////////////////////////////////////////////////////////////////////////
+ // convert file
+ ////////////////////////////////////////////////////////////////////////
+
+ TQRegExp qselect("<quickselect>.*</quickselect>");
+ TQRegExp docking("<dockingmenu>.*</dockingmenu>");
+ TQRegExp station("<station>(.*)</station>");
+ TQRegExp stationlist("<stationlist>");
+ TQRegExp emptyLines("\\n\\s*\\n");
+
+ #define stationIDElement "stationID"
+
+ qselect.setMinimal(true);
+ docking.setMinimal(true);
+ station.setMinimal(true);
+
+ xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlData;
+ xmlData.replace(stationlist, "<stationlist>\n\t\t<format>tderadio-1.0</format>");
+ xmlData.replace(qselect, "");
+ xmlData.replace(docking, "");
+ xmlData.replace(station, "<FrequencyRadioStation>\n"
+ "\t\t\t<" stationIDElement "></" stationIDElement ">"
+ "\\1</FrequencyRadioStation>"
+ );
+
+ int p = 0;
+ int f = 0;
+ while ( (f = xmlData.find("<" stationIDElement "></" stationIDElement ">", p) ) >= 0) {
+ xmlData.insert(f + 2 + TQString(stationIDElement).length(), createStationID());
+ }
+
+ xmlData.replace(emptyLines, "\n");
+ }
+
+ presetFile.close();
+
+
+ ////////////////////////////////////////////////////////////////////////
+ // write output
+ ////////////////////////////////////////////////////////////////////////
+
+ if (! presetFile.open(IO_WriteOnly)) {
+ kdDebug() << "convertFile: "
+ << i18n("error opening preset file")
+ << " " << file << " "
+ << i18n("for writing") << endl;
+ return false;
+ }
+
+ TQTextStream outs(&presetFile);
+ outs.setEncoding(TQTextStream::UnicodeUTF8);
+
+ outs << xmlData;
+
+ if (presetFile.status() != IO_Ok) {
+ kdDebug() << "StationList::writeXML: "
+ << i18n("error writing preset file")
+ << " " << file
+ << " (" << presetFile.state() << ")"
+ << endl;
+ return false;
+ }
+
+ return true;
+}
+
+
+static const char *description = "convert-presets";
+
+static TDECmdLineOptions options[] =
+{
+ { "q", I18N_NOOP("be quiet"), 0},
+ { "+[preset files]", I18N_NOOP("preset file to convert"), 0 },
+ TDECmdLineLastOption
+};
+
+int main(int argc, char *argv[])
+{
+ TDEAboutData aboutData("convert-presets", I18N_NOOP("convert-presets"),
+ VERSION, description, TDEAboutData::License_GPL,
+ "(c) 2003-2005 Martin Witte",
+ 0,
+ "http://sourceforge.net/projects/tderadio",
+ 0);
+ aboutData.addAuthor("Martin Witte", "", "[email protected]");
+
+ TDECmdLineArgs::init( argc, argv, &aboutData );
+ TDECmdLineArgs::addCmdLineOptions( options ); // Add our own options.
+
+ TDEApplication a (false, false);
+
+ TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
+
+ for (int i = 0; i < args->count(); ++i) {
+ const char *x = args->arg(i);
+ if (! convertFile(x)) {
+ return -1;
+ } else {
+ if (! args->isSet("q"))
+ kdDebug() << x << ": ok" << endl;
+ }
+ }
+ if (args->count() == 0) {
+ kdDebug() << "no input" << endl;
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/convert-presets/po/Makefile.am b/convert-presets/po/Makefile.am
new file mode 100644
index 0000000..1578055
--- /dev/null
+++ b/convert-presets/po/Makefile.am
@@ -0,0 +1,2 @@
+POFILES = AUTO
+PACKAGE = tderadio-convert-presets
diff --git a/convert-presets/po/de.po b/convert-presets/po/de.po
new file mode 100644
index 0000000..dacc2c0
--- /dev/null
+++ b/convert-presets/po/de.po
@@ -0,0 +1,410 @@
+# translation of de.po to
+# This file is put in the public domain.
+#
+# Ernst Martin Witte <[email protected]>, 2006.
+# Ernst Martin Witte <[email protected]>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-05-11 04:30+0200\n"
+"PO-Revision-Date: 2019-12-23 23:40+0000\n"
+"Last-Translator: Chris <[email protected]>\n"
+"Language-Team: German <https://mirror.git.trinitydesktop.org/weblate/"
+"projects/applications/tderadio-convert-presets/de/>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 3.9.1\n"
+
+#. Instead of a literal translation, add your name to the end of the list (separated by a comma).
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ernst Martin Witte, Chris (TDE)"
+
+#. Instead of a literal translation, add your email to the end of the list (separated by a comma).
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "[email protected], (Keine Email)"
+
+#: convert-presets.cpp:52 convert-presets.cpp:127
+msgid "error opening preset file"
+msgstr "Fehler beim Öffnen der Senderdatei"
+
+#: convert-presets.cpp:54
+msgid "for reading"
+msgstr "zum Lesen"
+
+#: convert-presets.cpp:129
+msgid "for writing"
+msgstr "zum Schreiben"
+
+#: convert-presets.cpp:140
+msgid "error writing preset file"
+msgstr "Fehler beim Schreiben der Senderdatei"
+
+#: convert-presets.cpp:155
+msgid "be quiet"
+msgstr "leise sein"
+
+#: convert-presets.cpp:156
+msgid "preset file to convert"
+msgstr "Senderdatei zum umwandeln"
+
+#: convert-presets.cpp:162
+msgid "convert-presets"
+msgstr "Umwandlungs-Sender"
+
+#~ msgid "PluginManagerConfigurationUI"
+#~ msgstr "PluginManagerConfigurationUI"
+
+#~ msgid "Show Progress Bar during Startup for Plugin Initiali&zation"
+#~ msgstr "Fortschrittsbalken bei der Initialisierung der Plugins anzeigen"
+
+#~ msgid "Alt+Z"
+#~ msgstr "Alt+Z"
+
+#~ msgid "Plugin Class"
+#~ msgstr "Plugin Klasse"
+
+#~ msgid "Instance Name"
+#~ msgstr "Name der Instanz"
+
+#~ msgid "Description"
+#~ msgstr "Beschreibung"
+
+#~ msgid "list of running plugins"
+#~ msgstr "Liste der laufenden Plugins"
+
+#~ msgid "remove/stop a selected plugin instance"
+#~ msgstr "Anhalten/Entfernen der ausgewählten Plugin-Instanz"
+
+#~ msgid "create a new instance of selected plugin class"
+#~ msgstr "Erzeugen einer neuen Instanz der ausgewählten Pluginklasse"
+
+#~ msgid "list of available plugin classes"
+#~ msgstr "Liste der Verfügbaren Plugin-Klassen"
+
+#~ msgid "select a plugin library"
+#~ msgstr "Auswahl einer Plugin-Bibliothek"
+
+#~ msgid "unload a plugin library"
+#~ msgstr "Entfernen einer Plugin-Bibliothek"
+
+#~ msgid "load a selected plugin library"
+#~ msgstr "Laden der ausgewählten Plugin-Bibliothek"
+
+#~ msgid "list of loaded plugin libraries"
+#~ msgstr "Liste der geladenen Plugin-Bibliotheken"
+
+#~ msgid "Stations search in progress ..."
+#~ msgstr "Sendersuchlauf läuft ..."
+
+#~ msgid "remaining time"
+#~ msgstr "verbleibende Zeit"
+
+#~ msgid "<p align=\"right\">nothing here</p>"
+#~ msgstr "<p align=\"right\">hier ist nix</p>"
+
+#~ msgid "StationSelectorUI"
+#~ msgstr "StationSelectorUI"
+
+#~ msgid "Selected Stations"
+#~ msgstr "Ausgewählte Sender"
+
+#~ msgid "Available Stations"
+#~ msgstr "Verfügbare Sender"
+
+#~ msgid "%1 Error: %2\n"
+#~ msgstr "%1 Fehler: %2\n"
+
+#~ msgid "%1 Warning: %2\n"
+#~ msgstr "%1 Warnung: %2\n"
+
+#~ msgid "%1 Information: %2\n"
+#~ msgstr "%1 Information: %2\n"
+
+#~ msgid "%1 Debug: %2\n"
+#~ msgstr "%1 Debug: %2\n"
+
+#~ msgid "cannot open buffer file %1"
+#~ msgstr "kann die Puffer-Datei %1 nicht öffnen"
+
+#~ msgid "FileRingbuffer::resize: Writing to tmpfile %1 failed. "
+#~ msgstr ""
+#~ "FileRingbuffer::resize: Schreiben in die temporäre Datei %1 schlug fehl. "
+
+#~ msgid "FileRingbuffer::resize: Opening tmpfile %1 failed. "
+#~ msgstr ""
+#~ "FileRingbuffer::resize: Das Öffnen der temporären Datei %1 schlug fehl. "
+
+#~ msgid "FileRingBuffer::addData: failed writing data to file %1."
+#~ msgstr "FileRingBuffer::addData: Das Schreiben in die Datei %1 schlug fehl."
+
+#~ msgid "FileRingBuffer::takeData: failed reading data to file %1."
+#~ msgstr "FileRingBuffer::takeData: Das Lesen aus der Datei %1 schlug fehl."
+
+#~ msgid ""
+#~ "TDERadio - The Radio Application for TDE<P>With TDERadio you can listen "
+#~ "to radio broadcasts with the help of your V4L/V4L2 compatible radio card."
+#~ "<P>The TDERadio Project contains a station preset data database. To "
+#~ "complete this database you are encouraged to contribute your station "
+#~ "preset file to the project. Just send it to one of the authors. <P>If you "
+#~ "like to contribute your ideas, your own plugins or translations, don't "
+#~ "hesitate to contact one of the authors.<P>"
+#~ msgstr ""
+#~ "TDERadio - Das Radio-Programm für TDE<P>Mit TDERadio und einer "
+#~ "Radiokarte, die vom Video-Für-Linux Treiber des Linux-Kernels unterstützt "
+#~ "wird, können Sie am PC Radiosendungen hören.<P> Das TDERadio-Projekt baut "
+#~ "eine weltweite Senderdatenbank auf. Seien Sie ermutigt, Ihre eigenen "
+#~ "Sendereinstellungen dem TDERadio-Projekt beizusteuern. Schicken Sie ihre "
+#~ "Sendereinstellungen einfach an einen der Autoren. <P> Wenn Sie mit Ihren "
+#~ "Ideen, eigenen Plugins oder Übersetzungen zum TDERadio-Projekt beitragen "
+#~ "wollen, zögern Sie nicht, sich mit einem der Autoren in Verbindung zu "
+#~ "setzen.<P>"
+
+#~ msgid ""
+#~ "Preset Database, Remote Control Support, Alarms, Rewrite for TDERadio "
+#~ "0.3.0, Misc"
+#~ msgstr ""
+#~ "Sender-Datenbank, Unterstützung für Fernsteuerungen, Wecker, "
+#~ "Überarbeitung zu TDERadio 0.3.0, Verschiedenes"
+
+#~ msgid "Buildsystem, Standards Conformance, Cleanups"
+#~ msgstr "Buildsystem, Standardkonformität, Aufräumarbeiten "
+
+#~ msgid "idea, first basic application"
+#~ msgstr "Idee, allererste Anwendung"
+
+#~ msgid "Many People around the World ... "
+#~ msgstr "Viele Leute rund um die Welt ..."
+
+#~ msgid ""
+#~ "... which contributed station preset files \n"
+#~ "and tested early and unstable snapshots of TDERadio \n"
+#~ "with much patience"
+#~ msgstr ""
+#~ "... die Senderauswahl-Dateien beigesteuert und frühe und instabile "
+#~ "Snapshots von TDERadio mit viel Geduld getestet haben. "
+
+#~ msgid "Library %1: Plugin Entry Point is missing\n"
+#~ msgstr "Bibliothek %1: Eintrittspunkt wurde nicht gefunden\n"
+
+#~ msgid "Plugin Library Load Error"
+#~ msgstr "Das Laden der Bibliothek schlug fehl"
+
+#~ msgid ""
+#~ "Library %1: \n"
+#~ "%2"
+#~ msgstr ""
+#~ "Bibliothek %1: \n"
+#~ "%2"
+
+#~ msgid "saveState"
+#~ msgstr "saveState"
+
+#~ msgid "Instance"
+#~ msgstr "Instanz"
+
+#~ msgid "TDERadio Configuration"
+#~ msgstr "TDERadio-Konfiguration "
+
+#~ msgid "About TDERadio Components"
+#~ msgstr "Über die TDERadio-Komponenten "
+
+#~ msgid "Error: Loading Library %1 failed: %2"
+#~ msgstr "Fehler: Das Laden der Bibliothek %1 schlug fehl: %2"
+
+#~ msgid "Error: Creation of instance \"%1\" of class %2 falied."
+#~ msgstr "Fehler: Das erzeugen der Instanz \"%1\" der Klasse %2 schlug fehl."
+
+#~ msgid "Error: Cannot create instance \"%1\" of unknown class %2."
+#~ msgstr ""
+#~ "Fehler: Kann die Instanz \"%1\" der unbekannten Klasse %2 nicht erzeugen."
+
+#~ msgid "Buffer Overflow. "
+#~ msgstr "Puffer Überlauf."
+
+#~ msgid "Configuration Dialog"
+#~ msgstr "Konfigurationsdialog"
+
+#~ msgid "Enter Plugin Instance Name"
+#~ msgstr "Name der Plugin-Instanz eingeben"
+
+#~ msgid "Hide %1"
+#~ msgstr "Verstecke %1"
+
+#~ msgid "Show %1"
+#~ msgstr "%1 anzeigen"
+
+#~ msgid "Plugins"
+#~ msgstr "Pluginss"
+
+#~ msgid "Plugin Library Configuration"
+#~ msgstr "Konfiguration der Plugin-Bibliotheken"
+
+#~ msgid "Starting Plugins"
+#~ msgstr "Starten der Plugins"
+
+#~ msgid "Creating Plugin %1"
+#~ msgstr "Erzeuge Plugin %1"
+
+#~ msgid "Initializing Plugin %1"
+#~ msgstr "Starten des Plugins %1"
+
+#~ msgid "Contains merged Data"
+#~ msgstr "Enthält zusammengefügte Einträge"
+
+#~ msgid ""
+#~ "Probably an old station preset file was read.\n"
+#~ "You have to rebuild your station selections for the quickbar and the "
+#~ "docking menu."
+#~ msgstr ""
+#~ "Wahrscheinlich wurde eine alte Senderdatei gelesen.\n"
+#~ "Sie müssen ihre Senderauswahlen für das Kurzwahlfenster und das "
+#~ "Kontrollleistenmenü neu erstellen."
+
+#~ msgid "parsing failed"
+#~ msgstr "Das Parsen schlug fehl"
+
+#~ msgid ""
+#~ "Parsing the station preset file failed.\n"
+#~ "See console output for more details."
+#~ msgstr ""
+#~ "Das Parsen der Senderdatei schlug fehl.\n"
+#~ "Mehr informationen gibts in der Ausgabe auf der Konsole."
+
+#~ msgid "error downloading preset file %1"
+#~ msgstr "Fehler beim Download der Senderdatei %1"
+
+#~ msgid "Download of the station preset file at %1 failed."
+#~ msgstr "Der Download der Senderdatei %1 schlug fehl."
+
+#~ msgid "temporary file: "
+#~ msgstr "temporäre Datei: "
+
+#~ msgid "Opening of the station preset file at %1 failed."
+#~ msgstr "Das Öffnen der Senderdatei %1 schluf fehl."
+
+#~ msgid "Old Preset File Format detected"
+#~ msgstr "Altes Senderdateiformat erkannt"
+
+#~ msgid "error writing to tempfile %1"
+#~ msgstr "Fehler beim schreiben in die temporäre Datei %1"
+
+#~ msgid "Writing station preset file %1 failed."
+#~ msgstr "Das Schreiben der Senderdatei %1 schlug fehl."
+
+#~ msgid "error uploading preset file %1"
+#~ msgstr "Fehler: Das Speichern der Senderlistendatei %1 schlug fehl"
+
+#~ msgid "Upload of station preset file to %1 failed."
+#~ msgstr "Der Upload der Senderdatei %1 schlug fehl."
+
+#~ msgid "misplaced element %1"
+#~ msgstr "unerwartetes Element %1"
+
+#~ msgid "unknown or unexpected element %1"
+#~ msgstr "unbekanntes oder unerwartetes Element %1"
+
+#~ msgid "expected element %1, but found %2"
+#~ msgstr "erwartetes Element: %1, gefundenes: %2"
+
+#~ msgid "unexpected element %1"
+#~ msgstr "unerwartetes Element %1"
+
+#~ msgid "invalid data for element %1"
+#~ msgstr "ingültige Daten im Element %1"
+
+#~ msgid "found a station list with unknown format %1"
+#~ msgstr "Die Senderdatei enthält das unbekannte Format %1"
+
+#~ msgid "unknown property %1 for class %2"
+#~ msgstr "Die Eigenschaft %1 ist der Klasse %2 unbekannt"
+
+#~ msgid "characters ignored for element %1"
+#~ msgstr "Einige Zeichen des Elements %1 wurden ignoriert"
+
+#~ msgid "Invalid layout"
+#~ msgstr "Ungültiges Layout"
+
+#~ msgid "%1 %2 (Using TDE %3)"
+#~ msgstr "%1 %2 (TDE %3)"
+
+#~ msgid "%1 %2, %3"
+#~ msgstr "%1 %2, %3"
+
+#~ msgid "A&uthor"
+#~ msgstr "A&utor"
+
+#~ msgid "A&uthors"
+#~ msgstr "A&utoren"
+
+#~ msgid "&Thanks To"
+#~ msgstr "&Dank an"
+
+#~ msgid "T&ranslation"
+#~ msgstr "Ü&bersetzungen"
+
+#~ msgid "&License Agreement"
+#~ msgstr "&Lizenzen"
+
+#~ msgid "Image missing"
+#~ msgstr "Bilddatei fehlt"
+
+#~ msgid "No."
+#~ msgstr "Nr."
+
+#~ msgid "Icon"
+#~ msgstr "Symbol "
+
+#~ msgid "Station"
+#~ msgstr "Sender"
+
+#~ msgid "contentsDragEnterEvent accepted"
+#~ msgstr "contentsDragEnterEvent angenommen"
+
+#~ msgid "contentsDragEnterEvent rejected"
+#~ msgstr "contentsDragEnterEvent abgelehnt"
+
+#~ msgid "new station "
+#~ msgstr "Neuer Sender "
+
+#~ msgid "&Done"
+#~ msgstr "&Fertig"
+
+#~ msgid "<p align=\"right\">%1</p>"
+#~ msgstr "<p align=\"right\">%1</p>"
+
+#~ msgid "unknown"
+#~ msgstr "unbekannt"
+
+#~ msgid "canDecode = true"
+#~ msgstr "canDecode = true"
+
+#~ msgid "%1, %2"
+#~ msgstr "%1, %2"
+
+#~ msgid "%1 MHz"
+#~ msgstr "%1 MHz"
+
+#~ msgid "%1 kHz"
+#~ msgstr "%1 kHz"
+
+#~ msgid "I don't know how to edit this station"
+#~ msgstr "Keine Ahnung, wie dieser Sender bearbeitet werden soll"
+
+#~ msgid "Frequency:"
+#~ msgstr "Frequenz:"
+
+#~ msgid "TDERadio"
+#~ msgstr "TDERadio"
+
+#~ msgid "rewrite for 0.3.0, recording, lirc support, alarms, misc"
+#~ msgstr ""
+#~ "Überarbeitung für 0.3.0, Aufnahmefunktion, LIRC-Unterstützung, Wecker, "
+#~ "Verschiedenes"
diff --git a/convert-presets/po/tderadio-convert-presets.pot b/convert-presets/po/tderadio-convert-presets.pot
new file mode 100644
index 0000000..c19183b
--- /dev/null
+++ b/convert-presets/po/tderadio-convert-presets.pot
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2020-05-11 04:30+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Instead of a literal translation, add your name to the end of the list (separated by a comma).
+#, ignore-inconsistent
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr ""
+
+#. Instead of a literal translation, add your email to the end of the list (separated by a comma).
+#, ignore-inconsistent
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr ""
+
+#: convert-presets.cpp:52 convert-presets.cpp:127
+msgid "error opening preset file"
+msgstr ""
+
+#: convert-presets.cpp:54
+msgid "for reading"
+msgstr ""
+
+#: convert-presets.cpp:129
+msgid "for writing"
+msgstr ""
+
+#: convert-presets.cpp:140
+msgid "error writing preset file"
+msgstr ""
+
+#: convert-presets.cpp:155
+msgid "be quiet"
+msgstr ""
+
+#: convert-presets.cpp:156
+msgid "preset file to convert"
+msgstr ""
+
+#: convert-presets.cpp:162
+msgid "convert-presets"
+msgstr ""