diff options
16 files changed, 205 insertions, 160 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java index 4cb41708d..bafb086d0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java @@ -33,9 +33,9 @@ import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; import org.sufficientlysecure.keychain.provider.KeychainContract; import org.sufficientlysecure.keychain.provider.ProviderHelper; import org.sufficientlysecure.keychain.service.KeychainIntentService; -import org.sufficientlysecure.keychain.service.OperationResultParcel; import org.sufficientlysecure.keychain.service.OperationResultParcel.OperationLog; import org.sufficientlysecure.keychain.service.OperationResults.ImportResult; +import org.sufficientlysecure.keychain.service.OperationResults.SaveKeyringResult; import org.sufficientlysecure.keychain.util.Log; import java.io.ByteArrayOutputStream; @@ -152,9 +152,12 @@ public class PgpImportExport { } } - OperationResultParcel result = mProviderHelper.savePublicKeyRing(key); - - newKeys += 1; + SaveKeyringResult result = mProviderHelper.savePublicKeyRing(key); + if (result.updated()) { + newKeys += 1; + } else { + oldKeys += 1; + } } catch (PgpGeneralException e) { Log.e(Constants.TAG, "Encountered bad key on import!", e); @@ -166,23 +169,26 @@ public class PgpImportExport { } OperationLog log = mProviderHelper.getLog(); - int resultType; - // Any key imported - overall success - if (newKeys > 0 || oldKeys > 0) { + int resultType = 0; + // special return case: no new keys at all + if (badKeys == 0 && newKeys == 0 && oldKeys == 0) { + resultType = ImportResult.RESULT_FAIL_NOTHING; + } else { + if (newKeys > 0) { + resultType |= ImportResult.RESULT_OK_NEWKEYS; + } + if (oldKeys > 0) { + resultType |= ImportResult.RESULT_OK_UPDATED; + } if (badKeys > 0) { - resultType = ImportResult.RESULT_PARTIAL_WITH_ERRORS; - } else if (newKeys > 0 && oldKeys > 0) { - resultType = ImportResult.RESULT_OK_BOTHKEYS; - } else if (newKeys > 0) { - resultType = ImportResult.RESULT_OK_NEWKEYS; - } else { - resultType = ImportResult.RESULT_OK_UPDATED; + resultType |= ImportResult.RESULT_WITH_ERRORS; + if (newKeys == 0 && oldKeys == 0) { + resultType |= ImportResult.RESULT_ERROR; + } + } + if (log.containsWarnings()) { + resultType |= ImportResult.RESULT_WITH_WARNINGS; } - // No keys imported, overall failure - } else if (badKeys > 0) { - resultType = ImportResult.RESULT_FAIL_ERROR; - } else { - resultType = ImportResult.RESULT_FAIL_NOTHING; } return new ImportResult(resultType, log, newKeys, oldKeys, badKeys); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java index cbaf72270..00db473b3 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java @@ -49,6 +49,7 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.Keys; import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds; import org.sufficientlysecure.keychain.remote.AccountSettings; import org.sufficientlysecure.keychain.remote.AppSettings; +import org.sufficientlysecure.keychain.service.OperationResults.SaveKeyringResult; import org.sufficientlysecure.keychain.util.IterableIterator; import org.sufficientlysecure.keychain.util.Log; @@ -267,12 +268,15 @@ public class ProviderHelper { * Saves PGPPublicKeyRing with its keys and userIds in DB */ @SuppressWarnings("unchecked") - public OperationResultParcel savePublicKeyRing(UncachedKeyRing keyRing) { + public SaveKeyringResult savePublicKeyRing(UncachedKeyRing keyRing) { if (keyRing.isSecret()) { log(LogLevel.ERROR, LogType.MSG_IP_BAD_TYPE_SECRET); - return new OperationResultParcel(1, mLog); + return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); } + // start with ok result + int result = SaveKeyringResult.SAVED_PUBLIC; + long masterKeyId = keyRing.getMasterKeyId(); log(LogLevel.START, LogType.MSG_IP, new String[]{ PgpKeyHelper.convertKeyIdToHex(masterKeyId) }); @@ -296,6 +300,7 @@ public class ProviderHelper { try { mContentResolver.delete(KeyRingData.buildPublicKeyRingUri(Long.toString(masterKeyId)), null, null); log(LogLevel.DEBUG, LogType.MSG_IP_DELETE_OLD_OK); + result |= SaveKeyringResult.UPDATED; } catch (UnsupportedOperationException e) { Log.e(Constants.TAG, "Key could not be deleted! Maybe we are creating a new one!", e); log(LogLevel.DEBUG, LogType.MSG_IP_DELETE_OLD_FAIL); @@ -315,7 +320,7 @@ public class ProviderHelper { values.put(KeyRingData.KEY_RING_DATA, keyRing.getEncoded()); } catch (IOException e) { log(LogLevel.ERROR, LogType.MSG_IP_ENCODE_FAIL); - return new OperationResultParcel(1, mLog); + return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); } Uri uri = KeyRingData.buildPublicKeyRingUri(Long.toString(masterKeyId)); @@ -371,7 +376,7 @@ public class ProviderHelper { log(LogLevel.ERROR, LogType.MSG_IP_SUBKEY_FUTURE, new String[] { creation.toString() }); - return new OperationResultParcel(1, mLog); + return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); } Date expiryDate = key.getExpiryTime(); if (expiryDate != null) { @@ -436,7 +441,7 @@ public class ProviderHelper { if (!cert.verifySignature(masterKey, userId)) { // Bad self certification? That's kinda bad... log(LogLevel.ERROR, LogType.MSG_IP_UID_SELF_BAD); - return new OperationResultParcel(1, mLog); + return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); } // if we already have a cert.. @@ -526,17 +531,17 @@ public class ProviderHelper { log(LogLevel.ERROR, LogType.MSG_IP_FAIL_IO_EXC); Log.e(Constants.TAG, "IOException during import", e); mIndent -= 1; - return new OperationResultParcel(1, mLog); + return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); } catch (RemoteException e) { log(LogLevel.ERROR, LogType.MSG_IP_FAIL_REMOTE_EX); Log.e(Constants.TAG, "RemoteException during import", e); mIndent -= 1; - return new OperationResultParcel(1, mLog); + return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); } catch (OperationApplicationException e) { log(LogLevel.ERROR, LogType.MSG_IP_FAIL_OP_EX); Log.e(Constants.TAG, "OperationApplicationException during import", e); mIndent -= 1; - return new OperationResultParcel(1, mLog); + return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); } // Save the saved keyring (if any) @@ -544,12 +549,13 @@ public class ProviderHelper { log(LogLevel.DEBUG, LogType.MSG_IP_REINSERT_SECRET); mIndent += 1; saveSecretKeyRing(secretRing); + result |= SaveKeyringResult.SAVED_SECRET; mIndent -= 1; } log(LogLevel.OK, LogType.MSG_IP_SUCCESS); mIndent -= 1; - return new OperationResultParcel(0, mLog); + return new SaveKeyringResult(result, mLog); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java index 85b7c456f..8a3b06f67 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java @@ -18,12 +18,13 @@ import java.util.ArrayList; * */ public class OperationResultParcel implements Parcelable { - /** Holds the overall result, the number specifying varying degrees of success. - * Values smaller than 100 are considered an overall success. */ + /** Holds the overall result, the number specifying varying degrees of success. The first bit + * is 0 on overall success, 1 on overall failure. All other bits may be used for more specific + * conditions. */ final int mResult; public static final int RESULT_OK = 0; - public static final int RESULT_ERROR = 100; + public static final int RESULT_ERROR = 1; /// A list of log entries tied to the operation result. final OperationLog mLog; @@ -44,7 +45,7 @@ public class OperationResultParcel implements Parcelable { } public boolean isSuccessful() { - return mResult < 100; + return (mResult & 1) == 1; } public OperationLog getLog() { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java index bee6917be..342d07953 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java @@ -8,20 +8,31 @@ public abstract class OperationResults { public final int mNewKeys, mUpdatedKeys, mBadKeys; - // Operation ok, at least one new key (no warnings) - public static final int RESULT_OK_NEWKEYS = 1; - // Operation ok, at least one new and one updated key (no warnings) - public static final int RESULT_OK_BOTHKEYS = 2; - // Operation ok, no new keys but upated ones (no warnings) - public static final int RESULT_OK_UPDATED = 3; + // At least one new key + public static final int RESULT_OK_NEWKEYS = 2; + // At least one updated key + public static final int RESULT_OK_UPDATED = 4; + // At least one key failed (might still be an overall success) + public static final int RESULT_WITH_ERRORS = 8; + // There are warnings in the log + public static final int RESULT_WITH_WARNINGS = 16; - // Operation partially ok, but at least one key failed! - public static final int RESULT_PARTIAL_WITH_ERRORS = 50; + // No keys to import... + public static final int RESULT_FAIL_NOTHING = 32 +1; - // Operation failed, errors thrown and no new keys imported - public static final int RESULT_FAIL_ERROR = 100; - // Operation failed, no keys to import... - public static final int RESULT_FAIL_NOTHING = 101; + public boolean isOkBoth() { + return (mResult & (RESULT_OK_NEWKEYS | RESULT_OK_UPDATED)) + == (RESULT_OK_NEWKEYS | RESULT_OK_UPDATED); + } + public boolean isOkNew() { + return (mResult & RESULT_OK_NEWKEYS) > 0; + } + public boolean isOkUpdated() { + return (mResult & RESULT_OK_UPDATED) > 0; + } + public boolean isFailNothing() { + return (mResult & RESULT_FAIL_NOTHING) > 0; + } public ImportResult(Parcel source) { super(source); @@ -58,4 +69,24 @@ public abstract class OperationResults { } + public static class SaveKeyringResult extends OperationResultParcel { + + public SaveKeyringResult(int result, OperationLog log) { + super(result, log); + } + + // Some old key was updated + public static final int UPDATED = 2; + + // Public key was saved + public static final int SAVED_PUBLIC = 8; + // Secret key was saved (not exclusive with public!) + public static final int SAVED_SECRET = 16; + + public boolean updated() { + return (mResult & UPDATED) == UPDATED; + } + + } + } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index 61d7e7949..3ff4f9887 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -378,55 +378,54 @@ public class ImportKeysActivity extends ActionBarActivity implements ActionBar.O final ImportResult result = returnData.<ImportResult>getParcelable(KeychainIntentService.RESULT); - String str = ""; - boolean hasWarnings = result.getLog().containsWarnings(); - int duration = 0, color = hasWarnings ? Style.ORANGE : Style.GREEN; - String withWarnings = hasWarnings - ? getResources().getString(R.string.with_warnings) : ""; - - switch(result.getResult()) { - case ImportResult.RESULT_OK_NEWKEYS: - if (!hasWarnings) { - duration = SuperToast.Duration.LONG; - } - str = getResources().getQuantityString( - R.plurals.keys_added, result.mNewKeys, result.mNewKeys, withWarnings); - break; + int resultType = result.getResult(); - case ImportResult.RESULT_OK_UPDATED: - if (!hasWarnings) { - duration = SuperToast.Duration.LONG; - } - str = getResources().getQuantityString( - R.plurals.keys_updated, result.mNewKeys, result.mNewKeys, withWarnings); - break; + String str; + int duration, color; - case ImportResult.RESULT_OK_BOTHKEYS: - if (!hasWarnings) { - duration = SuperToast.Duration.LONG; - } - str = getResources().getQuantityString( - R.plurals.keys_added_and_updated_1, result.mNewKeys, result.mNewKeys); - str += getResources().getQuantityString( - R.plurals.keys_added_and_updated_2, result.mUpdatedKeys, result.mUpdatedKeys, withWarnings); - break; + // Not an overall failure + if ((resultType & ImportResult.RESULT_ERROR) == 0) { + String withWarnings; - case ImportResult.RESULT_PARTIAL_WITH_ERRORS: - str = "partial with errors"; + // Any warnings? + if ((resultType & ImportResult.RESULT_WITH_WARNINGS) > 0) { + duration = 0; color = Style.ORANGE; - break; - - case ImportResult.RESULT_FAIL_ERROR: - str = "fail error"; - color = Style.RED; - break; - - case ImportResult.RESULT_FAIL_NOTHING: - str = getString(R.string.no_keys_added_or_updated); + withWarnings = getResources().getString(R.string.import_with_warnings); + } else { + duration = SuperToast.Duration.LONG; + color = Style.GREEN; + withWarnings = ""; + } + + // New and updated keys + if (result.isOkBoth()) { + str = getResources().getQuantityString( + R.plurals.import_keys_added_and_updated_1, result.mNewKeys, result.mNewKeys); + str += getResources().getQuantityString( + R.plurals.import_keys_added_and_updated_2, result.mUpdatedKeys, result.mUpdatedKeys, withWarnings); + } else if (result.isOkNew()) { + str = getResources().getQuantityString( + R.plurals.import_keys_added, result.mNewKeys, result.mNewKeys, withWarnings); + } else if (result.isOkUpdated()) { + str = getResources().getQuantityString( + R.plurals.import_keys_updated, result.mUpdatedKeys, result.mUpdatedKeys, withWarnings); + } else { + duration = 0; color = Style.RED; - break; - + str = "internal error"; + } + + } else { + duration = 0; + color = Style.RED; + if (result.isFailNothing()) { + str = getString(R.string.import_error_nothing); + } else { + str = getString(R.string.import_error); + } } + SuperCardToast toast = new SuperCardToast(ImportKeysActivity.this, SuperToast.Type.BUTTON, Style.getStyle(color, SuperToast.Animations.POPUP)); toast.setText(str); @@ -434,9 +433,9 @@ public class ImportKeysActivity extends ActionBarActivity implements ActionBar.O toast.setIndeterminate(duration == 0); toast.setSwipeToDismiss(true); toast.setButtonIcon(R.drawable.ic_action_view_as_list, - getResources().getString(R.string.view_log)); - toast.setButtonTextColor(R.color.emphasis_dark); - toast.setTextColor(R.color.emphasis_dark); + getResources().getString(R.string.import_view_log)); + toast.setButtonTextColor(getResources().getColor(R.color.black)); + toast.setTextColor(getResources().getColor(R.color.black)); toast.setOnClickWrapper(new OnClickWrapper("supercardtoast", new SuperToast.OnClickListener() { @Override diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml index e2dfa196b..3485846ad 100644 --- a/OpenKeychain/src/main/res/values-de/strings.xml +++ b/OpenKeychain/src/main/res/values-de/strings.xml @@ -206,23 +206,23 @@ <string name="ask_empty_id_ok">Es wurde eine leere Identität hinzugefügt. Wirklich fortfahren?</string> <string name="public_key_deletetion_confirmation">Soll der öffentliche Schlüssel \'%s\' wirklich gelöscht werden?\nDies kann nicht rückgängig gemacht werden! </string> <string name="also_export_secret_keys">Private Schlüssel auch exportieren</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">%d Schlüssel erfolgreich hinzugefügt</item> <item quantity="other">%d Schlüssel erfolgreich hinzugefügt</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">und %d Schlüssel erfolgreich aktualisiert.</item> <item quantity="other">und %d Schlüssel erfolgreich aktualisiert.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">%d Schlüssel erfolgreich hinzugefügt.</item> <item quantity="other">%d Schlüssel erfolgreich hinzugefügt.</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">%d Schlüssel erfolgreich aktualisiert.</item> <item quantity="other">%d Schlüssel erfolgreich aktualisiert.</item> </plurals> - <string name="no_keys_added_or_updated">Keine Schlüssel hinzugefügt oder aktualisiert.</string> + <string name="import_error_nothing">Keine Schlüssel hinzugefügt oder aktualisiert.</string> <string name="key_exported">1 Schlüssel erfolgreich exportiert.</string> <string name="keys_exported">%d Schlüssel erfolgreich exportiert.</string> <string name="no_keys_exported">Keine Schlüssel exportiert.</string> diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml index 45d3d565b..f1e4e347d 100644 --- a/OpenKeychain/src/main/res/values-es/strings.xml +++ b/OpenKeychain/src/main/res/values-es/strings.xml @@ -206,23 +206,23 @@ <string name="ask_empty_id_ok">Ha añadido una identidad vacía, ¿está seguro de que quiere continuar?</string> <string name="public_key_deletetion_confirmation">¿De veras quiere borrar la clave pública \'%s\'?\n¡No puede deshacer esto!</string> <string name="also_export_secret_keys">¿Exportar también las claves secretas?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">%d clave añadida satisfactoriamente</item> <item quantity="other">%d claves añadidas satisfactoriamente</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">y actualizada %d clave.</item> <item quantity="other">y actualizadas %d claves.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">%d clave añadida satisfactoriamente.</item> <item quantity="other">%d claves añadidas satisfactoriamente.</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">%d clave actualizada satisfactoriamente.</item> <item quantity="other">%d claves actualizadas satisfactoriamente.</item> </plurals> - <string name="no_keys_added_or_updated">No se han añadido o actualizado claves.</string> + <string name="import_error_nothing">No se han añadido o actualizado claves.</string> <string name="key_exported">Se ha exportado 1 clave satisfactoriamente.</string> <string name="keys_exported">%d claves exportadas satisfactoriamente.</string> <string name="no_keys_exported">No se han exportado claves.</string> diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml index f49127b6f..55a85fb9b 100644 --- a/OpenKeychain/src/main/res/values-fr/strings.xml +++ b/OpenKeychain/src/main/res/values-fr/strings.xml @@ -206,23 +206,23 @@ <string name="ask_empty_id_ok">Vous avez ajouté une identité vide, êtes-vous certain de vouloir continuer ?</string> <string name="public_key_deletetion_confirmation">Voulez-vous vraiment supprimer la clef publique %s ?\nCeci est irréversible !</string> <string name="also_export_secret_keys">Exporter aussi les clefs secrètes ?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">%d clef ajoutée avec succès</item> <item quantity="other">%d clefs ajoutées avec succès</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">et %d clef mise à jour.</item> <item quantity="other">et %d clefs mises à jour.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">%d clef ajoutée avec succès.</item> <item quantity="other">%d clefs ajoutées avec succès.</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">%d clef mise à jour avec succès.</item> <item quantity="other">%d clefs mises à jour avec succès.</item> </plurals> - <string name="no_keys_added_or_updated">Aucune clef ajoutée ou mise à jour.</string> + <string name="import_error_nothing">Aucune clef ajoutée ou mise à jour.</string> <string name="key_exported">1 clef exportée avec succès.</string> <string name="keys_exported">%d clefs exportées avec succès.</string> <string name="no_keys_exported">Aucune clef exportée.</string> diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml index eae4dd4af..300627fa7 100644 --- a/OpenKeychain/src/main/res/values-it/strings.xml +++ b/OpenKeychain/src/main/res/values-it/strings.xml @@ -206,23 +206,23 @@ <string name="ask_empty_id_ok">Hai aggiunto una identità vuota, sei sicuro di voler continuare?</string> <string name="public_key_deletetion_confirmation">Vuoi veramente eliminare la chiave pubblica \'%s\'?\nNon potrai annullare!</string> <string name="also_export_secret_keys">Esportare anche le chiavi segrete?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">%d chiave aggiunta correttamente</item> <item quantity="other">%d chiavi aggiunte correttamente</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">e %d chiave aggiornata.</item> <item quantity="other">e %d chiavi aggiornate.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">%d chiave aggiunta correttamente.</item> <item quantity="other">%d chiavi aggiunte correttamente.</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">%d chiave aggiornata correttamente.</item> <item quantity="other">%d chiavi aggiornate correttamente.</item> </plurals> - <string name="no_keys_added_or_updated">Nessuna chiave aggiunta o aggiornata.</string> + <string name="import_error_nothing">Nessuna chiave aggiunta o aggiornata.</string> <string name="key_exported">1 chiave esportata correttamente.</string> <string name="keys_exported">%d chiavi esportate correttamente.</string> <string name="no_keys_exported">Nessuna chiave esportata.</string> diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml index c40e9dbdc..63fef2af2 100644 --- a/OpenKeychain/src/main/res/values-ja/strings.xml +++ b/OpenKeychain/src/main/res/values-ja/strings.xml @@ -203,19 +203,19 @@ <string name="ask_empty_id_ok">あなたは空のユーザIDを追加しました、このまま続けますか?</string> <string name="public_key_deletetion_confirmation">公開鍵\'%s\'を本当に削除してもよいですか?\nこれは元に戻せません!</string> <string name="also_export_secret_keys">秘密鍵もエクスポートしますか?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="other">%d の鍵を追加しました</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="other">そして %d の鍵をアップロードしました。</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="other">%d の鍵を追加しました。</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="other">%d の鍵をアップロードしました。</item> </plurals> - <string name="no_keys_added_or_updated">鍵の追加もしくは更新はありませんでした。</string> + <string name="import_error_nothing">鍵の追加もしくは更新はありませんでした。</string> <string name="key_exported">1つの鍵をエクスポートしました。</string> <string name="keys_exported">%d の鍵をエクスポートしました。</string> <string name="no_keys_exported">鍵をエクスポートしていません。</string> diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml index d35d83517..f75d7a166 100644 --- a/OpenKeychain/src/main/res/values-nl/strings.xml +++ b/OpenKeychain/src/main/res/values-nl/strings.xml @@ -206,23 +206,23 @@ <string name="ask_empty_id_ok">U heeft een lege identiteit toegevoegd, weet u zeker dat u wilt doorgaan?</string> <string name="public_key_deletetion_confirmation">Wilt u echt de publieke sleutel \'%s\' verwijderen?\nDit kunt u niet ongedaan maken!</string> <string name="also_export_secret_keys">Ook geheime sleutels exporteren?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">Succesvol %d sleutel toegevoegd</item> <item quantity="other">Succesvol %d sleutels toegevoegd</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">en %d sleutel bijgewerkt.</item> <item quantity="other">en %d sleutels bijgewerkt.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">Succesvol %d sleutel toegevoegd.</item> <item quantity="other">Succesvol %d sleutels toegevoegd.</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">Succesvol %d sleutel bijgewerkt.</item> <item quantity="other">Succesvol %d sleutels bijgewerkt.</item> </plurals> - <string name="no_keys_added_or_updated">Geen sleutels toegevoegd of bijgewerkt.</string> + <string name="import_error_nothing">Geen sleutels toegevoegd of bijgewerkt.</string> <string name="key_exported">1 sleutel succesvol geëxporteerd.</string> <string name="keys_exported">Succesvol %d sleutels geëxporteerd.</string> <string name="no_keys_exported">Geen sleutels geëxporteerd.</string> diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml index d1b7de393..851e77c3a 100644 --- a/OpenKeychain/src/main/res/values-pl/strings.xml +++ b/OpenKeychain/src/main/res/values-pl/strings.xml @@ -191,27 +191,27 @@ <string name="ask_save_changed_key">Zostały dokonane zmiany w pęku kluczy, czy chcesz je zachować?</string> <string name="public_key_deletetion_confirmation">Czy na pewno chcesz usunąć klucz publiczny \'%s\'?\nNie można cofnąć tej operacji!</string> <string name="also_export_secret_keys">Czy wyeksportować również klucze prywatne?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">Pomyślnie dodano %d klucz</item> <item quantity="few">Pomyślnie dodano %d kluczy</item> <item quantity="other">Pomyślnie dodano %d kluczy</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">i zaktualizowano %d klucz.</item> <item quantity="few">i zaktualizowano %d kluczy.</item> <item quantity="other">i zaktualizowano %d kluczy.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">Pomyślnie dodano %d klucz.</item> <item quantity="few">Pomyślnie dodano %d kluczy.</item> <item quantity="other">Pomyślnie dodano %d kluczy.</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">Pomyślnie zaktualizowano %d klucz.</item> <item quantity="few">Pomyślnie zaktualizowano %d kluczy.</item> <item quantity="other">Pomyślnie zaktualizowano %d kluczy.</item> </plurals> - <string name="no_keys_added_or_updated">Nie dodano ani zaktualizowano żadnych kluczy.</string> + <string name="import_error_nothing">Nie dodano ani zaktualizowano żadnych kluczy.</string> <string name="key_exported">Pomyślnie wyeksportowano 1 klucz.</string> <string name="keys_exported">Pomyślnie wyeksportowano %d kluczy.</string> <string name="no_keys_exported">Nie wyeksportowano żadnych kluczy.</string> diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml index 0becea0bc..b108324d1 100644 --- a/OpenKeychain/src/main/res/values-ru/strings.xml +++ b/OpenKeychain/src/main/res/values-ru/strings.xml @@ -206,27 +206,27 @@ <string name="ask_empty_id_ok">Вы добавили пустой идентификатор. Вы уверены, что хотите продолжить?</string> <string name="public_key_deletetion_confirmation">Вы правда хотите удалить публичный ключ \'%s\'?\nЭто действие нельзя отменить!</string> <string name="also_export_secret_keys">Экспортировать секретные ключи?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">Успешно добавлено %d ключ</item> <item quantity="few">Успешно добавлено %d ключей</item> <item quantity="other">Успешно добавлено %d ключей</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">и обновлен %d ключ.</item> <item quantity="few">и обновлено %d ключей.</item> <item quantity="other">и обновлено %d ключей.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">Добавлен %d ключ</item> <item quantity="few">Добавлено %d ключей</item> <item quantity="other">Добавлено %d ключей</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">Обновлен %d ключ.</item> <item quantity="few">Обновлено %d ключей.</item> <item quantity="other">Обновлено %d ключей.</item> </plurals> - <string name="no_keys_added_or_updated">Нет обновленных или добавленных ключей</string> + <string name="import_error_nothing">Нет обновленных или добавленных ключей</string> <string name="key_exported">Успешный экспорт 1 ключа.</string> <string name="keys_exported">Экспортировано %d ключей.</string> <string name="no_keys_exported">Ключи не были экспортированы.</string> diff --git a/OpenKeychain/src/main/res/values-sl/strings.xml b/OpenKeychain/src/main/res/values-sl/strings.xml index 8b12cdebe..0fe44725b 100644 --- a/OpenKeychain/src/main/res/values-sl/strings.xml +++ b/OpenKeychain/src/main/res/values-sl/strings.xml @@ -212,31 +212,31 @@ <string name="ask_empty_id_ok">Dodali ste prazno identiteto, ali res želite nadaljevati?</string> <string name="public_key_deletetion_confirmation">Ali res želite izbrisati javni ključ \'%s\'?\nTega koraka ne boste mogli preklicati!</string> <string name="also_export_secret_keys">Želite izvoziti tudi zasebne ključe?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">Uspešno dodan %d ključ</item> <item quantity="two">Uspešno dodana %d ključa</item> <item quantity="few">Uspešno dodani %d ključi</item> <item quantity="other">Uspešno dodanih %d ključev</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">in posodbljen %d.</item> <item quantity="two">in posodobljena %d.</item> <item quantity="few">in posodobljeni %d.</item> <item quantity="other">in posodobljenih %d.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">Uspešno dodan %d ključ.</item> <item quantity="two">Uspešno dodana %d ključa.</item> <item quantity="few">Uspešno dodani %d ključi.</item> <item quantity="other">Uspešno dodanih %d ključev.</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">Uspešno posodobljen %d ključ.</item> <item quantity="two">Uspešno posodobljena %d ključa.</item> <item quantity="few">Uspešno posodobljeni %d ključi.</item> <item quantity="other">Uspešno posodobljenih %d ključev.</item> </plurals> - <string name="no_keys_added_or_updated">Noben ključ ni bil dodan ali posodobljen.</string> + <string name="import_error_nothing">Noben ključ ni bil dodan ali posodobljen.</string> <string name="key_exported">Uspešno izvožen 1 ključ.</string> <string name="keys_exported">Uspešno izvoženih ključev: %d</string> <string name="no_keys_exported">Noben ključ ni bil izvožen.</string> diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml index b27b6ffd3..2951d13f8 100644 --- a/OpenKeychain/src/main/res/values-uk/strings.xml +++ b/OpenKeychain/src/main/res/values-uk/strings.xml @@ -209,27 +209,27 @@ <string name="ask_empty_id_ok">Ви вже додали порожню сутність. Ви справді хочете продовжити?</string> <string name="public_key_deletetion_confirmation">Ви справді хочете вилучити відкритий ключ \'%s\'?\nВи не зможете це відмінити!</string> <string name="also_export_secret_keys">Також експортувати секретні ключі?</string> - <plurals name="keys_added_and_updated_1"> + <plurals name="import_keys_added_and_updated_1"> <item quantity="one">Успішно додано %d ключ</item> <item quantity="few">Успішно додано %d ключі</item> <item quantity="other">Успішно додано %d ключів</item> </plurals> - <plurals name="keys_added_and_updated_2"> + <plurals name="import_keys_added_and_updated_2"> <item quantity="one">і оновлено %d ключ.</item> <item quantity="few">і оновлено %d ключі.</item> <item quantity="other">і оновлено %d ключів.</item> </plurals> - <plurals name="keys_added"> + <plurals name="import_keys_added"> <item quantity="one">Успішно додано %d ключ.</item> <item quantity="few">Успішно додано %d ключі.</item> <item quantity="other">Успішно додано %d ключів.</item> </plurals> - <plurals name="keys_updated"> + <plurals name="import_keys_updated"> <item quantity="one">Успішно оновлено %d ключ.</item> <item quantity="few">Успішно оновлено %d ключі.</item> <item quantity="other">Успішно оновлено %d ключів.</item> </plurals> - <string name="no_keys_added_or_updated">Жодного ключа не додано та не оновлено.</string> + <string name="import_error_nothing">Жодного ключа не додано та не оновлено.</string> <string name="key_exported">Успішно експортовано 1 ключ.</string> <string name="keys_exported">Успішно експортовано %d ключів.</string> <string name="no_keys_exported">Жодного ключа не експортовано.</string> diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index b60e281ee..8ef93551b 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -221,25 +221,6 @@ <string name="public_key_deletetion_confirmation">Do you really want to delete the public key \'%s\'?\nYou can\'t undo this!</string> <string name="also_export_secret_keys">Also export secret keys?</string> - <plurals name="keys_added_and_updated_1"> - <item quantity="one">Successfully added %1$d key</item> - <item quantity="other">Successfully added %1$d keys</item> - </plurals> - <plurals name="keys_added_and_updated_2"> - <item quantity="one"> and updated %1$d key%2$s.</item> - <item quantity="other"> and updated %1$d keys%2$s.</item> - </plurals> - <plurals name="keys_added"> - <item quantity="one">Successfully added %1$d key%2$s.</item> - <item quantity="other">Successfully added %1$d keys%2$s.</item> - </plurals> - <plurals name="keys_updated"> - <item quantity="one">Successfully updated %1$d key%2$s.</item> - <item quantity="other">Successfully updated %1$d keys%2$s.</item> - </plurals> - - <string name="no_keys_added_or_updated">No keys added or updated.</string> - <string name="with_warnings">, with warnings</string> <string name="key_exported">Successfully exported 1 key.</string> <string name="keys_exported">Successfully exported %d keys.</string> <string name="no_keys_exported">No keys exported.</string> @@ -408,6 +389,28 @@ <string name="import_clipboard_button">Get key from clipboard</string> <string name="import_keybase_button">Get key from Keybase.io</string> + <!-- Import result toast --> + <plurals name="import_keys_added_and_updated_1"> + <item quantity="one">Successfully added %1$d key</item> + <item quantity="other">Successfully added %1$d keys</item> + </plurals> + <plurals name="import_keys_added_and_updated_2"> + <item quantity="one"> and updated %1$d key%2$s.</item> + <item quantity="other"> and updated %1$d keys%2$s.</item> + </plurals> + <plurals name="import_keys_added"> + <item quantity="one">Successfully added %1$d key%2$s.</item> + <item quantity="other">Successfully added %1$d keys%2$s.</item> + </plurals> + <plurals name="import_keys_updated"> + <item quantity="one">Successfully updated %1$d key%2$s.</item> + <item quantity="other">Successfully updated %1$d keys%2$s.</item> + </plurals> + <string name="import_view_log">View Log</string> + <string name="import_error_nothing">Nothing to import.</string> + <string name="import_error">Error importing keys!</string> + <string name="import_with_warnings">, with warnings</string> + <!-- Intent labels --> <string name="intent_decrypt_file">Decrypt File with OpenKeychain</string> <string name="intent_import_key">Import Key with OpenKeychain</string> @@ -579,6 +582,5 @@ <string name="can_sign_not">cannot sign</string> <string name="error_encoding">Encoding error</string> <string name="error_no_encrypt_subkey">No encryption subkey available!</string> - <string name="view_log">View Log</string> </resources> |