1
0
Fork 0
mirror of https://github.com/seiichiro0185/sailotp.git synced 2024-11-01 01:38:25 +00:00

Version 1.5

Added French Translation (Thanks to Romain Tartière)
Bugfix: Refresh HOTP-Token from Cover. Closes Github Issue #11
This commit is contained in:
seiichiro 2016-10-09 10:11:24 +02:00
parent 98afd2b574
commit 40e59cae74
7 changed files with 359 additions and 24 deletions

View file

@ -48,6 +48,7 @@ lupdate_only {
TRANSLATIONS = i18n/de.ts \ TRANSLATIONS = i18n/de.ts \
i18n/en.ts \ i18n/en.ts \
i18n/fr.ts \
i18n/sv.ts i18n/sv.ts
} }

348
i18n/fr.ts Normal file
View file

@ -0,0 +1,348 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="68"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation>Un générateur d&apos;OTP simple pour Sailfish (compatible avec les RFC6238 et 4226)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="77"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation>Copyright: Stefan Brand
Licence : BSD (3 clauses)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="95"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP utilise les bibliothèques tierces suivantes :</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<source>Contributors:</source>
<translation>Contributeurs :</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<source>Support</source>
<translation>Support</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="117"/>
<source>Translators:</source>
<translation>Traducteurs :</translation>
</message>
</context>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>Afficher le code QR</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Impossible de créer un code QR avec des paramètres incomplets !</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Add</source>
<translation>Ajouter</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Enregistrer</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<source>Type</source>
<translation>Type</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<source>Time-based (TOTP)</source>
<translation>Basé sur le temps (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<source>Counter-based (HOTP)</source>
<translation>Basé sur un compteur (HOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<source>Steam Guard</source>
<translation>Steam Guard</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<source>Title</source>
<translation>Titre</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<source>Title for the OTP</source>
<translation>Titre de l&apos;OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Secret (at least 16 characters)</source>
<translation>Secret (au moins 16 caractètres)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<source>Secret OTP Key</source>
<translation>Clé secrète OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<source>Length</source>
<translation>Longueur</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<source>Length of the Token</source>
<translation>Longueur du jeton</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="141"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<source>Time Derivation (Seconds)</source>
<translation>Dérivation de temps (secondes)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="155"/>
<source>Next Counter Value</source>
<translation>Prochaine valeur du compteur</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<source>Next Value of the Counter</source>
<translation>Prochaine valeur du compteur</translation>
</message>
</context>
<context>
<name>ExportPage</name>
<message>
<location filename="../qml/pages/ExportPage.qml" line="63"/>
<source>File already exists, choose &quot;Overwrite existing&quot; to overwrite it.</source>
<translation>Le fichier existe déjà, cochez &quot;Écraser un fichier existant&quot; pour le remplacer.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="72"/>
<source>Given file does not exist!</source>
<translation>Le fichier spécifé n&apos;existe pas !</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Import</source>
<translation>Importer</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Export</source>
<translation>Exporter</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="114"/>
<source>Filename</source>
<translation>Nom du fichier</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to import</source>
<translation>Fichier à importer</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to export</source>
<translation>Fichier à exporter</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="128"/>
<source>Overwrite existing</source>
<translation>Écraser un fichier existant</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="134"/>
<source>Password</source>
<translation>Mot de passe</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="135"/>
<source>Password for the file</source>
<translation>Mot de passe pour le fichier</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords don&apos;t match!</source>
<translation>Les mots de passe ne correspondent pas !</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords match!</source>
<translation>Les mots de passe correspondent !</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="149"/>
<source>Repeated Password for the file</source>
<translation>Confirmation du mot de passe pour le fichier</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="173"/>
<source>Here you can Import Tokens from a file. Put in the file location and the password you used on export. Pull left to start the import.</source>
<translation>Vous pouvez ici importer les paramètres d&apos;OTP depuis un fichier. Indiquez le fichier et le mot de passe utilisés lors de l&apos;export. Glissez vers la droite pour démarrer l&apos;import.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>Here you can export Tokens to a file. The exported file will be encrypted with AES-256-CBC and Base64 encoded. Choose a strong password, the file will contain the secrets used to generate the Tokens for your accounts. Pull left to start the export.</source>
<translation>Vous pouvez ici exporter les paramètres d&apos;OTP vers un fichier. Ce fichier sera chiffré en AES-256-CBC et encodé en Base64. Ce fichier contiendra les secrets utilisés pour générer les OTP de vos comptes, choisissez donc un mot de passe fort. Glissez vers la droite pour démarrer l&apos;export.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
<translation>Erreur lors de l&apos;écriture du fichier</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="213"/>
<source>Token Database exported to </source>
<translation>Base des paramètres d&apos;OTP exportée vers</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="216"/>
<source>Could not encrypt tokens. Error: </source>
<translation>Impossible de chiffrer les paramètes d&apos;OTP. Erreur :</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="219"/>
<source>Could not read tokens from Database</source>
<translation>Impossible de lire les paramètres d&apos;OTP depuis la base de données</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="230"/>
<source>Tokens imported from </source>
<translation>Paramètres d&apos;OTP importés depuis</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="235"/>
<source>Unable to decrypt file, did you use the right password?</source>
<translation>Impossible de déchiffrer le fichier, utilisez-vous le bon mot de passe ?</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="238"/>
<source>Could not read from file </source>
<translation>Impossible de lire depuis le fichier</translation>
</message>
</context>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<source>About</source>
<translation>À propos</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Export / Import</source>
<translation>Exporter / Importer</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Add Token</source>
<translation>Ajouter un OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="134"/>
<source>Nothing here</source>
<translation>Aucun mot de passe</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="135"/>
<source>Pull down to add a OTP</source>
<translation>Glissez vers le bas pour ajouter un OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="146"/>
<source>Deleting</source>
<translation>Suppression</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<source>Token for </source>
<translation>OTP pour </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<source> copied to clipboard</source>
<translation> copié dans le presse-papier</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="230"/>
<source>Move up</source>
<translation>Déplacer vers le haut</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<source>Move down</source>
<translation>Déplacer vers le bas</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<source>Edit</source>
<translation>Modifier</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="246"/>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
</context>
<context>
<name>QRPage</name>
<message>
<location filename="../qml/pages/QRPage.qml" line="74"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Impossible de créer un code QR avec des paramètres incomplets !</translation>
</message>
</context>
<context>
<name>ScanOTP</name>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="54"/>
<source>Can&apos;t access temporary directory</source>
<translation>Impossible d&apos;accéder au répertoire temportaire</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="64"/>
<source>Add manually</source>
<translation>Ajouter manuellement</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scanning...</source>
<translation>Balayage</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scan Code</source>
<translation>Balayer un code</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<source>No valid Token data found.</source>
<translation>Pas d&apos;information valide trouvée.</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Appuyez sur l&apos;image pour démarrer / arréter le balayage. Glissez vers le bas pour entrer les paramètres manuellement.</translation>
</message>
</context>
</TS>

View file

@ -103,7 +103,9 @@ CoverBackground {
iconSource: appWin.coverType == "HOTP" ? "image://theme/icon-cover-refresh" : "image://theme/icon-cover-previous" iconSource: appWin.coverType == "HOTP" ? "image://theme/icon-cover-refresh" : "image://theme/icon-cover-previous"
onTriggered: { onTriggered: {
if (appWin.coverType == "HOTP") { if (appWin.coverType == "HOTP") {
appWin.coverOTP = OTP.calcOTP(appWin.coverSecret, "HOTP", appWin.CoverLen, 0, DB.getCounter(appWin.coverTitle, appWin.coverSecret, true)); appWin.listModel.setProperty(appWin.coverIndex, "counter", DB.getCounter(appWin.coverTitle, appWin.coverSecret, true));
appWin.listModel.setProperty(appWin.coverIndex, "otp", OTP.calcOTP(appWin.coverSecret, "HOTP", appWin.coverLen, 0, appWin.listModel.get(appWin.coverIndex).counter));
appWin.coverOTP = appWin.listModel.get(appWin.coverIndex).otp;
} else { } else {
var index = appWin.coverIndex - 1 var index = appWin.coverIndex - 1
if (index < 0) index = appWin.listModel.count - 1 if (index < 0) index = appWin.listModel.count - 1

View file

@ -114,7 +114,7 @@ Page {
font.pixelSize: Theme.fontSizeSmall font.pixelSize: Theme.fontSizeSmall
horizontalAlignment: TextEdit.Center horizontalAlignment: TextEdit.Center
readOnly: true readOnly: true
text: qsTr("Translators:")+"\n\nSwedish: Åke Engelbrektson\nEnglish: Stefan Brand\nGerman: Stefan Brand" text: qsTr("Translators:")+"\n\nSwedish: Åke Engelbrektson\nFrench: Romain Tartière\nEnglish: Stefan Brand\nGerman: Stefan Brand"
color: "white" color: "white"
} }
} }

View file

@ -77,22 +77,6 @@ Dialog {
} }
} }
PullDownMenu {
visible: checkQR()
MenuItem {
text: qsTr("Show QR-Code")
onClicked: {
if (((paramType == "TOTP" || paramType == "TOTP_STEAM") && (otpLabel.text == "" || otpSecret.text == "")) || (paramType == "HOTP" && (otpLabel.text == "" || otpSecret.text == "" || otpCounter.text <= 0))) {
notify.show(qsTr("Can't create QR-Code from incomplete settings!"), 4000);
} else {
pageStack.push(Qt.resolvedUrl("QRPage.qml"), {paramLabel: otpLabel.text, paramKey: otpSecret.text, paramType: paramType, paramCounter: otpCounter.text});
}
}
}
}
VerticalScrollDecorator {} VerticalScrollDecorator {}
Column { Column {
@ -140,6 +124,7 @@ Dialog {
TextField { TextField {
id: otpLen id: otpLen
width: parent.width width: parent.width
visible: paramType != "TOTP_STEAM" ? true : false
label: qsTr("Length") label: qsTr("Length")
text: paramLen text: paramLen
placeholderText: qsTr("Length of the Token") placeholderText: qsTr("Length of the Token")
@ -202,8 +187,3 @@ Dialog {
} }
} }
} }

View file

@ -1,3 +1,7 @@
* Sun Oct 09 2016 Stefan Brand <sailfish@seiichiro0185.org> 1.5-1
- Added French Translation (Thanks to Romain Tartière)
- Bugfix: Refresh HOTP-Token from Cover. Closes Github Issue #11
* Thu Jul 14 2016 Stefan Brand <sailfish@seiichiro0185.org> 1.4-1 * Thu Jul 14 2016 Stefan Brand <sailfish@seiichiro0185.org> 1.4-1
- Added Setting for Time Derivation - Added Setting for Time Derivation
- Added Setting for Token Length - Added Setting for Token Length

View file

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