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

Version 1.7

Added Chinese Translation contributed by BirdZhang
Added Finnish Translation contributed by Johan Heikkilä (hevanaa)
Added Russian Translation contributed by moorchegue
Added Spanish Translation contributed by p4moedo
Some internal Preparation for future features
This commit is contained in:
seiichiro 2018-04-02 09:32:11 +02:00
parent c17e8d5113
commit b0dcf11fe9
18 changed files with 1855 additions and 109 deletions

1
.gitignore vendored
View file

@ -2,4 +2,5 @@
*.pro.user
*.pro.user.*
rpm/harbour-sailotp.spec
rpm/harbour-sailotp.spec.*
i18n/*.qm

View file

@ -15,7 +15,7 @@ From the main view a token can be copied to the clipboard by tapping on it.
From the pulley menu the token database can be exported to a file for backup purposes. The backup is a AES-256-CBC encrypted and
Base64 encoded file containing a JSON-representation of the database. It can be decrypted with openssl using the following command:
openssl enc -d -a -aes-256-cbc -in <file>
openssl enc -d -a -A -md md5 -aes-256-cbc -in <file>
if you need the information outside of SailOTP.
@ -25,8 +25,9 @@ It is also possible to generate tokens for SteamGuard (Steams TOTP-Variant for 2
## Contact and Issues
If you find any bugs or want to suggest a feature, feel free to use Githubs
Issues feature or write an email to sailfish _AT_ seiichiro0185.org
If you find any bugs or want to suggest a feature, feel free to use Githubs Issues feature at
<a href="https://github.com/seiichiro0185/sailotp/issues" target="_blank">https://github.com/seiichiro0185/sailotp/issues</a>
or write an email to sailfish _AT_ seiichiro0185.org
## License
@ -40,7 +41,7 @@ SailOTP uses the SHA-1 and HMAC-Implementation from
SailOTP also uses the AES-Implementation from
<a href="https://github.com/mdp/gibberish-aes" target="_blank">https://github.com/mdp/gibberish-aes</a>
<a href="https://code.google.com/archive/p/crypto-js/" target="_blank">https://code.google.com/archive/p/crypto-js/</a>
The implementation of the TOTP-algorithm was inspired by:
@ -56,6 +57,11 @@ The qrencode library is used for QRCode-encoding existing tokens for export to o
The following people have contributed to translating SailOTP:
* Chinese: BirdZhang
* Finnish: Johan Heikkilä (hevanaa)
* French: Romain Tartière (smortex)
* Russian: moorchegue
* Spanish: p4moedo
* Swedish: Åke Engelbrektson (eson57)
* English: Stefan Brand (seiichiro0185)
* German: Stefan Brand (seiichiro0185)

View file

@ -47,8 +47,12 @@ lupdate_only {
TRANSLATIONS = i18n/de.ts \
i18n/en.ts \
i18n/es.ts \
i18n/fi.ts \
i18n/fr.ts \
i18n/sv.ts
i18n/ru.ts \
i18n/sv.ts \
i18n/zh_CN.ts
}
include(src/qzxing/QZXing.pri)

View file

@ -12,36 +12,36 @@
<translation type="vanished">Copyright: Stefan Brand&lt;br/&gt;Lizenz: BSD (3-Klausel)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="68"/>
<location filename="../qml/pages/About.qml" line="75"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation>Ein einfacher Sailfish OTP-Generator
(RFC 6238/4226-kompatibel)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="77"/>
<location filename="../qml/pages/About.qml" line="84"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation>Copyright: Stefan Brand
Lizenz: BSD (3-Klausel)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="95"/>
<location filename="../qml/pages/About.qml" line="110"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP verwendet folgende externe Bibliotheken:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>Mitwirkende:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation>Unterstützung</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="117"/>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>Übersetzer:</translation>
</message>
@ -49,12 +49,12 @@ Lizenz: BSD (3-Klausel)</translation>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>QR-Code anzeigen</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden!</translation>
</message>
@ -109,28 +109,28 @@ Lizenz: BSD (3-Klausel)</translation>
<translation>Geheimer Schlüssel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation>Länge</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<source>Length of the Token</source>
<translation>Länge des Tokens</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="141"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation>Zeitabweichung (Sekunden)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="155"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation>Nächster Zählerwert</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Next Value of the Counter</source>
<translation>Nächster Wert für den Zähler</translation>
</message>
@ -214,6 +214,11 @@ Lizenz: BSD (3-Klausel)</translation>
<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>Hier können Tokens in eine Datei exportiert werden. Die Datei wird mit AES-256-CBC verschlüsselt und Base64-kodiert. Wähle ein starkes Passwort, die Datei enthält die geheimen Schlüssel zur Erzeugung der Tokens für deine Accounts. Nach links ziehen um zu starten.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translation>Mit folgendem Openssl-Befehl kann der Inhalt der Exportdatei außerhalb von SailOTP angezeigt werden:</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
@ -267,56 +272,61 @@ Lizenz: BSD (3-Klausel)</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Export / Import</source>
<translation>Export / Import</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<location filename="../qml/pages/MainView.qml" line="108"/>
<source>Add Token</source>
<translation>Token hinzufügen</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="134"/>
<location filename="../qml/pages/MainView.qml" line="138"/>
<source>Nothing here</source>
<translation>Hier ist nichts</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="135"/>
<location filename="../qml/pages/MainView.qml" line="139"/>
<source>Pull down to add a OTP</source>
<translation>Nach unten ziehen zum hinzufügen</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="146"/>
<location filename="../qml/pages/MainView.qml" line="150"/>
<source>Deleting</source>
<translation>Lösche</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source>Token for </source>
<translation>Token für </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source> copied to clipboard</source>
<translation> kopiert</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="230"/>
<location filename="../qml/pages/MainView.qml" line="234"/>
<source>Move up</source>
<translation>Nach oben</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="239"/>
<source>Move down</source>
<translation>Nach unten</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="244"/>
<source>Edit</source>
<translation>Bearbeiten</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="246"/>
<location filename="../qml/pages/MainView.qml" line="250"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
@ -366,4 +376,22 @@ Lizenz: BSD (3-Klausel)</translation>
<translation type="vanished">Vorschau antippen um den Scan zu starten. Nach unten ziehen um manuell hinzu zu fügen.</translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translation>Verhalten</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation>Token bei antippen als QR-Code zeigen</translation>
</message>
</context>
</TS>

View file

@ -4,34 +4,34 @@
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="68"/>
<location filename="../qml/pages/About.qml" line="75"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="77"/>
<location filename="../qml/pages/About.qml" line="84"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="95"/>
<location filename="../qml/pages/About.qml" line="110"/>
<source>SailOTP uses the following third party libs:</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>Contributor:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation>support</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="117"/>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>Translators:</translation>
</message>
@ -39,12 +39,12 @@ License: BSD (3-clause)</source>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>Show QR-Code</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Can&apos;t create QR-Code from incomplete settings!</translation>
</message>
@ -99,28 +99,28 @@ License: BSD (3-clause)</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation>Length</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<source>Length of the Token</source>
<translation>Length of the Token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="141"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation>Time Derivation (Seconds)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="155"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Next Value of the Counter</source>
<translation></translation>
</message>
@ -204,6 +204,11 @@ License: BSD (3-clause)</source>
<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></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
@ -249,56 +254,61 @@ License: BSD (3-clause)</source>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Export / Import</source>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Export / Import</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="108"/>
<source>Add Token</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="134"/>
<location filename="../qml/pages/MainView.qml" line="138"/>
<source>Nothing here</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="135"/>
<location filename="../qml/pages/MainView.qml" line="139"/>
<source>Pull down to add a OTP</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="146"/>
<location filename="../qml/pages/MainView.qml" line="150"/>
<source>Deleting</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source>Token for </source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source> copied to clipboard</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="230"/>
<location filename="../qml/pages/MainView.qml" line="234"/>
<source>Move up</source>
<translation>Move up</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="239"/>
<source>Move down</source>
<translation>Move down</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="244"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="246"/>
<location filename="../qml/pages/MainView.qml" line="250"/>
<source>Delete</source>
<translation></translation>
</message>
@ -344,4 +354,22 @@ License: BSD (3-clause)</source>
<translation></translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation></translation>
</message>
</context>
</TS>

377
i18n/es.ts Normal file
View file

@ -0,0 +1,377 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="75"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation>Un sencillo generador de códigos OTP
(Compatible con RFC 6238/4226)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="84"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation>Derechos de autor: Stefan Brand
Licencia: BSD (de 3 cláusulas)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="110"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP usa las siguientes librerías de terceros:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>Contribuidor:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation>soporte</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>Traductores:</translation>
</message>
</context>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>Mostrar código QR</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>¡No se puede crear el código QR a partir de una configuración incompleta!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Guardar</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Add</source>
<translation>Añadir</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<source>Time-based (TOTP)</source>
<translation>Basado en tiempo (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<source>Counter-based (HOTP)</source>
<translation>Basado en contador (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>Título</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<source>Title for the OTP</source>
<translation>Nombre para el OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Secret (at least 16 characters)</source>
<translation>Cadena secreta (al menos 16 caracteres)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<source>Secret OTP Key</source>
<translation>Llave secreta OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation>Longitud</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<source>Length of the Token</source>
<translation>Longitud del token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation>Derivación de tiempo (segundos)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation>Siguiente Contador</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Next Value of the Counter</source>
<translation>Siguiente valor del contador</translation>
</message>
</context>
<context>
<name>ExportPage</name>
<message>
<location filename="../qml/pages/ExportPage.qml" line="63"/>
<source>File already exists, choose &quot;Overwrite existing&quot; to overwrite it.</source>
<translation>El fichero ya existe, escoja la opción &quot;Sobreescribir existente&quot; para sobreescribirlo.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="72"/>
<source>Given file does not exist!</source>
<translation>¡El fichero proporcionado no exsiste!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Export</source>
<translation>Exportar</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Import</source>
<translation>Importar</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="114"/>
<source>Filename</source>
<translation>Nombre del fichero</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to import</source>
<translation>Fichero a importar</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to export</source>
<translation>Fichero a exportar</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="128"/>
<source>Overwrite existing</source>
<translation>Sobreescribir existente</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="134"/>
<source>Password</source>
<translation>Contraseña</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="135"/>
<source>Password for the file</source>
<translation>Contraseña para el fichero</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords don&apos;t match!</source>
<translation>¡Las contraseñas no coinciden!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords match!</source>
<translation>¡Las contraseñas coinciden!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="149"/>
<source>Repeated Password for the file</source>
<translation>Contraseña repetida para el archivo</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>Aquí puede Importar Tokens desde un fichero. Ponga la localización del fichero y la contraseña utilizada en la exportación. Tire hacia la izquierda para comenzar la importación.</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>Aquí puede exportar Tokens a un fichero. El fichero exportado será encriptado con AES-256-CBC y codificado en Base64. Escoja una contraseña segura, el fichero contendrá las cadenas secretas utilizadas para la generación de los Tokens. Tire hacia la izquierda para comenzar la exportación.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translation>Para ver los contenidos del fichero de exportación fuera de SailOTP utilize el siguiente comando openssl:</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
<translation>Error escribiendo el fichero</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="213"/>
<source>Token Database exported to </source>
<translation>Base de datos de Tokens exportada en</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="216"/>
<source>Could not encrypt tokens. Error: </source>
<translation>No se ha podido encriptar los tokens. Error: </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="219"/>
<source>Could not read tokens from Database</source>
<translation>No se ha podido leer los tokens desde la Base de datos</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="230"/>
<source>Tokens imported from </source>
<translation>Tokens importados desde</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="235"/>
<source>Unable to decrypt file, did you use the right password?</source>
<translation>No se ha podido desencriptar el fichero, ¿ha utilizado el password correcto?</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="238"/>
<source>Could not read from file </source>
<translation>No se ha podido leer desde el fichero</translation>
</message>
</context>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<source>About</source>
<translation>Acerca de</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Settings</source>
<translation>Configuración</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Export / Import</source>
<translation>Exportar/Importar</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="108"/>
<source>Add Token</source>
<translation>Añadir Token</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="138"/>
<source>Nothing here</source>
<translation>Nada aquí</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<source>Pull down to add a OTP</source>
<translation>Tire hacia abajo para añadir tokens OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="150"/>
<source>Deleting</source>
<translation>Borrando</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source>Token for </source>
<translation>Token para </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source> copied to clipboard</source>
<translation> copiado al portapapeles</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="234"/>
<source>Move up</source>
<translation>Ascender</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="239"/>
<source>Move down</source>
<translation>Descender</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="244"/>
<source>Edit</source>
<translation>Editar</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="250"/>
<source>Delete</source>
<translation>Borrar</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>¡No se puede crear el código QR a partir de una configuración incompleta!</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>No se puede acceder al directorio temporal</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="64"/>
<source>Add manually</source>
<translation>Añadir manualmente</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scan Code</source>
<translation>Escanear código</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scanning...</source>
<translation>Escaneando...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<source>No valid Token data found.</source>
<translation>No se han encontrado datos válidos</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Toque la imagen para comenzar/parar el escaneo. Tire hacia abajo para una configuración manual.</translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation>Configuración</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Funcionamiento</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation>Mostrar el token como código QR al tocar</translation>
</message>
</context>
</TS>

381
i18n/fi.ts Normal file
View file

@ -0,0 +1,381 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fi_FI">
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="75"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation>Yksinkertainen Sailfish OTP-generaattori
(RFC 6238/4226-yhteensopiva)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="84"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation>Copyright: Stefan Brand
Lisenssi: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="110"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP käyttää seuraavat kolmannen osapuolen kirjastot:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>Avustajat:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation>tuki</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>Kääntäjät:</translation>
</message>
</context>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>Näytä QR-koodi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>QR-koodin luonti epäonnistui puutteellisten asetuksien takia!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Tallenna</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Add</source>
<translation>Lisää</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<source>Type</source>
<translation>Tyyppi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<source>Time-based (TOTP)</source>
<translation>Aikapohjainen (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<source>Counter-based (HOTP)</source>
<translation>Laskentapohjainen (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>Nimi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<source>Title for the OTP</source>
<translation>OTP:n nimi</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Secret (at least 16 characters)</source>
<translation>Salaisuus (vähintään 16 merkkiä)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<source>Secret OTP Key</source>
<translation>Salainen OTP-avain</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation>Pituus</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<source>Length of the Token</source>
<translation>Tunnuksen pituus</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation>Aikapoikkeama (sekunneissa)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation>Seuraava laskenta-arvo</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Next Value of the Counter</source>
<translation>Laskurin seuraava arvo</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>Tiedosto on jo olemassa. Korvaa vanha tiedosto valitsemalla &quot;Ylikirjoita&quot;.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="72"/>
<source>Given file does not exist!</source>
<translation>Tiedosto ei ole olemassa!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Export</source>
<translation>Eksportoi</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Import</source>
<translation>Importoi</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="114"/>
<source>Filename</source>
<translation>Tiedoston nimi</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to import</source>
<translation>Importoitava tiedosto</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to export</source>
<translation>Eksportoitava tiedosto</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="128"/>
<source>Overwrite existing</source>
<translation>Ylikirjoita</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="134"/>
<source>Password</source>
<translation>Salasana</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="135"/>
<source>Password for the file</source>
<translation>Tiedoston salasana</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords don&apos;t match!</source>
<translation>Salasanat eivät täsmää!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords match!</source>
<translation>Salasanat täsmäävät!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="149"/>
<source>Repeated Password for the file</source>
<translation>Tiedoston salasana uudelleen</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>Voit importata tunnuksia tiedostosta. Anna tiedoston polku ja salasana jonka annoit eksportoitaessa. Pyyhkäise vasemmalle aloittaaksesi importin.</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>Voit eksportoida tunnukset tiedostoon. Eksportoitu tiedosto enkryptataan AES-256-CBC- ja Base64-salauksella. Valitse vahva salasana, koska tiedostosta voidaan kääntää tiliesi tunnukset. Pyyhkäise vasemmalle aloittaaksesi eksportin.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Jos haluat tarkastella vientitiedoston sisältöä SailOTP: n ulkopuolella, käytä seuraavaa openssl-komentoa:</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
<translation>Virhe tiedoston kirjoituksessa </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="213"/>
<source>Token Database exported to </source>
<translation>Tunnus-tietokanta eksportoitu polkuun </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="216"/>
<source>Could not encrypt tokens. Error: </source>
<translation>Tunnuksia ei voitu enkryptata. Virhe: </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="219"/>
<source>Could not read tokens from Database</source>
<translation>Tunnuksia ei voitu lukea tietokannasta</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="230"/>
<source>Tokens imported from </source>
<translation>Tunnukset importoitu polusta </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="235"/>
<source>Unable to decrypt file, did you use the right password?</source>
<translation>Tiedoston dekryptaus epäonnistui. Oliko salasana oikea?</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="238"/>
<source>Could not read from file </source>
<translation>Tiedoston lukeminen epäonnistui </translation>
</message>
</context>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<source>About</source>
<translation>Tietoja</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Settings</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Asetukset</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Export / Import</source>
<translation>Eksportoi / Importoi</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="108"/>
<source>Add Token</source>
<translation>Lisää tunnus</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="138"/>
<source>Nothing here</source>
<translation>Tyhjä</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<source>Pull down to add a OTP</source>
<translation>Vedä alaspäin lisääksesi OTP:n</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="150"/>
<source>Deleting</source>
<translation>Poistaa</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source>Token for </source>
<translation>Tunnus </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source> copied to clipboard</source>
<translation> kopioitu leikepöydälle</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="234"/>
<source>Move up</source>
<translation>Siirrä ylös</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="239"/>
<source>Move down</source>
<translation>Siirrä alas</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="244"/>
<source>Edit</source>
<translation>Muokkaa</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="250"/>
<source>Delete</source>
<translation>Poista</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>QR-koodin luonti ei onnistu puutteellisten asetusten takia!</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>Pääsy temp-hakemistoon on estetty</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="64"/>
<source>Add manually</source>
<translation>Lisää käsin</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scan Code</source>
<translation>Skannaa koodi</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scanning...</source>
<translation>Skannataan...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<source>No valid Token data found.</source>
<translation>Voimassa olevaa tunnustietoa ei löytynyt.</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="142"/>
<source>Tap the picture to start / stop scanning. Pull down to add Token manually.</source>
<translation>Käynnistä / lopeta skannaus painamalla kuvaa. Vedä alaspäin lisääksesi tunnuksen käsin.</translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation>Asetukset</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Käytös</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Kosketa tokenä QR-koodina</translation>
</message>
</context>
</TS>

View file

@ -4,35 +4,35 @@
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="68"/>
<location filename="../qml/pages/About.qml" line="75"/>
<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"/>
<location filename="../qml/pages/About.qml" line="84"/>
<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"/>
<location filename="../qml/pages/About.qml" line="110"/>
<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"/>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>Contributeurs :</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation>Support</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="117"/>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>Traducteurs :</translation>
</message>
@ -100,28 +100,28 @@ Licence : BSD (3 clauses)</translation>
<translation>Clé secrète OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation>Longueur</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<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"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation>Dérivation de temps (secondes)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="155"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation>Prochaine valeur du compteur</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Next Value of the Counter</source>
<translation>Prochaine valeur du compteur</translation>
</message>
@ -205,6 +205,12 @@ Licence : BSD (3 clauses)</translation>
<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="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Pour afficher le contenu du fichier d&apos;exportation en dehors de SailOTP, utilisez la commande openssl suivante:</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
@ -250,56 +256,62 @@ Licence : BSD (3 clauses)</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Settings</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Export / Import</source>
<translation>Exporter / Importer</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<location filename="../qml/pages/MainView.qml" line="108"/>
<source>Add Token</source>
<translation>Ajouter un OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="134"/>
<location filename="../qml/pages/MainView.qml" line="138"/>
<source>Nothing here</source>
<translation>Aucun mot de passe</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="135"/>
<location filename="../qml/pages/MainView.qml" line="139"/>
<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"/>
<location filename="../qml/pages/MainView.qml" line="150"/>
<source>Deleting</source>
<translation>Suppression</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source>Token for </source>
<translation>OTP pour </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source> copied to clipboard</source>
<translation> copié dans le presse-papier</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="230"/>
<location filename="../qml/pages/MainView.qml" line="234"/>
<source>Move up</source>
<translation>Déplacer vers le haut</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="239"/>
<source>Move down</source>
<translation>Déplacer vers le bas</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="244"/>
<source>Edit</source>
<translation>Modifier</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="246"/>
<location filename="../qml/pages/MainView.qml" line="250"/>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
@ -345,4 +357,24 @@ Licence : BSD (3 clauses)</translation>
<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>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Comportement</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Touchez le jeton comme un code QR</translation>
</message>
</context>
</TS>

381
i18n/ru.ts Normal file
View file

@ -0,0 +1,381 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="75"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation>Простой генератор OTP для Sailfish
(совместим с RFS 6238/4226)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="84"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation>Авторские права: Стефан Брэнд
Лицензия: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="110"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP использует следующие сторонние библиотеки:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>Участники:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation>Поддержка</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>Переводчики:</translation>
</message>
</context>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>Показать QR-код</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Невозможно создать QR-код из-за неполных настроек!</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation>Сохранить</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<source>Time-based (TOTP)</source>
<translation>На основе времени (TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<source>Counter-based (HOTP)</source>
<translation>На основе счетчика (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>Заголовок</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<source>Title for the OTP</source>
<translation>Заголовок для OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Secret (at least 16 characters)</source>
<translation>Секрет (минимум 16 символов)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<source>Secret OTP Key</source>
<translation>Секретный ключ OTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation>Длина</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<source>Length of the Token</source>
<translation>Длина токена</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation>Интервал расхождения (секунд)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation>Следующее значение счетчика</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Next Value of the Counter</source>
<translation>Следующее значение счетчика</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>Файл уже существует, выберите: «Перезаписать существующий» для его перезаписи.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="72"/>
<source>Given file does not exist!</source>
<translation>Данный файл не существует!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Export</source>
<translation>Экспорт</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Import</source>
<translation>Импорт</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="114"/>
<source>Filename</source>
<translation>Имя файла</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to import</source>
<translation>Файл для импорта</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to export</source>
<translation>Файл для экспорта</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="128"/>
<source>Overwrite existing</source>
<translation>Перезаписать существующий</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="134"/>
<source>Password</source>
<translation>Пароль</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="135"/>
<source>Password for the file</source>
<translation>Пароль для файла</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords don&apos;t match!</source>
<translation>Пароли не совпадают!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords match!</source>
<translation>Пароли совпадают!</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="149"/>
<source>Repeated Password for the file</source>
<translation>Повторный пароль для файла</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>Здесь можно импортировать токены из файла. Введите путь к файлу и пароль, использованный при экспорте. Потяните влево чтобы начать импорт.</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>Здесь можно экспортировать токены в файл. Экспортированный файл будет зашифрован с использованием AES-256-CBC и кодирован в Base64. Выберите сильный пароль файл будет содержать секреты, использованные для генерации токенов для Ваших аккаунтов. Потяните влево чтобы начать экспорт.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Чтобы просмотреть содержимое файла экспорта за пределами SailOTP, используйте следующую команду openssl:</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
<translation>Ошибка при записи в файл </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="213"/>
<source>Token Database exported to </source>
<translation>База данных токенов экспортирована в </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="216"/>
<source>Could not encrypt tokens. Error: </source>
<translation>Не удалось зашифровать токены. Ошибка: </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="219"/>
<source>Could not read tokens from Database</source>
<translation>Не удалось прочесть токены из базы данных</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="230"/>
<source>Tokens imported from </source>
<translation>Токены импортированы из </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="235"/>
<source>Unable to decrypt file, did you use the right password?</source>
<translation>Не удалось расшифровать файл. Был ли введен правильный пароль?</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="238"/>
<source>Could not read from file </source>
<translation>Не удалось прочесть из файла </translation>
</message>
</context>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<source>About</source>
<translation>О приложении</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Settings</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>настройки</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Export / Import</source>
<translation>Экспорт / импорт</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="108"/>
<source>Add Token</source>
<translation>Добавить токен</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="138"/>
<source>Nothing here</source>
<translation>Ничего нету</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<source>Pull down to add a OTP</source>
<translation>Потяните вниз чтобы добавить OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="150"/>
<source>Deleting</source>
<translation>Удаление</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source>Token for </source>
<translation>Токен для </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source> copied to clipboard</source>
<translation> скопирован в буфер обмена</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="234"/>
<source>Move up</source>
<translation>Передвинуть вверх</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="239"/>
<source>Move down</source>
<translation>Передвинуть вниз</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="244"/>
<source>Edit</source>
<translation>Редактировать</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="250"/>
<source>Delete</source>
<translation>Удалить</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>Не удалось создать QR-код из-за неполных настроек!</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>Не удалось получить доступ к временной директории</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="64"/>
<source>Add manually</source>
<translation>Добавить вручную</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scan Code</source>
<translation>Отсканировать код</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scanning...</source>
<translation>Сканирование...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<source>No valid Token data found.</source>
<translation>Не найдено корректных данных для токена.</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>Нажмите на изображение чтобы начать / остановить сканирование. Потяните вниз чтобы добавить токен вручную.</translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation>настройки</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>поведение</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Сенсорный токен как QR-код</translation>
</message>
</context>
</TS>

View file

@ -4,36 +4,36 @@
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="68"/>
<location filename="../qml/pages/About.qml" line="75"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation>En enkel Sailfish OTP-generator
(RFC 6238/4226-kompatibel)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="77"/>
<location filename="../qml/pages/About.qml" line="84"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation>Copyright: Stefan Brand
Licens: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="95"/>
<location filename="../qml/pages/About.qml" line="110"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP använder följande tredjeparts bibliotek:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>Medarbetare:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="106"/>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation>försörjning</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="117"/>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>Översättare:</translation>
</message>
@ -41,12 +41,12 @@ Licens: BSD (3-clause)</translation>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="70"/>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation>Visa QR-kod</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="73"/>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation>Kan inte skapa QR-kod från ofullständiga inställningar!</translation>
</message>
@ -101,28 +101,28 @@ Licens: BSD (3-clause)</translation>
<translation>Hemlig OTP-nyckel</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="127"/>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation>längd</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="129"/>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<source>Length of the Token</source>
<translation>Längden av token</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="141"/>
<location filename="../qml/pages/AddOTP.qml" line="143"/>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation>Tidsavvikelsen (sekunder)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="155"/>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation>Nästa räknarvärde</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="157"/>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Next Value of the Counter</source>
<translation>Nästa värde räknaren</translation>
</message>
@ -206,6 +206,12 @@ Licens: BSD (3-clause)</translation>
<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>Här kan du exportera Token till en fil. Den exporterade filen kommer att krypteras med AES-256-CBC och Base64. Välj ett starkt lösenord, filen kommer att innehålla hemligheterna som användes för att generera Token för ditt konto. Svep åt vänster för att starta exporten.</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Om du vill visa innehållet i exportfilen utanför SailOTP använder du följande openssl-kommando:</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
@ -251,56 +257,62 @@ Licens: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Settings</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Inställningar</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Export / Import</source>
<translation>Export / Import</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<location filename="../qml/pages/MainView.qml" line="108"/>
<source>Add Token</source>
<translation>Lägg till Token</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="134"/>
<location filename="../qml/pages/MainView.qml" line="138"/>
<source>Nothing here</source>
<translation>Inget här</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="135"/>
<location filename="../qml/pages/MainView.qml" line="139"/>
<source>Pull down to add a OTP</source>
<translation>Dra neråt för att lägga till en OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="146"/>
<location filename="../qml/pages/MainView.qml" line="150"/>
<source>Deleting</source>
<translation>Tar bort</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source>Token for </source>
<translation>Token för </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="162"/>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source> copied to clipboard</source>
<translation>kopierad till urklipp</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="230"/>
<location filename="../qml/pages/MainView.qml" line="234"/>
<source>Move up</source>
<translation>Flytta upp</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="235"/>
<location filename="../qml/pages/MainView.qml" line="239"/>
<source>Move down</source>
<translation>Flytta ner</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="240"/>
<location filename="../qml/pages/MainView.qml" line="244"/>
<source>Edit</source>
<translation>Redigera</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="246"/>
<location filename="../qml/pages/MainView.qml" line="250"/>
<source>Delete</source>
<translation>Ta bort</translation>
</message>
@ -346,4 +358,24 @@ Licens: BSD (3-clause)</translation>
<translation>Tryck bilden för att starta / stoppa skanning. Dra neråt för att lägga till Token manuellt.</translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation>Inställningar</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Beteende</translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translatorcomment>Translated using Google Translate</translatorcomment>
<translation>Peka token som en QR-kod</translation>
</message>
</context>
</TS>

376
i18n/zh_CN.ts Normal file
View file

@ -0,0 +1,376 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>About</name>
<message>
<location filename="../qml/pages/About.qml" line="75"/>
<source>A Simple Sailfish OTP Generator
(RFC 6238/4226 compatible)</source>
<translation>OTP生成器&lt;br/&gt;(RFC 6238/4226 )</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="84"/>
<source>Copyright: Stefan Brand
License: BSD (3-clause)</source>
<translation>Stefan Brand
许可证: BSD (3-clause)</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="110"/>
<source>SailOTP uses the following third party libs:</source>
<translation>SailOTP使用下面的第三方库</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Contributors:</source>
<translation>:</translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="121"/>
<source>Support</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/About.qml" line="132"/>
<source>Translators:</source>
<translation>:</translation>
</message>
</context>
<context>
<name>AddOTP</name>
<message>
<location filename="../qml/pages/AddOTP.qml" line="69"/>
<source>Show QR-Code</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="72"/>
<source>Can&apos;t create QR-Code from incomplete settings!</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="86"/>
<source>Add</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="91"/>
<source>Type</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="93"/>
<source>Time-based (TOTP)</source>
<translation>(TOTP)</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="94"/>
<source>Counter-based (HOTP)</source>
<translation>HOTP</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="95"/>
<source>Steam Guard</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="101"/>
<source>Title</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="102"/>
<source>Title for the OTP</source>
<translation>OTP的标题</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="114"/>
<source>Secret (at least 16 characters)</source>
<translation>16</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="116"/>
<source>Secret OTP Key</source>
<translation>OTP密钥</translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="128"/>
<source>Length</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="130"/>
<source>Length of the Token</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="142"/>
<location filename="../qml/pages/AddOTP.qml" line="144"/>
<source>Time Derivation (Seconds)</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="156"/>
<source>Next Counter Value</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/AddOTP.qml" line="158"/>
<source>Next Value of the Counter</source>
<translation></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>&quot;&quot;</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="72"/>
<source>Given file does not exist!</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Export</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="91"/>
<location filename="../qml/pages/ExportPage.qml" line="107"/>
<source>Import</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="114"/>
<source>Filename</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to import</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="115"/>
<source>File to export</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="128"/>
<source>Overwrite existing</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="134"/>
<source>Password</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="135"/>
<source>Password for the file</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords don&apos;t match!</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="148"/>
<source>Passwords match!</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="149"/>
<source>Repeated Password for the file</source>
<translation></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>使</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>使AES-256-CBC和Base64编码进行加密</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="189"/>
<source>To view the content of the export file outside of SailOTP use the following openssl command:</source>
<translation>SailfOTP外面查看导出的文件使openssl命令</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="211"/>
<source>Error writing to file </source>
<translation> </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="213"/>
<source>Token Database exported to </source>
<translation> </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="216"/>
<source>Could not encrypt tokens. Error: </source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="219"/>
<source>Could not read tokens from Database</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="230"/>
<source>Tokens imported from </source>
<translation> </translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="235"/>
<source>Unable to decrypt file, did you use the right password?</source>
<translation>使</translation>
</message>
<message>
<location filename="../qml/pages/ExportPage.qml" line="238"/>
<source>Could not read from file </source>
<translation> </translation>
</message>
</context>
<context>
<name>MainView</name>
<message>
<location filename="../qml/pages/MainView.qml" line="96"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="100"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="104"/>
<source>Export / Import</source>
<translation>/</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="108"/>
<source>Add Token</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="138"/>
<source>Nothing here</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="139"/>
<source>Pull down to add a OTP</source>
<translation>OTP</translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="150"/>
<source>Deleting</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source>Token for </source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="166"/>
<source> copied to clipboard</source>
<translation> </translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="234"/>
<source>Move up</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="239"/>
<source>Move down</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="244"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/MainView.qml" line="250"/>
<source>Delete</source>
<translation></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></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>访</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="64"/>
<source>Add manually</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scan Code</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="71"/>
<source>Scanning...</source>
<translation>...</translation>
</message>
<message>
<location filename="../qml/pages/ScanOTP.qml" line="101"/>
<source>No valid Token data found.</source>
<translation></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>/</translation>
</message>
</context>
<context>
<name>Settings</name>
<message>
<location filename="../qml/pages/Settings.qml" line="50"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="52"/>
<source>Behaviour</source>
<translation></translation>
</message>
<message>
<location filename="../qml/pages/Settings.qml" line="56"/>
<source>Show Token as QRCode on Tap</source>
<translation></translation>
</message>
</context>
</TS>

View file

@ -29,6 +29,7 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
import org.nemomobile.configuration 1.0
import "pages"
import "components"
@ -52,6 +53,15 @@ ApplicationWindow
// Global Component for showing notification banners
NotifyBanner { id: notify }
// Global Settings Storage
ConfigurationGroup
{
id: settings
path: "/apps/harbour-sailotp"
property bool showQrDefaultAction: false
}
// Add an entry to the list
function appendOTP(title, secret, type, counter, fav, len, diff) {
listModel.append({"secret": secret, "title": title, "fav": fav, "type": type, "counter": counter, "len": len, "diff": diff, "otp": "------"});

View file

@ -45,12 +45,19 @@ Page {
Column {
id: column
width: parent.width
spacing: Theme.paddingLarge
spacing: Theme.paddingSmall
TextArea {
id: spacer
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
readOnly: true
text: ""
height: Theme.paddingLarge*2
}
Image {
id: logo
source: "../sailotp.png"
anchors.topMargin: 20
anchors.horizontalCenter: parent.horizontalCenter
}
Label {
@ -77,12 +84,20 @@ Page {
text: qsTr("Copyright: Stefan Brand\nLicense: BSD (3-clause)")
color: "white"
}
Button {
id: manual
anchors.horizontalCenter: parent.horizontalCenter
text: "<a href=\"https://www.seiichiro0185.org/sailfish:apps:sailotp:manual\">Online Manual</a>"
onClicked: {
Qt.openUrlExternally("https://www.seiichiro0185.org/sailfish:apps:sailotp:manual")
}
}
Button {
id: homepage
anchors.horizontalCenter: parent.horizontalCenter
text: "<a href=\"https://www.seiichiro0185.org/gitlab/seiichiro0185/harbour-sailotp.git\">Source Code</a>"
text: "<a href=\"https://github.com/seiichiro0185/sailotp/\">Source Code & Issue Tracker</a>"
onClicked: {
Qt.openUrlExternally("https://www.seiichiro0185.org/gitlab/seiichiro0185/harbour-sailotp.git")
Qt.openUrlExternally("https://github.com/seiichiro0185/sailotp/")
}
}
TextArea {
@ -92,7 +107,7 @@ Page {
font.pixelSize: Theme.fontSizeSmall
horizontalAlignment: TextEdit.Center
readOnly: true
text: qsTr("SailOTP uses the following third party libs:")+"\n\nhttp://caligatio.github.io/jsSHA/\nhttps://github.com/mdp/gibberish-aes/\nhttp://sourceforge.net/projects/qzxing/\nhttp://fukuchi.org/works/qrencode/"
text: "\n"+qsTr("SailOTP uses the following third party libs:")+"\n\nhttp://caligatio.github.io/jsSHA/\nhttps://code.google.com/archive/p/crypto-js/\nhttp://sourceforge.net/projects/qzxing/\nhttp://fukuchi.org/works/qrencode/"
color: "white"
}
@ -114,7 +129,7 @@ Page {
font.pixelSize: Theme.fontSizeSmall
horizontalAlignment: TextEdit.Center
readOnly: true
text: qsTr("Translators:")+"\n\nSwedish: Åke Engelbrektson\nFrench: Romain Tartière\nEnglish: Stefan Brand\nGerman: Stefan Brand"
text: qsTr("Translators:")+"\n\nChinese: BirdZhang\nFinnish: Johan Heikkilä\nFrench: Romain Tartière\nRussian: moorchegue\nSpanish: p4moedo\nSwedish: Åke Engelbrektson\nEnglish: Stefan Brand\nGerman: Stefan Brand"
color: "white"
}
}

View file

@ -166,7 +166,7 @@ Dialog {
wrapMode: Text.Wrap
maximumLineCount: 15
font.pixelSize: Theme.fontSizeSmall
font.pixelSize: Theme.fontSizeTiny
color: Theme.secondaryColor
visible: mode == "import"
@ -182,11 +182,11 @@ Dialog {
wrapMode: Text.Wrap
maximumLineCount: 15
font.pixelSize: Theme.fontSizeSmall
font.pixelSize: Theme.fontSizeTiny
color: Theme.secondaryColor
visible: mode == "export"
text: qsTr("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.")
text: qsTr("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.")+"\n\n"+qsTr("To view the content of the export file outside of SailOTP use the following openssl command:") + "\n\nopenssl enc -d -a -A -md md5 -aes-256-cbc -in <file>"
}
}
}

View file

@ -96,6 +96,11 @@ Page {
text: qsTr("About")
onClicked: pageStack.push(Qt.resolvedUrl("About.qml"))
}
MenuItem {
text: qsTr("Settings")
visible: false
onClicked: pageStack.push(Qt.resolvedUrl("Settings.qml"))
}
MenuItem {
text: qsTr("Export / Import")
onClicked: pageStack.push(Qt.resolvedUrl("ExportPage.qml"), {parentPage: mainPage, mode: "export"})

63
qml/pages/Settings.qml Normal file
View file

@ -0,0 +1,63 @@
/*
* Copyright (c) 2014, Stefan Brand <seiichiro@seiichiro0185.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* 3. The names of the contributors may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import QtQuick 2.0
import Sailfish.Silica 1.0
Page {
id: settingsPage
allowedOrientations: Orientation.All
SilicaFlickable {
id: flickable
anchors.fill: parent
width: parent.width
contentHeight: column.height
Column {
id: column
width: parent.width
spacing: Theme.paddingSmall
PageHeader { title: qsTr("Settings") }
SectionHeader { text: qsTr("Behaviour") }
TextSwitch {
id: showQrDefault
checked: settings.showQrDefaultAction
text: qsTr("Show Token as QRCode on Tap")
onClicked: settings.showQrDefaultAction = !settings.showQrDefaultAction
}
}
VerticalScrollDecorator { }
}
}

View file

@ -1,3 +1,10 @@
* Mon Apr 02 2019 Stefan Brand <sailfish@seiichiro0185.org> 1.7-1
- Added Chinese Translation
- Added Finnish Translation
- Added Russian Translation
- Added Spanish Translation
- Some internal Preparation for future features
* Mon Oct 30 2017 Stefan Brand <sailfish@seiichiro0185.org> 1.6-1
- Changed AES Engine to cryptojs for Export/Import

View file

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