From bd2d7f27c6ccbd7043684ba893eb005d394ff2eb Mon Sep 17 00:00:00 2001 From: Stefan Brand Date: Mon, 9 Apr 2018 19:19:33 +0200 Subject: [PATCH] Version 1.7.1 Added Italian Translation contributed by Tichy Adapted Packaging for new Harbour Rules --- .gitignore | 2 +- README.md | 1 + fileio.cpp | 73 ---- fileio.h | 35 -- harbour-sailotp.pro | 64 ++- icons/108x108/harbour-sailotp.png | Bin 0 -> 13078 bytes icons/128x128/harbour-sailotp.png | Bin 0 -> 17188 bytes .../86x86/harbour-sailotp.png | Bin qml/harbour-sailotp.qml | 2 +- qml/pages/About.qml | 2 +- rpm/harbour-sailotp.changes | 6 +- rpm/harbour-sailotp.yaml | 40 +- .../harbour-sailotp-de.ts | 42 +- .../harbour-sailotp-es.ts | 26 +- .../harbour-sailotp-fi.ts | 22 +- .../harbour-sailotp-fr.ts | 22 +- translations/harbour-sailotp-it.ts | 377 ++++++++++++++++++ .../harbour-sailotp-ru.ts | 22 +- .../harbour-sailotp-sv.ts | 22 +- .../harbour-sailotp-zh_CN.ts | 22 +- i18n/en.ts => translations/harbour-sailotp.ts | 22 +- 21 files changed, 525 insertions(+), 277 deletions(-) delete mode 100644 fileio.cpp delete mode 100644 fileio.h create mode 100644 icons/108x108/harbour-sailotp.png create mode 100644 icons/128x128/harbour-sailotp.png rename harbour-sailotp.png => icons/86x86/harbour-sailotp.png (100%) rename i18n/de.ts => translations/harbour-sailotp-de.ts (89%) rename i18n/es.ts => translations/harbour-sailotp-es.ts (95%) rename i18n/fi.ts => translations/harbour-sailotp-fi.ts (95%) rename i18n/fr.ts => translations/harbour-sailotp-fr.ts (96%) create mode 100644 translations/harbour-sailotp-it.ts rename i18n/ru.ts => translations/harbour-sailotp-ru.ts (96%) rename i18n/sv.ts => translations/harbour-sailotp-sv.ts (95%) rename i18n/zh_CN.ts => translations/harbour-sailotp-zh_CN.ts (95%) rename i18n/en.ts => translations/harbour-sailotp.ts (95%) diff --git a/.gitignore b/.gitignore index d2dd984..dbab0b9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ *.pro.user.* rpm/harbour-sailotp.spec rpm/harbour-sailotp.spec.* -i18n/*.qm +translations/*.qm diff --git a/README.md b/README.md index b3b18ce..6ffbda7 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ The following people have contributed to translating SailOTP: * Chinese: BirdZhang * Finnish: Johan Heikkilä (hevanaa) * French: Romain Tartière (smortex) + * Italian: Tichy * Russian: moorchegue * Spanish: p4moedo * Swedish: Åke Engelbrektson (eson57) diff --git a/fileio.cpp b/fileio.cpp deleted file mode 100644 index 9793d60..0000000 --- a/fileio.cpp +++ /dev/null @@ -1,73 +0,0 @@ -#include "fileio.h" -#include -#include - -FileIO::FileIO(QObject *parent) : - QObject(parent) -{ - -} - -QString FileIO::read() -{ - if (mSource.isEmpty()){ - emit error("source is empty"); - return QString(); - } - - QFile file(mSource); - QString fileContent; - if ( file.open(QIODevice::ReadOnly) ) { - QString line; - QTextStream t( &file ); - do { - line = t.readLine(); - fileContent += line; - } while (!line.isNull()); - - file.close(); - } else { - emit error("Unable to open the file"); - return QString(); - } - return fileContent; -} - -bool FileIO::write(const QString& data) -{ - if (mSource.isEmpty()) - return false; - - QFile file(mSource); - if (!file.open(QFile::WriteOnly | QFile::Truncate)) - return false; - - QTextStream out(&file); - out << data; - - file.close(); - - return true; -} - -bool FileIO::exists() -{ - if (mSource.isEmpty()) { - emit error("Source is empty!"); - return false; - } - - QFile file(mSource); - return file.exists(); -} - -bool FileIO::exists(const QString& filename) -{ - if (filename.isEmpty()) { - emit error("Source is empty!"); - return false; - } - - QFile file(filename); - return file.exists(); -} diff --git a/fileio.h b/fileio.h deleted file mode 100644 index e8c67c2..0000000 --- a/fileio.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef FILEIO_H -#define FILEIO_H - -#include - -class FileIO : public QObject -{ - Q_OBJECT - -public: - Q_PROPERTY(QString source - READ source - WRITE setSource - NOTIFY sourceChanged) - explicit FileIO(QObject *parent = 0); - - Q_INVOKABLE QString read(); - Q_INVOKABLE bool write(const QString& data); - Q_INVOKABLE bool exists(); - Q_INVOKABLE bool exists(const QString& filename); - - QString source() { return mSource; }; - -public slots: - void setSource(const QString& source) { mSource = source; }; - -signals: - void sourceChanged(const QString& source); - void error(const QString& msg); - -private: - QString mSource; -}; - -#endif // FILEIO_H diff --git a/harbour-sailotp.pro b/harbour-sailotp.pro index 680ecd3..2d418d8 100644 --- a/harbour-sailotp.pro +++ b/harbour-sailotp.pro @@ -1,11 +1,3 @@ -# The name of your app. -# NOTICE: name defined in TARGET has a corresponding QML filename. -# If name defined in TARGET is changed, following needs to be -# done to match new name: -# - corresponding QML filename must be changed -# - desktop icon filename must be changed -# - desktop filename must be changed -# - icon definition filename in desktop file must be changed TARGET = harbour-sailotp DEFINES += APP_VERSION=\\\"$$VERSION\\\" @@ -15,49 +7,41 @@ CONFIG += sailfishapp SOURCES += src/harbour-sailotp.cpp -OTHER_FILES += qml/harbour-sailotp.qml \ +DISTFILES += qml/harbour-sailotp.qml \ qml/cover/CoverPage.qml \ - rpm/harbour-sailotp.spec \ - rpm/harbour-sailotp.yaml \ - harbour-sailotp.desktop \ qml/pages/MainView.qml \ qml/pages/AddOTP.qml \ qml/pages/About.qml \ + qml/pages/ExportPage.qml \ + qml/pages/ScanOTP.qml \ + qml/pages/QRPage.qml \ + qml/pages/Settings.qml \ + qml/components/NotifyBanner.qml \ + qml/lib/urldecoder.js \ qml/lib/storage.js \ qml/lib/crypto.js \ + qml/lib/cryptojs-aes.js \ qml/lib/sha.js \ qml/sailotp.png \ - qml/pages/ExportPage.qml \ - qml/components/NotifyBanner.qml \ - qml/pages/ScanOTP.qml \ - qml/lib/urldecoder.js \ - qml/pages/QRPage.qml \ - rpm/harbour-sailotp.changes + rpm/harbour-sailotp.spec \ + rpm/harbour-sailotp.yaml \ + rpm/harbour-sailotp.changes \ + translations/*.ts \ + harbour-sailotp.desktop -i18n.files = i18n/*.qm -i18n.path = /usr/share/$${TARGET}/i18n +SAILFISHAPP_ICONS = 86x86 108x108 128x128 -INSTALLS += i18n +CONFIG += sailfishapp_i18n -lupdate_only { - SOURCES = qml/*.qml \ - qml/pages/*.qml \ - qml/covers/*.qml \ - qml/components/*.qml - - TRANSLATIONS = i18n/de.ts \ - i18n/en.ts \ - i18n/es.ts \ - i18n/fi.ts \ - i18n/fr.ts \ - i18n/ru.ts \ - i18n/sv.ts \ - i18n/zh_CN.ts -} +TRANSLATIONS = translations/harbour-sailotp-de.ts \ + translations/harbour-sailotp-es.ts \ + translations/harbour-sailotp-fi.ts \ + translations/harbour-sailotp-fr.ts \ + translations/harbour-sailotp-it.ts \ + translations/harbour-sailotp-ru.ts \ + translations/harbour-sailotp-sv.ts \ + translations/harbour-sailotp-zh_CN.ts include(src/qzxing/QZXing.pri) include(src/FileIO/FileIO.pri) -include(src/qqrencode/qqrencode.pri) - -DISTFILES += \ - qml/lib/cryptojs-aes.js +include(src/qqrencode/qqrencode.pri) diff --git a/icons/108x108/harbour-sailotp.png b/icons/108x108/harbour-sailotp.png new file mode 100644 index 0000000000000000000000000000000000000000..a09f86a7bd941cfb04a1eb756594e4b3152a28a2 GIT binary patch literal 13078 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 b81a%F!3~_CZ7fR$oB%{CYBJSQW?}yWZ%CcS literal 0 HcmV?d00001 diff --git a/icons/128x128/harbour-sailotp.png b/icons/128x128/harbour-sailotp.png new file mode 100644 index 0000000000000000000000000000000000000000..8e34e33c5cc9998e26c23980027634da59f3f29a GIT binary patch literal 17188 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 1.7.1-1 +- Added Italian Translation +- Adapt Packaging for new Harbour Rules + * Mon Apr 02 2019 Stefan Brand 1.7-1 - Added Chinese Translation -- Added Finnish Translation +- Added Finish Translation - Added Russian Translation - Added Spanish Translation - Some internal Preparation for future features diff --git a/rpm/harbour-sailotp.yaml b/rpm/harbour-sailotp.yaml index a083e8f..ae0621b 100644 --- a/rpm/harbour-sailotp.yaml +++ b/rpm/harbour-sailotp.yaml @@ -1,31 +1,41 @@ Name: harbour-sailotp Summary: SailOTP -Version: 1.7 +Version: 1.7.1 Release: 1 Group: Security URL: https://github.com/seiichiro0185/sailotp/ License: "BSD\t" + Sources: -- '%{name}-%{version}.tar.bz2' + - '%{name}-%{version}.tar.bz2' + Description: | A Sailfish implementation of the One Time Pad algorithm as used by Google Authenticator and a growing number of Websites. + Configure: none + Builder: qtc5 + QMakeOptions: -- VERSION=%{version} -- RELEASE=%{release} + - VERSION=%{version} + - RELEASE=%{release} + PkgConfigBR: -- Qt5Quick -- Qt5Qml -- Qt5Core -- Qt5Multimedia -- sailfishapp >= 1.0.2 + - Qt5Quick + - Qt5Qml + - Qt5Core + - Qt5Multimedia + - sailfishapp >= 1.0.2 + Requires: -- sailfishsilica-qt5 >= 0.10.9 + - sailfishsilica-qt5 >= 0.10.9 + Files: -- '%{_bindir}' -- '%{_datadir}/%{name}/qml' -- '%{_datadir}/%{name}/i18n' -- '%{_datadir}/applications/%{name}.desktop' -- '%{_datadir}/icons/hicolor/86x86/apps/%{name}.png' + - '%defattr(644, root, root, 755)' + - '%attr(755, root, root) %{_bindir}' + - '%{_datadir}/%{name}' + - '%{_datadir}/applications/%{name}.desktop' + - '%{_datadir}/icons/hicolor/*/apps/%{name}.png' + + PkgBR: [] diff --git a/i18n/de.ts b/translations/harbour-sailotp-de.ts similarity index 89% rename from i18n/de.ts rename to translations/harbour-sailotp-de.ts index 2a10e0d..d6f133c 100644 --- a/i18n/de.ts +++ b/translations/harbour-sailotp-de.ts @@ -3,14 +3,6 @@ About - - A Simple Sailfish OTP Generator<br />(RFC 6238/4226 compatible) - Ein einfacher Sailfish OTP-Generator<br/>(RFC 6238/4226-kompatibel) - - - Copyright: Stefan Brand<br />License: BSD (3-clause) - Copyright: Stefan Brand<br/>Lizenz: BSD (3-Klausel) - A Simple Sailfish OTP Generator @@ -262,71 +254,63 @@ Lizenz: BSD (3-Klausel) About Über - - Export Token-DB - Datenbank exportieren - - - Import Token-DB - Datenbank importieren - Settings Einstellungen - + Export / Import Export / Import - + Add Token Token hinzufügen - + Nothing here Hier ist nichts - + Pull down to add a OTP Nach unten ziehen zum hinzufügen - + Deleting Lösche - + Token for Token für - + copied to clipboard kopiert - + Move up Nach oben - + Move down Nach unten - + Edit Bearbeiten - + Delete Löschen @@ -371,10 +355,6 @@ Lizenz: BSD (3-Klausel) Tap the picture to start / stop scanning. Pull down to add Token manually. Vorschau antippen um den Scan zu starten / zu stoppen. Nach unten ziehen um manuell hinzu zu fügen. - - Tap the picture to start scanning. Pull down to add Token manually. - Vorschau antippen um den Scan zu starten. Nach unten ziehen um manuell hinzu zu fügen. - Settings diff --git a/i18n/es.ts b/translations/harbour-sailotp-es.ts similarity index 95% rename from i18n/es.ts rename to translations/harbour-sailotp-es.ts index c1376c4..65f7db6 100644 --- a/i18n/es.ts +++ b/translations/harbour-sailotp-es.ts @@ -260,57 +260,57 @@ Licencia: BSD (de 3 cláusulas) Configuración - + Export / Import Exportar/Importar - + Add Token Añadir Token - + Nothing here Nada aquí - + Pull down to add a OTP Tire hacia abajo para añadir tokens OTP - + Deleting Borrando - + Token for Token para - + copied to clipboard copiado al portapapeles - + Move up Ascender - + Move down Descender - + Edit Editar - + Delete Borrar @@ -365,8 +365,8 @@ Licencia: BSD (de 3 cláusulas) - Funcionamiento - + Behaviour + diff --git a/i18n/fi.ts b/translations/harbour-sailotp-fi.ts similarity index 95% rename from i18n/fi.ts rename to translations/harbour-sailotp-fi.ts index a601bb6..c4f09a1 100644 --- a/i18n/fi.ts +++ b/translations/harbour-sailotp-fi.ts @@ -262,57 +262,57 @@ Lisenssi: BSD (3-clause) Asetukset - + Export / Import Eksportoi / Importoi - + Add Token Lisää tunnus - + Nothing here Tyhjä - + Pull down to add a OTP Vedä alaspäin lisääksesi OTP:n - + Deleting Poistaa - + Token for Tunnus - + copied to clipboard kopioitu leikepöydälle - + Move up Siirrä ylös - + Move down Siirrä alas - + Edit Muokkaa - + Delete Poista diff --git a/i18n/fr.ts b/translations/harbour-sailotp-fr.ts similarity index 96% rename from i18n/fr.ts rename to translations/harbour-sailotp-fr.ts index aba2e52..8471527 100644 --- a/i18n/fr.ts +++ b/translations/harbour-sailotp-fr.ts @@ -261,57 +261,57 @@ Licence : BSD (3 clauses) Paramètres - + Export / Import Exporter / Importer - + Add Token Ajouter un OTP - + Nothing here Aucun mot de passe - + Pull down to add a OTP Glissez vers le bas pour ajouter un OTP - + Deleting Suppression - + Token for OTP pour - + copied to clipboard copié dans le presse-papier - + Move up Déplacer vers le haut - + Move down Déplacer vers le bas - + Edit Modifier - + Delete Supprimer diff --git a/translations/harbour-sailotp-it.ts b/translations/harbour-sailotp-it.ts new file mode 100644 index 0000000..7c78bcc --- /dev/null +++ b/translations/harbour-sailotp-it.ts @@ -0,0 +1,377 @@ + + + + + About + + + A Simple Sailfish OTP Generator +(RFC 6238/4226 compatible) + Un semplice generatore di OTP per Sailfish +(compatibile con RFC 6238/4226) + + + + Copyright: Stefan Brand +License: BSD (3-clause) + Copyright: Stefan Brand +Licenza: BSD (3-clause) + + + + SailOTP uses the following third party libs: + SailOTP utilizza le seguenti librerie di terzi: + + + + Contributors: + Collaboratori: + + + + Support + Supporto + + + + Translators: + Traduttori: + + + + AddOTP + + + Show QR-Code + Mostra Codice QR + + + + Can't create QR-Code from incomplete settings! + Impossibile creare il codice QR da impostizioni incomplete! + + + + Save + Salva + + + + Add + Aggiungi + + + + Type + Tipo + + + + Time-based (TOTP) + Basato sul tempo (TOTP) + + + + Counter-based (HOTP) + Basato su contatore (HOTP) + + + + Steam Guard + Steam Guard + + + + Title + Titolo + + + + Title for the OTP + Titolo per la OTP + + + + Secret (at least 16 characters) + Segreto (almeno 16 caratteri) + + + + Secret OTP Key + Chiave OTP segreta + + + + Length + Lunghezza + + + + Length of the Token + Lunghezza del Token + + + + + Time Derivation (Seconds) + Derivazione Temporale (Secondi) + + + + Next Counter Value + Valore Prossimo Contatore + + + + Next Value of the Counter + Prossimo Valore del Contatore + + + + ExportPage + + + File already exists, choose "Overwrite existing" to overwrite it. + Il file esiste già, scegli "Sovrascrivi esistente" per sovrascriverlo. + + + + Given file does not exist! + Il file passato non esiste! + + + + + Export + Esporta + + + + + Import + Importa + + + + Filename + Nome file + + + + File to import + File da importare + + + + File to export + File da esportare + + + + Overwrite existing + Sovrascrivi esistente + + + + Password + Password + + + + Password for the file + Password per il file + + + + Passwords don't match! + Le password non corrispondono! + + + + Passwords match! + Le password corrispondono! + + + + Repeated Password for the file + Password Ripetuta per il file + + + + Here you can Import Tokens from a file. Put in the file location and the password you used on export. Pull left to start the import. + Da qua puoi Importare i Token da un file. Inserisci la posizione del file e la password usata nell'esportazione. Scorri a sinistra per iniziare l'importazione. + + + + Here you can export Tokens to a file. The exported file will be encrypted with AES-256-CBC and Base64 encoded. Choose a strong password, the file will contain the secrets used to generate the Tokens for your accounts. Pull left to start the export. + Da qua puoi Esportare i Token su un file. Il file esportato sarà criptato con AES-256-CBC e codificato Base64. Scegli una password forte, il file conterrà i segreti usati per generare i Token per i tuoi account. Scorri a sinistra per iniziare l'esportazione. + + + + To view the content of the export file outside of SailOTP use the following openssl command: + Per vedere il contenuto del file esportato al di fuori di SailORP usa il seguente comando openssl: + + + + Error writing to file + Errore in scrittura del file + + + + Token Database exported to + Database dei Toen esportato su + + + + Could not encrypt tokens. Error: + Impossibile criptare i token. Errore: + + + + Could not read tokens from Database + Impossibile leggere i token dal Database + + + + Tokens imported from + Token importati da + + + + Unable to decrypt file, did you use the right password? + Non ho potuto decrittare il file, hai scritto la password correttamente? + + + + Could not read from file + Impossibile leggere dal file + + + + MainView + + + About + Informazioni + + + + Settings + Imopstazioni + + + + Export / Import + Esporta / Importa + + + + Add Token + Aggiungi Token + + + + Nothing here + Qua non c'è nulla + + + + Pull down to add a OTP + Trascina giù per aggiungere una OTP + + + + Deleting + Cancellazione + + + + Token for + Token per + + + + copied to clipboard + copiato negli appunti + + + + Move up + Sposta su + + + + Move down + Sposta giù + + + + Edit + Modifica + + + + Delete + Cancella + + + + QRPage + + + Can't create QR-Code from incomplete settings! + Impossibile creare il codice QR da impostizioni incomplete! + + + + ScanOTP + + + Can't access temporary directory + Impossibile accedere alla cartella temporanea + + + + Add manually + Aggiungi manualmente + + + + Scan Code + Scansiona Codice + + + + Scanning... + Scansione... + + + + No valid Token data found. + Non sono stati trovati dati di Token validi. + + + + Tap the picture to start / stop scanning. Pull down to add Token manually. + Tocca l'immagine per iniziare / fermare la scansione. Trascina giù per aggiungere manualmente un Token. + + + + Settings + + + Settings + Imopstazioni + + + + Behaviour + Comportamento + + + + Show Token as QRCode on Tap + Mostra il Token come Codice QR al Tocco + + + diff --git a/i18n/ru.ts b/translations/harbour-sailotp-ru.ts similarity index 96% rename from i18n/ru.ts rename to translations/harbour-sailotp-ru.ts index 18d2088..e926443 100644 --- a/i18n/ru.ts +++ b/translations/harbour-sailotp-ru.ts @@ -262,57 +262,57 @@ License: BSD (3-clause) настройки - + Export / Import Экспорт / импорт - + Add Token Добавить токен - + Nothing here Ничего нету - + Pull down to add a OTP Потяните вниз чтобы добавить OTP - + Deleting Удаление - + Token for Токен для - + copied to clipboard скопирован в буфер обмена - + Move up Передвинуть вверх - + Move down Передвинуть вниз - + Edit Редактировать - + Delete Удалить diff --git a/i18n/sv.ts b/translations/harbour-sailotp-sv.ts similarity index 95% rename from i18n/sv.ts rename to translations/harbour-sailotp-sv.ts index 1b28481..fbbd443 100644 --- a/i18n/sv.ts +++ b/translations/harbour-sailotp-sv.ts @@ -262,57 +262,57 @@ Licens: BSD (3-clause) Inställningar - + Export / Import Export / Import - + Add Token Lägg till Token - + Nothing here Inget här - + Pull down to add a OTP Dra neråt för att lägga till en OTP - + Deleting Tar bort - + Token for Token för - + copied to clipboard kopierad till urklipp - + Move up Flytta upp - + Move down Flytta ner - + Edit Redigera - + Delete Ta bort diff --git a/i18n/zh_CN.ts b/translations/harbour-sailotp-zh_CN.ts similarity index 95% rename from i18n/zh_CN.ts rename to translations/harbour-sailotp-zh_CN.ts index 2a759b9..d8db44a 100644 --- a/i18n/zh_CN.ts +++ b/translations/harbour-sailotp-zh_CN.ts @@ -259,57 +259,57 @@ License: BSD (3-clause) 设置 - + Export / Import 导出/导入 - + Add Token 添加令牌 - + Nothing here 无内容 - + Pull down to add a OTP 下拉添加一个OTP - + Deleting 删除中 - + Token for 令牌 - + copied to clipboard 已复制到剪切板 - + Move up 向上 - + Move down 向下 - + Edit 编辑 - + Delete 删除 diff --git a/i18n/en.ts b/translations/harbour-sailotp.ts similarity index 95% rename from i18n/en.ts rename to translations/harbour-sailotp.ts index b68568e..fd1a26d 100644 --- a/i18n/en.ts +++ b/translations/harbour-sailotp.ts @@ -258,57 +258,57 @@ License: BSD (3-clause) - + Export / Import - + Add Token - + Nothing here - + Pull down to add a OTP - + Deleting - + Token for - + copied to clipboard - + Move up Move up - + Move down Move down - + Edit - + Delete