1
0
Fork 0
mirror of https://github.com/seiichiro0185/sailotp.git synced 2024-11-24 08:19:41 +00:00

Version 1.10.0

- Added Customizable Time Period (contributed by Andrey Skvortsov)
- Added SailJail Permissions (contributed by DrYak)
This commit is contained in:
seiichiro 2022-12-18 13:16:13 +01:00
parent da6e4baf57
commit 1ed8ef7719
24 changed files with 560 additions and 309 deletions

6
.gitignore vendored
View file

@ -2,6 +2,12 @@
*.pro.user
*.pro.user.*
*.autosave
*.o
moc_*
documentation.list
harbour-sailotp
RPMS
Makefile
rpm/harbour-sailotp.spec
rpm/harbour-sailotp.spec.*
translations/*.qm

View file

@ -40,6 +40,8 @@ The Following people have contributed code or other improvements to SailOTP:
* SteamGuard support: Robin Appelman
* Search function: Jyri-Petteri Paloposki
* Improved App Icon: JSEHV
* Custom Time Period support: Andrey Skvortsov
* SailJail Permissions: DrYak
## Translations

View file

@ -5,3 +5,7 @@ Name=SailOTP
Icon=harbour-sailotp
Exec=harbour-sailotp
[X-Sailjail]
Permissions=UserDirs;RemovableMedia
OrganizationName=org.seiichiro0185
ApplicationName=harbour-sailotp

View file

@ -45,7 +45,7 @@ CoverBackground {
var seconds = (curDate.getSeconds() + appWin.coverDiff) % 30
if (lOTP.text == "------" || seconds == 0 || (curDate.getTime() - lastUpdated > 2000)) {
appWin.coverOTP = OTP.calcOTP(appWin.coverSecret, appWin.coverType, appWin.coverLen, appWin.coverDiff, 0);
appWin.coverOTP = OTP.calcOTP(appWin.coverSecret, appWin.coverType, appWin.coverLen, appWin.coverDiff, 0, appWin.coverPeriod);
}
// Change color of the OTP to red if less than 5 seconds left

View file

@ -45,6 +45,7 @@ ApplicationWindow
property string coverOTP: "------"
property int coverLen: 6
property int coverDiff: 0
property int coverPeriod: 30
property int coverIndex: 0
// Global Listmodel for Tokens
@ -64,8 +65,8 @@ ApplicationWindow
}
// Add an entry to the list
function appendOTP(title, secret, type, counter, fav, len, diff) {
listModel.append({"secret": secret, "title": title, "fav": fav, "type": type, "counter": counter, "len": len, "diff": diff, "otp": "------", "itemVisible": true});
function appendOTP(title, secret, type, counter, fav, len, diff, period) {
listModel.append({"secret": secret, "title": title, "fav": fav, "type": type, "counter": counter, "len": len, "diff": diff, "period": period, "otp": "------", "itemVisible": true});
}
// Set the OTP shown on the Cover
@ -76,6 +77,7 @@ ApplicationWindow
coverType = listModel.get(index).type;
coverLen = listModel.get(index).len;
coverDiff = listModel.get(index).diff;
coverPeriod = listModel.get(index).period;
coverIndex = index;
if (coverType == "TOTP") { coverOTP = "------"; } else { coverOTP = listModel.get(index).otp; }
for (var i=0; i<listModel.count; i++) {

View file

@ -77,7 +77,7 @@ var steamChars = ['2', '3', '4', '5', '6', '7', '8', '9', 'B', 'C',
// counter: counter value for HOTP
// length: length of the returned token
// diff: derivation of time between phone and server
function calcOTP(secret, type, len, diff, counter) {
function calcOTP(secret, type, len, diff, counter, period) {
// Convert the key to HEX
var key = base32tohex(secret);
var factor = "";
@ -85,8 +85,8 @@ function calcOTP(secret, type, len, diff, counter) {
if (type.substr(0, 4) == "TOTP") {
// Get current Time in UNIX Timestamp format (Seconds since 01.01.1970 00:00 UTC), and add derivation value
var epoch = Math.round(new Date().getTime() / 1000.0) + diff;
// Get last full 30 / 60 Seconds and convert to HEX
factor = leftpad(dec2hex(Math.floor(epoch / 30)), 16, '0');
// Get last full period Seconds and convert to HEX
factor = leftpad(dec2hex(Math.floor(epoch / period)), 16, '0');
} else {
factor = leftpad(dec2hex(counter), 16, '0');
}

View file

@ -36,13 +36,13 @@ function getDB() {
if (db.version == "") {
// Initialize an empty DB, Create the Table
db.changeVersion("", "3",
db.changeVersion("", "5",
function(tx) {
tx.executeSql("CREATE TABLE IF NOT EXISTS OTPStorage(title TEXT, secret TEXT, type TEXT DEFAULT 'TOPT', counter INTEGER DEFAULT 0, fav INTEGER DEFAULT 0, sort INTEGER DEFAULT 0, len INTEGER default 6, diff INTEGER default 0);");
tx.executeSql("CREATE TABLE IF NOT EXISTS OTPStorage(title TEXT, secret TEXT, type TEXT DEFAULT 'TOPT', counter INTEGER DEFAULT 0, fav INTEGER DEFAULT 0, sort INTEGER DEFAULT 0, len INTEGER default 6, diff INTEGER default 0, period INTEGER default 30);");
});
} else if (db.version == "1.0") {
// Upgrade DB Schema to Version 4
db.changeVersion("1.0", "4",
db.changeVersion("1.0", "5",
function(tx) {
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN type TEXT DEFAULT 'TOTP';");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN counter INTEGER DEFAULT 0;");
@ -50,21 +50,30 @@ function getDB() {
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN sort INTEGER DEFAULT 0;");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN len INTEGER DEFAULT 6;");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN diff INTEGER DEFAULT 0;");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN period INTEGER DEFAULT 30;");
});
} else if (db.version == "2") {
// Upgrade DB Schema to Version 3
db.changeVersion("2", "4",
db.changeVersion("2", "5",
function(tx) {
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN sort INTEGER DEFAULT 0;");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN len INTEGER DEFAULT 6;");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN diff INTEGER DEFAULT 0;");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN period INTEGER DEFAULT 30;");
});
} else if (db.version == "3") {
// Upgrade DB Schema to Version 4
db.changeVersion("3", "4",
db.changeVersion("3", "5",
function(tx) {
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN len INTEGER DEFAULT 6;");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN diff INTEGER DEFAULT 0;");
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN period INTEGER DEFAULT 30;");
});
} else if (db.version == "4") {
// Upgrade DB Schema to Version 4
db.changeVersion("4", "5",
function(tx) {
tx.executeSql("ALTER TABLE OTPStorage ADD COLUMN period INTEGER DEFAULT 30;");
});
}
} catch (e) {
@ -83,7 +92,7 @@ function getOTP() {
function(tx) {
var res = tx.executeSql("select * from OTPStorage order by sort;");
for (var i=0; i < res.rows.length; i++) {
appWin.appendOTP(res.rows.item(i).title, res.rows.item(i).secret, res.rows.item(i).type, res.rows.item(i).counter, res.rows.item(i).fav, res.rows.item(i).len, res.rows.item(i).diff);
appWin.appendOTP(res.rows.item(i).title, res.rows.item(i).secret, res.rows.item(i).type, res.rows.item(i).counter, res.rows.item(i).fav, res.rows.item(i).len, res.rows.item(i).diff, res.rows.item(i).period);
if (res.rows.item(i).fav) appWin.setCover(i);
}
});
@ -106,12 +115,13 @@ function db2json() {
"sort": res.rows.item(i).sort,
"len": res.rows.item(i).len,
"diff": res.rows.item(i).diff,
"period": res.rows.item(i).period,
});
}
});
if (otpList.length > 0) {
return(JSON.stringify({"app": "sailotp", "version": 3, "otplist": otpList}));
return(JSON.stringify({"app": "sailotp", "version": 4, "otplist": otpList}));
} else {
return("")
}
@ -122,7 +132,7 @@ function json2db(jsonString, error) {
var json = JSON.parse(jsonString);
error = "";
if ((json.version != "1" || json.version != "2" || json.version != "3") && json.app != "sailotp" ) {
if ((json.version != "1" || json.version != "2" || json.version != "3" || json.version != "4") && json.app != "sailotp" ) {
error = "Unrecognized format, file is not a SailOTP export";
return(false);
} else {
@ -133,11 +143,13 @@ function json2db(jsonString, error) {
var otpItem = otpList.shift();
if (otpItem.title != "" & otpItem.secret.length >= 16) {
if (json.version == "1") {
addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, 0, 6, 0);
addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, 0, 6, 0, 30);
} else if (json.version == "2") {
addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, 6, 0);
addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, 6, 0, 30);
} else if (json.version == "3") {
addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, otpItem.len, otpItem.diff, 30);
} else {
addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, otpItem.len, otpItem.diff);
addOTP(otpItem.title, otpItem.secret, otpItem.type, otpItem.counter, otpItem.sort, otpItem.len, otpItem.diff, otpItem.period);
}
}
}
@ -151,7 +163,7 @@ function json2db(jsonString, error) {
}
// Add a new OTP
function addOTP(title, secret, type, counter, sort, len, diff) {
function addOTP(title, secret, type, counter, sort, len, diff, period) {
var db = getDB();
db.transaction(
@ -159,7 +171,7 @@ function addOTP(title, secret, type, counter, sort, len, diff) {
if (checkOTP(title, secret)) {
console.log("Token " + title + " is already in DB");
} else {
tx.executeSql("INSERT INTO OTPStorage VALUES(?, ?, ?, ?, ?, ?, ?, ?);", [title, secret, type, counter, 0, sort, len, diff]);
tx.executeSql("INSERT INTO OTPStorage VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?);", [title, secret, type, counter, 0, sort, len, diff, period]);
console.log("Token " + title + " added.");
}
});
@ -210,12 +222,12 @@ function resetFav(title, secret) {
}
// Change an existing OTP
function changeOTP(title, secret, type, counter, len, diff, oldtitle, oldsecret) {
function changeOTP(title, secret, type, counter, len, diff, period, oldtitle, oldsecret) {
var db = getDB();
db.transaction(
function(tx) {
tx.executeSql("UPDATE OTPStorage SET title=?, secret=?, type=?, counter=?, len=?, diff=? WHERE title=? and secret=?;", [title, secret, type, counter, len, diff, oldtitle, oldsecret]);
tx.executeSql("UPDATE OTPStorage SET title=?, secret=?, type=?, counter=?, len=?, diff=?, period=? WHERE title=? and secret=?;", [title, secret, type, counter, len, diff, period, oldtitle, oldsecret]);
console.log("Token " + title + " modified.");
}
);

View file

@ -156,6 +156,20 @@ Page {
alignment: Qt.AlignLeft
leftMargin: Theme.paddingLarge*2
}
DetailItem {
label: qsTr("Customizable Time Period")
value: "Andrey Skvortsov"
width: parent.width
alignment: Qt.AlignLeft
leftMargin: Theme.paddingLarge*2
}
DetailItem {
label: qsTr("SailJail Permissions")
value: "DrYak"
width: parent.width
alignment: Qt.AlignLeft
leftMargin: Theme.paddingLarge*2
}
Item {
width: parent.width
height: Theme.paddingMedium

View file

@ -48,6 +48,7 @@ Dialog {
property int paramLen: 6
property int paramDiff: 0
property int paramCounter: 1 // New Counters start at 1
property int paramPeriod: 30
property bool paramNew: false
function checkQR() {
@ -163,6 +164,20 @@ Dialog {
EnterKey.iconSource: "image://theme/icon-m-enter-accept"
EnterKey.onClicked: addOTP.accept()
}
TextField {
id: otpPeriod
width: parent.width
visible: paramType == "TOTP" ? true : false
label: qsTr("Period (Seconds)")
text: paramPeriod
placeholderText: qsTr("Period (Seconds)")
focus: true
horizontalAlignment: TextInput.AlignLeft
validator: IntValidator {}
EnterKey.iconSource: "image://theme/icon-m-enter-accept"
EnterKey.onClicked: addOTP.accept()
}
TextField {
id: otpCounter
width: parent.width
@ -182,7 +197,7 @@ Dialog {
}
// Check if we can Save
canAccept: otpLabel.text.length > 0 && otpSecret.text.length >= 16 && otpSecret.acceptableInput && otpLen.text >= 1 && ((paramType == "TOTP" && otpDiff.text != "") || paramType == "TOTP_STEAM" || otpCounter.text.length > 0) ? true : false
canAccept: otpLabel.text.length > 0 && otpSecret.text.length >= 16 && otpSecret.acceptableInput && otpLen.text >= 1 && ((paramType == "TOTP" && otpDiff.text != "" && otpPeriod.text > 0) || paramType == "TOTP_STEAM" || otpCounter.text.length > 0) ? true : false
// Save if page is Left with Add
onDone: {
@ -190,10 +205,10 @@ Dialog {
// Save the entry to the Config DB
if (paramLabel != "" && paramKey != "" && !paramNew) {
// Parameters where filled -> Change existing entry
DB.changeOTP(otpLabel.text, otpSecret.text, paramType, otpCounter.text, otpLen.text, otpDiff.text, paramLabel, paramKey)
DB.changeOTP(otpLabel.text, otpSecret.text, paramType, otpCounter.text, otpLen.text, otpDiff.text, otpPeriod.text, paramLabel, paramKey)
} else {
// There were no parameters -> Add new entry
DB.addOTP(otpLabel.text, otpSecret.text, paramType, otpCounter.text, appWin.listModel.count, otpLen.text, otpDiff.text);
DB.addOTP(otpLabel.text, otpSecret.text, paramType, otpCounter.text, appWin.listModel.count, otpLen.text, otpDiff.text, otpPeriod.text);
}
// Refresh the main Page

View file

@ -64,10 +64,10 @@ Page {
for (var i=0; i<appWin.listModel.count; i++) {
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)
var seconds = (curDate.getSeconds() + appWin.listModel.get(i).diff) % appWin.listModel.get(i).period;
// Only update on full period Seconds or if last run of the Functions is more than 2s in the past (e.g. app was in background)
if (appWin.listModel.get(i).otp === "------" || seconds == 0 || (curDate.getTime() - lastUpdated > 2000)) {
var curOTP = OTP.calcOTP(appWin.listModel.get(i).secret, appWin.listModel.get(i).type, appWin.listModel.get(i).len, appWin.listModel.get(i).diff, 0);
var curOTP = OTP.calcOTP(appWin.listModel.get(i).secret, appWin.listModel.get(i).type, appWin.listModel.get(i).len, appWin.listModel.get(i).diff, 0, appWin.listModel.get(i).period);
appWin.listModel.setProperty(i, "otp", curOTP);
} else if (appWin.coverType === "HOTP" && (curDate.getTime() - lastUpdated > 2000) && appWin.listModel.get(i).fav === 1) {
// If we are coming back from the CoverPage update OTP value if current favourite is HOTP
@ -311,7 +311,7 @@ Page {
MenuItem {
text: qsTr("Edit")
onClicked: {
pageStack.push(Qt.resolvedUrl("AddOTP.qml"), {parentPage: mainPage, paramLabel: title, paramKey: secret, paramType: type, paramLen: len, paramDiff: diff, paramCounter: DB.getCounter(title, secret, false)})
pageStack.push(Qt.resolvedUrl("AddOTP.qml"), {parentPage: mainPage, paramLabel: title, paramKey: secret, paramType: type, paramLen: len, paramDiff: diff, paramCounter: DB.getCounter(title, secret, false), paramPeriod: period})
}
}
MenuItem {

View file

@ -1,3 +1,7 @@
* Sun Dec 18 2022 Stefan Brand <sailfish@seiichiro0185.org> 1.10.0-1
- Added Customizable Time Period (contributed by Andrey Skvortsov)
- Added SailJail Permissions (contributed by DrYak)
* Sat Jun 26 2021 Stefan Brand <sailfish@seiichiro0185.org> 1.9.4-1
- Update pt_br Translation (contributed by caio2k)
- Refreshed App Icon (contributed by JSEHV)

View file

@ -1,6 +1,6 @@
Name: harbour-sailotp
Summary: SailOTP
Version: 1.9.4
Version: 1.10.0
Release: 1
Group: Security
URL: https://github.com/seiichiro0185/sailotp/
@ -14,7 +14,7 @@ Description: |
Configure: none
Builder: qtc5
Builder: qmake5
QMakeOptions:
- VERSION=%{version}

View file

@ -54,7 +54,17 @@
<translation>Icon</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation>Einstellbares Intervall</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation>SailJail Berechtigungen</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP verwendet folgende externe Bibliotheken:</translation>
</message>
@ -64,7 +74,7 @@
<translation>Mitwirkende:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Übersetzer:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation>QR-Code Anzeigen</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<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="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Hinzufügen</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Speichern</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Zeitbasiert (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Zählerbasiert (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Titel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Titel für das Token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Schlüssel (mindestens 16 Zeichen)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Geheimer Schlüssel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Länge</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>Länge des Tokens</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Zeitabweichung (Sekunden)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation>Intervall (Sekunden)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Nächster Zählerwert</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Nächster Wert für den Zähler</translation>
</message>

View file

@ -54,7 +54,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP usa las siguientes librerías de terceros:</translation>
</message>
@ -64,7 +74,7 @@
<translation>Contribuidor:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Traductores:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<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"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<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="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Añadir</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Guardar</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Basado en tiempo (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Basado en contador (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Título</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Nombre para el OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Cadena secreta (al menos 16 caracteres)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Llave secreta OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Longitud</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>Longitud del token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Derivación de tiempo (segundos)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Siguiente Contador</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Siguiente valor del contador</translation>
</message>

View file

@ -49,7 +49,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP käyttää seuraavia kolmannen osapuolen kirjastoja:</translation>
</message>
@ -64,7 +74,7 @@
<translation>(RFC 6238/4226 -yhteensopiva)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Kääntäjät:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation>Näytä QR-koodi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>QR-koodia ei voida luoda puutteellisten asetuksien takia!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Lisää</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Tallenna</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Tyyppi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Aikapohjainen (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Laskuripohjainen (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Nimi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Kertasalasanan nimi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Salaisuus (vähintään 16 merkkiä)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Salainen OTP-avain</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Pituus</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>Kertasalasanan pituus</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Aikapoikkeama (sekunneissa)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Laskurin seuraava arvo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Laskurin seuraava arvo</translation>
</message>

View file

@ -54,7 +54,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP utilise les bibliothèques tierces suivantes :</translation>
</message>
@ -64,7 +74,7 @@
<translation>Contributeurs :</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Traducteurs :</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation>Afficher le code QR</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<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="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Ajouter</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Enregistrer</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Type</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Basé sur le temps (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Basé sur un compteur (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Titre</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Titre de l&amp;apos;OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Secret (au moins 16 caractètres)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Clé secrète OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Longueur</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>Longueur du jeton</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Dérivation de temps (secondes)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Prochaine valeur du compteur</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Prochaine valeur du compteur</translation>
</message>

View file

@ -46,10 +46,20 @@
<message>
<location filename="../qml/pages/About.qml" line="153"/>
<source>Icon</source>
<translation>Ikon</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>A SailOTP a következő harmadik féltől származó könyvtárakat használja:</translation>
</message>
@ -64,7 +74,7 @@
<translation>(RFC 6238/4226 kompatibilis)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Fordítók:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation>QR-kód megjelenítése</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Nem hozható létre QR-kód hiányos beállításokból!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Hozzáadás</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Mentés</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Típus</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Idő-alapú (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Számláló-alapú (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Cím</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Az OTP címe</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Jelszó (legalább 16 karakter)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Titkos OTP-kulcs</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Hosszúság</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>A token hosszúsága</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Időlevezetés (Másodperc)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Következő számlálóérték</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>A számláló következő értéke</translation>
</message>

View file

@ -54,7 +54,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP utilizza le seguenti librerie di terzi:</translation>
</message>
@ -64,7 +74,7 @@
<translation>Collaboratori:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Traduttori:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation>Mostra Codice QR</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<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="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Aggiungi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Salva</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Basato sul tempo (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Basato su contatore (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Titolo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Titolo per la OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Segreto (almeno 16 caratteri</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Chiave OTP segreta</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Lunghezza</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>Lunghezza del Token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Derivazione Temporale (Secondi)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Valore Prossimo Contatore</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Prossimo Valore del Contatore</translation>
</message>

View file

@ -6,55 +6,60 @@
<message>
<location filename="../qml/pages/About.qml" line="70"/>
<source>A simple Sailfish OTP generator</source>
<translation type="unfinished"></translation>
<translation>Een simpele Sailfish OTP generator</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="78"/>
<source>(RFC 6238/4226 compatible)</source>
<translation type="unfinished"></translation>
<translation>(RFC 6238/4226 compatible)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="87"/>
<source>Online Manual</source>
<translation type="unfinished"></translation>
<translation>Online Handleiding</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="94"/>
<source>Source Code &amp; Issue Tracker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="111"/>
<source>Copyright</source>
<translation type="unfinished"></translation>
<translation>Broncode &amp; Foutentracker</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="120"/>
<source>License</source>
<translation type="unfinished"></translation>
<translation>Licentie</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="120"/>
<source>BSD (3-clause)</source>
<translation type="unfinished"></translation>
<translation>BSD (3-voudig)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="139"/>
<source>SteamGuard support</source>
<translation type="unfinished"></translation>
<translation>SteamGuard ondersteuning</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="146"/>
<source>Search</source>
<translation type="unfinished"></translation>
<translation>Zoeken</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="153"/>
<source>Icon</source>
<translation>Icoon</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP gebruikt de volgende bibliotheken van derden:</translation>
</message>
@ -64,7 +69,12 @@
<translation>Bijdragers:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="111"/>
<source>Copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Vertalers:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation>QR-code weergeven</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Kan geen QR-code maken van onvolledige instellingen!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Toevoegen</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Opslaan</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Type</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Tijd-gebaseerd (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Teller-gebaseerd (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Titel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Titel voor de OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Geheim (minimaal 16 karakters)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Geheime OTP sleutel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Lengte</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>Lengte van de token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Tijdafleiding (seconden)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Volgende tellerwaarde</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Volgende waarde van de teller</translation>
</message>
@ -314,7 +330,7 @@
<message>
<location filename="../qml/pages/MainView.qml" line="178"/>
<source>Search</source>
<translation type="unfinished"></translation>
<translation>Zoeken</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="198"/>

View file

@ -51,10 +51,20 @@
<message>
<location filename="../qml/pages/About.qml" line="153"/>
<source>Icon</source>
<translation>Ícone</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP usa as seguintes bibliotecas de terceiros</translation>
</message>
@ -64,7 +74,7 @@
<translation>Contribuíram:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Tradutores:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<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"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<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"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Adicionar</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Salvar</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Baseado em tempo (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Baseado em contador (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Título</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Título para o OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Segredo (mínimo 16 caracteres)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Chave secreta OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Tamanho</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<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"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Derivação do tempo (segundos)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Próximo valor do contador</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Próximo valor do contador</translation>
</message>

View file

@ -54,7 +54,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP использует следующие сторонние библиотеки:</translation>
</message>
@ -64,7 +74,7 @@
<translation>Участники:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Переводчики:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation>Показать QR-код</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Невозможно создать QR-код из-за неполных настроек!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Сохранить</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>На основе времени (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>На основе счетчика (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Заголовок</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Заголовок для OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Секрет (минимум 16 символов)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Секретный ключ OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Длина</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>Длина токена</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Интервал расхождения (секунд)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Следующее значение счетчика</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Следующее значение счетчика</translation>
</message>

View file

@ -6,65 +6,75 @@
<message>
<location filename="../qml/pages/About.qml" line="70"/>
<source>A simple Sailfish OTP generator</source>
<translation type="unfinished"></translation>
<translation>En enkel OTP-generator för Sailfish</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="78"/>
<source>(RFC 6238/4226 compatible)</source>
<translation type="unfinished"></translation>
<translation>(RFC 6238-/4226-kompatibel)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="87"/>
<source>Online Manual</source>
<translation type="unfinished"></translation>
<translation>Online-manual</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="94"/>
<source>Source Code &amp; Issue Tracker</source>
<translation type="unfinished"></translation>
<translation>Källkod och ärendehanterare</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="111"/>
<source>Copyright</source>
<translation type="unfinished"></translation>
<translation>Copyright</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="120"/>
<source>License</source>
<translation type="unfinished"></translation>
<translation>Licens</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="120"/>
<source>BSD (3-clause)</source>
<translation type="unfinished"></translation>
<translation>BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="139"/>
<source>SteamGuard support</source>
<translation type="unfinished"></translation>
<translation>SteamGuard-stöd</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="146"/>
<source>Search</source>
<translation type="unfinished">Sök</translation>
<translation>Sök</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="153"/>
<source>Icon</source>
<translation>Ikon</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP använder följande tredjeparts bibliotek:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="133"/>
<source>Contributors:</source>
<translation>Medarbetare:</translation>
<translation>Bidragsgivare:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Översättare:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation>Visa QR-kod</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<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="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation>Lägg till</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation>Spara</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>Tidsbaserad (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>Räknarbaserad (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation>Namn</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>Namn OTP:n</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>Hemlighet (Minst 16 tecken)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>Hemlig OTP-nyckel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation>Längd</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation>Längd token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation>Tidsavvikelse (sekunder)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation>Nästa räknarvärde</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation>Nästa värde räknaren</translation>
</message>

View file

@ -54,7 +54,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP使用下面的第三方库</translation>
</message>
@ -64,7 +74,7 @@
<translation>:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation>(TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation>HOTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation>OTP的标题</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation>16</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation>OTP密钥</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation></translation>
</message>

View file

@ -49,7 +49,17 @@
<translation>Icon</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="261"/>
<location filename="../qml/pages/About.qml" line="160"/>
<source>Customizable Time Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="167"/>
<source>SailJail Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="275"/>
<source>SailOTP uses the following third party libs:</source>
<translation></translation>
</message>
@ -64,7 +74,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="169"/>
<location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source>
<translation>Translators:</translation>
</message>
@ -72,89 +82,95 @@
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="98"/>
<location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="103"/>
<location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="105"/>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="106"/>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="107"/>
<location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="113"/>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="126"/>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Secret (at least 16 characters)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="170"/>
<location filename="../qml/pages/AddOTP.qml" line="171"/>
<location filename="../qml/pages/AddOTP.qml" line="173"/>
<source>Period (Seconds)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="185"/>
<source>Next Counter Value</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="172"/>
<location filename="../qml/pages/AddOTP.qml" line="187"/>
<source>Next Value of the Counter</source>
<translation type="unfinished"></translation>
</message>