From 1ed8ef771970dcf9c3b007d5e5db81ed5b94c37e Mon Sep 17 00:00:00 2001 From: Stefan Brand Date: Sun, 18 Dec 2022 13:16:13 +0100 Subject: [PATCH] Version 1.10.0 - Added Customizable Time Period (contributed by Andrey Skvortsov) - Added SailJail Permissions (contributed by DrYak) --- .gitignore | 6 ++ README.md | 2 + harbour-sailotp.desktop | 4 ++ qml/cover/CoverPage.qml | 2 +- qml/harbour-sailotp.qml | 6 +- qml/lib/crypto.js | 6 +- qml/lib/storage.js | 46 ++++++++------ qml/pages/About.qml | 14 +++++ qml/pages/AddOTP.qml | 21 ++++++- qml/pages/MainView.qml | 8 +-- rpm/harbour-sailotp.changes | 4 ++ rpm/harbour-sailotp.yaml | 4 +- translations/harbour-sailotp-de.ts | 58 +++++++++++------- translations/harbour-sailotp-es.ts | 58 +++++++++++------- translations/harbour-sailotp-fi.ts | 58 +++++++++++------- translations/harbour-sailotp-fr.ts | 58 +++++++++++------- translations/harbour-sailotp-hu.ts | 58 +++++++++++------- translations/harbour-sailotp-it.ts | 58 +++++++++++------- translations/harbour-sailotp-nl.ts | 86 ++++++++++++++++----------- translations/harbour-sailotp-pt_BR.ts | 60 ++++++++++++------- translations/harbour-sailotp-ru.ts | 58 +++++++++++------- translations/harbour-sailotp-sv.ts | 78 ++++++++++++++---------- translations/harbour-sailotp-zh_CN.ts | 58 +++++++++++------- translations/harbour-sailotp.ts | 58 +++++++++++------- 24 files changed, 560 insertions(+), 309 deletions(-) diff --git a/.gitignore b/.gitignore index 88f42f3..9a93b79 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,12 @@ *.pro.user *.pro.user.* *.autosave +*.o +moc_* +documentation.list +harbour-sailotp +RPMS +Makefile rpm/harbour-sailotp.spec rpm/harbour-sailotp.spec.* translations/*.qm diff --git a/README.md b/README.md index 1641895..827b388 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ The Following people have contributed code or other improvements to SailOTP: * SteamGuard support: Robin Appelman * Search function: Jyri-Petteri Paloposki * Improved App Icon: JSEHV + * Custom Time Period support: Andrey Skvortsov + * SailJail Permissions: DrYak ## Translations diff --git a/harbour-sailotp.desktop b/harbour-sailotp.desktop index 8c1a801..4491649 100644 --- a/harbour-sailotp.desktop +++ b/harbour-sailotp.desktop @@ -5,3 +5,7 @@ Name=SailOTP Icon=harbour-sailotp Exec=harbour-sailotp +[X-Sailjail] +Permissions=UserDirs;RemovableMedia +OrganizationName=org.seiichiro0185 +ApplicationName=harbour-sailotp diff --git a/qml/cover/CoverPage.qml b/qml/cover/CoverPage.qml index ba7d9a0..09a6bff 100644 --- a/qml/cover/CoverPage.qml +++ b/qml/cover/CoverPage.qml @@ -45,7 +45,7 @@ CoverBackground { var seconds = (curDate.getSeconds() + appWin.coverDiff) % 30 if (lOTP.text == "------" || seconds == 0 || (curDate.getTime() - lastUpdated > 2000)) { - appWin.coverOTP = OTP.calcOTP(appWin.coverSecret, appWin.coverType, appWin.coverLen, appWin.coverDiff, 0); + appWin.coverOTP = OTP.calcOTP(appWin.coverSecret, appWin.coverType, appWin.coverLen, appWin.coverDiff, 0, appWin.coverPeriod); } // Change color of the OTP to red if less than 5 seconds left diff --git a/qml/harbour-sailotp.qml b/qml/harbour-sailotp.qml index 4e7f960..90585a2 100644 --- a/qml/harbour-sailotp.qml +++ b/qml/harbour-sailotp.qml @@ -45,6 +45,7 @@ ApplicationWindow property string coverOTP: "------" property int coverLen: 6 property int coverDiff: 0 + property int coverPeriod: 30 property int coverIndex: 0 // Global Listmodel for Tokens @@ -64,8 +65,8 @@ ApplicationWindow } // Add an entry to the list - function appendOTP(title, secret, type, counter, fav, len, diff) { - listModel.append({"secret": secret, "title": title, "fav": fav, "type": type, "counter": counter, "len": len, "diff": diff, "otp": "------", "itemVisible": true}); + function appendOTP(title, secret, type, counter, fav, len, diff, period) { + listModel.append({"secret": secret, "title": title, "fav": fav, "type": type, "counter": counter, "len": len, "diff": diff, "period": period, "otp": "------", "itemVisible": true}); } // Set the OTP shown on the Cover @@ -76,6 +77,7 @@ ApplicationWindow coverType = listModel.get(index).type; coverLen = listModel.get(index).len; coverDiff = listModel.get(index).diff; + coverPeriod = listModel.get(index).period; coverIndex = index; if (coverType == "TOTP") { coverOTP = "------"; } else { coverOTP = listModel.get(index).otp; } for (var i=0; i 0) { - return(JSON.stringify({"app": "sailotp", "version": 3, "otplist": otpList})); + return(JSON.stringify({"app": "sailotp", "version": 4, "otplist": otpList})); } else { return("") } @@ -122,7 +132,7 @@ function json2db(jsonString, error) { var json = JSON.parse(jsonString); error = ""; - if ((json.version != "1" || json.version != "2" || json.version != "3") && json.app != "sailotp" ) { + if ((json.version != "1" || json.version != "2" || json.version != "3" || json.version != "4") && json.app != "sailotp" ) { error = "Unrecognized format, file is not a SailOTP export"; return(false); } else { @@ -133,13 +143,15 @@ function json2db(jsonString, error) { var otpItem = otpList.shift(); if (otpItem.title != "" & otpItem.secret.length >= 16) { if (json.version == "1") { - addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, 0, 6, 0); + addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, 0, 6, 0, 30); } else if (json.version == "2") { - addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, 6, 0); - } else { - addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, otpItem.len, otpItem.diff); + addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, 6, 0, 30); + } else if (json.version == "3") { + addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, otpItem.len, otpItem.diff, 30); + } else { + addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, otpItem.len, otpItem.diff, otpItem.period); } - } + } } parentPage.refreshOTPList(); return(true); @@ -151,7 +163,7 @@ function json2db(jsonString, error) { } // Add a new OTP -function addOTP(title, secret, type, counter, sort, len, diff) { +function addOTP(title, secret, type, counter, sort, len, diff, period) { var db = getDB(); db.transaction( @@ -159,7 +171,7 @@ function addOTP(title, secret, type, counter, sort, len, diff) { if (checkOTP(title, secret)) { console.log("Token " + title + " is already in DB"); } else { - tx.executeSql("INSERT INTO OTPStorage VALUES(?, ?, ?, ?, ?, ?, ?, ?);", [title, secret, type, counter, 0, sort, len, diff]); + tx.executeSql("INSERT INTO OTPStorage VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?);", [title, secret, type, counter, 0, sort, len, diff, period]); console.log("Token " + title + " added."); } }); @@ -210,12 +222,12 @@ function resetFav(title, secret) { } // Change an existing OTP -function changeOTP(title, secret, type, counter, len, diff, oldtitle, oldsecret) { +function changeOTP(title, secret, type, counter, len, diff, period, oldtitle, oldsecret) { var db = getDB(); db.transaction( function(tx) { - tx.executeSql("UPDATE OTPStorage SET title=?, secret=?, type=?, counter=?, len=?, diff=? WHERE title=? and secret=?;", [title, secret, type, counter, len, diff, oldtitle, oldsecret]); + tx.executeSql("UPDATE OTPStorage SET title=?, secret=?, type=?, counter=?, len=?, diff=?, period=? WHERE title=? and secret=?;", [title, secret, type, counter, len, diff, period, oldtitle, oldsecret]); console.log("Token " + title + " modified."); } ); diff --git a/qml/pages/About.qml b/qml/pages/About.qml index be73c44..5767f51 100644 --- a/qml/pages/About.qml +++ b/qml/pages/About.qml @@ -156,6 +156,20 @@ Page { alignment: Qt.AlignLeft leftMargin: Theme.paddingLarge*2 } + DetailItem { + label: qsTr("Customizable Time Period") + value: "Andrey Skvortsov" + width: parent.width + alignment: Qt.AlignLeft + leftMargin: Theme.paddingLarge*2 + } + DetailItem { + label: qsTr("SailJail Permissions") + value: "DrYak" + width: parent.width + alignment: Qt.AlignLeft + leftMargin: Theme.paddingLarge*2 + } Item { width: parent.width height: Theme.paddingMedium diff --git a/qml/pages/AddOTP.qml b/qml/pages/AddOTP.qml index 0c52984..c0515e9 100644 --- a/qml/pages/AddOTP.qml +++ b/qml/pages/AddOTP.qml @@ -48,6 +48,7 @@ Dialog { property int paramLen: 6 property int paramDiff: 0 property int paramCounter: 1 // New Counters start at 1 + property int paramPeriod: 30 property bool paramNew: false function checkQR() { @@ -163,6 +164,20 @@ Dialog { EnterKey.iconSource: "image://theme/icon-m-enter-accept" EnterKey.onClicked: addOTP.accept() } + TextField { + id: otpPeriod + width: parent.width + visible: paramType == "TOTP" ? true : false + label: qsTr("Period (Seconds)") + text: paramPeriod + placeholderText: qsTr("Period (Seconds)") + focus: true + horizontalAlignment: TextInput.AlignLeft + validator: IntValidator {} + + EnterKey.iconSource: "image://theme/icon-m-enter-accept" + EnterKey.onClicked: addOTP.accept() + } TextField { id: otpCounter width: parent.width @@ -182,7 +197,7 @@ Dialog { } // Check if we can Save - canAccept: otpLabel.text.length > 0 && otpSecret.text.length >= 16 && otpSecret.acceptableInput && otpLen.text >= 1 && ((paramType == "TOTP" && otpDiff.text != "") || paramType == "TOTP_STEAM" || otpCounter.text.length > 0) ? true : false + canAccept: otpLabel.text.length > 0 && otpSecret.text.length >= 16 && otpSecret.acceptableInput && otpLen.text >= 1 && ((paramType == "TOTP" && otpDiff.text != "" && otpPeriod.text > 0) || paramType == "TOTP_STEAM" || otpCounter.text.length > 0) ? true : false // Save if page is Left with Add onDone: { @@ -190,10 +205,10 @@ Dialog { // Save the entry to the Config DB if (paramLabel != "" && paramKey != "" && !paramNew) { // Parameters where filled -> Change existing entry - DB.changeOTP(otpLabel.text, otpSecret.text, paramType, otpCounter.text, otpLen.text, otpDiff.text, paramLabel, paramKey) + DB.changeOTP(otpLabel.text, otpSecret.text, paramType, otpCounter.text, otpLen.text, otpDiff.text, otpPeriod.text, paramLabel, paramKey) } else { // There were no parameters -> Add new entry - DB.addOTP(otpLabel.text, otpSecret.text, paramType, otpCounter.text, appWin.listModel.count, otpLen.text, otpDiff.text); + DB.addOTP(otpLabel.text, otpSecret.text, paramType, otpCounter.text, appWin.listModel.count, otpLen.text, otpDiff.text, otpPeriod.text); } // Refresh the main Page diff --git a/qml/pages/MainView.qml b/qml/pages/MainView.qml index 9bac121..0f3f9b9 100644 --- a/qml/pages/MainView.qml +++ b/qml/pages/MainView.qml @@ -64,10 +64,10 @@ Page { for (var i=0; i 2000)) { - var curOTP = OTP.calcOTP(appWin.listModel.get(i).secret, appWin.listModel.get(i).type, appWin.listModel.get(i).len, appWin.listModel.get(i).diff, 0); + var curOTP = OTP.calcOTP(appWin.listModel.get(i).secret, appWin.listModel.get(i).type, appWin.listModel.get(i).len, appWin.listModel.get(i).diff, 0, appWin.listModel.get(i).period); appWin.listModel.setProperty(i, "otp", curOTP); } else if (appWin.coverType === "HOTP" && (curDate.getTime() - lastUpdated > 2000) && appWin.listModel.get(i).fav === 1) { // If we are coming back from the CoverPage update OTP value if current favourite is HOTP @@ -311,7 +311,7 @@ Page { MenuItem { text: qsTr("Edit") onClicked: { - pageStack.push(Qt.resolvedUrl("AddOTP.qml"), {parentPage: mainPage, paramLabel: title, paramKey: secret, paramType: type, paramLen: len, paramDiff: diff, paramCounter: DB.getCounter(title, secret, false)}) + pageStack.push(Qt.resolvedUrl("AddOTP.qml"), {parentPage: mainPage, paramLabel: title, paramKey: secret, paramType: type, paramLen: len, paramDiff: diff, paramCounter: DB.getCounter(title, secret, false), paramPeriod: period}) } } MenuItem { diff --git a/rpm/harbour-sailotp.changes b/rpm/harbour-sailotp.changes index c36d131..af4cf16 100644 --- a/rpm/harbour-sailotp.changes +++ b/rpm/harbour-sailotp.changes @@ -1,3 +1,7 @@ +* Sun Dec 18 2022 Stefan Brand 1.10.0-1 +- Added Customizable Time Period (contributed by Andrey Skvortsov) +- Added SailJail Permissions (contributed by DrYak) + * Sat Jun 26 2021 Stefan Brand 1.9.4-1 - Update pt_br Translation (contributed by caio2k) - Refreshed App Icon (contributed by JSEHV) diff --git a/rpm/harbour-sailotp.yaml b/rpm/harbour-sailotp.yaml index 1affdfc..70f644a 100644 --- a/rpm/harbour-sailotp.yaml +++ b/rpm/harbour-sailotp.yaml @@ -1,6 +1,6 @@ Name: harbour-sailotp Summary: SailOTP -Version: 1.9.4 +Version: 1.10.0 Release: 1 Group: Security URL: https://github.com/seiichiro0185/sailotp/ @@ -14,7 +14,7 @@ Description: | Configure: none -Builder: qtc5 +Builder: qmake5 QMakeOptions: - VERSION=%{version} diff --git a/translations/harbour-sailotp-de.ts b/translations/harbour-sailotp-de.ts index f8ad8db..64e4900 100644 --- a/translations/harbour-sailotp-de.ts +++ b/translations/harbour-sailotp-de.ts @@ -54,7 +54,17 @@ Icon - + + Customizable Time Period + Einstellbares Intervall + + + + SailJail Permissions + SailJail Berechtigungen + + + SailOTP uses the following third party libs: SailOTP verwendet folgende externe Bibliotheken: @@ -64,7 +74,7 @@ Mitwirkende: - + Translators: Übersetzer: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code QR-Code Anzeigen - - + + Can't create QR-Code from incomplete settings! Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden! - + Add Hinzufügen - + Save Speichern - + Type Typ - + Time-based (TOTP) Zeitbasiert (TOTP) - + Counter-based (HOTP) Zählerbasiert (HOTP) - + Steam Guard Steam Guard - + Title Titel - + Title for the OTP Titel für das Token - + Secret (at least 16 characters) Schlüssel (mindestens 16 Zeichen) - + Secret OTP Key Geheimer Schlüssel - + Length Länge - + Length of the Token Länge des Tokens - - + + Time Derivation (Seconds) Zeitabweichung (Sekunden) - + + + Period (Seconds) + Intervall (Sekunden) + + + Next Counter Value Nächster Zählerwert - + Next Value of the Counter Nächster Wert für den Zähler diff --git a/translations/harbour-sailotp-es.ts b/translations/harbour-sailotp-es.ts index 87c6be9..3a26b6e 100644 --- a/translations/harbour-sailotp-es.ts +++ b/translations/harbour-sailotp-es.ts @@ -54,7 +54,17 @@ - + + Customizable Time Period + + + + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP usa las siguientes librerías de terceros: @@ -64,7 +74,7 @@ Contribuidor: - + Translators: Traductores: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code Mostrar código QR - - + + Can't create QR-Code from incomplete settings! ¡No se puede crear el código QR a partir de una configuración incompleta! - + Add Añadir - + Save Guardar - + Type Tipo - + Time-based (TOTP) Basado en tiempo (TOTP) - + Counter-based (HOTP) Basado en contador (HOTP) - + Steam Guard Steam Guard - + Title Título - + Title for the OTP Nombre para el OTP - + Secret (at least 16 characters) Cadena secreta (al menos 16 caracteres) - + Secret OTP Key Llave secreta OTP - + Length Longitud - + Length of the Token Longitud del token - - + + Time Derivation (Seconds) Derivación de tiempo (segundos) - + + + Period (Seconds) + + + + Next Counter Value Siguiente Contador - + Next Value of the Counter Siguiente valor del contador diff --git a/translations/harbour-sailotp-fi.ts b/translations/harbour-sailotp-fi.ts index 03a1b9b..b45141c 100644 --- a/translations/harbour-sailotp-fi.ts +++ b/translations/harbour-sailotp-fi.ts @@ -49,7 +49,17 @@ - + + Customizable Time Period + + + + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP käyttää seuraavia kolmannen osapuolen kirjastoja: @@ -64,7 +74,7 @@ (RFC 6238/4226 -yhteensopiva) - + Translators: Kääntäjät: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code Näytä QR-koodi - - + + Can't create QR-Code from incomplete settings! QR-koodia ei voida luoda puutteellisten asetuksien takia! - + Add Lisää - + Save Tallenna - + Type Tyyppi - + Time-based (TOTP) Aikapohjainen (TOTP) - + Counter-based (HOTP) Laskuripohjainen (HOTP) - + Steam Guard Steam Guard - + Title Nimi - + Title for the OTP Kertasalasanan nimi - + Secret (at least 16 characters) Salaisuus (vähintään 16 merkkiä) - + Secret OTP Key Salainen OTP-avain - + Length Pituus - + Length of the Token Kertasalasanan pituus - - + + Time Derivation (Seconds) Aikapoikkeama (sekunneissa) - + + + Period (Seconds) + + + + Next Counter Value Laskurin seuraava arvo - + Next Value of the Counter Laskurin seuraava arvo diff --git a/translations/harbour-sailotp-fr.ts b/translations/harbour-sailotp-fr.ts index 11e685a..d22db35 100644 --- a/translations/harbour-sailotp-fr.ts +++ b/translations/harbour-sailotp-fr.ts @@ -54,7 +54,17 @@ - + + Customizable Time Period + + + + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP utilise les bibliothèques tierces suivantes : @@ -64,7 +74,7 @@ Contributeurs : - + Translators: Traducteurs : @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code Afficher le code QR - - + + Can't create QR-Code from incomplete settings! Impossible de créer un code QR avec des paramètres incomplets ! - + Add Ajouter - + Save Enregistrer - + Type Type - + Time-based (TOTP) Basé sur le temps (TOTP) - + Counter-based (HOTP) Basé sur un compteur (HOTP) - + Steam Guard Steam Guard - + Title Titre - + Title for the OTP Titre de l'OTP - + Secret (at least 16 characters) Secret (au moins 16 caractètres) - + Secret OTP Key Clé secrète OTP - + Length Longueur - + Length of the Token Longueur du jeton - - + + Time Derivation (Seconds) Dérivation de temps (secondes) - + + + Period (Seconds) + + + + Next Counter Value Prochaine valeur du compteur - + Next Value of the Counter Prochaine valeur du compteur diff --git a/translations/harbour-sailotp-hu.ts b/translations/harbour-sailotp-hu.ts index 8bc9227..c187eff 100644 --- a/translations/harbour-sailotp-hu.ts +++ b/translations/harbour-sailotp-hu.ts @@ -46,10 +46,20 @@ Icon + Ikon + + + + Customizable Time Period - + + SailJail Permissions + + + + SailOTP uses the following third party libs: A SailOTP a következő harmadik féltől származó könyvtárakat használja: @@ -64,7 +74,7 @@ (RFC 6238/4226 kompatibilis) - + Translators: Fordítók: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code QR-kód megjelenítése - - + + Can't create QR-Code from incomplete settings! Nem hozható létre QR-kód hiányos beállításokból! - + Add Hozzáadás - + Save Mentés - + Type Típus - + Time-based (TOTP) Idő-alapú (TOTP) - + Counter-based (HOTP) Számláló-alapú (HOTP) - + Steam Guard Steam Guard - + Title Cím - + Title for the OTP Az OTP címe - + Secret (at least 16 characters) Jelszó (legalább 16 karakter) - + Secret OTP Key Titkos OTP-kulcs - + Length Hosszúság - + Length of the Token A token hosszúsága - - + + Time Derivation (Seconds) Időlevezetés (Másodperc) - + + + Period (Seconds) + + + + Next Counter Value Következő számlálóérték - + Next Value of the Counter A számláló következő értéke diff --git a/translations/harbour-sailotp-it.ts b/translations/harbour-sailotp-it.ts index 26267e2..f3f4a4a 100644 --- a/translations/harbour-sailotp-it.ts +++ b/translations/harbour-sailotp-it.ts @@ -54,7 +54,17 @@ - + + Customizable Time Period + + + + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP utilizza le seguenti librerie di terzi: @@ -64,7 +74,7 @@ Collaboratori: - + Translators: Traduttori: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code Mostra Codice QR - - + + Can't create QR-Code from incomplete settings! Impossibile creare il codice QR da impostizioni incomplete! - + Add Aggiungi - + Save Salva - + 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) - + + + Period (Seconds) + + + + Next Counter Value Valore Prossimo Contatore - + Next Value of the Counter Prossimo Valore del Contatore diff --git a/translations/harbour-sailotp-nl.ts b/translations/harbour-sailotp-nl.ts index 1d08c82..643f0a5 100644 --- a/translations/harbour-sailotp-nl.ts +++ b/translations/harbour-sailotp-nl.ts @@ -6,55 +6,60 @@ A simple Sailfish OTP generator - + Een simpele Sailfish OTP generator (RFC 6238/4226 compatible) - + (RFC 6238/4226 compatible) Online Manual - + Online Handleiding Source Code & Issue Tracker - - - - - Copyright - + Broncode & Foutentracker License - + Licentie BSD (3-clause) - + BSD (3-voudig) SteamGuard support - + SteamGuard ondersteuning Search - + Zoeken Icon + Icoon + + + + Customizable Time Period - + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP gebruikt de volgende bibliotheken van derden: @@ -64,7 +69,12 @@ Bijdragers: - + + Copyright + + + + Translators: Vertalers: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code QR-code weergeven - - + + Can't create QR-Code from incomplete settings! Kan geen QR-code maken van onvolledige instellingen! - + Add Toevoegen - + Save Opslaan - + Type Type - + Time-based (TOTP) Tijd-gebaseerd (TOTP) - + Counter-based (HOTP) Teller-gebaseerd (HOTP) - + Steam Guard Steam Guard - + Title Titel - + Title for the OTP Titel voor de OTP - + Secret (at least 16 characters) Geheim (minimaal 16 karakters) - + Secret OTP Key Geheime OTP sleutel - + Length Lengte - + Length of the Token Lengte van de token - - + + Time Derivation (Seconds) Tijdafleiding (seconden) - + + + Period (Seconds) + + + + Next Counter Value Volgende tellerwaarde - + Next Value of the Counter Volgende waarde van de teller @@ -314,7 +330,7 @@ Search - + Zoeken diff --git a/translations/harbour-sailotp-pt_BR.ts b/translations/harbour-sailotp-pt_BR.ts index 42eadfc..3070f68 100644 --- a/translations/harbour-sailotp-pt_BR.ts +++ b/translations/harbour-sailotp-pt_BR.ts @@ -51,10 +51,20 @@ Icon - Ícone + - + + Customizable Time Period + + + + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP usa as seguintes bibliotecas de terceiros @@ -64,7 +74,7 @@ Contribuíram: - + Translators: Tradutores: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code Mostrar Código QR - - + + Can't create QR-Code from incomplete settings! Não foi possível criar Código QR porque a configuração está incompleta! - + Add Adicionar - + Save Salvar - + Type Tipo - + Time-based (TOTP) Baseado em tempo (TOTP) - + Counter-based (HOTP) Baseado em contador (HOTP) - + Steam Guard Steam Guard - + Title Título - + Title for the OTP Título para o OTP - + Secret (at least 16 characters) Segredo (mínimo 16 caracteres) - + Secret OTP Key Chave secreta OTP - + Length Tamanho - + Length of the Token Tamanho to Token - - + + Time Derivation (Seconds) Derivação do tempo (segundos) - + + + Period (Seconds) + + + + Next Counter Value Próximo valor do contador - + Next Value of the Counter Próximo valor do contador diff --git a/translations/harbour-sailotp-ru.ts b/translations/harbour-sailotp-ru.ts index a62e740..fba272d 100644 --- a/translations/harbour-sailotp-ru.ts +++ b/translations/harbour-sailotp-ru.ts @@ -54,7 +54,17 @@ - + + Customizable Time Period + + + + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP использует следующие сторонние библиотеки: @@ -64,7 +74,7 @@ Участники: - + Translators: Переводчики: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code Показать QR-код - - + + Can't create QR-Code from incomplete settings! Невозможно создать QR-код из-за неполных настроек! - + Add Добавить - + Save Сохранить - + Type Тип - + Time-based (TOTP) На основе времени (TOTP) - + Counter-based (HOTP) На основе счетчика (HOTP) - + Steam Guard Steam Guard - + Title Заголовок - + Title for the OTP Заголовок для OTP - + Secret (at least 16 characters) Секрет (минимум 16 символов) - + Secret OTP Key Секретный ключ OTP - + Length Длина - + Length of the Token Длина токена - - + + Time Derivation (Seconds) Интервал расхождения (секунд) - + + + Period (Seconds) + + + + Next Counter Value Следующее значение счетчика - + Next Value of the Counter Следующее значение счетчика diff --git a/translations/harbour-sailotp-sv.ts b/translations/harbour-sailotp-sv.ts index 259360d..3237066 100644 --- a/translations/harbour-sailotp-sv.ts +++ b/translations/harbour-sailotp-sv.ts @@ -6,65 +6,75 @@ A simple Sailfish OTP generator - + En enkel OTP-generator för Sailfish (RFC 6238/4226 compatible) - + (RFC 6238-/4226-kompatibel) Online Manual - + Online-manual Source Code & Issue Tracker - + Källkod och ärendehanterare Copyright - + Copyright License - + Licens BSD (3-clause) - + BSD (3-clause) SteamGuard support - + SteamGuard-stöd Search - Sök + Sök Icon + Ikon + + + + Customizable Time Period - + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP använder följande tredjeparts bibliotek: Contributors: - Medarbetare: + Bidragsgivare: - + Translators: Översättare: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code Visa QR-kod - - + + Can't create QR-Code from incomplete settings! Kan inte skapa QR-kod från ofullständiga inställningar! - + Add Lägg till - + Save Spara - + Type Typ - + Time-based (TOTP) Tidsbaserad (TOTP) - + Counter-based (HOTP) Räknarbaserad (HOTP) - + Steam Guard Steam Guard - + Title Namn - + Title for the OTP Namn på OTP:n - + Secret (at least 16 characters) Hemlighet (Minst 16 tecken) - + Secret OTP Key Hemlig OTP-nyckel - + Length Längd - + Length of the Token Längd på token - - + + Time Derivation (Seconds) Tidsavvikelse (sekunder) - + + + Period (Seconds) + + + + Next Counter Value Nästa räknarvärde - + Next Value of the Counter Nästa värde på räknaren diff --git a/translations/harbour-sailotp-zh_CN.ts b/translations/harbour-sailotp-zh_CN.ts index 6893a3d..2ec7937 100644 --- a/translations/harbour-sailotp-zh_CN.ts +++ b/translations/harbour-sailotp-zh_CN.ts @@ -54,7 +54,17 @@ - + + Customizable Time Period + + + + + SailJail Permissions + + + + SailOTP uses the following third party libs: SailOTP使用下面的第三方库: @@ -64,7 +74,7 @@ 贡献者: - + Translators: 翻译: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code 显示二维码 - - + + Can't create QR-Code from incomplete settings! 不能从未完成的设置中创建二维码 - + Add 添加 - + Save 保存 - + Type 类型 - + Time-based (TOTP) 基于时间(TOTP) - + Counter-based (HOTP) 基于计数器(HOTP) - + Steam Guard 时间流守卫 - + Title 标题 - + Title for the OTP OTP的标题 - + Secret (at least 16 characters) 密码(至少16个字符) - + Secret OTP Key OTP密钥 - + Length 长度 - + Length of the Token 令牌的长度 - - + + Time Derivation (Seconds) 时间推导(秒) - + + + Period (Seconds) + + + + Next Counter Value 下一个计数器的值 - + Next Value of the Counter 下一个计数器的值 diff --git a/translations/harbour-sailotp.ts b/translations/harbour-sailotp.ts index 983dec6..fa7dc66 100644 --- a/translations/harbour-sailotp.ts +++ b/translations/harbour-sailotp.ts @@ -49,7 +49,17 @@ Icon - + + Customizable Time Period + + + + + SailJail Permissions + + + + SailOTP uses the following third party libs: @@ -64,7 +74,7 @@ - + Translators: Translators: @@ -72,89 +82,95 @@ AddOTP - + Show QR-Code - - + + Can't create QR-Code from incomplete settings! - + Add - + Save - + Type - + Time-based (TOTP) - + Counter-based (HOTP) - + Steam Guard - + Title - + Title for the OTP - + Secret (at least 16 characters) - + Secret OTP Key - + Length - + Length of the Token - - + + Time Derivation (Seconds) - + + + Period (Seconds) + + + + Next Counter Value - + Next Value of the Counter