import: handle FileNotFoundException (fixes #1688)

This commit is contained in:
Vincent Breitmoser 2016-01-19 16:18:06 +01:00
parent 10ce81bd60
commit 48dd3d09e6
17 changed files with 87 additions and 82 deletions

View file

@ -44,12 +44,13 @@ public class GetKeyResult extends InputPendingResult {
super(log, requiredInput, cryptoInputParcel);
}
public static final int RESULT_ERROR_NO_VALID_KEYS = RESULT_ERROR + 8;
public static final int RESULT_ERROR_NO_PGP_PARTS = RESULT_ERROR + 16;
public static final int RESULT_ERROR_QUERY_TOO_SHORT = RESULT_ERROR + 32;
public static final int RESULT_ERROR_TOO_MANY_RESPONSES = RESULT_ERROR + 64;
public static final int RESULT_ERROR_TOO_SHORT_OR_TOO_MANY_RESPONSES = RESULT_ERROR + 128;
public static final int RESULT_ERROR_QUERY_FAILED = RESULT_ERROR + 256;
public static final int RESULT_ERROR_NO_VALID_KEYS = RESULT_ERROR + (1<<4);
public static final int RESULT_ERROR_NO_PGP_PARTS = RESULT_ERROR + (2<<4);
public static final int RESULT_ERROR_QUERY_TOO_SHORT = RESULT_ERROR + (3<<4);
public static final int RESULT_ERROR_TOO_MANY_RESPONSES = RESULT_ERROR + (4<<4);
public static final int RESULT_ERROR_TOO_SHORT_OR_TOO_MANY_RESPONSES = RESULT_ERROR + (5<<4);
public static final int RESULT_ERROR_QUERY_FAILED = RESULT_ERROR + (6<<4);
public static final int RESULT_ERROR_FILE_NOT_FOUND = RESULT_ERROR + (7<<4);
public GetKeyResult(Parcel source) {
super(source);

View file

@ -810,13 +810,13 @@ public abstract class OperationResult implements Parcelable {
MSG_NO_VALID_ENC (LogLevel.ERROR, R.string.error_invalid_data),
// get key
MSG_GET_SUCCESS(LogLevel.OK, R.string.msg_download_success),
MSG_GET_NO_VALID_KEYS(LogLevel.ERROR, R.string.msg_download_no_valid_keys),
MSG_GET_NO_PGP_PARTS(LogLevel.ERROR, R.string.msg_download_no_pgp_parts),
MSG_GET_QUERY_TOO_SHORT(LogLevel.ERROR, R.string.msg_download_query_too_short),
MSG_GET_TOO_MANY_RESPONSES(LogLevel.ERROR, R.string.msg_download_too_many_responses),
MSG_GET_QUERY_TOO_SHORT_OR_TOO_MANY_RESPONSES(LogLevel.ERROR, R.string.msg_download_query_too_short_or_too_many_responses),
MSG_GET_QUERY_FAILED(LogLevel.ERROR, R.string.msg_download_query_failed),
MSG_GET_SUCCESS (LogLevel.OK, R.string.msg_get_success),
MSG_GET_NO_VALID_KEYS (LogLevel.ERROR, R.string.msg_get_no_valid_keys),
MSG_GET_QUERY_TOO_SHORT (LogLevel.ERROR, R.string.msg_get_query_too_short),
MSG_GET_TOO_MANY_RESPONSES (LogLevel.ERROR, R.string.msg_get_too_many_responses),
MSG_GET_QUERY_TOO_SHORT_OR_TOO_MANY_RESPONSES (LogLevel.ERROR, R.string.msg_get_query_too_short_or_too_many_responses),
MSG_GET_QUERY_FAILED (LogLevel.ERROR, R.string.msg_download_query_failed),
MSG_GET_FILE_NOT_FOUND (LogLevel.ERROR, R.string.msg_get_file_not_found),
MSG_DEL_ERROR_EMPTY (LogLevel.ERROR, R.string.msg_del_error_empty),
MSG_DEL_ERROR_MULTI_SECRET (LogLevel.ERROR, R.string.msg_del_error_multi_secret),

View file

@ -221,7 +221,6 @@ public class UncachedKeyRing {
public boolean hasNext() throws IOException;
public E next() throws IOException;
}
public void encodeArmored(OutputStream out, String version) throws IOException {
ArmoredOutputStream aos = new ArmoredOutputStream(out);
if (version != null) {

View file

@ -26,6 +26,7 @@ import java.io.InputStream;
import java.util.ArrayList;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.util.LongSparseArray;
@ -34,6 +35,8 @@ import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry;
import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing;
import org.sufficientlysecure.keychain.operations.results.GetKeyResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult.LogType;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;
import org.sufficientlysecure.keychain.pgp.UncachedKeyRing.IteratorWithIOThrow;
import org.sufficientlysecure.keychain.ui.ImportKeysListFragment.BytesLoaderState;
@ -65,16 +68,25 @@ public class ImportKeysListLoader
return mEntryListWrapper;
}
GetKeyResult getKeyResult = new GetKeyResult(GetKeyResult.RESULT_OK, null);
mEntryListWrapper = new AsyncTaskResultWrapper<>(mData, getKeyResult);
{
GetKeyResult getKeyResult = new GetKeyResult(GetKeyResult.RESULT_OK, null);
mEntryListWrapper = new AsyncTaskResultWrapper<>(mData, getKeyResult);
}
if (mLoaderState == null) {
Log.e(Constants.TAG, "Input data is null!");
return mEntryListWrapper;
}
InputData inputData = getInputData(getContext(), mLoaderState);
generateListOfKeyrings(inputData);
try {
InputData inputData = getInputData(getContext(), mLoaderState);
generateListOfKeyrings(inputData);
} catch (FileNotFoundException e) {
OperationLog log = new OperationLog();
log.add(LogType.MSG_GET_FILE_NOT_FOUND, 0);
GetKeyResult getKeyResult = new GetKeyResult(GetKeyResult.RESULT_ERROR_FILE_NOT_FOUND, log);
mEntryListWrapper = new AsyncTaskResultWrapper<>(mData, getKeyResult);
}
return mEntryListWrapper;
}
@ -129,25 +141,22 @@ public class ImportKeysListLoader
OperationResult.OperationLog log = new OperationResult.OperationLog();
log.add(OperationResult.LogType.MSG_GET_NO_VALID_KEYS, 0);
GetKeyResult getKeyResult = new GetKeyResult(GetKeyResult.RESULT_ERROR_NO_VALID_KEYS, log);
mEntryListWrapper = new AsyncTaskResultWrapper<>
(mData, getKeyResult);
mEntryListWrapper = new AsyncTaskResultWrapper<>(mData, getKeyResult);
}
}
private static InputData getInputData(Context context, BytesLoaderState loaderState) {
InputData inputData = null;
@NonNull
private static InputData getInputData(Context context, BytesLoaderState loaderState) throws FileNotFoundException {
InputData inputData;
if (loaderState.mKeyBytes != null) {
inputData = new InputData(new ByteArrayInputStream(loaderState.mKeyBytes), loaderState.mKeyBytes.length);
} else if (loaderState.mDataUri != null) {
try {
InputStream inputStream = context.getContentResolver().openInputStream(loaderState.mDataUri);
long length = FileHelper.getFileSize(context, loaderState.mDataUri, -1);
InputStream inputStream = context.getContentResolver().openInputStream(loaderState.mDataUri);
long length = FileHelper.getFileSize(context, loaderState.mDataUri, -1);
inputData = new InputData(inputStream, length);
} catch (FileNotFoundException e) {
Log.e(Constants.TAG, "FileNotFoundException!", e);
return null;
}
inputData = new InputData(inputStream, length);
} else {
throw new AssertionError("Loader state must contain bytes or a data URI. This is a bug!");
}
return inputData;

View file

@ -1300,16 +1300,16 @@
<string name="msg_data_ok">Datenverarbeitung erfolgreich!</string>
<string name="msg_data_skip_mime">Überspringe MIME-Parsing</string>
<string name="msg_acc_saved">Benutzerkonto gespeichert</string>
<string name="msg_download_success">Erfolgreich heruntergeladen!</string>
<string name="msg_download_no_valid_keys">Keine gültigen Schlüssel in der Datei/Zwischenablage gefunden!</string>
<string name="msg_get_success">Erfolgreich heruntergeladen!</string>
<string name="msg_get_no_valid_keys">Keine gültigen Schlüssel in der Datei/Zwischenablage gefunden!</string>
<string name="msg_download_no_pgp_parts">NOCH ZU MACHEN: Plurale!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">ein Teil der geladenen Datei ist ein gültiges OpenPGP-Objekt, aber kein OpenPGP-Schlüssel</item>
<item quantity="other">Teile der geladenen Dateien sind gültige OpenPGP-Objekte, aber keine OpenPGP-Schlüssel</item>
</plurals>
<string name="msg_download_query_too_short">Die Suchanfrage ist zu kurz, bitte die Suchanfrage verfeinern!</string>
<string name="msg_download_too_many_responses">Schlüsselsuchanfrage lieferte zu viele Kandidaten, bitte die Suchanfrage verfeinern!</string>
<string name="msg_download_query_too_short_or_too_many_responses">Entweder keine oder zu viele Schlüssel wurden gefunden, bitte die Suchanfrage prä­zi­sie­ren!</string>
<string name="msg_get_query_too_short">Die Suchanfrage ist zu kurz, bitte die Suchanfrage verfeinern!</string>
<string name="msg_get_too_many_responses">Schlüsselsuchanfrage lieferte zu viele Kandidaten, bitte die Suchanfrage verfeinern!</string>
<string name="msg_get_query_too_short_or_too_many_responses">Entweder keine oder zu viele Schlüssel wurden gefunden, bitte die Suchanfrage prä­zi­sie­ren!</string>
<string name="msg_download_query_failed">Beim Suchen der Schlüssel ist ein Fehler aufgetreten.</string>
<!--Messages for Keybase Verification operation-->
<string name="msg_keybase_verification">Versuche Keybase.io-Verifikation für %s</string>

View file

@ -1227,16 +1227,16 @@
<string name="msg_data_mime_type">Content-Type: %s</string>
<string name="msg_data_ok">Los datos se procesaron exitosamente</string>
<string name="msg_acc_saved">Cuenta guardada</string>
<string name="msg_download_success">¡Descargado con éxito!</string>
<string name="msg_download_no_valid_keys">¡No se encontraron claves válidas en el fichero/portapapeles!</string>
<string name="msg_get_success">¡Descargado con éxito!</string>
<string name="msg_get_no_valid_keys">¡No se encontraron claves válidas en el fichero/portapapeles!</string>
<string name="msg_download_no_pgp_parts">PENDIENTE: ¡plurales!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">parte del archivo cargado es un objeto OpenPGP válido pero no una clave OpenPGP</item>
<item quantity="other">partes del archivo cargado son objetos OpenPGP válidos pero no claves OpenPGP</item>
</plurals>
<string name="msg_download_query_too_short">Solicitud de búsqueda demasiado corta. ¡Por favor refine su petición!</string>
<string name="msg_download_too_many_responses">La solicitud de búsqueda de clave devolvió demasiados candidatos. ¡Por favor refine su petición!</string>
<string name="msg_download_query_too_short_or_too_many_responses">O bien no hay claves o se han encontrado demasiadas. ¡Por favor mejore su petición!</string>
<string name="msg_get_query_too_short">Solicitud de búsqueda demasiado corta. ¡Por favor refine su petición!</string>
<string name="msg_get_too_many_responses">La solicitud de búsqueda de clave devolvió demasiados candidatos. ¡Por favor refine su petición!</string>
<string name="msg_get_query_too_short_or_too_many_responses">O bien no hay claves o se han encontrado demasiadas. ¡Por favor mejore su petición!</string>
<string name="msg_download_query_failed">Ocurrió un error al buscar claves.</string>
<!--Messages for Keybase Verification operation-->
<string name="msg_keybase_verification">Intentando la verificación con Keybase para %s</string>

View file

@ -1180,16 +1180,16 @@
<string name="msg_data_ok">Datu prozesatzea ongi burutu da</string>
<string name="msg_data_skip_mime">MIME azterketa jauzi egiten</string>
<string name="msg_acc_saved">Kontua gordeta</string>
<string name="msg_download_success">Ongi jeitsi da!</string>
<string name="msg_download_no_valid_keys">Ez da baliozko giltzarik aurkitu agiri/gakoan!</string>
<string name="msg_get_success">Ongi jeitsi da!</string>
<string name="msg_get_no_valid_keys">Ez da baliozko giltzarik aurkitu agiri/gakoan!</string>
<string name="msg_download_no_pgp_parts">TODO: anitzak!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">gertatutako agiriaren zati bat baliozko OpenPGP objetua da baina ez OpenPGP giltza</item>
<item quantity="other">gertatutako agiriaren zati batzuk baliozko OpenPGP objetuak dira baina ez OpenPGP giltzak</item>
</plurals>
<string name="msg_download_query_too_short">Bilaketa eskaera laburregia. Mesedez zehaztu zure eskaera!</string>
<string name="msg_download_too_many_responses">Giltza bilaketa eskaerak hautagai gehiegi itzuli ditu. Mesedez zehaztu zure eskaera!</string>
<string name="msg_download_query_too_short_or_too_many_responses">Ez dago giltzarik edo gehiegi aurkitu dira. Mesedez hobetu zure eskaera!</string>
<string name="msg_get_query_too_short">Bilaketa eskaera laburregia. Mesedez zehaztu zure eskaera!</string>
<string name="msg_get_too_many_responses">Giltza bilaketa eskaerak hautagai gehiegi itzuli ditu. Mesedez zehaztu zure eskaera!</string>
<string name="msg_get_query_too_short_or_too_many_responses">Ez dago giltzarik edo gehiegi aurkitu dira. Mesedez hobetu zure eskaera!</string>
<string name="msg_download_query_failed">Akats bat gertatu da giltzak bilatzerakoan.</string>
<!--Messages for Keybase Verification operation-->
<string name="msg_keybase_verification">Giltzabase egiaztapen saiakera %s-rentzat</string>

View file

@ -1300,16 +1300,16 @@
<string name="msg_data_ok">Traitement des données réussi</string>
<string name="msg_data_skip_mime">L\'analyse MIME est ignorée</string>
<string name="msg_acc_saved">Compte enregistré</string>
<string name="msg_download_success">Téléchargement réussi !</string>
<string name="msg_download_no_valid_keys">Aucune clef valide n\'a été trouvée dans le fichier/presse-papiers |</string>
<string name="msg_get_success">Téléchargement réussi !</string>
<string name="msg_get_no_valid_keys">Aucune clef valide n\'a été trouvée dans le fichier/presse-papiers |</string>
<string name="msg_download_no_pgp_parts">À FAIRE : les pluriels !</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">une partie du fichier chargé est un objet OpenPGP valide mais pas une clef OpenPGP</item>
<item quantity="other">certaines parties du fichier chargé sont des objets OpenPGP valides mais pas des clefs OpenPGP</item>
</plurals>
<string name="msg_download_query_too_short">La requête de recherche est trop courte. Veuillez raffiner votre requête !</string>
<string name="msg_download_too_many_responses">La requête de recherche de clef a retourné trop de candidats. Veuillez raffiner votre requête !</string>
<string name="msg_download_query_too_short_or_too_many_responses">Soit aucune clef ou trop de clefs ont été trouvées. Veuillez améliorer votre requête !</string>
<string name="msg_get_query_too_short">La requête de recherche est trop courte. Veuillez raffiner votre requête !</string>
<string name="msg_get_too_many_responses">La requête de recherche de clef a retourné trop de candidats. Veuillez raffiner votre requête !</string>
<string name="msg_get_query_too_short_or_too_many_responses">Soit aucune clef ou trop de clefs ont été trouvées. Veuillez améliorer votre requête !</string>
<string name="msg_download_query_failed">Une erreur est survenue lors de la recherche de clefs.</string>
<!--Messages for Keybase Verification operation-->
<string name="msg_keybase_verification">Tentative de vérification « keybase » pour %s</string>

View file

@ -1277,15 +1277,15 @@
<string name="msg_data_ok">データの処理に成功</string>
<string name="msg_data_skip_mime">MIME解析をスキップしています</string>
<string name="msg_acc_saved">アカウント保存</string>
<string name="msg_download_success">ダウンロードに成功しました!</string>
<string name="msg_download_no_valid_keys">ファイル/クリップボードにて正しい鍵が見付かりません!</string>
<string name="msg_get_success">ダウンロードに成功しました!</string>
<string name="msg_get_no_valid_keys">ファイル/クリップボードにて正しい鍵が見付かりません!</string>
<string name="msg_download_no_pgp_parts">TODO: 複数部分!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="other">読み込んだファイルのOpenPGPオブジェクト部分は正しいですが、OpenPGPの鍵ではありません</item>
</plurals>
<string name="msg_download_query_too_short">鍵検索のクエリが短かすぎます。クエリを精密化してください!</string>
<string name="msg_download_too_many_responses">鍵検索のクエリが沢山の候補を返しました。クエリを精密化してください!</string>
<string name="msg_download_query_too_short_or_too_many_responses">鍵がまったく無いか、多すぎる鍵が見付かりました。クエリを改善してください!</string>
<string name="msg_get_query_too_short">鍵検索のクエリが短かすぎます。クエリを精密化してください!</string>
<string name="msg_get_too_many_responses">鍵検索のクエリが沢山の候補を返しました。クエリを精密化してください!</string>
<string name="msg_get_query_too_short_or_too_many_responses">鍵がまったく無いか、多すぎる鍵が見付かりました。クエリを改善してください!</string>
<string name="msg_download_query_failed">鍵の検索時にエラーが発生しました。</string>
<!--Messages for Keybase Verification operation-->
<string name="msg_keybase_verification">%s のkeybase検証を試行中</string>

View file

@ -1040,16 +1040,16 @@
</plurals>
<!--Linked Identity verification-->
<string name="msg_acc_saved">Account opgeslaan</string>
<string name="msg_download_success">Succesvol gedownload!</string>
<string name="msg_download_no_valid_keys">Geen geldige sleutels gevonden in bestand/klembord!</string>
<string name="msg_get_success">Succesvol gedownload!</string>
<string name="msg_get_no_valid_keys">Geen geldige sleutels gevonden in bestand/klembord!</string>
<string name="msg_download_no_pgp_parts">TODO: meervouden!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">Deel van het geladen bestand is geldig OpenPGP object maar niet een OpenPGP sleutel</item>
<item quantity="other">Delen van het geladen bestand zijn geldige OpenPGP objecten maar niet OpenPGP sleutels</item>
</plurals>
<string name="msg_download_query_too_short">Zoekopdracht te kort. Gelieve je zoekopdracht te verfijnen!</string>
<string name="msg_download_too_many_responses">Zoekopdracht gaf te veel kandidaten. Gelieve je zoekopdracht te verfijnen!</string>
<string name="msg_download_query_too_short_or_too_many_responses">Geen of te veel sleutels werden gevonden. Gelieve je zoekopdracht te verfijnen!</string>
<string name="msg_get_query_too_short">Zoekopdracht te kort. Gelieve je zoekopdracht te verfijnen!</string>
<string name="msg_get_too_many_responses">Zoekopdracht gaf te veel kandidaten. Gelieve je zoekopdracht te verfijnen!</string>
<string name="msg_get_query_too_short_or_too_many_responses">Geen of te veel sleutels werden gevonden. Gelieve je zoekopdracht te verfijnen!</string>
<string name="msg_download_query_failed">Er trad een fout op bij het zoeken naar sleutels.</string>
<!--Messages for Keybase Verification operation-->
<string name="msg_keybase_verification">Keybaseverificatie voor %s wordt geprobeerd</string>

View file

@ -517,7 +517,7 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw
</plurals>
<!--Linked Identity verification-->
<string name="msg_acc_saved">Zapisano konto</string>
<string name="msg_download_success">Pobrano pomyślnie!</string>
<string name="msg_get_success">Pobrano pomyślnie!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">Część wczytanego pliku jest poprawnym obiektem OpenPGP, ale nie jest kluczem OpenPGP</item>
<item quantity="few">Część wczytanego pliku to poprawne obiekty OpenPGP, ale nie są kluczami OpenPGP</item>

View file

@ -862,7 +862,7 @@
<string name="msg_del_error_multi_secret">Секретные ключи можно удалять только по одному!</string>
<!--Linked Identity verification-->
<string name="msg_acc_saved">Аккаунт сохранен</string>
<string name="msg_download_success">Загрузка завершена!</string>
<string name="msg_get_success">Загрузка завершена!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">часть загруженного файла содержит данные OpenPGP, но это не ключ</item>
<item quantity="few">части загруженного файла содержат данные OpenPGP, но это не ключ</item>

View file

@ -1311,17 +1311,17 @@
<string name="msg_data_ok">Обрада података је успела</string>
<string name="msg_data_skip_mime">Прескачем рашчлањивање МИМЕ-а</string>
<string name="msg_acc_saved">Налог је сачуван</string>
<string name="msg_download_success">Успешно преузето!</string>
<string name="msg_download_no_valid_keys">Нема исправних кључева у фајлу/клипборду!</string>
<string name="msg_get_success">Успешно преузето!</string>
<string name="msg_get_no_valid_keys">Нема исправних кључева у фајлу/клипборду!</string>
<string name="msg_download_no_pgp_parts">УРАДИТИ: множине!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">део учитаног фајла је исправан ОпенПГП објекат али није ОпенПГП кључ</item>
<item quantity="few">дела учитаног фајла су исправни ОпенПГП објекти али нису ОпенПГП кључеви</item>
<item quantity="other">делови учитаног фајла су исправни ОпенПГП објекти али нису ОпенПГП кључеви</item>
</plurals>
<string name="msg_download_query_too_short">Упит за претрагу је прекратак. Прецизирајте упит!</string>
<string name="msg_download_too_many_responses">Претрага кључева је вратила превише кандидата. Прецизирајте упит!</string>
<string name="msg_download_query_too_short_or_too_many_responses">Или није нађен ниједан кључ или их је нађено превише. Побољшајте ваш упит!</string>
<string name="msg_get_query_too_short">Упит за претрагу је прекратак. Прецизирајте упит!</string>
<string name="msg_get_too_many_responses">Претрага кључева је вратила превише кандидата. Прецизирајте упит!</string>
<string name="msg_get_query_too_short_or_too_many_responses">Или није нађен ниједан кључ или их је нађено превише. Побољшајте ваш упит!</string>
<string name="msg_download_query_failed">Дошло је до грешке приликом претраге кључева.</string>
<!--Messages for Keybase Verification operation-->
<string name="msg_keybase_verification">Проверавам %s на keybase.io</string>

View file

@ -830,8 +830,8 @@
</plurals>
<!--Linked Identity verification-->
<string name="msg_acc_saved">Konto sparat</string>
<string name="msg_download_success">Hämtning lyckades!</string>
<string name="msg_download_no_valid_keys">Inga giltiga nycklar hittades i fil/urklipp!</string>
<string name="msg_get_success">Hämtning lyckades!</string>
<string name="msg_get_no_valid_keys">Inga giltiga nycklar hittades i fil/urklipp!</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">en del av den inlästa filen är ett giltigt OpenPGP-objekt men inte en OpenPGP-nyckel</item>
<item quantity="other">delar av den inlästa filen är giltiga OpenPGP-objekt men inte OpenPGP-nycklar</item>

View file

@ -387,7 +387,7 @@
<string name="msg_del_error_empty">Silinecek bir şey yok!</string>
<!--Linked Identity verification-->
<string name="msg_acc_saved">Hesap kaydedildi</string>
<string name="msg_download_success">Başarıyla indirildi!</string>
<string name="msg_get_success">Başarıyla indirildi!</string>
<!--Messages for Keybase Verification operation-->
<!--Messages for Mime parsing operation-->
<!--PassphraseCache-->

View file

@ -660,8 +660,8 @@
<string name="msg_del_error_multi_secret">私鑰只能分別刪除!</string>
<!--Linked Identity verification-->
<string name="msg_acc_saved">帳戶已儲存</string>
<string name="msg_download_success">下載成功!</string>
<string name="msg_download_no_valid_keys">在檔案/剪貼簿中找不到有效的金鑰!</string>
<string name="msg_get_success">下載成功!</string>
<string name="msg_get_no_valid_keys">在檔案/剪貼簿中找不到有效的金鑰!</string>
<string name="msg_download_query_failed">查詢金鑰的時候發生錯誤。</string>
<!--Messages for Keybase Verification operation-->
<!--Messages for Mime parsing operation-->

View file

@ -1410,16 +1410,12 @@
<string name="msg_acc_saved">"Account saved"</string>
<string name="msg_download_success">"Downloaded successfully!"</string>
<string name="msg_download_no_valid_keys">"No valid keys found in file/clipboard!"</string>
<string name="msg_download_no_pgp_parts">"TODO: plurals!"</string>
<plurals name="error_import_non_pgp_part">
<item quantity="one">"part of the loaded file is a valid OpenPGP object but not a OpenPGP key"</item>
<item quantity="other">"parts of the loaded file are valid OpenPGP objects but not OpenPGP keys"</item>
</plurals>
<string name="msg_download_query_too_short">"Search query too short. Please refine your query!"</string>
<string name="msg_download_too_many_responses">"Key search query returned too many candidates. Please refine your query!"</string>
<string name="msg_download_query_too_short_or_too_many_responses">"Either no keys or too many have been found. Please improve your query!"</string>
<string name="msg_get_success">"Downloaded successfully!"</string>
<string name="msg_get_file_not_found">"Input file not found!"</string>
<string name="msg_get_no_valid_keys">"No valid keys found in file/clipboard!"</string>
<string name="msg_get_too_many_responses">"Key search query returned too many candidates. Please refine your query!"</string>
<string name="msg_get_query_too_short">"Search query too short. Please refine your query!"</string>
<string name="msg_get_query_too_short_or_too_many_responses">"Either no keys or too many have been found. Please improve your query!"</string>
<string name="msg_download_query_failed">"An error occurred when searching for keys."</string>