1
0
Fork 0
mirror of https://github.com/seiichiro0185/sailotp.git synced 2024-11-21 23:39:41 +00:00

Version 1.8.0

Added possibility to show a Token as QR-Code
Added possibility to hide Tokens by default and reveal on tap
Added Base32 input validation for secret
Fix progressbar placement for different screen sizes / ambiances
Fix About-Page styling for light ambiances
This commit is contained in:
seiichiro 2019-02-24 16:41:21 +01:00
parent 3bf8bae5f8
commit 0339d7dc2d
22 changed files with 1122 additions and 477 deletions

1
.gitignore vendored
View file

@ -1,6 +1,7 @@
# User Specific Project Files
*.pro.user
*.pro.user.*
*.autosave
rpm/harbour-sailotp.spec
rpm/harbour-sailotp.spec.*
translations/*.qm

View file

@ -29,7 +29,7 @@ DISTFILES += qml/harbour-sailotp.qml \
translations/*.ts \
harbour-sailotp.desktop
SAILFISHAPP_ICONS = 86x86 108x108 128x128
SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
CONFIG += sailfishapp_i18n
@ -38,6 +38,7 @@ TRANSLATIONS = translations/harbour-sailotp-de.ts \
translations/harbour-sailotp-fi.ts \
translations/harbour-sailotp-fr.ts \
translations/harbour-sailotp-it.ts \
translations/harbour-sailotp-pt_BR.ts \
translations/harbour-sailotp-ru.ts \
translations/harbour-sailotp-sv.ts \
translations/harbour-sailotp-zh_CN.ts

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -60,6 +60,7 @@ ApplicationWindow
path: "/apps/harbour-sailotp"
property bool showQrDefaultAction: false
property bool hideTokens: false
}
// Add an entry to the list

View file

@ -73,7 +73,7 @@ Page {
horizontalAlignment: TextEdit.Center
readOnly: true
text: qsTr("A Simple Sailfish OTP Generator\n(RFC 6238/4226 compatible)")
color: "white"
color: Theme.primaryColor
}
TextArea {
id: copyright
@ -82,7 +82,7 @@ Page {
horizontalAlignment: TextEdit.Center
readOnly: true
text: qsTr("Copyright: Stefan Brand\nLicense: BSD (3-clause)")
color: "white"
color: Theme.primaryColor
}
Button {
id: manual
@ -108,7 +108,7 @@ Page {
horizontalAlignment: TextEdit.Center
readOnly: true
text: "\n"+qsTr("SailOTP uses the following third party libs:")+"\n\nhttp://caligatio.github.io/jsSHA/\nhttps://code.google.com/archive/p/crypto-js/\nhttp://sourceforge.net/projects/qzxing/\nhttp://fukuchi.org/works/qrencode/"
color: "white"
color: Theme.primaryColor
}
TextArea {
@ -119,7 +119,7 @@ Page {
horizontalAlignment: TextEdit.Center
readOnly: true
text: qsTr("Contributors:")+"\n\nRobin Appelman: SteamGuard "+qsTr("Support")
color: "white"
color: Theme.primaryColor
}
TextArea {
@ -130,7 +130,7 @@ Page {
horizontalAlignment: TextEdit.Center
readOnly: true
text: qsTr("Translators:")+"\n\nChinese: BirdZhang\nFinnish: Johan Heikkilä\nFrench: Romain Tartière\nItalian: Tichy\nRussian: moorchegue\nSpanish: p4moedo\nSwedish: Åke Engelbrektson\nEnglish: Stefan Brand\nGerman: Stefan Brand"
color: "white"
color: Theme.primaryColor
}
}
VerticalScrollDecorator { }

View file

@ -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);
}
}
}
}
@ -115,6 +127,8 @@ Dialog {
text: paramKey != "" ? paramKey : ""
placeholderText: qsTr("Secret OTP Key")
focus: true
validator: RegExpValidator { regExp: /^(?:[A-Za-z2-7]{8})*(?:[A-Za-z2-7]{2}={6}|[A-Za-z2-7]{4}={4}|[A-Za-z2-7]{5}={3}|[A-Za-z2-7]{7}=)?$/ }
inputMethodHints: Qt.ImhNoPredictiveText
horizontalAlignment: TextInput.AlignLeft
EnterKey.enabled: text.length > 15
@ -168,7 +182,7 @@ Dialog {
}
// Check if we can Save
canAccept: otpLabel.text.length > 0 && otpSecret.text.length >= 16 && 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 != "") || paramType == "TOTP_STEAM" || otpCounter.text.length > 0) ? true : false
// Save if page is Left with Add
onDone: {

View file

@ -40,6 +40,7 @@ Page {
// This holds the time of the last update of the page as Unix Timestamp (in Milliseconds)
property double lastUpdated: 0
property double seconds_global: 0
// Reload the List of OTPs from storage
function refreshOTPList() {
@ -56,30 +57,35 @@ Page {
function refreshOTPValues() {
// get seconds from current Date
var curDate = new Date();
var seconds_global = curDate.getSeconds() % 30
seconds_global = curDate.getSeconds() % 30
// Iterate over all List entries
for (var i=0; i<appWin.listModel.count; i++) {
if (appWin.listModel.get(i).type == "TOTP" || appWin.listModel.get(i).type == "TOTP_STEAM" ) {
if (appWin.listModel.get(i).type === "TOTP" || appWin.listModel.get(i).type === "TOTP_STEAM" ) {
// Take derivation into account if set
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)
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);
appWin.listModel.setProperty(i, "otp", curOTP);
}
} else if (appWin.coverType == "HOTP" && (curDate.getTime() - lastUpdated > 2000) && appWin.listModel.get(i).fav == 1) {
} 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);
}
}
}
// Update the Progressbar
updateProgress.value = 29 - seconds_global
// Set lastUpdate property
lastUpdated = curDate.getTime();
}
// Reload OTP List on Return to the Page (to e.g. accomodate changed scd ettings)
onStatusChanged: {
if (status === PageStatus.Activating) {
refreshOTPList();
}
}
Timer {
interval: 500
// Timer only runs when app is acitive and we have entries
@ -98,7 +104,7 @@ Page {
}
MenuItem {
text: qsTr("Settings")
visible: false
visible: true
onClicked: pageStack.push(Qt.resolvedUrl("Settings.qml"))
}
MenuItem {
@ -111,25 +117,11 @@ Page {
}
}
ProgressBar {
id: updateProgress
width: parent.width
maximumValue: 29
anchors.top: parent.top
anchors.topMargin: Theme.itemSizeExtraSmall - Theme.paddingSmall
// Only show when there are enries
visible: appWin.listModel.count
}
SilicaListView {
id: otpList
header: PageHeader {
title: "SailOTP"
}
anchors.fill: parent
model: appWin.listModel
width: parent.width
@ -140,6 +132,30 @@ Page {
hintText: qsTr("Pull down to add a OTP")
}
header: Row {
height: Theme.itemSizeSmall
width: parent.width
ProgressBar {
id: updateProgress
anchors.top: parent.top
// Hack to get the Progress Bar in roughly the same spot on Light and Dark Ambiances
anchors.topMargin: Theme.colorScheme === 0 ? Theme.paddingLarge * 1.1 : Theme.paddingSmall * 0.6
height: Theme.itemSizeSmall
width: parent.width * 0.65
maximumValue: 29
value: 29 - seconds_global
// Only show when there are enries
visible: appWin.listModel.count
}
PageHeader {
id: header
anchors.top: parent.top
height: Theme.itemSizeSmall
width: parent.width * 0.35
title: "SailOTP"
}
}
delegate: ListItem {
id: otpListItem
menu: otpContextMenu
@ -163,9 +179,15 @@ Page {
}
onClicked: {
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()
Rectangle {
@ -211,6 +233,7 @@ Page {
text: model.otp
color: Theme.highlightColor
font.pixelSize: Theme.fontSizeLarge
visible: !settings.hideTokens
anchors.horizontalCenter: parent.horizontalCenter
}
}
@ -231,6 +254,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;

View file

@ -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);
}
}
}

View file

@ -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 {

View file

@ -51,12 +51,29 @@ 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;
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;
if (settings.hideTokens) {
settings.showQrDefaultAction = false;
showQrDefaultAction.checked = settings.showQrDefaultAction
}
}
}
}
VerticalScrollDecorator { }
}

View file

@ -1,3 +1,10 @@
* Sun Feb 24 2019 Stefan Brand <sailfish@seiichiro0185.org> 1.8.0-1
- Added possibility to show a Token as QR-Code
- Added possibility to hide Tokens by default and reveal on tap
- Added Base32 input validation for secret
- Fix progressbar placement for different screen sizes / ambiances
- Fix About-Page styling for light ambiances
* Sun Jun 17 2018 Stefan Brand <sailfish@seiichiro0185.org> 1.7.2-1
- Visual fixes for SFOS 2.2.0.29

View file

@ -1,6 +1,6 @@
Name: harbour-sailotp
Summary: SailOTP
Version: 1.7.2
Version: 1.8.0
Release: 1
Group: Security
URL: https://github.com/seiichiro0185/sailotp/

View file

@ -43,86 +43,87 @@ Lizenz: BSD (3-Klausel)</translation>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>QR-Code anzeigen</translation>
<translation>QR-Code Anzeigen</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Speichern</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation>Hinzufügen</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation>Speichern</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>Zeitbasiert (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>Zählerbasiert (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation>Titel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>Titel für das Token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>Schlüssel (mindestens 16 Zeichen)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>Geheimer Schlüssel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation>Länge</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation>Länge des Tokens</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation>Zeitabweichung (Sekunden)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation>Nächster Zählerwert</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation>Nächster Wert für den Zähler</translation>
</message>
@ -250,67 +251,79 @@ Lizenz: BSD (3-Klausel)</translation>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation>Über</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>Export / Import</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation>Token hinzufügen</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation>Hier ist nichts</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>Nach unten ziehen zum hinzufügen</translation>
<translation>Nach unten ziehen zum Hinzufügen</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation>Lösche</translation>
<translation>Lösche </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation>Token für </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation> kopiert</translation>
<translation> in die Zwischenablage kopiert</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation>In die Zwischenablage</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation>Als QR-Code Zeigen</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>Nach oben</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Nach unten</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation>Bearbeiten</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
@ -319,8 +332,8 @@ Lizenz: BSD (3-Klausel)</translation>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden!</translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translation>QR-Code kann nciht aus leerer Eingabe erzeugt werden</translation>
</message>
</context>
<context>
@ -346,12 +359,12 @@ Lizenz: BSD (3-Klausel)</translation>
<translation>scanne...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation>Kein gültiges Token gefunden.</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Vorschau antippen um den Scan zu starten / zu stoppen. Nach unten ziehen um manuell hinzu zu fügen.</translation>
</message>
@ -370,8 +383,13 @@ Lizenz: BSD (3-Klausel)</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation>Token bei antippen als QR-Code zeigen</translation>
<source>Show Token as QR on Tap</source>
<translation>Zeige QR-Code beim Antippen</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translation>Token erst durch Antippen zeigen</translation>
</message>
</context>
</TS>

View file

@ -47,82 +47,83 @@ Licencia: BSD (de 3 cláusulas)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>¡No se puede crear el código QR a partir de una configuración incompleta!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Guardar</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation>Añadir</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation>Guardar</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>Basado en tiempo (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>Basado en contador (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation>Título</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>Nombre para el OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>Cadena secreta (al menos 16 caracteres)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>Llave secreta OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation>Longitud</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation>Longitud del token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation>Derivación de tiempo (segundos)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation>Siguiente Contador</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation>Siguiente valor del contador</translation>
</message>
@ -250,67 +251,79 @@ Licencia: BSD (de 3 cláusulas)</translation>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation>Acerca de</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translation>Configuración</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>Exportar/Importar</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation>Añadir Token</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation>Nada aquí</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>Tire hacia abajo para añadir tokens OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation>Borrando</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation>Token para </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation> copiado al portapapeles</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation>Copiar al portapapeles</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation>Mostrar código QR</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>Ascender</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Descender</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation>Editar</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation>Borrar</translation>
</message>
@ -319,8 +332,9 @@ Licencia: BSD (de 3 cláusulas)</translation>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>¡No se puede crear el código QR a partir de una configuración incompleta!</translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>No se puede crear un código QR desde una cadena vacía</translation>
</message>
</context>
<context>
@ -346,12 +360,12 @@ Licencia: BSD (de 3 cláusulas)</translation>
<translation>Escaneando...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation>No se han encontrado datos válidos</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Toque la imagen para comenzar/parar el escaneo. Tire hacia abajo para una configuración manual.</translation>
</message>
@ -366,12 +380,19 @@ Licencia: BSD (de 3 cláusulas)</translation>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translation type="unfinished"></translation>
<translation>Comportamiento</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation>Mostrar el token como código QR al tocar</translation>
<source>Show Token as QR on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Mostrar token como QR en el tap</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Ocultar tokens y revelar en tap</translation>
</message>
</context>
</TS>

View file

@ -47,82 +47,83 @@ Lisenssi: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>QR-koodin luonti epäonnistui puutteellisten asetuksien takia!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Tallenna</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation>Lisää</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation>Tallenna</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation>Tyyppi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>Aikapohjainen (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>Laskentapohjainen (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation>Nimi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>OTP:n nimi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>Salaisuus (vähintään 16 merkkiä)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>Salainen OTP-avain</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation>Pituus</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation>Tunnuksen pituus</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation>Aikapoikkeama (sekunneissa)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation>Seuraava laskenta-arvo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation>Laskurin seuraava arvo</translation>
</message>
@ -251,68 +252,79 @@ Lisenssi: BSD (3-clause)</translation>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation>Tietoja</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Asetukset</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>Eksportoi / Importoi</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation>Lisää tunnus</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation>Tyhjä</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>Vedä alaspäin lisääksesi OTP:n</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation>Poistaa</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation>Tunnus </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation> kopioitu leikepöydälle</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation>Kopioi leikepöydälle</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation>Näytä QR-koodi</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>Siirrä ylös</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Siirrä alas</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation>Muokkaa</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation>Poista</translation>
</message>
@ -321,8 +333,8 @@ Lisenssi: BSD (3-clause)</translation>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>QR-koodin luonti ei onnistu puutteellisten asetusten takia!</translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translation>QR-koodia ei voi luoda tyhjällä merkkijonolla</translation>
</message>
</context>
<context>
@ -348,12 +360,12 @@ Lisenssi: BSD (3-clause)</translation>
<translation>Skannataan...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation>Voimassa olevaa tunnustietoa ei löytynyt.</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Käynnistä / lopeta skannaus painamalla kuvaa. Vedä alaspäin lisääksesi tunnuksen käsin.</translation>
</message>
@ -368,14 +380,19 @@ Lisenssi: BSD (3-clause)</translation>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Käytös</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Kosketa tokenä QR-koodina</translation>
<source>Show Token as QR on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Näytä tunnus QR-muodossa Napauta</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Piilota tokenit ja paljastaa koskettamalla</translation>
</message>
</context>
</TS>

View file

@ -46,82 +46,83 @@ Licence : BSD (3 clauses)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Impossible de créer un code QR avec des paramètres incomplets !</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation>Ajouter</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation>Enregistrer</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation>Type</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>Basé sur le temps (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>Basé sur un compteur (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation>Titre</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>Titre de l&apos;OTP</translation>
<translation>Titre de l&amp;apos;OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>Secret (au moins 16 caractètres)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>Clé secrète OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation>Longueur</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation>Longueur du jeton</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation>Dérivation de temps (secondes)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation>Prochaine valeur du compteur</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation>Prochaine valeur du compteur</translation>
</message>
@ -250,68 +251,79 @@ Licence : BSD (3 clauses)</translation>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation>À propos</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>Exporter / Importer</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation>Ajouter un OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation>Aucun mot de passe</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>Glissez vers le bas pour ajouter un OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation>Suppression</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation>OTP pour </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation> copié dans le presse-papier</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation>Copier dans le presse-papier</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation>Afficher le code QR</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>Déplacer vers le haut</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Déplacer vers le bas</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation>Modifier</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
@ -320,8 +332,9 @@ Licence : BSD (3 clauses)</translation>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Impossible de créer un code QR avec des paramètres incomplets !</translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Impossible de créer un code QR à partir d&apos;une chaîne vide</translation>
</message>
</context>
<context>
@ -347,12 +360,12 @@ Licence : BSD (3 clauses)</translation>
<translation>Balayer un code</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation>Pas d&apos;information valide trouvée.</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Appuyez sur l&apos;image pour démarrer / arréter le balayage. Glissez vers le bas pour entrer les paramètres manuellement.</translation>
</message>
@ -367,14 +380,20 @@ Licence : BSD (3 clauses)</translation>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translatorcomment>Google Translate</translatorcomment>
<translation>Comportement</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Touchez le jeton comme un code QR</translation>
<source>Show Token as QR on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Afficher le jeton sous forme de QR au toucher</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Masquer les jetons et révéler au robinet</translation>
</message>
</context>
</TS>

View file

@ -47,82 +47,83 @@ Licenza: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Impossibile creare il codice QR da impostizioni incomplete!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Salva</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation>Aggiungi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation>Salva</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>Basato sul tempo (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>Basato su contatore (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation>Titolo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>Titolo per la OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>Segreto (almeno 16 caratteri)</translation>
<translation>Segreto (almeno 16 caratteri</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>Chiave OTP segreta</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation>Lunghezza</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation>Lunghezza del Token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation>Derivazione Temporale (Secondi)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation>Valore Prossimo Contatore</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation>Prossimo Valore del Contatore</translation>
</message>
@ -250,67 +251,79 @@ Licenza: BSD (3-clause)</translation>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation>Informazioni</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translation>Imopstazioni</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>Esporta / Importa</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation>Aggiungi Token</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation>Qua non c&apos;è nulla</translation>
<translation>Qua non c&amp;apos;è nulla</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>Trascina giù per aggiungere una OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation>Cancellazione</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation>Token per </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation> copiato negli appunti</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<source>Move up</source>
<translation>Sposta su</translation>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation>Copia negli appunti</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation>Mostra Codice QR</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>&gt;Sposta su</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Sposta giù</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation>Modifica</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation>Cancella</translation>
</message>
@ -319,8 +332,9 @@ Licenza: BSD (3-clause)</translation>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Impossibile creare il codice QR da impostizioni incomplete!</translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Impossibile creare il codice QR da una stringa vuota</translation>
</message>
</context>
<context>
@ -346,12 +360,12 @@ Licenza: BSD (3-clause)</translation>
<translation>Scansione...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation>Non sono stati trovati dati di Token validi.</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Tocca l&apos;immagine per iniziare / fermare la scansione. Trascina giù per aggiungere manualmente un Token.</translation>
</message>
@ -366,12 +380,20 @@ Licenza: BSD (3-clause)</translation>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Comportamento</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation>Mostra il Token come Codice QR al Tocco</translation>
<source>Show Token as QR on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Mostra Token come QR alla pressione</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Nascondi token e rivela alla spina</translation>
</message>
</context>
</TS>

View file

@ -0,0 +1,398 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pt_BR">
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="75"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation>Um Simples Gerador de OTP para Sailfish</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="84"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation>Copyright: Stefan Brand
Licença: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="110"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP usa as seguintes bibliotecas de terceiros</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>Contribuiram:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation>Suporte</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>Tradutores:</translation>
</message>
</context>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>Mostrar código QR</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Não foi possível criar Código QR porque a configuração está incompleta!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation>Adicionar</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation>Salvar</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>Baseado em tempo (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>Baseado em contador (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation>Título</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>Título para o OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>Segredo (mínimo de 16 caracteres)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>Chave secreta OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation>Tamanho</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation>Tamanho to Token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation>Derivação do tempo (segundos)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation>Próximo valor do contador</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation>Próximo valor do contador</translation>
</message>
</context>
<context>
<name>ExportPage</name>
<message>
<location filename="../qml/pages/ExportPage.qml" line="63"/>
<source>File already exists, choose &quot;Overwrite existing&quot; to overwrite it.</source>
<translation>Arquivo existe, habilite &quot;Sobrescrever existente&quot; para sobrescrevê-lo.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="72"/>
<source>Given file does not exist!</source>
<translation>Não foi possíve encontrar o arquivo!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Export</source>
<translation>Exportar</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Import</source>
<translation>Importar</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="114"/>
<source>Filename</source>
<translation>Nome do arquivo</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to import</source>
<translation>Arquivo para importar</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to export</source>
<translation>Arquivo para exportar</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="128"/>
<source>Overwrite existing</source>
<translation>Sobrescrever existente</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="134"/>
<source>Password</source>
<translation>Senha</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="135"/>
<source>Password for the file</source>
<translation>Senha para o arquivo</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords don&apos;t match!</source>
<translation>Senhas não coincidem!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords match!</source>
<translation>Senha correta</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="149"/>
<source>Repeated Password for the file</source>
<translation>Repetir a senha para o arquivo</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="173"/>
<source>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.</source>
<translation>Importe Tokens salvos em um arquivo. Insira a localização do arquivo e a senha usada durante a exportação. Puxe para a esquerda para iniciar a importação.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>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.</source>
<translation>Exporte os Tokens para um arquivo. O arquivo expotado será criptografado com AES-256-CBC e codificado em Base64. Escolha uma senha forte pois o arquivo conterá todos os segredos usados para gerar os Tokens disponíveis. Puxe para a esquerda para iniciar o processo.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translation>Para visualizar o conteúdo do arquivo expotado fora do SailOTP use o seguinte comando openssl:</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
<translation>Não foi possível escrever no arquivo</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="213"/>
<source>Token Database exported to </source>
<translation>Base de dados dos Tokens exportada para</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="216"/>
<source>Could not encrypt tokens. Error: </source>
<translation>Não foi possível criptografar Tokens. Erro:</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="219"/>
<source>Could not read tokens from Database</source>
<translation>Não foi possível ler Tokens da base de dados</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="230"/>
<source>Tokens imported from </source>
<translation>Tokens importados de</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="235"/>
<source>Unable to decrypt file, did you use the right password?</source>
<translation>Não foi possível decriptografar arquivo, por favor cheque a senha.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="238"/>
<source>Could not read from file </source>
<translation>Não foi possível ler arquivo</translation>
</message>
</context>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation>Sobre</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translation>Configurações</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>Exportar e importar</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation>Adicionar Token</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation>Nada aqui</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>Puxe para baixo para adicionar um OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation>Apagando</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation>Token para </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation> copiado para a área de transferência</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation>Copiar para área de transferência</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation>Mostrar código QR</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>Mover para cima</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Mover para baixo</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation>Editar</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation>Apagar</translation>
</message>
</context>
<context>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from an empty String</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Não é possível criar QR-Code de uma string vazia</translation>
</message>
</context>
<context>
<name>ScanOTP</name>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="54"/>
<source>Can&apos;t access temporary directory</source>
<translation>Não foi possível acessar pasta temporária</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="64"/>
<source>Add manually</source>
<translation>Adicionar manualmente</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scan Code</source>
<translation>Escanear Código</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scanning...</source>
<translation>Escaneando...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation>Não foi possível encontrar Token válido</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Toque na imagem para iniciar ou parar o escaneador. Puxe para baixo para adicionar Token manualmente.</translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation>Configurações</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Comportamento</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QR on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Mostrar token como QR na torneira</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Esconda tokens e revele na torneira</translation>
</message>
</context>
</TS>

View file

@ -47,82 +47,83 @@ License: BSD (3-clause)</source>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Невозможно создать QR-код из-за неполных настроек!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Сохранить</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation>Сохранить</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>На основе времени (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>На основе счетчика (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation>Заголовок</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>Заголовок для OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>Секрет (минимум 16 символов)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>Секретный ключ OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation>Длина</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation>Длина токена</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation>Интервал расхождения (секунд)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation>Следующее значение счетчика</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation>Следующее значение счетчика</translation>
</message>
@ -251,68 +252,79 @@ License: BSD (3-clause)</source>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation>О приложении</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>настройки</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>Экспорт / импорт</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation>Добавить токен</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation>Ничего нету</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>Потяните вниз чтобы добавить OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation>Удаление</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation>Токен для </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation> скопирован в буфер обмена</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<source>Move up</source>
<translation>Передвинуть вверх</translation>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation>Скопировать в буфер обмена</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<source>Move down</source>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation>Показать QR-код</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>Передвинуть вниз</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Передвинуть вверх</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation>Редактировать</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
@ -321,8 +333,9 @@ License: BSD (3-clause)</source>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Не удалось создать QR-код из-за неполных настроек!</translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Не удается создать QR-код из пустой строки</translation>
</message>
</context>
<context>
@ -348,12 +361,12 @@ License: BSD (3-clause)</source>
<translation>Сканирование...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation>Не найдено корректных данных для токена.</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Нажмите на изображение чтобы начать / остановить сканирование. Потяните вниз чтобы добавить токен вручную.</translation>
</message>
@ -368,14 +381,20 @@ License: BSD (3-clause)</source>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>поведение</translation>
<translatorcomment>Google Translate</translatorcomment>
<translation>Поведение</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Сенсорный токен как QR-код</translation>
<source>Show Token as QR on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Показать токен как QR на кране</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Скрыть токены и показать на кране</translation>
</message>
</context>
</TS>

View file

@ -47,82 +47,83 @@ Licens: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Kan inte skapa QR-kod från ofullständiga inställningar!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Spara</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation>Lägg till</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation>Spara</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>Tidsbaserad (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>Räknarbaserad (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation>Namn</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>Namn OTP:n</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>Hemlighet (Minst 16 tecken)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>Hemlig OTP-nyckel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation>längd</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation>Längden av token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation>Tidsavvikelsen (sekunder)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation>Nästa räknarvärde</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation>Nästa värde räknaren</translation>
</message>
@ -251,68 +252,79 @@ Licens: BSD (3-clause)</translation>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation>Om</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Inställningar</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>Export / Import</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation>Lägg till Token</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation>Inget här</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>Dra neråt för att lägga till en OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation>Tar bort</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation>Token för </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation>kopierad till urklipp</translation>
<translation> kopierad till urklipp</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation>Kopiera till Urklipp</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation>Visa QR-kod</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>Flytta upp</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Flytta ner</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation>Redigera</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation>Ta bort</translation>
</message>
@ -321,8 +333,9 @@ Licens: BSD (3-clause)</translation>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Kan inte skapa QR-kod från ofullständiga inställningar!</translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Kan inte skapa QR-kod från en tom sträng</translation>
</message>
</context>
<context>
@ -348,12 +361,12 @@ Licens: BSD (3-clause)</translation>
<translation>Skannar...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation>Ingen giltig Token-data hittades.</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Tryck bilden för att starta / stoppa skanning. Dra neråt för att lägga till Token manuellt.</translation>
</message>
@ -368,14 +381,20 @@ Licens: BSD (3-clause)</translation>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translatorcomment>Google Translate</translatorcomment>
<translation>Beteende</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Peka token som en QR-kod</translation>
<source>Show Token as QR on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Visa Token som QR kran</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>Dölj tokens och avslöja kranen</translation>
</message>
</context>
</TS>

View file

@ -46,82 +46,83 @@ License: BSD (3-clause)</source>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation>(TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation>HOTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title for the OTP</source>
<translation>OTP的标题</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation>16</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Secret OTP Key</source>
<translation>OTP密钥</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Length of the Token</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation></translation>
</message>
@ -249,67 +250,79 @@ License: BSD (3-clause)</source>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation>/</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation>OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation> </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation></translation>
</message>
@ -318,8 +331,9 @@ License: BSD (3-clause)</source>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation></translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>QR码</translation>
</message>
</context>
<context>
@ -345,12 +359,12 @@ License: BSD (3-clause)</source>
<translation>...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>/</translation>
</message>
@ -365,12 +379,20 @@ License: BSD (3-clause)</source>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Google Translate</translatorcomment>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation></translation>
<source>Show Token as QR on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation>QR</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translatorcomment>Google Translate</translatorcomment>
<translation></translation>
</message>
</context>
</TS>

View file

@ -41,88 +41,89 @@ License: BSD (3-clause)</source>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>Show QR-Code</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Can&apos;t create QR-Code from incomplete settings!</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Add</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<source>Type</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<source>Time-based (TOTP)</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Counter-based (HOTP)</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<source>Title</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<source>Title for the OTP</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Secret (at least 16 characters)</source>
<translation></translation>
<source>Title for the OTP</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<source>Secret OTP Key</source>
<translation></translation>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<source>Secret (at least 16 characters)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation>Length</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<source>Length of the Token</source>
<translation>Length of the Token</translation>
<source>Secret OTP Key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<source>Length</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation>Time Derivation (Seconds)</translation>
<source>Length of the Token</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation></translation>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Time Derivation (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<source>Next Counter Value</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<source>Next Value of the Counter</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -248,77 +249,89 @@ License: BSD (3-clause)</source>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<location filename="../qml/pages/MainView.qml" line="102"/>
<source>About</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<location filename="../qml/pages/MainView.qml" line="106"/>
<source>Settings</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="105"/>
<location filename="../qml/pages/MainView.qml" line="111"/>
<source>Export / Import</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="109"/>
<location filename="../qml/pages/MainView.qml" line="115"/>
<source>Add Token</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<location filename="../qml/pages/MainView.qml" line="129"/>
<source>Nothing here</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="140"/>
<location filename="../qml/pages/MainView.qml" line="130"/>
<source>Pull down to add a OTP</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="151"/>
<location filename="../qml/pages/MainView.qml" line="165"/>
<source>Deleting</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source>Token for </source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="167"/>
<location filename="../qml/pages/MainView.qml" line="186"/>
<location filename="../qml/pages/MainView.qml" line="260"/>
<source> copied to clipboard</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="256"/>
<source>Copy to Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="264"/>
<source>Show Token as QR-Code</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="269"/>
<source>Move up</source>
<translation>Move up</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="274"/>
<source>Move down</source>
<translation>Move down</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="245"/>
<location filename="../qml/pages/MainView.qml" line="279"/>
<source>Edit</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="251"/>
<location filename="../qml/pages/MainView.qml" line="285"/>
<source>Delete</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Can&apos;t create QR-Code from incomplete settings!</translation>
<source>Can&apos;t create QR-Code from an empty String</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -344,12 +357,12 @@ License: BSD (3-clause)</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<location filename="../qml/pages/ScanOTP.qml" line="96"/>
<source>No valid Token data found.</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<location filename="../qml/pages/ScanOTP.qml" line="137"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation></translation>
</message>
@ -359,17 +372,22 @@ License: BSD (3-clause)</source>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation></translation>
<source>Show Token as QR on Tap</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="68"/>
<source>Hide Tokens and Reveal on Tap</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>