Clarify backup reminder with time elapsed since last backup/export

This commit is contained in:
Alexander Bakker 2022-12-04 15:44:45 +01:00
parent d7e2114811
commit 8cf48a94aa
33 changed files with 126 additions and 44 deletions

View File

@ -10,21 +10,19 @@ import android.preference.PreferenceManager;
import androidx.annotation.Nullable;
import com.beemdevelopment.aegis.util.JsonUtils;
import com.beemdevelopment.aegis.util.TimeUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
public class Preferences {
@ -297,6 +295,36 @@ public class Preferences {
_prefs.edit().putBoolean("pref_focus_search", enabled).apply();
}
public void setLatestExportTimeNow() {
_prefs.edit().putLong("pref_export_latest", new Date().getTime()).apply();
setIsBackupReminderNeeded(false);
}
public Date getLatestBackupOrExportTime() {
List<Date> dates = new ArrayList<>();
long l = _prefs.getLong("pref_export_latest", 0);
if (l > 0) {
dates.add(new Date(l));
}
BackupResult builtinRes = getBuiltInBackupResult();
if (builtinRes != null) {
dates.add(builtinRes.getTime());
}
BackupResult androidRes = getAndroidBackupResult();
if (androidRes != null) {
dates.add(androidRes.getTime());
}
if (dates.size() == 0) {
return null;
}
return Collections.max(dates, Date::compareTo);
}
public void setBackupsLocation(Uri location) {
_prefs.edit().putString("pref_backups_location", location == null ? null : location.toString()).apply();
}
@ -466,8 +494,8 @@ public class Preferences {
return _time;
}
public String getHumanReadableTime() {
return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(_time);
public String getElapsedSince(Context context) {
return TimeUtils.getElapsedSince(context, _time);
}
public boolean isBuiltIn() {

View File

@ -49,6 +49,7 @@ import com.beemdevelopment.aegis.ui.fragments.preferences.BackupsPreferencesFrag
import com.beemdevelopment.aegis.ui.fragments.preferences.PreferencesFragment;
import com.beemdevelopment.aegis.ui.tasks.QrDecodeTask;
import com.beemdevelopment.aegis.ui.views.EntryListView;
import com.beemdevelopment.aegis.util.TimeUtils;
import com.beemdevelopment.aegis.vault.VaultEntry;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
@ -56,6 +57,7 @@ import com.google.common.base.Strings;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -824,16 +826,17 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
});
_btnErrorBar.setVisibility(View.VISIBLE);
} else if (_prefs.isBackupsReminderNeeded()) {
_textErrorBar.setText(R.string.backup_reminder_bar_message);
_btnErrorBar.setOnClickListener(view -> {
startPreferencesActivity();
});
Date date = _prefs.getLatestBackupOrExportTime();
if (date != null) {
_textErrorBar.setText(getString(R.string.backup_reminder_bar_message_with_latest, TimeUtils.getElapsedSince(this, date)));
} else {
_textErrorBar.setText(R.string.backup_reminder_bar_message);
}
_btnErrorBar.setOnClickListener(view -> startPreferencesActivity());
_btnErrorBar.setVisibility(View.VISIBLE);
} else if (_prefs.isPlaintextBackupWarningNeeded()) {
_textErrorBar.setText(R.string.backup_plaintext_export_warning);
_btnErrorBar.setOnClickListener(view -> {
showPlaintextExportWarningOptions();
});
_btnErrorBar.setOnClickListener(view -> showPlaintextExportWarningOptions());
_btnErrorBar.setVisibility(View.VISIBLE);
} else {
_btnErrorBar.setVisibility(View.GONE);

View File

@ -404,7 +404,7 @@ public class Dialogs {
public static void showBackupErrorDialog(Context context, Preferences.BackupResult backupRes, DialogInterface.OnClickListener listener) {
String system = context.getString(backupRes.isBuiltIn() ? R.string.backup_system_builtin : R.string.backup_system_android);
String message = context.getString(R.string.backup_error_dialog_details, system, backupRes.getHumanReadableTime());
String message = context.getString(R.string.backup_error_dialog_details, system, backupRes.getElapsedSince(context));
Dialogs.showErrorDialog(context, message, backupRes.getError(), listener);
}

View File

@ -180,9 +180,9 @@ public class BackupsPreferencesFragment extends PreferencesFragment {
message = getString(R.string.backup_status_none);
} else if (res.isSuccessful()) {
color = R.color.success_color;
message = getString(R.string.backup_status_success, res.getHumanReadableTime());
message = getString(R.string.backup_status_success, res.getElapsedSince(requireContext()));
} else {
message = getString(R.string.backup_status_failed, res.getHumanReadableTime());
message = getString(R.string.backup_status_failed, res.getElapsedSince(requireContext()));
}
Spannable spannable = new SpannableString(message);

View File

@ -284,7 +284,7 @@ public class ImportExportPreferencesFragment extends PreferencesFragment {
}
// if the user creates an export, hide the backup reminder
_prefs.setIsBackupReminderNeeded(false);
_prefs.setLatestExportTimeNow();
Uri uri = FileProvider.getUriForFile(requireContext(), BuildConfig.FILE_PROVIDER_AUTHORITY, file);
Intent intent = new Intent(Intent.ACTION_SEND)
@ -496,7 +496,7 @@ public class ImportExportPreferencesFragment extends PreferencesFragment {
Dialogs.showErrorDialog(requireContext(), R.string.exporting_vault_error, e);
} else {
// if the user creates an export, hide the backup reminder
_prefs.setIsBackupReminderNeeded(false);
_prefs.setLatestExportTimeNow();
Toast.makeText(requireContext(), getString(R.string.exported_vault), Toast.LENGTH_SHORT).show();
}

View File

@ -0,0 +1,43 @@
package com.beemdevelopment.aegis.util;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Resources;
import androidx.annotation.PluralsRes;
import java.util.Date;
public class TimeUtils {
private TimeUtils() {
}
public static String getElapsedSince(Context context, Date date) {
long since = (new Date().getTime() - date.getTime()) / 1000;
if (since < 60) {
return formatElapsedSince(context, since, "seconds");
}
since /= 60;
if (since < 60) {
return formatElapsedSince(context, since, "minutes");
}
since /= 60;
if (since < 24) {
return formatElapsedSince(context, since, "hours");
}
since /= 24;
if (since < 365) {
return formatElapsedSince(context, since, "days");
}
since /= 365;
return formatElapsedSince(context, since, "years");
}
@SuppressLint("DiscouragedApi")
private static String formatElapsedSince(Context context, long since, String unit) {
Resources res = context.getResources();
@PluralsRes int id = res.getIdentifier(String.format("time_elapsed_%s", unit), "plurals", context.getPackageName());
return res.getQuantityString(id, (int) since, (int) since);
}
}

View File

@ -46,6 +46,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/primary_text_inverted"
android:textStyle="bold"
android:layout_marginStart="5dp" />
</LinearLayout>

View File

@ -329,7 +329,6 @@
<string name="backup_error_bar_message"><b>النسخ الاحتياطي للمخزن فشل مؤخرًا</b></string>
<string name="backup_system_builtin">النسخ الاحتياطية التلقائية المضنة في Aegis</string>
<string name="backup_system_android">نظام النسخ الاحتياطي السحابي للأندرويد</string>
<string name="backup_reminder_bar_message"><b>التغييرات الأخيرة في المخزن لم يتم نسخها احتياطياً</b></string>
<string name="backup_plaintext_export_warning"><b>تم تصدير المخزن مؤخرا ك نص مجرّد</b></string>
<string name="pref_show_plaintext_warning_hint">لا تظهر هذا التحذير مجدداً</string>
<string name="backup_plaintext_warning_explanation">يظهر هذا التحذير لأنك قمت مؤخراً بتصدير نسخة غير مشفرة من المخزن. للحفاظ على أمان الرموز الخاصة بك، نوصي بحذف هذا الملف بمجرد أن لا تكون هناك حاجة إليه.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Falló un intentu recién de facer una copia de seguranza de l\'arca con «%s» porque se produxo un error (data de l\'aición: %s). Revisa los axustes pa que les copies de seguranza puedan facese correutamente.</string>
<string name="backup_system_builtin">Copies de seguranza automátiques d\'Aegis</string>
<string name="backup_system_android">Sistema de copies de segurazan na ñube d\'Android</string>
<string name="backup_reminder_bar_message"><b>Nun se fizo una copia de seguranza de los cambeos de recién de l\'arca</b></string>
<string name="backup_plaintext_export_warning"><b>L\'arca esportóse apocayá a un ficheru de testu planu</b></string>
<string name="pref_show_plaintext_warning_hint">Nun volver amosar esta alvertencia</string>
<string name="backup_plaintext_warning_explanation">Esta alvertencia apaez porque esportesti apocayá una copia de l\'arca que nun taba cifrada. Pa caltener la seguranza de los pases, acoseyamos que desanicies esti ficheru namás que nun lu precises.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Un intent de còpia de seguretat fent servir %s ha fallat perquè s\'ha produit un error. La còpia s\'ha intentat a: %s. Si us plau revisa la configuració de les còpies per a que es puguin fer correctament.</string>
<string name="backup_system_builtin">Còpies de seguretat integrades a Aegis</string>
<string name="backup_system_android">Còpia al núvol d\'Android</string>
<string name="backup_reminder_bar_message"><b>No s\'ha fet una còpia de seguretat dels canvis recents de la volta</b></string>
<string name="backup_plaintext_export_warning"><b>La volta s\'ha exportat recentment en text sense format</b></string>
<string name="pref_show_plaintext_warning_hint">No tornis a mostrar aquesta advertència</string>
<string name="backup_plaintext_warning_explanation">Aquest avís es mostra perquè recentment heu exportat una còpia no xifrada de la volta. Per mantenir la seguretat dels vostres tokens, us recomanem que suprimiu aquest fitxer quan ja no sigui necessari.</string>

View File

@ -368,7 +368,6 @@
<string name="backup_error_dialog_details">Nedávný pokus o zálohu trezoru pomocí %s selhal, protože došlo k chybě. Pokus o zálohu byl uskutečněn: %s. Zkontrolujte prosím nastavení pro ujištění se, že zálohy mohou být úspěšně dokončeny.</string>
<string name="backup_system_builtin">Zabudované zálohy aplikace Aegis</string>
<string name="backup_system_android">Cloudový zálohovací systém systému Android</string>
<string name="backup_reminder_bar_message"><b>Nedávné změny v trezoru nebyly zálohovány</b></string>
<string name="backup_plaintext_export_warning"><b>Trezor byl nedávno exportován v plaintextu</b></string>
<string name="pref_show_plaintext_warning_hint">Toto varování již nezobrazovat</string>
<string name="backup_plaintext_warning_explanation">Toto upozornění se zobrazuje, protože jste nedávno exportovali nešifrovanou kopii trezoru. Chcete-li zachovat bezpečnost svých tokenů, doporučujeme tento soubor odstranit, jakmile již nebude potřeba.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Et nyligt forsøg på Boks-sikkerhedskopiering vha. %s mislykkedes, da en fejl opstod. Sikkerhedskopieringen forsøgt: %s. Tjek sikkerhedskopieringsindstillingerne for at sikre, at sikkerhedskopieringer kan fuldføres.</string>
<string name="backup_system_builtin">Aegis\' indbyggede automatiske sikkerhedskopieringer</string>
<string name="backup_system_android">Android cloud-sikkerhedskopieringssystem</string>
<string name="backup_reminder_bar_message"><b>Seneste Boksændringer er ikke sikkerhedskopieret</b></string>
<string name="backup_plaintext_export_warning"><b>Boksen blev for nylig eksporteret som simpel tekst</b></string>
<string name="pref_show_plaintext_warning_hint">Vis ikke denne advarsel igen</string>
<string name="backup_plaintext_warning_explanation">Denne advarsel vises, da en ukrypteret kopi af Boksen for nyligt er eksporteret. For at opretholde sikkerheden for tokens, anbefales det at slette denne fil, når den ikke længere behøves.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Ein kürzlicher Sicherungsversuch der Datenbank mit %s ist fehlgeschlagen, da ein Fehler aufgetreten ist. Versuch, eine Sicherung zu erstellen: %s. Bitte überprüfe deine Sicherungseinstellungen, um sicherzustellen, dass Sicherungen erfolgreich abgeschlossen werden können.</string>
<string name="backup_system_builtin">Automatische Sicherungen von Aegis</string>
<string name="backup_system_android">Cloud-Back-ups durch Android</string>
<string name="backup_reminder_bar_message"><b>Neueste Datenbankänderungen wurden noch nicht gesichert</b></string>
<string name="backup_plaintext_export_warning"><b>Die Datenbank wurde kürzlich im Klartext exportiert</b></string>
<string name="pref_show_plaintext_warning_hint">Diese Warnung nicht erneut anzeigen</string>
<string name="backup_plaintext_warning_explanation">Diese Warnung wird angezeigt, weil du kürzlich eine unverschlüsselte Kopie der Datenbank exportiert hast. Um die Sicherheit deiner Token zu gewährleisten, empfehlen wir, diese Datei zu löschen, sobald sie nicht mehr benötigt wird.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Μια πρόσφατη προσπάθεια δημιουργίας αντιγράφων ασφαλείας κρύπτης με χρήση %s απέτυχε επειδή παρουσιάστηκε σφάλμα. Επιχειρήθηκε η δημιουργία αντιγράφων ασφαλείας στο: %s. Ελέγξτε τις ρυθμίσεις δημιουργίας αντιγράφων ασφαλείας για να βεβαιωθείτε ότι τα αντίγραφα ασφαλείας μπορούν να ολοκληρωθούν με επιτυχία.</string>
<string name="backup_system_builtin">Ενσωματωμένα αυτόματα αντίγραφα ασφαλείας του Aegis</string>
<string name="backup_system_android">Σύστημα αντιγράφων ασφαλείας στο cloud του Android</string>
<string name="backup_reminder_bar_message"><b>Δε δημιουργήθηκαν αντίγραφα ασφαλείας για τις πρόσφατες αλλαγές της κρύπτης</b></string>
<string name="backup_plaintext_export_warning"><b>Η κρύπτη εξήχθη πρόσφατα σε απλό κείμενο</b></string>
<string name="pref_show_plaintext_warning_hint">Να μην εμφανιστεί ξανά αυτή η προειδοποίηση</string>
<string name="backup_plaintext_warning_explanation">Αυτή η προειδοποίηση εμφανίζεται επειδή πρόσφατα εξάγατε ένα μη κρυπτογραφημένο αντίγραφο της κρύπτης. Για να διατηρήσετε την ασφάλεια των token σας, σας συνιστούμε να διαγράψετε αυτό το αρχείο μόλις δεν είναι πλέον απαραίτητο.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Un intento reciente de copia de seguridad de la bóveda usando %s falló debido a un error. La copia de seguridad se intentó en: %s. Por favor, compruebe su configuración de copia de seguridad para asegurarse de que las copias de seguridad puedan completarse con éxito.</string>
<string name="backup_system_builtin">Copias de seguridad automáticas de Aegis</string>
<string name="backup_system_android">Sistema de copias de seguridad en la nube de Android</string>
<string name="backup_reminder_bar_message"><b>No existe una copia de seguridad de los últimos cambios realizados en la bóveda</b></string>
<string name="backup_plaintext_export_warning"><b>La bóveda fue exportada recientemente en texto plano</b></string>
<string name="pref_show_plaintext_warning_hint">No volver a mostrar esta advertencia</string>
<string name="backup_plaintext_warning_explanation">Esta advertencia se muestra porque recientemente exportaste una copia no encriptada de la bóveda. Para mantener la seguridad de tus tokens, recomendamos eliminar este archivo cuando deje de ser necesario.</string>

View File

@ -347,7 +347,6 @@
<string name="backup_error_dialog_details">%s erabiliz egindako biltegiaren segurtasun kopiak huts egin du. Saiakera noiz egin den: %s. Ziurtatu segurtasun kopien ezarpenak ondo daudela hauek ondo egin daitezen.</string>
<string name="backup_system_builtin">Aegisek egindako segurtasun kopia automatikoak</string>
<string name="backup_system_android">Androidek lainoan egidako segurtasun kopiak</string>
<string name="backup_reminder_bar_message"><b>Ez dago biltegian egindako azken aldaketen segurtasun kopiarik</b></string>
<string name="backup_plaintext_export_warning"><b>Biltegia orain dela gutxi testu-huts gisa esportatu da</b></string>
<string name="pref_show_plaintext_warning_hint">Ez erakutsi ohar hau berriz</string>
<string name="backup_plaintext_warning_explanation">Ohar hau, orain dela gutxi zifratu gabeko biltegiaren kopia bat esportatu delako agertzen da. Zure gakoen segurtasuna mantentzeko, fitxategi hori berehala ezabatzeko aholkua ematen dizugu.</string>

View File

@ -333,7 +333,6 @@
</plurals>
<string name="google_qr_export_unexpected">Odotettiin QR-koodia #%d, mutta skannattu #%d sen sijaan</string>
<string name="backup_error_bar_message"><b>Holvin varmuuskopiointi epäonnistui äskettäin</b></string>
<string name="backup_reminder_bar_message"><b>Äskettäisiä holvimuutoksia ei ole varmuuskopioitu</b></string>
<string name="backup_plaintext_export_warning"><b>Holvi vietiin äskettäin raakatekstinä</b></string>
<string name="pref_show_plaintext_warning_hint">Älä näytä tätä varoitusta uudelleen</string>
<string name="backup_plaintext_warning_explanation">Tämä varoitus näytetään, koska veit äskettäin salaamattoman kopion holvistasi. Varmistaaksemme todennuskoodiesi turvallisuuden, suosittelemme poistamaan tiedoston heti, kun sitä ei enää tarvita.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Une tentative récente de sauvegarde du coffre-fort en utilisant %s a échoué car une erreur est survenue. La sauvegarde a été tentée à : %s. Veuillez vérifier vos paramètres de sauvegarde pour vous assurer que les sauvegardes peuvent être terminées avec succès.</string>
<string name="backup_system_builtin">Sauvegardes automatiques intégrées dans Aegis</string>
<string name="backup_system_android">Système de sauvegarde cloud d\'Android</string>
<string name="backup_reminder_bar_message"><b>Les modifications récentes du coffre-fort ne sont pas sauvegardées</b></string>
<string name="backup_plaintext_export_warning"><b>Le coffre-fort a récemment été exporté en texte brut</b></string>
<string name="pref_show_plaintext_warning_hint">Ne plus afficher cet avertissement</string>
<string name="backup_plaintext_warning_explanation">Cet avertissement s\'affiche parce que vous avez récemment exporté une copie non chiffrée du coffre-fort. Pour maintenir la sécurité de vos jetons, nous vous recommandons de supprimer ce fichier une fois que vous n\'en aurez plus besoin.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Un intento de facer unha copia de seguridade do almacén usando %s fallou debido a algún erro. A copia de seguridade intentouse o: %s. Comproba os axustes da copia de seguridade para asegurarte de que poidan completar correctamente.</string>
<string name="backup_system_builtin">Copias de seguridade automáticas de Aegis</string>
<string name="backup_system_android">Copias de seguridade na nube de Android</string>
<string name="backup_reminder_bar_message"><b>Hai cambios recentes no almacén dos que non se fixo copia de seguridade</b></string>
<string name="backup_plaintext_export_warning"><b>O almacén exportouse recentemente como texto plano</b></string>
<string name="pref_show_plaintext_warning_hint">Non volver a mostrar este aviso</string>
<string name="backup_plaintext_warning_explanation">Móstrase este aviso porque exportaches recentemente unha copia non cifrada do almacén. Para manter a seguridade dos teus tokens, recomendámosche que elimines este ficheiro cando xa non che faga falta.</string>

View File

@ -302,7 +302,6 @@
</plurals>
<string name="google_qr_export_unexpected">अपेक्षित क्यूआर कोड #%d, लेकिन इसके बजाय #%d को स्कैन किया गया</string>
<string name="backup_error_bar_message"><b>हाल ही में वॉल्ट बैकअप विफल रहा</b></string>
<string name="backup_reminder_bar_message"><b>हाल के वॉल्ट परिवर्तनों का बैक अप नहीं लिया गया है</b></string>
<string name="switch_camera">कैमरा स्विच करें</string>
<string name="empty_list">दिखाए जाने के लिए कोई कोड नहीं हैं। नीचे दाएं कोने में प्लस साइन टैप करके प्रविष्टियां जोड़ना प्रारंभ करें</string>
<string name="empty_list_title">कोई प्रविष्टियाँ नहीं मिलीं</string>

View File

@ -304,7 +304,6 @@
</plurals>
<string name="google_qr_export_unexpected">Kode QR yang ditemukan #%d, namun hanya #%d yang dipindai</string>
<string name="backup_error_bar_message"><b>Pencadangan Brankas baru-baru ini gagal</b></string>
<string name="backup_reminder_bar_message"><b>Perubahan terbaru brankas belum dicadangkan</b></string>
<string name="backup_plaintext_export_warning"><b>Brankas baru-baru ini diekspor dalam teks biasa</b></string>
<string name="pref_show_plaintext_warning_hint">Jangan perlihatkan peringatan ini lagi</string>
<string name="backup_plaintext_warning_explanation">Peringatan ini ditampilkan karena Anda baru-baru ini mengekspor salinan tidak terenkripsi dari brankas. Untuk menjaga keamanan token Anda, kami merekomendasikan untuk menghapus berkas ini ketika sudah tidak dibutuhkan.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Un recente tentativo di backup del vault utilizzando %s non è riuscito perché si è verificato un errore. Il backup è stato tentato il: %s. Controlla le impostazioni di backup per assicurarti che i backup possano essere completati correttamente.</string>
<string name="backup_system_builtin">i backup automatici integrati di Aegis</string>
<string name="backup_system_android">il sistema di backup su cloud di Android</string>
<string name="backup_reminder_bar_message"><b>Non sono stati effettuati backup per le modifiche recenti alla cassaforte </b></string>
<string name="backup_plaintext_export_warning"><b>La cassaforte è stata recentemente esportata in testo normale</b></string>
<string name="pref_show_plaintext_warning_hint">Non mostrare più questo avviso</string>
<string name="backup_plaintext_warning_explanation">Questo avviso viene visualizzato perché di recente è stata esportata una copia non crittografata della cassaforte. Per mantenere la sicurezza dei tuoi token, ti consigliamo di eliminare questo file quando non è più necessario.</string>

View File

@ -359,7 +359,6 @@
<string name="backup_error_dialog_details">Nesens rezerves kopijas veidošanas mēģinājums, izmantojot %s, neizdevās, jo atgadījās kļūda. Rezerves kopiju tika mēģināts izveidot šeit: %s. Lūgums pārskatīt rezerves kopēšanas iestatījumus, lai pārliecinātos, ka var veiksmīgi veikt rezerves kopiju izveidošanu.</string>
<string name="backup_system_builtin">Aegis iebūvētā automātisko rezerves kopiju veidošana</string>
<string name="backup_system_android">Android mākoņa rezerves kopiju sistēma</string>
<string name="backup_reminder_bar_message"><b>Nesenas glabātavas izmaiņas netiek dublētas</b></string>
<string name="backup_plaintext_export_warning"><b>Glabātava nesen tika izdota kā vienkāršs teksts</b></string>
<string name="pref_show_plaintext_warning_hint">Vairs nerādīt šo brīdinājumu</string>
<string name="backup_plaintext_warning_explanation">Šis brīdinājums tiek parādīts, jo nesen tika izdota nešifrēta glabātavas kopija. Lai nodrošinātu pilnvaru drošību, ir ieteicams izdzēst šo failu, tiklīdz tas vairs nav nepieciešams.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Een recente back-up van de kluis met %s is mislukt omdat er iets misging. De back-up werd op %s geprobeerd. Controleer de back-upinstellingen zodat back-ups succesvol kunnen worden voltooid.</string>
<string name="backup_system_builtin">het ingebouwde automatische back-ups van Aegis</string>
<string name="backup_system_android">het cloud back-upsysteem van Android</string>
<string name="backup_reminder_bar_message"><b>Recente wijzigingen in de kluis zijn niet geback-upt</b></string>
<string name="backup_plaintext_export_warning"><b>De kluis is recent geëxporteerd in platte tekst</b></string>
<string name="pref_show_plaintext_warning_hint">Deze waarschuwing niet opnieuw weergeven</string>
<string name="backup_plaintext_warning_explanation">Deze waarschuwing wordt weergegeven omdat je recent een onversleutelde kopie van de kluis hebt geëxporteerd. Om je tokens veilig te houden, raden we aan dit bestand te verwijderen als je het niet meer nodig hebt.</string>

View File

@ -368,7 +368,6 @@
<string name="backup_error_dialog_details">Ostatnia próba wykonania kopii zapasowej sejfu z użyciem %s nie powiodła się, ponieważ wystąpił błąd. Kopia zapasowa została wykonana w: %s. Sprawdź ustawienia kopii zapasowej, aby upewnić się, że wykonywanie kopii zapasowych może się pomyślnie zakończyć.</string>
<string name="backup_system_builtin">Wbudowane automatyczne kopie zapasowe Aegis</string>
<string name="backup_system_android">System kopii zapasowej w chmurze Android</string>
<string name="backup_reminder_bar_message"><b>Ostatnie zmiany sejfu nie są w kopii zapasowej</b></string>
<string name="backup_plaintext_export_warning"><b>Sejf został ostatnio wyeksportowany w jawnym tekście</b></string>
<string name="pref_show_plaintext_warning_hint">Nie pokazuj tego ostrzeżenia ponownie</string>
<string name="backup_plaintext_warning_explanation">To ostrzeżenie jest wyświetlane, ponieważ ostatnio wyeksportowano nieszyfrowaną kopię sejfu. Aby zachować bezpieczeństwo tokenów, zalecamy usunięcie tego pliku, gdy nie będzie już potrzebny.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Uma recente tentativa de backup no cofre usando %s falhou, pois ocorreu um erro. O backup foi tentado: %s. Por favor, verifique as configurações do seu backup para garantir que ele seja concluído com sucesso.</string>
<string name="backup_system_builtin">Backups automáticos do Aegis</string>
<string name="backup_system_android">Sistema de backup em nuvem do Android</string>
<string name="backup_reminder_bar_message"><b>As alterações recentes no cofre não foram salvas</b></string>
<string name="backup_plaintext_export_warning"><b>O cofre foi exportado recentemente em texto simples</b></string>
<string name="pref_show_plaintext_warning_hint">Não mostrar este aviso novamente</string>
<string name="backup_plaintext_warning_explanation">Este aviso é exibido porque você exportou recentemente uma cópia não criptografada do cofre. Para manter a segurança de seus tokens, recomendamos excluir este arquivo uma vez que ele não seja mais necessário.</string>

View File

@ -359,7 +359,6 @@
<string name="backup_error_dialog_details">O încercare recentă de backup a seifului folosind %s a eșuat deoarece a apărut o eroare. S-a încercat crearea unei copii de siguranță la: %s. Vă rugăm să verificați setările copiilor de rezervă pentru a vă asigura că acestea se pot termina cu succes.</string>
<string name="backup_system_builtin">Copiile de siguranță încorporate în aplicație</string>
<string name="backup_system_android">Sistemul de backup în cloud Android</string>
<string name="backup_reminder_bar_message"><b>Modificările recente ale seifului nu sunt salvate</b></string>
<string name="backup_plaintext_export_warning"><b>Seiful a fost exportat recent în text simplu</b></string>
<string name="pref_show_plaintext_warning_hint">Nu mai arăta acest avertisment</string>
<string name="backup_plaintext_warning_explanation">Această avertizare este afișată deoarece ați exportat recent o copie necriptată a seifului. Pentru a menține securitatea token-urilor, vă recomandăm să ștergeți acest fișier o dată ce nu mai este necesar.</string>

View File

@ -368,7 +368,6 @@
<string name="backup_error_dialog_details">Последнее резервное копирование хранилища с использованием %s не выполнено из-за ошибки, попытка производилась: %s. Убедитесь, что настройки резервного копирования правильные.</string>
<string name="backup_system_builtin">Встроенное автоматическое резервирование Aegis</string>
<string name="backup_system_android">Системное облачное резервирование Android</string>
<string name="backup_reminder_bar_message"><b>Последние изменения в хранилище не сохранены</b></string>
<string name="backup_plaintext_export_warning"><b>Хранилище недавно было экспортировано в виде простого текста</b></string>
<string name="pref_show_plaintext_warning_hint">Больше не показывать это предупреждение</string>
<string name="backup_plaintext_warning_explanation">Это предупреждение отображается потому, что вы недавно экспортировали хранилище в незашифрованном виде. Для обеспечения безопасности ключей, мы рекомендуем удалить этот файл, как только он перестанет быть нужным.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">Ett nyligen påbörjat försök att säkerhetskopiera valvet till %s misslyckades eftersom ett fel uppstod. Säkerhetskopieringen påbörjades: %s. Vänligen kontrollera dina säkerhetskopieringsinställningar för att se till att säkerhetskopior kan skapas framgångsrikt.</string>
<string name="backup_system_builtin">Aegis inbyggda automatiska säkerhetskopior</string>
<string name="backup_system_android">Androids molnsäkerhetskopieringssystem</string>
<string name="backup_reminder_bar_message"><b>De senaste ändringarna i valvet är inte säkerhetskopierade</b></string>
<string name="backup_plaintext_export_warning"><b>Valvet exporterades nyligen som klartext</b></string>
<string name="pref_show_plaintext_warning_hint">Visa inte denna varning igen</string>
<string name="backup_plaintext_warning_explanation">Denna varning visas eftersom du nyligen exporterade en okrypterad kopia av valvet. För att upprätthålla säkerheten för dina polletter rekommenderar vi att du raderar denna fil när den inte längre behövs.</string>

View File

@ -350,7 +350,6 @@
<string name="backup_error_dialog_details">En son %s kullanılarak cüzdan yedeği girişimi bir hata oluştuğundan başarısız oldu. Yedek girişimi tarihi: %s. Lütfen yedeklerin başarılı bir şekilde tamamlanması için yedek ayarlarınızı kontrol edin.</string>
<string name="backup_system_builtin">Aegis dahili otomatik yedekleri</string>
<string name="backup_system_android">Android\'in bulut yedekleme sistemi</string>
<string name="backup_reminder_bar_message"><b>Az önce yapılan değişiklikler yedeklenmedi.</b></string>
<string name="backup_plaintext_export_warning"><b>Kasa yakın zamanda düz metin olarak dışa aktarıldı</b></string>
<string name="pref_show_plaintext_warning_hint">Bu uyarıyı bir daha gösterme</string>
<string name="backup_plaintext_warning_explanation">Bu uyarı kısa süre önce kasanın şifrelenmemiş bir kopyasını dışa aktardığınız için gösterilir. Tokenlerinizin güvenliğini korumak için artık ihtiyaç duymadığınızda bu dosyayı silmenizi öneririz.</string>

View File

@ -310,7 +310,6 @@
</plurals>
<string name="google_qr_export_unexpected">Đã mong đợi mã QR #%d, nhưng thay vào đó đã quét #%d</string>
<string name="backup_error_bar_message"><b>Sao lưu kho thất bại vào gần đây</b></string>
<string name="backup_reminder_bar_message"><b>Các thay đổi kho gần đây không được sao lưu</b></string>
<string name="switch_camera">Chuyển máy ảnh</string>
<string name="empty_list">Không có mã nào để hiện. Hãy bắt đầu thêm các mục bằng cách nhấn vào ký hiệu dấu cộng ở góc dưới bên phải</string>
<string name="empty_list_title">Không tìm thấy mục nào</string>

View File

@ -341,7 +341,6 @@
<string name="backup_error_dialog_details">因发生错误,上次使用 %s 备份密码库的尝试失败。尝试于 %s。请检查您的备份设置以确保备份成功完成。</string>
<string name="backup_system_builtin">Aegis 内置的自动备份</string>
<string name="backup_system_android">Android 的云备份系统</string>
<string name="backup_reminder_bar_message"><b>最近对数据库的更改尚未备份</b></string>
<string name="backup_plaintext_export_warning"><b>保险库最近导出为纯文本</b></string>
<string name="pref_show_plaintext_warning_hint">不再显示此警告</string>
<string name="backup_plaintext_warning_explanation">显示此警告是因为您最近导出了一个未加密的保险库副本。 为了保持令牌的安全性,我们建议一旦不再需要该文件,就将其删除。</string>

View File

@ -366,10 +366,21 @@
</plurals>
<string name="google_qr_export_unexpected">Expected QR code #%d, but scanned #%d instead</string>
<string name="backup_error_bar_message"><b>Vault backup failed recently</b></string>
<string name="backup_error_dialog_details">A recent vault backup attempt using %s failed because an error occurred. The backup was attempted at: %s. Please check your backup settings to make sure backups can complete successfully.</string>
<string
name="backup_error_dialog_details"
comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'.">
A recent vault backup attempt using %s failed because an error occurred. The backup was attempted %s. Please check your backup settings to make sure backups can complete successfully.
</string>
<string name="backup_system_builtin">Aegis\' built-in automatic backups</string>
<string name="backup_system_android">Android\'s cloud backup system</string>
<string name="backup_reminder_bar_message"><b>Recent vault changes are not backed up</b></string>
<string
name="backup_reminder_bar_message_with_latest"
comment="The parameter is an elapsed time in the style of 'x seconds/minutes/days ago'">
Latest backup is outdated (%s)
</string>
<string name="backup_reminder_bar_message">
Changes are not backed up
</string>
<string name="backup_plaintext_export_warning"><b>The vault was recently exported in plain text</b></string>
<string name="pref_show_plaintext_warning_hint">Don\'t show this warning again</string>
<string name="backup_plaintext_warning_explanation">This warning is shown because you recently exported an unencrypted copy of the vault. To maintain security of your tokens, we recommend deleting this file once it\'s no longer needed.</string>
@ -463,4 +474,25 @@
<string name="pref_grouping_size_two">Groups of 2</string>
<string name="pref_grouping_size_three">Groups of 3</string>
<string name="pref_grouping_size_four">Groups of 4</string>
<plurals name="time_elapsed_seconds">
<item quantity="one">%d second ago</item>
<item quantity="other">%d seconds ago</item>
</plurals>
<plurals name="time_elapsed_minutes">
<item quantity="one">%d minute ago</item>
<item quantity="other">%d minutes ago</item>
</plurals>
<plurals name="time_elapsed_hours">
<item quantity="one">%d hour ago</item>
<item quantity="other">%d hours ago</item>
</plurals>
<plurals name="time_elapsed_days">
<item quantity="one">%d day ago</item>
<item quantity="other">%d days ago</item>
</plurals>
<plurals name="time_elapsed_years">
<item quantity="one">%d year ago</item>
<item quantity="other">%d years ago</item>
</plurals>
</resources>