1
0
Fork 0
mirror of https://github.com/seiichiro0185/sailotp.git synced 2024-11-21 15:29:42 +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
*.pro.user.* *.pro.user.*
*.autosave *.autosave
*.o
moc_*
documentation.list
harbour-sailotp
RPMS
Makefile
rpm/harbour-sailotp.spec rpm/harbour-sailotp.spec
rpm/harbour-sailotp.spec.* rpm/harbour-sailotp.spec.*
translations/*.qm translations/*.qm

View file

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

View file

@ -5,3 +5,7 @@ Name=SailOTP
Icon=harbour-sailotp Icon=harbour-sailotp
Exec=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 var seconds = (curDate.getSeconds() + appWin.coverDiff) % 30
if (lOTP.text == "------" || seconds == 0 || (curDate.getTime() - lastUpdated > 2000)) { 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 // Change color of the OTP to red if less than 5 seconds left

View file

@ -45,6 +45,7 @@ ApplicationWindow
property string coverOTP: "------" property string coverOTP: "------"
property int coverLen: 6 property int coverLen: 6
property int coverDiff: 0 property int coverDiff: 0
property int coverPeriod: 30
property int coverIndex: 0 property int coverIndex: 0
// Global Listmodel for Tokens // Global Listmodel for Tokens
@ -64,8 +65,8 @@ ApplicationWindow
} }
// Add an entry to the list // Add an entry to the list
function appendOTP(title, secret, type, counter, fav, len, diff) { 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, "otp": "------", "itemVisible": true}); 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 // Set the OTP shown on the Cover
@ -76,6 +77,7 @@ ApplicationWindow
coverType = listModel.get(index).type; coverType = listModel.get(index).type;
coverLen = listModel.get(index).len; coverLen = listModel.get(index).len;
coverDiff = listModel.get(index).diff; coverDiff = listModel.get(index).diff;
coverPeriod = listModel.get(index).period;
coverIndex = index; coverIndex = index;
if (coverType == "TOTP") { coverOTP = "------"; } else { coverOTP = listModel.get(index).otp; } if (coverType == "TOTP") { coverOTP = "------"; } else { coverOTP = listModel.get(index).otp; }
for (var i=0; i<listModel.count; i++) { 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 // counter: counter value for HOTP
// length: length of the returned token // length: length of the returned token
// diff: derivation of time between phone and server // 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 // Convert the key to HEX
var key = base32tohex(secret); var key = base32tohex(secret);
var factor = ""; var factor = "";
@ -85,8 +85,8 @@ function calcOTP(secret, type, len, diff, counter) {
if (type.substr(0, 4) == "TOTP") { 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 // 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; var epoch = Math.round(new Date().getTime() / 1000.0) + diff;
// Get last full 30 / 60 Seconds and convert to HEX // Get last full period Seconds and convert to HEX
factor = leftpad(dec2hex(Math.floor(epoch / 30)), 16, '0'); factor = leftpad(dec2hex(Math.floor(epoch / period)), 16, '0');
} else { } else {
factor = leftpad(dec2hex(counter), 16, '0'); factor = leftpad(dec2hex(counter), 16, '0');
} }

View file

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

View file

@ -156,6 +156,20 @@ Page {
alignment: Qt.AlignLeft alignment: Qt.AlignLeft
leftMargin: Theme.paddingLarge*2 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 { Item {
width: parent.width width: parent.width
height: Theme.paddingMedium height: Theme.paddingMedium

View file

@ -48,6 +48,7 @@ Dialog {
property int paramLen: 6 property int paramLen: 6
property int paramDiff: 0 property int paramDiff: 0
property int paramCounter: 1 // New Counters start at 1 property int paramCounter: 1 // New Counters start at 1
property int paramPeriod: 30
property bool paramNew: false property bool paramNew: false
function checkQR() { function checkQR() {
@ -163,6 +164,20 @@ Dialog {
EnterKey.iconSource: "image://theme/icon-m-enter-accept" EnterKey.iconSource: "image://theme/icon-m-enter-accept"
EnterKey.onClicked: addOTP.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 { TextField {
id: otpCounter id: otpCounter
width: parent.width width: parent.width
@ -182,7 +197,7 @@ Dialog {
} }
// Check if we can Save // 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 // Save if page is Left with Add
onDone: { onDone: {
@ -190,10 +205,10 @@ Dialog {
// Save the entry to the Config DB // Save the entry to the Config DB
if (paramLabel != "" && paramKey != "" && !paramNew) { if (paramLabel != "" && paramKey != "" && !paramNew) {
// Parameters where filled -> Change existing entry // 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 { } else {
// There were no parameters -> Add new entry // 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 // Refresh the main Page

View file

@ -64,10 +64,10 @@ Page {
for (var i=0; i<appWin.listModel.count; i++) { 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 // Take derivation into account if set
var seconds = (curDate.getSeconds() + appWin.listModel.get(i).diff) % 30; var seconds = (curDate.getSeconds() + appWin.listModel.get(i).diff) % appWin.listModel.get(i).period;
// 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) // 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)) { 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); 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 // If we are coming back from the CoverPage update OTP value if current favourite is HOTP
@ -311,7 +311,7 @@ Page {
MenuItem { MenuItem {
text: qsTr("Edit") text: qsTr("Edit")
onClicked: { 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 { 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 * Sat Jun 26 2021 Stefan Brand <sailfish@seiichiro0185.org> 1.9.4-1
- Update pt_br Translation (contributed by caio2k) - Update pt_br Translation (contributed by caio2k)
- Refreshed App Icon (contributed by JSEHV) - Refreshed App Icon (contributed by JSEHV)

View file

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

View file

@ -54,7 +54,17 @@
<translation>Icon</translation> <translation>Icon</translation>
</message> </message>
<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> <source>SailOTP uses the following third party libs:</source>
<translation>SailOTP verwendet folgende externe Bibliotheken:</translation> <translation>SailOTP verwendet folgende externe Bibliotheken:</translation>
</message> </message>
@ -64,7 +74,7 @@
<translation>Mitwirkende:</translation> <translation>Mitwirkende:</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/About.qml" line="169"/> <location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Übersetzer:</translation> <translation>Übersetzer:</translation>
</message> </message>
@ -72,89 +82,95 @@
<context> <context>
<name>AddOTP</name> <name>AddOTP</name>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="69"/> <location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source> <source>Show QR-Code</source>
<translation>QR-Code Anzeigen</translation> <translation>QR-Code Anzeigen</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="72"/> <location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/> <location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source> <source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden!</translation> <translation>Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden!</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="98"/> <location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source> <source>Add</source>
<translation>Hinzufügen</translation> <translation>Hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="98"/> <location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source> <source>Save</source>
<translation>Speichern</translation> <translation>Speichern</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="103"/> <location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source> <source>Type</source>
<translation>Typ</translation> <translation>Typ</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="105"/> <location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source> <source>Time-based (TOTP)</source>
<translation>Zeitbasiert (TOTP)</translation> <translation>Zeitbasiert (TOTP)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="106"/> <location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source> <source>Counter-based (HOTP)</source>
<translation>Zählerbasiert (HOTP)</translation> <translation>Zählerbasiert (HOTP)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="107"/> <location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source> <source>Steam Guard</source>
<translation>Steam Guard</translation> <translation>Steam Guard</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="113"/> <location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source> <source>Title</source>
<translation>Titel</translation> <translation>Titel</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="114"/> <location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source> <source>Title for the OTP</source>
<translation>Titel für das Token</translation> <translation>Titel für das Token</translation>
</message> </message>
<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> <source>Secret (at least 16 characters)</source>
<translation>Schlüssel (mindestens 16 Zeichen)</translation> <translation>Schlüssel (mindestens 16 Zeichen)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="128"/> <location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source> <source>Secret OTP Key</source>
<translation>Geheimer Schlüssel</translation> <translation>Geheimer Schlüssel</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="142"/> <location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source> <source>Length</source>
<translation>Länge</translation> <translation>Länge</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="144"/> <location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source> <source>Length of the Token</source>
<translation>Länge des Tokens</translation> <translation>Länge des Tokens</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="156"/> <location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/> <location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source> <source>Time Derivation (Seconds)</source>
<translation>Zeitabweichung (Sekunden)</translation> <translation>Zeitabweichung (Sekunden)</translation>
</message> </message>
<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> <source>Next Counter Value</source>
<translation>Nächster Zählerwert</translation> <translation>Nächster Zählerwert</translation>
</message> </message>
<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> <source>Next Value of the Counter</source>
<translation>Nächster Wert für den Zähler</translation> <translation>Nächster Wert für den Zähler</translation>
</message> </message>

View file

@ -54,7 +54,17 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>SailOTP uses the following third party libs:</source>
<translation>SailOTP usa las siguientes librerías de terceros:</translation> <translation>SailOTP usa las siguientes librerías de terceros:</translation>
</message> </message>
@ -64,7 +74,7 @@
<translation>Contribuidor:</translation> <translation>Contribuidor:</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/About.qml" line="169"/> <location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Traductores:</translation> <translation>Traductores:</translation>
</message> </message>
@ -72,89 +82,95 @@
<context> <context>
<name>AddOTP</name> <name>AddOTP</name>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="69"/> <location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source> <source>Show QR-Code</source>
<translation>Mostrar código QR</translation> <translation>Mostrar código QR</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="72"/> <location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/> <location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source> <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> <translation>¡No se puede crear el código QR a partir de una configuración incompleta!</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="98"/> <location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source> <source>Add</source>
<translation>Añadir</translation> <translation>Añadir</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="98"/> <location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source> <source>Save</source>
<translation>Guardar</translation> <translation>Guardar</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="103"/> <location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source> <source>Type</source>
<translation>Tipo</translation> <translation>Tipo</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="105"/> <location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source> <source>Time-based (TOTP)</source>
<translation>Basado en tiempo (TOTP)</translation> <translation>Basado en tiempo (TOTP)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="106"/> <location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source> <source>Counter-based (HOTP)</source>
<translation>Basado en contador (HOTP)</translation> <translation>Basado en contador (HOTP)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="107"/> <location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source> <source>Steam Guard</source>
<translation>Steam Guard</translation> <translation>Steam Guard</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="113"/> <location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source> <source>Title</source>
<translation>Título</translation> <translation>Título</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="114"/> <location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source> <source>Title for the OTP</source>
<translation>Nombre para el OTP</translation> <translation>Nombre para el OTP</translation>
</message> </message>
<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> <source>Secret (at least 16 characters)</source>
<translation>Cadena secreta (al menos 16 caracteres)</translation> <translation>Cadena secreta (al menos 16 caracteres)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="128"/> <location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source> <source>Secret OTP Key</source>
<translation>Llave secreta OTP</translation> <translation>Llave secreta OTP</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="142"/> <location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source> <source>Length</source>
<translation>Longitud</translation> <translation>Longitud</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="144"/> <location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source> <source>Length of the Token</source>
<translation>Longitud del token</translation> <translation>Longitud del token</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="156"/> <location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/> <location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source> <source>Time Derivation (Seconds)</source>
<translation>Derivación de tiempo (segundos)</translation> <translation>Derivación de tiempo (segundos)</translation>
</message> </message>
<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> <source>Next Counter Value</source>
<translation>Siguiente Contador</translation> <translation>Siguiente Contador</translation>
</message> </message>
<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> <source>Next Value of the Counter</source>
<translation>Siguiente valor del contador</translation> <translation>Siguiente valor del contador</translation>
</message> </message>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -51,10 +51,20 @@
<message> <message>
<location filename="../qml/pages/About.qml" line="153"/> <location filename="../qml/pages/About.qml" line="153"/>
<source>Icon</source> <source>Icon</source>
<translation>Ícone</translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>SailOTP uses the following third party libs:</source>
<translation>SailOTP usa as seguintes bibliotecas de terceiros</translation> <translation>SailOTP usa as seguintes bibliotecas de terceiros</translation>
</message> </message>
@ -64,7 +74,7 @@
<translation>Contribuíram:</translation> <translation>Contribuíram:</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/About.qml" line="169"/> <location filename="../qml/pages/About.qml" line="183"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Tradutores:</translation> <translation>Tradutores:</translation>
</message> </message>
@ -72,89 +82,95 @@
<context> <context>
<name>AddOTP</name> <name>AddOTP</name>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="69"/> <location filename="../qml/pages/AddOTP.qml" line="70"/>
<source>Show QR-Code</source> <source>Show QR-Code</source>
<translation>Mostrar Código QR</translation> <translation>Mostrar Código QR</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="72"/> <location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="85"/> <location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source> <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> <translation>Não foi possível criar Código QR porque a configuração está incompleta!</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="98"/> <location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Add</source> <source>Add</source>
<translation>Adicionar</translation> <translation>Adicionar</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="98"/> <location filename="../qml/pages/AddOTP.qml" line="99"/>
<source>Save</source> <source>Save</source>
<translation>Salvar</translation> <translation>Salvar</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="103"/> <location filename="../qml/pages/AddOTP.qml" line="104"/>
<source>Type</source> <source>Type</source>
<translation>Tipo</translation> <translation>Tipo</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="105"/> <location filename="../qml/pages/AddOTP.qml" line="106"/>
<source>Time-based (TOTP)</source> <source>Time-based (TOTP)</source>
<translation>Baseado em tempo (TOTP)</translation> <translation>Baseado em tempo (TOTP)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="106"/> <location filename="../qml/pages/AddOTP.qml" line="107"/>
<source>Counter-based (HOTP)</source> <source>Counter-based (HOTP)</source>
<translation>Baseado em contador (HOTP)</translation> <translation>Baseado em contador (HOTP)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="107"/> <location filename="../qml/pages/AddOTP.qml" line="108"/>
<source>Steam Guard</source> <source>Steam Guard</source>
<translation>Steam Guard</translation> <translation>Steam Guard</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="113"/> <location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Title</source> <source>Title</source>
<translation>Título</translation> <translation>Título</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="114"/> <location filename="../qml/pages/AddOTP.qml" line="115"/>
<source>Title for the OTP</source> <source>Title for the OTP</source>
<translation>Título para o OTP</translation> <translation>Título para o OTP</translation>
</message> </message>
<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> <source>Secret (at least 16 characters)</source>
<translation>Segredo (mínimo 16 caracteres)</translation> <translation>Segredo (mínimo 16 caracteres)</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="128"/> <location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Secret OTP Key</source> <source>Secret OTP Key</source>
<translation>Chave secreta OTP</translation> <translation>Chave secreta OTP</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="142"/> <location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Length</source> <source>Length</source>
<translation>Tamanho</translation> <translation>Tamanho</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="144"/> <location filename="../qml/pages/AddOTP.qml" line="145"/>
<source>Length of the Token</source> <source>Length of the Token</source>
<translation>Tamanho to Token</translation> <translation>Tamanho to Token</translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AddOTP.qml" line="156"/> <location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/> <location filename="../qml/pages/AddOTP.qml" line="159"/>
<source>Time Derivation (Seconds)</source> <source>Time Derivation (Seconds)</source>
<translation>Derivação do tempo (segundos)</translation> <translation>Derivação do tempo (segundos)</translation>
</message> </message>
<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> <source>Next Counter Value</source>
<translation>Próximo valor do contador</translation> <translation>Próximo valor do contador</translation>
</message> </message>
<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> <source>Next Value of the Counter</source>
<translation>Próximo valor do contador</translation> <translation>Próximo valor do contador</translation>
</message> </message>

View file

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

View file

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

View file

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

View file

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