From bb018b8fc1996ea264771f73da9b3f28550d3b2c Mon Sep 17 00:00:00 2001 From: Manoj Khanna Date: Wed, 11 Mar 2015 19:55:31 +0530 Subject: [PATCH] Updated fix for Issue #1116 --- .../keychain/ui/EncryptFilesActivity.java | 39 ++++--- .../keychain/ui/EncryptFilesFragment.java | 7 ++ .../ui/dialog/DeleteFileDialogFragment.java | 106 ++++++++++++------ .../src/main/res/values-cs/strings.xml | 6 +- .../src/main/res/values-de/strings.xml | 4 +- .../src/main/res/values-es/strings.xml | 4 +- .../src/main/res/values-et/strings.xml | 8 +- .../src/main/res/values-eu/strings.xml | 2 + .../src/main/res/values-fi/strings.xml | 8 +- .../src/main/res/values-fr/strings.xml | 4 +- .../src/main/res/values-it/strings.xml | 6 +- .../src/main/res/values-ja/strings.xml | 5 +- .../src/main/res/values-nl/strings.xml | 8 +- .../src/main/res/values-pl/strings.xml | 6 +- .../src/main/res/values-ru/strings.xml | 4 +- .../src/main/res/values-sl/strings.xml | 6 +- .../src/main/res/values-sr/strings.xml | 8 +- .../src/main/res/values-sv/strings.xml | 4 +- .../src/main/res/values-tr/strings.xml | 6 +- .../src/main/res/values-uk/strings.xml | 6 +- .../src/main/res/values-zh-rTW/strings.xml | 6 +- .../src/main/res/values-zh/strings.xml | 4 +- OpenKeychain/src/main/res/values/strings.xml | 7 +- 23 files changed, 163 insertions(+), 101 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java index d95b5cda3..b862d5b11 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java @@ -36,7 +36,6 @@ import org.sufficientlysecure.keychain.pgp.SignEncryptParcel; import org.sufficientlysecure.keychain.ui.dialog.DeleteFileDialogFragment; import org.sufficientlysecure.keychain.ui.util.Notify; import org.sufficientlysecure.keychain.util.Log; -import org.sufficientlysecure.keychain.util.Preferences; import org.sufficientlysecure.keychain.util.ShareHelper; import java.util.ArrayList; @@ -177,22 +176,36 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi } @Override - public void onEncryptSuccess(SignEncryptResult result) { + public void onEncryptSuccess(final SignEncryptResult result) { if (mDeleteAfterEncrypt) { - for (Uri inputUri : mInputUris) { - DeleteFileDialogFragment deleteFileDialog = DeleteFileDialogFragment.newInstance(inputUri); - deleteFileDialog.show(getSupportFragmentManager(), "deleteDialog"); - } + final Uri[] inputUris = mInputUris.toArray(new Uri[mInputUris.size()]); + DeleteFileDialogFragment deleteFileDialog = DeleteFileDialogFragment.newInstance(inputUris); + deleteFileDialog.setOnDeletedListener(new DeleteFileDialogFragment.OnDeletedListener() { + + @Override + public void onDeleted() { + if (mShareAfterEncrypt) { + // Share encrypted message/file + startActivity(sendWithChooserExcludingEncrypt()); + } else { + // Save encrypted file + result.createNotify(EncryptFilesActivity.this).show(); + } + } + + }); + deleteFileDialog.show(getSupportFragmentManager(), "deleteDialog"); + mInputUris.clear(); notifyUpdate(); - } - - if (mShareAfterEncrypt) { - // Share encrypted message/file - startActivity(sendWithChooserExcludingEncrypt()); } else { - // Save encrypted file - result.createNotify(EncryptFilesActivity.this).show(); + if (mShareAfterEncrypt) { + // Share encrypted message/file + startActivity(sendWithChooserExcludingEncrypt()); + } else { + // Save encrypted file + result.createNotify(EncryptFilesActivity.this).show(); + } } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java index ace58b165..48737d223 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java @@ -114,6 +114,13 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt return; } + if (mEncryptInterface.getInputUris().contains(inputUri)) { + Notify.showNotify(getActivity(), + getActivity().getString(R.string.error_file_added_already, FileHelper.getFilename(getActivity(), inputUri)), + Notify.Style.ERROR); + return; + } + mEncryptInterface.getInputUris().add(inputUri); mEncryptInterface.notifyUpdate(); mSelectedFiles.requestFocus(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java index c4b437593..bd506f648 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java @@ -18,7 +18,6 @@ package org.sufficientlysecure.keychain.ui.dialog; import android.app.Dialog; -import android.content.ContentResolver; import android.content.DialogInterface; import android.net.Uri; import android.os.Build; @@ -34,18 +33,22 @@ import org.sufficientlysecure.keychain.util.FileHelper; import org.sufficientlysecure.keychain.util.Log; import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; public class DeleteFileDialogFragment extends DialogFragment { - private static final String ARG_DELETE_URI = "delete_uri"; + private static final String ARG_DELETE_URIS = "delete_uris"; + + private OnDeletedListener onDeletedListener; /** * Creates new instance of this delete file dialog fragment */ - public static DeleteFileDialogFragment newInstance(Uri deleteUri) { + public static DeleteFileDialogFragment newInstance(Uri... deleteUris) { DeleteFileDialogFragment frag = new DeleteFileDialogFragment(); Bundle args = new Bundle(); - args.putParcelable(ARG_DELETE_URI, deleteUri); + args.putParcelableArray(ARG_DELETE_URIS, deleteUris); frag.setArguments(args); @@ -59,12 +62,20 @@ public class DeleteFileDialogFragment extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { final FragmentActivity activity = getActivity(); - final Uri deleteUri = getArguments().getParcelable(ARG_DELETE_URI); - final String deleteFilename = FileHelper.getFilename(getActivity(), deleteUri); + final Uri[] deleteUris = (Uri[]) getArguments().getParcelableArray(ARG_DELETE_URIS); + + final StringBuilder deleteFileNames = new StringBuilder(); + //Retrieving file names after deletion gives unexpected results + final HashMap deleteFileNameMap = new HashMap<>(); + for (Uri deleteUri : deleteUris) { + String deleteFileName = FileHelper.getFilename(getActivity(), deleteUri); + deleteFileNames.append('\n').append(deleteFileName); + deleteFileNameMap.put(deleteUri, deleteFileName); + } CustomAlertDialogBuilder alert = new CustomAlertDialogBuilder(activity); - alert.setMessage(this.getString(R.string.file_delete_confirmation, deleteFilename)); + alert.setMessage(this.getString(R.string.file_delete_confirmation, deleteFileNames.toString())); alert.setPositiveButton(R.string.btn_delete, new DialogInterface.OnClickListener() { @@ -72,43 +83,56 @@ public class DeleteFileDialogFragment extends DialogFragment { public void onClick(DialogInterface dialog, int id) { dismiss(); - // NOTE: Use Toasts, not Snackbars. When sharing to another application snackbars - // would not show up! + ArrayList failedFileNameList = new ArrayList<>(); - // Use DocumentsContract on Android >= 4.4 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - try { - if (DocumentsContract.deleteDocument(getActivity().getContentResolver(), deleteUri)) { - Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful, - deleteFilename), Toast.LENGTH_LONG).show(); - return; + for (Uri deleteUri : deleteUris) { + // Use DocumentsContract on Android >= 4.4 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + try { + if (DocumentsContract.deleteDocument(getActivity().getContentResolver(), deleteUri)) { + continue; + } + } catch (Exception e) { + Log.d(Constants.TAG, "Catched UnsupportedOperationException, can happen when delete is not supported!", e); } - } catch (UnsupportedOperationException e) { + } + + try { + if (getActivity().getContentResolver().delete(deleteUri, null, null) > 0) { + continue; + } + } catch (Exception e) { Log.d(Constants.TAG, "Catched UnsupportedOperationException, can happen when delete is not supported!", e); } - } - try { - if (getActivity().getContentResolver().delete(deleteUri, null, null) > 0) { - Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful, - deleteFilename), Toast.LENGTH_LONG).show(); - return; + // some Uri's a ContentResolver fails to delete is handled by the java.io.File's delete + // via the path of the Uri + if (new File(deleteUri.getPath()).delete()) { + continue; } - } catch (UnsupportedOperationException e) { - Log.d(Constants.TAG, "Catched UnsupportedOperationException, can happen when delete is not supported!", e); + + // Note: We can't delete every file... + + failedFileNameList.add(deleteFileNameMap.get(deleteUri)); } - // some Uri's a ContentResolver fails to delete is handled by the java.io.File's delete - // via the path of the Uri - if (new File(deleteUri.getPath()).delete()) { - Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful, - deleteFilename), Toast.LENGTH_LONG).show(); - return; + StringBuilder failedFileNames = new StringBuilder(); + if (!failedFileNameList.isEmpty()) { + for (String failedFileName : failedFileNameList) { + failedFileNames.append('\n').append(failedFileName); + } + failedFileNames.append('\n').append(getActivity().getString(R.string.error_file_delete_failed)); } - // Note: We can't delete every file... - Toast.makeText(getActivity(), getActivity().getString(R.string.error_file_delete_failed, - deleteFilename), Toast.LENGTH_LONG).show(); + // NOTE: Use Toasts, not Snackbars. When sharing to another application snackbars + // would not show up! + Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful, + deleteUris.length - failedFileNameList.size(), deleteUris.length, failedFileNames.toString()), + Toast.LENGTH_LONG).show(); + + if (onDeletedListener != null) { + onDeletedListener.onDeleted(); + } } }); alert.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @@ -120,4 +144,18 @@ public class DeleteFileDialogFragment extends DialogFragment { return alert.show(); } + + public void setOnDeletedListener(OnDeletedListener onDeletedListener) { + this.onDeletedListener = onDeletedListener; + } + + /** + * Callback for performing tasks after the deletion of files + */ + public interface OnDeletedListener { + + public void onDeleted(); + + } + } diff --git a/OpenKeychain/src/main/res/values-cs/strings.xml b/OpenKeychain/src/main/res/values-cs/strings.xml index 380dadb54..9c16fa413 100644 --- a/OpenKeychain/src/main/res/values-cs/strings.xml +++ b/OpenKeychain/src/main/res/values-cs/strings.xml @@ -173,8 +173,7 @@ Zadat PIN pro \'%s\' Zadejte PIN pro přístup k YubiKey pro \'%s\' Přidržte YubiKey u zadní strany vašeho přístroje. - Chcete opravdu smazat\n%s? - Nejprve vyberte soubor. + Nejprve vyberte soubor. Úspěšně podepsáno a/nebo zašifrováno. Úspěšně podepsání a/nebo zašifrováno do schránky. Vyberte alespoň jeden šifrovací klíč. @@ -507,7 +506,8 @@ Není dostupný šifrovací podklíč! Zobrazit klíč (%s) Potáhnout dolů pro aktualizaci z keyserveru - + + diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml index 98066b1e8..fbae159a3 100644 --- a/OpenKeychain/src/main/res/values-de/strings.xml +++ b/OpenKeychain/src/main/res/values-de/strings.xml @@ -190,8 +190,7 @@ PIN für \'%s\' eingeben PIN für Zugriff auf Yubikey für \'%s\' eingeben Halten Sie den YubiKey gegen die Rückseite Ihres Geräts. - %s wirklich löschen? - Zuerst eine Datei auswählen. + Zuerst eine Datei auswählen. Erfolgreich signiert und/oder verschlüsselt. Erfolgreich in die Zwischenablage signiert und/oder verschlüsselt. Mindestens einen Schlüssel zum Verschlüsseln auswählen. @@ -1098,4 +1097,5 @@ Erfolgreich auf den NFC-Tag geschrieben Entsperrt Einstellungen + diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml index 92b958ad8..d7557074a 100644 --- a/OpenKeychain/src/main/res/values-es/strings.xml +++ b/OpenKeychain/src/main/res/values-es/strings.xml @@ -194,8 +194,7 @@ Introduzca el PIN para \'%s\' Introduzca el PIN para acceder a la YubiKey para \'%s\' Sostenga la YubiKey contra el reverso de su dispositivo. - ¿Está seguro de que quiere eliminar\n%s? - Selecciona un archivo antes. + Selecciona un archivo antes. Firmado y/o cifrado con éxito. Firmado y/o cifrado del portapapeles con éxito. Selecciona al menos una clave de cifrado. @@ -1145,4 +1144,5 @@ Se escribió con éxito en la etiqueta NFC Desbloqueado Configuración + diff --git a/OpenKeychain/src/main/res/values-et/strings.xml b/OpenKeychain/src/main/res/values-et/strings.xml index 15b0c6c1e..f67ffb328 100644 --- a/OpenKeychain/src/main/res/values-et/strings.xml +++ b/OpenKeychain/src/main/res/values-et/strings.xml @@ -61,9 +61,11 @@ Vale salasõne Salasõned ei ühti. Sümmeetriline krüpteering - + + + diff --git a/OpenKeychain/src/main/res/values-eu/strings.xml b/OpenKeychain/src/main/res/values-eu/strings.xml index a09e3fdc5..32fdfc4cb 100644 --- a/OpenKeychain/src/main/res/values-eu/strings.xml +++ b/OpenKeychain/src/main/res/values-eu/strings.xml @@ -379,4 +379,6 @@ NFC Ezarpenak + + diff --git a/OpenKeychain/src/main/res/values-fi/strings.xml b/OpenKeychain/src/main/res/values-fi/strings.xml index 4313caf15..4b75d203d 100644 --- a/OpenKeychain/src/main/res/values-fi/strings.xml +++ b/OpenKeychain/src/main/res/values-fi/strings.xml @@ -169,9 +169,11 @@ Symmetrinen salaus. Syötä salasana \'%s\':lle Syötä PIN \'%s\':lle - + + + diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml index f9ef4d41d..ba6f2e2af 100644 --- a/OpenKeychain/src/main/res/values-fr/strings.xml +++ b/OpenKeychain/src/main/res/values-fr/strings.xml @@ -194,8 +194,7 @@ Saisir le NIP pour « %s » Saisir le NIP pour accéder à la Yubikey pour « %s » Tenez la YubiKey contre le dos de votre appareil. - Êtes-vous certain de vouloir supprimer\n%s? - Choisir d\'abord un fichier. + Choisir d\'abord un fichier. Signé et/ou chiffré avec succès. Signé et/ou chiffré vers le presse-papiers avec succès. Choisir au moins une clef de chiffrement. @@ -1136,4 +1135,5 @@ Écrit avec succès sur la balise NFC Déverrouillé Paramètres + diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml index 24c8a5657..5de5a1579 100644 --- a/OpenKeychain/src/main/res/values-it/strings.xml +++ b/OpenKeychain/src/main/res/values-it/strings.xml @@ -164,8 +164,7 @@ Si prega di inserire una frase di accesso. Codifica Simmetrica. Inserisci la frase di accesso per \'%s\' - Sei sicuro di voler eliminare\n%s? - Seleziona un file prima. + Seleziona un file prima. Firmato e/o codificato con successo. Firmato e/o codificato con successo negli appunti. Seleziona almeno una chiave di codifica. @@ -715,7 +714,8 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars Seleziona almeno un file da codificare! Il salvataggio di più file non è supportato. Questa è una limitazione corrente di Android. Chiave: - + + diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml index 8a4778989..183938811 100644 --- a/OpenKeychain/src/main/res/values-ja/strings.xml +++ b/OpenKeychain/src/main/res/values-ja/strings.xml @@ -192,9 +192,7 @@ \'%s\' にPINを入力してください \'%s\' の Yubikey にアクセスするためのPINを入力してください あなたのデバイスの背面にYubiKeyを固定してください。 - %s -を削除してもかまいませんか? - 最初にファイルを選択してください。 + 最初にファイルを選択してください。 署名/暗号化に成功しました。 クリップボードの中身の署名/暗号化に成功しました。 少なくとも1つの暗号化鍵を選択して下さい。 @@ -1092,4 +1090,5 @@ NFCタグに書けました! アンロック 設定 + diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml index 4c1a6a8d1..0d3cb0094 100644 --- a/OpenKeychain/src/main/res/values-nl/strings.xml +++ b/OpenKeychain/src/main/res/values-nl/strings.xml @@ -204,9 +204,7 @@ Voer PIN in voor \'%s\' Voer PIN in om toegang te verkrijgen tot YubiKey voor \'%s\' Hou YubiKey tegen de achterkant van je toestel - Ben je zeker dat je %s wil verwijderen? - \'%s\' is verwijderd. - Selecteer eerst een bestand. + Selecteer eerst een bestand. Succesvol gesigneerd en/of gecodeerd. Succesvol gesigneerd en/of gecodeerd naar klembord. Selecteer ten minste één versleutelingssleutel. @@ -239,8 +237,7 @@ - Verwijderen van \'%s\' mislukt. Gelieve dit handmatig te doen! - bestand niet gevonden + bestand niet gevonden geen geschikte privésleutel gevonden externe opslag niet gereed sleutelgrootte moet minstens 512-bits zijn @@ -1159,4 +1156,5 @@ Succesvol geschreven op NFC-tag Ontgrendeld Instellingen + diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml index 8c0fc23d2..1ee5a86e7 100644 --- a/OpenKeychain/src/main/res/values-pl/strings.xml +++ b/OpenKeychain/src/main/res/values-pl/strings.xml @@ -179,8 +179,7 @@ Podaj hasło dla \'%s\' Wpisz PIN dla \'%s\' Trzymaj YubiKey z tyłu Twojego urządzenia. - Czy jesteś pewny, że chcesz usunąć\n%s? - Najpierw wskaż plik. + Najpierw wskaż plik. Pomyślnie podpisano i/lub zaszyfrowano. Pomyslnie podpisano i/lub zaszyfrowano do schowka. Wybierz co najmniej jeden klucz szyfrujący. @@ -657,7 +656,8 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw Wybierz przynajmniej jeden plik, aby szyfrować! Klucz: Rozpocznij wymianę - + + diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml index f6658ded0..9559ecf51 100644 --- a/OpenKeychain/src/main/res/values-ru/strings.xml +++ b/OpenKeychain/src/main/res/values-ru/strings.xml @@ -192,8 +192,7 @@ Введите PIN для доступа к YubiKey для \'%s\' Держите YubiKey возле задней части вашего устройства. - Вы уверены, что хотите удалить\n%s? - Сначала выберите файл. + Сначала выберите файл. Успешно подписано и/или зашифровано. Успешно подписано и/или зашифровано в буфер обмена. Укажите хотя бы один ключ. @@ -811,4 +810,5 @@ Разблокирован Настройки + diff --git a/OpenKeychain/src/main/res/values-sl/strings.xml b/OpenKeychain/src/main/res/values-sl/strings.xml index 06f14a483..3eb8eeba8 100644 --- a/OpenKeychain/src/main/res/values-sl/strings.xml +++ b/OpenKeychain/src/main/res/values-sl/strings.xml @@ -168,8 +168,7 @@ Vnesite geslo. Simetrično šifriranje. Vnesite geslo za \'%s\' - Ste prepričani, da želite izbrisati\n%s? - Najprej izberite datoteko. + Najprej izberite datoteko. Uspešno podpisano in/ali šifrirano. Uspešno podpisano in/ali šifrirano ter poslano v odložišče. Izberite vsaj en šifrirni ključ. @@ -479,7 +478,8 @@ Ni nobenega podključa za šifriranje! Prikaži ključ (%s) Ključ: - + + diff --git a/OpenKeychain/src/main/res/values-sr/strings.xml b/OpenKeychain/src/main/res/values-sr/strings.xml index 73094c5a4..b5ba0b361 100644 --- a/OpenKeychain/src/main/res/values-sr/strings.xml +++ b/OpenKeychain/src/main/res/values-sr/strings.xml @@ -204,9 +204,7 @@ Унесите ПИН за „%s“ Унесите ПИН за приступ Јубикључу за „%s“ Држите Јубикључ на полеђини вашег уређаја. - Желите ли заиста да обришете\n%s? - Брисање је успело. - Најпре изаберите фајл. + Најпре изаберите фајл. Потписивање и/или шифровање је успело. Потписивање и/или шифровање на клипборд је успело. Унесите лозинку два пута. @@ -240,8 +238,7 @@ - брисање „%s“ није успело - фајл није нађен + фајл није нађен одговарајући тајни кључ није нађен спољашње складиште није спремно величина кључа мора да буде најмање 512 бита @@ -1145,4 +1142,5 @@ Успешно уписах на НФЦ ознаку Откључан Поставке + diff --git a/OpenKeychain/src/main/res/values-sv/strings.xml b/OpenKeychain/src/main/res/values-sv/strings.xml index e74a2104f..93b833590 100644 --- a/OpenKeychain/src/main/res/values-sv/strings.xml +++ b/OpenKeychain/src/main/res/values-sv/strings.xml @@ -178,8 +178,7 @@ Ange PIN för \'%s\' Ange PIN för att få åtkomst till YubiKey för \'%s\' Håll YubiKey mot baksidan av din enhet. - Vill du verkligen radera\n%s? - Välj en fil först. + Välj en fil först. Signerades och/eller krypterades. Signerades och/eller krypterades till urklipp. Välj åtminstone en krypteringsnyckel. @@ -864,4 +863,5 @@ Denna enhet stöder inte NFC Upplåst Inställningar + diff --git a/OpenKeychain/src/main/res/values-tr/strings.xml b/OpenKeychain/src/main/res/values-tr/strings.xml index a5ab9ca63..2b60c9758 100644 --- a/OpenKeychain/src/main/res/values-tr/strings.xml +++ b/OpenKeychain/src/main/res/values-tr/strings.xml @@ -167,8 +167,7 @@ Simetrik şifreleme. \'%s\' için bir parola girin YubiKey\'inizi cihazınızın arkasında tutun. - Silmek istediğinize emin misiniz\n%s? - Önce bir dosya seçin. + Önce bir dosya seçin. Başarıyla imzalandı ve/veya şifrelendi. Kopyalama önbelleğine başarıyla imzalandı ve/veya şifrelendi. En az bir şifreleme anahtarı seçiniz. @@ -509,7 +508,8 @@ Birden çok dosyanın kaydedilmesi desteklenmiyor. Bu şu anki Android\'in bir kısıtlamasıdır. Anahtar: Anahtar değiş tokuşu başlatmak için sağ taraftan katılımcıların sayısını seçin ve \"Değiş tokuşu başlat\" tuşuna tıklayın.\n\nSadece istenilen katılımcıların değişim işleminde olduğundan ve parmak izlerinin doğruluğundan emin olmak için size iki soru daha sorulacak. - + + diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml index ed5012edb..b3a161758 100644 --- a/OpenKeychain/src/main/res/values-uk/strings.xml +++ b/OpenKeychain/src/main/res/values-uk/strings.xml @@ -168,8 +168,7 @@ Будь ласка, введіть парольну фразу. Симетричне шифрування. Введіть парольну фразу для \'%s\' - Ви справді хочете вилучити\n%s? - Виберіть спершу файл. + Виберіть спершу файл. Успішно підписано та/або перевірено. Успішно підписано та/або зашифровано до буфера обміну. Виберіть принаймні один ключ шифрування. @@ -589,7 +588,8 @@ не можна підписати Жодний підключ шифрування недоступний! Показати ключ (%s) - + + diff --git a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml index 9b6ef4c91..286e98b79 100644 --- a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml +++ b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml @@ -139,8 +139,7 @@ 口令不相符。 請輸入口令。 對稱加密。 - 你確定要刪除\n%s? - 請先選擇檔案。 + 請先選擇檔案。 成功簽名並/或加密。 成功簽名並/或加密到剪貼簿。 選擇至少一把加密金鑰。 @@ -422,7 +421,8 @@ 沒有可供加密的子金鑰! 請不要自行建立OpenKeychain帳戶。\n更多資訊請參考說明。 要發起金鑰交換,先在右邊選擇與會人數,然後點選〝開始交換〞。\n\n接下來會詢問你兩個問題,以確保會議成員與交換的指紋是正確的。 - + + diff --git a/OpenKeychain/src/main/res/values-zh/strings.xml b/OpenKeychain/src/main/res/values-zh/strings.xml index a255362fb..d59b2a2e0 100644 --- a/OpenKeychain/src/main/res/values-zh/strings.xml +++ b/OpenKeychain/src/main/res/values-zh/strings.xml @@ -195,7 +195,9 @@ 请重审收件人列表 使用NFC分享 - + + + diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 920fbf2a8..c5dfdcaa1 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -222,8 +222,8 @@ "Enter PIN for '%s'" "Enter PIN to access YubiKey for '%s'" "Hold YubiKey against the back of your device." - "Are you sure you want to delete\n%s?" - "'%s' has been deleted." + "Are you sure you want to delete the following files?%s" + "%1$d out of %2$d files have been deleted.%3$s" "Select a file first." "Successfully signed and/or encrypted." "Successfully signed and/or encrypted to clipboard." @@ -264,7 +264,8 @@ no punctuation, all lowercase, they will be put after "error_message", e.g. "Error: file not found" --> - "Deleting '%s' failed. Please do this manually!" + "are not deleted." + %s has been added already. "file not found" "no suitable secret key found" "external storage not ready"