diff --git a/CHANGELOG.md b/CHANGELOG.md index 67e917a4..a8314d1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +#### v0.4.0 + + * New feature: **Password-based encryption** (a big thanks to all the testers) + * New feature: Enforce a minimum password / PIN length (Issue #107) + * New feature: Add an additional unlock button to the authentication (Issue #87) + * New feature: The thumbnail toggle is now in the size selector (Issue #98, PR #102) + * New feature: Split the tokens into blocks (Issue #83, PR #83 by DanielWeigl) + * New feature: Account name is now shown in the removal confirmation (Issue #84) + * New feature: Advanced options are now hidden in the manual entry dialog (Issue #85) + * New special feature: Clear the KeyStore (use with caution) + * Bug fix: Change the format used to store and set the language (Issue #112) + * Bug fix: Add some extra padding the the RecyclerView (Issue #95) + * Bug fix: Remove gradients from vector thumbnails (Issue #103, PR #97) + * Thumbnails: a lot of new thumbnails (check the wiki for details) + * Translation: Catalan (ca-rES) thanks to isard + #### v0.3.1 * Move: the Github repository was moved from flocke/andOTP to andOTP/andOTP for better organization of collaborators diff --git a/README.md b/README.md index db3b1e29..be06eb1a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # andOTP - Android OTP Authenticator [![Build Status](https://travis-ci.org/andOTP/andOTP.svg?branch=master)](https://travis-ci.org/andOTP/andOTP) -[![Current release](https://img.shields.io/github/release/andOTP/andOTP/all.svg)](https://github.com/andOTP/andOTP/releases/download/v0.3.1/andOTP_v0.3.1.apk) +[![Current release](https://img.shields.io/github/release/andOTP/andOTP/all.svg)](https://github.com/andOTP/andOTP/releases/download/v0.4.0.1/andOTP_v0.4.0.1.apk) ![andOTP](./assets/logo.png) @@ -24,7 +24,9 @@ Don't worry, I will still continue to develop andOTP it will just slow down from * Requires minimal permissions - Camera access for QR code scanning - Storage access for import and export of the database - * Encrypted storage + * Encrypted storage with two backends: + - Android KeyStore + - Password / PIN * Multiple backup options: - Plain-text - Password-protected @@ -82,12 +84,17 @@ So make sure you have a **current backup** before switching! - [XDA thread](https://forum.xda-developers.com/android/apps-games/app-andotp-android-otp-authenticator-t3636993) (please keep off-topic to a minimum) - Telegram group [@andOTP](https://t.me/andOTP) (also check out the read-only announcement channel for important updates: [@andOTP_Broadcast](https://t.me/andOTP_Broadcast)) +#### Developers: + + * [Jakob Nixdorf](https://github.com/flocke) + * [Richy HBM](https://github.com/RichyHBM) + #### Contributors: * [Carlos Melero](https://github.com/carmebar) ([view contributions](https://github.com/andOTP/andOTP/commits/master?author=carmebar)) * [SuperVirus](https://github.com/SuperVirus) ([view contributions](https://github.com/andOTP/andOTP/commits/master?author=SuperVirus)) - * [RichyHBM](https://github.com/RichyHBM) ([view contributions](https://github.com/andOTP/andOTP/commits/master?author=RichyHBM)) - + * [DanielWeigl](https://github.com/DanielWeigl) ([view contributions](https://github.com/andOTP/andOTP/commits/master?author=DanielWeigl)) + * [Matthias Bertram](https://github.com/mbertram) ([view contributions](https://github.com/andOTP/andOTP/commits?author=mbertram)) #### Translators: @@ -95,13 +102,14 @@ So make sure you have a **current backup** before switching! ------ | ----------------- | ----------- 🇵🇱 | Polish (pl-rPL) | [Daniel Pustuła](https://github.com/9Cube-dpustula) :es: | Spanish (es-rES) | [Carlos Melero](https://crowdin.com/profile/carmebar) -:de: | German (de-rDE) | [SuperVirus](https://crowdin.com/profile/SuperVirus) -:fr: | French (fr-rFR) | [Johan Fleury](https://github.com/johanfleury), [David Sferruzza](https://crowdin.com/profile/dsferruzza), [primokorn](https://crowdin.com/profile/primokorn) -🇳🇱 | Dutch (nl-rNL) | Toon, [rain2reign](https://crowdin.com/profile/rain2reign) -  | Galician (gl-rES) | [Triskel](https://crowdin.com/profile/triskel) +:de: | German (de-rDE) | [SuperVirus](https://crowdin.com/profile/SuperVirus), [Jan](https://crowdin.com/profile/Dagefoerde) +:fr: | French (fr-rFR) | [Johan Fleury](https://github.com/johanfleury), [David Sferruzza](https://crowdin.com/profile/dsferruzza), [primokorn](https://crowdin.com/profile/primokorn), [Poussinou](https://crowdin.com/profile/Poussinou) +🇳🇱 | Dutch (nl-rNL) | Toon, [rain2reign](https://crowdin.com/profile/rain2reign), [thinkwell](https://crowdin.com/profile/thinkwell), [cpu20](https://crowdin.com/profile/cpu20) +  | Galician (gl-rES) | [Triskel](https://crowdin.com/profile/triskel), [Xosé M.](https://crowdin.com/profile/XoseM) :ru: | Russian (ru-rRU) | [Victor Nidens](https://crowdin.com/profile/vnidens), [Ilia Drogaitsev](https://crowdin.com/profile/waytoroot), [Dmitry](https://crowdin.com/profile/SaintDI) 🇨🇿 | Czech (cs-rCZ) | [Picard0147](https://crowdin.com/profile/Picard0147) :cn: | Chinese Simplified (zh-rCN) | [Cp0204](https://crowdin.com/profile/Cp0204) +  | Catalan (ca-rES) | [isard](https://crowdin.com/profile/isard) ## Screenshots: diff --git a/app/build.gradle b/app/build.gradle index 55a71849..45001d77 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "org.shadowice.flocke.andotp" minSdkVersion 19 targetSdkVersion 27 - versionCode 12 - versionName "0.3.1" + versionCode 14 + versionName "0.4.0.1" } buildTypes { release { diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/AboutActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/AboutActivity.java index fa5e198b..2d34136f 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/AboutActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/AboutActivity.java @@ -23,6 +23,9 @@ package org.shadowice.flocke.andotp.Activities; import android.app.AlertDialog; +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; @@ -177,7 +180,11 @@ public class AboutActivity extends BaseActivity { author1Paypal.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - openURI(AUTHOR1_EXTRA); + try { + openURI(AUTHOR1_EXTRA); + } catch(Exception ignored) { + copyToClipboard(AUTHOR1_EXTRA); + } } }); @@ -193,7 +200,11 @@ public class AboutActivity extends BaseActivity { author2Paypal.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - openURI(AUTHOR2_EXTRA); + try { + openURI(AUTHOR2_EXTRA); + } catch(Exception ignored) { + copyToClipboard(AUTHOR2_EXTRA); + } } }); @@ -208,7 +219,11 @@ public class AboutActivity extends BaseActivity { authorOriginalApp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - openURI(AUTHOR_ORIGINAL_EXTRA); + try { + openURI(AUTHOR_ORIGINAL_EXTRA); + } catch(Exception ignored) { + copyToClipboard(AUTHOR_ORIGINAL_EXTRA); + } } }); @@ -280,6 +295,14 @@ public class AboutActivity extends BaseActivity { openURI.setData(Uri.parse(uri)); startActivity(openURI); } + + public void copyToClipboard(String uri) { + ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("andOTP", uri); + clipboard.setPrimaryClip(clip); + Toast.makeText(this, getString(R.string.about_toast_copied_to_clipboard), Toast.LENGTH_SHORT).show(); + } + public void showLicenses() { new LicensesDialog.Builder(this) diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/AuthenticateActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/AuthenticateActivity.java index 9343b7cc..577d11bc 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/AuthenticateActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/AuthenticateActivity.java @@ -158,7 +158,7 @@ public class AuthenticateActivity extends ThemedActivity String hashedPassword = new String(Hex.encodeHex(DigestUtils.sha256(plainPassword))); if (hashedPassword.equals(password)) { - byte[] key = settings.setAuthCredentials(password); + byte[] key = settings.setAuthCredentials(plainPassword); if (key == null) Toast.makeText(this, R.string.settings_toast_auth_upgrade_failed, Toast.LENGTH_LONG).show(); diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/BackupActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/BackupActivity.java index ee9f04a6..81864aae 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/BackupActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/BackupActivity.java @@ -133,7 +133,7 @@ public class BackupActivity extends BaseActivity { backupCrypt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - saveFileWithPermissions(Constants.BACKUP_MIMETYPE_CRYPT, Constants.BACKUP_FILENAME_CRYPT, Constants.INTENT_BACKUP_SAVE_DOCUMENT_CRYPT, Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_CRYPT); + saveFileWithPermissions(Constants.BACKUP_MIMETYPE_CRYPT, Constants.BackupType.ENCRYPTED, Constants.INTENT_BACKUP_SAVE_DOCUMENT_CRYPT, Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_CRYPT); } }); @@ -168,7 +168,7 @@ public class BackupActivity extends BaseActivity { backupPGP.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - saveFileWithPermissions(Constants.BACKUP_MIMETYPE_PGP, Constants.BACKUP_FILENAME_PGP, Constants.INTENT_BACKUP_SAVE_DOCUMENT_PGP, Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_PGP); + saveFileWithPermissions(Constants.BACKUP_MIMETYPE_PGP, Constants.BackupType.OPEN_PGP, Constants.INTENT_BACKUP_SAVE_DOCUMENT_PGP, Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_PGP); } }); @@ -224,7 +224,7 @@ public class BackupActivity extends BaseActivity { } } else if (requestCode == Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_PLAIN) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - showSaveFileSelector(Constants.BACKUP_MIMETYPE_PLAIN, Constants.BACKUP_FILENAME_PLAIN, Constants.INTENT_BACKUP_SAVE_DOCUMENT_PLAIN); + showSaveFileSelector(Constants.BACKUP_MIMETYPE_PLAIN, Constants.BackupType.PLAIN_TEXT, Constants.INTENT_BACKUP_SAVE_DOCUMENT_PLAIN); } else { Toast.makeText(this, R.string.backup_toast_storage_permissions, Toast.LENGTH_LONG).show(); } @@ -236,7 +236,7 @@ public class BackupActivity extends BaseActivity { } } else if (requestCode == Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_CRYPT) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - showSaveFileSelector(Constants.BACKUP_MIMETYPE_CRYPT, Constants.BACKUP_FILENAME_CRYPT, Constants.INTENT_BACKUP_SAVE_DOCUMENT_CRYPT); + showSaveFileSelector(Constants.BACKUP_MIMETYPE_CRYPT, Constants.BackupType.ENCRYPTED, Constants.INTENT_BACKUP_SAVE_DOCUMENT_CRYPT); } else { Toast.makeText(this, R.string.backup_toast_storage_permissions, Toast.LENGTH_LONG).show(); } @@ -248,7 +248,7 @@ public class BackupActivity extends BaseActivity { } } else if (requestCode == Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_PGP) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - showSaveFileSelector(Constants.BACKUP_MIMETYPE_PGP, Constants.BACKUP_FILENAME_PGP, Constants.INTENT_BACKUP_SAVE_DOCUMENT_PGP); + showSaveFileSelector(Constants.BACKUP_MIMETYPE_PGP, Constants.BackupType.OPEN_PGP, Constants.INTENT_BACKUP_SAVE_DOCUMENT_PGP); } else { Toast.makeText(this, R.string.backup_toast_storage_permissions, Toast.LENGTH_LONG).show(); } @@ -294,7 +294,7 @@ public class BackupActivity extends BaseActivity { /* Generic functions for all backup/restore options */ private void showOpenFileSelector(int intentId) { - if (settings.getBackupAsk()) { + if (settings.getBackupAsk() || settings.getIsAppendingDateTimeToBackups()) { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); @@ -309,21 +309,21 @@ public class BackupActivity extends BaseActivity { } } - private void showSaveFileSelector(String mimeType, String fileName, int intentId) { + private void showSaveFileSelector(String mimeType, Constants.BackupType backupType, int intentId) { if (settings.getBackupAsk()) { Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType(mimeType); - intent.putExtra(Intent.EXTRA_TITLE, fileName); + intent.putExtra(Intent.EXTRA_TITLE, backupFilename(backupType)); startActivityForResult(intent, intentId); } else { if (Tools.mkdir(settings.getBackupDir())) { if (intentId == Constants.INTENT_BACKUP_SAVE_DOCUMENT_PLAIN) - doBackupPlain(Tools.buildUri(settings.getBackupDir(), Constants.BACKUP_FILENAME_PLAIN)); + doBackupPlain(Tools.buildUri(settings.getBackupDir(), backupFilename(Constants.BackupType.PLAIN_TEXT))); else if (intentId == Constants.INTENT_BACKUP_SAVE_DOCUMENT_CRYPT) - doBackupCrypt(Tools.buildUri(settings.getBackupDir(), Constants.BACKUP_FILENAME_CRYPT)); + doBackupCrypt(Tools.buildUri(settings.getBackupDir(), backupFilename(Constants.BackupType.ENCRYPTED))); else if (intentId == Constants.INTENT_BACKUP_SAVE_DOCUMENT_PGP) - backupEncryptedWithPGP(Tools.buildUri(settings.getBackupDir(), Constants.BACKUP_FILENAME_PGP), null); + backupEncryptedWithPGP(Tools.buildUri(settings.getBackupDir(), backupFilename(Constants.BackupType.OPEN_PGP)), null); } else { Toast.makeText(this, R.string.backup_toast_mkdir_failed, Toast.LENGTH_LONG).show(); } @@ -338,9 +338,9 @@ public class BackupActivity extends BaseActivity { } } - private void saveFileWithPermissions(String mimeType, String fileName, int intentId, int requestId) { + private void saveFileWithPermissions(String mimeType, Constants.BackupType backupType, int intentId, int requestId) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { - showSaveFileSelector(mimeType, fileName, intentId); + showSaveFileSelector(mimeType, backupType, intentId); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestId); } @@ -404,7 +404,7 @@ public class BackupActivity extends BaseActivity { .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - saveFileWithPermissions(Constants.BACKUP_MIMETYPE_PLAIN, Constants.BACKUP_FILENAME_PLAIN, Constants.INTENT_BACKUP_SAVE_DOCUMENT_PLAIN, Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_PLAIN); + saveFileWithPermissions(Constants.BACKUP_MIMETYPE_PLAIN, Constants.BackupType.PLAIN_TEXT, Constants.INTENT_BACKUP_SAVE_DOCUMENT_PLAIN, Constants.PERMISSIONS_BACKUP_WRITE_EXPORT_PLAIN); } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { @@ -586,4 +586,29 @@ public class BackupActivity extends BaseActivity { Toast.makeText(this, String.format(getString(R.string.backup_toast_openpgp_error), error.getMessage()), Toast.LENGTH_LONG).show(); } } + + private String backupFilename(Constants.BackupType type) { + switch (type) { + case PLAIN_TEXT: + if (settings.getIsAppendingDateTimeToBackups()) { + return String.format(Constants.BACKUP_FILENAME_PLAIN_FORMAT, Tools.getDateTimeString()); + } else { + return Constants.BACKUP_FILENAME_PLAIN; + } + case ENCRYPTED: + if (settings.getIsAppendingDateTimeToBackups()) { + return String.format(Constants.BACKUP_FILENAME_CRYPT_FORMAT, Tools.getDateTimeString()); + } else { + return Constants.BACKUP_FILENAME_CRYPT; + } + case OPEN_PGP: + if (settings.getIsAppendingDateTimeToBackups()) { + return String.format(Constants.BACKUP_FILENAME_PGP_FORMAT, Tools.getDateTimeString()); + } else { + return Constants.BACKUP_FILENAME_PGP; + } + } + + return Constants.BACKUP_FILENAME_PLAIN; + } } diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java index ca8ce8a5..09d49a3a 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java @@ -345,7 +345,7 @@ public class MainActivity extends BaseActivity adapter.notifyDataSetChanged(); } else if (key.equals(getString(R.string.settings_key_tap_to_reveal)) || key.equals(getString(R.string.settings_key_theme)) || - key.equals(getString(R.string.settings_key_lang)) || + key.equals(getString(R.string.settings_key_locale)) || key.equals(getString(R.string.settings_key_enable_screenshot))) { recreate(); } @@ -398,7 +398,11 @@ public class MainActivity extends BaseActivity } else { requireAuthentication = false; - byte[] authKey = intent.getByteArrayExtra(Constants.EXTRA_AUTH_PASSWORD_KEY); + byte[] authKey = null; + + if (intent != null) + authKey = intent.getByteArrayExtra(Constants.EXTRA_AUTH_PASSWORD_KEY); + updateEncryption(authKey); } } diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/SettingsActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/SettingsActivity.java index fa6159d1..b793ffea 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/SettingsActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/SettingsActivity.java @@ -115,7 +115,7 @@ public class SettingsActivity extends BaseActivity public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { if (key.equals(getString(R.string.settings_key_theme)) || - key.equals(getString(R.string.settings_key_lang)) || + key.equals(getString(R.string.settings_key_locale)) || key.equals(getString(R.string.settings_key_special_features))) { recreate(); } diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/ThemedActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/ThemedActivity.java index 1824dbad..f02bddb7 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/ThemedActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/ThemedActivity.java @@ -64,7 +64,7 @@ public abstract class ThemedActivity extends AppCompatActivity { } public void setLocale() { - Locale locale = settings.getLang(); + Locale locale = settings.getLocale(); Locale.setDefault(locale); Configuration config = new Configuration(); diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Constants.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Constants.java index d8ac8716..2e459f1b 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Constants.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Constants.java @@ -40,6 +40,10 @@ public class Constants { UNSORTED, LABEL, LAST_USED } + public enum BackupType { + PLAIN_TEXT, ENCRYPTED, OPEN_PGP + } + // Intents (Format: A0x with A = parent Activity, x = number of the intent) public final static int INTENT_MAIN_AUTHENTICATE = 100; public final static int INTENT_MAIN_SETTINGS = 101; @@ -78,13 +82,13 @@ public class Constants { final static String ALGORITHM_SYMMETRIC = "AES/GCM/NoPadding"; final static String ALGORITHM_ASYMMETRIC = "RSA/ECB/PKCS1Padding"; - final static int ENCRYPTION_KEY_LENGTH = 16; + final static int ENCRYPTION_KEY_LENGTH = 16; // 128-bit encryption key (KeyStore-mode) final static int ENCRYPTION_IV_LENGTH = 12; final static int PBKDF2_MIN_ITERATIONS = 1000; final static int PBKDF2_MAX_ITERATIONS = 5000; final static int PBKDF2_DEFAULT_ITERATIONS = 1000; - final static int PBKDF2_LENGTH = 512; + final static int PBKDF2_LENGTH = 256; // 128-bit encryption key (Password-mode) final static int PBKDF2_SALT_LENGTH = 16; // Authentication @@ -107,6 +111,10 @@ public class Constants { public final static String BACKUP_FILENAME_CRYPT = "otp_accounts.json.aes"; public final static String BACKUP_FILENAME_PGP = "otp_accounts.json.gpg"; + public final static String BACKUP_FILENAME_PLAIN_FORMAT = "otp_accounts_%s.json"; + public final static String BACKUP_FILENAME_CRYPT_FORMAT = "otp_accounts_%s.json.aes"; + public final static String BACKUP_FILENAME_PGP_FORMAT = "otp_accounts_%s.json.gpg"; + public final static String BACKUP_MIMETYPE_PLAIN = "application/json"; public final static String BACKUP_MIMETYPE_CRYPT = "binary/aes"; public final static String BACKUP_MIMETYPE_PGP = "application/pgp-encrypted"; diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java index 4ab70968..693f32d4 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java @@ -29,6 +29,7 @@ public class EntryThumbnail { Bittrex(R.drawable.thumb_bittrex), Bitwarden(R.mipmap.thumb_bitwarden, AssetType.Bitmap), BlockchainInfo(R.drawable.thumb_blockchain_info), + CloudDownload(R.drawable.thumb_cloud_download), Cloudflare(R.drawable.thumb_cloudflare), Coinbase(R.drawable.thumb_coinbase), CozyCloud(R.drawable.thumb_cozycloud), @@ -37,6 +38,9 @@ public class EntryThumbnail { Dropbox(R.drawable.thumb_dropbox), Email(R.drawable.thumb_email), Facebook(R.drawable.thumb_facebook), + Fingerprint(R.drawable.thumb_fingerprint), + Flight(R.drawable.thumb_flight_takeoff), + Gamepad(R.drawable.thumb_gamepad), Git(R.drawable.thumb_git), Gitea(R.drawable.thumb_gitea), Github(R.drawable.thumb_github), @@ -44,6 +48,8 @@ public class EntryThumbnail { GoDaddy(R.drawable.thumb_godaddy), Google(R.drawable.thumb_google), HackerOne(R.drawable.thumb_hackerone), + Heroku(R.drawable.thumb_heroku), + HumbleBundle(R.drawable.thumb_humblebundle), HurricaneElectric(R.drawable.thumb_hurricane_electric), Iconomi(R.drawable.thumb_iconomi), IFTTT(R.drawable.thumb_ifttt), @@ -56,25 +62,32 @@ public class EntryThumbnail { Mastodon(R.drawable.thumb_mastodon), Microsoft(R.drawable.thumb_microsoft), Mixer(R.drawable.thumb_mixer), + NAS(R.drawable.thumb_nas), NextCloud(R.drawable.thumb_nextcloud), Nintendo(R.drawable.thumb_nintendo), + NPM(R.drawable.thumb_npm), Origin(R.drawable.thumb_origin), + OVH(R.drawable.thumb_ovh), Patreon(R.drawable.thumb_patreon), PayPal(R.drawable.thumb_paypal), ProtonMail(R.drawable.thumb_protonmail), + Reddit(R.drawable.thumb_reddit), RSS(R.drawable.thumb_rss), Seafile(R.mipmap.thumb_seafile, AssetType.Bitmap), + School(R.drawable.thumb_school), Skrill(R.drawable.thumb_skrill), Slack(R.drawable.thumb_slack), Steam(R.drawable.thumb_steam), Stripe(R.drawable.thumb_stripe), Synology(R.drawable.thumb_synology), TeamViewer(R.drawable.thumb_teamviewer), + Terminal(R.drawable.thumb_terminal), Tumblr(R.drawable.thumb_tumblr), Twitch(R.drawable.thumb_twitch), Twitter(R.drawable.thumb_twitter), Ubisoft(R.drawable.thumb_ubisoft), UbuntuOne(R.drawable.thumb_ubuntu_one), + Wallet(R.drawable.thumb_wallet), Wordpress(R.drawable.thumb_wordpress); private int resource; diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java index 7fd26cda..c7f69f43 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java @@ -34,8 +34,10 @@ import java.nio.charset.StandardCharsets; import java.security.KeyPair; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; +import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Locale; import java.util.Set; @@ -44,6 +46,9 @@ import static org.shadowice.flocke.andotp.Utilities.Constants.EncryptionType; import static org.shadowice.flocke.andotp.Utilities.Constants.SortMode; public class Settings { + private static final List oldLangs = Arrays.asList("system", "en", "cs", "de", "es", "fr", "gl", "nl", "pl", "ru", "zh"); + private static final List newLangs = Arrays.asList("system", "en_US", "cs_CZ", "de_DE", "es_ES", "fr_FR", "gl_ES", "nl_NL", "pl_PL", "ru_RU", "zh_CN"); + private Context context; private SharedPreferences settings; @@ -73,6 +78,15 @@ public class Settings { remove(R.string.settings_key_auth_pin); } + if (settings.contains(getResString(R.string.settings_key_lang))) { + String lang = getString(R.string.settings_key_lang, R.string.settings_default_locale); + + if (oldLangs.contains(lang)) + setLocale(newLangs.get(oldLangs.indexOf(lang))); + + remove(R.string.settings_key_lang); + } + if (settings.contains(getResString(R.string.settings_key_backup_password))) { String plainPassword = getBackupPassword(); @@ -284,13 +298,24 @@ public class Settings { return settings.getStringSet(getResString(R.string.settings_key_panic), Collections.emptySet()); } - public Locale getLang() { - String lang = getString(R.string.settings_key_lang, R.string.settings_default_lang); + public void setLocale(String locale) { + setString(R.string.settings_key_locale, locale); + } - if (lang.equals("system")) + public Locale getLocale() { + String lang = getString(R.string.settings_key_locale, R.string.settings_default_locale); + + if (lang.equals("system")) { return Tools.getSystemLocale(); - else - return new Locale(lang); + } else { + String[] splitLang = lang.split("_"); + + if (splitLang.length > 1) { + return new Locale(splitLang[0], splitLang[1]); + } else { + return new Locale(lang); + } + } } public String getTheme() { @@ -437,4 +462,8 @@ public class Settings { public void setLastUsedDialogShown(boolean value) { setBoolean(R.string.settings_key_last_used_dialog_shown, value); } + + public boolean getIsAppendingDateTimeToBackups() { + return getBoolean(R.string.settings_key_backup_append_date_time, false); + } } diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java index 198327fe..ec5a7ba9 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java @@ -33,6 +33,10 @@ import android.os.Build; import android.os.Environment; import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; import java.util.Locale; public class Tools { @@ -94,4 +98,10 @@ public class Tools { } return ret.toString().trim(); } + + public static String getDateTimeString() { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.ENGLISH); + Date now = Calendar.getInstance().getTime(); + return df.format(now); + } } diff --git a/app/src/main/res/drawable/thumb_cloud_download.xml b/app/src/main/res/drawable/thumb_cloud_download.xml new file mode 100644 index 00000000..261c3121 --- /dev/null +++ b/app/src/main/res/drawable/thumb_cloud_download.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/thumb_email.xml b/app/src/main/res/drawable/thumb_email.xml index f7b5ee76..ce97ab85 100644 --- a/app/src/main/res/drawable/thumb_email.xml +++ b/app/src/main/res/drawable/thumb_email.xml @@ -1,11 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:fillColor="#FF000000" + android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM20,8l-8,5 -8,-5L4,6l8,5 8,-5v2z"/> diff --git a/app/src/main/res/drawable/thumb_fingerprint.xml b/app/src/main/res/drawable/thumb_fingerprint.xml new file mode 100644 index 00000000..f650f744 --- /dev/null +++ b/app/src/main/res/drawable/thumb_fingerprint.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/thumb_flight_takeoff.xml b/app/src/main/res/drawable/thumb_flight_takeoff.xml new file mode 100644 index 00000000..bbc40647 --- /dev/null +++ b/app/src/main/res/drawable/thumb_flight_takeoff.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/thumb_gamepad.xml b/app/src/main/res/drawable/thumb_gamepad.xml new file mode 100644 index 00000000..52658f65 --- /dev/null +++ b/app/src/main/res/drawable/thumb_gamepad.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/thumb_heroku.xml b/app/src/main/res/drawable/thumb_heroku.xml new file mode 100644 index 00000000..8a7bcc9c --- /dev/null +++ b/app/src/main/res/drawable/thumb_heroku.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/thumb_humblebundle.xml b/app/src/main/res/drawable/thumb_humblebundle.xml new file mode 100644 index 00000000..4a8ad630 --- /dev/null +++ b/app/src/main/res/drawable/thumb_humblebundle.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/thumb_nas.xml b/app/src/main/res/drawable/thumb_nas.xml new file mode 100644 index 00000000..dfdad016 --- /dev/null +++ b/app/src/main/res/drawable/thumb_nas.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/thumb_npm.xml b/app/src/main/res/drawable/thumb_npm.xml new file mode 100644 index 00000000..f0632a5d --- /dev/null +++ b/app/src/main/res/drawable/thumb_npm.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/thumb_ovh.xml b/app/src/main/res/drawable/thumb_ovh.xml new file mode 100644 index 00000000..5ed1ed8e --- /dev/null +++ b/app/src/main/res/drawable/thumb_ovh.xml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/thumb_reddit.xml b/app/src/main/res/drawable/thumb_reddit.xml new file mode 100644 index 00000000..61ed0661 --- /dev/null +++ b/app/src/main/res/drawable/thumb_reddit.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/thumb_school.xml b/app/src/main/res/drawable/thumb_school.xml new file mode 100644 index 00000000..30d83f84 --- /dev/null +++ b/app/src/main/res/drawable/thumb_school.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/thumb_terminal.xml b/app/src/main/res/drawable/thumb_terminal.xml new file mode 100644 index 00000000..89fd74fb --- /dev/null +++ b/app/src/main/res/drawable/thumb_terminal.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/drawable/thumb_wallet.xml b/app/src/main/res/drawable/thumb_wallet.xml new file mode 100644 index 00000000..326c11a3 --- /dev/null +++ b/app/src/main/res/drawable/thumb_wallet.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/content_about.xml b/app/src/main/res/layout/content_about.xml index 33c8c63e..68b91334 100644 --- a/app/src/main/res/layout/content_about.xml +++ b/app/src/main/res/layout/content_about.xml @@ -22,23 +22,21 @@ + android:padding="@dimen/activity_margin_small" + android:gravity="center_vertical" + android:orientation="horizontal" > + + - - + android:layout_height="wrap_content" + android:background="?android:attr/selectableItemBackground"> - + - + @@ -293,7 +288,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" - android:text="@string/about_label_main_author"/> + android:text="@string/about_label_main_developer"/> + + + Quant a + Autenticació de dos factors de codi obert per a Android + + Registre de canvis + Llicència + Llicencies de codi obert + Llicència MIT + Codi font + Versió + + Autors + Programador principal + Autor + Autor de l\'aplicació original + Aplicació original + Lloc web + Feu una donació + Col·laboradors + Traductors + + Doneu suport al desenvolupament + Informe d\'errors + Tradueix + Aviseu d\'un error o demaneu funcions noves + Com podeu ajudar a traduir andOTP a la vostra llengua + Característiques especials + Esteu segur que voleu habilitar les característiques + especials? La major part són algorismes OTP no estàndard que es van implementar + ad-hoc. No tenen suport oficial i pateixen de certes + limitacions, per favor, llegiu (i assegureu-vos d\'entendre) la pàgina \"característiques especials\" en la wiki de Github + per a saber-ne més abans de fer-les servir. + Característiques especials habilitades + Característiques especials ja habilitades + Donation link copied to clipboard + diff --git a/app/src/main/res/values-ca-rES/strings_auth.xml b/app/src/main/res/values-ca-rES/strings_auth.xml new file mode 100644 index 00000000..d4e66a06 --- /dev/null +++ b/app/src/main/res/values-ca-rES/strings_auth.xml @@ -0,0 +1,19 @@ + + + + Autentica + + Contrasenya + PIN + + Per favor, autentiqueu-vos per a iniciar andOTP! + Per favor, confirmeu la vostra autenticació per a generar + la clau de xifratge nova! + + Desbloqueja + + Per favor, establiu una contrasenya en la configuració! + Per favor, establiu un PIN en la configuració! + Contrasenya incorrecta; per favor, torneu-ho a intentar! + PIN incorrecte; per favor, torneu-ho a intentar! + diff --git a/app/src/main/res/values-ca-rES/strings_backup.xml b/app/src/main/res/values-ca-rES/strings_backup.xml new file mode 100644 index 00000000..214d2b8e --- /dev/null +++ b/app/src/main/res/values-ca-rES/strings_backup.xml @@ -0,0 +1,51 @@ + + + + Còpies de seguretat + Còpies de seguretat en text net + Còpies de seguretat xifrades + Còpies de seguretat xifrades amb OpenPGP + Còpia de seguretat (text net) + Còpia de seguretat (xifrada) + Còpia de seguretat (OpenPGP) + Restaura (text net) + Restaura (xifrada) + Restaura (OpenPGP) + Substitueix els comptes existents + Fes una còpia de seguretat de tots els comptes en un fitxer de text net JSON + Fes una còpia de seguretat de tots els comptes en un fitxer JSON protegit per contrasenya + Fes una còpia de seguretat tots els comptes en un fitxer JSON encriptat amb OpenPGP + Restaura els comptes d\'un fitxer de text net JSON + Restaura els comptes d\'un fitxer JSON protegit amb contrasenya + Restaura els comptes d\'un fitxer JSON xifrat amb OpenPGP + Cal establir una contrasenya en la Configuració per a usar + còpies xifrades. + + Cal instal·lar un programa OpenPGP i habilitar-lo + en la Configuració per a fer servir aquesta característica. + + Cal triar una clau OpenPGP en la Configuració + per a poder crear còpies xifrades. + + Si està activat les entrades antigues són substituïdes quan s\'importa una + còpia de seguretat i només hi queda la còpia. Si no, les entrades velles i les còpies de seguretat + es fusionen. + + Avís de seguretat + Realment voleu exportar la base de dades com a + fitxer de text net JSON? Aquest fitxer contindrà les vostres claus secretes; per favor, manteniu-lo ben protegit! + + + No ha pogut crear el directori de còpia de seguretat + Exportació a l\'emmagatzematge extern correcta + L\'exportació a emmagatzematge extern ha fallat + Importació des de l\'emmagatzematge extern correcta + No s\'han pogut desar les entrades restaurades + El desxifratge de la còpia ha fallat + No s\'han trobat cap entrada en les dades importades + L\'emmagatzematge extern no és accessible actualment + Permisos d\'emmagatzematge no concedits + Error OpenPGP: %s + No s\'ha detectat cap signatura verificada + No hi ha cap contrasenya establerta, comproveu la configuració + diff --git a/app/src/main/res/values-ca-rES/strings_main.xml b/app/src/main/res/values-ca-rES/strings_main.xml new file mode 100644 index 00000000..25fb10a8 --- /dev/null +++ b/app/src/main/res/values-ca-rES/strings_main.xml @@ -0,0 +1,84 @@ + + + + + Cancel·la + Introduïu-ne els detalls + Escaneja un codi QR + Desa + Etiqueta nova + Configuració + Totes les etiquetes + Sense etiquetes + + %d s + + Etiqueta + Secret + + Ocult + Tipus + Secret + Període + Dígits + Etiqueta + Algorisme + Etiquetes + Opcions avançades + + Mostra les etiquetes + Amaga les etiquetes + + Quant a + Còpia de seguretat + Cerca + Configuració + Ordena + Sense ordenar + Etiqueta + Últimes utilitzades + Edita l\'etiqueta + Canvia la imatge + Edita etiquetes + Suprimeix + + Error d\'autenticació. Torneu-ho a intentar! + L\'autenticació ha fallat, andOTP es tancarà! + Copiat al porta-retalls + Aquest element ja existeix + Codi QR no vàlid + No s\'ha carregat la clau de xifratge + + Autentica + Introduïu-ne els detalls + Suprimeix + Canvia el nom + Últimes utilitzades + Error al magatzem de claus + Xifratge de la base de dades + Per favor, introduïu les vostres credencials per a iniciar andOTP. + Segur que voleu suprimir el compte \"%1$s\"? + 1. Android KeyStore + 2. Contrasenya / PIN + Per a garantir la seguretat dels vostres comptes només + es desen en fitxers xifrats amb un dels mètodes següents: + KeyStore és un component del sistema d\'Android per a + emmagatzemar les claus criptogràfiques de forma segura. L\'avantatge és que les claus + són desades separades dels fitxers de dades i poden ser suportades per criptografia del maquinari (si + el maquinari ho permet). Tanmateix, com que les claus no s\'emmagatzemen amb les dades de l\'aplicació + no es pot usar amb programes de còpia de seguretat externs (com ara Titanium). Si trieu aquest mètode + haureu de confiar en les funcions de còpia de seguretat d\'andOTP. + Aquest mètode xifrarà les vostres dades amb una clau + generada a partir d\'una contrasenya o PIN. L\'avantatge principal és que funciona amb + programes de còpia de seguretat externs (com ara Titanium). Tanmateix haureu d\'escriure les credencials + cada vegada que inicieu andOTP. + Per defecte s\'usarà Android KeyStore, tanmateix + sabem que provoca problemes en certes ROM personalitzades (i en alguna de les prefabricades). Podeu + canviar el xifratge en la configuració fent clic en el botó inferior. + Per tal que andOTP reconega quin testimoni va ser l\'últim + heu d\'habilitar \"toqueu per a mostrar\" o feu servir el botó de copia.\n\nAquest missatge no tornarà + a aparéixer. + No s\'ha pogut carregar la clau de xifratge del KeyStore. + Algunes entrades que hi afegiu es perdran.\n\nPer a continuar usant andOTP podeu + anar a configuració i canviar xifratge de la base de dades a contrasenyes / PIN. + diff --git a/app/src/main/res/values-ca-rES/strings_settings.xml b/app/src/main/res/values-ca-rES/strings_settings.xml new file mode 100644 index 00000000..bfdeadf8 --- /dev/null +++ b/app/src/main/res/values-ca-rES/strings_settings.xml @@ -0,0 +1,128 @@ + + + + Configuració + + Seguretat + Interfície d\'usuari + Còpia de seguretat + + Toqueu per a mostrar + Temps d\'espera per a \"toqueu per a mostrar\" + Autenticació + Contrasenya + PIN + Xifratge de la base de dades + Botó del pànic + Idioma + Tema + Mida de la lletra de l\'etiqueta + Permet el desplaçament a les etiquetes + Mida de la miniatura + Separa el testimoni amb espais + Demana el nom de fitxer + Directori de còpia de seguretat + Contrasenya de la còpia de seguretat + Selecciona el programa OpenPGP + Tria la clau OpenPGP + Signa les còpies de seguretat xifrades + Verifica les còpies de seguretat xifrades + Habilita les característiques especials + Permet screenshots + Neteja el magatzem de claus + + Amaga els testimonis OTP per defecte, caldrà + mostrar-los manualment + Indiqueu durant quant de temps (en segons) + es mostraran les entrades + Decidiu què fer quan es prem el botó del pànic + Les etiquetes llargues es desplacen en comptes de truncar-les + Demana el nom del fitxer cada vegada que es crea o restaura una còpia de seguretat + Directori per a les còpies de seguretat (el nom dels fitxers + depén del tipus de còpia) + Contrasenya que s\'usarà per a xifrar les + còpies de seguretat + Cada còpia xifrada se signa a més amb la vostra clau + (cal contrasenya) + Només s\'importaran còipes xifrades si s\'han + signat amb una clau vàlida + Desmarqueu per a deshabilitar les característiques especials + Permet fer captures de la pantalla principal + (desactivat per defecte per motius de seguretat) + Esborra la clau d\'encriptació del magatzem de claus + + Aquesta característica només funciona amb + Android 5.0 (Lollipop) o superior + Aquesta característica requereix un bloqueig de pantalla + segur (Configuració -> Seguretat -> Bloqueig de pantalla) + Les contrasenyes buides no són permeses, + trieu autenticació nul·la per a desactivar-la! + S\'està mirant de canviar el xifratge de la base de dades; + per favor, espereu! + S\'ha canviat el xifratge de la base de + dades amb èxit! + No ha estat possible canviar el xifratge de la + base de dades: romandrà en l\'estat original! + No ha estat possible crear la còpia + interna, s\'ha interromput! + No ha estat possible obtenir la clau de xifratge, s\'ha interromput! + Ha fallat l\'autenticació! + Ha fallat l\'actualització automàtica de la contrasenya / PIN + per al nou xifratge; per favor, reinicialitzeu-la manualment en la configuració! + Error + Voleu neteja el magatzem de claus? + Només podeu usar una contrasenya o un PIN + si el xifratge de la base de dades s\'ha establert a \"contrasenya / PIN\"! + Primer cal definir l\'autenticació a \"contrasenya\" o \"PIN\"! + Cal establir una contrasenya o PIN abans de canviar l\'encriptació! + En alguns casos, netejar el magatzem de claus + pot ajudar a resoldre problemes. Feu-ho només si sabeu què feu!\\n\nAtés que el xifratge de la base de dades està definit a contrasenya / PIN no hauríeu de perdre-hi + dades (fer una cópia de seguretat sempre va bé, però).\n\nSegur que voleu netejar + el magatzem de claus (KeyStore)? + En alguns casos, netejar el magatzem de claus + pot ajudar a resoldre problemes. Feu-ho només si sabeu què feu!\\n\nAlerta: + Atés que el xifratge de la base de dades està definit a Android KeyStore perdreu tots els + comptes. Comproveu que n\'heu fet una còpia!\n\nSegur que voleu netejar el magatzem de claus + (KeyStore)? + + + Cap + Contrasenya + PIN + Credencials del dispositiu + + + Android KeyStore + Contrasenya / PIN + + + Suprimeix tots els comptes + Reinicialitza les opcions de l\'aplicació + + + Tema clar + Tema fosc + Tema negre + + + Ocult + Petita + Per defecte + Mitjana + Grossa + + + No dividir + Després de dos caràcters + Després de tres caràcters + + + Valor del sistema per defecte + + Introduïu la contrasenya nova + Introduïu el PIN nou + Confirmeu la contrasenya + Confirmeu el PIN + La contrasenya ha de tenir, si més no, %1$d caràcters! + El PIN ha de tindre, si més no, %1$d xifres! + diff --git a/app/src/main/res/values-cs-rCZ/strings_about.xml b/app/src/main/res/values-cs-rCZ/strings_about.xml index 6e69b03a..a451ec23 100644 --- a/app/src/main/res/values-cs-rCZ/strings_about.xml +++ b/app/src/main/res/values-cs-rCZ/strings_about.xml @@ -2,8 +2,7 @@ O aplikaci - -Open source aplikace pro dvou-faktorové ověřování pro Android 4.4 a vyšší. + Open source dvoufaktorová autentifikace pro Android Seznam změn Licence @@ -13,9 +12,11 @@ Open source aplikace pro dvou-faktorové ověřování pro Android 4.4 a vyšš Verze Autoři - Hlavní autor + Hlavní vývojář + Vývojář Autor původní aplikace Původní aplikace + Webová stránka Přispět K vývoji přispěli Překladatelé @@ -31,4 +32,5 @@ Většina z nich jsou nestandardní OTP algoritmy, které byly implementovány n Tyto funkce nejsou oficiálně podporovány a mohou přicházet s jistými omezeními, prosím přečtěte si (a pochopte) stránku \"Special features\" na Github wiki, ať se o nich dozvíte víc než je začnete používat. Specialní funkce povoleny Speciální funkce byly již povoleny + Odkaz pro příspěvek zkopírován do schránky diff --git a/app/src/main/res/values-cs-rCZ/strings_auth.xml b/app/src/main/res/values-cs-rCZ/strings_auth.xml index 8ca86fac..432d634c 100644 --- a/app/src/main/res/values-cs-rCZ/strings_auth.xml +++ b/app/src/main/res/values-cs-rCZ/strings_auth.xml @@ -6,9 +6,13 @@ Heslo PIN - Prosím zadejte své heslo pro spuštění andOTP. - Prosím zadejte svůj PIN pro spuštění andOTP. + Přihlašte se pro spuštění andOTP! + Prosím potvrďte své přihlášení pro vygenerování nového šifrovacího klíče! + + Odemknout V nastavení si prosím nastavte heslo! V nastavení si prosím nastavte PIN! + Nesprávné heslo, zkuste to prosím znovu! + Nesprávný PIN, zkuste to prosím znovu! diff --git a/app/src/main/res/values-cs-rCZ/strings_main.xml b/app/src/main/res/values-cs-rCZ/strings_main.xml index 9fc0aeff..2ab9a994 100644 --- a/app/src/main/res/values-cs-rCZ/strings_main.xml +++ b/app/src/main/res/values-cs-rCZ/strings_main.xml @@ -7,7 +7,7 @@ Načíst QR kód Uložit Nový štítek - Byli jste varováni! + Nastavení Všechny štítky Bez štítku @@ -24,6 +24,7 @@ Popis Algoritmus Štítky + Pokročilé možnosti Zobrazit štítky Skrýt štítky @@ -41,22 +42,31 @@ Upravit štítky Smazat + Chyba ověření, zkuste to prosím znovu! Ověření se nezdařilo, zavírám andOTP! Zkopírováno do schránky Tento záznam již existuje Neplatný QR kód + Šifrovací klíč nenačten Přihlášení Ruční zadání Smazat Přejmenování - Zabezpečení a zálohy Naposledy použité + Chyba úložiště klíčů + Šifrování databáze Prosím zadejte heslo zařízení ke spuštění andOTP. - Opravdu chcete odebrat tento účet? - Pro zajištění bezpečnosti vašich údajů je tato aplikace ukládá šifrované. Část použitého šifrovacího klíče je uložena pomocí systému Android KeyStore. Výhodou tohoto přístupu je uložení dat aplikace odděleně od klíče, toto může být podpořeno HW šifrováním (pokud to Vaše zařízení podporuje). - Nevýhodou je trochu ztížené zálohování dat aplikace. Užíváte-li aplikace třetích stran (jako Titanium Backup) zazálohujete pouze data aplikace ne však šifrovací klíč, následkem toho budou takové zálohy nepoužitelné. - Používejte prosím k zálohování Vašich účtů pouze vlastní zálohovací funkce této aplikace! Cokoliv jiného povede ke ztrátě dat. - Tato zpráva se víckrát nezobrazí. + Jste si jistí, že chcete odebrat účet \"%1$s\"? + 1. Android KeyStore + 2. Heslo / PIN + Pro zajištění bezpečnosti Vašich účtů ukládá aplikace data do šifrovaných souborů šifrovaných pomocí jedné z následujících dvou metod: + KeyStore je systémová komponenta Androidu sloužící k bezpečnému ukládání kryptografických klíčů. Výhodou tohoto přístupu je, že jsou klíče uloženy odděleně od dat a že může být podpořen hardwarovou kryptografií (pokud ji Hw podporuje). +Nicméně vzhledem k tomu, že nejsou klíče uloženy spolu s daty aplikace znemožňuje tato metoda použití externích zálohovacích nástrojů (jako je Titanium). +Pokud zvolíte tuto metodu budete muset spoléhat na vlastní zálohovací funkce aplikace andOTP. + Tato metoda zašifruje data pomocí klíče generovaného z PINu nebo hesla. Hlavní výhodou je, že bude fungovat s externími zálohovacími nástroji (např. Titanium). Budete ale muset zadat své heslo/PIN při každém spuštění andOTP. + Jako výchozí možnost se používá Android KeyStore, což ale může způsobit problémy s některými upravenými ROM (a s pár oficiálními také). Šifrování můžete změnit v Nastavení klepnutím na tlačítko níže. Aby andOTP poznal, který token byl použitý jako poslední, je potřeba mít zapnuté \"zobraz klepnutím\" nebo používat kopírovací tlačítko. \n\n Tato zpráva se již nezobrazí. + Nepodařilo se načíst šifrovací klíč z KeyStore. + Veškeré přidané položky budou ztraceny. \n\nPro zajištění použitelnosti andOTP můžete v Nastavení přepnout Šifrování databáze na heslo / PIN. diff --git a/app/src/main/res/values-cs-rCZ/strings_settings.xml b/app/src/main/res/values-cs-rCZ/strings_settings.xml index 2e01ee85..9d1d2401 100644 --- a/app/src/main/res/values-cs-rCZ/strings_settings.xml +++ b/app/src/main/res/values-cs-rCZ/strings_settings.xml @@ -12,13 +12,14 @@ Přihlášení Heslo PIN + Šifrování databáze Panikové tlačítko Jazyk Vzhled Velikost písma popisku Pohybující se popisky - Zobrazit náhledy Velikost náhledu + Rozdělit token mezerami Zadejte název souboru Adresář záloh Heslo pro zálohu @@ -28,6 +29,7 @@ Ověřit šifrované zálohy Povolit speciální funkce Povolit snímání obrazovky + Vymazat úložiště klíčů V základu skryje OTP tokeny, budou zobrazeny manuálně Zvolte čas v sekundách, po kterém se zobrazené kódy opět skryjí @@ -38,11 +40,27 @@ Nastaví heslo používané k šifrování záloh Každá šifrovaná záloha bude navíc podepsána Vaším klíčem (vyžaduje heslo) Šifrované zálohy jsou importovány pouze, jsou-li podepsány platným klíčem - Povolí pořizování snímků hlavní obrazovky (ve výchozím nastavení je z bezpečnostních důvodů zakázáno) Zrušte zaškrtnutí políčka opětovné zakázání speciálních funkcí + Povolí pořizování snímků hlavní obrazovky (ve výchozím nastavení je z bezpečnostních důvodů zakázáno) + Odstranit šifrovací klíč z úložiště klíčů Tato funkce ke své činnosti vyžaduje alespoň Android 5.0 (Lollipop) Tato funkce vyžaduje nastavení zámku obrazovky (Nastavení -> Zabezpečení -> Zámek obrazovky) + Není povoleno prázdné heslo, nastavte přihlášení na \"Žádné\" pro zakázání! + Pokouším se změnit šifrování databáze, prosím čekejte! + Šifrování databáze úspěšně změněno! + Nepodařilo se změnit šifrování databáze, vracím se k původnímu stavu! + Nepodařilo se vytvořit zálohu vnitřní, operace byla zrušena! + Nepodařilo se získat šifrovací klíč, operace byla zrušena! + Ověření se nezdařilo! + Nepodařilo se automaticky převést heslo/PIN na nové šifrování, prosím nastavte jej znovu v Nastaveních! + Chyba + Vymazat úložiště klíčů? + Heslo nebo kód PIN lze použít pouze pokud je šifrování databáze nastaveno na \"Heslo / PIN\"! + Nejprve je třeba nastavit ověřování na \"Heslo\" nebo \"PIN\"! + Před změnou šifrování musíte nejprve nastavit heslo nebo PIN! + V některých případech vymazání KeyStore může pomoci vyřešit problémy. Pokračujte, pouze pokud víte, co děláte! \n\nVzhledem k tomu, že máte šifrování databáze nastaveno na heslo / PIN byste provedením tohoto postupu něměli přijít o data (ale mít zálohu nikdy neuškodí).\n\n Jste si opravdu jisti, že chcete vymyzat KeyStore? + V některých případech vymazání KeyStore může pomoci vyřešit problémy. Pokračujte, pouze pokud víte, co děláte! \n\n Varování: Vzhledem k tomu, že máte šifrování databáze nastaveno na Android KeyStore ztratíte tímto krokem všechny své účty. Ujistěte se, že máte zálohu!\n\n Jste si opravdu jisti, že chcete vymyzat KeyStore? Žádný @@ -50,6 +68,10 @@ PIN Stejné jako zařízení + + Android KeyStore + Heslo / PIN + Smazat všechny účty Obnovit výchozí nastavení @@ -60,17 +82,24 @@ Černý vzhled + Skryté Malé Výchozí Střední Velké + + Nedělit + Po dvou znacích + Po třech znacích + Podle systému - Heslo - PIN + Zadejte nové heslo + Zadejte nový PIN Potvrďte heslo Potvrďte PIN - (beze změn) + Heslo musí obsahovat alespoň %1$d znaků! + PIN musí obsahovat alespoň %1$d číslic! diff --git a/app/src/main/res/values-de-rDE/strings_about.xml b/app/src/main/res/values-de-rDE/strings_about.xml index e69a7d16..e11797df 100644 --- a/app/src/main/res/values-de-rDE/strings_about.xml +++ b/app/src/main/res/values-de-rDE/strings_about.xml @@ -2,8 +2,7 @@ Über - -Eine OpenSource-zwei-Faktor-Authentifizierung App für Android 4.4+. + Quelloffene zwei-Faktor-Authentifizierung für Android Änderungsprotokoll Lizenz @@ -13,9 +12,11 @@ Eine OpenSource-zwei-Faktor-Authentifizierung App für Android 4.4+. Version Autoren - Hauptautor + Hauptentwickler + Entwickler Autor der ursprünglichen App Ursprüngliche App + Webseite Spenden Mitwirkende Übersetzer @@ -29,4 +30,5 @@ Eine OpenSource-zwei-Faktor-Authentifizierung App für Android 4.4+. Sind Sie sicher, dass Sie die Sonderfunktionen aktivieren möchten? Die meisten davon sind nicht standardgemäße OTP-Algorithmen, die auf besonderen Wunsch umgesetzt wurden. Diese sind nicht offiziell unterstützt und mit gewissen Einschränkungen. Bitte lesen (und verstehen) Sie die Seite \"Special Features\" im Github Wiki um mehr darüber zu lernen, bevor Sie sie verwenden. Sonderfunktionen aktiviert Sonderfunktionen bereits aktiviert + Spenden-Link wurde in die Zwischenablage kopiert diff --git a/app/src/main/res/values-de-rDE/strings_auth.xml b/app/src/main/res/values-de-rDE/strings_auth.xml index 62483343..01b4e209 100644 --- a/app/src/main/res/values-de-rDE/strings_auth.xml +++ b/app/src/main/res/values-de-rDE/strings_auth.xml @@ -6,9 +6,13 @@ Passwort PIN - Bitte geben Sie Ihr Passwort ein, um andOTP zu starten. - Bitte geben Sie Ihre PIN ein, um andOTP zu starten. + Bitte authentifizieren Sie sich, um andOTP zu starten! + Bitte bestätigen Sie Ihre Authentifizierung um den neuen Verschlüsselungsschlüssel zu generieren! + + Entsperren Bitte setzen Sie ein Passwort in den Einstellungen! Bitte setzen Sie eine PIN in den Einstellungen! + Falsches Passwort, bitte erneut versuchen! + Falsche PIN, bitte erneut versuchen! diff --git a/app/src/main/res/values-de-rDE/strings_backup.xml b/app/src/main/res/values-de-rDE/strings_backup.xml index 77159651..da4ae854 100644 --- a/app/src/main/res/values-de-rDE/strings_backup.xml +++ b/app/src/main/res/values-de-rDE/strings_backup.xml @@ -11,7 +11,7 @@ Wiederherstellen (Klartext) Wiederherstellen (verschlüsselt) Wiederherstellen (OpenPGP) - Replace existing entries + Vorhandene Einträge ersetzen Alle Konten in einer Klartext-JSON-Datei sichern Alle Konten in einer passwortgeschützten JSON-Datei sichern Alle Konten in einer OpenPGP-verschlüsselten JSON-Datei sichern @@ -27,9 +27,7 @@ Sie müssen einen OpenPGP-Schlüssel in den Einstellungen auswählen, bevor Sie verschlüsselte Backups erstellen können. - If enabled all old entries are replaced when importing a - backup and only the backup is present. If disabled the old entries and the backups content - are merged. + Wenn aktiviert, dann werden beim Import einer Datensicherung alle vorhandenen Einträge ersetzt, so das nur die Datensicherung übrig bleibt. Wenn deaktivert, dann werden die bestehenden Einträge mit dem Inhalt der Datensicherung zusammengeführt. Sicherheitswarnung Möchten Sie wirklich die Datenbank als diff --git a/app/src/main/res/values-de-rDE/strings_main.xml b/app/src/main/res/values-de-rDE/strings_main.xml index 7c4f12df..92011e45 100644 --- a/app/src/main/res/values-de-rDE/strings_main.xml +++ b/app/src/main/res/values-de-rDE/strings_main.xml @@ -7,7 +7,7 @@ QR-Code scannen Sichern Neuer Marker - Sie wurden gewarnt! + Einstellungen Alle Marker Keine Marker @@ -24,6 +24,7 @@ Beschriftung Algorithmus Marker + Erweiterte Einstellungen Marker anzeigen Marker ausblenden @@ -41,35 +42,34 @@ Marker bearbeiten Entfernen + Authentifizierung fehlgeschlagen, bitte erneut versuchen! Authentifizierung fehlgeschlagen, andOTP wird geschlossen! In Zwischenablage kopiert Dieser Eintrag ist bereits vorhanden Ungültiger QR-Code + Verschlüsselungsschlüssel nicht geladen Authentifizieren Details eingeben Entfernen Umbenennen - Sicherheit und Backups Zuletzt benutzt + KeyStore Fehler + Datenbankverschlüsselung Bitte geben Sie die Anmeldeinformationen Ihres Geräts ein, um andOTP zu starten. - Möchten Sie das Konto wirklich entfernen? - Zum Schutz Ihrer Kontoinformationen werden diese - von dieser App nur verschlüsselt gespeichert. Ein Teil des dafür verwendeten Schlüssels - wird im Android KeyStore System gespeichert. Der Vorteil dieses Ansatzes ist, dass der - Schlüssel getrennt von den Anwendungsdaten gehalten wird und kann durch - Hardware-Kryptographie (sofern Ihr Endgerät dies unterstützt) geschützt werden. - - Als Nachteil werden dadurch Sicherungen der - Anwendungs-Daten etwas schwieriger. Falls Sie Drittanbieter-Anwendungen - (z. B. Titanium Backup) verwenden, werden nur die Datendateien gesichert, aber - nicht der Verschlüsselungsschlüssel und solche Backups daher unbrauchbar. - - Bitte verwenden Sie nur die interne Backup-Funktionen, - die von der App bereitgestellt werden, um Ihre Konten zu sichern! Alles andere WIRD zum Datenverlust führen. - - Diese Meldung wird nicht nochmal angezeigt. + Sind Sie sicher, dass das Konto \"%1$s\" gelöscht werden soll? + 1. Android KeyStore + 2. Passwort / PIN + Zur Gewährleistung der Sicherheit Ihrer Konten speichert diese App diese nur in verschlüsselten Dateien unter Benutzung einer der folgenden zwei Methoden: + Der KeyStore ist eine Systemkomponente von Android für die sichere Speicherung von kryptographischen Schlüsseln. +Der Vorteil dieses Ansatzes ist, dass die Schlüssel getrennt von den Datendateien gespeichert und durch +Hardware-Verschlüsselung (falls von der Hardware unterstützt) gesichert werden können. +Aber dadurch das die Schlüssel nicht zusammen mit den Anwendungsdaten gespeichert werden, wird verhindert dass diese +Methode mit externen Backup-Lösungen (z. B. Titanium) funktioniert. Wenn Sie diese Methode wählen, müssen Sie sich auf die internen Backup-Funktionen verlassen, die andOTP zur Verfügung stellt. + Diese Methode wird Ihre Daten mit einem Schlüssel verschlüsseln, der aus einem Passwort oder einer PIN erzeugt wird. Der Hauptvorteil ist, dass dies mit externen Backup-Lösungen (wie Titanium) funktioniert. Allerdings müssen Sie bei jedes Mal beim Start von andOTP Ihre Anmeldedaten eingeben. + Standardmäßig wird der Android KeyStore verwendet. Es jedoch bekannt, das dies bei bestimmten Custom-ROMs (und einigen wenigen Werksmäßigen) Probleme verursacht. Sie können die Verschlüsselung in den Einstellungen ändern, indem Sie auf den Button weiter unten klicken. Damit andOTP erkennt welches Token zuletzt benutzt wurde, muss entweder \"Tippen zum Anzeigen\" aktiv sein oder der Kopieren-Button benutzt werden.\n\n Diese Nachricht wird nicht erneut angezeigt. + Fehler beim Laden des Verschlüsselungsschlüssels aus dem KeyStore. Alle Einträge, die hinzugefügt werden gehen verloren.\n\nUm andOTP dennoch verwenden zu können, rufen Sie die Einstellungen auf und setzen die Datenbank-Verschlüsselung auf Passwort / PIN. diff --git a/app/src/main/res/values-de-rDE/strings_settings.xml b/app/src/main/res/values-de-rDE/strings_settings.xml index cf40c6eb..e689145b 100644 --- a/app/src/main/res/values-de-rDE/strings_settings.xml +++ b/app/src/main/res/values-de-rDE/strings_settings.xml @@ -12,13 +12,14 @@ Authentifizierung Passwort PIN + Datenbankverschlüsselung Panik-Trigger Sprache Design Schriftgrösse der Beschriftung Beschriftung scrollen - Thumbnails anzeigen Thumbnail-Größe + Token mit Leerzeichen unterteilen Nach Dateinamen fragen Sicherungsverzeichnis Datensicherungs-Passwort @@ -28,6 +29,7 @@ Verschlüsselte Datensicherungen überprüfen Spezielle Funktionen aktivieren Bildschirmfoto aktivieren + KeyStore leeren OTP-Token standardmäßig ausblenden, erfordert dass sie manuell aufgedeckt werden @@ -36,20 +38,36 @@ Überlange Beschriftungen scrollen, statt diese abzuschneiden Jedes Mal nach dem Dateinamen fragen, wenn eine Sicherung erstellt oder wiederhergestellt wird Verzeichnis für die Sicherungen (Dateinamen hängen vom Backup-Typ ab) - Setzt das Kennwort, das verwendet wird, um die + Setzt das Passwort, das verwendet wird, um die Sicherungen zu verschlüsseln Jedes verschlüsselte Backup wird zusätzlich mit Ihrem Schlüssel signiert (Passwort erforderlich) Verschlüsselte Backups werden nur importiert, wenn sie mit einem gültigen Schlüssel signiert sind + Haken entfernen, um die speziellen Funktionen wieder zu deaktivieren Erlauben von Bildschirmfotos des Hauptbildschirms (aus Sicherheitsgründen standardmässig deaktiviert) - Haken entfernen, um die speziellen Funktionen wieder zu deaktivieren + Verschlüsselungsschlüssel aus dem KeyStore löschen Dieses Feature erfordert mindestens Android 5.0 (Lollipop) um zu funktionieren Dieses Feature erfordert das ein geschützter Sperrbildschirm eingerichtet ist (Einstellungen -> Sicherheit -> Displaysperre) + Ein leeres Passwort ist nicht zulässig, setzen Sie die Authentifizierung auf \"Keine\", um es zu deaktivieren! + Es wird versucht die Datenbank-Verschlüsselung zu ändern, bitte warten! + Die Datenbank-Verschlüsselung wurde erfolgreich geändert! + Fehler beim Ändern der Datenbank-Verschlüsselung, es wird auf den ursprünglichen Zustand zurückgegriffen! + Erstellung eines internen Backups fehlgeschlagen. Abbruch! + Fehler beim Abrufen des Verschlüsselungsschlüssels. Abbruch! + Authentifizierung fehlgeschlagen! + Transparentes Umstellen vom Ihrem Passwort / Ihrer PIN auf die neuen Verschlüsselung fehlgeschlagen, bitte setzen Sie es manuell in den Einstellungen zurück! + Fehler + KeyStore leeren? + Sie können nur ein Passwort oder eine PIN verwenden, solange die Datenbankverschlüsselung auf \"Passwort / PIN\" eingestellt ist! + Sie müssen zuerst die Authentifizierung auf \"Passwort\" oder \"PIN\" setzen! + Sie müssen zuerst ein Passwort oder eine PIN festlegen, bevor Sie die Verschlüsselung ändern! + In einigen Fällen kann das Leeren des KeyStores helfen, Probleme zu lösen. Sie sollten nur fortfahren, wenn Sie wissen, was Sie tun!\n\nDa die Datenbankverschlüsselung auf Passwort / PIN eingestellt ist, sollten Sie dadurch keine Daten verlieren (aber es schadet nie, Datensicherungen zu haben).\n\nSind Sie sich wirklich sicher, dass Sie den KeyStore leeren wollen? + In einigen Fällen kann das Leeren des KeyStore helfen, Probleme zu lösen. Sie sollten nur fortfahren, wenn Sie wissen, was Sie tun!\n\nWarnung: Da die Datenbankverschlüsselung auf Androd KeyStore eingestellt ist, werden Sie alle Konten verlieren. Stellen Sie sicher, dass Sie eine Datensicherung haben!.\n\nSind Sie sich wirklich sicher, dass Sie den KeyStore leeren wollen? Keine @@ -57,6 +75,10 @@ PIN Gerät-Anmeldedaten + + Android KeyStore + Passwort / PIN + Alle Konten löschen Einstellungen zurücksetzen @@ -67,17 +89,24 @@ Schwarzes Design + Versteckt Klein Standard Mittel Gross + + Nicht unterteilen + Nach zwei Zeichen + Nach drei Zeichen + Systemstandard - Passwort - PIN + Neues Passwort eingeben + Neue PIN eingeben Passwort bestätigen PIN bestätigen - (unverändert) + Das Passwort muss mindestens %1$d Zeichen lang sein! + Die PIN muss mindestens %1$d Ziffern lang sein! diff --git a/app/src/main/res/values-es-rES/strings_about.xml b/app/src/main/res/values-es-rES/strings_about.xml index 898d50ff..6908b997 100644 --- a/app/src/main/res/values-es-rES/strings_about.xml +++ b/app/src/main/res/values-es-rES/strings_about.xml @@ -2,8 +2,7 @@ Acerca de - Una aplicaciónde de código abierto de doble factor de - autenticación para Android 4.4+. + Autenticación de código abierto de doble factor para Android Historial de cambios Licencia @@ -13,9 +12,11 @@ Versión Autores - Autor principal + Desarrollador principal + Desarrollador Autor de la aplicación original Aplicación original + Página web Donar Contribuidores Traductores @@ -33,4 +34,5 @@ antes de usarlas. Funcionalidades especiales activadas Funcionalidades especiales ya activadas + Enlace de donativos copiado al portapapeles diff --git a/app/src/main/res/values-es-rES/strings_auth.xml b/app/src/main/res/values-es-rES/strings_auth.xml index ef6960c5..15eebdbf 100644 --- a/app/src/main/res/values-es-rES/strings_auth.xml +++ b/app/src/main/res/values-es-rES/strings_auth.xml @@ -6,9 +6,13 @@ Contraseña PIN - Introduzca su contraseña para iniciar andOTP. - Introduzca su PIN para iniciar andOTP. + ¡Autentícate para iniciar andOTP! + ¡Autentícate para generar una nueva clave de cifrado! + + Desbloquear Configura una contraseña en los ajustes! Configura un PIN en los ajustes! + Contraseña incorrecta ¡Inténtelo de nuevo! + PIN incorrecto ¡Inténtelo de nuevo! diff --git a/app/src/main/res/values-es-rES/strings_backup.xml b/app/src/main/res/values-es-rES/strings_backup.xml index 6ae084b0..1bb6dcbb 100644 --- a/app/src/main/res/values-es-rES/strings_backup.xml +++ b/app/src/main/res/values-es-rES/strings_backup.xml @@ -11,7 +11,7 @@ Restaurar (texto plano) Restaurar (cifrada) Restaurar (OpenPGP) - Replace existing entries + Reemplazar entradas existentes Hace copia de seguridad de todas las cuentas en un fichero JSON de texto plano Hace copia de seguridad de todas las cuentas en un fichero JSON con contraseña Hace copia de seguridad de todas las cuentas en un fichero JSON cifrado con OpenPGP @@ -27,9 +27,9 @@ Necesitas seleccionar una clave OpenPGP en los Ajustes antes de crear una copia de seguridad cifrada. - If enabled all old entries are replaced when importing a - backup and only the backup is present. If disabled the old entries and the backups content - are merged. + Activado, las entradas antiguas se reemplazarán al importar una + copia de seguridad y solo quedarán las de la copia. Desactivado, las entradas + antiguas y las nuevas se juntan. Advertencia de seguridad ¿Realmente quieres exportar la base de datos como diff --git a/app/src/main/res/values-es-rES/strings_main.xml b/app/src/main/res/values-es-rES/strings_main.xml index 93e9483d..315622f4 100644 --- a/app/src/main/res/values-es-rES/strings_main.xml +++ b/app/src/main/res/values-es-rES/strings_main.xml @@ -7,7 +7,7 @@ Escanear código QR Guardar Nueva etiqueta - ¡Has sido avisado! + Ajustes Todas etiquetas Sin etiquetas @@ -24,6 +24,7 @@ Etiqueta Algoritmo Etiquetas + Opciones Avanzadas Mostrar etiquetas Ocultar etiquetas @@ -41,34 +42,43 @@ Editar etiquetas Eliminar + La autentificación ha fallado, por favor inténtelo otra vez! La autenticación ha fallado, cerrando andOTP! Copiado al portapapeles La entrada ya existe Código QR inválido + Clave de cifrado no cargada Autenticar Introducir datos Eliminar Renombrar - Seguridad y copias de seguridad Último usado + Error en el almacen de claves + Cifrado de base de datos Por favor, introduce los credenciales del dispositivo para iniciar andOTP. - ¿Está seguro de que desea eliminar esta cuenta? - Para mantener la información de tu cuenta segura esta aplicación - solo la guarda cifrada. Parte de la clave de cifrado utilizada es almacenada en el almacen - de claves de Android. La ventaja de este método es que la clave está separada de los datos de la aplicación - y puede ser almacenada en un enclave hardware (si el dispositivo lo soporta). - - Como desventaja esto hace la copia de seguridad de los datos - de la aplicación un poco más díficil. Si usas una aplicación de terceros (como Titanium Backup) solo - haces copias de seguridad de los ficheros de datos, no de la clave de cifrado. - Como resultado esas copias son inútiles. - - Por favor útiliza sólo los métodos de copias de seguridad internos - provistos por la aplicación. Cualquier otro método HARÁ que pierdas los datos. - - Este mensaje no volverá a ser mostrado. + ¿Seguro que desea eliminar la cuenta \"%1$s\"? + 1. Almacen de claves de Android + 2. Contraseña / PIN + Para garantizar la seguridad de tus cuentas, esta aplicación + solo las almacena cifradas usando alguno de estos dos métodos: + El almacen de claves es un componente de Android que sirve + para almacenar claves criptográficas de forma segura. La ventaja de este método es que las + claves se almacen por separado de los ficheros con datos y pueden ser respaldadas por criptografía + en el hardware (si el hardware lo soporta). Como las claves no están almacenadas con la información de la + aplicación este método no permite sistemas de copias de seguridad externos (como Titanium). Si eliges este método + tienes que utilizar el sistema interno de copias de seguridad que provee andOTP. + Este método cifrará tus datos con una clave + generada con tu contraseña o PIN. La ventaja principal es que funcionará con + sistemas externos de copias de seguridad (como Titanium). Aunque tendrás que introducir + los credenciales cada vez que inicies andOTP. + Por defecto se utiliza el almacen de claves de Android, aunque + se sabe que puede causar problemas en ciertas ROMs personalizas (y algunas por defecto). + Puedes cambiar el método desde los Ajustes pulsando el botón inferior. Para que andOTP pueda saber qué código ha sido el último usado tienes que activar \"Tocar para mostrar\" o usar el botón de copiar.\n\nEste mensaje no se mostrará de nuevo. + Error al cargar la clave del almacen de claves. + Cualquier entrada añadida se perderá.\n\nPara poder seguir usando andOTP puedes ir + a Ajustes y cambiar el Cifrado de base de datos a Contraseña / PIN. diff --git a/app/src/main/res/values-es-rES/strings_settings.xml b/app/src/main/res/values-es-rES/strings_settings.xml index 07ee442a..2ef14d2a 100644 --- a/app/src/main/res/values-es-rES/strings_settings.xml +++ b/app/src/main/res/values-es-rES/strings_settings.xml @@ -12,13 +12,14 @@ Autenticación Contraseña PIN + Cifrado de base de datos Botón del pánico Idioma Aspecto Tamaño de fuente Desplazar etiqueta - Mostrar miniaturas Tamaño de miniatura + Separar el código con espacio Pedir nombre de fichero Carpeta para copias de seguridad Contraseña de copia de seguridad @@ -28,6 +29,7 @@ Comprobar copias de seguridad cifradas Activar funcionalidades especiales Habilitar capturas de pantalla + Vaciar el almacen de claves Esconder códigos OTP por defecto, necesitando mostrarlos manualmente @@ -45,14 +47,47 @@ tu clave (necesita contraseña) Las contraseñas de copias de seguridad cifradas sólo se importan si están firmadas con una clave válida + Desmarca para desactivar las funcionalidades especiales de nuevo Permitir capturas de pantalla de la vista principal (Desactivado por defecto por razones de seguridad) - Desmarca para desactivar las funcionalidades especiales de nuevo + Elimina la clave de cifrado del almacen de claves Esta característica requiere al menos Android 5.0 (Lollipop) Esta característica requiere bloqueo de salvapantallas seguro (Settings -> Security -> Screenlock) + Una contraseña vacía no está permitida, + cambia autenticación a \"Ninguno\" para desactivarla! + Intentando cambiar el cifrado de la base de datos, + espera! + Cambio del cifrado de la base de datos + con éxito! + Fallo al cambiar el cirado de la base de datos, + revirtiendo al estado original! + Fallo al crear la copia de seguridad interna, + abortando! + Fallo al obtener la clave de cifrado, abortando! + Error de autenticación! + Fallo al actualizar la contraseña / PIN al nuevo cifrado, + por favor reinicia manualmente desde ajustes! + Error + Vaciar el almacen de claves? + Solo puedes usar la contraseña o el PIN si + el cifrado de la base de datos está establecido a \"Contraseña / PIN\"! + Primero tienes que establecer + la autenticación a \"Contraseña\" o \"PIN\"! + Primero necesitas establecer una + contraseña o PIN antes de cambiar el cifrado! + En algunos casos vaciar el almacen de claves + puede ayudar a solventar problemas. Deberías solo hacerlo si sabes lo que haces!\n\nPuesto + que el Cifrado de la base de datos está como Contraseña / PIN no deberías perder + ninguna información haciéndolo (pero nunca es malo tener una copia de seguridad igualmente).\n\n + ¿Seguro que quieres vaciar el almacen de claves? + En algunos casos vaciar el almacen de claves + puede ayudar a solventar problemas. Deberías solo hacerlo si sabes lo que haces!\n\nAdvertencia: + Puesto que el Cifrado de la base de datos está como Almacen de claves de Android perderás todas + tus cuentas. ¡Comprueba que tienes una copia de seguridad!\n\n + ¿Seguro que quieres vaciar el almacen de claves? Ninguno @@ -60,6 +95,10 @@ PIN Credenciales del dispositivo + + Almacen de claves de Android + Contraseña / PIN + Eliminar todas las cuentas Restablecer la configuración @@ -70,17 +109,24 @@ Tema negro + Oculto Pequeño Predeterminado Mediano Grande + + No partir + Tras dos carácteres + Tras tres carácteres + Predeterminado por el sistema - Contraseña - PIN + Introduce la nueva contraseña + Introducir nuevo PIN Confirmar contraseña Confirmar PIN - (sin cambios) + ¡La contraseña debe ser al menos de %1$d caracteres! + ¡El PIN debe ser al menos de %1$d dígitos! diff --git a/app/src/main/res/values-fr-rFR/strings_about.xml b/app/src/main/res/values-fr-rFR/strings_about.xml index 18171a89..7c3124de 100644 --- a/app/src/main/res/values-fr-rFR/strings_about.xml +++ b/app/src/main/res/values-fr-rFR/strings_about.xml @@ -2,10 +2,7 @@ À propos - - Une application Open Source d\'authentification à deux facteurs pour - Android 4.4+. - + Authentification open source à double facteurs pour Android Liste des changements Licence @@ -15,11 +12,13 @@ Version Auteurs - Auteur principal + Développeur principal + Développeur Auteur de l\'application originale Application originale + Site web Faire un don Contributeurs Traducteurs @@ -37,4 +36,5 @@ Êtes-vous sûr de vouloir activer les fonctionnalités spéciales ? La plupart d\'entre elles sont des algorithmes OTP non standard qui ont été implémentés sur demande spéciale. Elles ne sont pas supportées officiellement et peuvent venir avec certaines limitations. Veuillez lire (et comprendre) la page « Fonctionnalités spéciales » sur le wiki du GitHub pour en apprendre d\'avantage avant de les utiliser. Fonctionnalités spéciales activées Fonctionnalités spéciales déjà activées + Lien de don copié dans le presse-papier diff --git a/app/src/main/res/values-fr-rFR/strings_auth.xml b/app/src/main/res/values-fr-rFR/strings_auth.xml index d197fd55..aac38b30 100644 --- a/app/src/main/res/values-fr-rFR/strings_auth.xml +++ b/app/src/main/res/values-fr-rFR/strings_auth.xml @@ -6,12 +6,11 @@ Mot de passe Code PIN - - Veuillez entrer votre mot de passe pour démarrer andOTP. - - - Veuillez entrer votre code PIN pour démarrer andOTP. - + Veuillez vous authentifier pour lancer andOTP ! + Veuillez confirmer votre authentification pour générer la + nouvelle clé de chiffrement ! + + Déverrouiller Veuillez ajouter un mot de passe dans les paramètres ! @@ -19,4 +18,6 @@ Veuillez ajouter un code PIN dans les paramètres ! + Mot de passe incorrect, veuillez réessayer ! + Code PIN incorrect, veuillez réessayer ! diff --git a/app/src/main/res/values-fr-rFR/strings_main.xml b/app/src/main/res/values-fr-rFR/strings_main.xml index 1f78fd2e..90e40fe9 100644 --- a/app/src/main/res/values-fr-rFR/strings_main.xml +++ b/app/src/main/res/values-fr-rFR/strings_main.xml @@ -7,7 +7,7 @@ Scanner un QR-Code Enregistrer Nouveau tag - Vous avez été prévenu ! + Paramètres Tous les tags Aucun tag @@ -24,6 +24,7 @@ Titre Algorithme Tags + Options avancées Afficher les tags Cacher les tags @@ -41,51 +42,46 @@ Éditer les tags Supprimer - - L\'authentification a échoué, fermeture d’andOTP ! - + Échec d\'authentification, veuillez réessayer ! + Échec d\'authentification, fermeture d\'andOTP ! Copié dans le presse-papier Cette entrée existe déjà QR-Code invalide + Clé de chiffrement non chargée Identifiez-vous Ajouter les détails Supprimer Renommer - - Sécurité et sauvegardes - Dernier utilisé + Erreur KeyStore + Chiffrement de la base de données Veuillez entrer les informations d\'identification du périphérique pour démarrer andOTP. - - Êtes-vous sûr de vouloir supprimer ce compte ? - - - Pour conserver les informations de vos comptes de manière sécurisé, cette - application ne les stocke que chiffrées. Une partie des clés de - chiffrement utilisées à cet effet sont stockées dans le KeyStore - d\'Android. Cette approche a l\'avantage de séparer les clés des données - de l\'application et permet d’utiliser le matériel dédié à la - cryptographie (s\'il est géré par votre périphérique). - - - Néanmoins, cela rend plus difficile la réalisation de sauvegardes des - données de l\'application. Si vous utilisez une application tierce (comme - Titanium Backup), vous ne pourrez sauvegarder que les données et non les - clés de chiffrement, rendant les sauvegardes inexploitables. - - - Veuillez n\'utiliser que les fonctions de sauvegarde proposées par - l\'application pour sauvegarder vos comptes ! Toute autre méthode - provoquera des pertes de données. - - - Ce message n\'apparaîtra plus par la suite. - + Êtes-vous sûr(e) de vouloir supprimer le compte \"%1$s\" ? + 1. KeyStore Android + 2. Mot de passe / Code PIN + Pour assurer la sécurité de vos comptes, cette application + ne les stocke que dans des fichiers de données chiffrés en utilisant l\'une de ces deux méthodes : + Le KeyStore est un composant système d\'Android pour + stocker de manière sécurisée les clés cryptographiques. L\'avantage de cette approche est que les clés sont + stockées séparément des fichiers de données et peuvent être adossées à une cryptographie matérielle (si le + matériel le supporte). Cependant, comme les clés ne sont pas stockées avec les données des applications, cette méthode + empêche les solutions de sauvegarde externes (comme Titanium) de fonctionner. Si vous choisissez cette méthode + vous devrez faire confiance aux fonctionnalités internes de sauvegarde fournises par andOTP. + Cette méthode va chiffrer vos données avec une clé + générée à partir d\'un mot de passe ou code PIN. L\'avantage principal ici est que cela marchera avec + les solutions de sauvegarde externes (comme Titanium). Cependant, vous devrez saisir vos identifiants + à chaque fois que vous lancez andOTP. + Par défaut, le KeyStore d\'Android sera utilisé. Cependant, + il est connu pour causer des problèmes avec certaines ROMs custom (ainsi que certaines stock aussi). Vous + pouvez changer le chiffrement dans les paramètres en appuyant sur le bouton ci-dessous. Afin que andOTP puisse reconnaitre le dernier jeton utilisé vous devez activer l\'option \"appuyer pour afficher\" ou utiliser le bouton de copie.\n\nCe message ne s\'affichera plus. + Échec du chargement de la clé de chiffrement à partir du KeyStore. + Toute entrée ajoutée sera perdue.\n\nPour continuer à utiliser andOTP, vous pouvez aller + dans les paramètres pour passer de Chiffrement de la base de données vers Mot de passe / Code PIN. diff --git a/app/src/main/res/values-fr-rFR/strings_settings.xml b/app/src/main/res/values-fr-rFR/strings_settings.xml index cc0101de..57514fdf 100644 --- a/app/src/main/res/values-fr-rFR/strings_settings.xml +++ b/app/src/main/res/values-fr-rFR/strings_settings.xml @@ -12,6 +12,7 @@ Identification Mot de passe Code PIN + Chiffrement de la base de données Bouton d\'urgence Langage Thème @@ -19,8 +20,8 @@ Taille de la police des titres Défilement des libellés - Afficher les miniatures Taille des miniatures + Séparer le jeton avec des espaces Demander le nom du fichier Répertoire de sauvegarde @@ -40,6 +41,7 @@ Activer les fonctionnalités spéciales Permettre les copies d\'écran + Effacer le KeyStore Cacher les jetons OTP par défaut et les afficher manuellement @@ -62,8 +64,9 @@ Les sauvegardes chiffrées ne sont restaurées que lorsqu\'elles sont signées avec une clé valide. - Permettre de prendre des copies d\'écran de la vue principale (désactivé par défaut pour des raisons de sécurité) Décochez pour désactiver les fonctionnalités spéciales + Permettre de prendre des copies d\'écran de la vue principale (désactivé par défaut pour des raisons de sécurité) + Supprimer la clé de chiffrement depuis le KeyStore Cette fonctionnalité n\'est disponible que sur Android 5.0 (Lollipop) ou @@ -73,6 +76,38 @@ Cette fonctionnalité nécessite l\'activation du verrouillage de l’écran (Paramètres -> Sécurité -> Verrouillage de l\'écran) + Un mot de passe vide n\'est pas autorisé, définissez + l\'Authentification sur \"Aucune\" pour la désactiver ! + Changement du chiffrement de la base de données, + veuillez patienter ! + Chiffrement de la base de données changé + avec succès ! + Impossible de changer le chiffrement de la base de données, + retour à l\'état original ! + Échec de la création d\'une sauvegarde + interne, annulation ! + Impossible d’obtenir la clé de chiffrement, abandon ! + Échec de l\'authentification ! + Échec de la mise à jour de votre mot de passe / code PIN + pour le nouveau chiffrement, veuillez le réinitialiser manuellement depuis les paramètres ! + Erreur + Vider le KeyStore ? + Vous pouvez seulement utiliser un mot de passe ou un code PIN si + le chiffrement de la base de données est défini sur \"Mot de passe / Code PIN\" ! + Vous devez d\'abord définir + l\'authentification sur \"Mot de passe / Code PIN\" ! + Vous devez d\'abord définir un + mot de passe ou code PIN avant de changer le chiffrement ! + Dans certains cas, effacer le KeyStore + peut aider à résoudre des problèmes. Vous ne devriez seulement le faire si vous savez ce que vous faites !\n\nVu que + le chiffrement de la base de données est défini sur Mot de passe / Code PIN, vous ne devriez perdre aucune donnée + en le faisant (mais ça ne fait jamais de mal de faire une sauvegarde).\n\nÊtes-vous sûr(e) de vouloir + effacer le KeyStore ? + Dans certains cas, effacer le KeyStore + peut aider à résoudre des problèmes. Vous ne devriez seulement le faire si vous savez ce que vous faites !\n\nAttention: + Vu que le chiffrement de la base de données est défini sur KeyStore Android, vous allez perdre tous + vos comptes. Assurez-vous d\'avoir une sauvegarde !\n\nÊtes-vous sûr(e) de vouloir effacer le + KeyStore ? Aucune @@ -80,6 +115,10 @@ Code PIN Identification du périphérique + + KeyStore Android + Mot de passe / PIN + Supprimer l\'ensemble des comptes Réinitialiser les paramètres de l\'application @@ -90,19 +129,26 @@ Thème noir + Masqué Petit Par défaut Moyen Grand + + Ne pas séparer + Après deux caractères + Après trois caractères + Par défaut du système - Mot de passe - Code PIN + Saisir le nouveau mot de passe + Saisir le nouveau code PIN Confirmer le mot de passe Confirmer le code PIN - (inchangé) + Le mot de passe doit comporter au moins %1$d caractères ! + Le code PIN doit comporter au moins %1$d chiffres ! diff --git a/app/src/main/res/values-gl-rES/strings_about.xml b/app/src/main/res/values-gl-rES/strings_about.xml index 16fc9927..7cec8ba1 100644 --- a/app/src/main/res/values-gl-rES/strings_about.xml +++ b/app/src/main/res/values-gl-rES/strings_about.xml @@ -2,8 +2,7 @@ Sobre - -Un aplicativo libre de autenticación de dous factores para Android 4.4+. + Autenticación de doble-factor de código aberto para Android Cambios Licenza @@ -13,9 +12,11 @@ Un aplicativo libre de autenticación de dous factores para Android 4.4+. Versión Autores - Autor principal + Desenvolvedor principal + Desenvolvedor Autor do aplicativo orixinal Aplicativo orixinal + Páxina web Doar Colaboradores Tradutores/as @@ -33,4 +34,5 @@ Un aplicativo libre de autenticación de dous factores para Android 4.4+. Funcionalidades especiais activadas As funcionalidades especiais xa están activadas + Ligazón de doazóns copiada ao portapapeis diff --git a/app/src/main/res/values-gl-rES/strings_auth.xml b/app/src/main/res/values-gl-rES/strings_auth.xml index 18c5a284..2a295fdd 100644 --- a/app/src/main/res/values-gl-rES/strings_auth.xml +++ b/app/src/main/res/values-gl-rES/strings_auth.xml @@ -6,9 +6,14 @@ Contrasinal PIN - Introduza o contrasinal para iniciar andOTP. - Introduza o PIN para iniciar andOTP. + Por favor autentíquese para iniciar andOTP! + Por favor confirme a súa autenticación para xerar + a nova chave de cifrado! + + Desbloquear Establecer un contrasinal en axustes! Establecer un PIN en axustes! + Contrasinal incorrecto, téntao de novo! + PIN incorrecto, téntao de novo! diff --git a/app/src/main/res/values-gl-rES/strings_backup.xml b/app/src/main/res/values-gl-rES/strings_backup.xml index 03f3752d..b6179e89 100644 --- a/app/src/main/res/values-gl-rES/strings_backup.xml +++ b/app/src/main/res/values-gl-rES/strings_backup.xml @@ -11,7 +11,7 @@ Restaurar (texto plano) Restaurar (cifrada) Restaurar (OpenPGP) - Replace existing entries + Substituír as entradas existentes Facer copia de seguranza de todas as contas nun ficheiro de texto plano JSON Facer copia de seguranza de todas as contas nun ficheiro JSON con contrasinal Facer copia de seguranza de todas as contas nun ficheiro JSON cifrado con OpenPGP @@ -27,9 +27,8 @@ Necesitas seleccionar unha chave OpenPGP nos Axustes antes de crear unha copia de seguranza cifrada. - If enabled all old entries are replaced when importing a - backup and only the backup is present. If disabled the old entries and the backups content - are merged. + Si se habilita todas as entradas antigas reemplazaranse ao importar + o respaldo e só aparecerán as do respaldo. Si se deshabilita aparecerán tanto as entradas antigas como as do respaldo. Advertencia de seguranza ¿Queres exportar a base de datos como diff --git a/app/src/main/res/values-gl-rES/strings_main.xml b/app/src/main/res/values-gl-rES/strings_main.xml index 452ba72f..27da98d2 100644 --- a/app/src/main/res/values-gl-rES/strings_main.xml +++ b/app/src/main/res/values-gl-rES/strings_main.xml @@ -7,7 +7,7 @@ Escanear código QR Gardar Nova etiqueta - Estás avisado! + Axustes Todas as etiquetas Sen etiquetas @@ -24,6 +24,7 @@ Etiqueta Algoritmo Etiquetas + Opcións avanzadas Mostrar etiquetas Agochar as etiquetas @@ -41,34 +42,43 @@ Editar etiquetas Eliminar - A autenticación fallou, cerrando andOTP! + Fallou a autenticación, por favor inténteo de novo! + Fallou a autenticación, pechando andOTP! Copiado ao portapapeis Este nome xa existe Código QR inválido + Non se cargou a chave de cifrado Autenticar Introducir datos Eliminar Renomear - Seguranza e copias de seguranza Último usado + Fallo no KeyStore + Cifrado da base de datos Introduce as credenciais do dispositivo para iniciar andOTP. - Seguro que desexa borrar esta conta? - Para manter a información da túa conta segura este aplicativo - só a garda cifrada. Parte da chave de cifrado utilizada é almacenada no almacén - de chaves de Android. A vantaxe deste método é que a chave está separada dos datos do aplicativo - e pode ser almacenada nun enclave hardware (se o dispositivo o soporta). - - Coma desvantaxe isto fai a copia de seguranza dos datos - do aplicativo un pouco máis difícil. Se usas un aplicativo de terceiros (como Titanium Backup) só - fas copia de seguranza dos ficheiros de datos, non da chave de cifrado. - Como resultado esas copias son inútiles. - - Por favor utiliza só os métodos de copias de seguranza internos - fornecidos polo aplicativo. Calquera outro método FARÁ que perdas os datos. - - Esta mensaxe non volverá a mostrarse. + Está seguro de que quere quitar a conta \"%1$s\"? + 1. Android KeyStore + Contrasinal / PIN + Para certificar a seguridade das súas contas este aplicativo + só as garda en ficheiros cifrados utilizando un dos seguintes métodos: + O KeyStore e un compoñente do sistema Android para + gardar de xeito seguro chaves criptográficas. A vantaxe de este sistema é que as chaves + gárdanse separadas dos ficheiros de datos e poden respaldarse con criptografía de hardware (si o + hardware o soporta). Porén como as chaves non se gardan cos datos do aplicativo este método + non permiten utilizar solucións de respaldo externas (como Titanium). Si escolle este + método deberá confiar nos sistemas internos de respaldo proporcionados por andOTP. + Este método cifrará os seus datos con unha chave + xerada desde un contrasinal ou PIN. A principal vantaxe de este método é que funcionará con + solucións de respaldo externas (como Titanium). Porén deberá introducir as súas credenciais + cada vez que inicia andOTP. + Por omisión utilizase Android KeyStore, porén é coñecido + que esto pode causar problemas con algunhas ROMs personalizadas (e tamén nalgunhas oficiais). + Pode cambiar o cifrado en Axustes pulsando no botón inferior. Para que andOTP poida saber que código foi o último usado tes que activar \"Tocar para mostrar\" ou usar o botón de copiar.\n\nEsta mensaxe non se mostrará de novo. + Fallo ao cargar a chave de cifrado desde a KeyStore. + Perderase calquer entrada xa engadida.\n\nPara seguir utilizando andOTP pode ir a + Axustes e cambiar a Base de datos de cifrado a Contrasinal / PIN. diff --git a/app/src/main/res/values-gl-rES/strings_settings.xml b/app/src/main/res/values-gl-rES/strings_settings.xml index b8fc1e75..8b96ad1a 100644 --- a/app/src/main/res/values-gl-rES/strings_settings.xml +++ b/app/src/main/res/values-gl-rES/strings_settings.xml @@ -12,13 +12,14 @@ Autenticación Contrasinal PIN + Cifrado de Base de datos Panic Trigger Idioma Tema Tamaño da tipografía Desprazar etiqueta - Mostrar miniaturas Tamaño de miniatura + Separe o testemuño con espazo Preguntar polo nome do ficheiro Directorio de copias de seguranza Contrasinal da copia de seguranza @@ -28,6 +29,7 @@ Comprobar copias de seguranza cifradas Activar funcionalidades especiais Activar capturas de pantalla + Limpar KeyStore Agochar códigos OTP, require mostralos manualmente Selecciona o tempo (en segundos) tras o cal esconder @@ -44,14 +46,45 @@ túa chave (require contrasinal) As copias de seguranza cifradas só se importan se están asinadas con unha chave válida + Desmarcar para desactivar as funcionalidades especiais Permitir capturas de pantalla da vista principal (Desactivado por defecto por razóns de seguridade) - Desmarcar para desactivar as funcionalidades especiais + Eliminar a chave de cifrado da KeyStore Esta característica require polo menos Android 5.0 (Lollipop) Esta característica require bloqueo de pantalla seguro (Axustes -> Seguranza -> Bloqueo de pantalla) + Non se pode deixar baldeiro o contrasinal, estableza + Autenticación a \"Nada\" para deshabilitala! + Intentando cambiar o cifrado da base de datos, + agarde por favor! + Cambiouse correctamente o cifrado + da base de datos! + Fallou o cambio do cifrado da base de datos, + voltando ao estado orixinal! + Fallou a creación do respaldo + interno, abortando! + Fallou ao obter a chave de cifrado, abortanto! + Fallou a autenticación! + Fallo ao actualizar o seu contrasinal / PIN + ao novo cifrado, por favor restablezao en Axustes! + Erro + Limpar a KeyStore? + Só pode utilizar Contrasinal ou PIN + si o cifrado da base de datos se establece como \"Contrasinal / PIN\"! + Primeiro debe establecer + a Autenticación a \"Password\" ou \"PIN\"! + Primeiro debe establecer un Contrasinal + ou PIN antes de cambiar o cifrado! + En algúns casos limpar o KeyStore + pode axudar a resolver problemas. Só debería facer esto si sabe o que fai!\n\nXa que + o Cifrado da Base de datos está establecida a Cotrasinal / PIN non debería perder ningún + dato facendo esto (pero non está de máis ter un respaldo).\n\nEstá seguro de querer limpar a KeyStore? + En algúns casos limpar a KeyStore + pode axudar a resolver problemas. Só debería seguir si sabe o que fai!\n\nAviso: + Xa que o cifrado da base de datos está establecido a Android KeyStore perderá todas as súas contas. + Asegúrese de ter un respaldo!\n\nSeguro que quere limpar a KeyStore? Ningún @@ -59,6 +92,10 @@ PIN Credenciais do dispositivo + + Android KeyStore + Contrasinal / PIN + Eliminar todas as contas Restablecer axustes @@ -69,17 +106,24 @@ Tema negro + Agochado Pequeno Predefinido Mediano Grande + + Non separar + Despóis de dous caracteres + Despois de tres caracteres + Predefinido do sistema - Contrasinal - PIN + Inserir o novo contrasinal + Inserir o novo PIN Confirmar contrasinal Confirmar PIN - (sen cambios) + O contrasinal deber ter polo menos %1$d caracteres! + O PIN deber ter polo menos %1$d caracteres! diff --git a/app/src/main/res/values-nl-rNL/strings_about.xml b/app/src/main/res/values-nl-rNL/strings_about.xml index 6fab5265..2746a6ad 100644 --- a/app/src/main/res/values-nl-rNL/strings_about.xml +++ b/app/src/main/res/values-nl-rNL/strings_about.xml @@ -2,8 +2,7 @@ Over - -Een open-source verificatie met twee factoren App voor Android 4.4 +. + Open source twee staps authenticatie voor Android Wijzigingen Licentie @@ -13,20 +12,23 @@ Een open-source verificatie met twee factoren App voor Android 4.4 +. Versie Auteurs - Hoofd auteur + Hoofdontwikkelaar + Ontwikkelaar Auteur van de oorspronkelijke app Originele App + Website Doneer Bijdragers Vertalers - Ondersteunende ontwikkeling - Fout melden + Steun de App ontwikkeling + Fouten melden Vertalen Meld een bug of verzoek nieuwe functies Help andOTP te vertalen Speciale functies - Weet u zeker dat u de speciale functies gebruikers wilt inschakelen? De meeste van hen zijn atypische OTP-algoritmen en op verzoek toegevoegd. Ze zijn niet officieel ondersteund en kunnen komen met bepaalde beperkingen, lees (en begrijp) de pagina \"Special features\" in de Github wiki voordat je ze gebruikt. + Weet u zeker dat u de speciale functies wilt inschakelen? De meeste van hen zijn atypische OTP-algoritmen die op verzoek zijn toegevoegd. Ze zijn niet officieel ondersteund en kunnen komen met bepaalde beperkingen, lees (en begrijp) de pagina \"Special features\" in de Github wiki voordat je ze gebruikt. Speciale functies zijn ingeschakeld Speciale functies zijn al ingeschakeld + Donatielink is gekopieerd diff --git a/app/src/main/res/values-nl-rNL/strings_auth.xml b/app/src/main/res/values-nl-rNL/strings_auth.xml index 233f4dd1..427ef912 100644 --- a/app/src/main/res/values-nl-rNL/strings_auth.xml +++ b/app/src/main/res/values-nl-rNL/strings_auth.xml @@ -6,9 +6,13 @@ Wachtwoord Pincode - Voer je wachtwoord in om andOTP op te starten. - Voer je pincode in om andOTP op te starten. + Gelieve verifiëren om andOTP te starten! + Bevestig de verificatie voor het genereren van de nieuwe versleutelingssleutel! + + Ontgrendelen Stel een wachtwoord in bij de instellingen! Stel een PIN in bij de instellingen! + Verkeerd wachtwoord, probeer het opnieuw! + Verkeerd PIN, probeer het opnieuw! diff --git a/app/src/main/res/values-nl-rNL/strings_backup.xml b/app/src/main/res/values-nl-rNL/strings_backup.xml index 8ea1fd9a..2fd999fa 100644 --- a/app/src/main/res/values-nl-rNL/strings_backup.xml +++ b/app/src/main/res/values-nl-rNL/strings_backup.xml @@ -1,9 +1,9 @@ - Reservekopie - Reservekopie in tekst zonder opmaak - Versleutelde reservekopie + Reservekopieën + Reservekopieën (tekst zonder opmaak) + Versleutelde reservekopieën OpenPGP reservekopie Reservekopie (tekst zonder opmaak) Reservekopie (versleuteld) @@ -11,33 +11,31 @@ Herstellen (tekst zonder opmaak) Herstellen (versleuteld) Herstellen (OpenPGP) - Replace existing entries + Vervang bestaande vermeldingen Back-up JSON bestand van alle accounts in tekst zonder opmaak - Back-up van alle accounts in een JSON-bestand met wachtwoordbeveiliging + Maak een reservekopie van alle accounts in een JSON-bestand met wachtwoordbeveiliging Maak een reservekopie van alle accounts in een JSON-bestand met OpenPGP versleuteling Herstel accounts vanuit een JSON tekstbestand Herstel alle accounts vanuit een JSON-bestand met wachtwoordbeveiliging Herstel accounts vanuit een OpenPGP versleuteld JSON-bestand - Het is nodig een wachtwoord in te stellen bij de instellingen voor het gebruik van versleutelde reservekopiën. - Je dient een OpenPGP-provider te installeren en in te schakelen bij de instellingen om deze functie te gebruiken. - Je dient een OpenPGP sleutel te selecteren bij de instellingen voordat je versleutelde reservekopiën kunt maken. - If enabled all old entries are replaced when importing a - backup and only the backup is present. If disabled the old entries and the backups content - are merged. + U dient een wachtwoord in te stellen bij de instellingen voor het gebruik van versleutelde reservekopieën. + U dient een OpenPGP-provider te installeren en in te schakelen bij de instellingen om deze functie te gebruiken. + U dient een OpenPGP sleutel te selecteren bij de instellingen voordat je versleutelde reservekopieën kunt maken. + Indien ingeschakeld worden alle oude vermeldingen vervangen wanneer een reservekopie geïmporteerd wordt en alleen de reservekopie is aanwezig. Indien uitgeschakeld worden de oude vermeldingen en reservekopieën samengevoegd. Veiligheidswaarschuwing - Wilt je echt de database exporteren als JSON-bestand zonder opmaak? Dit bestand bevat al uw geheime sleutels. Houdt het veilig! + Wilt u echt de database exporteren als JSON-bestand zonder opmaak? Dit bestand bevat al uw geheime sleutels. Houdt het veilig! Het maken van een reservekopiemap is mislukt Exporteren naar een extern opslagmedium was succesvol Exporteren naar een extern opslagmedium is mislukt Importeren uit externe opslag was succesvol - Failed to save restored entries - Decryption of the backup failed - No entries found in imported data + Opslaan van herstelde vermeldingen mislukt + Ontsleutelen van de reservekopie is mislukt + Geen vermeldingen gevonden in geïmporteerde gegevens Externe opslag is momenteel niet toegankelijk - Opslag rechten zijn niet gemachtigt + Geen machtiging tot de opslagruimte verleend OpenPGP fout: %s Geen geverifieerde digitale handtekening gedetecteerd - Wachtwoord niet ingesteld, controleer uw instellingen + Wachtwoord niet ingesteld, controleer de instellingen diff --git a/app/src/main/res/values-nl-rNL/strings_main.xml b/app/src/main/res/values-nl-rNL/strings_main.xml index 4887b09d..52534dab 100644 --- a/app/src/main/res/values-nl-rNL/strings_main.xml +++ b/app/src/main/res/values-nl-rNL/strings_main.xml @@ -6,10 +6,10 @@ Details ingeven QR-code scannen Bewaren - Nieuwe label - Je bent gewaarschuwd! + Nieuw label + Instellingen Alle labels - Geen Labels + Geen labels %d s @@ -24,6 +24,7 @@ Etiket Algoritme Labels + Geavanceerde opties Labels tonen Labels verbergen @@ -35,30 +36,48 @@ Sorteer Ongesorteerd Etiket - Last used + Laatst gebruikt Etiket bewerken - Change image + Afbeelding wijzigen Labels bewerken Verwijderen - Verificatie is mislukt, sluiten andOTP! + Authenticatie mislukt. Probeer opnieuw! + Verificatie is mislukt, andOTP wordt afgesloten! Gekopieerd naar klembord - Deze item bestaat al + Dit item bestaat al Ongeldige QR Code + Coderingssleutel niet geladen Verifiëren Details ingeven Verwijderen Hernoemen - Beveiliging en back-ups - Last used + Laatst gebruikt + Sleutelkast fout + Database encryptie Voer de referenties van uw apparaat in om te beginnen met andOTP. - Weet je zeker dat je het account wil verwijderen? - Om je accountgegevens veilig te houden werkt deze app alleen met versleutelde bestanden. Onderdelen van de gebruikte versleuteling wordt opgeslagen in het Android KeyStore-systeem. Het voordeel van deze aanpak is dat de sleutel is gescheiden van de gegevens van de apps en kan worden ondersteund door de hardware cryptografie (indien apparaat dit ondersteunt). - Een nadeel is dat back-ups van de gegevens van de apps moeilijkheden zullen geven. Bij een 3th partij apps (zoals Titanium Back-up) gebruikt u alleen de back-up van de gegevensbestanden, niet de sleutel voor bestandscodering en dientengevolge zal deze back-up niet bruikbaar zijn. - Gebruik alleen de interne back-up functies in de app voor je accounts! Iets anders zal leiden tot gegevens verlies. - Dit bericht wordt niet opnieuw getoond. - In order for andOTP to recognize which token was used last - you have to have \"tap to reveal\" enabled or use the copy button.\n\nThis message will not - be shown again. + Weet je zeker dat je account \"%1$s\" wil verwijderen? + 1. Android KeyStore + Wachtwoord / PIN + Om de veiligheid van uw accounts te garanderen + slaat deze app ze alleen op in versleutelde bestanden gebruikmakend van één van de volgende twee methodes: + KeyStore is een systeemcomponent van Android voor het veilig opslaan van cryptografische sleutels. + Het voordeel van deze aanpak is dat de sleutels gescheiden van bestanden staan opgeslagen en + dat ze kunnen worden ondersteund door hardwarecryptografie (als de hardware dit ondersteunt). + Echter, omdat de sleutels niet met de apps zijn opgeslagen werken externe back-up apps (zoals + Titanium) hiermee niet. Als u deze optie kiest dient u gebruik te maken van de interne + back-upfunctie van andOTP. + Deze methode zal uw gegevens versleutelen met een sleutel gegenereerd op basis van een + wachtwoord of pincode. Het belangrijkste voordeel hiervan is dat dit werkt met externe + back-up oplossingen (zoals Titanium). Echter moet u uw gegevens ingeven iedere keer + als u andOTP opstart. + Standaard zal Android KeyStore worden gebruikt. + Het is echter bekend dat dit problemen veroorzaakt op bepaalde aangepaste ROMs (alsmede + een paar standaard ROMs). U kunt de versleuteling aanpassing in de instellingen door te + klikken op de onderstaande knop. + Om andOTP te laten herkennen welke token als laatste was gebruikt + dien je \"tik om te onthullen\" in te schakelen of gebruik de kopie button.\n\n + Dit bericht wordt niet opnieuw getoond. + Fout bij het laden van de coderingssleutel van de sleutelbewaarplaats. Alle vermeldingen gaan verloren. \n\nOm nog steeds andOTP te kunnen gebruiken kun je naar de instellingen gaan en de Database codering omschakelen naar wachtwoord / PIN. diff --git a/app/src/main/res/values-nl-rNL/strings_settings.xml b/app/src/main/res/values-nl-rNL/strings_settings.xml index 58e45689..f435dc90 100644 --- a/app/src/main/res/values-nl-rNL/strings_settings.xml +++ b/app/src/main/res/values-nl-rNL/strings_settings.xml @@ -7,54 +7,79 @@ Gebruikersinterface Reservekopie - Tik om te onthullen - Timeout for tap to reveal + Tik om te tonen + Tijdslimiet voor tik om te onthullen Authenticatie Wachtwoord PIN - Paniek Trigger + Database encryptie + Panieksignaal Taal Thema - Label lettergrootte - Scroll etiket - Show thumbnails - Thumbnail size + Lettergrootte vermeldingen + Scroll vermeldingen + Miniatuurgrootte + Verdeel Token met spatie Vraag naar de bestandsnaam - Archief map - Wachtwoord reserve kopie - Selecteer OpenPGP provider - Select OpenPGP sleutel - Versleutelde reserve kopieën verifiëren - Versleutelde reserve kopie verifiëren - Enable special features - Enable screenshots + Map reservekopie + Wachtwoord reservekopie + Selecteer OpenPGP aanbieder + Selecteer OpenPGP sleutel + Versleutelde reservekopieën ondertekenen + Versleutelde reservekopieën verifiëren + Speciale functies inschakelen + Schermafbeeldingen toestaan + Sleutelopslag leegmaken - De OTP tokens standaard verbergen, maak ze handmatig zichtbaar - Select the time (in sec) after which to hide - revealed entries again - Beslissen wat er gebeurt wanneer een Paniek Trigger wordt ontvangen - Scroll overlangs de etiketten in plaats van ze af te korten - Vraag naar de bestandsnaam elke keer een reservekopie is gemaakt of wordt teruggezet - Map voor de reservekopieën (bestandsnamen zullen afhangen van het type archief) - Stel het wachtwoord in dat wordt gebruikt voor het versleutelen van de reserve kopie - Elk versleuteld reservekopie is aanvullend ondertekend met je sleutel (wachtwoord vereist) + De OTP tokens standaard verbergen; maak ze handmatig zichtbaar + Selecteer de tijd (in seconden) waarna de vermeldingen weer verborgen worden + Beslis wat er gebeurt wanneer er een panieksignaal wordt ontvangen + Vermeldingen horizontaal scrollen in plaats van ze af te korten + Vraag naar de bestandsnaam elke keer als een reservekopie is gemaakt of wordt teruggezet + Map voor de reservekopieën (bestandsnamen hangen af van het type archief) + Stel het wachtwoord in dat wordt gebruikt voor het versleutelen van de reservekopieën + Elke versleutelde reservekopie is aanvullend ondertekend met uw sleutel (wachtwoord vereist) Gecodeerde reservekopieën worden alleen geïmporteerd als ze zijn ondertekend met een geldige sleutel - Allow to take screenshots of the main screen - (disabled by default for security reasons) - Uncheck to disable the special features again + Deselecteer om speciale functies weer uit te schakelen + Schermafbeeldingen toestaan op het hoofdscherm (standaard uitgeschakeld om veiligheidsredenen) + Verwijderen de encryptie sleutel uit de sleutelopslag Deze functie vereist ten minste Android 5.0 (Lollipop) - Deze functie vereist een beveiligd slotscherm (instellingen -> Beveiliging -> Schermlock) + Deze functie vereist een beveiligd vergrendelingsscherm (Instellingen -> Beveiliging -> Schermvergrendeling) + Een leeg wachtwoord is niet toegestaan, stel de verificatie in op \"Geen\" om het uit te schakelen! + Bezig met de database encryptie te proberen wijzigen, even geduld aub! + Wijzigen van de database encryptie is geslaagd! + Mislukt om de database versleuteling te veranderen en in oorspronkelijke staat terug te vallen! + Het maken van een interne back-up mislukte, afbreken! + Het ophalen van de encryptiesleutel mislukte, afbreken! + Authenticatie mislukt! + Het bijwerken van je wachtwoord / PIN naar de nieuwe codering mislukte, herstel het handmatig bij de instellingen! + Fout + Sleutelopslag leegmaken? + U kunt alleen een wachtwoord of pincode gebruiken zolang de database encryptie is ingesteld op \"Wachtwoord / PIN\"! + U moet eerst de authenticatie instellen op \"Wachtwoord\" of \"PIN\"! + Je moet een wachtwoord of pincode instellen voor het wijzigen van de versleuteiing! + In sommige gevallen kan het leegmaken van de sleutelopslag problemen verhelpen. Ga enkel verder als u weet waar u mee bezig bent!\n\n +Doordat de Database encryptie is ingesteld op Wachtwoord / PIN zou u hiermee geen gegevens mogen verliezen (maar een backup nemen kan nooit kwaad).\n\n +Bent u heel zeker dat u de sleutelopslag wil leegmaken? + In sommige gevallen kan het leegmaken van de sleutelopslag problemen verhelpen. Ga enkel verder als u weet waar u mee bezig bent!\n\n +Waarschuwing: +Doordat de Database encryptie is ingesteld op Android sleutelopslag zal u al uw accounts verliezen. Wees dus zeker dat u een backup hebt!\n\n +Bent u heel zeker dat u de sleutelopslag wil leegmaken? Geen Wachtwoord PIN - Apparaat referenties + Zelfde als apparaat + + + Android Sleutelopslag + Wachtwoord / PIN Alle accounts verwijderen - App instellingen resetten + Appinstellingen terugzetten Licht thema @@ -62,17 +87,24 @@ Zwart thema - Small - Default - Medium - Large + Verborgen + Klein + Standaard + Normaal + Groot + + + Niet splitsen + Na twee karakters + Na drie karakters - Systeem standaard + Systeemstandaard - Wachtwoord - PIN + Nieuw wachtwoord invoeren + Nieuwe PIN invoeren Bevestig wachtwoord - PIN bevestigen - (ongewijzigd) + Bevestig PIN + Het wachtwoord moet minstens %1$d karakters bevatten! + De pincode moet minstens %1$d cijfers bevatten! diff --git a/app/src/main/res/values-pl-rPL/strings_main.xml b/app/src/main/res/values-pl-rPL/strings_main.xml index a53c7f85..5fdbaaec 100644 --- a/app/src/main/res/values-pl-rPL/strings_main.xml +++ b/app/src/main/res/values-pl-rPL/strings_main.xml @@ -53,7 +53,6 @@ Bezpieczeństwo i kopie Ostatnio używane Podaj swoje dane uwierzytelniające, aby uruchomić andOTP. - Czy na pewno usunąć to konto? W celu zwiększenia bezpieczeństwa, wszystkie informacje dotyczące kont są zaszyfrowane. Część klucza szyfrującego przechowywana jest w systemie Android. Zaletą takiego rozwiązania jest oddzielenie klucza od danych i wsparcie sprzętowego szyfrowania (jeżeli Twój sprzęt to wspiera). Używanie aplikacji typu Titanium Backup jest bezużyteczne, ponieważ aplikacja szyfruje swoje dane. Proszę używaj Tylko wbudowanych funkcji robienia kopii zapasowej kont. Wszystkie inne metody nie są wspierane i mogą prowadzić do utraty danych. diff --git a/app/src/main/res/values-ru-rRU/strings_about.xml b/app/src/main/res/values-ru-rRU/strings_about.xml index 6edf2f92..57804db1 100644 --- a/app/src/main/res/values-ru-rRU/strings_about.xml +++ b/app/src/main/res/values-ru-rRU/strings_about.xml @@ -2,8 +2,7 @@ О программе - -Приложение двухфакторной аутентификации с открытым исходным кодом для Android 4.4 и выше. + Двухфакторная аутентификация для Android с открытым исходным кодом История изменений Лицензия @@ -13,9 +12,11 @@ Версия Авторы - Основной автор + Основной разработчик + Разработчик Автор оригинального приложения Оригинальное приложение + Сайт Пожертвовать Участники проекта Переводчики @@ -26,7 +27,8 @@ Сообщить об ошибках или запросить новые функции Помогите перевести andOTP на ваш язык Особые функции - Вы уверены, что вы хотите включить особые функции? Большинство из них - нестандартные алгоритмы OTP, которые были добавлены по особым просьбам. Они официально не поддерживается и могут быть с некоторыми ограничениями, пожалуйста, прочитайте (и поймите) страницы «Особые функции» на Github wiki, чтобы узнать о них подробнее перед их использованием. + Вы уверены, что Вы хотите включить особые функции? Большинство из них - нестандартные алгоритмы OTP, которые были добавлены по особым просьбам. Они официально не поддерживается и могут быть с некоторыми ограничениями, пожалуйста, прочитайте (и поймите) страницы «Особые функции» на Github wiki, чтобы узнать о них подробнее перед их использованием. Особые функции включены Особые функции уже включены + Ссылка для пожертвований скопирована в буфер обмена diff --git a/app/src/main/res/values-ru-rRU/strings_auth.xml b/app/src/main/res/values-ru-rRU/strings_auth.xml index 347d3747..9c8522ef 100644 --- a/app/src/main/res/values-ru-rRU/strings_auth.xml +++ b/app/src/main/res/values-ru-rRU/strings_auth.xml @@ -1,14 +1,18 @@ - Аутентификация + Проверка подлинности Пароль PIN-код - Пожалуйста, введите ваш пароль для запуска andOTP. - Пожалуйста, введите Ваш ПИН-код для запуска andOTP. + Пожалуйста, пройдите аутентификацию для запуска andOTP! + Пожалуйста, подтвердите Вашу аутентификацию для генерации нового ключа шифрования! + + Разблокировать Пожалуйста, установите пароль в настройках! - Пожалуйста, установите ПИН-код в настройках! + Пожалуйста, установите PIN-код в настройках! + Неверный пароль, пожалуйста, попробуйте еще раз! + Неверный PIN-код, пожалуйста, попробуйте еще раз! diff --git a/app/src/main/res/values-ru-rRU/strings_backup.xml b/app/src/main/res/values-ru-rRU/strings_backup.xml index 71048793..9e17ad86 100644 --- a/app/src/main/res/values-ru-rRU/strings_backup.xml +++ b/app/src/main/res/values-ru-rRU/strings_backup.xml @@ -5,7 +5,7 @@ Текстовые резервные копии Зашифрованные резервные копии Резервные копии с OpenPGP - Резервная копия (без шифрования) + Резервная копия (текстовый документ) Резервная копия (с шифрованием) Резервная копия (OpenPGP) Восстановление (из текстового файла) @@ -18,13 +18,13 @@ Восстановление учетных записей из текстового файла JSON Восстановление учетных записей из защищённого паролем файла JSON Восстановление учетных записей из зашифрованного OpenPGP файла JSON - Для создания зашифрованных резервных копий вам нужно установить пароль в Настройках. - Для использования этой функции вам нужно выбрать и установить поставщика OpenPGP. + Для создания зашифрованных резервных копий Вам нужно установить пароль в Настройках. + Для использования этой функции Вам нужно выбрать и установить поставщика OpenPGP в настройках приложения. Вам нужно выбрать ключ OpenPGP в Настройках, прежде чем создавать зашифрованные резервные копии. - Если включено, все старые записи заменяются при импорте резервной копии и остается только резервная копия. Если отключено, старые записи и содержимое резервной копии объединяются. + Если включено, все старые записи заменяются при импорте резервной копии и остается только резервная копия. Если отключено, старые записи и содержимое резервной копии объединяются. Предупреждение безопасности - Вы действительно хотите экспортировать базу данных как незашифрованный текстовый JSON файл? Этот файл содержит все ваши секретные ключи, пожалуйста, надежно сохраните его! + Вы действительно хотите экспортировать базу данных как текстовый JSON файл? Этот файл содержит все Ваши секретные ключи, пожалуйста, надежно сохраните его! Не удалось создать каталог для резервной копии Экспорт на внешний носитель выполнен успешно diff --git a/app/src/main/res/values-ru-rRU/strings_main.xml b/app/src/main/res/values-ru-rRU/strings_main.xml index 7721b9ce..1b98aaff 100644 --- a/app/src/main/res/values-ru-rRU/strings_main.xml +++ b/app/src/main/res/values-ru-rRU/strings_main.xml @@ -7,7 +7,7 @@ Сканировать QR-код Сохранить Новый тег - Вас предупредили! + Настройки Все теги Нет тегов @@ -24,6 +24,7 @@ Ярлык Алгоритм Теги + Дополнительные настройки Показать теги Скрыть теги @@ -41,22 +42,30 @@ Изменить теги Убрать + Ошибка аутентификации! Пожалуйста, попробуйте снова! Ошибка аутентификации, andOTP закрывается! Скопировано в буфер обмена Эта запись уже существует Недопустимый QR-код + Ключ шифрования не загружен - Аутентификация + Проверка подлинности Введите детали Убрать Переименовать - Безопасность и резервное копирование Последнее использование + Ошибка хранилища ключей + Шифрование базы данных Пожалуйста, подтвердите учетные данные устройства для открытия andOTP. - Вы уверены, что хотите удалить эту учетную запись? - Для обеспечения безопасности ваших данных это приложение хранит их только в зашифрованном виде. Часть этого ключа шифрования хранится в системе Android KeyStore. Преимущество этого подхода в том, что ключ хранится отдельно от данных приложения и может быть защищён аппаратным шифрованием (если ваше устройство его поддерживает). - С другой стороны, это делает резервное копирование данных приложения немного более сложным. Если вы используете сторонние приложения (вроде Titanium Backup) вы только лишь скопируете сами файлы, но не ключ шифрования, в результате чего резервная копия окажется нерабочей. - Пожалуйста, используйте только функцию резервного копирования встроенную в это приложение! Прочие способы ПРИВЕДУТ к потере данных. - Это сообщение повторно отображаться не будет. + Вы уверены, что хотите удалить учётную запись \"%1$s\"? + 1. Хранилище ключей Android + 2. Пароль / PIN-код + Для защиты ваших аккаунтов это приложение хранит их в зашифрованном виде используя один из двух этих способов: + Хранилище ключей это часть системы Android, предназначенная для безопасного хранения ключей шифрования. Преимущество этого способа в том, что ключи хранятся отдельно от данных и защищены аппаратным шифрованием (если Ваше устройство поддерживает его). Так как ключи не хранятся вместе с данными, то Вы не сможете использовать сторонние решения для создания резервных копий (например, Titanium Backup). При использовании этого метода Вы сможете использовать только резервные копии, созданные andOTP. + Этот способ зашифрует Ваши данные ключом, созданным на основе пароля или PIN-кода. Основное преимущество этого способа - Вы сможете использовать сторонние системы резервного копирования (например, Titanium Backup). При этом Вам будет необходимо выполнять аутентификацию при каждом запуске andOTP. + По умолчанию будет использовано Хранилище ключей Android, однако оно может не работать на некоторых модифицированных и официальных прошивках. Вы можете изменить способ шифрования в Настройках нажав на кнопку ниже. Чтобы andOTP знал время последнего использования токена необходимо включить настройку \"Нажмите, чтобы показать\" или копировать токен.\n\nЭто сообщение больше не будет показано. + Ошибка загрузки ключа шифрования из хранилища ключей. + Все добавленные записи будут утеряны.\n\nЧтобы использовать andOTP дальше Вы можете + перейти в Настройки и переключить Шифрование базы данных на Пароль / PIN-код. diff --git a/app/src/main/res/values-ru-rRU/strings_settings.xml b/app/src/main/res/values-ru-rRU/strings_settings.xml index d3967039..dc1302b9 100644 --- a/app/src/main/res/values-ru-rRU/strings_settings.xml +++ b/app/src/main/res/values-ru-rRU/strings_settings.xml @@ -9,16 +9,17 @@ Нажмите, чтобы показать Таймаут скрытия токена - Авторизация + Аутентификация Пароль PIN-код + Шифрование базы данных Panic Trigger Язык Тема оформления Размер шрифта для ярлыка Прокрутка ярлыка - Показывать изображения Размер изображения + Добавлять пробел в токен Спрашивать об имени файла Каталог резервной копии Пароль для резервной копии @@ -28,6 +29,7 @@ Проверять зашифрованные резервные копии Включить специальные возможности Разрешить скриншоты + Очистить хранилище ключей Скрыть OTP-токены по-умолчанию, требуя их показ вручную Выберите время (в секундах) после которого автоматически скрывать показанные токены @@ -36,13 +38,29 @@ Спрашивать об имени файла при создании резервной копии или восстановлении Каталог для резервных копий (имена файлов будут зависеть от типа резервного копирования) Установить пароль для шифрования резервных копий - Все зашифрованные резервные копии дополнительно подписываются вашим ключом (требуется пароль) + Все зашифрованные резервные копии дополнительно подписываются Вашим ключом (требуется пароль) Зашифрованные резервные копии можно импортировать только если они подписаны действительным ключом - Разрешить снятие скриншотов главного экрана (из соображений безопасности по умолчанию выключено) Снимите флажок для отключения специальных возможностей + Разрешить снятие скриншотов главного экрана (из соображений безопасности по умолчанию выключено) + Удалить ключ шифрования из хранилища ключей Эта функция поддерживается с версии Android 5.0 (Lollipop) Для этой функции требуется настроить безопасную блокировку экрана (Настройки -> Безопасность -> Блокировка экрана) + Пустой пароль запрещён, для отключения пароля выключите Аутентификацию! + Изменение шифрование базы данных, пожалуйста, подождите! + Шифрование базы данных успешно изменено! + Не удалось изменить шифрование базы данных, откат в исходное состояние! + Не удалось создать внутреннюю резервную копию, прерывание! + Не удалось получить ключ шифрования, прерывание! + Ошибка аутентификации! + Не удалось автоматически обновить Ваш пароль / PIN-код к новому шифрованию, пожалуйста сбросьте его вручную в настройках! + Ошибка + Очистить хранилище ключей? + Вы можете использовать только пароль или PIN-код, если для шифрования базы данных установлено значение «Пароль / PIN-код»! + Сначала необходимо задать проверку аутентификации «Пароль» или «PIN-код»! + Cначала необходимо задать пароль или PIN-код перед изменением шифрования! + В некоторых случаях, очистка хранилища ключей может помочь решить проблемы. Приступайте, только если Вы знаете, что делаете!\n\nПоскольку база данных зашифрована с помощью пароля / PIN-кода вы не потеряете данные (в любом случае, никогда не помешает иметь резервную копию).\n\nВы уверены, что вы действительно хотите очистить хранилище ключей? + В некоторых случаях, очистка хранилища ключей может помочь решить проблемы. Приступайте, только если Вы знаете, что делаете!\n\nВнимание: поскольку база данных зашифрована с помощью хранилища ключей Android Вы потеряете все Ваши аккаунты. Создайте резервную копию!\n\nВы уверены, что Вы действительно хотите очистить хранилище ключей? Нет @@ -50,6 +68,10 @@ PIN-код Учетные данные устройства + + Хранилище ключей Android + Пароль / PIN-код + Удалить все аккаунты Сброс параметров приложения @@ -60,17 +82,24 @@ Чёрная тема + Скрыть Маленький По умолчанию Средний Большой + + Не добавлять + После 2 символов + После 3 символов + Настройки по умолчанию - Пароль - PIN-код - Подтвердить пароль - Подтвердите ПИН-код - (без изменений) + Введите новый пароль + Введите новый PIN-код + Подтвердите пароль + Подтвердите PIN-код + Пароль должен содержать не менее %1$d символов! + PIN-код должен содержать не менее %1$d цифр! diff --git a/app/src/main/res/values-zh-rCN/strings_about.xml b/app/src/main/res/values-zh-rCN/strings_about.xml index 39f89202..c38a57d3 100644 --- a/app/src/main/res/values-zh-rCN/strings_about.xml +++ b/app/src/main/res/values-zh-rCN/strings_about.xml @@ -2,9 +2,7 @@ 关于 - -一个开源的两步验证应用(支持 Android 4.4 以上)。 - + 面向 Android 的开源两步认证 更新日志 许可协议 @@ -14,9 +12,11 @@ 版本 作者 - 主要作者 + 主要开发者 + 开发者 原应用作者 原应用 + 网站 捐赠 贡献者 翻译者 @@ -30,4 +30,5 @@ 确定要启用实验性功能吗?其中大多数是非标准 OTP 算法, 是在特殊要求下实现的。它们是 不受官方支持的,可能带有 某些限制, 请阅读(并了解) Github wiki 中的 \"实验性功能\" 页, 以便在使用它们之前了解更多信息。 启用实验性功能 已启用实验性功能 + 捐赠链接已复制到剪贴板 diff --git a/app/src/main/res/values-zh-rCN/strings_auth.xml b/app/src/main/res/values-zh-rCN/strings_auth.xml index 71ac2f4f..1b0b4097 100644 --- a/app/src/main/res/values-zh-rCN/strings_auth.xml +++ b/app/src/main/res/values-zh-rCN/strings_auth.xml @@ -6,9 +6,13 @@ 密码 PIN 码 - 请输入您的密码以启动 andOTP。 - 请输入您的 PIN 启动 andOTP。 + 请验证启动 andOTP ! + 请确认您的身份验证,以生成新的加密密钥! + + 解锁​​​​ 请在设置中设置密码! 请在设置中设置一个 PIN 码! + 密码错误,请重试! + PIN 码错误,请重试! diff --git a/app/src/main/res/values-zh-rCN/strings_backup.xml b/app/src/main/res/values-zh-rCN/strings_backup.xml index ccbbdab8..31f03b84 100644 --- a/app/src/main/res/values-zh-rCN/strings_backup.xml +++ b/app/src/main/res/values-zh-rCN/strings_backup.xml @@ -12,9 +12,9 @@ 还原 (已加密) 还原 (OpenPGP) 替换现有条目 - 备份纯文本 JSON 文件中的所有帐户 - 备份受密码保护的 JSON 文件中的所有帐户 - 备份 OpenPGP 加密的 JSON 文件中的所有帐户 + 备份所有帐户到纯文本 JSON 文件中。 + 备份所有帐户到受密码保护的 JSON 文件中。 + 备份所有帐户到 OpenPGP 加密的 JSON 文件中。 从纯文本 JSON 文件还原帐户 从受密码保护的 JSON 文件还原帐户 从 OpenPGP 加密的 JSON 文件还原帐户 diff --git a/app/src/main/res/values-zh-rCN/strings_main.xml b/app/src/main/res/values-zh-rCN/strings_main.xml index 3e9ef654..4e71c663 100644 --- a/app/src/main/res/values-zh-rCN/strings_main.xml +++ b/app/src/main/res/values-zh-rCN/strings_main.xml @@ -7,7 +7,7 @@ 扫描二维码 保存 新建标签 - 你已被警告! + 设置 所有标签 无标签 @@ -24,6 +24,7 @@ 标签 算法 标签 + 高级选项 显示标签 隐藏标签 @@ -41,22 +42,28 @@ 编辑标签 移除 - 身份验证失败,andOTP 正在关闭! + 认证失败,请重试! + 验证失败,andOTP 正在关闭! 已复制到剪贴板 该项已存在 无效二维码 + 未加载加密密钥 认证 输入详细信息 移除 重命名 - 安全和备份 上一次使用 + KeyStore 错误 + 数据库加密 请输入您的设备凭据以启动 andOTP。 - 您确认想要删除您的账户? - 为使您的帐户信息安全,此应用程序只存储加密内容。用于此的加密密钥的一部分存储在 Android 密钥库系统中。这种方法的优点是, 密钥与应用程序数据保持独立,并且可以通过硬件加密 (如果您的设备支持此项) 来支持。 - 这样做的缺点是,这使得应用数据的备份有点困难。如果您使用第三方应用 (如钛备份),则只能备份到数据文件,而不是加密密钥,因此这样的备份将变得无用。 - 请只使用应用程序提供的内部备份功能来备份您的帐户!其他任何备份都将导致数据丢失。 - 此消息将不再显示。 + 您确定要删除账户“%1$s”吗? + 1. Android KeyStore + 2. 密码 / PIN码 + 为了确保帐户的安全性,此应用只存储到加密的数据文件中,用以下两种方法之一加密: + KeyStore 是 Android 系统的组成部分, 用来安全地储存密钥。这种方法的优点是,密钥和数据文件分开储存,并且支持硬件加密(需硬件支持)。但是,由于密钥不与应用程序数据一起储存,这种方法会妨碍外部备份方案(如钛备份)工作。如果选择此方法,您将不得不依赖 andOTP 提供的内部备份功能。 + 此方法将用密码或 PIN 码生成的密钥对数据加密。好处是支持外部备份方案 (如钛备份)。但是,您必须在每次启动 andOTP 时输入您的凭据。 + 默认下使用 Android KeyStore,然而已知某些第三方定制 ROM 会有点问题。您可以点下面的按钮来更改加密设置。 为了使 andOTP 能够识别最后使用的标记,您必须启用 \"点击显示\" 或使用 \"复制\" 按钮. \n\n 此消息将不会再次显示。 + 无法从 KeyStore 加载密钥。 添加的任何条目都将丢失. \n\n为继续使用 andOTP 您可以转到设置并将 数据库加密 切换到 密码 / PIN码 diff --git a/app/src/main/res/values-zh-rCN/strings_settings.xml b/app/src/main/res/values-zh-rCN/strings_settings.xml index cf0ebd75..5f490f29 100644 --- a/app/src/main/res/values-zh-rCN/strings_settings.xml +++ b/app/src/main/res/values-zh-rCN/strings_settings.xml @@ -12,13 +12,14 @@ 身份验证 密码 PIN 码 + 数据库加密 紧急触发 语言 主题 标签字体大小 滚动标签 - 显示缩略图 缩略图大小 + 用空格做分割符 询问文件名 备份目录 备份密码 @@ -28,6 +29,7 @@ 验证加密的备份 启用实验性功能 启用截屏 + 清除 KeyStore 默认情况下隐藏 OTP 令牌,需要手动显示它们。 选择再次隐藏显示条目的时间 (秒) @@ -38,11 +40,27 @@ 设置用于加密备份的密码 每个加密的备份都用您的密钥进行了签名 (需要密码) 只有在使用有效密钥签名时才会导入加密备份 - 允许使用首屏截屏 (默认因安全原因禁用) 取消选中再次禁用实验性功能 + 允许使用首屏截屏 (默认因安全原因禁用) + 从 KeyStore 中删除密钥 此功能需要 Android 5.0 以上才能工作 此功能需要设置安全锁定屏幕 (设置 -> 安全 -> 锁屏) + 不允许用空密码,请将身份验证设置为“无”以禁用它! + 尝试更改数据库加密,请稍候! + 已成功更改数据库加密! + 无法更改数据库加密,回退到原始状态! + 未能创建内部备份,正在中止! + 未能获取密钥,正在中止! + 身份验证失败! + 无法静默升级您的 密码 / PIN码 到新的加密,请在设置手动复位! + 错误 + 清除 KeyStore? + 只要将数据库加密设置为“密码 / PIN 码”, 即可以使用! + 您首先需要将身份验证设置为“密码”或“PIN码”! + 您首先需要设置密码或PIN码,然后再更改加密! + 在某些情况下,清除 KeyStore 可以帮助解决问题。继续前,您应明确知道自己在做什么!\n\n由于 数据库加密 设置为 密码 / PIN 码 这样做您应该不会丢失任何数据(但无论如何,这不会损害您的备份)。\n\n您是否确实要清除 KeyStore? + 在某些情况下,清除 KeyStore 可以帮助解决问题。继续前,您应明确知道自己在做什么!\n\n警告:由于 数据库加密 设置为 Android KeyStore 您会丢失所有账户。请确保您有备份!\n\n您是否确实要清除 KeyStore? @@ -50,6 +68,10 @@ PIN 码 设备凭据 + + Android KeyStore + 密码 / PIN码 + 清除所有帐户 重置设置 @@ -60,17 +82,24 @@ 黑色主题 + 隐藏 较小 默认 中等 较大 + + 不分割 + 在两个字符之后 + 在三个字符之后 + 系统默认 - 密码 - PIN 码 + 输入新密码 + 输入新 PIN 码 确认密码 确认PIN码 - (未更改) + 密码至少需要 %1$d 个字符! + PIN 码至少需要 %1$d 个字符! diff --git a/app/src/main/res/values/settings.xml b/app/src/main/res/values/settings.xml index cd1d3ac9..1a4af210 100644 --- a/app/src/main/res/values/settings.xml +++ b/app/src/main/res/values/settings.xml @@ -16,13 +16,15 @@ pref_encryption pref_panic - pref_lang + pref_lang + pref_locale pref_theme pref_label_size_sp pref_label_scroll pref_thumbnail_size pref_split_group_size + pref_backup_append_date_time pref_backup_ask pref_backup_directory pref_backup_password @@ -47,7 +49,7 @@ 30 keystore - system + system light 18 46dp @@ -76,18 +78,19 @@ settings - + system - en - cs - de - es - fr - gl - nl - pl - ru - zh + ca_ES + cs_CZ + de_DE + en_US + es_ES + fr_FR + gl_ES + nl_NL + pl_PL + ru_RU + zh_CN @@ -112,9 +115,10 @@ @string/settings_lang_sys_default - English + Català Čeština Deutsch + English Español Français Galego diff --git a/app/src/main/res/values/strings_about.xml b/app/src/main/res/values/strings_about.xml index bcae247f..150755a2 100644 --- a/app/src/main/res/values/strings_about.xml +++ b/app/src/main/res/values/strings_about.xml @@ -2,9 +2,7 @@ About - - An open-source two-factor authentication App for Android 4.4+. - + Open source two-factor authentication for Android Changelog @@ -17,7 +15,7 @@ Authors - Main author + Main developer Developer Author of the original app Original App @@ -49,4 +47,5 @@ wiki to learn more before using them. Special features enabled Special features already enabled + Donation link copied to clipboard diff --git a/app/src/main/res/values/strings_settings.xml b/app/src/main/res/values/strings_settings.xml index b32fc566..f5a8f77b 100644 --- a/app/src/main/res/values/strings_settings.xml +++ b/app/src/main/res/values/strings_settings.xml @@ -23,6 +23,7 @@ Thumbnail size Split Token with space + Append date to filename Ask for filename Backup directory Backup password @@ -44,6 +45,9 @@ Scroll overlong labels instead of truncating them + + Append the current date and time to the suggested + backup filename Ask for the filename every time a backup is created or restored Directory for the backups (filenames will depend @@ -75,14 +79,14 @@ Successfully changed the database encryption! Failed to change database encryption, - restored database from internal backup! + falling back to original state! Failed to create an internal backup, aborting! Failed to get the encryption key, aborting! - Authentication failed, aborting! + Authentication failed! Failed to silently upgrade your password / PIN - to the new encryption, please manually reset it in the settings! + to the new encryption, please manually reset it in the Settings! Error Clear the KeyStore? diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 45b9bdbd..e59feb08 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -48,12 +48,12 @@ android:title="@string/settings_category_title_ui"> + android:entryValues="@array/settings_values_locale" + android:defaultValue="@string/settings_default_locale" /> + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + +