diff --git a/.gitignore b/.gitignore index dbab0b9..88f42f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # User Specific Project Files *.pro.user *.pro.user.* +*.autosave rpm/harbour-sailotp.spec rpm/harbour-sailotp.spec.* translations/*.qm diff --git a/qml/harbour-sailotp.qml b/qml/harbour-sailotp.qml index 8c627ed..74d2173 100644 --- a/qml/harbour-sailotp.qml +++ b/qml/harbour-sailotp.qml @@ -60,6 +60,7 @@ ApplicationWindow path: "/apps/harbour-sailotp" property bool showQrDefaultAction: false + property bool hideTokens: false } // Add an entry to the list diff --git a/qml/pages/AddOTP.qml b/qml/pages/AddOTP.qml index 28ce97c..69f124e 100644 --- a/qml/pages/AddOTP.qml +++ b/qml/pages/AddOTP.qml @@ -71,7 +71,19 @@ Dialog { if (((paramType == "TOTP" || paramType == "TOTP_STEAM") && (otpLabel.text == "" || otpSecret.text == "")) || (paramType == "HOTP" && (otpLabel.text == "" || otpSecret.text == "" || otpCounter.text <= 0))) { notify.show(qsTr("Can't create QR-Code from incomplete settings!"), 4000); } else { - pageStack.push(Qt.resolvedUrl("QRPage.qml"), {paramLabel: otpLabel.text, paramKey: otpSecret.text, paramType: paramType, paramCounter: otpCounter.text, paramLen: otpLen.text}); + var otpurl = ""; + if (paramType == "TOTP") { + if (otpLabel.text != "" && otpSecret.text != "") + otpurl = "otpauth://totp/"+otpLabel.text+"?secret="+otpSecret.text+"&digits="+otpLen.text; + } else if (paramType == "HOTP") { + if (paramLabel != "" && paramKey != "" && paramCounter > 0) + otpurl = "otpauth://hotp/"+otpLabel.text+"?secret="+otpSecret.text+"&counter="+otpCounter.text+"&digits="+otpLen.text; + } + if (otpurl != "") { + pageStack.push(Qt.resolvedUrl("QRPage.qml"), {paramQrsource: otpurl, paramLabel: otpLabel.text, paramQRId = -1}); + } else { + notify.show(qsTr("Can't create QR-Code from incomplete settings!"), 4000); + } } } } diff --git a/qml/pages/MainView.qml b/qml/pages/MainView.qml index 59f9636..e496740 100644 --- a/qml/pages/MainView.qml +++ b/qml/pages/MainView.qml @@ -66,12 +66,12 @@ Page { var seconds = (curDate.getSeconds() + appWin.listModel.get(i).diff) % 30; // Only update on full 30 / 60 Seconds or if last run of the Functions is more than 2s in the past (e.g. app was in background) if (appWin.listModel.get(i).otp === "------" || seconds == 0 || (curDate.getTime() - lastUpdated > 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.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 + appWin.listModel.setProperty(i, "otp", appWin.coverOTP); } - } 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 - appWin.listModel.setProperty(i, "otp", appWin.coverOTP); } } @@ -97,7 +97,7 @@ Page { } MenuItem { text: qsTr("Settings") - visible: false + visible: true onClicked: pageStack.push(Qt.resolvedUrl("Settings.qml")) } MenuItem { @@ -170,8 +170,14 @@ Page { } onClicked: { - Clipboard.text = otp - notify.show(qsTr("Token for ") + title + qsTr(" copied to clipboard"), 3000); + if (settings.hideTokens) { + otpValue.visible = !otpValue.visible + } else if (settings.showQrDefaultAction) { + pageStack.push(Qt.resolvedUrl("QRPage.qml"), {paramQrsource: otp, paramLabel: title, paramQRId: index}); + } else { + Clipboard.text = otp + notify.show(qsTr("Token for ") + title + qsTr(" copied to clipboard"), 3000); + } } ListView.onRemove: animateRemoval() @@ -218,6 +224,7 @@ Page { text: model.otp color: Theme.highlightColor font.pixelSize: Theme.fontSizeLarge + visible: !settings.hideTokens anchors.horizontalCenter: parent.horizontalCenter } } @@ -238,6 +245,19 @@ Page { Component { id: otpContextMenu ContextMenu { + MenuItem { + text: qsTr("Copy to Clipboard") + visible: settings.hideTokens || settings.showQrDefaultAction + onClicked: { + Clipboard.text = otp + notify.show(qsTr("Token for ") + title + qsTr(" copied to clipboard"), 3000); + } + } + MenuItem { + text: qsTr("Show Token as QR-Code") + visible: !settings.showQrDefaultAction + onClicked: pageStack.push(Qt.resolvedUrl("QRPage.qml"), {paramQrsource: otp, paramLabel: title, paramQRId: index}); + } MenuItem { text: qsTr("Move up") visible: index > 0 ? true : false; diff --git a/qml/pages/QRPage.qml b/qml/pages/QRPage.qml index fe7ac07..a8ee473 100644 --- a/qml/pages/QRPage.qml +++ b/qml/pages/QRPage.qml @@ -35,11 +35,19 @@ Page { allowedOrientations: Orientation.All - property string paramType: "" + property int paramQRId: -1; property string paramLabel: "" - property string paramKey: "" - property int paramLen: 6 - property int paramCounter: 0 + property string paramQrsource: "" + + Timer { + interval: 1000 + // Timer only runs when app is acitive and we have entries + running: Qt.application.active && appWin.listModel.count && paramQRId >= 0 + repeat: true + onTriggered: { + qrImage.source = "image://qqrencoder/"+appWin.listModel.get(paramQRId).otp; + } + } Label { id: qrLabel @@ -54,24 +62,16 @@ Page { id: qrImage anchors.horizontalCenter: parent.horizontalCenter y: 200 + width: Theme.buttonWidthLarge + height: Theme.buttonWidthLarge cache: false } Component.onCompleted: { - - var otpurl = ""; - if (paramType == "TOTP") { - if (paramLabel != "" && paramKey != "") - otpurl = "otpauth://totp/"+paramLabel+"?secret="+paramKey+"&digits="+paramLen; - - } else if (paramType == "HOTP") { - if (paramLabel != "" && paramKey != "" && paramCounter > 0) - otpurl = "otpauth://hotp/"+paramLabel+"?secret="+paramKey+"&counter="+paramCounter+"&digits="+paramLen; - } - if (otpurl != "") { - qrImage.source = "image://qqrencoder/"+otpurl; + if (paramQrsource !== "") { + qrImage.source = "image://qqrencoder/"+paramQrsource; } else { - notify.show(qsTr("Can't create QR-Code from incomplete settings!"), 4000); + notify.show(qsTr("Can't create QR-Code from an empty String"), 4000); } } } diff --git a/qml/pages/ScanOTP.qml b/qml/pages/ScanOTP.qml index 81b5cc2..fc42aa8 100644 --- a/qml/pages/ScanOTP.qml +++ b/qml/pages/ScanOTP.qml @@ -77,12 +77,7 @@ Page { flash.mode: Camera.FlashOff captureMode: Camera.CaptureStillImage focus.focusMode: Camera.FocusContinuous - - imageCapture { - onImageSaved: { - decoder.decodeImageFromFile(XDG_CACHE_DIR + "/qrscan.jpg"); - } - } + imageCapture.onImageSaved: { decoder.decodeImageFromFile(path); } } QZXing { @@ -92,17 +87,17 @@ Page { var ret = URL.decode(tag); var len = 6 scanning = false - if (ret && ret.type != "" && ret.title != "" && ret.secret != "" && (ret.counter != "" || ret.type == "TOTP")) { - if (ret.digits != "") { + if (ret && ret.type !== "" && ret.title !== "" && ret.secret !== "" && (ret.counter !== "" || ret.type === "TOTP")) { + if (ret.digits !== "") { len = ret.digits } - pageStack.replace(Qt.resolvedUrl("AddOTP.qml"), {parentPage: parentPage, paramLabel: ret.title, paramKey: ret.secret, paramType: ret.type, paramCounter: ret.counter, paramLen: len, paramNew: true}) + pageStack.replace(Qt.resolvedUrl("AddOTP.qml"), {parentPage: parentPage, paramLabel: ret.title, paramKey: ret.secret.toUpperCase(), paramType: ret.type, paramCounter: ret.counter, paramLen: len, paramNew: true}) } else { notify.show(qsTr("No valid Token data found."), 3000); } } - onDecodingFinished: if (succeeded==false && scanning) scanTimer.start(); + onDecodingFinished: { if (succeeded==false && scanning) scanTimer.start(); } } FileIO { diff --git a/qml/pages/Settings.qml b/qml/pages/Settings.qml index 52daeec..f742c44 100644 --- a/qml/pages/Settings.qml +++ b/qml/pages/Settings.qml @@ -51,12 +51,31 @@ Page { SectionHeader { text: qsTr("Behaviour") } TextSwitch { - id: showQrDefault + id: showQrDefaultAction checked: settings.showQrDefaultAction - text: qsTr("Show Token as QRCode on Tap") - onClicked: settings.showQrDefaultAction = !settings.showQrDefaultAction + text: qsTr("Show Token as QR on Tap") + onClicked: { + settings.showQrDefaultAction = !settings.showQrDefaultAction; + console.log(settings.showQrDefaultAction); + if (settings.showQrDefaultAction) { + settings.hideTokens = false; + hideTokens.checked = settings.hideTokens + } + } + } + TextSwitch { + id: hideTokens + checked: settings.hideTokens + text: qsTr("Hide Tokens and Reveal on Tap") + onClicked: { + settings.hideTokens = !settings.hideTokens; + console.log(settings.hideTokens); + if (settings.hideTokens) { + settings.showQrDefaultAction = false; + showQrDefaultAction.checked = settings.showQrDefaultAction + } + } } - } VerticalScrollDecorator { } } diff --git a/translations/harbour-sailotp-de.ts b/translations/harbour-sailotp-de.ts index 4e18625..c17e62e 100644 --- a/translations/harbour-sailotp-de.ts +++ b/translations/harbour-sailotp-de.ts @@ -38,95 +38,6 @@ Lizenz: BSD (3-Klausel) Übersetzer: - - 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! - - - - Save - Speichern - - - - Add - Hinzufügen - - - - 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) - - - - Next Counter Value - Nächster Zählerwert - - - - Next Value of the Counter - Nächster Wert für den Zähler - - ExportPage @@ -252,75 +163,87 @@ Lizenz: BSD (3-Klausel) About - Über + Settings - Einstellungen + 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 + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - Nach oben + - + Move down - Nach unten + - + Edit - Bearbeiten + - + Delete - Löschen + QRPage - Can't create QR-Code from incomplete settings! - Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden! + Can't create QR-Code from an empty String + @@ -346,12 +269,12 @@ Lizenz: BSD (3-Klausel) scanne... - + No valid Token data found. Kein gültiges Token gefunden. - + 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. @@ -361,17 +284,22 @@ Lizenz: BSD (3-Klausel) Settings - Einstellungen + Einstellungen Behaviour - Verhalten + - Show Token as QRCode on Tap - Token bei antippen als QR-Code zeigen + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp-es.ts b/translations/harbour-sailotp-es.ts index 4693c0b..984194c 100644 --- a/translations/harbour-sailotp-es.ts +++ b/translations/harbour-sailotp-es.ts @@ -38,95 +38,6 @@ Licencia: BSD (de 3 cláusulas) Traductores: - - 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! - - - - Save - Guardar - - - - Add - Añadir - - - - 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) - - - - Next Counter Value - Siguiente Contador - - - - Next Value of the Counter - Siguiente valor del contador - - ExportPage @@ -252,75 +163,87 @@ Licencia: BSD (de 3 cláusulas) About - Acerca de + Settings - Configuración + 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 + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - Ascender + - + Move down - Descender + - + Edit - Editar + - + Delete - Borrar + QRPage - Can't create QR-Code from incomplete settings! - ¡No se puede crear el código QR a partir de una configuración incompleta! + Can't create QR-Code from an empty String + @@ -346,12 +269,12 @@ Licencia: BSD (de 3 cláusulas) Escaneando... - + No valid Token data found. No se han encontrado datos válidos - + Tap the picture to start / stop scanning. Pull down to add Token manually. Toque la imagen para comenzar/parar el escaneo. Tire hacia abajo para una configuración manual. @@ -361,7 +284,7 @@ Licencia: BSD (de 3 cláusulas) Settings - Configuración + Configuración @@ -370,8 +293,13 @@ Licencia: BSD (de 3 cláusulas) - Show Token as QRCode on Tap - Mostrar el token como código QR al tocar + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp-fi.ts b/translations/harbour-sailotp-fi.ts index 151b61e..51460d8 100644 --- a/translations/harbour-sailotp-fi.ts +++ b/translations/harbour-sailotp-fi.ts @@ -38,95 +38,6 @@ Lisenssi: BSD (3-clause) Kääntäjät: - - AddOTP - - - Show QR-Code - Näytä QR-koodi - - - - Can't create QR-Code from incomplete settings! - QR-koodin luonti epäonnistui puutteellisten asetuksien takia! - - - - Save - Tallenna - - - - Add - Lisää - - - - Type - Tyyppi - - - - Time-based (TOTP) - Aikapohjainen (TOTP) - - - - Counter-based (HOTP) - Laskentapohjainen (HOTP) - - - - Steam Guard - Steam Guard - - - - Title - Nimi - - - - Title for the OTP - OTP:n nimi - - - - Secret (at least 16 characters) - Salaisuus (vähintään 16 merkkiä) - - - - Secret OTP Key - Salainen OTP-avain - - - - Length - Pituus - - - - Length of the Token - Tunnuksen pituus - - - - - Time Derivation (Seconds) - Aikapoikkeama (sekunneissa) - - - - Next Counter Value - Seuraava laskenta-arvo - - - - Next Value of the Counter - Laskurin seuraava arvo - - ExportPage @@ -253,76 +164,87 @@ Lisenssi: BSD (3-clause) About - Tietoja + Settings - Translated using Google Translate - Asetukset + 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 + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - Siirrä ylös + - + Move down - Siirrä alas + - + Edit - Muokkaa + - + Delete - Poista + QRPage - Can't create QR-Code from incomplete settings! - QR-koodin luonti ei onnistu puutteellisten asetusten takia! + Can't create QR-Code from an empty String + @@ -348,12 +270,12 @@ Lisenssi: BSD (3-clause) Skannataan... - + No valid Token data found. Voimassa olevaa tunnustietoa ei löytynyt. - + Tap the picture to start / stop scanning. Pull down to add Token manually. Käynnistä / lopeta skannaus painamalla kuvaa. Vedä alaspäin lisääksesi tunnuksen käsin. @@ -363,19 +285,22 @@ Lisenssi: BSD (3-clause) Settings - Asetukset + Asetukset Behaviour - Translated using Google Translate - Käytös + - Show Token as QRCode on Tap - Translated using Google Translate - Kosketa tokenä QR-koodina + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp-fr.ts b/translations/harbour-sailotp-fr.ts index 2212fee..078238a 100644 --- a/translations/harbour-sailotp-fr.ts +++ b/translations/harbour-sailotp-fr.ts @@ -37,95 +37,6 @@ Licence : BSD (3 clauses) Traducteurs : - - 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) - - - - Next Counter Value - Prochaine valeur du compteur - - - - Next Value of the Counter - Prochaine valeur du compteur - - ExportPage @@ -252,76 +163,87 @@ Licence : BSD (3 clauses) About - À propos + Settings - Translated using Google Translate - Paramètres + 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 + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - Déplacer vers le haut + - + Move down - Déplacer vers le bas + - + Edit - Modifier + - + Delete - Supprimer + QRPage - Can't create QR-Code from incomplete settings! - Impossible de créer un code QR avec des paramètres incomplets ! + Can't create QR-Code from an empty String + @@ -347,12 +269,12 @@ Licence : BSD (3 clauses) Balayer un code - + No valid Token data found. Pas d'information valide trouvée. - + Tap the picture to start / stop scanning. Pull down to add Token manually. Appuyez sur l'image pour démarrer / arréter le balayage. Glissez vers le bas pour entrer les paramètres manuellement. @@ -362,19 +284,22 @@ Licence : BSD (3 clauses) Settings - Paramètres + Paramètres Behaviour - Translated using Google Translate - Comportement + - Show Token as QRCode on Tap - Translated using Google Translate - Touchez le jeton comme un code QR + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp-it.ts b/translations/harbour-sailotp-it.ts index 07f0973..2a34744 100644 --- a/translations/harbour-sailotp-it.ts +++ b/translations/harbour-sailotp-it.ts @@ -38,95 +38,6 @@ Licenza: BSD (3-clause) 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 @@ -252,75 +163,87 @@ Licenza: BSD (3-clause) About - Informazioni + Settings - Imopstazioni + 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 + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + 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! + Can't create QR-Code from an empty String + @@ -346,12 +269,12 @@ Licenza: BSD (3-clause) 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. @@ -361,17 +284,22 @@ Licenza: BSD (3-clause) Settings - Imopstazioni + Imopstazioni Behaviour - Comportamento + - Show Token as QRCode on Tap - Mostra il Token come Codice QR al Tocco + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp-pt_BR.ts b/translations/harbour-sailotp-pt_BR.ts index b13d1dd..46d5d67 100644 --- a/translations/harbour-sailotp-pt_BR.ts +++ b/translations/harbour-sailotp-pt_BR.ts @@ -37,95 +37,6 @@ Licença: BSD (3-clause) Tradutores: - - 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! - - - - Save - Salvar - - - - Add - Adicionar - - - - 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 de 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) - - - - Next Counter Value - Próximo valor do contador - - - - Next Value of the Counter - Próximo valor do contador - - ExportPage @@ -251,75 +162,87 @@ Licença: BSD (3-clause) About - Sobre + Settings - Configurações + Configurações Export / Import - Exportar e importar + Add Token - Adicionar Token + Nothing here - Nada aqui + Pull down to add a OTP - Puxe para baixo para adicionar um OTP + Deleting - Apagando + - + + Token for - Token para + - + + copied to clipboard - copiado para a área de transferência + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - Mover para cima + - + Move down - Mover para baixo + - + Edit - Editar + - + Delete - Apagar + QRPage - Can't create QR-Code from incomplete settings! - Não foi possível criar Código QR porque a configuração está incompleta! + Can't create QR-Code from an empty String + @@ -345,12 +268,12 @@ Licença: BSD (3-clause) Escaneando... - + No valid Token data found. Não foi possível encontrar Token válido - + Tap the picture to start / stop scanning. Pull down to add Token manually. Toque na imagem para iniciar ou parar o escaneador. Puxe para baixo para adicionar Token manualmente. @@ -360,17 +283,22 @@ Licença: BSD (3-clause) Settings - Configurações + Configurações Behaviour - Comportamento + - Show Token as QRCode on Tap - Mostrar Token como Código QR ao tocar + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp-ru.ts b/translations/harbour-sailotp-ru.ts index 53dedbb..f7fc938 100644 --- a/translations/harbour-sailotp-ru.ts +++ b/translations/harbour-sailotp-ru.ts @@ -38,95 +38,6 @@ License: BSD (3-clause) Переводчики: - - AddOTP - - - Show QR-Code - Показать QR-код - - - - Can't create QR-Code from incomplete settings! - Невозможно создать QR-код из-за неполных настроек! - - - - Save - Сохранить - - - - Add - Добавить - - - - 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) - Интервал расхождения (секунд) - - - - Next Counter Value - Следующее значение счетчика - - - - Next Value of the Counter - Следующее значение счетчика - - ExportPage @@ -253,76 +164,87 @@ License: BSD (3-clause) About - О приложении + Settings - Translated using Google Translate - настройки + настройки Export / Import - Экспорт / импорт + Add Token - Добавить токен + Nothing here - Ничего нету + Pull down to add a OTP - Потяните вниз чтобы добавить OTP + Deleting - Удаление + - + + Token for - Токен для + - + + copied to clipboard - скопирован в буфер обмена + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - Передвинуть вверх + - + Move down - Передвинуть вниз + - + Edit - Редактировать + - + Delete - Удалить + QRPage - Can't create QR-Code from incomplete settings! - Не удалось создать QR-код из-за неполных настроек! + Can't create QR-Code from an empty String + @@ -348,12 +270,12 @@ License: BSD (3-clause) Сканирование... - + No valid Token data found. Не найдено корректных данных для токена. - + Tap the picture to start / stop scanning. Pull down to add Token manually. Нажмите на изображение чтобы начать / остановить сканирование. Потяните вниз чтобы добавить токен вручную. @@ -363,19 +285,22 @@ License: BSD (3-clause) Settings - настройки + настройки Behaviour - Translated using Google Translate - поведение + - Show Token as QRCode on Tap - Translated using Google Translate - Сенсорный токен как QR-код + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp-sv.ts b/translations/harbour-sailotp-sv.ts index f7a883c..e2e52c2 100644 --- a/translations/harbour-sailotp-sv.ts +++ b/translations/harbour-sailotp-sv.ts @@ -38,95 +38,6 @@ Licens: BSD (3-clause) Översättare: - - 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! - - - - Save - Spara - - - - Add - Lägg till - - - - 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ängden av token - - - - - Time Derivation (Seconds) - Tidsavvikelsen (sekunder) - - - - Next Counter Value - Nästa räknarvärde - - - - Next Value of the Counter - Nästa värde på räknaren - - ExportPage @@ -253,76 +164,87 @@ Licens: BSD (3-clause) About - Om + Settings - Translated using Google Translate - Inställningar + 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 + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - Flytta upp + - + Move down - Flytta ner + - + Edit - Redigera + - + Delete - Ta bort + QRPage - Can't create QR-Code from incomplete settings! - Kan inte skapa QR-kod från ofullständiga inställningar! + Can't create QR-Code from an empty String + @@ -348,12 +270,12 @@ Licens: BSD (3-clause) Skannar... - + No valid Token data found. Ingen giltig Token-data hittades. - + Tap the picture to start / stop scanning. Pull down to add Token manually. Tryck på bilden för att starta / stoppa skanning. Dra neråt för att lägga till Token manuellt. @@ -363,19 +285,22 @@ Licens: BSD (3-clause) Settings - Inställningar + Inställningar Behaviour - Translated using Google Translate - Beteende + - Show Token as QRCode on Tap - Translated using Google Translate - Peka token som en QR-kod + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp-zh_CN.ts b/translations/harbour-sailotp-zh_CN.ts index 1424470..d6a77eb 100644 --- a/translations/harbour-sailotp-zh_CN.ts +++ b/translations/harbour-sailotp-zh_CN.ts @@ -37,95 +37,6 @@ License: BSD (3-clause) 翻译: - - AddOTP - - - Show QR-Code - 显示二维码 - - - - Can't create QR-Code from incomplete settings! - 不能从未完成的设置中创建二维码 - - - - Save - 保存 - - - - Add - 添加 - - - - 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) - 时间推导(秒) - - - - Next Counter Value - 下一个计数器的值 - - - - Next Value of the Counter - 下一个计数器的值 - - ExportPage @@ -251,75 +162,87 @@ License: BSD (3-clause) About - 关于 + Settings - 设置 + 设置 Export / Import - 导出/导入 + Add Token - 添加令牌 + Nothing here - 无内容 + Pull down to add a OTP - 下拉添加一个OTP + Deleting - 删除中 + - + + Token for - 令牌 + - + + copied to clipboard - 已复制到剪切板 + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - 向上 + - + Move down - 向下 + - + Edit - 编辑 + - + Delete - 删除 + QRPage - Can't create QR-Code from incomplete settings! - 不能重未完成的设置中创建二维码 + Can't create QR-Code from an empty String + @@ -345,12 +268,12 @@ License: BSD (3-clause) 扫描中... - + No valid Token data found. 没有发现有效的令牌数据。 - + Tap the picture to start / stop scanning. Pull down to add Token manually. 点击照片开始/结束扫描,下拉手动添加 @@ -360,17 +283,22 @@ License: BSD (3-clause) Settings - 设置 + 设置 Behaviour - 行为 + - Show Token as QRCode on Tap - 点击后显示令牌为二维码 + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap + diff --git a/translations/harbour-sailotp.ts b/translations/harbour-sailotp.ts index e748339..5029351 100644 --- a/translations/harbour-sailotp.ts +++ b/translations/harbour-sailotp.ts @@ -36,95 +36,6 @@ License: BSD (3-clause) Translators: - - AddOTP - - - Show QR-Code - Show QR-Code - - - - Can't create QR-Code from incomplete settings! - Can't create QR-Code from incomplete settings! - - - - Save - - - - - Add - - - - - Type - - - - - Time-based (TOTP) - - - - - Counter-based (HOTP) - - - - - Steam Guard - Steam Guard - - - - Title - - - - - Title for the OTP - - - - - Secret (at least 16 characters) - - - - - Secret OTP Key - - - - - Length - Length - - - - Length of the Token - Length of the Token - - - - - Time Derivation (Seconds) - Time Derivation (Seconds) - - - - Next Counter Value - - - - - Next Value of the Counter - - - ExportPage @@ -250,75 +161,87 @@ License: BSD (3-clause) About - + Settings - + Export / Import - + Add Token - + Nothing here - + Pull down to add a OTP - + Deleting - + - + + Token for - + - + + copied to clipboard - + - + + Copy to Clipboard + + + + + Show Token as QR-Code + + + + Move up - Move up + - + Move down - Move down + - + Edit - + - + Delete - + QRPage - Can't create QR-Code from incomplete settings! - Can't create QR-Code from incomplete settings! + Can't create QR-Code from an empty String + @@ -344,12 +267,12 @@ License: BSD (3-clause) - + No valid Token data found. - + Tap the picture to start / stop scanning. Pull down to add Token manually. @@ -359,17 +282,22 @@ License: BSD (3-clause) Settings - + Behaviour - + - Show Token as QRCode on Tap - + Show Token as QR on Tap + + + + + Hide Tokens and Reveal on Tap +