aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--qml/cover/CoverPage.qml15
-rw-r--r--qml/pages/MainPage.qml12
-rw-r--r--qml/pages/ProfileEditor.qml59
-rw-r--r--qml/pages/ProfilesPage.qml4
-rw-r--r--qml/pages/SettingsEditor.qml8
-rw-r--r--translations/harbour-passfish-de.qmbin23077 -> 0 bytes
-rw-r--r--translations/harbour-passfish-de.ts192
-rw-r--r--translations/harbour-passfish.qmbin21417 -> 0 bytes
-rw-r--r--translations/harbour-passfish.ts364
10 files changed, 429 insertions, 226 deletions
diff --git a/.gitignore b/.gitignore
index 2c2ff34..728f2f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@ CMakeLists.txt.user
passwordmaker-javascript-2.5.html
*.pdf
notes
+translations/*.qm
diff --git a/qml/cover/CoverPage.qml b/qml/cover/CoverPage.qml
index 5b5af6c..4207138 100644
--- a/qml/cover/CoverPage.qml
+++ b/qml/cover/CoverPage.qml
@@ -6,7 +6,7 @@ CoverBackground {
x: Theme.paddingLarge
y: Theme.paddingLarge
width: parent.width - 2 * x
- spacing: Theme.paddingLarge
+ spacing: Theme.paddingMedium
Label {
id: label
text: qsTr("PassFish")
@@ -23,7 +23,7 @@ CoverBackground {
Label {
id: urlLabel
color: Theme.highlightColor
- text: qsTr("Used Text:")
+ text: qsTr("Used text:")
font.pixelSize: Theme.fontSizeSmall
truncationMode: TruncationMode.Fade
width: parent.width
@@ -42,10 +42,17 @@ CoverBackground {
Label {
id: readyLabel
color: Theme.highlightColor
+ text: qsTr("Status:")
+ font.pixelSize: Theme.fontSizeSmall
+ truncationMode: TruncationMode.Fade
+ width: parent.width
+ }
+ Label {
+ id: ready
text: passwordmaker.generated_password.length > 0
&& passwordmaker.generator_state === 0
- ? qsTr("Pass Ready")
- : qsTr("Input Needed")
+ ? qsTr("Password ready")
+ : qsTr("Input needed")
font.pixelSize: Theme.fontSizeSmall
truncationMode: TruncationMode.Fade
width: parent.width
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 1195ef8..2a28eff 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -35,7 +35,7 @@ Page {
PullDownMenu {
MenuItem {
- text: qsTr("App Settings")
+ text: qsTr("App settings")
onClicked: {
var pg = pageStack.animatorPush(Qt.resolvedUrl("SettingsEditor.qml"),
{
@@ -103,8 +103,8 @@ Page {
text: passwordmaker.master_password
- label: qsTr("Master Password")
- placeholderText: qsTr("Master Password")
+ label: qsTr("Master password")
+ placeholderText: qsTr("Master password")
EnterKey.iconSource: "image://theme/icon-m-enter-close"
EnterKey.onClicked: focus = false
Binding {
@@ -119,11 +119,11 @@ Page {
inputMethodHints: Qt.ImhNoPredictiveText | Qt.ImhNoAutoUppercase
- label: qsTr("Used Text")
+ label: qsTr("Used text")
hideLabelOnEmptyField: passwordmaker.used_text === ""
onFocusChanged: if(focus) text = passwordmaker.used_text
onPlaceholderTextChanged: if(!focus) text = ""
- placeholderText: passwordmaker.used_text === "" ? qsTr("Used Text") : passwordmaker.used_text
+ placeholderText: passwordmaker.used_text === "" ? qsTr("Used text") : passwordmaker.used_text
EnterKey.iconSource: "image://theme/icon-m-enter-close"
EnterKey.onClicked: focus = false
Binding {
@@ -167,7 +167,7 @@ Page {
showEchoModeToggle: passwordmaker.settings.hide_generated_password
readOnly: true
focusOnClick: true
- label: qsTr("Generated Password")
+ label: qsTr("Generated password")
hideLabelOnEmptyField: false
placeholderText:
password_text_from_generator_state(
diff --git a/qml/pages/ProfileEditor.qml b/qml/pages/ProfileEditor.qml
index 5dd28e0..d3b8f24 100644
--- a/qml/pages/ProfileEditor.qml
+++ b/qml/pages/ProfileEditor.qml
@@ -53,7 +53,7 @@ Dialog {
width: parent.width
bottomPadding: Theme.paddingLarge
DialogHeader {
- title: qsTr("Edit Profile")
+ title: qsTr("Edit profile")
}
TextField {
id: profileNameField
@@ -62,14 +62,14 @@ Dialog {
//description doesn't work on Sailfish 3. Use label instead if unavailable.
readonly property bool descriptionAvailable : typeof(description) !== "undefined"
- label: !descriptionAvailable && errorHighlight ? qsTr("Required Field") : qsTr("Profile Name")
+ label: !descriptionAvailable && errorHighlight ? qsTr("Required field") : qsTr("Profile name")
hideLabelOnEmptyField: descriptionAvailable
- placeholderText: qsTr("Profile Name")
+ placeholderText: qsTr("Profile name")
Binding {
target: profileNameField
property: "description"
- value: profileNameField.errorHighlight ? qsTr("Required Field") : ""
+ value: profileNameField.errorHighlight ? qsTr("Required field") : ""
when: profileNameField.descriptionAvailable
}
@@ -90,10 +90,19 @@ Dialog {
bottomPadding: Theme.paddingLarge
property bool anySelected : (useProtocol || useSubdomain || useDomain || usePortPath || useUserInfo)
+ Label {
+ id: urlPartLabel
+ text: qsTr("URL parts to use")
+ color: Theme.highlightColor
+
+ x: Theme.paddingLarge
+ width: parent.width - 2*Theme.paddingSmall
+ bottomPadding: Theme.paddingSmall
+ }
TextSwitch {
id: protocolField
- text: qsTr("Use Protocol")
+ text: qsTr("Protocol")
description: qsTr("Include URL protocol (e.g. \"http://\")")
palette.highlightColor : down || urlPartsColumn.anySelected ? Theme.highlightColor : Theme.errorColor
highlighted: down || !urlPartsColumn.anySelected
@@ -102,34 +111,34 @@ Dialog {
id: useDefaultFallbackForProtocolField
visible: protocolField.checked
text: qsTr("Use \"undefined\" if protocol is missing")
- description: qsTr("Enable to mimic weird behaviour of PasswordMaker Pro.")
+ description: qsTr("Enable to mimic behaviour of JavaScript PasswordMaker Pro.")
palette.highlightColor : down ? Theme.highlightColor : Theme.errorColor
highlighted: down
}
TextSwitch {
id: userInfoField
- text: qsTr("Use Userinfo")
- description: qsTr("Include userinfo (e.g \"jane_doe:12345\"")
+ text: qsTr("Userinfo")
+ description: qsTr("Include userinfo (e.g \"jane_doe:12345\")")
palette.highlightColor : down || urlPartsColumn.anySelected ? Theme.highlightColor : Theme.errorColor
highlighted: down || !urlPartsColumn.anySelected
}
TextSwitch {
id: subdomainField
- text: qsTr("Use Subomain(s)")
+ text: qsTr("Subomain(s)")
description: qsTr("Include URL subdomain(s) (e.g. \"www.\")")
palette.highlightColor : down || urlPartsColumn.anySelected ? Theme.highlightColor : Theme.errorColor
highlighted: down || !urlPartsColumn.anySelected
}
TextSwitch {
id: domainField
- text: qsTr("Use Domain")
+ text: qsTr("Domain")
description: qsTr("Include URL domain (e.g. \"example.com\")")
palette.highlightColor : down || urlPartsColumn.anySelected ? Theme.highlightColor : Theme.errorColor
highlighted: down || !urlPartsColumn.anySelected
}
TextSwitch {
id: portPathField
- text: qsTr("Use Port/Path")
+ text: qsTr("Port and path")
description: qsTr("Include port and path (e.g \":8080/file\")")
palette.highlightColor : down || urlPartsColumn.anySelected ? Theme.highlightColor : Theme.errorColor
highlighted: down || !urlPartsColumn.anySelected
@@ -137,14 +146,28 @@ Dialog {
}
NoticeOptional {
id: urlNotice
- text: qsTr("At least one URL part required.")
+ text: qsTr("At least one URL part is required.")
useNotificationFallback: false
}
}
+ Separator {
+ width: parent.width
+ horizontalAlignment:Qt.AlignHCenter
+ color: Theme.secondaryColor
+ }
Column {
width: parent.width
topPadding: Theme.paddingLarge
bottomPadding: Theme.paddingLarge
+ Label {
+ id: generationSettingsLabel
+ text: qsTr("Password generation settings")
+ color: Theme.highlightColor
+
+ x: Theme.paddingLarge
+ width: parent.width - 2*Theme.paddingSmall
+ bottomPadding: Theme.paddingSmall
+ }
Slider {
id: passwordLengthSlider
minimumValue: 1
@@ -152,11 +175,11 @@ Dialog {
stepSize: 1
width: parent.width
valueText : value
- label: qsTr("Password Length")
+ label: qsTr("Password length")
}
ComboBox {
id: hashAlgorithmComboBox
- label: qsTr("Hash Algorithm")
+ label: qsTr("Hash algorithm")
menu: ContextMenu {
MenuItem { text: "MD4" }
MenuItem { text: "HMAC-MD4" }
@@ -174,7 +197,7 @@ Dialog {
}
ComboBox {
id: useLeetComboBox
- label: qsTr("Use L33t")
+ label: qsTr("Use l33t")
menu: ContextMenu {
MenuItem { text: qsTr("not at all") }
MenuItem { text: qsTr("before generating") }
@@ -190,7 +213,7 @@ Dialog {
width: parent.width
valueText: value
visible: useLeetComboBox.currentIndex > 0
- label: qsTr("Leet Level")
+ label: qsTr("Leet level")
}
}
Column {
@@ -201,7 +224,7 @@ Dialog {
ListModel {
id: defaultCharacterValues
ListElement {
- name: qsTr("Default Characters")
+ name: qsTr("Default characters")
chars: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`~!@#$%^&*()_-+={}|[]\\:\";'<>?,./"
userFacing: true
}
@@ -252,7 +275,7 @@ Dialog {
value: defaultCharactersMenu.matchIndex(charactersField.text)
}
- label: qsTr("Characters Preset")
+ label: qsTr("Characters preset")
menu: ContextMenu {
Repeater {
model: defaultCharacterValues
diff --git a/qml/pages/ProfilesPage.qml b/qml/pages/ProfilesPage.qml
index a2df8af..b9a8425 100644
--- a/qml/pages/ProfilesPage.qml
+++ b/qml/pages/ProfilesPage.qml
@@ -18,7 +18,7 @@ Page {
PullDownMenu {
MenuItem {
- text: qsTr("Add Profile")
+ text: qsTr("Add profile")
onClicked: {
profilesView.model.insertRows(profilesView.model.rowCount(),1);
profilesView.store_profile_with_error_message();
@@ -26,7 +26,7 @@ Page {
}
}
header: PageHeader {
- title: qsTr("Select/Edit Profiles")
+ title: qsTr("Select/edit profiles")
}
delegate: ListItem {
id: delegate
diff --git a/qml/pages/SettingsEditor.qml b/qml/pages/SettingsEditor.qml
index 9baa51c..f350160 100644
--- a/qml/pages/SettingsEditor.qml
+++ b/qml/pages/SettingsEditor.qml
@@ -31,11 +31,11 @@ Dialog {
width: parent.width
bottomPadding: Theme.paddingLarge
DialogHeader {
- title: qsTr("Edit Settings")
+ title: qsTr("App settings")
}
TextSwitch {
id: hide_generated_passwordBox
- text: qsTr("Hide Generated Password")
+ text: qsTr("Hide generated password")
palette.highlightColor : Theme.highlightColor
highlighted: down
}
@@ -54,7 +54,7 @@ Dialog {
width: parent.width
valueText: value + " min"
visible: clear_generated_passwordBox.checked
- label: qsTr("Auto-clear generated pass timeout")
+ label: qsTr("Auto-clear generated password timeout")
value: clear_generated_password/60 || 1
}
TextSwitch {
@@ -74,7 +74,7 @@ Dialog {
width: parent.width
valueText: sliderValue + " min"
visible: clear_master_passwordBox.checked
- label: qsTr("Auto-clear master pass timeout")
+ label: qsTr("Auto-clear master password timeout")
value: clear_master_password/60 || 5
}
Label {
diff --git a/translations/harbour-passfish-de.qm b/translations/harbour-passfish-de.qm
deleted file mode 100644
index abbfafa..0000000
--- a/translations/harbour-passfish-de.qm
+++ /dev/null
Binary files differ
diff --git a/translations/harbour-passfish-de.ts b/translations/harbour-passfish-de.ts
index a0fad6d..0a63486 100644
--- a/translations/harbour-passfish-de.ts
+++ b/translations/harbour-passfish-de.ts
@@ -145,15 +145,31 @@
<message>
<source>Used Text:</source>
<translatorcomment>Might be too long? Needs testing.</translatorcomment>
- <translation>Verwendeter Text:</translation>
+ <translation type="vanished">Verwendeter Text:</translation>
</message>
<message>
<source>Pass Ready</source>
- <translation>Passwort Bereit</translation>
+ <translation type="vanished">Passwort Bereit</translation>
</message>
<message>
<source>Input Needed</source>
- <translation>Input Benötigt</translation>
+ <translation type="vanished">Input Benötigt</translation>
+ </message>
+ <message>
+ <source>Used text:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Status:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Password ready</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Input needed</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -175,7 +191,7 @@
<name>MainPage</name>
<message>
<source>App Settings</source>
- <translation>Programmeinstellungen</translation>
+ <translation type="vanished">Programmeinstellungen</translation>
</message>
<message>
<source>About</source>
@@ -195,11 +211,11 @@
</message>
<message>
<source>Master Password</source>
- <translation>Hauptschlüssel</translation>
+ <translation type="vanished">Hauptschlüssel</translation>
</message>
<message>
<source>Used Text</source>
- <translation>Verwendeter Text</translation>
+ <translation type="vanished">Verwendeter Text</translation>
</message>
<message>
<source>Generating</source>
@@ -219,26 +235,42 @@
</message>
<message>
<source>Generated Password</source>
- <translation>Generiertes Passwort</translation>
+ <translation type="vanished">Generiertes Passwort</translation>
</message>
<message>
<source>Saving settings failed.</source>
<translation>Fehler beim Speichern der Einstellungen.</translation>
</message>
+ <message>
+ <source>App settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Master password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Used text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Generated password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProfileEditor</name>
<message>
<source>Edit Profile</source>
- <translation>Profil bearbeiten</translation>
+ <translation type="vanished">Profil bearbeiten</translation>
</message>
<message>
<source>Required Field</source>
- <translation>Benötigtes Feld</translation>
+ <translation type="vanished">Benötigtes Feld</translation>
</message>
<message>
<source>Profile Name</source>
- <translation>Profilname</translation>
+ <translation type="vanished">Profilname</translation>
</message>
<message>
<source>Profile name required.</source>
@@ -246,7 +278,7 @@
</message>
<message>
<source>Use Protocol</source>
- <translation>Verwende Protokoll</translation>
+ <translation type="vanished">Verwende Protokoll</translation>
</message>
<message>
<source>Include URL protocol (e.g. &quot;http://&quot;)</source>
@@ -258,19 +290,19 @@
</message>
<message>
<source>Enable to mimic weird behaviour of PasswordMaker Pro.</source>
- <translation>Einschalten, um das Verhalten von PasswordMaker Pro zu imitieren.</translation>
+ <translation type="vanished">Einschalten, um das Verhalten von PasswordMaker Pro zu imitieren.</translation>
</message>
<message>
<source>Use Userinfo</source>
- <translation>Verwende Nutzerdaten</translation>
+ <translation type="vanished">Verwende Nutzerdaten</translation>
</message>
<message>
<source>Include userinfo (e.g &quot;jane_doe:12345&quot;</source>
- <translation>Nutze Nutzerinfo (z.B. &quot;jane_doe:12345&quot;)</translation>
+ <translation type="vanished">Nutze Nutzerinfo (z.B. &quot;jane_doe:12345&quot;)</translation>
</message>
<message>
<source>Use Subomain(s)</source>
- <translation>Verwende Subdomain(s)</translation>
+ <translation type="vanished">Verwende Subdomain(s)</translation>
</message>
<message>
<source>Include URL subdomain(s) (e.g. &quot;www.&quot;)</source>
@@ -278,7 +310,7 @@
</message>
<message>
<source>Use Domain</source>
- <translation>Verwende Domain</translation>
+ <translation type="vanished">Verwende Domain</translation>
</message>
<message>
<source>Include URL domain (e.g. &quot;example.com&quot;)</source>
@@ -286,7 +318,7 @@
</message>
<message>
<source>Use Port/Path</source>
- <translation>Verwende Port/Pfad</translation>
+ <translation type="vanished">Verwende Port/Pfad</translation>
</message>
<message>
<source>Include port and path (e.g &quot;:8080/file&quot;)</source>
@@ -294,15 +326,15 @@
</message>
<message>
<source>At least one URL part required.</source>
- <translation>Mindesteins ein Teil der URL muss genutzt werden.</translation>
+ <translation type="vanished">Mindesteins ein Teil der URL muss genutzt werden.</translation>
</message>
<message>
<source>Password Length</source>
- <translation>Passwortlänge</translation>
+ <translation type="vanished">Passwortlänge</translation>
</message>
<message>
<source>Hash Algorithm</source>
- <translation>Hash-Algorithmus</translation>
+ <translation type="vanished">Hash-Algorithmus</translation>
</message>
<message>
<source>MD5 Version 0.6</source>
@@ -314,7 +346,7 @@
</message>
<message>
<source>Use L33t</source>
- <translation>Verwende L33t</translation>
+ <translation type="vanished">Verwende L33t</translation>
</message>
<message>
<source>not at all</source>
@@ -335,11 +367,11 @@
<message>
<source>Leet Level</source>
<translatorcomment>Leet genug für diese Welt?</translatorcomment>
- <translation>Leet-Stärke</translation>
+ <translation type="vanished">Leet-Stärke</translation>
</message>
<message>
<source>Default Characters</source>
- <translation>Standard-Zeichenliste</translation>
+ <translation type="vanished">Standard-Zeichenliste</translation>
</message>
<message>
<source>Alphanumeric</source>
@@ -367,7 +399,7 @@
</message>
<message>
<source>Characters Preset</source>
- <translation>Zeichenlistenvorlage</translation>
+ <translation type="vanished">Zeichenlistenvorlage</translation>
</message>
<message>
<source>Need at least 2 characters.</source>
@@ -393,16 +425,92 @@
<source>Suffix</source>
<translation>Suffix</translation>
</message>
+ <message>
+ <source>Edit profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Required field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Profile name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>URL parts to use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Protocol</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable to mimic behaviour of JavaScript PasswordMaker Pro.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Userinfo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Include userinfo (e.g &quot;jane_doe:12345&quot;)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Subomain(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Domain</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Port and path</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>At least one URL part is required.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Password generation settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Password length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hash algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use l33t</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Leet level</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Default characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Characters preset</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProfilesPage</name>
<message>
<source>Add Profile</source>
- <translation>Neues Profil</translation>
+ <translation type="vanished">Neues Profil</translation>
</message>
<message>
<source>Select/Edit Profiles</source>
- <translation>Profil Auswählen/Bearbeiten</translation>
+ <translation type="vanished">Profil Auswählen/Bearbeiten</translation>
</message>
<message>
<source>Edit</source>
@@ -416,6 +524,14 @@
<source>Saving profiles failed.</source>
<translation>Fehler beim Speichern der Profile.</translation>
</message>
+ <message>
+ <source>Add profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Select/edit profiles</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SecondPage</name>
@@ -432,11 +548,11 @@
<name>SettingsEditor</name>
<message>
<source>Edit Settings</source>
- <translation>Einstellungen Anpassen</translation>
+ <translation type="vanished">Einstellungen Anpassen</translation>
</message>
<message>
<source>Hide Generated Password</source>
- <translation>Generiertes Passwort verstecken</translation>
+ <translation type="vanished">Generiertes Passwort verstecken</translation>
</message>
<message>
<source>Auto-clear generated password</source>
@@ -444,7 +560,7 @@
</message>
<message>
<source>Auto-clear generated pass timeout</source>
- <translation>Zeit bis das generierte Passwort gelöscht wird</translation>
+ <translation type="vanished">Zeit bis das generierte Passwort gelöscht wird</translation>
</message>
<message>
<source>Auto-clear master password</source>
@@ -452,11 +568,27 @@
</message>
<message>
<source>Auto-clear master pass timeout</source>
- <translation>Zeit bis der Hauptschlüssel gelöscht wird</translation>
+ <translation type="vanished">Zeit bis der Hauptschlüssel gelöscht wird</translation>
</message>
<message>
<source>Profiles can be edited directly in the profiles selector.</source>
<translation>Der Profileditor ist über die Profilauswahl erreichbar.</translation>
</message>
+ <message>
+ <source>App settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hide generated password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Auto-clear generated password timeout</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Auto-clear master password timeout</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
</TS>
diff --git a/translations/harbour-passfish.qm b/translations/harbour-passfish.qm
deleted file mode 100644
index 2d1b29c..0000000
--- a/translations/harbour-passfish.qm
+++ /dev/null
Binary files differ
diff --git a/translations/harbour-passfish.ts b/translations/harbour-passfish.ts
index 4258996..8ff6778 100644
--- a/translations/harbour-passfish.ts
+++ b/translations/harbour-passfish.ts
@@ -1,13 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="en_GB" sourcelanguage="en_GB">
+<TS version="2.1">
<context>
<name>AboutPage</name>
<message>
+ <location filename="../qml/pages/AboutPage.qml" line="17"/>
<source>About PassFish</source>
- <translation>About PassFish</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/AboutPage.qml" line="26"/>
<source>
&lt;p&gt;
PassFish is a native re-implementation of &lt;a href=&quot;https://passwordmaker.org/&quot;&gt;PasswordMaker&lt;/a&gt; for Sailfish OS.
@@ -68,361 +70,399 @@
You should have received a copy of the GNU General Public License along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;http://www.gnu.org/licenses/&lt;/a&gt;.
&lt;/p&gt;
</source>
- <translation>
-&lt;p&gt;
- PassFish is a native re-implementation of &lt;a href=&quot;https://passwordmaker.org/&quot;&gt;PasswordMaker&lt;/a&gt; for Sailfish OS.
- It aims to be mostly compatible to the &lt;a href=&quot;https://sourceforge.net/projects/passwordmaker/files/Javascript%20Edition/&quot;&gt;Javascript Edition&lt;/a&gt;.
-&lt;/p&gt;
-&lt;p&gt;
- All credit for the development of the PasswordMaker Pro algorithm goes to the original authors of PasswordMaker Pro, Miquel Burns and Eric H. Jung.
-&lt;/p&gt;
-&lt;p&gt;
- As PassFish is not merely a port, but a full reimplementation from scratch, compatibility is not guaranteed. While the original source code was
- used as a guideline during implementation, the underlying technology is vastly different. Common use cases are tested by integration tests, but some
- edge cases might have been missed. In case you encounter such an issue, please report it on the
- &lt;a href=&quot;https://github.com/soulsource/passfish/issues&quot;&gt;github issue tracker&lt;/a&gt; of the project.
-&lt;/p&gt;
-&lt;p&gt;
- Speaking of integration tests: The hash algorithms were not re-implemented for this project in order to reduce the risk of introducing bugs. Instead the
- QCryptographicHash API is used where possible, and where not, the implementation from the RustCrypto Hashes repository is utilized (see list of dependencies below).
-&lt;/p&gt;
-&lt;p&gt;
- This program consists of two parts: The application itself (&quot;&lt;a href=&quot;https://github.com/soulsource/passfish&quot;&gt;PassFish&lt;/a&gt;&quot;), and a Rust crate that contains the
- implementation of the business logic (&quot;&lt;a href=&quot;https://github.com/soulsource/passwordmaker-rs&quot;&gt;&lt;nobr&gt;passwordmaker&amp;#8209;rs&lt;/nobr&gt;&lt;/a&gt;&quot;).
- This is important, as the two parts use different licenses. PassFish is published under the GPLv3 license, while &lt;nobr&gt;passwordmaker&amp;#8209;rs&lt;/nobr&gt; is published under LGPLv3. Please check the linked github pages for more details.
-&lt;/p&gt;
-&lt;p&gt;
- This program utilises several third party libraries. This list is kept up-to-date to the best of my knowledge. Only direct dependencies are listed,
- for transitive dependencies please see the linked websites. Similarly, the source code for those third-party dependencies that are published under an
- open source license can be found on the linked websites. To my knowledge the only non-open-source dependency is Silica. The listed licenses are just those
- used by &lt;i&gt;this&lt;/i&gt; project, most libraries are available under multiple licenses. Please see the libraries&apos; websites for details.&lt;br&gt;
- These libraries are linked dynamically:
- &lt;ul&gt;
- &lt;li&gt;&lt;a href=&quot;https://www.qt.io/&quot;&gt;Qt Quick&lt;/a&gt;: Used under &lt;a href=&quot;https://www.gnu.org/licenses/lgpl-3.0.en.html&quot;&gt;LGPLv3&lt;/a&gt;&lt;/li&gt;
- &lt;li&gt;&lt;a href=&quot;https://sailfishos.org/develop/docs/silica/&quot;&gt;Sailfish Silica&lt;/a&gt;: Proprietary, &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0&quot;&gt;GPL&lt;/a&gt; system library exception&lt;/li&gt;
- &lt;li&gt;&lt;a href=&quot;https://github.com/sailfishos/libsailfishapp&quot;&gt;LibSailfishApp&lt;/a&gt;: Used under LGPL 2.1&lt;/li&gt;
- &lt;/ul&gt;
- These libraries and their dependencies are linked statically:
- &lt;ul&gt;
- &lt;li&gt;&lt;a href=&quot;https://crates.io/crates/libc&quot;&gt;libc Rust bindings&lt;/a&gt;: Used under MIT license&lt;/li&gt;
- &lt;li&gt;&lt;a href=&quot;https://crates.io/crates/serde&quot;&gt;serde&lt;/a&gt;: Used under MIT license&lt;/li&gt;
- &lt;li&gt;&lt;a href=&quot;https://crates.io/crates/toml&quot;&gt;toml-rs&lt;/a&gt;: Used under MIT license&lt;/li&gt;
- &lt;li&gt;&lt;a href=&quot;https://crates.io/crates/dirs&quot;&gt;dirs&lt;/a&gt;: Used under MIT license&lt;/li&gt;
- &lt;li&gt;&lt;a href=&quot;https://crates.io/crates/ripemd&quot;&gt;RustCrypto: RIPEMD&lt;/a&gt;: Used under MIT license&lt;/li&gt;
- &lt;/ul&gt;
- The &lt;nobr&gt;passwordmaker&amp;#8209;rs&lt;/nobr&gt; library has the following statically linked runtime dependencies:
- &lt;ul&gt;
- &lt;li&gt;&lt;a href=&quot;https://crates.io/crates/unicode-segmentation&quot;&gt;unicode-segmentation&lt;/a&gt;: Used under MIT license&lt;/li&gt;
- &lt;/ul&gt;
- While it is not a runtime dependency, the code generator for the Rust Qt bindings is worth noting:
- &lt;ul&gt;
- &lt;li&gt;&lt;a href=&quot;https://invent.kde.org/sdk/rust-qt-binding-generator&quot;&gt;Rust Qt Binding Generator&lt;/a&gt;&lt;/li&gt;
- &lt;/ul&gt;
- PassFish uses a modified version, which can be found in the &lt;a href=&quot;https://invent.kde.org/soulsource/rust-qt-binding-generator/-/tree/mockall_support&quot;&gt;mockall_support&lt;/a&gt; branch.
-&lt;/p&gt;
-&lt;p&gt;
- This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation,
- either version 3 of the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.
- You should have received a copy of the GNU General Public License along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;http://www.gnu.org/licenses/&lt;/a&gt;.
-&lt;/p&gt;
- </translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CoverPage</name>
<message>
+ <location filename="../qml/cover/CoverPage.qml" line="12"/>
<source>PassFish</source>
- <translation>PassFish</translation>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/cover/CoverPage.qml" line="26"/>
+ <source>Used text:</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Used Text:</source>
- <translation>Used Text:</translation>
+ <location filename="../qml/cover/CoverPage.qml" line="45"/>
+ <source>Status:</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Pass Ready</source>
- <translation>Password Ready</translation>
+ <location filename="../qml/cover/CoverPage.qml" line="54"/>
+ <source>Password ready</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Input Needed</source>
- <translation>Input Needed</translation>
+ <location filename="../qml/cover/CoverPage.qml" line="55"/>
+ <source>Input needed</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainPage</name>
<message>
- <source>App Settings</source>
- <translation>App Settings</translation>
+ <location filename="../qml/pages/MainPage.qml" line="38"/>
+ <source>App settings</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="61"/>
<source>About</source>
- <translation>About PassFish</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="72"/>
<source>PassFish</source>
- <translation>PassFish</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="78"/>
<source>Profile</source>
- <translation>Profile</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="90"/>
+ <location filename="../qml/pages/MainPage.qml" line="91"/>
<source>URL</source>
- <translation>URL</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Master Password</source>
- <translation>Master Password</translation>
+ <location filename="../qml/pages/MainPage.qml" line="106"/>
+ <location filename="../qml/pages/MainPage.qml" line="107"/>
+ <source>Master password</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Used Text</source>
- <translation>Used Text</translation>
+ <location filename="../qml/pages/MainPage.qml" line="122"/>
+ <location filename="../qml/pages/MainPage.qml" line="126"/>
+ <source>Used text</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="153"/>
<source>Generating</source>
- <translation>Generating</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="155"/>
<source>Missing text to use</source>
- <translation>Missing text to use</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="157"/>
<source>Missing master password</source>
- <translation>Missing master password</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="159"/>
<source>Error in profile character list</source>
- <translation>Error in profile character list</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Generated Password</source>
- <translation>Generated Password</translation>
+ <location filename="../qml/pages/MainPage.qml" line="170"/>
+ <source>Generated password</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/MainPage.qml" line="226"/>
<source>Saving settings failed.</source>
- <translation>Saving settings failed.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfileEditor</name>
<message>
- <source>Edit Profile</source>
- <translation>Edit Profile</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="56"/>
+ <source>Edit profile</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Required Field</source>
- <translation>Required Field</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="65"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="72"/>
+ <source>Required field</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Profile Name</source>
- <translation>Profile Name</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="65"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="67"/>
+ <source>Profile name</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="83"/>
<source>Profile name required.</source>
- <translation>Profile name required.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Use Protocol</source>
- <translation>Use Protocol</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="95"/>
+ <source>URL parts to use</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="105"/>
+ <source>Protocol</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="106"/>
<source>Include URL protocol (e.g. &quot;http://&quot;)</source>
- <translation>Include URL protocol (e.g. &quot;http://&quot;)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="113"/>
<source>Use &quot;undefined&quot; if protocol is missing</source>
- <translation>Use &quot;undefined&quot; if protocol is missing</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Enable to mimic weird behaviour of PasswordMaker Pro.</source>
- <translation>Enable to mimic weird behaviour of PasswordMaker Pro.</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="114"/>
+ <source>Enable to mimic behaviour of JavaScript PasswordMaker Pro.</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Use Userinfo</source>
- <translation>Use Userinfo</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="120"/>
+ <source>Userinfo</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Include userinfo (e.g &quot;jane_doe:12345&quot;</source>
- <translation>Include userinfo (e.g. &quot;jane_doe:12345&quot;)</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="121"/>
+ <source>Include userinfo (e.g &quot;jane_doe:12345&quot;)</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Use Subomain(s)</source>
- <translation>Use Subomain(s)</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="127"/>
+ <source>Subomain(s)</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="128"/>
<source>Include URL subdomain(s) (e.g. &quot;www.&quot;)</source>
- <translation>Include URL subdomain(s) (e.g. &quot;www.&quot;)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Use Domain</source>
- <translation>Use Domain</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="134"/>
+ <source>Domain</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="135"/>
<source>Include URL domain (e.g. &quot;example.com&quot;)</source>
- <translation>Include URL domain (e.g. &quot;example.com&quot;)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Use Port/Path</source>
- <translation>Use Port/Path</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="141"/>
+ <source>Port and path</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="142"/>
<source>Include port and path (e.g &quot;:8080/file&quot;)</source>
- <translation>Include port and path (e.g &quot;:8080/file&quot;)</translation>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="149"/>
+ <source>At least one URL part is required.</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>At least one URL part required.</source>
- <translation>At least one URL part required.</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="164"/>
+ <source>Password generation settings</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Password Length</source>
- <translation>Password Length</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="178"/>
+ <source>Password length</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Hash Algorithm</source>
- <translation>Hash Algorithm</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="182"/>
+ <source>Hash algorithm</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="187"/>
<source>MD5 Version 0.6</source>
- <translation>MD5 Version 0.6</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="189"/>
<source>HMAC-MD5 Version 0.6</source>
- <translation>HMAC-MD5 Version 0.6</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Use L33t</source>
- <translation>Use L33t</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="200"/>
+ <source>Use l33t</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="202"/>
<source>not at all</source>
- <translation>not at all</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="203"/>
<source>before generating</source>
- <translation>before generating</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="204"/>
<source>after generating</source>
- <translation>after generating</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="205"/>
<source>before and after generating</source>
- <translation>before and after generating</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Leet Level</source>
- <translation>Leet Level</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="216"/>
+ <source>Leet level</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Default Characters</source>
- <translation>Default Characters</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="227"/>
+ <source>Default characters</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="232"/>
<source>Alphanumeric</source>
- <translation>Alphanumeric</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="237"/>
<source>Letters only</source>
- <translation>Letters only</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="242"/>
<source>Numbers only</source>
- <translation>Numbers only</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="247"/>
<source>Special only</source>
- <translation>Special only</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="252"/>
<source>Hex</source>
- <translation>Hex</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="257"/>
<source>Custom</source>
- <translation>Custom</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Characters Preset</source>
- <translation>Characters Preset</translation>
+ <location filename="../qml/pages/ProfileEditor.qml" line="278"/>
+ <source>Characters preset</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="297"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="309"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="325"/>
<source>Need at least 2 characters.</source>
- <translation>Need at least 2 characters.</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="297"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="299"/>
<source>Characters</source>
- <translation>Characters</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="336"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="337"/>
<source>Username</source>
- <translation>Username</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="344"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="345"/>
<source>Modifier</source>
- <translation>Modifier</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="352"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="353"/>
<source>Prefix</source>
- <translation>Prefix</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfileEditor.qml" line="360"/>
+ <location filename="../qml/pages/ProfileEditor.qml" line="361"/>
<source>Suffix</source>
- <translation>Suffix</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfilesPage</name>
<message>
- <source>Add Profile</source>
- <translation>Add Profile</translation>
+ <location filename="../qml/pages/ProfilesPage.qml" line="21"/>
+ <source>Add profile</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Select/Edit Profiles</source>
- <translation>Select/Edit Profiles</translation>
+ <location filename="../qml/pages/ProfilesPage.qml" line="29"/>
+ <source>Select/edit profiles</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfilesPage.qml" line="48"/>
<source>Edit</source>
- <translation>Edit</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfilesPage.qml" line="97"/>
<source>Remove</source>
- <translation>Remove</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/ProfilesPage.qml" line="123"/>
<source>Saving profiles failed.</source>
- <translation>Saving profiles failed.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsEditor</name>
<message>
- <source>Edit Settings</source>
- <translation>Edit Settings</translation>
+ <location filename="../qml/pages/SettingsEditor.qml" line="34"/>
+ <source>App settings</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Hide Generated Password</source>
- <translation>Hide Generated Password</translation>
+ <location filename="../qml/pages/SettingsEditor.qml" line="38"/>
+ <source>Hide generated password</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/SettingsEditor.qml" line="44"/>
<source>Auto-clear generated password</source>
- <translation>Auto-clear generated password</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Auto-clear generated pass timeout</source>
- <translation>Auto-clear generated pass timeout</translation>
+ <location filename="../qml/pages/SettingsEditor.qml" line="57"/>
+ <source>Auto-clear generated password timeout</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/SettingsEditor.qml" line="62"/>
<source>Auto-clear master password</source>
- <translation>Auto-clear master password</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <source>Auto-clear master pass timeout</source>
- <translation>Auto-clear master pass timeout</translation>
+ <location filename="../qml/pages/SettingsEditor.qml" line="77"/>
+ <source>Auto-clear master password timeout</source>
+ <translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../qml/pages/SettingsEditor.qml" line="86"/>
<source>Profiles can be edited directly in the profiles selector.</source>
- <translation>Profiles can be edited directly in the profiles selector.</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
</TS>