From 9713bddf71b3f400d2685fc279d853e59ff5e1d0 Mon Sep 17 00:00:00 2001 From: Florent Revest Date: Sat, 4 Mar 2017 18:00:57 +0100 Subject: Makes .desktop file translatable --- asteroid-stopwatch.desktop | 19 ------------ asteroid-stopwatch.desktop.template | 7 +++++ asteroid-stopwatch.pro | 20 +++++++++++- i18n/asteroid-stopwatch.de.ts | 12 ++++++++ i18n/asteroid-stopwatch.desktop.h | 5 +++ i18n/asteroid-stopwatch.es.ts | 12 ++++++++ i18n/asteroid-stopwatch.fa.ts | 12 ++++++++ i18n/asteroid-stopwatch.fr.ts | 12 ++++++++ i18n/asteroid-stopwatch.ko.ts | 12 ++++++++ i18n/asteroid-stopwatch.nl.ts | 12 ++++++++ i18n/asteroid-stopwatch.pl.ts | 12 ++++++++ i18n/asteroid-stopwatch.pt_BR.ts | 12 ++++++++ i18n/asteroid-stopwatch.ru.ts | 12 ++++++++ i18n/asteroid-stopwatch.sv.ts | 12 ++++++++ i18n/asteroid-stopwatch.uk.ts | 12 ++++++++ i18n/generate-desktop.sh | 61 +++++++++++++++++++++++++++++++++++++ 16 files changed, 224 insertions(+), 20 deletions(-) delete mode 100644 asteroid-stopwatch.desktop create mode 100644 asteroid-stopwatch.desktop.template create mode 100644 i18n/asteroid-stopwatch.de.ts create mode 100644 i18n/asteroid-stopwatch.desktop.h create mode 100644 i18n/asteroid-stopwatch.es.ts create mode 100644 i18n/asteroid-stopwatch.fa.ts create mode 100644 i18n/asteroid-stopwatch.fr.ts create mode 100644 i18n/asteroid-stopwatch.ko.ts create mode 100644 i18n/asteroid-stopwatch.nl.ts create mode 100644 i18n/asteroid-stopwatch.pl.ts create mode 100644 i18n/asteroid-stopwatch.pt_BR.ts create mode 100644 i18n/asteroid-stopwatch.ru.ts create mode 100644 i18n/asteroid-stopwatch.sv.ts create mode 100644 i18n/asteroid-stopwatch.uk.ts create mode 100755 i18n/generate-desktop.sh diff --git a/asteroid-stopwatch.desktop b/asteroid-stopwatch.desktop deleted file mode 100644 index f6f0edf..0000000 --- a/asteroid-stopwatch.desktop +++ /dev/null @@ -1,19 +0,0 @@ -[Desktop Entry] -Type=Application -Name=Stopwatch -Name[de_DE]=Stoppuhr -Name[es]=Cronometro -Name[fa]=کرونومتر -Name[fr]=Chronomètre -Name[ko]=초시계 -Name[nl_NL]=Stopwatch -Name[pl]=Stoper -Name[pt_BR]=Cronômetro -Name[ru]=секундомер -Name[sv]=Tidtagarur -Name[uk]=Секундомір -Categories=Applications; -Exec=invoker --single-instance --type=qtcomponents-qt5 /usr/bin/asteroid-stopwatch -Icon=ios-stopwatch-outline -X-Asteroid-Center-Color=#b01c7e -X-Asteroid-Outer-Color=#420a2f diff --git a/asteroid-stopwatch.desktop.template b/asteroid-stopwatch.desktop.template new file mode 100644 index 0000000..8c2ba37 --- /dev/null +++ b/asteroid-stopwatch.desktop.template @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +Categories=Applications; +Exec=invoker --single-instance --type=qtcomponents-qt5 /usr/bin/asteroid-stopwatch +Icon=ios-stopwatch-outline +X-Asteroid-Center-Color=#b01c7e +X-Asteroid-Outer-Color=#420a2f diff --git a/asteroid-stopwatch.pro b/asteroid-stopwatch.pro index a9730b0..b3c7850 100644 --- a/asteroid-stopwatch.pro +++ b/asteroid-stopwatch.pro @@ -7,10 +7,28 @@ SOURCES += main.cpp RESOURCES += resources.qrc OTHER_FILES += main.qml +lupdate_only{ + SOURCES = i18n/asteroid-stopwatch.desktop.h +} + +# Needed for lupdate +TRANSLATIONS = i18n/asteroid-stopwatch.de.ts \ + i18n/asteroid-stopwatch.es.ts \ + i18n/asteroid-stopwatch.fa.ts \ + i18n/asteroid-stopwatch.fr.ts \ + i18n/asteroid-stopwatch.ko.ts \ + i18n/asteroid-stopwatch.nl.ts \ + i18n/asteroid-stopwatch.pl.ts \ + i18n/asteroid-stopwatch.pt_BR.ts \ + i18n/asteroid-stopwatch.ru.ts \ + i18n/asteroid-stopwatch.sv.ts \ + i18n/asteroid-stopwatch.uk.ts + TARGET = asteroid-stopwatch target.path = /usr/bin/ -desktop.files = asteroid-stopwatch.desktop +desktop.commands = bash $$PWD/i18n/generate-desktop.sh $$PWD asteroid-stopwatch.desktop +desktop.files = $$OUT_PWD/asteroid-stopwatch.desktop desktop.path = /usr/share/applications INSTALLS += target desktop diff --git a/i18n/asteroid-stopwatch.de.ts b/i18n/asteroid-stopwatch.de.ts new file mode 100644 index 0000000..d6bc113 --- /dev/null +++ b/i18n/asteroid-stopwatch.de.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + Stoppuhr + + + diff --git a/i18n/asteroid-stopwatch.desktop.h b/i18n/asteroid-stopwatch.desktop.h new file mode 100644 index 0000000..8f642d6 --- /dev/null +++ b/i18n/asteroid-stopwatch.desktop.h @@ -0,0 +1,5 @@ +/* This dummy header is just used to generate a translatable Qt string that + * will be integrated to i18n/.ts files, translated on Weblate and then merged + * back with the .desktop.template file into a single .desktop file. */ + +QObject::tr("Stopwatch"); diff --git a/i18n/asteroid-stopwatch.es.ts b/i18n/asteroid-stopwatch.es.ts new file mode 100644 index 0000000..d2aac15 --- /dev/null +++ b/i18n/asteroid-stopwatch.es.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + Cronometro + + + diff --git a/i18n/asteroid-stopwatch.fa.ts b/i18n/asteroid-stopwatch.fa.ts new file mode 100644 index 0000000..708781b --- /dev/null +++ b/i18n/asteroid-stopwatch.fa.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + کﺭﻮﻧﻮﻤﺗﺭ + + + diff --git a/i18n/asteroid-stopwatch.fr.ts b/i18n/asteroid-stopwatch.fr.ts new file mode 100644 index 0000000..14ba06e --- /dev/null +++ b/i18n/asteroid-stopwatch.fr.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + Chronomètre + + + diff --git a/i18n/asteroid-stopwatch.ko.ts b/i18n/asteroid-stopwatch.ko.ts new file mode 100644 index 0000000..2d682b9 --- /dev/null +++ b/i18n/asteroid-stopwatch.ko.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + 초시계 + + + diff --git a/i18n/asteroid-stopwatch.nl.ts b/i18n/asteroid-stopwatch.nl.ts new file mode 100644 index 0000000..6a0379c --- /dev/null +++ b/i18n/asteroid-stopwatch.nl.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + Stopwatch + + + diff --git a/i18n/asteroid-stopwatch.pl.ts b/i18n/asteroid-stopwatch.pl.ts new file mode 100644 index 0000000..5690963 --- /dev/null +++ b/i18n/asteroid-stopwatch.pl.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + Stoper + + + diff --git a/i18n/asteroid-stopwatch.pt_BR.ts b/i18n/asteroid-stopwatch.pt_BR.ts new file mode 100644 index 0000000..3e38b75 --- /dev/null +++ b/i18n/asteroid-stopwatch.pt_BR.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + Cronômetro + + + diff --git a/i18n/asteroid-stopwatch.ru.ts b/i18n/asteroid-stopwatch.ru.ts new file mode 100644 index 0000000..7025f1d --- /dev/null +++ b/i18n/asteroid-stopwatch.ru.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + секундомер + + + diff --git a/i18n/asteroid-stopwatch.sv.ts b/i18n/asteroid-stopwatch.sv.ts new file mode 100644 index 0000000..787f727 --- /dev/null +++ b/i18n/asteroid-stopwatch.sv.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + Tidtagarur + + + diff --git a/i18n/asteroid-stopwatch.uk.ts b/i18n/asteroid-stopwatch.uk.ts new file mode 100644 index 0000000..bffce44 --- /dev/null +++ b/i18n/asteroid-stopwatch.uk.ts @@ -0,0 +1,12 @@ + + + + + QObject + + + Stopwatch + Секундомір + + + diff --git a/i18n/generate-desktop.sh b/i18n/generate-desktop.sh new file mode 100755 index 0000000..f4c8a3e --- /dev/null +++ b/i18n/generate-desktop.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# This script is used to extract the translated app names found inevery .ts file +# and gather those strings with the .desktop.template file in a single .desktop + +if [ "$#" -ne 2 ]; then + echo "usage: $0 src_directory output.desktop" + exit 1 +fi + +SRC_DIR=$1 +OUTPUT_DESKTOP_FILE=$2 +if [ ! -f "${SRC_DIR}/${OUTPUT_DESKTOP_FILE}.template" ]; then + echo "${SRC_DIR}/${OUTPUT_DESKTOP_FILE}.template not found" + exit 2 +fi +if [ ! -f "${SRC_DIR}/i18n/${OUTPUT_DESKTOP_FILE}.h" ]; then + echo "${SRC_DIR}/i18n/${OUTPUT_DESKTOP_FILE}.h not found" + exit 2 +fi + +DEFAULT_NAME=`grep -oP 'QObject::tr\("\K[^"]+(?="\);)' ${SRC_DIR}/i18n/${OUTPUT_DESKTOP_FILE}.h` +if [ -z "$DEFAULT_NAME" ]; then + echo "Default name can not be found in ${SRC_DIR}/i18n/${OUTPUT_DESKTOP_FILE}.h" + exit 3 +fi + +cat ${SRC_DIR}/${OUTPUT_DESKTOP_FILE}.template > ${OUTPUT_DESKTOP_FILE} +echo "Name=$DEFAULT_NAME" >> $OUTPUT_DESKTOP_FILE + +for FILE in ${SRC_DIR}/i18n/*.ts; do + echo "Processing $FILE..." + + PROCESSED_LANG=`grep -oP 'language="\K[^"]+(?=")' $FILE` + if [ -z "$PROCESSED_LANG" ]; then + echo "> Couldn't find a corresponding language id, aborting" + continue + fi + echo "> Language: $PROCESSED_LANG detected" + + TRANSLATION_LINE=`grep -A 2 ' Couldn't find a corresponding desktop.h translation, aborting" + continue + fi + + LINE_IS_UNFINISHED=`echo $TRANSLATION_LINE | grep unfinished` + if [ ! -z "$LINE_IS_UNFINISHED" ]; then + echo "> Translation line has been found but is marked as unfinished, aborting" + continue + fi + + TRANSLATED_NAME=`echo $TRANSLATION_LINE | grep -oP '>\K[^<]*(?=)'` + if [ -z "$TRANSLATED_NAME" ]; then + echo "> Translation is empty, aborting" + continue + fi + echo "> Translation '$TRANSLATED_NAME' found, filling $OUTPUT_DESKTOP_FILE" + + echo "Name[$PROCESSED_LANG]=$TRANSLATED_NAME" >> $OUTPUT_DESKTOP_FILE +done -- cgit v1.2.3-70-g09d2