aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-03-15 20:02:57 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2015-03-15 20:02:57 +0100
commit4afd6b881edfd0bc404734a4e8959a7a0fa785a7 (patch)
tree63a051fb595d168f8ddbfd76a51bb2319889d40b
parentba7d8a58673d55660bc7faf68970229f17458514 (diff)
parentdb39b779c984a758e13adc16837893509f3b364f (diff)
downloadopen-keychain-4afd6b881edfd0bc404734a4e8959a7a0fa785a7.tar.gz
open-keychain-4afd6b881edfd0bc404734a4e8959a7a0fa785a7.tar.bz2
open-keychain-4afd6b881edfd0bc404734a4e8959a7a0fa785a7.zip
Merge branch 'development' into linked-identities
Conflicts: OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java
-rw-r--r--.gitmodules11
-rw-r--r--CHANGELOG13
-rw-r--r--OpenKeychain-Test/build.gradle2
-rw-r--r--OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperationTest.java6
-rw-r--r--OpenKeychain/src/main/AndroidManifest.xml11
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java5
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java17
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java21
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java17
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java17
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/PromoteKeyOperation.java17
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/SignEncryptOperation.java20
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedPublicKey.java31
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedSecretKey.java15
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpConstants.java10
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java1
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java10
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java108
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/AccountSettings.java38
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java168
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java13
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java72
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsAllowedKeysListFragment.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/SelectSignKeyIdActivity.java145
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/SelectSignKeyIdListFragment.java220
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java93
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java35
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ConsolidateDialogActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java13
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java5
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java39
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java13
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java43
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java25
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java32
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java8
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java106
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateFinalFragment.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java27
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java49
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java49
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java296
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ExportHelper.java2
-rw-r--r--OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml75
-rw-r--r--OpenKeychain/src/main/res/layout/api_select_sign_key_activity.xml70
-rw-r--r--OpenKeychain/src/main/res/layout/keyspinner_item.xml4
-rw-r--r--OpenKeychain/src/main/res/layout/select_key_item.xml2
-rw-r--r--OpenKeychain/src/main/res/raw-bg/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-bg/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-bg/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-cs/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-cs/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-cs/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-de/help_about.html26
-rw-r--r--OpenKeychain/src/main/res/raw-de/help_changelog.html178
-rw-r--r--OpenKeychain/src/main/res/raw-de/help_start.html17
-rw-r--r--OpenKeychain/src/main/res/raw-de/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-es/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-es/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-es/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-et/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-et/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-et/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-eu/help_about.html36
-rw-r--r--OpenKeychain/src/main/res/raw-eu/help_start.html19
-rw-r--r--OpenKeychain/src/main/res/raw-eu/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-fi/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-fi/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-fi/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-fr/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-fr/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-fr/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-is/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-is/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-is/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-it/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-it/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-it/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-ja/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-ja/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-ja/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-nl/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-nl/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-nl/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-pl/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-pl/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-pl/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-pt/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-pt/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-pt/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-ro/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-ro/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-ro/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-ru/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-ru/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-ru/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-sl/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-sl/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-sl/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-sr/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-sr/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-sr/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-sv/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-sv/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-sv/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-tr/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-tr/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-tr/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-uk/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-uk/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-uk/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-zh-rTW/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-zh-rTW/help_start.html11
-rw-r--r--OpenKeychain/src/main/res/raw-zh-rTW/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-zh/help_about.html20
-rw-r--r--OpenKeychain/src/main/res/raw-zh/help_changelog.html4
-rw-r--r--OpenKeychain/src/main/res/raw-zh/help_start.html13
-rw-r--r--OpenKeychain/src/main/res/raw-zh/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw/help_changelog.html15
-rw-r--r--OpenKeychain/src/main/res/raw/nfc_beam_share.html15
-rw-r--r--OpenKeychain/src/main/res/values-bg/strings.xml1
-rw-r--r--OpenKeychain/src/main/res/values-cs/strings.xml41
-rw-r--r--OpenKeychain/src/main/res/values-de/strings.xml265
-rw-r--r--OpenKeychain/src/main/res/values-es/strings.xml128
-rw-r--r--OpenKeychain/src/main/res/values-et/strings.xml12
-rw-r--r--OpenKeychain/src/main/res/values-eu/strings.xml315
-rw-r--r--OpenKeychain/src/main/res/values-fi/strings.xml28
-rw-r--r--OpenKeychain/src/main/res/values-fr/strings.xml153
-rw-r--r--OpenKeychain/src/main/res/values-is/strings.xml1
-rw-r--r--OpenKeychain/src/main/res/values-it/strings.xml47
-rw-r--r--OpenKeychain/src/main/res/values-ja/strings.xml121
-rw-r--r--OpenKeychain/src/main/res/values-nl/strings.xml108
-rw-r--r--OpenKeychain/src/main/res/values-pl/strings.xml43
-rw-r--r--OpenKeychain/src/main/res/values-pt/strings.xml1
-rw-r--r--OpenKeychain/src/main/res/values-ro/strings.xml1
-rw-r--r--OpenKeychain/src/main/res/values-ru/strings.xml93
-rw-r--r--OpenKeychain/src/main/res/values-sl/strings.xml47
-rw-r--r--OpenKeychain/src/main/res/values-sr/strings.xml8
-rw-r--r--OpenKeychain/src/main/res/values-sv/strings.xml44
-rw-r--r--OpenKeychain/src/main/res/values-tr/strings.xml41
-rw-r--r--OpenKeychain/src/main/res/values-uk/strings.xml42
-rw-r--r--OpenKeychain/src/main/res/values-zh-rTW/strings.xml34
-rw-r--r--OpenKeychain/src/main/res/values-zh/strings.xml25
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml13
m---------extern/openpgp-api-lib0
162 files changed, 2884 insertions, 1977 deletions
diff --git a/.gitmodules b/.gitmodules
index 1577e4f83..4c1a9e403 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,29 +1,36 @@
[submodule "extern/StickyListHeaders"]
path = extern/StickyListHeaders
url = https://github.com/open-keychain/StickyListHeaders.git
+ ignore = dirty
[submodule "extern/spongycastle"]
path = extern/spongycastle
url = https://github.com/open-keychain/spongycastle.git
+ ignore = dirty
[submodule "extern/html-textview"]
path = extern/html-textview
url = https://github.com/open-keychain/html-textview.git
+ ignore = dirty
[submodule "extern/openpgp-api-lib"]
path = extern/openpgp-api-lib
url = https://github.com/open-keychain/openpgp-api-lib.git
+ ignore = dirty
[submodule "extern/openkeychain-api-lib"]
path = extern/openkeychain-api-lib
url = https://github.com/open-keychain/openkeychain-api-lib.git
+ ignore = dirty
[submodule "extern/KeybaseLib"]
path = extern/KeybaseLib
url = https://github.com/open-keychain/KeybaseLib.git
+ ignore = dirty
[submodule "extern/minidns"]
path = extern/minidns
url = https://github.com/open-keychain/minidns.git
- ignore = dirty
+ ignore = dirty
[submodule "extern/TokenAutoComplete"]
path = extern/TokenAutoComplete
url = https://github.com/open-keychain/TokenAutoComplete
+ ignore = dirty
[submodule "extern/safeslinger-exchange"]
path = extern/safeslinger-exchange
- url = https://github.com/open-keychain/exchange-android
+ url = https://github.com/open-keychain/exchange-android
ignore = dirty
diff --git a/CHANGELOG b/CHANGELOG
index 4e53864e5..da359c6c6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,16 @@
+## 3.2beta2
+ * Material design
+ * Integration of QR Scanner (New permissions required)
+ * Improved key creation wizard
+ * Fix missing contacts after sync
+ * Requires Android 4
+ * Redesigned key screen
+ * Simplify crypto preferences, better selection of secure ciphers
+ * API: Detached signatures, free selection of signing key,...
+ * Fix: Some valid keys were shown revoked or expired
+ * Don't accept signatures by expired or revoked subkeys
+ * Keybase.io support in advanced view
+
## 3.1.2
* Fix key export to files (now for real)
diff --git a/OpenKeychain-Test/build.gradle b/OpenKeychain-Test/build.gradle
index f621428ed..25f955dd1 100644
--- a/OpenKeychain-Test/build.gradle
+++ b/OpenKeychain-Test/build.gradle
@@ -16,7 +16,7 @@ apply plugin: 'jacoco'
dependencies {
testCompile 'junit:junit:4.11'
testCompile 'com.google.android:android:4.1.1.4'
- testCompile('com.squareup:fest-android:1.0.+') { exclude module: 'support-v4' }
+ testCompile('com.squareup:fest-android:1.0.8') { exclude module: 'support-v4' }
testCompile ('org.robolectric:robolectric:2.3') {
exclude module: 'classworlds'
exclude module: 'maven-artifact'
diff --git a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperationTest.java b/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperationTest.java
index dd2feb825..8feff4cc4 100644
--- a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperationTest.java
+++ b/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperationTest.java
@@ -536,6 +536,12 @@ public class PgpKeyOperationTest {
expiry, modified.getPublicKey(keyId).getUnsafeExpiryTimeForTesting().getTime() / 1000);
Assert.assertEquals("modified key must have same flags as before",
ring.getPublicKey(keyId).getKeyUsage(), modified.getPublicKey(keyId).getKeyUsage());
+
+ Date date = modified.canonicalize(new OperationLog(), 0).getPublicKey().getExpiryTime();
+ Assert.assertNotNull("modified key must have an expiry date", date);
+ Assert.assertEquals("modified key must have expected expiry date",
+ expiry, date.getTime() / 1000);
+
}
{
diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml
index 3030cdbf2..fc6a9e81e 100644
--- a/OpenKeychain/src/main/AndroidManifest.xml
+++ b/OpenKeychain/src/main/AndroidManifest.xml
@@ -3,8 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
package="org.sufficientlysecure.keychain"
android:installLocation="auto"
- android:versionCode="31201"
- android:versionName="3.2beta1">
+ android:versionCode="31202"
+ android:versionName="3.2beta2">
<!--
General remarks
@@ -65,6 +65,7 @@
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
+ <uses-permission android:name="android.permission.WRITE_PROFILE" />
<!-- android:allowBackup="false": Don't allow backup over adb backup or other apps! -->
<application
@@ -716,6 +717,12 @@
android:launchMode="singleTop"
android:process=":remote_api" />
<activity
+ android:name=".remote.ui.SelectSignKeyIdActivity"
+ android:exported="false"
+ android:label="@string/app_name"
+ android:launchMode="singleTop"
+ android:process=":remote_api" />
+ <activity
android:name=".remote.ui.AppSettingsActivity"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
android:exported="false">
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java
index 79065604a..7dac8b1e0 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java
@@ -294,8 +294,9 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
mKeyId = key.getKeyId();
mKeyIdHex = KeyFormattingUtils.convertKeyIdToHex(mKeyId);
- mRevoked = key.isMaybeRevoked();
- mExpired = key.isMaybeExpired();
+ // NOTE: Dont use maybe methods for now, they can be wrong.
+ mRevoked = false; //key.isMaybeRevoked();
+ mExpired = false; //key.isMaybeExpired();
mFingerprintHex = KeyFormattingUtils.convertFingerprintToHex(key.getFingerprint());
mBitStrength = key.getBitStrength();
mCurveOid = key.getCurveOid();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java
index e796bdc91..40dcbd78d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2014-2015 Vincent Breitmoser <v.breitmoser@mugenguild.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
package org.sufficientlysecure.keychain.operations;
import android.content.Context;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java
index 2e9551826..ebf0dc70b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2014-2015 Vincent Breitmoser <v.breitmoser@mugenguild.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
package org.sufficientlysecure.keychain.operations;
import android.content.Context;
@@ -20,6 +37,7 @@ import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.provider.ProviderHelper.NotFoundException;
import org.sufficientlysecure.keychain.service.CertifyActionsParcel;
import org.sufficientlysecure.keychain.service.CertifyActionsParcel.CertifyAction;
+import org.sufficientlysecure.keychain.service.ContactSyncAdapterService;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.util.Log;
@@ -191,6 +209,9 @@ public class CertifyOperation extends BaseOperation {
}
log.add(LogType.MSG_CRT_SUCCESS, 0);
+ //since only verified keys are synced to contacts, we need to initiate a sync now
+ ContactSyncAdapterService.requestSync();
+
return new CertifyResult(CertifyResult.RESULT_OK, log, certifyOk, certifyError, uploadOk, uploadError);
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java
index 124dd1aaf..5ef04ab05 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2014-2015 Vincent Breitmoser <v.breitmoser@mugenguild.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
package org.sufficientlysecure.keychain.operations;
import android.content.Context;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java
index 7f14b08d9..bcd842dd0 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2014-2015 Vincent Breitmoser <v.breitmoser@mugenguild.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
package org.sufficientlysecure.keychain.operations;
import android.content.Context;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/PromoteKeyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/PromoteKeyOperation.java
index 783b32477..fd86d4b92 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/PromoteKeyOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/PromoteKeyOperation.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2014-2015 Vincent Breitmoser <v.breitmoser@mugenguild.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
package org.sufficientlysecure.keychain.operations;
import android.content.Context;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/SignEncryptOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/SignEncryptOperation.java
index e98f6b150..b5552a40d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/SignEncryptOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/SignEncryptOperation.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2014-2015 Vincent Breitmoser <v.breitmoser@mugenguild.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
package org.sufficientlysecure.keychain.operations;
import android.content.Context;
@@ -48,6 +65,7 @@ public class SignEncryptOperation extends BaseOperation {
byte[] inputBytes = input.getBytes();
byte[] outputBytes = null;
+ int total = inputBytes != null ? 1 : inputUris.size(), count = 0;
ArrayList<PgpSignEncryptResult> results = new ArrayList<>();
do {
@@ -104,7 +122,7 @@ public class SignEncryptOperation extends BaseOperation {
}
PgpSignEncryptOperation op = new PgpSignEncryptOperation(mContext, mProviderHelper,
- new ProgressScaler(), mCancelled);
+ new ProgressScaler(mProgressable, 100 * count / total, 100 * ++count / total, 100), mCancelled);
PgpSignEncryptResult result = op.execute(input, inputData, outStream);
results.add(result);
log.add(result, 2);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedPublicKey.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedPublicKey.java
index 303070333..8104c5249 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedPublicKey.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedPublicKey.java
@@ -126,26 +126,27 @@ public class CanonicalizedPublicKey extends UncachedPublicKey {
// the getValidSeconds method is unreliable for master keys. we need to iterate all
// user ids, then use the most recent certification from a non-revoked user id
if (isMasterKey()) {
- Date latestCreation = null;
seconds = 0;
+ long masterKeyId = getKeyId();
+
+ Date latestCreation = null;
for (byte[] rawUserId : getUnorderedRawUserIds()) {
Iterator<WrappedSignature> sigs = getSignaturesForRawId(rawUserId);
+ while (sigs.hasNext()) {
+ WrappedSignature sig = sigs.next();
+ if (sig.getKeyId() != masterKeyId) {
+ continue;
+ }
+ if (sig.isRevocation()) {
+ continue;
+ }
+
+ if (latestCreation == null || latestCreation.before(sig.getCreationTime())) {
+ latestCreation = sig.getCreationTime();
+ seconds = sig.getKeyExpirySeconds();
+ }
- // there is always a certification, so this call is safe
- WrappedSignature sig = sigs.next();
-
- // we know a user id has at most two sigs: one certification, one revocation.
- // if the sig is a revocation, or there is another sig (which is a revocation),
- // the data in this uid is not relevant
- if (sig.isRevocation() || sigs.hasNext()) {
- continue;
- }
-
- // this is our revocation, UNLESS there is a newer certificate!
- if (latestCreation == null || latestCreation.before(sig.getCreationTime())) {
- latestCreation = sig.getCreationTime();
- seconds = sig.getKeyExpirySeconds();
}
}
} else {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedSecretKey.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedSecretKey.java
index c3fccc789..ab91d7747 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedSecretKey.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedSecretKey.java
@@ -18,9 +18,7 @@
package org.sufficientlysecure.keychain.pgp;
-import org.spongycastle.bcpg.HashAlgorithmTags;
import org.spongycastle.bcpg.S2K;
-import org.spongycastle.bcpg.SymmetricKeyAlgorithmTags;
import org.spongycastle.openpgp.PGPException;
import org.spongycastle.openpgp.PGPPrivateKey;
import org.spongycastle.openpgp.PGPPublicKey;
@@ -31,7 +29,6 @@ import org.spongycastle.openpgp.PGPSignatureGenerator;
import org.spongycastle.openpgp.PGPSignatureSubpacketGenerator;
import org.spongycastle.openpgp.PGPSignatureSubpacketVector;
import org.spongycastle.openpgp.PGPUserAttributeSubpacketVector;
-import org.spongycastle.openpgp.PGPUtil;
import org.spongycastle.openpgp.operator.PBESecretKeyDecryptor;
import org.spongycastle.openpgp.operator.PGPContentSignerBuilder;
import org.spongycastle.openpgp.operator.PublicKeyDataDecryptorFactory;
@@ -43,13 +40,11 @@ import org.spongycastle.openpgp.operator.jcajce.NfcSyncPublicKeyDataDecryptorFac
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
-import org.sufficientlysecure.keychain.util.IterableIterator;
import org.sufficientlysecure.keychain.util.Log;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
-import java.util.LinkedList;
import java.util.List;
/**
@@ -287,9 +282,8 @@ public class CanonicalizedSecretKey extends CanonicalizedPublicKey {
// create a signatureGenerator from the supplied masterKeyId and passphrase
PGPSignatureGenerator signatureGenerator;
{
- // TODO: SHA256 fixed?
- PGPContentSignerBuilder contentSignerBuilder = getContentSignerBuilder(PGPUtil.SHA256,
- nfcSignedHash, nfcCreationTimestamp);
+ PGPContentSignerBuilder contentSignerBuilder = getContentSignerBuilder(
+ PgpConstants.CERTIFY_HASH_ALGO, nfcSignedHash, nfcCreationTimestamp);
signatureGenerator = new PGPSignatureGenerator(contentSignerBuilder);
try {
@@ -351,9 +345,8 @@ public class CanonicalizedSecretKey extends CanonicalizedPublicKey {
// create a signatureGenerator from the supplied masterKeyId and passphrase
PGPSignatureGenerator signatureGenerator;
{
- // TODO: SHA256 fixed?
- PGPContentSignerBuilder contentSignerBuilder = getContentSignerBuilder(PGPUtil.SHA256,
- nfcSignedHash, nfcCreationTimestamp);
+ PGPContentSignerBuilder contentSignerBuilder = getContentSignerBuilder(
+ PgpConstants.CERTIFY_HASH_ALGO, nfcSignedHash, nfcCreationTimestamp);
signatureGenerator = new PGPSignatureGenerator(contentSignerBuilder);
try {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java
index 46defebf7..ed4715681 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java
@@ -104,8 +104,8 @@ public class OpenPgpSignatureResultBuilder {
setUserIds(signingRing.getUnorderedUserIds());
// either master key is expired/revoked or this specific subkey is expired/revoked
- setKeyExpired(signingRing.isExpired() || signingKey.isMaybeExpired());
- setKeyRevoked(signingRing.isRevoked() || signingKey.isMaybeRevoked());
+ setKeyExpired(signingRing.isExpired() || signingKey.isExpired());
+ setKeyRevoked(signingRing.isRevoked() || signingKey.isRevoked());
}
public OpenPgpSignatureResult build() {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpConstants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpConstants.java
index 90991ba15..f739b1e6d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpConstants.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpConstants.java
@@ -53,11 +53,19 @@ public class PgpConstants {
sPreferredHashAlgorithms.add(HashAlgorithmTags.SHA1);
sPreferredHashAlgorithms.add(HashAlgorithmTags.RIPEMD160);
+ /*
+ * Prefer ZIP
+ * "ZLIB provides no benefit over ZIP and is more malleable"
+ * - (OpenPGP WG mailinglist: "[openpgp] Intent to deprecate: Insecure primitives")
+ * BZIP2: very slow
+ */
+ sPreferredCompressionAlgorithms.add(CompressionAlgorithmTags.ZIP);
sPreferredCompressionAlgorithms.add(CompressionAlgorithmTags.ZLIB);
sPreferredCompressionAlgorithms.add(CompressionAlgorithmTags.BZIP2);
- sPreferredCompressionAlgorithms.add(CompressionAlgorithmTags.ZIP);
}
+ public static final int CERTIFY_HASH_ALGO = HashAlgorithmTags.SHA256;
+
/*
* Note: s2kcount is a number between 0 and 0xff that controls the
* number of times to iterate the password hash before use. More
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
index 0a7cf4a41..deb12a146 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
@@ -124,6 +124,7 @@ public class KeychainContract {
public static final String HAS_SIGN = "has_sign";
public static final String HAS_CERTIFY = "has_certify";
public static final String HAS_AUTHENTICATE = "has_authenticate";
+ public static final String HAS_DUPLICATE_USER_ID = "has_duplicate_user_id";
public static final String PUBKEY_DATA = "pubkey_data";
public static final String PRIVKEY_DATA = "privkey_data";
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
index 4a84397a4..380c5cc46 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
@@ -286,7 +286,15 @@ public class KeychainProvider extends ContentProvider {
projectionMap.put(KeyRings.EXPIRY, Tables.KEYS + "." + Keys.EXPIRY);
projectionMap.put(KeyRings.ALGORITHM, Tables.KEYS + "." + Keys.ALGORITHM);
projectionMap.put(KeyRings.FINGERPRINT, Tables.KEYS + "." + Keys.FINGERPRINT);
- projectionMap.put(KeyRings.USER_ID, UserPackets.USER_ID);
+ projectionMap.put(KeyRings.USER_ID, Tables.USER_PACKETS + "." + UserPackets.USER_ID);
+ projectionMap.put(KeyRings.HAS_DUPLICATE_USER_ID,
+ "(SELECT COUNT (*) FROM " + Tables.USER_PACKETS + " AS dups"
+ + " WHERE dups." + UserPackets.MASTER_KEY_ID
+ + " != " + Tables.KEYS + "." + Keys.MASTER_KEY_ID
+ + " AND dups." + UserPackets.RANK + " = 0"
+ + " AND dups." + UserPackets.USER_ID
+ + " = "+ Tables.USER_PACKETS + "." + UserPackets.USER_ID
+ + ") AS " + KeyRings.HAS_DUPLICATE_USER_ID);
projectionMap.put(KeyRings.VERIFIED, KeyRings.VERIFIED);
projectionMap.put(KeyRings.PUBKEY_DATA,
Tables.KEY_RINGS_PUBLIC + "." + KeyRingData.KEY_RING_DATA
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 ffb812c32..655bf19ba 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
@@ -28,6 +28,7 @@ import android.net.Uri;
import android.os.RemoteException;
import android.support.v4.util.LongSparseArray;
+import org.spongycastle.bcpg.CompressionAlgorithmTags;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.ImportKeyResult;
@@ -48,6 +49,7 @@ import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey.SecretKeyType;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKeyRing;
import org.sufficientlysecure.keychain.pgp.KeyRing;
+import org.sufficientlysecure.keychain.pgp.PgpConstants;
import org.sufficientlysecure.keychain.pgp.PgpHelper;
import org.sufficientlysecure.keychain.pgp.Progressable;
import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;
@@ -81,15 +83,15 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
-/** This class contains high level methods for database access. Despite its
+/**
+ * This class contains high level methods for database access. Despite its
* name, it is not only a helper but actually the main interface for all
* synchronous database operations.
- *
+ * <p/>
* Operations in this class write logs. These can be obtained from the
* OperationResultParcel return values directly, but are also accumulated over
* the lifetime of the executing ProviderHelper object unless the resetLog()
* method is called to start a new one specifically.
- *
*/
public class ProviderHelper {
private final Context mContext;
@@ -126,12 +128,13 @@ public class ProviderHelper {
}
public void log(LogType type) {
- if(mLog != null) {
+ if (mLog != null) {
mLog.add(type, mIndent);
}
}
+
public void log(LogType type, Object... parameters) {
- if(mLog != null) {
+ if (mLog != null) {
mLog.add(type, mIndent, parameters);
}
}
@@ -213,7 +216,7 @@ public class ProviderHelper {
}
private LongSparseArray<CanonicalizedPublicKey> getTrustedMasterKeys() {
- Cursor cursor = mContentResolver.query(KeyRings.buildUnifiedKeyRingsUri(), new String[] {
+ Cursor cursor = mContentResolver.query(KeyRings.buildUnifiedKeyRingsUri(), new String[]{
KeyRings.MASTER_KEY_ID,
// we pick from cache only information that is not easily available from keyrings
KeyRings.HAS_ANY_SECRET, KeyRings.VERIFIED,
@@ -288,7 +291,7 @@ public class ProviderHelper {
boolean hasAnySecret = cursor.getInt(0) > 0;
int verified = cursor.getInt(1);
byte[] blob = cursor.getBlob(2);
- if(secret &! hasAnySecret) {
+ if (secret & !hasAnySecret) {
throw new NotFoundException("Secret key not available!");
}
return secret
@@ -305,7 +308,7 @@ public class ProviderHelper {
}
// bits, in order: CESA. make SURE these are correct, we will get bad log entries otherwise!!
- static final LogType LOG_TYPES_FLAG_MASTER[] = new LogType[] {
+ static final LogType LOG_TYPES_FLAG_MASTER[] = new LogType[]{
LogType.MSG_IP_MASTER_FLAGS_XXXX, LogType.MSG_IP_MASTER_FLAGS_CXXX,
LogType.MSG_IP_MASTER_FLAGS_XEXX, LogType.MSG_IP_MASTER_FLAGS_CEXX,
LogType.MSG_IP_MASTER_FLAGS_XXSX, LogType.MSG_IP_MASTER_FLAGS_CXSX,
@@ -317,7 +320,7 @@ public class ProviderHelper {
};
// same as above, but for subkeys
- static final LogType LOG_TYPES_FLAG_SUBKEY[] = new LogType[] {
+ static final LogType LOG_TYPES_FLAG_SUBKEY[] = new LogType[]{
LogType.MSG_IP_SUBKEY_FLAGS_XXXX, LogType.MSG_IP_SUBKEY_FLAGS_CXXX,
LogType.MSG_IP_SUBKEY_FLAGS_XEXX, LogType.MSG_IP_SUBKEY_FLAGS_CEXX,
LogType.MSG_IP_SUBKEY_FLAGS_XXSX, LogType.MSG_IP_SUBKEY_FLAGS_CXSX,
@@ -328,8 +331,9 @@ public class ProviderHelper {
LogType.MSG_IP_SUBKEY_FLAGS_XESA, LogType.MSG_IP_SUBKEY_FLAGS_CESA
};
- /** Saves an UncachedKeyRing of the public variant into the db.
- *
+ /**
+ * Saves an UncachedKeyRing of the public variant into the db.
+ * <p/>
* This method will not delete all previous data for this masterKeyId from the database prior
* to inserting. All public data is effectively re-inserted, secret keyrings are left deleted
* and need to be saved externally to be preserved past the operation.
@@ -403,7 +407,7 @@ public class ProviderHelper {
if (key.getKeyUsage() == null) {
log(LogType.MSG_IP_MASTER_FLAGS_UNSPECIFIED);
} else {
- log(LOG_TYPES_FLAG_MASTER[(c?1:0) + (e?2:0) + (s?4:0) + (a?8:0)]);
+ log(LOG_TYPES_FLAG_MASTER[(c ? 1 : 0) + (e ? 2 : 0) + (s ? 4 : 0) + (a ? 8 : 0)]);
}
} else {
if (key.getKeyUsage() == null) {
@@ -492,7 +496,7 @@ public class ProviderHelper {
try {
cert.init(trustedKey);
// if it doesn't certify, leave a note and skip
- if ( ! cert.verifySignature(masterKey, rawUserId)) {
+ if (!cert.verifySignature(masterKey, rawUserId)) {
log(LogType.MSG_IP_UID_CERT_BAD);
continue;
}
@@ -537,7 +541,7 @@ public class ProviderHelper {
ArrayList<WrappedUserAttribute> userAttributes = masterKey.getUnorderedUserAttributes();
// Don't spam the log if there aren't even any attributes
- if ( ! userAttributes.isEmpty()) {
+ if (!userAttributes.isEmpty()) {
log(LogType.MSG_IP_UAT_CLASSIFYING);
}
@@ -592,7 +596,7 @@ public class ProviderHelper {
try {
cert.init(trustedKey);
// if it doesn't certify, leave a note and skip
- if ( ! cert.verifySignature(masterKey, userAttribute)) {
+ if (!cert.verifySignature(masterKey, userAttribute)) {
log(LogType.MSG_IP_UAT_CERT_BAD);
continue;
}
@@ -660,7 +664,7 @@ public class ProviderHelper {
selfCertsAreTrusted ? Certs.VERIFIED_SECRET : Certs.VERIFIED_SELF));
// iterate over signatures
- for (int i = 0; i < item.trustedCerts.size() ; i++) {
+ for (int i = 0; i < item.trustedCerts.size(); i++) {
WrappedSignature sig = item.trustedCerts.valueAt(i);
// if it's a revocation
if (sig.isRevocation()) {
@@ -725,7 +729,7 @@ public class ProviderHelper {
public int compareTo(UserPacketItem o) {
// revoked keys always come last!
//noinspection DoubleNegation
- if ( (selfRevocation != null) != (o.selfRevocation != null)) {
+ if ((selfRevocation != null) != (o.selfRevocation != null)) {
return selfRevocation != null ? 1 : -1;
}
// if one is a user id, but the other isn't, the user id always comes first.
@@ -742,7 +746,8 @@ public class ProviderHelper {
}
}
- /** Saves an UncachedKeyRing of the secret variant into the db.
+ /**
+ * Saves an UncachedKeyRing of the secret variant into the db.
* This method will fail if no corresponding public keyring is in the database!
*/
private int saveCanonicalizedSecretKeyRing(CanonicalizedSecretKeyRing keyRing) {
@@ -789,7 +794,7 @@ public class ProviderHelper {
SecretKeyType mode = sub.getSecretKeyType();
values.put(Keys.HAS_SECRET, mode.getNum());
int upd = mContentResolver.update(uri, values, Keys.KEY_ID + " = ?",
- new String[]{ Long.toString(id) });
+ new String[]{Long.toString(id)});
if (upd == 1) {
switch (mode) {
case PASSPHRASE:
@@ -843,8 +848,9 @@ public class ProviderHelper {
return savePublicKeyRing(keyRing, new ProgressScaler());
}
- /** Save a public keyring into the database.
- *
+ /**
+ * Save a public keyring into the database.
+ * <p/>
* This is a high level method, which takes care of merging all new information into the old and
* keep public and secret keyrings in sync.
*/
@@ -949,7 +955,7 @@ public class ProviderHelper {
log(LogType.MSG_IS, KeyFormattingUtils.convertKeyIdToHex(masterKeyId));
mIndent += 1;
- if ( ! secretRing.isSecret()) {
+ if (!secretRing.isSecret()) {
log(LogType.MSG_IS_BAD_TYPE_PUBLIC);
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);
}
@@ -1417,9 +1423,13 @@ public class ProviderHelper {
ContentValues values = new ContentValues();
values.put(KeychainContract.ApiAccounts.ACCOUNT_NAME, accSettings.getAccountName());
values.put(KeychainContract.ApiAccounts.KEY_ID, accSettings.getKeyId());
- values.put(KeychainContract.ApiAccounts.COMPRESSION, accSettings.getCompression());
- values.put(KeychainContract.ApiAccounts.ENCRYPTION_ALGORITHM, accSettings.getEncryptionAlgorithm());
- values.put(KeychainContract.ApiAccounts.HASH_ALORITHM, accSettings.getHashAlgorithm());
+
+ // DEPRECATED and thus hardcoded
+ values.put(KeychainContract.ApiAccounts.COMPRESSION, CompressionAlgorithmTags.ZLIB);
+ values.put(KeychainContract.ApiAccounts.ENCRYPTION_ALGORITHM,
+ PgpConstants.OpenKeychainSymmetricKeyAlgorithmTags.USE_PREFERRED);
+ values.put(KeychainContract.ApiAccounts.HASH_ALORITHM,
+ PgpConstants.OpenKeychainHashAlgorithmTags.USE_PREFERRED);
return values;
}
@@ -1475,12 +1485,6 @@ public class ProviderHelper {
cursor.getColumnIndex(KeychainContract.ApiAccounts.ACCOUNT_NAME)));
settings.setKeyId(cursor.getLong(
cursor.getColumnIndex(KeychainContract.ApiAccounts.KEY_ID)));
- settings.setCompression(cursor.getInt(
- cursor.getColumnIndexOrThrow(KeychainContract.ApiAccounts.COMPRESSION)));
- settings.setHashAlgorithm(cursor.getInt(
- cursor.getColumnIndexOrThrow(KeychainContract.ApiAccounts.HASH_ALORITHM)));
- settings.setEncryptionAlgorithm(cursor.getInt(
- cursor.getColumnIndexOrThrow(KeychainContract.ApiAccounts.ENCRYPTION_ALGORITHM)));
}
} finally {
if (cursor != null) {
@@ -1544,26 +1548,32 @@ public class ProviderHelper {
}
}
+ public void addAllowedKeyIdForApp(Uri uri, long allowedKeyId) {
+ ContentValues values = new ContentValues();
+ values.put(ApiAllowedKeys.KEY_ID, allowedKeyId);
+ mContentResolver.insert(uri, values);
+ }
+
public Set<String> getAllFingerprints(Uri uri) {
- Set<String> fingerprints = new HashSet<>();
- String[] projection = new String[]{KeyRings.FINGERPRINT};
- Cursor cursor = mContentResolver.query(uri, projection, null, null, null);
- try {
- if(cursor != null) {
- int fingerprintColumn = cursor.getColumnIndex(KeyRings.FINGERPRINT);
- while(cursor.moveToNext()) {
- fingerprints.add(
+ Set<String> fingerprints = new HashSet<>();
+ String[] projection = new String[]{KeyRings.FINGERPRINT};
+ Cursor cursor = mContentResolver.query(uri, projection, null, null, null);
+ try {
+ if (cursor != null) {
+ int fingerprintColumn = cursor.getColumnIndex(KeyRings.FINGERPRINT);
+ while (cursor.moveToNext()) {
+ fingerprints.add(
KeyFormattingUtils.convertFingerprintToHex(cursor.getBlob(fingerprintColumn))
- );
- }
- }
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- return fingerprints;
- }
+ );
+ }
+ }
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ return fingerprints;
+ }
public byte[] getApiAppSignature(String packageName) {
Uri queryUri = ApiApps.buildByPackageNameUri(packageName);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/AccountSettings.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/AccountSettings.java
index 6cffeeb53..5d23176be 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/AccountSettings.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/AccountSettings.java
@@ -17,17 +17,14 @@
package org.sufficientlysecure.keychain.remote;
-import org.spongycastle.bcpg.CompressionAlgorithmTags;
-import org.spongycastle.bcpg.HashAlgorithmTags;
-import org.spongycastle.openpgp.PGPEncryptedData;
import org.sufficientlysecure.keychain.Constants;
+/**
+ * DEPRECATED API
+ */
public class AccountSettings {
private String mAccountName;
private long mKeyId = Constants.key.none;
- private int mEncryptionAlgorithm;
- private int mHashAlgorithm;
- private int mCompression;
public AccountSettings() {
@@ -36,11 +33,6 @@ public class AccountSettings {
public AccountSettings(String accountName) {
super();
this.mAccountName = accountName;
-
- // defaults:
- this.mEncryptionAlgorithm = PGPEncryptedData.AES_256;
- this.mHashAlgorithm = HashAlgorithmTags.SHA256;
- this.mCompression = CompressionAlgorithmTags.ZLIB;
}
public String getAccountName() {
@@ -59,28 +51,4 @@ public class AccountSettings {
this.mKeyId = scretKeyId;
}
- public int getEncryptionAlgorithm() {
- return mEncryptionAlgorithm;
- }
-
- public void setEncryptionAlgorithm(int encryptionAlgorithm) {
- this.mEncryptionAlgorithm = encryptionAlgorithm;
- }
-
- public int getHashAlgorithm() {
- return mHashAlgorithm;
- }
-
- public void setHashAlgorithm(int hashAlgorithm) {
- this.mHashAlgorithm = hashAlgorithm;
- }
-
- public int getCompression() {
- return mCompression;
- }
-
- public void setCompression(int compression) {
- this.mCompression = compression;
- }
-
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
index 390e85ef8..a4bc95602 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
@@ -47,6 +47,7 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainDatabase.Tables;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.remote.ui.RemoteServiceActivity;
+import org.sufficientlysecure.keychain.remote.ui.SelectSignKeyIdActivity;
import org.sufficientlysecure.keychain.ui.ImportKeysActivity;
import org.sufficientlysecure.keychain.ui.NfcActivity;
import org.sufficientlysecure.keychain.ui.PassphraseDialogActivity;
@@ -232,8 +233,7 @@ public class OpenPgpService extends RemoteService {
}
private Intent signImpl(Intent data, ParcelFileDescriptor input,
- ParcelFileDescriptor output, AccountSettings accSettings,
- boolean cleartextSign) {
+ ParcelFileDescriptor output, boolean cleartextSign) {
InputStream is = null;
OutputStream os = null;
try {
@@ -246,6 +246,17 @@ public class OpenPgpService extends RemoteService {
Log.d(Constants.TAG, "nfcSignedHash: null");
}
+ Intent signKeyIdIntent = getSignKeyMasterId(data);
+ // NOTE: Fallback to return account settings (Old API)
+ if (signKeyIdIntent.getIntExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR)
+ == OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED) {
+ return signKeyIdIntent;
+ }
+ long signKeyId = signKeyIdIntent.getLongExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, Constants.key.none);
+ if (signKeyId == Constants.key.none) {
+ Log.e(Constants.TAG, "No signing key given!");
+ }
+
// carefully: only set if timestamp exists
Date nfcCreationDate = null;
long nfcCreationTimestamp = data.getLongExtra(OpenPgpApi.EXTRA_NFC_SIG_CREATION_TIMESTAMP, -1);
@@ -271,7 +282,7 @@ public class OpenPgpService extends RemoteService {
.setDetachedSignature(!cleartextSign)
.setVersionHeader(null)
.setSignatureHashAlgorithm(PgpConstants.OpenKeychainHashAlgorithmTags.USE_PREFERRED)
- .setSignatureMasterKeyId(accSettings.getKeyId())
+ .setSignatureMasterKeyId(signKeyId)
.setNfcState(nfcSignedHash, nfcCreationDate);
// execute PGP operation!
@@ -336,8 +347,7 @@ public class OpenPgpService extends RemoteService {
}
private Intent encryptAndSignImpl(Intent data, ParcelFileDescriptor input,
- ParcelFileDescriptor output, AccountSettings accSettings,
- boolean sign) {
+ ParcelFileDescriptor output, boolean sign) {
InputStream is = null;
OutputStream os = null;
try {
@@ -347,6 +357,14 @@ public class OpenPgpService extends RemoteService {
originalFilename = "";
}
+ boolean enableCompression = data.getBooleanExtra(OpenPgpApi.EXTRA_ENABLE_COMPRESSION, true);
+ int compressionId;
+ if (enableCompression) {
+ compressionId = CompressionAlgorithmTags.ZLIB;
+ } else {
+ compressionId = CompressionAlgorithmTags.UNCOMPRESSED;
+ }
+
// first try to get key ids from non-ambiguous key id extra
long[] keyIds = data.getLongArrayExtra(OpenPgpApi.EXTRA_KEY_IDS);
if (keyIds == null) {
@@ -374,14 +392,24 @@ public class OpenPgpService extends RemoteService {
PgpSignEncryptInput pseInput = new PgpSignEncryptInput();
pseInput.setEnableAsciiArmorOutput(asciiArmor)
.setVersionHeader(null)
- .setCompressionId(CompressionAlgorithmTags.UNCOMPRESSED)
+ .setCompressionId(compressionId)
.setSymmetricEncryptionAlgorithm(PgpConstants.OpenKeychainSymmetricKeyAlgorithmTags.USE_PREFERRED)
.setEncryptionMasterKeyIds(keyIds)
- .setFailOnMissingEncryptionKeyIds(true)
- .setAdditionalEncryptId(accSettings.getKeyId()); // add acc key for encryption
+ .setFailOnMissingEncryptionKeyIds(true);
if (sign) {
+ Intent signKeyIdIntent = getSignKeyMasterId(data);
+ // NOTE: Fallback to return account settings (Old API)
+ if (signKeyIdIntent.getIntExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR)
+ == OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED) {
+ return signKeyIdIntent;
+ }
+ long signKeyId = signKeyIdIntent.getLongExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, Constants.key.none);
+ if (signKeyId == Constants.key.none) {
+ Log.e(Constants.TAG, "No signing key given!");
+ }
+
byte[] nfcSignedHash = data.getByteArrayExtra(OpenPgpApi.EXTRA_NFC_SIGNED_HASH);
// carefully: only set if timestamp exists
Date nfcCreationDate = null;
@@ -392,8 +420,9 @@ public class OpenPgpService extends RemoteService {
// sign and encrypt
pseInput.setSignatureHashAlgorithm(PgpConstants.OpenKeychainHashAlgorithmTags.USE_PREFERRED)
- .setSignatureMasterKeyId(accSettings.getKeyId())
- .setNfcState(nfcSignedHash, nfcCreationDate);
+ .setSignatureMasterKeyId(signKeyId)
+ .setNfcState(nfcSignedHash, nfcCreationDate)
+ .setAdditionalEncryptId(signKeyId); // add sign key for encryption
}
PgpSignEncryptOperation op = new PgpSignEncryptOperation(this, new ProviderHelper(getContext()), null);
@@ -455,8 +484,7 @@ public class OpenPgpService extends RemoteService {
}
private Intent decryptAndVerifyImpl(Intent data, ParcelFileDescriptor input,
- ParcelFileDescriptor output, Set<Long> allowedKeyIds,
- boolean decryptMetadataOnly) {
+ ParcelFileDescriptor output, boolean decryptMetadataOnly) {
InputStream is = null;
OutputStream os = null;
try {
@@ -470,6 +498,16 @@ public class OpenPgpService extends RemoteService {
os = new ParcelFileDescriptor.AutoCloseOutputStream(output);
}
+ String currentPkg = getCurrentCallingPackage();
+ Set<Long> allowedKeyIds;
+ if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) < 7) {
+ allowedKeyIds = mProviderHelper.getAllKeyIdsForApp(
+ ApiAccounts.buildBaseUri(currentPkg));
+ } else {
+ allowedKeyIds = mProviderHelper.getAllowedKeyIdsForApp(
+ KeychainContract.ApiAllowedKeys.buildBaseUri(currentPkg));
+ }
+
String passphrase = data.getStringExtra(OpenPgpApi.EXTRA_PASSPHRASE);
long inputLength = is.available();
InputData inputData = new InputData(is, inputLength);
@@ -516,9 +554,16 @@ public class OpenPgpService extends RemoteService {
}
} else if (pgpResult.success()) {
Intent result = new Intent();
+ int resultType = OpenPgpApi.RESULT_TYPE_UNENCRYPTED_UNSIGNED;
OpenPgpSignatureResult signatureResult = pgpResult.getSignatureResult();
if (signatureResult != null) {
+ resultType |= OpenPgpApi.RESULT_TYPE_SIGNED;
+ if (!signatureResult.isSignatureOnly()) {
+ resultType |= OpenPgpApi.RESULT_TYPE_ENCRYPTED;
+ }
+ result.putExtra(OpenPgpApi.RESULT_TYPE, resultType);
+
result.putExtra(OpenPgpApi.RESULT_SIGNATURE, signatureResult);
if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) < 5) {
@@ -615,6 +660,27 @@ public class OpenPgpService extends RemoteService {
}
}
+ private Intent getSignKeyIdImpl(Intent data) {
+ String preferredUserId = data.getStringExtra(OpenPgpApi.EXTRA_USER_ID);
+
+ Intent intent = new Intent(getBaseContext(), SelectSignKeyIdActivity.class);
+ String currentPkg = getCurrentCallingPackage();
+ intent.setData(KeychainContract.ApiApps.buildByPackageNameUri(currentPkg));
+ intent.putExtra(SelectSignKeyIdActivity.EXTRA_USER_ID, preferredUserId);
+ intent.putExtra(SelectSignKeyIdActivity.EXTRA_DATA, data);
+
+ PendingIntent pi = PendingIntent.getActivity(getBaseContext(), 0,
+ intent,
+ PendingIntent.FLAG_CANCEL_CURRENT);
+
+ // return PendingIntent to be executed by client
+ Intent result = new Intent();
+ result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED);
+ result.putExtra(OpenPgpApi.RESULT_INTENT, pi);
+
+ return result;
+ }
+
private Intent getKeyIdsImpl(Intent data) {
// if data already contains key ids extra GET_KEY_IDS has been executed again
// after user interaction. Then, we just need to return the array again!
@@ -632,6 +698,35 @@ public class OpenPgpService extends RemoteService {
}
}
+ private Intent getSignKeyMasterId(Intent data) {
+ // NOTE: Accounts are deprecated on API version >= 7
+ if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) < 7) {
+ String accName = data.getStringExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME);
+ // if no account name is given use name "default"
+ if (TextUtils.isEmpty(accName)) {
+ accName = "default";
+ }
+ Log.d(Constants.TAG, "accName: " + accName);
+ // fallback to old API
+ final AccountSettings accSettings = getAccSettings(accName);
+ if (accSettings == null || (accSettings.getKeyId() == Constants.key.none)) {
+ return getCreateAccountIntent(data, accName);
+ }
+
+ // NOTE: just wrapping the key id
+ Intent result = new Intent();
+ result.putExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, accSettings.getKeyId());
+ return result;
+ } else {
+ long signKeyId = data.getLongExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, Constants.key.none);
+ if (signKeyId == Constants.key.none) {
+ return getSignKeyIdImpl(data);
+ }
+
+ return data;
+ }
+ }
+
/**
* Check requirements:
* - params != null
@@ -657,12 +752,13 @@ public class OpenPgpService extends RemoteService {
if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 3
&& data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 4
&& data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 5
- && data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 6) {
+ && data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 6
+ && data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 7) {
Intent result = new Intent();
OpenPgpError error = new OpenPgpError
(OpenPgpError.INCOMPATIBLE_API_VERSIONS, "Incompatible API versions!\n"
+ "used API version: " + data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) + "\n"
- + "supported API versions: 3, 4, 5, 6");
+ + "supported API versions: 3-7");
result.putExtra(OpenPgpApi.RESULT_ERROR, error);
result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR);
return result;
@@ -677,16 +773,6 @@ public class OpenPgpService extends RemoteService {
return null;
}
- private String getAccountName(Intent data) {
- String accName = data.getStringExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME);
- // if no account name is given use name "default"
- if (TextUtils.isEmpty(accName)) {
- accName = "default";
- }
- Log.d(Constants.TAG, "accName: " + accName);
- return accName;
- }
-
// TODO: multi-threading
private final IOpenPgpService.Stub mBinder = new IOpenPgpService.Stub() {
@@ -698,41 +784,29 @@ public class OpenPgpService extends RemoteService {
return errorResult;
}
- String accName = getAccountName(data);
- final AccountSettings accSettings = getAccSettings(accName);
- if (accSettings == null) {
- return getCreateAccountIntent(data, accName);
- }
-
String action = data.getAction();
if (OpenPgpApi.ACTION_CLEARTEXT_SIGN.equals(action)) {
- return signImpl(data, input, output, accSettings, true);
+ return signImpl(data, input, output, true);
} else if (OpenPgpApi.ACTION_SIGN.equals(action)) {
// DEPRECATED: same as ACTION_CLEARTEXT_SIGN
Log.w(Constants.TAG, "You are using a deprecated API call, please use ACTION_CLEARTEXT_SIGN instead of ACTION_SIGN!");
- return signImpl(data, input, output, accSettings, true);
+ return signImpl(data, input, output, true);
} else if (OpenPgpApi.ACTION_DETACHED_SIGN.equals(action)) {
- return signImpl(data, input, output, accSettings, false);
+ return signImpl(data, input, output, false);
} else if (OpenPgpApi.ACTION_ENCRYPT.equals(action)) {
- return encryptAndSignImpl(data, input, output, accSettings, false);
+ return encryptAndSignImpl(data, input, output, false);
} else if (OpenPgpApi.ACTION_SIGN_AND_ENCRYPT.equals(action)) {
- return encryptAndSignImpl(data, input, output, accSettings, true);
+ return encryptAndSignImpl(data, input, output, true);
} else if (OpenPgpApi.ACTION_DECRYPT_VERIFY.equals(action)) {
- String currentPkg = getCurrentCallingPackage();
- Set<Long> allowedKeyIds =
- mProviderHelper.getAllKeyIdsForApp(
- ApiAccounts.buildBaseUri(currentPkg));
- return decryptAndVerifyImpl(data, input, output, allowedKeyIds, false);
+ return decryptAndVerifyImpl(data, input, output, false);
} else if (OpenPgpApi.ACTION_DECRYPT_METADATA.equals(action)) {
- String currentPkg = getCurrentCallingPackage();
- Set<Long> allowedKeyIds =
- mProviderHelper.getAllKeyIdsForApp(
- ApiAccounts.buildBaseUri(currentPkg));
- return decryptAndVerifyImpl(data, input, output, allowedKeyIds, true);
- } else if (OpenPgpApi.ACTION_GET_KEY.equals(action)) {
- return getKeyImpl(data);
+ return decryptAndVerifyImpl(data, input, output, true);
+ } else if (OpenPgpApi.ACTION_GET_SIGN_KEY_ID.equals(action)) {
+ return getSignKeyIdImpl(data);
} else if (OpenPgpApi.ACTION_GET_KEY_IDS.equals(action)) {
return getKeyIdsImpl(data);
+ } else if (OpenPgpApi.ACTION_GET_KEY.equals(action)) {
+ return getKeyImpl(data);
} else {
return null;
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java
index 672f59285..59dafb505 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013-2014 Dominik Schürmann <dominik@dominikschuermann.de>
+ * Copyright (C) 2013-2015 Dominik Schürmann <dominik@dominikschuermann.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -154,9 +154,9 @@ public abstract class RemoteService extends Service {
}
/**
- * Retrieves AccountSettings from database for the application calling this remote service
+ * DEPRECATED API
*
- * @return
+ * Retrieves AccountSettings from database for the application calling this remote service
*/
protected AccountSettings getAccSettings(String accountName) {
String currentPkg = getCurrentCallingPackage();
@@ -164,11 +164,12 @@ public abstract class RemoteService extends Service {
Uri uri = KeychainContract.ApiAccounts.buildByPackageAndAccountUri(currentPkg, accountName);
- AccountSettings settings = mProviderHelper.getApiAccountSettings(uri);
-
- return settings; // can be null!
+ return mProviderHelper.getApiAccountSettings(uri); // can be null!
}
+ /**
+ * Deprecated API
+ */
protected Intent getCreateAccountIntent(Intent data, String accountName) {
String packageName = getCurrentCallingPackage();
Log.d(Constants.TAG, "getCreateAccountIntent accountName: " + accountName);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
index 4d6df24d2..507d4dea5 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
@@ -89,9 +89,10 @@ public class AccountSettingsActivity extends BaseActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case R.id.menu_account_settings_delete:
+ case R.id.menu_account_settings_delete: {
deleteAccount();
return true;
+ }
}
return super.onOptionsItemSelected(item);
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
index a5bc05ba8..4bb64bcaa 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
@@ -24,22 +24,17 @@ import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.Spinner;
import android.widget.TextView;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.operations.results.EditKeyResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
-import org.sufficientlysecure.keychain.operations.results.SaveKeyringResult;
import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.remote.AccountSettings;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity;
-import org.sufficientlysecure.keychain.ui.adapter.KeyValueSpinnerAdapter;
import org.sufficientlysecure.keychain.ui.widget.KeySpinner;
import org.sufficientlysecure.keychain.ui.widget.SignKeySpinner;
-import org.sufficientlysecure.keychain.util.AlgorithmNames;
import org.sufficientlysecure.keychain.util.Log;
public class AccountSettingsFragment extends Fragment {
@@ -51,17 +46,10 @@ public class AccountSettingsFragment extends Fragment {
// view
private TextView mAccNameView;
- private Spinner mEncryptionAlgorithm;
- private Spinner mHashAlgorithm;
- private Spinner mCompression;
private SignKeySpinner mSelectKeySpinner;
private View mCreateKeyButton;
- KeyValueSpinnerAdapter mEncryptionAdapter;
- KeyValueSpinnerAdapter mHashAdapter;
- KeyValueSpinnerAdapter mCompressionAdapter;
-
public AccountSettings getAccSettings() {
return mAccSettings;
}
@@ -71,10 +59,6 @@ public class AccountSettingsFragment extends Fragment {
mAccNameView.setText(accountSettings.getAccountName());
mSelectKeySpinner.setSelectedKeyId(accountSettings.getKeyId());
- mEncryptionAlgorithm.setSelection(mEncryptionAdapter.getPosition(accountSettings
- .getEncryptionAlgorithm()));
- mHashAlgorithm.setSelection(mHashAdapter.getPosition(accountSettings.getHashAlgorithm()));
- mCompression.setSelection(mCompressionAdapter.getPosition(accountSettings.getCompression()));
}
/**
@@ -90,10 +74,6 @@ public class AccountSettingsFragment extends Fragment {
private void initView(View view) {
mSelectKeySpinner = (SignKeySpinner) view.findViewById(R.id.api_account_settings_key_spinner);
mAccNameView = (TextView) view.findViewById(R.id.api_account_settings_acc_name);
- mEncryptionAlgorithm = (Spinner) view
- .findViewById(R.id.api_account_settings_encryption_algorithm);
- mHashAlgorithm = (Spinner) view.findViewById(R.id.api_account_settings_hash_algorithm);
- mCompression = (Spinner) view.findViewById(R.id.api_account_settings_compression);
mCreateKeyButton = view.findViewById(R.id.api_account_settings_create_key);
mSelectKeySpinner.setOnKeyChangedListener(new KeySpinner.OnKeyChangedListener() {
@@ -109,52 +89,6 @@ public class AccountSettingsFragment extends Fragment {
createKey();
}
});
-
- AlgorithmNames algorithmNames = new AlgorithmNames(getActivity());
-
- mEncryptionAdapter = new KeyValueSpinnerAdapter(getActivity(),
- algorithmNames.getEncryptionNames());
- mEncryptionAlgorithm.setAdapter(mEncryptionAdapter);
- mEncryptionAlgorithm.setOnItemSelectedListener(new OnItemSelectedListener() {
-
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- mAccSettings.setEncryptionAlgorithm((int) id);
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
-
- mHashAdapter = new KeyValueSpinnerAdapter(getActivity(), algorithmNames.getHashNames());
- mHashAlgorithm.setAdapter(mHashAdapter);
- mHashAlgorithm.setOnItemSelectedListener(new OnItemSelectedListener() {
-
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- mAccSettings.setHashAlgorithm((int) id);
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
-
- mCompressionAdapter = new KeyValueSpinnerAdapter(getActivity(),
- algorithmNames.getCompressionNames());
- mCompression.setAdapter(mCompressionAdapter);
- mCompression.setOnItemSelectedListener(new OnItemSelectedListener() {
-
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- mAccSettings.setCompression((int) id);
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
}
private void createKey() {
@@ -172,8 +106,8 @@ public class AccountSettingsFragment extends Fragment {
case REQUEST_CODE_CREATE_KEY: {
if (resultCode == Activity.RESULT_OK) {
if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
- SaveKeyringResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
- mSelectKeySpinner.setSelectedKeyId(result.mRingMasterKeyId);
+ EditKeyResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
+ mSelectKeySpinner.setSelectedKeyId(result.mMasterKeyId);
} else {
Log.e(Constants.TAG, "missing result!");
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsAllowedKeysListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsAllowedKeysListFragment.java
index 13b242a5e..b880525ca 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsAllowedKeysListFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AppSettingsAllowedKeysListFragment.java
@@ -205,6 +205,8 @@ public class AppSettingsAllowedKeysListFragment extends ListFragmentWorkaround i
KeyRings.HAS_ENCRYPT,
KeyRings.VERIFIED,
KeyRings.HAS_ANY_SECRET,
+ KeyRings.HAS_DUPLICATE_USER_ID,
+ KeyRings.CREATION,
};
String inMasterKeyList = null;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/SelectSignKeyIdActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/SelectSignKeyIdActivity.java
new file mode 100644
index 000000000..5ec47f4c9
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/SelectSignKeyIdActivity.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2015 Dominik Schürmann <dominik@dominikschuermann.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.sufficientlysecure.keychain.remote.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import org.openintents.openpgp.util.OpenPgpApi;
+import org.sufficientlysecure.keychain.Constants;
+import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.operations.results.OperationResult;
+import org.sufficientlysecure.keychain.pgp.KeyRing;
+import org.sufficientlysecure.keychain.ui.BaseActivity;
+import org.sufficientlysecure.keychain.ui.CreateKeyActivity;
+import org.sufficientlysecure.keychain.util.Log;
+
+public class SelectSignKeyIdActivity extends BaseActivity {
+
+ public static final String EXTRA_USER_ID = OpenPgpApi.EXTRA_USER_ID;
+ public static final String EXTRA_DATA = "data";
+
+ private static final int REQUEST_CODE_CREATE_KEY = 0x00008884;
+
+ private Uri mAppUri;
+ private String mPreferredUserId;
+
+ private SelectSignKeyIdListFragment mListFragment;
+ private TextView mActionCreateKey;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Inflate a "Done" custom action bar
+ setFullScreenDialogClose(
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ setResult(RESULT_CANCELED);
+ finish();
+ }
+ });
+
+ mActionCreateKey = (TextView) findViewById(R.id.api_select_sign_key_create_key);
+ mActionCreateKey.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ createKey(mPreferredUserId);
+ }
+ });
+
+ Intent intent = getIntent();
+ mAppUri = intent.getData();
+ mPreferredUserId = intent.getStringExtra(EXTRA_USER_ID);
+ Intent data = intent.getParcelableExtra(EXTRA_DATA);
+ if (mAppUri == null) {
+ Log.e(Constants.TAG, "Intent data missing. Should be Uri of app!");
+ finish();
+ return;
+ } else {
+ Log.d(Constants.TAG, "uri: " + mAppUri);
+ startListFragments(savedInstanceState, mAppUri, data);
+ }
+ }
+
+ private void createKey(String userId) {
+ String[] userIdSplit = KeyRing.splitUserId(userId);
+
+ Intent intent = new Intent(this, CreateKeyActivity.class);
+ intent.putExtra(CreateKeyActivity.EXTRA_NAME, userIdSplit[0]);
+ intent.putExtra(CreateKeyActivity.EXTRA_EMAIL, userIdSplit[1]);
+ startActivityForResult(intent, REQUEST_CODE_CREATE_KEY);
+ }
+
+ private void startListFragments(Bundle savedInstanceState, Uri dataUri, Intent data) {
+ // However, if we're being restored from a previous state,
+ // then we don't need to do anything and should return or else
+ // we could end up with overlapping fragments.
+ if (savedInstanceState != null) {
+ return;
+ }
+
+ // Create an instance of the fragments
+ mListFragment = SelectSignKeyIdListFragment.newInstance(dataUri, data);
+ // Add the fragment to the 'fragment_container' FrameLayout
+ // NOTE: We use commitAllowingStateLoss() to prevent weird crashes!
+ getSupportFragmentManager().beginTransaction()
+ .replace(R.id.api_select_sign_key_list_fragment, mListFragment)
+ .commitAllowingStateLoss();
+ // do it immediately!
+ getSupportFragmentManager().executePendingTransactions();
+ }
+
+ @Override
+ protected void initLayout() {
+ setContentView(R.layout.api_select_sign_key_activity);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ // if a result has been returned, display a notify
+ if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
+ OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
+ result.createNotify(this).show();
+ }
+
+ switch (requestCode) {
+ case REQUEST_CODE_CREATE_KEY: {
+ if (resultCode == Activity.RESULT_OK) {
+ if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {
+ // TODO: select?
+// EditKeyResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);
+// mSelectKeySpinner.setSelectedKeyId(result.mMasterKeyId);
+ } else {
+ Log.e(Constants.TAG, "missing result!");
+ }
+ }
+ break;
+ }
+ default: {
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+ }
+
+}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/SelectSignKeyIdListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/SelectSignKeyIdListFragment.java
new file mode 100644
index 000000000..e3768aa9b
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/SelectSignKeyIdListFragment.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2015 Dominik Schürmann <dominik@dominikschuermann.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.sufficientlysecure.keychain.remote.ui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
+
+import org.openintents.openpgp.util.OpenPgpApi;
+import org.sufficientlysecure.keychain.Constants;
+import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.compatibility.ListFragmentWorkaround;
+import org.sufficientlysecure.keychain.provider.KeychainContract;
+import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
+import org.sufficientlysecure.keychain.provider.ProviderHelper;
+import org.sufficientlysecure.keychain.ui.adapter.SelectKeyCursorAdapter;
+import org.sufficientlysecure.keychain.ui.widget.FixedListView;
+import org.sufficientlysecure.keychain.util.Log;
+
+public class SelectSignKeyIdListFragment extends ListFragmentWorkaround implements LoaderManager.LoaderCallbacks<Cursor> {
+ private static final String ARG_DATA_URI = "uri";
+ public static final String ARG_DATA = "data";
+
+ private SelectKeyCursorAdapter mAdapter;
+ private ProviderHelper mProviderHelper;
+
+ private Uri mDataUri;
+
+ /**
+ * Creates new instance of this fragment
+ */
+ public static SelectSignKeyIdListFragment newInstance(Uri dataUri, Intent data) {
+ SelectSignKeyIdListFragment frag = new SelectSignKeyIdListFragment();
+ Bundle args = new Bundle();
+
+ args.putParcelable(ARG_DATA_URI, dataUri);
+ args.putParcelable(ARG_DATA, data);
+
+ frag.setArguments(args);
+
+ return frag;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mProviderHelper = new ProviderHelper(getActivity());
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View layout = super.onCreateView(inflater, container,
+ savedInstanceState);
+ ListView lv = (ListView) layout.findViewById(android.R.id.list);
+ ViewGroup parent = (ViewGroup) lv.getParent();
+
+ /*
+ * http://stackoverflow.com/a/15880684
+ * Remove ListView and add FixedListView in its place.
+ * This is done here programatically to be still able to use the progressBar of ListFragment.
+ *
+ * We want FixedListView to be able to put this ListFragment inside a ScrollView
+ */
+ int lvIndex = parent.indexOfChild(lv);
+ parent.removeViewAt(lvIndex);
+ FixedListView newLv = new FixedListView(getActivity());
+ newLv.setId(android.R.id.list);
+ parent.addView(newLv, lvIndex, lv.getLayoutParams());
+ return layout;
+ }
+
+ /**
+ * Define Adapter and Loader on create of Activity
+ */
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ mDataUri = getArguments().getParcelable(ARG_DATA_URI);
+ final Intent resultData = getArguments().getParcelable(ARG_DATA);
+
+ getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
+ getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ long masterKeyId = mAdapter.getMasterKeyId(position);
+
+ Uri allowedKeysUri = mDataUri.buildUpon().appendPath(KeychainContract.PATH_ALLOWED_KEYS).build();
+ Log.d(Constants.TAG, "allowedKeysUri: " + allowedKeysUri);
+ mProviderHelper.addAllowedKeyIdForApp(allowedKeysUri, masterKeyId);
+
+ resultData.putExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, masterKeyId);
+
+ getActivity().setResult(Activity.RESULT_OK, resultData);
+ getActivity().finish();
+ }
+ });
+
+ // Give some text to display if there is no data. In a real
+ // application this would come from a resource.
+ setEmptyText(getString(R.string.list_empty));
+
+ mAdapter = new SecretKeyCursorAdapter(getActivity(), null, 0, getListView());
+
+ setListAdapter(mAdapter);
+
+ // Start out with a progress indicator.
+ setListShown(false);
+
+ // Prepare the loader. Either re-connect with an existing one,
+ // or start a new one.
+ getLoaderManager().initLoader(0, null, this);
+ }
+
+ @Override
+ public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+ Uri baseUri = KeyRings.buildUnifiedKeyRingsUri();
+
+ // These are the rows that we will retrieve.
+ String[] projection = new String[]{
+ KeyRings._ID,
+ KeyRings.MASTER_KEY_ID,
+ KeyRings.USER_ID,
+ KeyRings.IS_EXPIRED,
+ KeyRings.IS_REVOKED,
+ KeyRings.HAS_ENCRYPT,
+ KeyRings.VERIFIED,
+ KeyRings.HAS_ANY_SECRET,
+ KeyRings.HAS_DUPLICATE_USER_ID,
+ KeyRings.CREATION,
+ };
+
+ String selection = KeyRings.HAS_ANY_SECRET + " != 0";
+
+ String orderBy = KeyRings.USER_ID + " ASC";
+ // Now create and return a CursorLoader that will take care of
+ // creating a Cursor for the data being displayed.
+ return new CursorLoader(getActivity(), baseUri, projection, selection, null, orderBy);
+ }
+
+ @Override
+ public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+ // Swap the new cursor in. (The framework will take care of closing the
+ // old cursor once we return.)
+ mAdapter.swapCursor(data);
+
+ // The list should now be shown.
+ if (isResumed()) {
+ setListShown(true);
+ } else {
+ setListShownNoAnimation(true);
+ }
+
+ }
+
+ @Override
+ public void onLoaderReset(Loader<Cursor> loader) {
+ // This is called when the last Cursor provided to onLoadFinished()
+ // above is about to be closed. We need to make sure we are no
+ // longer using it.
+ mAdapter.swapCursor(null);
+ }
+
+ private class SecretKeyCursorAdapter extends SelectKeyCursorAdapter {
+
+ public SecretKeyCursorAdapter(Context context, Cursor c, int flags, ListView listView) {
+ super(context, c, flags, listView);
+ }
+
+ @Override
+ protected void initIndex(Cursor cursor) {
+ super.initIndex(cursor);
+ }
+
+ @Override
+ public void bindView(View view, Context context, Cursor cursor) {
+ super.bindView(view, context, cursor);
+ ViewHolderItem h = (ViewHolderItem) view.getTag();
+
+ h.selected.setVisibility(View.GONE);
+
+ boolean enabled = false;
+ if ((Boolean) h.statusIcon.getTag()) {
+ h.statusIcon.setVisibility(View.GONE);
+ enabled = true;
+ }
+ h.setEnabled(enabled);
+ }
+
+ }
+
+}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
index 0ddf0c76d..95bd0de35 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
@@ -68,6 +68,7 @@ import org.sufficientlysecure.keychain.pgp.SignEncryptParcel;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralMsgIdException;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
+import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler.MessageStatus;
import org.sufficientlysecure.keychain.util.FileHelper;
import org.sufficientlysecure.keychain.util.InputData;
import org.sufficientlysecure.keychain.util.Log;
@@ -134,8 +135,21 @@ public class KeychainIntentService extends IntentService implements Progressable
public static final String SOURCE = "source";
// possible targets:
- public static final int IO_BYTES = 1;
- public static final int IO_URI = 2;
+ public static enum IOType {
+ UNKNOWN,
+ BYTES,
+ URI;
+
+ private static final IOType[] values = values();
+
+ public static IOType fromInt(int n) {
+ if(n < 0 || n >= values.length) {
+ return UNKNOWN;
+ } else {
+ return values[n];
+ }
+ }
+ }
// encrypt
public static final String ENCRYPT_DECRYPT_INPUT_URI = "input_uri";
@@ -252,7 +266,7 @@ public class KeychainIntentService extends IntentService implements Progressable
CertifyResult result = op.certify(parcel, keyServerUri);
// Result
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, result);
+ sendMessageToHandler(MessageStatus.OKAY, result);
break;
}
@@ -267,7 +281,7 @@ public class KeychainIntentService extends IntentService implements Progressable
}
// Result
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, result);
+ sendMessageToHandler(MessageStatus.OKAY, result);
break;
}
@@ -296,7 +310,7 @@ public class KeychainIntentService extends IntentService implements Progressable
DecryptVerifyResult decryptVerifyResult = builder.build().execute();
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, decryptVerifyResult);
+ sendMessageToHandler(MessageStatus.OKAY, decryptVerifyResult);
} catch (Exception e) {
sendErrorToHandler(e);
}
@@ -357,7 +371,7 @@ public class KeychainIntentService extends IntentService implements Progressable
}
// kind of awkward, but this whole class wants to pull bytes out of “data”
- data.putInt(KeychainIntentService.TARGET, KeychainIntentService.IO_BYTES);
+ data.putInt(KeychainIntentService.TARGET, IOType.BYTES.ordinal());
data.putByteArray(KeychainIntentService.DECRYPT_CIPHERTEXT_BYTES, messageBytes);
InputData inputData = createDecryptInputData(data);
@@ -394,7 +408,7 @@ public class KeychainIntentService extends IntentService implements Progressable
resultData.putString(KeychainIntentServiceHandler.KEYBASE_PROOF_URL, prover.getProofUrl());
resultData.putString(KeychainIntentServiceHandler.KEYBASE_PRESENCE_URL, prover.getPresenceUrl());
resultData.putString(KeychainIntentServiceHandler.KEYBASE_PRESENCE_LABEL, prover.getPresenceLabel());
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, resultData);
+ sendMessageToHandler(MessageStatus.OKAY, resultData);
} catch (Exception e) {
sendErrorToHandler(e);
}
@@ -437,7 +451,7 @@ public class KeychainIntentService extends IntentService implements Progressable
Log.logDebugBundle(resultData, "resultData");
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, resultData);
+ sendMessageToHandler(MessageStatus.OKAY, resultData);
} catch (Exception e) {
sendErrorToHandler(e);
}
@@ -455,7 +469,7 @@ public class KeychainIntentService extends IntentService implements Progressable
DeleteResult result = op.execute(masterKeyIds, isSecret);
// Result
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, result);
+ sendMessageToHandler(MessageStatus.OKAY, result);
break;
}
@@ -470,7 +484,7 @@ public class KeychainIntentService extends IntentService implements Progressable
EditKeyResult result = op.execute(saveParcel, passphrase);
// Result
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, result);
+ sendMessageToHandler(MessageStatus.OKAY, result);
break;
}
@@ -484,7 +498,7 @@ public class KeychainIntentService extends IntentService implements Progressable
PromoteKeyResult result = op.execute(keyRingId);
// Result
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, result);
+ sendMessageToHandler(MessageStatus.OKAY, result);
break;
}
@@ -508,7 +522,7 @@ public class KeychainIntentService extends IntentService implements Progressable
}
// Result
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, result);
+ sendMessageToHandler(MessageStatus.OKAY, result);
break;
}
@@ -529,7 +543,7 @@ public class KeychainIntentService extends IntentService implements Progressable
: importExportOperation.importKeyRings(cache, keyServer);
// Result
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, result);
+ sendMessageToHandler(MessageStatus.OKAY, result);
break;
@@ -545,7 +559,7 @@ public class KeychainIntentService extends IntentService implements Progressable
SignEncryptResult result = op.execute(inputParcel);
// Result
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, result);
+ sendMessageToHandler(MessageStatus.OKAY, result);
break;
}
@@ -568,7 +582,7 @@ public class KeychainIntentService extends IntentService implements Progressable
throw new PgpGeneralException("Unable to export key to selected server");
}
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY);
+ sendMessageToHandler(MessageStatus.OKAY);
} catch (Exception e) {
sendErrorToHandler(e);
}
@@ -590,7 +604,7 @@ public class KeychainIntentService extends IntentService implements Progressable
private void sendProofError(String msg) {
Bundle bundle = new Bundle();
bundle.putString(KeychainIntentServiceHandler.DATA_ERROR, msg);
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, bundle);
+ sendMessageToHandler(MessageStatus.OKAY, bundle);
}
private void sendErrorToHandler(Exception e) {
@@ -607,14 +621,14 @@ public class KeychainIntentService extends IntentService implements Progressable
Bundle data = new Bundle();
data.putString(KeychainIntentServiceHandler.DATA_ERROR, message);
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_EXCEPTION, null, data);
+ sendMessageToHandler(MessageStatus.EXCEPTION, null, data);
}
- private void sendMessageToHandler(Integer arg1, Integer arg2, Bundle data) {
+ private void sendMessageToHandler(MessageStatus status, Integer arg2, Bundle data) {
Message msg = Message.obtain();
assert msg != null;
- msg.arg1 = arg1;
+ msg.arg1 = status.ordinal();
if (arg2 != null) {
msg.arg2 = arg2;
}
@@ -631,18 +645,18 @@ public class KeychainIntentService extends IntentService implements Progressable
}
}
- private void sendMessageToHandler(Integer arg1, OperationResult data) {
+ private void sendMessageToHandler(MessageStatus status, OperationResult data) {
Bundle bundle = new Bundle();
bundle.putParcelable(OperationResult.EXTRA_RESULT, data);
- sendMessageToHandler(arg1, null, bundle);
+ sendMessageToHandler(status, null, bundle);
}
- private void sendMessageToHandler(Integer arg1, Bundle data) {
- sendMessageToHandler(arg1, null, data);
+ private void sendMessageToHandler(MessageStatus status, Bundle data) {
+ sendMessageToHandler(status, null, data);
}
- private void sendMessageToHandler(Integer arg1) {
- sendMessageToHandler(arg1, null, null);
+ private void sendMessageToHandler(MessageStatus status) {
+ sendMessageToHandler(status, null, null);
}
/**
@@ -659,7 +673,7 @@ public class KeychainIntentService extends IntentService implements Progressable
data.putInt(KeychainIntentServiceHandler.DATA_PROGRESS, progress);
data.putInt(KeychainIntentServiceHandler.DATA_PROGRESS_MAX, max);
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_UPDATE_PROGRESS, null, data);
+ sendMessageToHandler(MessageStatus.UPDATE_PROGRESS, null, data);
}
public void setProgress(int resourceId, int progress, int max) {
@@ -672,7 +686,7 @@ public class KeychainIntentService extends IntentService implements Progressable
@Override
public void setPreventCancel() {
- sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_PREVENT_CANCEL);
+ sendMessageToHandler(MessageStatus.PREVENT_CANCEL);
}
private InputData createDecryptInputData(Bundle data) throws IOException, PgpGeneralException {
@@ -681,35 +695,37 @@ public class KeychainIntentService extends IntentService implements Progressable
private InputData createCryptInputData(Bundle data, String bytesName) throws PgpGeneralException, IOException {
int source = data.get(SOURCE) != null ? data.getInt(SOURCE) : data.getInt(TARGET);
- switch (source) {
- case IO_BYTES: /* encrypting bytes directly */
+ IOType type = IOType.fromInt(source);
+ switch (type) {
+ case BYTES: /* encrypting bytes directly */
byte[] bytes = data.getByteArray(bytesName);
return new InputData(new ByteArrayInputStream(bytes), bytes.length);
- case IO_URI: /* encrypting content uri */
+ case URI: /* encrypting content uri */
Uri providerUri = data.getParcelable(ENCRYPT_DECRYPT_INPUT_URI);
// InputStream
return new InputData(getContentResolver().openInputStream(providerUri), FileHelper.getFileSize(this, providerUri, 0));
default:
- throw new PgpGeneralException("No target choosen!");
+ throw new PgpGeneralException("No target chosen!");
}
}
private OutputStream createCryptOutputStream(Bundle data) throws PgpGeneralException, FileNotFoundException {
int target = data.getInt(TARGET);
- switch (target) {
- case IO_BYTES:
+ IOType type = IOType.fromInt(target);
+ switch (type) {
+ case BYTES:
return new ByteArrayOutputStream();
- case IO_URI:
+ case URI:
Uri providerUri = data.getParcelable(ENCRYPT_DECRYPT_OUTPUT_URI);
return getContentResolver().openOutputStream(providerUri);
default:
- throw new PgpGeneralException("No target choosen!");
+ throw new PgpGeneralException("No target chosen!");
}
}
@@ -719,12 +735,13 @@ public class KeychainIntentService extends IntentService implements Progressable
private void finalizeCryptOutputStream(Bundle data, Bundle resultData, OutputStream outStream, String bytesName) {
int target = data.getInt(TARGET);
- switch (target) {
- case IO_BYTES:
+ IOType type = IOType.fromInt(target);
+ switch (type) {
+ case BYTES:
byte output[] = ((ByteArrayOutputStream) outStream).toByteArray();
resultData.putByteArray(bytesName, output);
break;
- case IO_URI:
+ case URI:
// nothing, output was written, just send okay and verification bundle
break;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java
index 635fe86f1..bd047518d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java
@@ -32,11 +32,25 @@ import org.sufficientlysecure.keychain.util.Log;
public class KeychainIntentServiceHandler extends Handler {
- // possible messages send from this service to handler on ui
- public static final int MESSAGE_OKAY = 1;
- public static final int MESSAGE_EXCEPTION = 2;
- public static final int MESSAGE_UPDATE_PROGRESS = 3;
- public static final int MESSAGE_PREVENT_CANCEL = 4;
+ // possible messages sent from this service to handler on ui
+ public static enum MessageStatus{
+ UNKNOWN,
+ OKAY,
+ EXCEPTION,
+ UPDATE_PROGRESS,
+ PREVENT_CANCEL;
+
+ private static final MessageStatus[] values = values();
+
+ public static MessageStatus fromInt(int n)
+ {
+ if(n < 0 || n >= values.length) {
+ return UNKNOWN;
+ } else {
+ return values[n];
+ }
+ }
+ }
// possible data keys for messages
public static final String DATA_ERROR = "error";
@@ -103,13 +117,14 @@ public class KeychainIntentServiceHandler extends Handler {
return;
}
- switch (message.arg1) {
- case MESSAGE_OKAY:
+ MessageStatus status = MessageStatus.fromInt(message.arg1);
+ switch (status) {
+ case OKAY:
mProgressDialogFragment.dismissAllowingStateLoss();
break;
- case MESSAGE_EXCEPTION:
+ case EXCEPTION:
mProgressDialogFragment.dismissAllowingStateLoss();
// show error from service
@@ -121,7 +136,7 @@ public class KeychainIntentServiceHandler extends Handler {
break;
- case MESSAGE_UPDATE_PROGRESS:
+ case UPDATE_PROGRESS:
if (data.containsKey(DATA_PROGRESS) && data.containsKey(DATA_PROGRESS_MAX)) {
// update progress from service
@@ -139,7 +154,7 @@ public class KeychainIntentServiceHandler extends Handler {
break;
- case MESSAGE_PREVENT_CANCEL:
+ case PREVENT_CANCEL:
mProgressDialogFragment.setPreventCancel(true);
break;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
index 6ac7630bf..a2d4a3d7c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
@@ -394,7 +394,7 @@ public class CertifyKeyFragment extends LoaderFragment
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
Bundle data = message.getData();
CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ConsolidateDialogActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ConsolidateDialogActivity.java
index f0ef8b9ef..c55aad1f9 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ConsolidateDialogActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ConsolidateDialogActivity.java
@@ -57,7 +57,7 @@ public class ConsolidateDialogActivity extends FragmentActivity {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
/* don't care about the results (for now?)
// get returned data bundle
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
index 4853c61c5..ae42c891d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
@@ -214,7 +214,7 @@ public class CreateKeyFinalFragment extends Fragment {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
if (returnData == null) {
@@ -284,7 +284,7 @@ public class CreateKeyFinalFragment extends Fragment {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// TODO: upload operation needs a result!
// TODO: then combine these results
//if (result.getResult() == OperationResultParcel.RESULT_OK) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java
index 5606523be..c808557a6 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java
@@ -37,6 +37,7 @@ import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
+import org.sufficientlysecure.keychain.service.KeychainIntentService.IOType;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
import org.sufficientlysecure.keychain.ui.dialog.DeleteFileDialogFragment;
import org.sufficientlysecure.keychain.ui.util.Notify;
@@ -182,10 +183,10 @@ public class DecryptFilesFragment extends DecryptFragment {
// data
Log.d(Constants.TAG, "mInputUri=" + mInputUri + ", mOutputUri=" + mOutputUri);
- data.putInt(KeychainIntentService.SOURCE, KeychainIntentService.IO_URI);
+ data.putInt(KeychainIntentService.SOURCE, IOType.URI.ordinal());
data.putParcelable(KeychainIntentService.ENCRYPT_DECRYPT_INPUT_URI, mInputUri);
- data.putInt(KeychainIntentService.TARGET, KeychainIntentService.IO_URI);
+ data.putInt(KeychainIntentService.TARGET, IOType.URI.ordinal());
data.putParcelable(KeychainIntentService.ENCRYPT_DECRYPT_OUTPUT_URI, mOutputUri);
data.putString(KeychainIntentService.DECRYPT_PASSPHRASE, mPassphrase);
@@ -200,7 +201,7 @@ public class DecryptFilesFragment extends DecryptFragment {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
@@ -256,10 +257,10 @@ public class DecryptFilesFragment extends DecryptFragment {
// data
Log.d(Constants.TAG, "mInputUri=" + mInputUri + ", mOutputUri=" + mOutputUri);
- data.putInt(KeychainIntentService.SOURCE, KeychainIntentService.IO_URI);
+ data.putInt(KeychainIntentService.SOURCE, IOType.URI.ordinal());
data.putParcelable(KeychainIntentService.ENCRYPT_DECRYPT_INPUT_URI, mInputUri);
- data.putInt(KeychainIntentService.TARGET, KeychainIntentService.IO_URI);
+ data.putInt(KeychainIntentService.TARGET, IOType.URI.ordinal());
data.putParcelable(KeychainIntentService.ENCRYPT_DECRYPT_OUTPUT_URI, mOutputUri);
data.putString(KeychainIntentService.DECRYPT_PASSPHRASE, mPassphrase);
@@ -274,7 +275,7 @@ public class DecryptFilesFragment extends DecryptFragment {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
index a15b23c06..1b34f6bf0 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
@@ -36,6 +36,7 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.ClipboardReflection;
import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
+import org.sufficientlysecure.keychain.service.KeychainIntentService.IOType;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.util.Log;
@@ -158,7 +159,7 @@ public class DecryptTextFragment extends DecryptFragment {
intent.setAction(KeychainIntentService.ACTION_DECRYPT_VERIFY);
// data
- data.putInt(KeychainIntentService.TARGET, KeychainIntentService.IO_BYTES);
+ data.putInt(KeychainIntentService.TARGET, IOType.BYTES.ordinal());
data.putByteArray(KeychainIntentService.DECRYPT_CIPHERTEXT_BYTES, mCiphertext.getBytes());
data.putString(KeychainIntentService.DECRYPT_PASSPHRASE, mPassphrase);
data.putByteArray(KeychainIntentService.DECRYPT_NFC_DECRYPTED_SESSION_KEY, mNfcDecryptedSessionKey);
@@ -172,7 +173,7 @@ public class DecryptTextFragment extends DecryptFragment {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
index d9a5519d6..de1eb64c2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
@@ -605,7 +605,7 @@ public class EditKeyFragment extends LoaderFragment implements
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java
index ed5920cde..35dfcb87c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java
@@ -128,7 +128,7 @@ public abstract class EncryptActivity extends BaseActivity {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
SignEncryptResult result =
message.getData().getParcelable(SignEncryptResult.EXTRA_RESULT);
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/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
index 71f6fd4bf..d51e2c7fc 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
@@ -302,7 +302,7 @@ public class ImportKeysActivity extends BaseActivity {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
if (returnData == null) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java
index 948da94d8..cc8b47971 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java
@@ -222,7 +222,7 @@ public class ImportKeysProxyActivity extends FragmentActivity {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
if (returnData == null) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
index 43d893fa6..8c34efba2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
@@ -270,7 +270,8 @@ public class KeyListFragment extends LoaderFragment
KeyRings.IS_REVOKED,
KeyRings.IS_EXPIRED,
KeyRings.VERIFIED,
- KeyRings.HAS_ANY_SECRET
+ KeyRings.HAS_ANY_SECRET,
+ KeyRings.HAS_DUPLICATE_USER_ID,
};
static final int INDEX_MASTER_KEY_ID = 1;
@@ -279,6 +280,7 @@ public class KeyListFragment extends LoaderFragment
static final int INDEX_IS_EXPIRED = 4;
static final int INDEX_VERIFIED = 5;
static final int INDEX_HAS_ANY_SECRET = 6;
+ static final int INDEX_HAS_DUPLICATE_USER_ID = 7;
static final String ORDER =
KeyRings.HAS_ANY_SECRET + " DESC, UPPER(" + KeyRings.USER_ID + ") ASC";
@@ -552,7 +554,7 @@ public class KeyListFragment extends LoaderFragment
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
if (returnData == null) {
@@ -707,6 +709,7 @@ public class KeyListFragment extends LoaderFragment
boolean isRevoked = cursor.getInt(INDEX_IS_REVOKED) > 0;
boolean isExpired = cursor.getInt(INDEX_IS_EXPIRED) != 0;
boolean isVerified = cursor.getInt(INDEX_VERIFIED) > 0;
+ boolean hasDuplicate = cursor.getInt(INDEX_HAS_DUPLICATE_USER_ID) == 1;
h.mMasterKeyId = masterKeyId;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java
index d1df2906d..d0cea5f05 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java
@@ -132,7 +132,7 @@ public class SafeSlingerActivity extends BaseActivity {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
if (returnData == null) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
index 65d7eca37..6f48b7455 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
@@ -263,6 +263,8 @@ public class SelectPublicKeyFragment extends ListFragmentWorkaround implements T
KeyRings.IS_REVOKED,
KeyRings.HAS_ENCRYPT,
KeyRings.VERIFIED,
+ KeyRings.HAS_DUPLICATE_USER_ID,
+ KeyRings.CREATION,
};
String inMasterKeyList = null;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java
index e19793fd5..4fb2074a5 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java
@@ -113,7 +113,7 @@ public class UploadKeyActivity extends BaseActivity {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
Toast.makeText(UploadKeyActivity.this, R.string.msg_crt_upload_success,
Toast.LENGTH_SHORT).show();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
index 3edadec2f..70c590728 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
@@ -25,6 +25,7 @@ import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
@@ -74,6 +75,7 @@ import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
import org.sufficientlysecure.keychain.ui.linked.LinkedIdWizard;
+import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler.MessageStatus;
import org.sufficientlysecure.keychain.ui.util.FormattingUtils;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.State;
@@ -364,6 +366,11 @@ public class ViewKeyActivity extends BaseActivity implements
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void invokeNfcBeam() {
+ // Check if device supports NFC
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) {
+ Notify.createNotify(this, R.string.no_nfc_support, Notify.LENGTH_LONG, Notify.Style.ERROR).show();
+ return;
+ }
// Check for available NFC Adapter
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (mNfcAdapter == null || !mNfcAdapter.isEnabled()) {
@@ -420,7 +427,7 @@ public class ViewKeyActivity extends BaseActivity implements
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
Bundle data = message.getData();
CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT);
@@ -477,7 +484,7 @@ public class ViewKeyActivity extends BaseActivity implements
Handler returnHandler = new Handler() {
@Override
public void handleMessage(Message message) {
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
setResult(RESULT_CANCELED);
finish();
}
@@ -586,7 +593,7 @@ public class ViewKeyActivity extends BaseActivity implements
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java
index 06db6eadc..8610b2fee 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java
@@ -56,6 +56,8 @@ import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.util.ContactHelper;
import org.sufficientlysecure.keychain.util.Log;
+import java.util.List;
+
public class ViewKeyFragment extends LoaderFragment implements
LoaderManager.LoaderCallbacks<Cursor> {
@@ -67,7 +69,7 @@ public class ViewKeyFragment extends LoaderFragment implements
//private ListView mLinkedSystemContact;
boolean mIsSecret = false;
- private String mName;
+ boolean mSystemContactLoaded = false;
LinearLayout mSystemContactLayout;
ImageView mSystemContactPicture;
@@ -209,28 +211,48 @@ public class ViewKeyFragment extends LoaderFragment implements
/**
* Checks if a system contact exists for given masterKeyId, and if it does, sets name, picture
* and onClickListener for the linked system contact's layout
+ * In the case of a secret key, "me" contact details are loaded
*
- * @param name
* @param masterKeyId
*/
- private void loadLinkedSystemContact(String name, final long masterKeyId) {
+ private void loadLinkedSystemContact(final long masterKeyId) {
final Context context = mSystemContactName.getContext();
final ContentResolver resolver = context.getContentResolver();
- final long contactId = ContactHelper.findContactId(resolver, masterKeyId);
+ long contactId;
+ String contactName = null;
+
+ if (mIsSecret) {//all secret keys are linked to "me" profile in contacts
+ contactId = ContactHelper.getMainProfileContactId(resolver);
+ List<String> mainProfileNames = ContactHelper.getMainProfileContactName(context);
+ if (mainProfileNames != null && mainProfileNames.size() > 0) {
+ contactName = mainProfileNames.get(0);
+ }
- if (contactId != -1) {//contact exists for given master key
- mSystemContactName.setText(name);
+ } else {
+ contactId = ContactHelper.findContactId(resolver, masterKeyId);
+ contactName = ContactHelper.getContactName(resolver, contactId);
+ }
- Bitmap picture = ContactHelper.loadPhotoByMasterKeyId(resolver, masterKeyId, true);
+ if (contactName != null) {//contact name exists for given master key
+ mSystemContactName.setText(contactName);
+
+ Bitmap picture;
+ if (mIsSecret) {
+ picture = ContactHelper.loadMainProfilePhoto(resolver, false);
+ } else {
+ picture = ContactHelper.loadPhotoByMasterKeyId(resolver, masterKeyId, false);
+ }
if (picture != null) mSystemContactPicture.setImageBitmap(picture);
+ final long finalContactId = contactId;
mSystemContactLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- launchContactActivity(contactId, context);
+ launchContactActivity(finalContactId, context);
}
});
+ mSystemContactLoaded = true;
}
}
@@ -291,10 +313,7 @@ public class ViewKeyFragment extends LoaderFragment implements
switch (loader.getId()) {
case LOADER_ID_USER_IDS: {
mUserIdsAdapter.swapCursor(cursor);
-
- String guessedName = mUserIdsAdapter.getGuessedName();
- loadLinkedSystemContact(guessedName,
- KeyFormattingUtils.convertFingerprintToKeyId(mFingerprint));
+ loadLinkedSystemContact(KeyFormattingUtils.convertFingerprintToKeyId(mFingerprint));
break;
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java
index d22f01a48..e20796f8f 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java
@@ -368,7 +368,7 @@ public class ViewKeyTrustFragment extends LoaderFragment implements
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
Bundle returnData = message.getData();
String msg = returnData.getString(KeychainIntentServiceHandler.DATA_MESSAGE);
SpannableStringBuilder ssb = new SpannableStringBuilder();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java
index 095cb0586..70b57aa93 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java
@@ -81,16 +81,6 @@ public class MultiUserIdsAdapter extends CursorAdapter {
ArrayList<String> uids = p.createStringArrayList();
p.recycle();
- if (isHeader == 1) {
- long masterKeyId = cursor.getLong(0);
- vHeaderId.setVisibility(View.VISIBLE);
- String message = mContext.getString(R.string.section_uids_to_certify) +
- KeyFormattingUtils.beautifyKeyIdWithPrefix(mContext, masterKeyId);
- vHeaderId.setText(message);
- } else {
- vHeaderId.setVisibility(View.GONE);
- }
-
{ // first one
String userId = uids.get(0);
String[] splitUserId = KeyRing.splitUserId(userId);
@@ -99,6 +89,21 @@ public class MultiUserIdsAdapter extends CursorAdapter {
} else {
vName.setText(R.string.user_id_no_name);
}
+
+ if (isHeader == 1) {
+ vHeaderId.setVisibility(View.VISIBLE);
+ String message;
+ if (splitUserId[0] != null) {
+ message = mContext.getString(R.string.section_uids_to_certify) +
+ splitUserId[0];
+ } else {
+ message = mContext.getString(R.string.section_uids_to_certify) +
+ context.getString(R.string.user_id_no_name);
+ }
+ vHeaderId.setText(message);
+ } else {
+ vHeaderId.setVisibility(View.GONE);
+ }
}
StringBuilder lines = new StringBuilder();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java
index 226fda20b..892e30a54 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java
@@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.ui.adapter;
import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.CursorAdapter;
+import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -35,6 +36,10 @@ import org.sufficientlysecure.keychain.ui.util.Highlighter;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.State;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.TimeZone;
+
/**
* Yes this class is abstract!
@@ -44,7 +49,8 @@ abstract public class SelectKeyCursorAdapter extends CursorAdapter {
private String mQuery;
private LayoutInflater mInflater;
- protected int mIndexUserId, mIndexMasterKeyId, mIndexIsExpiry, mIndexIsRevoked;
+ protected int mIndexUserId, mIndexMasterKeyId, mIndexIsExpiry, mIndexIsRevoked,
+ mIndexDuplicateUserId, mIndexCreation;
public SelectKeyCursorAdapter(Context context, Cursor c, int flags, ListView listView) {
super(context, c, flags);
@@ -75,6 +81,8 @@ abstract public class SelectKeyCursorAdapter extends CursorAdapter {
mIndexMasterKeyId = cursor.getColumnIndexOrThrow(KeyRings.MASTER_KEY_ID);
mIndexIsExpiry = cursor.getColumnIndexOrThrow(KeyRings.IS_EXPIRED);
mIndexIsRevoked = cursor.getColumnIndexOrThrow(KeyRings.IS_REVOKED);
+ mIndexDuplicateUserId = cursor.getColumnIndexOrThrow(KeyRings.HAS_DUPLICATE_USER_ID);
+ mIndexCreation = cursor.getColumnIndexOrThrow(KeyRings.CREATION);
}
}
@@ -90,7 +98,7 @@ abstract public class SelectKeyCursorAdapter extends CursorAdapter {
public static class ViewHolderItem {
public View view;
- public TextView mainUserId, mainUserIdRest, keyId;
+ public TextView mainUserId, mainUserIdRest, creation;
public ImageView statusIcon;
public CheckBox selected;
@@ -99,7 +107,7 @@ abstract public class SelectKeyCursorAdapter extends CursorAdapter {
selected.setEnabled(enabled);
mainUserId.setEnabled(enabled);
mainUserIdRest.setEnabled(enabled);
- keyId.setEnabled(enabled);
+ creation.setEnabled(enabled);
statusIcon.setEnabled(enabled);
// Sorta special: We set an item as clickable to disable it in the ListView. This works
@@ -128,8 +136,20 @@ abstract public class SelectKeyCursorAdapter extends CursorAdapter {
h.mainUserIdRest.setVisibility(View.GONE);
}
- long masterKeyId = cursor.getLong(mIndexMasterKeyId);
- h.keyId.setText(KeyFormattingUtils.beautifyKeyIdWithPrefix(mContext, masterKeyId));
+ boolean duplicate = cursor.getLong(mIndexDuplicateUserId) > 0;
+ if (duplicate) {
+ Date creationDate = new Date(cursor.getLong(mIndexCreation) * 1000);
+ Calendar creationCal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ creationCal.setTime(creationDate);
+ // convert from UTC to time zone of device
+ creationCal.setTimeZone(TimeZone.getDefault());
+
+ h.creation.setText(context.getString(R.string.label_creation) + ": "
+ + DateFormat.getDateFormat(context).format(creationCal.getTime()));
+ h.creation.setVisibility(View.VISIBLE);
+ } else {
+ h.creation.setVisibility(View.GONE);
+ }
boolean enabled;
if (cursor.getInt(mIndexIsRevoked) != 0) {
@@ -155,7 +175,7 @@ abstract public class SelectKeyCursorAdapter extends CursorAdapter {
holder.view = view;
holder.mainUserId = (TextView) view.findViewById(R.id.select_key_item_name);
holder.mainUserIdRest = (TextView) view.findViewById(R.id.select_key_item_email);
- holder.keyId = (TextView) view.findViewById(R.id.select_key_item_key_id);
+ holder.creation = (TextView) view.findViewById(R.id.select_key_item_creation);
holder.statusIcon = (ImageView) view.findViewById(R.id.select_key_item_status_icon);
holder.selected = (CheckBox) view.findViewById(R.id.selected);
view.setTag(holder);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
index 7216bcfb3..1cf3f4d38 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
@@ -177,14 +177,6 @@ public class UserIdsAdapter extends UserAttributesAdapter {
return isRevokedPending;
}
- public String getGuessedName() {
- Cursor cursor = getCursor();
- cursor.moveToFirst();
- String userId = cursor.getString(INDEX_USER_ID);
- String[] splitUserId = KeyRing.splitUserId(userId);
- return splitUserId[0];
- }
-
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return mInflater.inflate(R.layout.view_key_adv_user_id_item, null);
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..bd4e5577b 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,21 @@ 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<Uri, String> 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.setTitle(getString(R.string.file_delete_confirmation_title));
+ alert.setMessage(getString(R.string.file_delete_confirmation, deleteFileNames.toString()));
alert.setPositiveButton(R.string.btn_delete, new DialogInterface.OnClickListener() {
@@ -72,43 +84,55 @@ 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<String> failedFileNameList = new ArrayList<>();
+
+ 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 Exception, can happen when delete is not supported!", e);
+ }
+ }
- // 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;
+ if (getActivity().getContentResolver().delete(deleteUri, null, null) > 0) {
+ continue;
}
- } catch (UnsupportedOperationException e) {
- Log.d(Constants.TAG, "Catched UnsupportedOperationException, can happen when delete is not supported!", e);
+ } catch (Exception e) {
+ Log.d(Constants.TAG, "Catched Exception, 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/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java
index 32789d53b..20f20c32e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java
@@ -142,7 +142,7 @@ public class DeleteKeyDialogFragment extends DialogFragment {
public void handleMessage(Message message) {
super.handleMessage(message);
// handle messages by standard KeychainIntentServiceHandler first
- if (message.arg1 == MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
try {
Message msg = Message.obtain();
msg.copyFrom(message);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateFinalFragment.java
index 30dfd8dfd..28fbe6f19 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateFinalFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdCreateFinalFragment.java
@@ -188,7 +188,7 @@ public abstract class LinkedIdCreateFinalFragment extends Fragment {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle returnData = message.getData();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java
index 1cec12b26..c39e40761 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java
@@ -557,7 +557,7 @@ public class LinkedIdViewFragment extends Fragment implements
Bundle data = message.getData();
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_UPDATE_PROGRESS) {
+ if (message.arg1 == MessageStatus.UPDATE_PROGRESS.ordinal()) {
if (data.containsKey(DATA_MESSAGE)) {
mViewHolder.vText.setText(data.getString(DATA_MESSAGE));
} else if (data.containsKey(DATA_MESSAGE_ID)) {
@@ -566,7 +566,7 @@ public class LinkedIdViewFragment extends Fragment implements
return;
}
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT);
result.createNotify(getActivity()).show();
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
index fc912fccb..460163a47 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
@@ -68,7 +68,9 @@ public class CertifyKeySpinner extends KeySpinner {
KeychainContract.KeyRings.IS_REVOKED,
KeychainContract.KeyRings.IS_EXPIRED,
KeychainContract.KeyRings.HAS_CERTIFY,
- KeychainContract.KeyRings.HAS_ANY_SECRET
+ KeychainContract.KeyRings.HAS_ANY_SECRET,
+ KeychainContract.KeyRings.HAS_DUPLICATE_USER_ID,
+ KeychainContract.KeyRings.CREATION
};
String where = KeychainContract.KeyRings.HAS_ANY_SECRET + " = 1 AND "
@@ -91,16 +93,31 @@ public class CertifyKeySpinner extends KeySpinner {
mIndexIsRevoked = data.getColumnIndex(KeychainContract.KeyRings.IS_REVOKED);
mIndexIsExpired = data.getColumnIndex(KeychainContract.KeyRings.IS_EXPIRED);
- // If there is only one choice, pick it by default
- if (mAdapter.getCount() == 2) {
+ // If:
+ // - no key has been pre-selected (e.g. by SageSlinger)
+ // - there are actually keys (not just "none" entry)
+ // Then:
+ // - select key that is capable of certifying, but only if there is only one key capable of it
+ if (mSelectedKeyId == Constants.key.none && mAdapter.getCount() > 1) {
// preselect if key can certify
- if (data.moveToPosition(0) && !data.isNull(mIndexHasCertify)) {
- setSelection(1);
+ int selection = -1;
+ while (data.moveToNext()) {
+ if (!data.isNull(mIndexHasCertify)) {
+ if (selection == -1) {
+ selection = data.getPosition() + 1;
+ } else {
+ // if selection is already set, we have more than one certify key!
+ // get back to "none"!
+ selection = 0;
+ }
+ }
}
+ setSelection(selection);
}
}
}
+
@Override
boolean setStatus(Context context, Cursor cursor, ImageView statusView) {
if (cursor.getInt(mIndexIsRevoked) != 0) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java
index d20e2bc99..94a321f29 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java
@@ -28,6 +28,7 @@ import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
+import android.text.format.DateFormat;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -51,9 +52,12 @@ import org.sufficientlysecure.keychain.util.ContactHelper;
import org.sufficientlysecure.keychain.util.Log;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import java.util.Locale;
+import java.util.TimeZone;
public class EncryptKeyCompletionView extends TokenCompleteTextView {
public EncryptKeyCompletionView(Context context) {
@@ -125,7 +129,9 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
KeyRings.USER_ID,
KeyRings.FINGERPRINT,
KeyRings.IS_EXPIRED,
- KeyRings.HAS_ENCRYPT
+ KeyRings.HAS_ENCRYPT,
+ KeyRings.HAS_DUPLICATE_USER_ID,
+ KeyRings.CREATION
};
String where = KeyRings.HAS_ENCRYPT + " NOT NULL AND " + KeyRings.IS_EXPIRED + " = 0 AND "
@@ -153,7 +159,7 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
public void onFocusChanged(boolean hasFocus, int direction, Rect previous) {
super.onFocusChanged(hasFocus, direction, previous);
if (hasFocus) {
- ((InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE))
+ ((InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE))
.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT);
}
}
@@ -180,25 +186,30 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
private String mUserIdFull;
private String[] mUserId;
private long mKeyId;
+ private boolean mHasDuplicate;
+ private Date mCreation;
private String mFingerprint;
- public EncryptionKey(String userId, long keyId, String fingerprint) {
- this.mUserId = KeyRing.splitUserId(userId);
- this.mUserIdFull = userId;
- this.mKeyId = keyId;
- this.mFingerprint = fingerprint;
+ public EncryptionKey(String userId, long keyId, boolean hasDuplicate, Date creation, String fingerprint) {
+ mUserId = KeyRing.splitUserId(userId);
+ mUserIdFull = userId;
+ mKeyId = keyId;
+ mHasDuplicate = hasDuplicate;
+ mCreation = creation;
+ mFingerprint = fingerprint;
}
public EncryptionKey(Cursor cursor) {
this(cursor.getString(cursor.getColumnIndexOrThrow(KeyRings.USER_ID)),
cursor.getLong(cursor.getColumnIndexOrThrow(KeyRings.KEY_ID)),
+ cursor.getLong(cursor.getColumnIndexOrThrow(KeyRings.HAS_DUPLICATE_USER_ID)) > 0,
+ new Date(cursor.getLong(cursor.getColumnIndexOrThrow(KeyRings.CREATION)) * 1000),
KeyFormattingUtils.convertFingerprintToHex(
cursor.getBlob(cursor.getColumnIndexOrThrow(KeyRings.FINGERPRINT))));
-
}
public EncryptionKey(CachedPublicKeyRing ring) throws PgpKeyNotFoundException {
- this(ring.getPrimaryUserId(), ring.extractOrGetMasterKeyId(),
+ this(ring.getPrimaryUserId(), ring.extractOrGetMasterKeyId(), false, null,
KeyFormattingUtils.convertFingerprintToHex(ring.getFingerprint()));
}
@@ -222,13 +233,13 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
if (mUserId[1] != null) {
return mUserId[1];
} else {
- return getKeyIdHex();
+ return getCreationDate();
}
}
public String getTertiary() {
if (mUserId[0] != null) {
- return getKeyIdHex();
+ return getCreationDate();
} else {
return null;
}
@@ -238,6 +249,20 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
return mKeyId;
}
+ public String getCreationDate() {
+ if (mHasDuplicate) {
+ Calendar creationCal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ creationCal.setTime(mCreation);
+ // convert from UTC to time zone of device
+ creationCal.setTimeZone(TimeZone.getDefault());
+
+ return getContext().getString(R.string.label_creation) + ": "
+ + DateFormat.getDateFormat(getContext()).format(creationCal.getTime());
+ } else {
+ return null;
+ }
+ }
+
public String getKeyIdHex() {
return KeyFormattingUtils.beautifyKeyIdWithPrefix(getContext(), mKeyId);
}
@@ -278,7 +303,7 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
protected boolean keepObject(EncryptionKey obj, String mask) {
String m = mask.toLowerCase(Locale.ENGLISH);
return obj.getUserId().toLowerCase(Locale.ENGLISH).contains(m) ||
- obj.getKeyIdHex().toString().contains(m) ||
+ obj.getKeyIdHex().contains(m) ||
obj.getKeyIdHexShort().startsWith(m);
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java
index 364712a48..aeb013c71 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java
@@ -25,6 +25,7 @@ import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
import android.support.v7.internal.widget.TintSpinner;
+import android.text.format.DateFormat;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
@@ -41,6 +42,10 @@ import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.util.Log;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.TimeZone;
+
/**
* Use TintSpinner from AppCompat lib instead of Spinner. Fixes white dropdown icon.
* Related: http://stackoverflow.com/a/27713090
@@ -50,7 +55,7 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo
public void onKeyChanged(long masterKeyId);
}
- protected long mSelectedKeyId;
+ protected long mSelectedKeyId = Constants.key.none;
protected SelectKeyAdapter mAdapter = new SelectKeyAdapter();
protected OnKeyChangedListener mListener;
@@ -135,11 +140,12 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo
protected class SelectKeyAdapter extends BaseAdapter implements SpinnerAdapter {
private CursorAdapter inner;
private int mIndexUserId;
- private int mIndexKeyId;
+ private int mIndexDuplicate;
private int mIndexMasterKeyId;
+ private int mIndexCreationDate;
public SelectKeyAdapter() {
- inner = new CursorAdapter(null, null, 0) {
+ inner = new CursorAdapter(getContext(), null, 0) {
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return View.inflate(getContext(), R.layout.keyspinner_item, null);
@@ -150,12 +156,26 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo
TextView vKeyName = (TextView) view.findViewById(R.id.keyspinner_key_name);
ImageView vKeyStatus = (ImageView) view.findViewById(R.id.keyspinner_key_status);
TextView vKeyEmail = (TextView) view.findViewById(R.id.keyspinner_key_email);
- TextView vKeyId = (TextView) view.findViewById(R.id.keyspinner_key_id);
+ TextView vDuplicate = (TextView) view.findViewById(R.id.keyspinner_duplicate);
String[] userId = KeyRing.splitUserId(cursor.getString(mIndexUserId));
vKeyName.setText(userId[2] == null ? userId[0] : (userId[0] + " (" + userId[2] + ")"));
vKeyEmail.setText(userId[1]);
- vKeyId.setText(KeyFormattingUtils.beautifyKeyIdWithPrefix(getContext(), cursor.getLong(mIndexKeyId)));
+
+ boolean duplicate = cursor.getLong(mIndexDuplicate) > 0;
+ if (duplicate) {
+ Date creationDate = new Date(cursor.getLong(mIndexCreationDate) * 1000);
+ Calendar creationCal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ creationCal.setTime(creationDate);
+ // convert from UTC to time zone of device
+ creationCal.setTimeZone(TimeZone.getDefault());
+
+ vDuplicate.setText(context.getString(R.string.label_creation) + ": "
+ + DateFormat.getDateFormat(context).format(creationCal.getTime()));
+ vDuplicate.setVisibility(View.VISIBLE);
+ } else {
+ vDuplicate.setVisibility(View.GONE);
+ }
boolean valid = setStatus(getContext(), cursor, vKeyStatus);
setItemEnabled(view, valid);
@@ -177,18 +197,18 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo
TextView vKeyName = (TextView) view.findViewById(R.id.keyspinner_key_name);
ImageView vKeyStatus = (ImageView) view.findViewById(R.id.keyspinner_key_status);
TextView vKeyEmail = (TextView) view.findViewById(R.id.keyspinner_key_email);
- TextView vKeyId = (TextView) view.findViewById(R.id.keyspinner_key_id);
+ TextView vKeyDuplicate = (TextView) view.findViewById(R.id.keyspinner_duplicate);
if (enabled) {
vKeyName.setTextColor(Color.BLACK);
vKeyEmail.setTextColor(Color.BLACK);
- vKeyId.setTextColor(Color.BLACK);
+ vKeyDuplicate.setTextColor(Color.BLACK);
vKeyStatus.setVisibility(View.GONE);
view.setClickable(false);
} else {
vKeyName.setTextColor(Color.GRAY);
vKeyEmail.setTextColor(Color.GRAY);
- vKeyId.setTextColor(Color.GRAY);
+ vKeyDuplicate.setTextColor(Color.GRAY);
vKeyStatus.setVisibility(View.VISIBLE);
// this is a HACK. the trick is, if the element itself is clickable, the
// click is not passed on to the view list
@@ -199,10 +219,13 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo
public Cursor swapCursor(Cursor newCursor) {
if (newCursor == null) return inner.swapCursor(null);
- mIndexKeyId = newCursor.getColumnIndex(KeychainContract.KeyRings.KEY_ID);
+ mIndexDuplicate = newCursor.getColumnIndex(KeychainContract.KeyRings.HAS_DUPLICATE_USER_ID);
mIndexUserId = newCursor.getColumnIndex(KeychainContract.KeyRings.USER_ID);
mIndexMasterKeyId = newCursor.getColumnIndex(KeychainContract.KeyRings.MASTER_KEY_ID);
- if (newCursor.moveToFirst()) {
+ mIndexCreationDate = newCursor.getColumnIndex(KeychainContract.KeyRings.CREATION);
+
+ // pre-select key if mSelectedKeyId is given
+ if (mSelectedKeyId != Constants.key.none && newCursor.moveToFirst()) {
do {
if (newCursor.getLong(mIndexMasterKeyId) == mSelectedKeyId) {
setSelection(newCursor.getPosition() + 1);
@@ -253,19 +276,17 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo
TextView vKeyName = (TextView) view.findViewById(R.id.keyspinner_key_name);
ImageView vKeyStatus = (ImageView) view.findViewById(R.id.keyspinner_key_status);
TextView vKeyEmail = (TextView) view.findViewById(R.id.keyspinner_key_email);
- TextView vKeyId = (TextView) view.findViewById(R.id.keyspinner_key_id);
+ TextView vKeyDuplicate = (TextView) view.findViewById(R.id.keyspinner_duplicate);
vKeyName.setText(R.string.choice_none);
vKeyEmail.setVisibility(View.GONE);
- vKeyId.setVisibility(View.GONE);
+ vKeyDuplicate.setVisibility(View.GONE);
vKeyStatus.setVisibility(View.GONE);
setItemEnabled(view, true);
} else {
view = inner.getView(position - 1, convertView, parent);
TextView vKeyEmail = (TextView) view.findViewById(R.id.keyspinner_key_email);
- TextView vKeyId = (TextView) view.findViewById(R.id.keyspinner_key_id);
vKeyEmail.setVisibility(View.VISIBLE);
- vKeyId.setVisibility(View.VISIBLE);
}
return view;
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java
index 10327a6a4..df7347fa4 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java
@@ -59,7 +59,9 @@ public class SignKeySpinner extends KeySpinner {
KeychainContract.KeyRings.IS_REVOKED,
KeychainContract.KeyRings.IS_EXPIRED,
KeychainContract.KeyRings.HAS_SIGN,
- KeychainContract.KeyRings.HAS_ANY_SECRET
+ KeychainContract.KeyRings.HAS_ANY_SECRET,
+ KeychainContract.KeyRings.HAS_DUPLICATE_USER_ID,
+ KeychainContract.KeyRings.CREATION
};
String where = KeychainContract.KeyRings.HAS_ANY_SECRET + " = 1";
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java
index 1413273e8..6efc0a5ea 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java
@@ -190,7 +190,7 @@ public class ContactHelper {
* @param context
* @return
*/
- private static List<String> getMainProfileContactName(Context context) {
+ public static List<String> getMainProfileContactName(Context context) {
ContentResolver resolver = context.getContentResolver();
Cursor profileCursor = resolver.query(
ContactsContract.Profile.CONTENT_URI,
@@ -214,6 +214,55 @@ public class ContactHelper {
return new ArrayList<>(names);
}
+ /**
+ * returns the CONTACT_ID of the main ("me") contact
+ * http://developer.android.com/reference/android/provider/ContactsContract.Profile.html
+ *
+ * @param resolver
+ * @return
+ */
+ public static long getMainProfileContactId(ContentResolver resolver) {
+ Cursor profileCursor = resolver.query(ContactsContract.Profile.CONTENT_URI,
+ new String[]{ ContactsContract.Profile._ID}, null, null, null);
+
+ if(profileCursor != null && profileCursor.getCount() != 0 && profileCursor.moveToNext()) {
+ long contactId = profileCursor.getLong(0);
+ profileCursor.close();
+ return contactId;
+ }
+ else {
+ if(profileCursor != null) {
+ profileCursor.close();
+ }
+ return -1;
+ }
+ }
+
+ /**
+ * loads the profile picture of the main ("me") contact
+ * http://developer.android.com/reference/android/provider/ContactsContract.Profile.html
+ *
+ * @param contentResolver
+ * @param highRes true for large image if present, false for thumbnail
+ * @return bitmap of loaded photo
+ */
+ public static Bitmap loadMainProfilePhoto(ContentResolver contentResolver, boolean highRes) {
+ try {
+ long mainProfileContactId = getMainProfileContactId(contentResolver);
+
+ Uri contactUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI,
+ Long.toString(mainProfileContactId));
+ InputStream photoInputStream =
+ ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, contactUri, highRes);
+ if (photoInputStream == null) {
+ return null;
+ }
+ return BitmapFactory.decodeStream(photoInputStream);
+ } catch (Throwable ignored) {
+ return null;
+ }
+ }
+
public static List<String> getContactMails(Context context) {
ContentResolver resolver = context.getContentResolver();
Cursor mailCursor = resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
@@ -269,7 +318,7 @@ public class ContactHelper {
/**
* returns the CONTACT_ID of the raw contact to which a masterKeyId is associated, if the
- * raw contact has not been marked for deletion
+ * raw contact has not been marked for deletion.
*
* @param resolver
* @param masterKeyId
@@ -296,6 +345,34 @@ public class ContactHelper {
return contactId;
}
+ /**
+ * Returns the display name of the system contact associated with contactId, null if the
+ * contact does not exist
+ *
+ * @param resolver
+ * @param contactId
+ * @return primary display name of system contact associated with contactId, null if it does
+ * not exist
+ */
+ public static String getContactName(ContentResolver resolver, long contactId) {
+ String contactName = null;
+ Cursor raw = resolver.query(ContactsContract.Contacts.CONTENT_URI,
+ new String[]{
+ ContactsContract.Contacts.DISPLAY_NAME_PRIMARY
+ },
+ ContactsContract.Contacts._ID + "=?",
+ new String[]{//"0" for "not deleted"
+ Long.toString(contactId)
+ }, null);
+ if (raw != null) {
+ if (raw.moveToNext()) {
+ contactName = raw.getString(0);
+ }
+ raw.close();
+ }
+ return contactName;
+ }
+
public static Bitmap getCachedPhotoByMasterKeyId(ContentResolver contentResolver, long masterKeyId) {
if (masterKeyId == -1) {
return null;
@@ -333,46 +410,47 @@ public class ContactHelper {
KeychainContract.KeyRings.MASTER_KEY_ID,
KeychainContract.KeyRings.USER_ID,
KeychainContract.KeyRings.IS_EXPIRED,
- KeychainContract.KeyRings.IS_REVOKED};
+ KeychainContract.KeyRings.IS_REVOKED,
+ KeychainContract.KeyRings.VERIFIED,
+ KeychainContract.KeyRings.HAS_SECRET,
+ KeychainContract.KeyRings.HAS_ANY_SECRET};
public static final int INDEX_MASTER_KEY_ID = 0;
public static final int INDEX_USER_ID = 1;
public static final int INDEX_IS_EXPIRED = 2;
public static final int INDEX_IS_REVOKED = 3;
+ public static final int INDEX_VERIFIED = 4;
+ public static final int INDEX_HAS_SECRET = 5;
+ public static final int INDEX_HAS_ANY_SECRET = 6;
/**
* Write/Update the current OpenKeychain keys to the contact db
*/
public static void writeKeysToContacts(Context context) {
ContentResolver resolver = context.getContentResolver();
- Set<Long> deletedKeys = getRawContactMasterKeyIds(resolver);
if (Constants.DEBUG_SYNC_REMOVE_CONTACTS) {
debugDeleteRawContacts(resolver);
}
-// ContentProviderClient client = resolver.acquireContentProviderClient(ContactsContract.AUTHORITY_URI);
-// ContentValues values = new ContentValues();
-// Account account = new Account(Constants.ACCOUNT_NAME, Constants.ACCOUNT_TYPE);
-// values.put(ContactsContract.Settings.ACCOUNT_NAME, account.name);
-// values.put(ContactsContract.Settings.ACCOUNT_TYPE, account.type);
-// values.put(ContactsContract.Settings.UNGROUPED_VISIBLE, true);
-// try {
-// client.insert(ContactsContract.Settings.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build(), values);
-// } catch (RemoteException e) {
-// e.printStackTrace();
-// }
-
- // Load all Keys from OK
- Cursor cursor = resolver.query(KeychainContract.KeyRings.buildUnifiedKeyRingsUri(), KEYS_TO_CONTACT_PROJECTION,
- null, null, null);
+ writeKeysToMainProfileContact(context, resolver);
+
+ Set<Long> deletedKeys = getRawContactMasterKeyIds(resolver);
+
+ // Load all public Keys from OK
+ // TODO: figure out why using selectionArgs does not work in this case
+ Cursor cursor = resolver.query(KeychainContract.KeyRings.buildUnifiedKeyRingsUri(),
+ KEYS_TO_CONTACT_PROJECTION,
+ KeychainContract.KeyRings.HAS_ANY_SECRET + "=0",
+ null, null);
+
if (cursor != null) {
while (cursor.moveToNext()) {
long masterKeyId = cursor.getLong(INDEX_MASTER_KEY_ID);
String[] userIdSplit = KeyRing.splitUserId(cursor.getString(INDEX_USER_ID));
- String keyIdShort = KeyFormattingUtils.convertKeyIdToHexShort(cursor.getLong(INDEX_MASTER_KEY_ID));
boolean isExpired = cursor.getInt(INDEX_IS_EXPIRED) != 0;
boolean isRevoked = cursor.getInt(INDEX_IS_REVOKED) > 0;
+ boolean isVerified = cursor.getInt(INDEX_VERIFIED) > 0;
Log.d(Constants.TAG, "masterKeyId: " + masterKeyId);
@@ -384,9 +462,11 @@ public class ContactHelper {
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
- // Do not store expired or revoked keys in contact db - and remove them if they already exist
- if (isExpired || isRevoked) {
- Log.d(Constants.TAG, "Expired or revoked: Deleting rawContactId " + rawContactId);
+ // Do not store expired or revoked or unverified keys in contact db - and
+ // remove them if they already exist. Secret keys do not reach this point
+ if (isExpired || isRevoked || !isVerified) {
+ Log.d(Constants.TAG, "Expired or revoked or unverified: Deleting rawContactId "
+ + rawContactId);
if (rawContactId != -1) {
deleteRawContactById(resolver, rawContactId);
}
@@ -397,7 +477,7 @@ public class ContactHelper {
Log.d(Constants.TAG, "Insert new raw contact with masterKeyId " + masterKeyId);
insertContact(ops, context, masterKeyId);
- writeContactKey(ops, context, rawContactId, masterKeyId, keyIdShort);
+ writeContactKey(ops, context, rawContactId, masterKeyId, userIdSplit[0]);
}
// We always update the display name (which is derived from primary user id)
@@ -422,43 +502,165 @@ public class ContactHelper {
}
/**
- * Delete all raw contacts associated to OpenKeychain.
+ * Links all keys with secrets to the main ("me") contact
+ * http://developer.android.com/reference/android/provider/ContactsContract.Profile.html
+ *
+ * @param context
+ */
+ public static void writeKeysToMainProfileContact(Context context, ContentResolver resolver) {
+ Set<Long> keysToDelete = getMainProfileMasterKeyIds(resolver);
+
+ // get all keys which have associated secret keys
+ // TODO: figure out why using selectionArgs does not work in this case
+ Cursor cursor = resolver.query(KeychainContract.KeyRings.buildUnifiedKeyRingsUri(),
+ KEYS_TO_CONTACT_PROJECTION,
+ KeychainContract.KeyRings.HAS_ANY_SECRET + "!=0",
+ null, null);
+ if (cursor != null) {
+ while (cursor.moveToNext()) {
+ long masterKeyId = cursor.getLong(INDEX_MASTER_KEY_ID);
+ boolean isExpired = cursor.getInt(INDEX_IS_EXPIRED) != 0;
+ boolean isRevoked = cursor.getInt(INDEX_IS_REVOKED) > 0;
+ String[] userIdSplit = KeyRing.splitUserId(cursor.getString(INDEX_USER_ID));
+
+ if (!isExpired && !isRevoked && userIdSplit[0] != null) {
+ // if expired or revoked will not be removed from keysToDelete or inserted
+ // into main profile ("me" contact)
+ boolean existsInMainProfile = keysToDelete.remove(masterKeyId);
+ if (!existsInMainProfile) {
+ long rawContactId = -1;//new raw contact
+
+ Log.d(Constants.TAG, "masterKeyId with secret " + masterKeyId);
+
+ ArrayList<ContentProviderOperation> ops = new ArrayList<>();
+ insertMainProfileRawContact(ops, masterKeyId);
+ writeContactKey(ops, context, rawContactId, masterKeyId, userIdSplit[0]);
+
+ try {
+ resolver.applyBatch(ContactsContract.AUTHORITY, ops);
+ } catch (Exception e) {
+ Log.w(Constants.TAG, e);
+ }
+ }
+ }
+ }
+ }
+
+ for (long masterKeyId : keysToDelete) {
+ deleteMainProfileRawContactByMasterKeyId(resolver, masterKeyId);
+ Log.d(Constants.TAG, "Delete main profile raw contact with masterKeyId " + masterKeyId);
+ }
+ }
+
+ /**
+ * Inserts a raw contact into the table defined by ContactsContract.Profile
+ * http://developer.android.com/reference/android/provider/ContactsContract.Profile.html
+ *
+ * @param ops
+ * @param masterKeyId
+ */
+ private static void insertMainProfileRawContact(ArrayList<ContentProviderOperation> ops,
+ long masterKeyId) {
+ ops.add(ContentProviderOperation.newInsert(ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI)
+ .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, Constants.ACCOUNT_NAME)
+ .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, Constants.ACCOUNT_TYPE)
+ .withValue(ContactsContract.RawContacts.SOURCE_ID, Long.toString(masterKeyId))
+ .build());
+ }
+
+ /**
+ * deletes a raw contact from the main profile table ("me" contact)
+ * http://developer.android.com/reference/android/provider/ContactsContract.Profile.html
+ *
+ * @param resolver
+ * @param masterKeyId
+ * @return
+ */
+ private static int deleteMainProfileRawContactByMasterKeyId(ContentResolver resolver,
+ long masterKeyId) {
+ // CALLER_IS_SYNCADAPTER allows us to actually wipe the RawContact from the device, otherwise
+ // would be just flagged for deletion
+ Uri deleteUri = ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI.buildUpon().
+ appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
+
+ return resolver.delete(deleteUri,
+ ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " +
+ ContactsContract.RawContacts.SOURCE_ID + "=?",
+ new String[]{
+ Constants.ACCOUNT_TYPE, Long.toString(masterKeyId)
+ });
+ }
+
+ /**
+ * Delete all raw contacts associated to OpenKeychain, including those from "me" contact
+ * defined by ContactsContract.Profile
+ *
+ * @return number of rows deleted
*/
private static int debugDeleteRawContacts(ContentResolver resolver) {
- //allows us to actually wipe the RawContact from the device, otherwise would be just flagged
- //for deletion
+ // CALLER_IS_SYNCADAPTER allows us to actually wipe the RawContact from the device, otherwise
+ // would be just flagged for deletion
Uri deleteUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().
appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
Log.d(Constants.TAG, "Deleting all raw contacts associated to OK...");
- return resolver.delete(deleteUri,
+ int delete = resolver.delete(deleteUri,
+ ContactsContract.RawContacts.ACCOUNT_TYPE + "=?",
+ new String[]{
+ Constants.ACCOUNT_TYPE
+ });
+
+ Uri mainProfileDeleteUri = ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI.buildUpon()
+ .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
+
+ delete += resolver.delete(mainProfileDeleteUri,
ContactsContract.RawContacts.ACCOUNT_TYPE + "=?",
new String[]{
Constants.ACCOUNT_TYPE
});
+
+ return delete;
}
+ /**
+ * Deletes raw contacts from ContactsContract.RawContacts based on rawContactId. Does not
+ * delete contacts from the "me" contact defined in ContactsContract.Profile
+ *
+ * @param resolver
+ * @param rawContactId
+ * @return number of rows deleted
+ */
private static int deleteRawContactById(ContentResolver resolver, long rawContactId) {
- //allows us to actually wipe the RawContact from the device, otherwise would be just flagged
- //for deletion
+ // CALLER_IS_SYNCADAPTER allows us to actually wipe the RawContact from the device, otherwise
+ // would be just flagged for deletion
Uri deleteUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().
appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
return resolver.delete(deleteUri,
- ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " + ContactsContract.RawContacts._ID + "=?",
+ ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " +
+ ContactsContract.RawContacts._ID + "=?",
new String[]{
Constants.ACCOUNT_TYPE, Long.toString(rawContactId)
});
}
+ /**
+ * Deletes raw contacts from ContactsContract.RawContacts based on masterKeyId. Does not
+ * delete contacts from the "me" contact defined in ContactsContract.Profile
+ *
+ * @param resolver
+ * @param masterKeyId
+ * @return number of rows deleted
+ */
private static int deleteRawContactByMasterKeyId(ContentResolver resolver, long masterKeyId) {
- //allows us to actually wipe the RawContact from the device, otherwise would be just flagged
- //for deletion
+ // CALLER_IS_SYNCADAPTER allows us to actually wipe the RawContact from the device, otherwise
+ // would be just flagged for deletion
Uri deleteUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().
appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
return resolver.delete(deleteUri,
- ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " + ContactsContract.RawContacts.SOURCE_ID + "=?",
+ ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " +
+ ContactsContract.RawContacts.SOURCE_ID + "=?",
new String[]{
Constants.ACCOUNT_TYPE, Long.toString(masterKeyId)
});
@@ -487,6 +689,28 @@ public class ContactHelper {
}
/**
+ * @return a set of all key master key ids currently present in the contact db
+ */
+ private static Set<Long> getMainProfileMasterKeyIds(ContentResolver resolver) {
+ HashSet<Long> result = new HashSet<>();
+ Cursor masterKeyIds = resolver.query(ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI,
+ new String[]{
+ ContactsContract.RawContacts.SOURCE_ID
+ },
+ ContactsContract.RawContacts.ACCOUNT_TYPE + "=?",
+ new String[]{
+ Constants.ACCOUNT_TYPE
+ }, null);
+ if (masterKeyIds != null) {
+ while (masterKeyIds.moveToNext()) {
+ result.add(masterKeyIds.getLong(0));
+ }
+ masterKeyIds.close();
+ }
+ return result;
+ }
+
+ /**
* This will search the contact db for a raw contact with a given master key id
*
* @return raw contact id or -1 if not found
@@ -528,10 +752,10 @@ public class ContactHelper {
* This creates the link to OK in contact details
*/
private static void writeContactKey(ArrayList<ContentProviderOperation> ops, Context context, long rawContactId,
- long masterKeyId, String keyIdShort) {
+ long masterKeyId, String keyName) {
ops.add(referenceRawContact(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI), rawContactId)
.withValue(ContactsContract.Data.MIMETYPE, Constants.CUSTOM_CONTACT_DATA_MIME_TYPE)
- .withValue(ContactsContract.Data.DATA1, context.getString(R.string.contact_show_key, keyIdShort))
+ .withValue(ContactsContract.Data.DATA1, context.getString(R.string.contact_show_key, keyName))
.withValue(ContactsContract.Data.DATA2, masterKeyId)
.build());
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ExportHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ExportHelper.java
index 1d78ed80e..cda5892fe 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ExportHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ExportHelper.java
@@ -124,7 +124,7 @@ public class ExportHelper {
// handle messages by standard KeychainIntentServiceHandler first
super.handleMessage(message);
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
// get returned data bundle
Bundle data = message.getData();
diff --git a/OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml b/OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml
index 88b96284f..d8d729fae 100644
--- a/OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml
@@ -89,79 +89,4 @@
android:layout_height="1dip"
android:background="?android:attr/listDivider" />
- <org.sufficientlysecure.keychain.ui.widget.FoldableLinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginTop="16dp"
- custom:foldedLabel="@string/api_settings_show_advanced"
- custom:unFoldedLabel="@string/api_settings_hide_advanced">
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="0dp"
- android:layout_margin="0dp">
-
- <TextView
- android:paddingLeft="8dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/label_encryption_algorithm"
- android:paddingRight="8dp" />
-
- <Spinner
- android:id="@+id/api_account_settings_encryption_algorithm"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="0dp"
- android:layout_margin="0dp">
-
- <TextView
- android:paddingLeft="8dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/label_hash_algorithm"
- android:paddingRight="8dp" />
-
- <Spinner
- android:id="@+id/api_account_settings_hash_algorithm"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="0dp"
- android:layout_margin="0dp">
-
- <TextView
- android:paddingLeft="8dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/label_message_compression"
- android:paddingRight="8dp" />
-
- <Spinner
- android:id="@+id/api_account_settings_compression"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
-
- </LinearLayout>
-
- </org.sufficientlysecure.keychain.ui.widget.FoldableLinearLayout>
-
</LinearLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/api_select_sign_key_activity.xml b/OpenKeychain/src/main/res/layout/api_select_sign_key_activity.xml
new file mode 100644
index 000000000..0528fc11e
--- /dev/null
+++ b/OpenKeychain/src/main/res/layout/api_select_sign_key_activity.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <include
+ android:id="@+id/toolbar_include"
+ layout="@layout/toolbar_standalone" />
+
+ <LinearLayout
+ android:layout_below="@id/toolbar_include"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <!-- focusable and related properties to workaround http://stackoverflow.com/q/16182331-->
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:descendantFocusability="beforeDescendants"
+ android:padding="16dp"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/api_select_sign_key_list_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingBottom="3dip"
+ android:text="@string/api_select_sign_key_text"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+
+ <FrameLayout
+ android:id="@+id/api_select_sign_key_list_fragment"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:background="?android:attr/listDivider" />
+
+ <TextView
+ android:id="@+id/api_select_sign_key_create_key"
+ android:background="?android:selectableItemBackground"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:layout_width="match_parent"
+ android:text="@string/api_settings_create_key"
+ android:layout_height="?android:attr/listPreferredItemHeight"
+ android:drawableLeft="@drawable/ic_key_plus_grey600_24dp"
+ android:drawablePadding="8dp"
+ android:gravity="center_vertical"
+ android:clickable="true" />
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:background="?android:attr/listDivider" />
+
+ </LinearLayout>
+ </ScrollView>
+ </LinearLayout>
+</RelativeLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/keyspinner_item.xml b/OpenKeychain/src/main/res/layout/keyspinner_item.xml
index 45147e7b1..eea81eba5 100644
--- a/OpenKeychain/src/main/res/layout/keyspinner_item.xml
+++ b/OpenKeychain/src/main/res/layout/keyspinner_item.xml
@@ -36,8 +36,8 @@
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
- android:id="@+id/keyspinner_key_id"
- android:text="12345"
+ android:id="@+id/keyspinner_duplicate"
+ android:text="creation: bla"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
diff --git a/OpenKeychain/src/main/res/layout/select_key_item.xml b/OpenKeychain/src/main/res/layout/select_key_item.xml
index e12892aae..aff0a8215 100644
--- a/OpenKeychain/src/main/res/layout/select_key_item.xml
+++ b/OpenKeychain/src/main/res/layout/select_key_item.xml
@@ -38,7 +38,7 @@
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
- android:id="@+id/select_key_item_key_id"
+ android:id="@+id/select_key_item_creation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0xBBBBBBBBBBBBBBB"
diff --git a/OpenKeychain/src/main/res/raw-bg/help_about.html b/OpenKeychain/src/main/res/raw-bg/help_about.html
index 2c6c5b3c4..cf77cf11d 100644
--- a/OpenKeychain/src/main/res/raw-bg/help_about.html
+++ b/OpenKeychain/src/main/res/raw-bg/help_about.html
@@ -31,27 +31,31 @@
<h2>Libraries</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-bg/help_start.html b/OpenKeychain/src/main/res/raw-bg/help_start.html
index 92fd4a92a..58f3fae40 100644
--- a/OpenKeychain/src/main/res/raw-bg/help_start.html
+++ b/OpenKeychain/src/main/res/raw-bg/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Getting started</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>I found a bug in OpenKeychain!</h2>
<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-bg/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-bg/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-bg/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-cs/help_about.html b/OpenKeychain/src/main/res/raw-cs/help_about.html
index 0b9cfa582..e4ec46f0d 100644
--- a/OpenKeychain/src/main/res/raw-cs/help_about.html
+++ b/OpenKeychain/src/main/res/raw-cs/help_about.html
@@ -31,27 +31,31 @@
<h2>Knihovny</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-cs/help_start.html b/OpenKeychain/src/main/res/raw-cs/help_start.html
index 5a665ea24..acbc80735 100644
--- a/OpenKeychain/src/main/res/raw-cs/help_start.html
+++ b/OpenKeychain/src/main/res/raw-cs/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Začínáme</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>Našel jsem chybu v OpenKeychain!</h2>
<p>Nahlašte prosím chybu na <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">bug trackeru OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-cs/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-cs/nfc_beam_share.html
deleted file mode 100644
index 3998444d0..000000000
--- a/OpenKeychain/src/main/res/raw-cs/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Ujistěte se, že je NFC zapnuto v Nastavení &gt; Další &gt; NFC a ověřte, že Android Beam je ve stejné sekci také zapnutý.</li>
-<li>Podržte dvě zařízení zády k sobě (musí se téměř dotýkat) a ucítíte vibraci.</li>
-<li>Po tom co ucítíte vibraci, uvidíte že se obsah na displeji zařízení vašeho partnera změní na obrázek s animací připomínající rychlost warpu ze Star Treku.</li>
-<li>Tapněte na kartu a obsah se nahraje do zařízení.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-de/help_about.html b/OpenKeychain/src/main/res/raw-de/help_about.html
index 880e5673f..7b613ec20 100644
--- a/OpenKeychain/src/main/res/raw-de/help_about.html
+++ b/OpenKeychain/src/main/res/raw-de/help_about.html
@@ -31,27 +31,31 @@
<h2>Bibliotheken</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Bibliothek v4</a> (Apache Lizenz v2)</li>
+<a href="https://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11-Lizenz)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Bibliothek v7 'appcompat'</a> (Apache Lizenz v2)</li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT-Lizenz)</li>
<li>
-<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support-Bibliotheken</a> (Apache-Lizenz v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache-Lizenz v2)</li>
<li>
-<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache-Lizenz v2)</li>
<li>
-<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache-Lizenz v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache Lizenz v2)</li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache-Lizenz v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache Lizenz v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache-Lizenz v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 Lizenz)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache-Lizenz v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache Lizenz v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material-Design)</a> (Apache-Lizenz v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache-Lizenz v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT-Lizenz)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache-Lizenz v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-de/help_changelog.html b/OpenKeychain/src/main/res/raw-de/help_changelog.html
index aae29a2a6..a54052fef 100644
--- a/OpenKeychain/src/main/res/raw-de/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-de/help_changelog.html
@@ -4,23 +4,23 @@
<h2>3.1.2</h2>
<ul>
-<li>Behoben: Schlüsselexport in Datei (Jetzt wirklich)</li>
+<li>Behoben: Schlüsselexport in Datei (jetzt wirklich)</li>
</ul>
<h2>3.1.1</h2>
<ul>
<li>Behoben: Schlüsselexport in Datei (wurde nur teilweise geschrieben)</li>
-<li>Absturz auf Android 2.3 behoben</li>
+<li>Behoben: Absturz auf Android 2.3</li>
</ul>
<h2>3.1</h2>
<ul>
-<li>Absturz auf Android 5 behoben</li>
-<li>New certify screen</li>
-<li>Secure Exchange directly from key list (SafeSlinger library)</li>
-<li>New QR Code program flow</li>
-<li>Redesigned decrypt screen</li>
-<li>New icon usage and colors</li>
-<li>Fix import of secret keys from Symantec Encryption Desktop</li>
-<li>Subkey IDs on Yubikeys are now checked correctly</li>
+<li>Behoben: Absturz auf Android 5</li>
+<li>Neuer Beglaubigungsbildschirm</li>
+<li>Sicherer Austausch direkt aus der Schlüsselliste (SafeSlinger-Bibliothek)</li>
+<li>Neuer Programmablauf für QR-Codes</li>
+<li>Neugestaltung des Entschlüsselungsbildschirms</li>
+<li>Verwendung neuer Icons und neuer Farben</li>
+<li>Behoben: Import geheimer Schlüssel von Symantec Encryption Desktop</li>
+<li>Unterschlüssel-IDs auf Yubikeys werden nun richtig geprüft</li>
</ul>
<h2>3.0.1</h2>
<ul>
@@ -30,49 +30,49 @@
<h2>3.0</h2>
<ul>
<li>Volle Unterstützung für Yubikey-Signaturerzeugung und Entschlüsselung!</li>
-<li>Kompatible, installierbare Apps in der Apps Liste anzeigen.</li>
-<li>Neues Design der Entschlüsselungsseite</li>
-<li>Many fixes for key import, also fixes stripped keys</li>
-<li>Honor and display key authenticate flags</li>
+<li>Kompatible, installierbare Apps in der App-Liste anzeigen</li>
+<li>Neues Design für den Entschlüsselungsbildschirm</li>
+<li>Viele Fehlerbehebungen für den Schlüsselimport, auch bei gekürzten Schlüsseln</li>
+<li>Schlüsselauthentifizierungs-Flags berücksichtigen und anzeigen</li>
<li>Benutzeroberfläche zum Erzeugen benutzerdefinierter Schlüssel</li>
-<li>Fixing user id revocation certificates</li>
-<li>Neue Suche in der Cloud (sucht über traditionelle Schlüsselserver und über keybase.io)</li>
-<li>Support for stripping keys inside OpenKeychain</li>
+<li>Behoben: Benutzer-ID-Widerrufszertifikate</li>
+<li>Neue Cloudsuche (sucht über traditionelle Schlüsselserver und über keybase.io)</li>
+<li>Unterstützung für das Kürzen von Schlüsseln innerhalb von OpenKeychain</li>
</ul>
<h2>2.9.2</h2>
<ul>
-<li>Defekte Schlüssel aus 2.9.1 behoben</li>
+<li>Behoben: Beschädigung von Schlüsseln in 2.9.1</li>
<li>Yubikey-Entschlüsselung funktioniert nun über die API</li>
</ul>
<h2>2.9.1</h2>
<ul>
<li>Verschlüsselungsbildschirm auf zwei aufgeteilt</li>
-<li>Handhabung von Schlüsselflags ausgebessert (Unterstützt nun Mailvelope 0.7 Schlüssel)</li>
-<li>Handhabung von Passphrasen verbessert</li>
+<li>Behoben: Handhabung von Schlüsselflags (Unterstützt nun Mailvelope 0.7 Schlüssel)</li>
+<li>Handhabung von Passwörtern verbessert</li>
<li>Schlüsselaustausch mit SafeSlinger</li>
-<li>Yubikey: Einstellung für andere PINs, zur Zeit funktioniert das Signieren nur mit der OpenPGP API, nicht innerhalb von OpenKeychain</li>
-<li>Verwendung von gekürzten Schlüsseln behoben</li>
-<li>Standardmäßig SHA256 aufgrund von Kompatibilität</li>
-<li>Änderungen an der Intent API, siehe https://github.com/open-keychain/open-keychain/wiki/Intent-API</li>
-<li>Das OpenPGP-API kann nun mit widerrufenen/abgelaufenen Schlüsseln umgehen und liefert alle Benutzerkennungen zurück</li>
+<li>Yubikey: neue Einstellung zur PIN-Änderung, zur Zeit funktioniert das Signieren nur mit der OpenPGP-API, nicht innerhalb von OpenKeychain</li>
+<li>Behoben: Verwendung von gekürzten Schlüsseln</li>
+<li>Standardmäßige Nutzung von SHA256 aus Kompatibilitätsgründen</li>
+<li>Änderungen an der Intent-API, siehe https://github.com/open-keychain/open-keychain/wiki/Intent-API</li>
+<li>OpenPGP-API kann nun mit widerrufenen/abgelaufenen Schlüsseln umgehen und liefert alle Benutzer-IDs zurück</li>
</ul>
<h2>2.9</h2>
<ul>
-<li>Mit v2.8 eingeführte Abstürze behoben</li>
+<li>Behoben: Mit v2.8 eingeführte Abstürze</li>
<li>Experimentelle ECC-Unterstützung</li>
-<li>Experimentelle Yubikey Unterstützung (Nur Signieren mit importierten Schlüsseln)</li>
+<li>Experimentelle Yubikey-Unterstützung (nur Signieren mit importierten Schlüsseln)</li>
</ul>
<h2>2.8</h2>
<ul>
<li>Es wurden in dieser Version so viele Fehler behoben, dass wir uns besser auf die neuen Funktionen konzentrieren</li>
<li>Schlüsselbearbeitung: tolles neues Design und Schlüsselrückruf</li>
-<li>Schlüsselimport: tolles neues Design, gesicherte Verbindungen zum Schlüsselserver über HKPS, Schlüsselserver [?] über DNS SRV Einträge</li>
-<li>Neuer Bildschirm bei der ersten Öffnung</li>
-<li>Neuer Schlüsselerzeugungsbildschirm: Automatische Vorschläge für Name und E-Mail basierend auf Ihren persönlichen Android-Konten</li>
-<li>Dateiverschlüsselung: tolles neues Design, Unterstützung für mehrere Dateien</li>
-<li>Neue Symbole zum Anzeigen des Schlüsselstatus' (von Brennan Novak)</li>
+<li>Schlüsselimport: tolles neues Design, gesicherte Verbindungen zum Schlüsselserver über HKPS, Namensauflösung der Schlüsselserver über DNS SRV-Einträge</li>
+<li>Neuer Bildschirm für ersten Start der App</li>
+<li>Neuer Schlüsselerzeugungsbildschirm: Automatische Vorschläge für Name und E-Mail basierend auf deinen persönlichen Android-Konten</li>
+<li>Dateiverschlüsselung: tolles neues Design, Unterstützung für Verschlüsselung mehrerer Dateien</li>
+<li>Neue Symbole zum Anzeigen des Schlüsselstatus (von Brennan Novak)</li>
<li>Wichtige Fehlerbehebung: Importieren größerer Schlüsselsammlungen aus einer Datei ist nun möglich</li>
-<li>Benachrichtigung, die die Passphrasen im Cache anzeigt</li>
+<li>Benachrichtigung, die zwischengespeicherte Passwörter anzeigt</li>
<li>Schlüssel sind mit den Android-Kontakten verbunden</li>
</ul>
<p>Diese Version wäre ohne die Arbeit von Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray und Thialfihar nicht möglich</p>
@@ -82,109 +82,109 @@
<li>Lila! (Dominik, Vincent)</li>
<li>Neues Schlüsselansicht-Design (Dominik, Vincent)</li>
<li>Neue flache Android-Schaltflächen (Dominik, Vincent)</li>
-<li>API-Fehler behoben (Dominik)</li>
+<li>API-Fehlerbehebungen (Dominik)</li>
<li>Import aus keybase.io (Tim Bray)</li>
</ul>
<h2>2.6.1</h2>
<ul>
-<li>Einige Behebungen für Regressionsfehler</li>
+<li>Einige Korrekturen für Regressionsfehler</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>Schlüsselzertifizierungen (danke an Vincent Breitmoser)</li>
+<li>Schlüsselbeglaubigungen (danke an Vincent Breitmoser)</li>
<li>Unterstützung für GnuPG-Teilschlüssel (Dank an Vincent Breitmoser)</li>
-<li>Neues Design für Signaturverifikation</li>
+<li>Neues Design für Signaturprüfung</li>
<li>Benutzerdefinierte Schlüssellänge (Dank an Greg Witczak)</li>
<li>Fehler bei der Teilen-Funktion von anderen Apps behoben</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>Fix decryption of symmetric OpenPGP messages/files</li>
-<li>Refaktorisierter Schlüsselbearbeitungsbildschirm (Dank an Ash Hughes)</li>
-<li>Neues modernes Design für Verschlüsselungs-/Entschlüsselungs-Bildschirme</li>
-<li>OpenPGP API Version 3 (mehrfache API-Konten, interne Fehlerbehebungen, Schlüsselsuche)</li>
+<li>Behoben: Entschlüsselung von symmetrischen OpenPGP-Nachrichten/-Dateien</li>
+<li>Umgestaltung des Schlüsselbearbeitungsbildschirms (Dank an Ash Hughes)</li>
+<li>Neues modernes Design für Verschlüsselungs-/Entschlüsselungsbildschirme</li>
+<li>OpenPGP-API Version 3 (mehrerer API-Konten, interne Fehlerbehebungen, Schlüsselsuche)</li>
</ul>
<h2>2.4</h2>
-<p>Danke an alle Bewerber beim Google Summer of Code 2014, die diese Version funktionsreich und fehlerfrei gemacht haben.
+<p>Danke an alle Bewerber des Google Summer of Code 2014, die diese Version funktionsreich und fehlerfrei gemacht haben.
Neben mehreren kleinen Updates sind eine beachtliche Anzahl von Updates von den folgenden Personen gemacht worden (in alphabetischer Reihenfolge):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
<li>Neue einheitliche Schlüsselliste</li>
<li>Eingefärbter Schlüsselfingerabdruck</li>
<li>Unterstützung für Schlüsselserverports</li>
-<li>Möglichkeit zum Erzeugen von schwachen Schlüssels deaktiviert</li>
+<li>Möglichkeit zum Erzeugen von schwachen Schlüsseln deaktiviert</li>
<li>Viel mehr interne Arbeit an der API</li>
-<li>Benutzerkennungen zertifizieren</li>
+<li>Benutzerkennungen beglaubigen</li>
<li>Schlüsselserver-Suchanfrage basierend auf maschinenlesbarer Ausgabe</li>
-<li>Lock navigation drawer on tablets</li>
-<li>Suggestions for emails on creation of keys</li>
+<li>"Navigation Drawer" auf Tablets sperren</li>
+<li>Vorschläge für E-Mails bei Schlüsselerzeugung</li>
<li>Suche in öffentlichen Schlüssellisten</li>
<li>Und viele weitere Verbesserungen und Fehlerbehebungen...</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>Hotfix for crash when upgrading from old versions</li>
+<li>Hotfix für Absturz beim Aktualisieren von alten Versionen</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>Querying keyservers directly from the import screen</li>
-<li>Anordnung und Dialogstil auf Android 2.2-3.0 behoben</li>
-<li>Absturz bei leeren Benutzerkennungen behoben</li>
-<li>Fix crash and empty lists when coming back from signing screen</li>
-<li>Bouncy Castle (Kryptographie Bibliothek) upgedatet von 1.47 auf 1.50 und vom Quellcode kompiliert.</li>
-<li>Fix upload of key from signing screen</li>
+<li>Kein unnötiger Export öffentlicher Schlüssel beim Export der geheimen Schlüssel (Dank an Ash Hughes)</li>
+<li>Behoben: Setzen des Schlüsselablaufdatums (Dank an Ash Hughes)</li>
+<li>Weitere interne Fehlerbehebungen für das Editieren von Schlüsseln (Dank an Ash Hughes)</li>
+<li>Schlüsselserverabfrage direkt aus dem Importbildschirm</li>
+<li>Behoben: Layout und Dialogstil auf Android 2.2-3.0</li>
+<li>Behoben: Absturz bei leeren Benutzer-IDs</li>
+<li>Behoben: Absturz nach Rückkehr vom Signierenbildschirm, außerdem wurden die Listen nicht geleert</li>
+<li>Bouncy Castle (Kryptographie-Bibliothek) von 1.47 auf 1.50 aktualisiert und aus Quellcode kompiliert.</li>
+<li>Behoben: Hochladen des Schlüssels aus dem Signierenbildschirm</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>New design with navigation drawer</li>
-<li>New public key list design</li>
+<li>Neues Design mit "Navigation Drawer"</li>
+<li>Neues Design der Liste öffentlicher Schlüssel</li>
<li>Neue Ansicht für öffentliche Schlüssel</li>
-<li>Fehler beim Schlüsselimport behoben</li>
-<li>Key cross-certification (thanks to Ash Hughes)</li>
-<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>First version with new languages (thanks to the contributors on Transifex)</li>
-<li>Sharing of keys via QR Codes fixed and improved</li>
-<li>Package signature verification for API</li>
+<li>Behoben: Fehler beim Schlüsselimport</li>
+<li>Schlüsselbeglaubigungen über Kreuz, "Key cross-certification" (Dank an Ash Hughes)</li>
+<li>Korrekte Verarbeitung von UTF-8-Passwörtern (Dank an Ash Hughes)</li>
+<li>Erste Version mit neuen Sprachen (Dank an die Unterstützer auf Transifex)</li>
+<li>Behoben und verbessert: Teilen von Schlüsseln über QR-Codes</li>
+<li>Paket-Signaturprüfung für API</li>
</ul>
<h2>2.1.1</h2>
<ul>
-<li>API-Aktualisierungen, Vorbereitung für die K-9 Mail-Integration</li>
+<li>API-Aktualisierungen, Vorbereitung für die "K-9 Mail"-Integration</li>
</ul>
<h2>2.1</h2>
<ul>
<li>Viele Fehlerbehebungen</li>
<li>Neue API für Entwickler</li>
-<li>PRNG-Fehlerbehebungen von Google</li>
+<li>PRNG-Fehlerbehebung von Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>Complete redesign</li>
-<li>Öffentliche Schlüssel mit QR Codes oder NFC Beam teilen</li>
+<li>Komplette Neugestaltung</li>
+<li>Öffentliche Schlüssel über QR-Codes oder NFC-Beam teilen</li>
<li>Schlüssel signieren</li>
-<li>Schlüssel auf den Server hochladen</li>
-<li>Importprobleme behoben</li>
+<li>Schlüssel auf Server hochladen</li>
+<li>Behoben: Importprobleme</li>
<li>Neue AIDL-API</li>
</ul>
<h2>1.0.8</h2>
<ul>
<li>Grundlegende Schlüsselserverunterstützung</li>
<li>App2sd</li>
-<li>Mehr Auswahlmöglichkeiten für den Passphrasencache: 1, 2, 4, 8, Stunden</li>
-<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Mehr Auswahlmöglichkeiten für den Passwortzwischenspeicher: 1, 2, 4, 8, Stunden</li>
+<li>Übersetzungen: Norwegisch (Dank an Sander Danielsen), Chinesisch (Dank an Zhang Fredrick)</li>
<li>Fehlerbehebungen</li>
<li>Optimierungen</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>Fixed problem with signature verification of texts with trailing newline</li>
-<li>More options for passphrase cache time to live (20, 40, 60 mins)</li>
+<li>Behoben: Problem mit Signaturprüfung von Texten mit angehängtem Zeilenvorschub</li>
+<li>Mehr Optionen für die Länge der Passwortzwischenspeicherung (20, 40, 60 Minuten)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>Account adding crash on Froyo fixed</li>
+<li>Behoben: Absturz bei Kontenerstellung unter Froyo</li>
<li>Sichere Dateilöschung</li>
<li>Option zum Löschen der Schlüsseldatei nach dem Import</li>
<li>Streamverschlüsselung/-entschlüsselung (Galerie, usw.)</li>
@@ -195,37 +195,37 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.5</h2>
<ul>
<li>Deutsche und Italienische Übersetzung</li>
-<li>Much smaller package, due to reduced BC sources</li>
-<li>New preferences GUI</li>
-<li>Layout adjustment for localization</li>
-<li>Fehler bei Signatur behoben</li>
+<li>Viel kleineres Paket durch reduzierte BC-Quellen</li>
+<li>Neue Einstellungsoberfläche</li>
+<li>Layoutanpassungen für Übersetzungen</li>
+<li>Behoben: Signaturfehler</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>Fixed another crash caused by some SDK bug with query builder</li>
+<li>Behoben: Absturz durch einen SDK-Fehler mit "query builder"</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>Fixed crashes during encryption/signing and possibly key export</li>
+<li>Behoben: Abstürze während Verschlüsselung/Beglaubigung und möglicherweise Schlüsselexport</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>Filterable key lists</li>
-<li>Smarter pre-selection of encryption keys</li>
+<li>Filterbare Schlüsselliste</li>
+<li>Intelligentere Vorauswahl von Verschlüsselungsschlüsseln</li>
<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
+<li>Fehlerbehebungen und zusätzliche Funktionen für K-9-Mail (Schlüsselvorauswahl), neuer Beta-Build verfügbar</li>
</ul>
<h2>1.0.1</h2>
<ul>
-<li>GMail Account auflistung war nicht in Ordnung in 1.0.0, wieder behoben.</li>
+<li>Behoben: GMail-Konto-Auflistung in 1.0.0 fehlerhaft</li>
</ul>
<h2>1.0.0</h2>
<ul>
-<li>K-9 Mail integration, APG unterstützt beta build von K-9 Mail</li>
-<li>Support of more file managers (including ASTRO)</li>
+<li>"K-9 Mail"-Integration, APG-unterstützendes Beta-Build von K-9 Mail</li>
+<li>Unterstützung weiterer Dateimanager (inklusive ASTRO)</li>
<li>Slowenische Übersetzung</li>
-<li>New database, much faster, less memory usage</li>
-<li>Defined Intents and content provider for other apps</li>
+<li>Neue Datenbank, viel schneller, geringere Speichernutzung</li>
+<li>"Intents" und Inhaltsprovider für andere Apps definiert</li>
<li>Fehlerbehebungen</li>
</ul>
</body>
diff --git a/OpenKeychain/src/main/res/raw-de/help_start.html b/OpenKeychain/src/main/res/raw-de/help_start.html
index 9d37a4cc6..676922dbf 100644
--- a/OpenKeychain/src/main/res/raw-de/help_start.html
+++ b/OpenKeychain/src/main/res/raw-de/help_start.html
@@ -1,19 +1,22 @@
<html>
<head></head>
<body>
-<h2>Los geht's</h2>
-<p>Zuerst wird ein geheimer Schlüssel benötigt. Erstelle einen über das Menü "Keys" oder importiere einen bereits existierenden geheimen Schlüssel. Anschließend kannst du die Schlüssel deiner Freunde herunterladen oder über QR-Codes oder NFC austauschen.</p>
-
-<p>Auf Android-Geräte mit einer kleineren Versionsnummer als 4.4 wird empfohlen den Datei-Browser <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> zu installieren.</p>
+<h2>Wie kann ich OpenKeychain in K-9 Mail nutzen?</h2>
+<p>Um OpenKeychain in K-9 Mail nutzen zu können, sind folgende Schritte nötig:</p>
+<ol>
+<li>Öffne K-9 Mail und drücke lange auf den Account, mit dem du OpenKeychain nutzen willst.</li>
+ <li>Wähle "Kontoeinstellungen", blättere ganz nach unten und klicke auf "Kryptographie".</li>
+ <li>Klicke auf "OpenPGP-Provider" und wähle OpenKeychain aus der Liste.</li>
+</ol>
<h2>Ich habe einen Fehler in OpenKeychain gefunden!</h2>
-<p>Bitte berichten Sie Bugs mithilfe des <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">Issue Trackers der OpenKeychain</a>.</p>
+<p>Bitte sende uns einen Fehlerbericht mithilfe des <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">Problem-Trackers von OpenKeychain</a>.</p>
<h2>Unterstützen</h2>
-<p>Wenn Sie uns bei der Entwickelung von OpenKeychain durch das Beisteuern von Code helfen wollen, <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">schauen Sie unsere kurze Anleitung auf Github an</a>.</p>
+<p>Wenn du uns bei der Entwicklung von OpenKeychain, z.B. durch das Beisteuern von Code, helfen willst, <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">schau dir unsere kurze Anleitung auf GitHub an</a>.</p>
<h2>Übersetzungen</h2>
-<p>Hilf mit, OpenKeychain zu übersetzten! Jeder kann auf <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain auf Transifex</a> mitmachen.</p>
+<p>Hilf mit OpenKeychain zu übersetzten! Jeder kann mitmachen, besuche<a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain auf Transifex</a>.</p>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-de/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-de/nfc_beam_share.html
deleted file mode 100644
index 8a2e1880e..000000000
--- a/OpenKeychain/src/main/res/raw-de/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Stellen Sie sicher, dass NFC und Android Beam in den Einstellungen unter &gt; Mehr &gt; NFC eingeschaltet sind</li>
-<li>Halten sie die zwei Geräte rückseitig aneinander (sodass sie sich fast berühren) und es wird vibrieren</li>
-<li>Nachdem es vibriert sehen sie wie der Inhalt ihres Gerätes von einer Warp-Geschwindigkeit Animation umgeben wird</li>
-<li>Drücken Sie auf die Karte und der Inhalt wird auf das Gerät des Anderen geladen.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-es/help_about.html b/OpenKeychain/src/main/res/raw-es/help_about.html
index 3c06f7b15..7ea723e76 100644
--- a/OpenKeychain/src/main/res/raw-es/help_about.html
+++ b/OpenKeychain/src/main/res/raw-es/help_about.html
@@ -31,27 +31,31 @@
<h2>Librerías</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Licencia Apache v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licencia MIT X11)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">Librería SafeSlinger Exchange</a> (Licencia MIT)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Licencia Apache v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Suppor Libraries</a> (Licencia Apache v2) [librerías de soporte de Android]</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Licencia Apache v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Licencia Apache v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Licencia Apache v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Licencia Apache v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licencia Apache v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Licencia Apache v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Licencia Apache v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licencia MIT X11)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Licencia Apache v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licencia Apache v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip</a> (Licencia Apache v2) [indicador deslizante para paso de página estilo Material]</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">Librería SafeSlinger Exchange</a> (Licencia MIT)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Licencia Apache v2) [panel de navegación estilo Material]</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (Licencia MIT)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Licencia Apache v2) [botón de acción flotante]</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-es/help_start.html b/OpenKeychain/src/main/res/raw-es/help_start.html
index c3755f014..b0df960ee 100644
--- a/OpenKeychain/src/main/res/raw-es/help_start.html
+++ b/OpenKeychain/src/main/res/raw-es/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Primeros pasos</h2>
-<p>Primero, necesita una clave personal. Cree una a través del menú en "Claves" o importe claves secretas (privadas) existentes. Después, puede descargar las claves de sus amigos o intercambiarlas mediante códigos QR o transmisión NFC.</p>
-
-<p>En Android inferior a 4.4, se recomienda que instale <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> para una selección de ficheros mejorada.</p>
+<h2>¿Cómo activo OpenKeychain in K-9 Mail?</h2>
+<p>Para utilizar OpenKeychain con K-9 Mail, querrá seguir estos pasos:</p>
+<ol>
+<li>Abra K-9 Mail y realice una pulsación larga en la cuenta con la que quiera utilizar OpenKeychain.</li>
+ <li>Seleccione "Configuración de cuenta", deplácese al fondo del todo y haga clic en "Criptografía".</li>
+ <li>Haga clic en "Proveedor OpenPGP" y de la lista seleccione OpenKeychain.</li>
+</ol>
<h2>¡He encontrado un bug en OpenKeychain!</h2>
<p>Por favor, informa de errores usando el <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">seguimiento de incidencias de OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-es/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-es/nfc_beam_share.html
deleted file mode 100644
index b6c2a2278..000000000
--- a/OpenKeychain/src/main/res/raw-es/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Asegúrate de que NFC está encendido en Ajustes &gt; Más &gt; NFC, y asegúrate de que Android Beam está también activado en ese mismo apartado.</li>
-<li>Mantén los dos dispositivos con ambos reversos juntos (deben estar casi en contacto) y notarás una vibración.</li>
-<li>Después de la vibración verás el contenido de tu dispositivo convertirse en una especie de ficha con una animación de Star Trek de fondo.</li>
-<li>Pulsa la ficha y el contenido será cargado en el dispositivo de la otra persona.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-et/help_about.html b/OpenKeychain/src/main/res/raw-et/help_about.html
index 2c6c5b3c4..cf77cf11d 100644
--- a/OpenKeychain/src/main/res/raw-et/help_about.html
+++ b/OpenKeychain/src/main/res/raw-et/help_about.html
@@ -31,27 +31,31 @@
<h2>Libraries</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-et/help_start.html b/OpenKeychain/src/main/res/raw-et/help_start.html
index 92fd4a92a..58f3fae40 100644
--- a/OpenKeychain/src/main/res/raw-et/help_start.html
+++ b/OpenKeychain/src/main/res/raw-et/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Getting started</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>I found a bug in OpenKeychain!</h2>
<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-et/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-et/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-et/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-eu/help_about.html b/OpenKeychain/src/main/res/raw-eu/help_about.html
index 2c6c5b3c4..6f19ccaad 100644
--- a/OpenKeychain/src/main/res/raw-eu/help_about.html
+++ b/OpenKeychain/src/main/res/raw-eu/help_about.html
@@ -2,12 +2,12 @@
<head></head>
<body>
<p><a href="http://www.openkeychain.org">http://www.openkeychain.org</a></p>
-<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
-<p>License: GPLv3+</p>
+<p><a href="http://www.openkeychain.org">OpenKeychain</a> Android-rako OpenPGP inplemetazio bat da.</p>
+<p>Baimena: GPLv3+</p>
-<h2>Developers</h2>
+<h2>Garatzaileak</h2>
<ul>
-<li>Dominik Schürmann (Maintainer)</li>
+<li>Dominik Schürmann (Mantentzailea)</li>
<li>Art O Cathain</li>
<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
@@ -28,30 +28,34 @@
<li>Tim Bray</li>
<li>Vincent Breitmoser</li>
</ul>
-<h2>Libraries</h2>
+<h2>Liburutegiak</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 Baimena)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT Baimena)</li>
<li>
-<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache Baimena v2)</li>
<li>
-<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache Baimena v2)</li>
<li>
-<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache Baimena v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache Baimena v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-eu/help_start.html b/OpenKeychain/src/main/res/raw-eu/help_start.html
index 92fd4a92a..0e05e3790 100644
--- a/OpenKeychain/src/main/res/raw-eu/help_start.html
+++ b/OpenKeychain/src/main/res/raw-eu/help_start.html
@@ -1,19 +1,22 @@
<html>
<head></head>
<body>
-<h2>Getting started</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
-
-<h2>I found a bug in OpenKeychain!</h2>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
+<h2>Akats bat aurkitu dut OpenKeychain-en!</h2>
<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
-<h2>Contribute</h2>
+<h2>Lagundu</h2>
<p>If you want to help us developing OpenKeychain by contributing code <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">follow our small guide on Github</a>.</p>
-<h2>Translations</h2>
-<p>Help translating OpenKeychain! Everybody can participate at <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain on Transifex</a>.</p>
+<h2>Itzulpenak</h2>
+<p>Lagundu OpenKeychain itzultzen! Edonork eskuhartu dezake hemen <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychainTransifex-en</a>.</p>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-eu/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-eu/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-eu/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-fi/help_about.html b/OpenKeychain/src/main/res/raw-fi/help_about.html
index 2c6c5b3c4..cf77cf11d 100644
--- a/OpenKeychain/src/main/res/raw-fi/help_about.html
+++ b/OpenKeychain/src/main/res/raw-fi/help_about.html
@@ -31,27 +31,31 @@
<h2>Libraries</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-fi/help_start.html b/OpenKeychain/src/main/res/raw-fi/help_start.html
index 92fd4a92a..58f3fae40 100644
--- a/OpenKeychain/src/main/res/raw-fi/help_start.html
+++ b/OpenKeychain/src/main/res/raw-fi/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Getting started</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>I found a bug in OpenKeychain!</h2>
<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-fi/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-fi/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-fi/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-fr/help_about.html b/OpenKeychain/src/main/res/raw-fr/help_about.html
index 8e87a1c65..82f86dc22 100644
--- a/OpenKeychain/src/main/res/raw-fr/help_about.html
+++ b/OpenKeychain/src/main/res/raw-fr/help_about.html
@@ -31,27 +31,31 @@
<h2>Bibliothèques</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Bibliothèque de soutien Android v4</a> (Licence Apache v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licence MIT X11)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">Bibliothèque d'échange SafeSlinger</a> (Licence MIT)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Bibliothèque de soutien Android v7 « appcompat »</a> (Licence Apache v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Bibliothèques de soutien Android</a> (Licence Apache v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Licence Apache v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (License Apache v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (License Apache v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (License Apache v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licence Apache v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Licence Apache v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Licence Apache v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licence MIT X11)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Licence Apache v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licence Apache v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (conception matérielle )</a> (Licence Apache v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">Bibliothèque d'échange SafeSlinger</a> (Licence MIT)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Licence Apache v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (Licence MIT)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Licence Apache v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-fr/help_start.html b/OpenKeychain/src/main/res/raw-fr/help_start.html
index 030a429e0..00d801e46 100644
--- a/OpenKeychain/src/main/res/raw-fr/help_start.html
+++ b/OpenKeychain/src/main/res/raw-fr/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Commencer</h2>
-<p>Vous avez d'abord besoin d'une clef personnelle. Créez-en une avec l'option du menu « Clefs » ou importez des clefs secrètes existantes. Ensuite vous pourrez télécharger les clefs de vos amis, ou les échanger par codes QR ou NFC.</p>
-
-<p>Sur les versions d'Android antérieures à 4.4, il vous est recommandé d'installer le<a href="market://details?id=org.openintents.filemanager">gestionnaire de fichiers OI</a> pour une sélection améliorée des fichiers.</p>
+<h2>Comment puis-je activer OpenKeychain dans K-9 Mail ?</h2>
+<p>Pour utiliser OpenKeychain avec K-9 Mail, vous devez suivre ces étapes :</p>
+<ol>
+<li>Ouvrez K-9 Mail et toquez longuement sur le compte avec lequel vous voulez utiliser OpenKeychain. </li>
+ <li>Sélectionnez « Paramètres du compte », faite défiler vers le bas et cliquez sur « Cryptographie».</li>
+ <li>Cliquez sur « Fournisseur OpenPGP » et sélectionnez OpenKeychain dans la liste.</li>
+</ol>
<h2>J'ai trouvé un bogue dans OpenKeychain !</h2>
<p>Veuillez rapporter le bogue en utilisant le <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">gestionnaire de bogue d'OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-fr/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-fr/nfc_beam_share.html
deleted file mode 100644
index b63c9ac84..000000000
--- a/OpenKeychain/src/main/res/raw-fr/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Assurez-vous que la NFC est activée dans Paramètres &gt; Paramètres supplémentaires &gt; NFC, ainsi que Android Beam. </li>
-<li>Tenir les deux appareils dos à dos (se touchant presque) et une vibration sera ressentie.</li>
-<li>Après la vibration, le contenu de votre appareil deviendra un objet en forme de carte avec une animation à la Star Trek en arrière-plan.</li>
-<li>Toquer la carte et le contenu se chargera alors sur votre appareil.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-is/help_about.html b/OpenKeychain/src/main/res/raw-is/help_about.html
index 2c6c5b3c4..cf77cf11d 100644
--- a/OpenKeychain/src/main/res/raw-is/help_about.html
+++ b/OpenKeychain/src/main/res/raw-is/help_about.html
@@ -31,27 +31,31 @@
<h2>Libraries</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-is/help_start.html b/OpenKeychain/src/main/res/raw-is/help_start.html
index 92fd4a92a..58f3fae40 100644
--- a/OpenKeychain/src/main/res/raw-is/help_start.html
+++ b/OpenKeychain/src/main/res/raw-is/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Getting started</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>I found a bug in OpenKeychain!</h2>
<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-is/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-is/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-is/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-it/help_about.html b/OpenKeychain/src/main/res/raw-it/help_about.html
index d44174182..0f24b7918 100644
--- a/OpenKeychain/src/main/res/raw-it/help_about.html
+++ b/OpenKeychain/src/main/res/raw-it/help_about.html
@@ -31,27 +31,31 @@
<h2>Librerie</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Licenza Apache v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licenza MIT X11)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">Libreria SafeSlinger Exchange</a> (Licenza MIT)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Licenza Apache v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Licenza Apache v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Licenza Apache v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Licenza Apache v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Licenza Apache v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licenza Apache v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Licenza Apache v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licenza MIT X11)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licenza Apache v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">Libreria SafeSlinger Exchange</a> (Licenza MIT)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-it/help_start.html b/OpenKeychain/src/main/res/raw-it/help_start.html
index ecf52eadd..026690b5a 100644
--- a/OpenKeychain/src/main/res/raw-it/help_start.html
+++ b/OpenKeychain/src/main/res/raw-it/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Per iniziare</h2>
-<p>In primo luogo è necessaria una chiave segreta personale. Creane una tramite il menu opzioni sotto la voce "Chiavi" o importa chiavi segrete già esistenti. Successivamente, è possibile scaricare le chiavi dei vostri amici o scambiarle con i codici QR o NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>Ho trovato un bug in OpenKeychain!</h2>
<p>Per favore riporta i bug usando il <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker di OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-it/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-it/nfc_beam_share.html
deleted file mode 100644
index e75877efe..000000000
--- a/OpenKeychain/src/main/res/raw-it/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Assicurati che NFC sia acceso in Impostazioni &gt; Altro &gt; NFC a assicurati che Android Beam sia pure su On nella stessa sezione.</li>
-<li>Mantieni i due dispositivi vicini (devono quasi toccarsi) e sentirai una vibrazione.</li>
-<li>Dopo che ha vibrato, vedrai il contenuto del tuo dispositivo diventare come una scheda e nello sfondo apparirà una animazione come la propulsione a curvatura di Star Trek.</li>
-<li>Tocca la scheda e il contenuto dopo si trasferira' nel dispositivo dell'altra persona.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ja/help_about.html b/OpenKeychain/src/main/res/raw-ja/help_about.html
index 6a5882640..77c774cf6 100644
--- a/OpenKeychain/src/main/res/raw-ja/help_about.html
+++ b/OpenKeychain/src/main/res/raw-ja/help_about.html
@@ -31,27 +31,31 @@
<h2>ライブラリ</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-ja/help_start.html b/OpenKeychain/src/main/res/raw-ja/help_start.html
index d9f73428a..6b8d1dbcd 100644
--- a/OpenKeychain/src/main/res/raw-ja/help_start.html
+++ b/OpenKeychain/src/main/res/raw-ja/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>入門</h2>
-<p>最初にあなたの個人用鍵ペアが必要になります。メニューの"鍵"で生成するか、既存の鍵ペアをインポートします。その後、あなたの友人の鍵をダウンロード、もしくはQRコードやNFCで交換します。</p>
-
-<p>Android 4.4 未満の場合、拡張したファイルの選択のためには<a href="market://details?id=org.openintents.filemanager">OI File Manager</a>のインストールを推奨します。</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>OpenKeychainでバグを見付けた!</h2>
<p><a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">OpenKeychainのIssueトラッカー</a>を使ってバグレポートを送ってください。</p>
diff --git a/OpenKeychain/src/main/res/raw-ja/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-ja/nfc_beam_share.html
deleted file mode 100644
index 422423a5d..000000000
--- a/OpenKeychain/src/main/res/raw-ja/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>設定 &gt; その他 &gt; NFC からNFCを有効にしてください、そしてAndroid Beamもまた選択してください。</li>
-<li>2つのデバイスを背中合せ(ほとんどすべてのタッチ方法)にしてバイブを感じるまで保持しておいてください。</li>
-<li>バイブの後、相手のデバイスでスタートレック風のバックグラウンドアニメーションしているカード風のコンテンツを見ると思います。</li>
-<li>カードをタップしコンテンツを他のデバイスに読み込ませてください。</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-nl/help_about.html b/OpenKeychain/src/main/res/raw-nl/help_about.html
index 33622b7c5..abcbf7087 100644
--- a/OpenKeychain/src/main/res/raw-nl/help_about.html
+++ b/OpenKeychain/src/main/res/raw-nl/help_about.html
@@ -31,27 +31,31 @@
<h2>Bibliotheken</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Biblitheek v4</a> (Apache Licentie v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 Licentie)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT-licentie)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Bibliotheek v7 'appcompat'</a> (Apache Licentie v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache Licentie v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache-licentie v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache-licentie v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache-licentie v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache-licentie v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache Licentie v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache Licentie v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache Licentie v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 Licentie)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache Licentie v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache Licentie v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache Licentie v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT-licentie)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache Licentie v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT Licentie)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache Licentie v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-nl/help_start.html b/OpenKeychain/src/main/res/raw-nl/help_start.html
index fda3c97b1..04fc9c263 100644
--- a/OpenKeychain/src/main/res/raw-nl/help_start.html
+++ b/OpenKeychain/src/main/res/raw-nl/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Aan de slag</h2>
-<p>Eerst heb je een persoonlijke sleutel nodig. Maak er een aan via het menu in 'Sleutels' of importeer bestaande geheime sleutels. Nadien kan je de sleutels van je vrienden downloaden of ze uitwisselen via QR codes of NFC.</p>
-
-<p>Op Android-versies lager dan 4.4 raden we aan dat je <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> installeert voor een verbeterde bestandsselectie.</p>
+<h2>Hoe activeer ik OpenKeychain in K-9 Mail?</h2>
+<p>Volg deze stappen om OpenKeychain te gebruiken met K-9 Mail:</p>
+<ol>
+<li>Open K-9 Mail en druk lang op de account waarmee je OpenKeychain wil gebruiken.</li>
+ <li>Selecteer "Accountinstellingen", scroll helemaal naar beneden en klik op "Cryptografie".</li>
+ <li>Klik op "OpenPGP-provider" en selecteer OpenKeychain in de lijst.</li>
+</ol>
<h2>Ik heb een bug in OpenKeychain gevonden!</h2>
<p>Rapporteer de bug met de <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">problemen tracker van OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-nl/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-nl/nfc_beam_share.html
deleted file mode 100644
index 5f7a63050..000000000
--- a/OpenKeychain/src/main/res/raw-nl/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Zorg ervoor dat NFC ingeschakeld is in Instellingen &gt; Meer &gt; NFC en zorg ervoor dat Android Beam ook in dezelfde sectie ingeschakeld is.</li>
-<li>Houd de twee apparaten met de achterkant tegen elkaar (ze moeten elkaar bijna aanraken) en u zult een trilling voelen.</li>
-<li>Nadat het trilt zult u de inhoud op uw partners apparaat in een soort kaart zien veranderen met Star Trek warp snelheid-eruitziende animatie op de achtergrond.</li>
-<li>Druk op de kaart en de inhoud zal dan laden op het apparaat van de andere persoon.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-pl/help_about.html b/OpenKeychain/src/main/res/raw-pl/help_about.html
index bdc48756d..ba319afca 100644
--- a/OpenKeychain/src/main/res/raw-pl/help_about.html
+++ b/OpenKeychain/src/main/res/raw-pl/help_about.html
@@ -31,27 +31,31 @@
<h2>Biblioteki</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Licencja Apache v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licencja MIT X11)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (Licencja MIT)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Licencja Apache v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (licencja Apache v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Licencja Apache v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Licencja Apache v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Licencja Apache v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licencja Apache v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Licencja Apache v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licencja MIT X11)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licencja Apache v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (Licencja MIT)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-pl/help_start.html b/OpenKeychain/src/main/res/raw-pl/help_start.html
index 400a89e60..f5cd3a9aa 100644
--- a/OpenKeychain/src/main/res/raw-pl/help_start.html
+++ b/OpenKeychain/src/main/res/raw-pl/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Pierwsze kroki</h2>
-<p>Najpierw będziesz potrzebował osobistego klucza. Stwórz go wybierając z menu "Klucze" lub zaimportuj istniejące tajne klucze. Później możesz pobrać klucze swoich znajomych lub wymienić się używając kodów QR lub NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>Znalazłem błąd w OpenKeychain!</h2>
<p>Zgłoś błąd korzystając z <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">systemu śledzenia błędów OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-pl/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-pl/nfc_beam_share.html
deleted file mode 100644
index f17e44079..000000000
--- a/OpenKeychain/src/main/res/raw-pl/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Upewnij się, że NFC (Near Field Communication, pol.: komunikacja bliskiego zasięgu) jest włączone. W tym celu wejdź w Ustawienia &gt; Inne &gt; NFC. Upewnij się również, że włączona jest funkcja Android Beam (znajduje się w tym samym miejscu).</li>
-<li>Przytrzymaj oba urządzenia plecami do siebie (powinny się niemal dotykać) i poczujesz wibrację.</li>
-<li>Po zakończeniu wibracji zobaczysz, że zawartość urządzenia partnera zamienia się w obiekt zbliżony do wizytówki, z animacją rodem ze Star Treka w tle.</li>
-<li>Dotknij wizytówkę, a jej zawartość zostanie wysłana na urządzenie drugiej osoby.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-pt/help_about.html b/OpenKeychain/src/main/res/raw-pt/help_about.html
index 2c6c5b3c4..cf77cf11d 100644
--- a/OpenKeychain/src/main/res/raw-pt/help_about.html
+++ b/OpenKeychain/src/main/res/raw-pt/help_about.html
@@ -31,27 +31,31 @@
<h2>Libraries</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-pt/help_start.html b/OpenKeychain/src/main/res/raw-pt/help_start.html
index 92fd4a92a..58f3fae40 100644
--- a/OpenKeychain/src/main/res/raw-pt/help_start.html
+++ b/OpenKeychain/src/main/res/raw-pt/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Getting started</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>I found a bug in OpenKeychain!</h2>
<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-pt/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-pt/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-pt/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ro/help_about.html b/OpenKeychain/src/main/res/raw-ro/help_about.html
index 2c6c5b3c4..cf77cf11d 100644
--- a/OpenKeychain/src/main/res/raw-ro/help_about.html
+++ b/OpenKeychain/src/main/res/raw-ro/help_about.html
@@ -31,27 +31,31 @@
<h2>Libraries</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-ro/help_start.html b/OpenKeychain/src/main/res/raw-ro/help_start.html
index 92fd4a92a..58f3fae40 100644
--- a/OpenKeychain/src/main/res/raw-ro/help_start.html
+++ b/OpenKeychain/src/main/res/raw-ro/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Getting started</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>I found a bug in OpenKeychain!</h2>
<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-ro/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-ro/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-ro/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ru/help_about.html b/OpenKeychain/src/main/res/raw-ru/help_about.html
index 0ffa75945..52a85c45d 100644
--- a/OpenKeychain/src/main/res/raw-ru/help_about.html
+++ b/OpenKeychain/src/main/res/raw-ru/help_about.html
@@ -31,27 +31,31 @@
<h2>Компоненты</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-ru/help_start.html b/OpenKeychain/src/main/res/raw-ru/help_start.html
index 1463d374d..dbfb87503 100644
--- a/OpenKeychain/src/main/res/raw-ru/help_start.html
+++ b/OpenKeychain/src/main/res/raw-ru/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Приступая</h2>
-<p>Для начала Вам нужен свой секретный ключ. Создайте его в меню раздела "Ключи" или импортируйте ранее созданный ключ. Позже вы сможете поделиться данными своего ключа с друзьями с помощью QR кода или NFC.</p>
-
-<p>На Android ниже 4.4, рекомендуется установить <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> для выбора файлов.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>Я нашел ошибку в OpenKeychain!</h2>
<p>Пожалуйста, сообщайте о возникших проблемах и найденных ошибках в разделе <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">Решение проблем OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-ru/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-ru/nfc_beam_share.html
deleted file mode 100644
index 584353da4..000000000
--- a/OpenKeychain/src/main/res/raw-ru/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Убедитесь, что NFC включен в настройках телефона: Настройки &gt; Дополнительно &gt; NFC</li>
-<li>Поднесите оба устройства вплотную обратными сторонами (до полного касания). Вы почувствуете небольшую вибрацию.</li>
-<li>Как только устройства завибрируют, на экране появится карточка с передаваемым содержимым.</li>
-<li>Нажмите на карточку, что бы передать данные (ключи) с одного устройства на другое.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sl/help_about.html b/OpenKeychain/src/main/res/raw-sl/help_about.html
index a34746c51..36ce2c104 100644
--- a/OpenKeychain/src/main/res/raw-sl/help_about.html
+++ b/OpenKeychain/src/main/res/raw-sl/help_about.html
@@ -31,27 +31,31 @@
<h2>Knjižnice</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (licenca Apache v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (licenca MIT X11)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (licenca MIT)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (licenca Apache v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (licenca Apache v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (licenca Apache v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (licenca Apache v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (licenca Apache v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (licenca Apache v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (licenca Apache v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (licenca MIT X11)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (licenca Apache v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (licenca MIT)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-sl/help_start.html b/OpenKeychain/src/main/res/raw-sl/help_start.html
index 2d0b763e0..84a2fc8f7 100644
--- a/OpenKeychain/src/main/res/raw-sl/help_start.html
+++ b/OpenKeychain/src/main/res/raw-sl/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Kako začeti</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>Našel sem 'hrošča' v aplikaciji OpenKeychain!</h2>
<p>Za poročanje o 'hroščih' uporabite <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">sledilnik težav za OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-sl/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-sl/nfc_beam_share.html
deleted file mode 100644
index defdb8884..000000000
--- a/OpenKeychain/src/main/res/raw-sl/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>V poglavju 'Nastavitve &gt; Več &gt; NFC' poskrbite, da bo NFC vključen. Prav tako mora biti vključen tudi 'NFC Beam'.</li>
-<li>S hrbtoma približajte dve napravi (vašo ter vašega partnerja - morata se skoraj dotikati) in začutili boste vibracijo.</li>
-<li>Po vibraciji se bo vsebina na vaši napravi spremenila v vizitki podoben objekt s 'Star Trek' animacijo v ozadju.</li>
-<li>Tapnite na vizitko in njena vsebina se bo prenesla na napravo druge osebe.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sr/help_about.html b/OpenKeychain/src/main/res/raw-sr/help_about.html
index a2ad13d25..0d2f9d697 100644
--- a/OpenKeychain/src/main/res/raw-sr/help_about.html
+++ b/OpenKeychain/src/main/res/raw-sr/help_about.html
@@ -31,27 +31,31 @@
<h2>Библиотеке</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Апачи лиценца в2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (МИТ Икс11 лиценца)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (МИТ лиценца)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Апачи лиценца в2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Андроидове библиотеке подршке</a> (Апачи лиценца в2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Апачи лиценца в2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Апачи лиценца в2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Апачи лиценца в2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Апачи лиценца в2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Апачи лиценца в2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Апачи лиценца в2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Апачи лиценца в2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (МИТ Икс11 лиценца)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Апачи лиценца в2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Апачи лиценца в2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Материјални дизајн)</a> (Апачи лиценца в2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (МИТ лиценца)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Апачи лиценца в2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (МИТ лиценца)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Апачи лиценца в2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-sr/help_start.html b/OpenKeychain/src/main/res/raw-sr/help_start.html
index a2f337a2f..e1d5c7726 100644
--- a/OpenKeychain/src/main/res/raw-sr/help_start.html
+++ b/OpenKeychain/src/main/res/raw-sr/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Први кораци</h2>
-<p>Најпре требате лични кључ. Направите један преко менија у „Кључеви“ или увезите постојеће тајне кључеве. Након тога, можете да преузмете пријатељеве кључеве или да их размените преко бар-кодова или НФЦ-а.</p>
-
-<p>За Андроид старији од 4.4 препоручује се да инсталирате <a href="market://details?id=org.openintents.filemanager">ОИ Менаџер фајлова</a> за побољшани избор фаjлова.</p>
+<h2>Како да активирам Отворени кључарник у К-9 Пошти?</h2>
+<p>Да бисте користили Отворени кључарник са К-9 Поштом, пратите ове кораке:</p>
+<ol>
+<li>Отворите К-9 Пошту и притисните дуго на налог са којим желите да користите Отворени кључарник.</li>
+ <li>Изаберите „поставке налога“ и клизајте на дно и притисните „криптографија“.</li>
+ <li>Кликните на „ОпенПГП апликација“ и изаберите Отворени кључарник са списка.</li>
+</ol>
<h2>Пронађох грешку у Отвореном кључарнику!</h2>
<p>Пријавите грешку на <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">пратиоцу проблема за Отворени кључарник</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-sr/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-sr/nfc_beam_share.html
deleted file mode 100644
index 0c7e65353..000000000
--- a/OpenKeychain/src/main/res/raw-sr/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Проверите у Подешавања &gt; Још &gt; НФЦ да ли је НФЦ укључен и уверите се да је „Андроид Сноп“ такође у истом одељку.</li>
-<li>Држите оба уређаја леђа о леђа (треба да се скоро додирују) и осетићете вибрацију.</li>
-<li>Након вибрације видећете да се садржај на вашем уређају претвара у нешто што личи на картицу са анимацијом сличном ворп брзини из Звезданих Стаза у позадини.</li>
-<li>Додирните картицу и садржај ће се потом учитати на уређај друге особе.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sv/help_about.html b/OpenKeychain/src/main/res/raw-sv/help_about.html
index 74c704010..3c401f4b1 100644
--- a/OpenKeychain/src/main/res/raw-sv/help_about.html
+++ b/OpenKeychain/src/main/res/raw-sv/help_about.html
@@ -31,27 +31,31 @@
<h2>Bibliotek</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-sv/help_start.html b/OpenKeychain/src/main/res/raw-sv/help_start.html
index da1d90308..5de9f23f0 100644
--- a/OpenKeychain/src/main/res/raw-sv/help_start.html
+++ b/OpenKeychain/src/main/res/raw-sv/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Kom igång</h2>
-<p>Först behöver du en personlig nyckel. Skapa en via menyn i "Nycklar" eller importera en befintlig privat nyckel. Efteråt så kan du ladda ner dina vänners nycklar eller utbyta dem via QR-koder eller NFC.</p>
-
-<p>I Android lägre än 4.4 rekommenderas det att du installerar <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> för förbättrad filurval.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>Jag hittade en bugg i OpenKeychain!</h2>
<p>Rapporterar buggen med <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">felrapporteringssystemen av OpenKeychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-sv/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-sv/nfc_beam_share.html
deleted file mode 100644
index b88771e70..000000000
--- a/OpenKeychain/src/main/res/raw-sv/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Se till att NFC är påslaget i Inställningar &gt; Mer &gt; NFC och se även till att Android Beam är på i samma avdelning.</li>
-<li>Håll de två enheternas baksidor mot varandra (de måste nästan vidröras) och du känner av en vibration.</li>
-<li>Efter vibrationen kommer du att se innehållet på din enhet omvandlas till ett kortliknande föremål och en animation i bakgrunden som ser ut som Star Treks warp speed.</li>
-<li>Tryck på kortet och innehållet kommer att laddas på den andra personens enhet.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-tr/help_about.html b/OpenKeychain/src/main/res/raw-tr/help_about.html
index 0c7d40dca..9933e24a9 100644
--- a/OpenKeychain/src/main/res/raw-tr/help_about.html
+++ b/OpenKeychain/src/main/res/raw-tr/help_about.html
@@ -31,27 +31,31 @@
<h2>Kütüphaneler</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Destek Kütüphanesi v4</a> (Apache Lisans v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 Lisans)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Takas kütüphanesi</a> (MIT Lisans)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Destek Kütüphanesi v7 'appcompat'</a> (Apache Lisans v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache Lisans v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache Lisans v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache Lisans v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache Lisans v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache Lisans v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache Lisans v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 Lisans)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache Lisans v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Takas kütüphanesi</a> (MIT Lisans)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-tr/help_start.html b/OpenKeychain/src/main/res/raw-tr/help_start.html
index bbcd0326c..868c2bbcb 100644
--- a/OpenKeychain/src/main/res/raw-tr/help_start.html
+++ b/OpenKeychain/src/main/res/raw-tr/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Başlarken</h2>
-<p>Öncelikle kişisel bir anahtara ihtiyacınız var. "Anahtarlar" içindeki menüden bir tane oluşturabilir veya var olan gizli anahtarınızı içe aktarabilirsiniz. Daha sonra arkadaşlarınızın anahtarlarını indirebilir ya da QR Kodları veya NFC aracılığıyla değiş tokuş edebilirsiniz.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>OpenKeychain'de bir bug buldum!</h2>
<p>Lütfen bulduğunuz hataları <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">OpenKeychain sorun izleyici</a> kullanarak rapor edin.</p>
diff --git a/OpenKeychain/src/main/res/raw-tr/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-tr/nfc_beam_share.html
deleted file mode 100644
index 038cc2c2d..000000000
--- a/OpenKeychain/src/main/res/raw-tr/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>NFC'nin Ayarlar &gt; Daha Fazla &gt; NFC menüsünde açık olduğundan emin olun ve aynı sekmede Android Beam'in de açık olduğundan emin olun.</li>
-<li>İki cihazı arka arkaya tutun (neredeyse temas edecek şekilde) ve bir titreşim hissedeceksiniz.</li>
-<li>Titreşimden sonra içeriğin sizin cihazda arkaplanında Star Trek ışınlanma animasyonu olan kart'a benzer bir objeye dönüştüğünü göreceksiniz.</li>
-<li>Kart'a tıklayın ve içerik diğer kişinin cihazına yüklensin.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-uk/help_about.html b/OpenKeychain/src/main/res/raw-uk/help_about.html
index 8fbb7bcb8..a9a181525 100644
--- a/OpenKeychain/src/main/res/raw-uk/help_about.html
+++ b/OpenKeychain/src/main/res/raw-uk/help_about.html
@@ -31,27 +31,31 @@
<h2>Бібліотеки</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Бібліотека підтримки Android в.4</a> (Ліцензія Apache в. 2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (ліцензія MIT X11)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Бібліотека підтримки Android в.7 'appcompat'</a> (Ліцензія Apache в.2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (ліцензія Apache в2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (ліцензія Apache в2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (ліцензія Apache в2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (ліцензія Apache в2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (ліцензія Apache в. 2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (ліцензія Apache в.2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (ліцензія MIT X11)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (ліцензія Apache в.2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-uk/help_start.html b/OpenKeychain/src/main/res/raw-uk/help_start.html
index 19197f6df..5b336ed99 100644
--- a/OpenKeychain/src/main/res/raw-uk/help_start.html
+++ b/OpenKeychain/src/main/res/raw-uk/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>Приступаючи до роботи</h2>
-<p>First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>Я знайшов помилку в OpenPGP Keychain!</h2>
<p>Будь ласка, повідомте про ваду за допомогою <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">відстежувача проблем OpenPGP Keychain</a>.</p>
diff --git a/OpenKeychain/src/main/res/raw-uk/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-uk/nfc_beam_share.html
deleted file mode 100644
index 4adff525f..000000000
--- a/OpenKeychain/src/main/res/raw-uk/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Переконайтеся, що NFC увімкнений в налаштуваннях телефону: Налаштування &gt; Додатково &gt; NFC</li>
-<li>Піднесіть обидва пристрої впритул зворотними сторонами (до повного торкання). Ви відчуєте невелику вібрацію.</li>
-<li>Як тільки пристрої завібрують, на екрані з'явиться картка з переданими вмістом.</li>
-<li>Натисніть на картку, що б передати дані з одного пристрою на інший.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-zh-rTW/help_about.html b/OpenKeychain/src/main/res/raw-zh-rTW/help_about.html
index 37b3a2ec6..0aaebdae3 100644
--- a/OpenKeychain/src/main/res/raw-zh-rTW/help_about.html
+++ b/OpenKeychain/src/main/res/raw-zh-rTW/help_about.html
@@ -31,27 +31,31 @@
<h2>函式庫</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache授權條款 v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11授權條款)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT授權條款)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache授權條款 v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache授權條款 v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache授權條款 v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache授權條款 v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache授權條款 v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache授權條款 v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache授權條款 v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11授權條款)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache授權條款 v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT授權條款)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-zh-rTW/help_start.html b/OpenKeychain/src/main/res/raw-zh-rTW/help_start.html
index 44835cc46..6ba9afe7a 100644
--- a/OpenKeychain/src/main/res/raw-zh-rTW/help_start.html
+++ b/OpenKeychain/src/main/res/raw-zh-rTW/help_start.html
@@ -1,11 +1,14 @@
<html>
<head></head>
<body>
-<h2>快速上手</h2>
-<p>首先你需要一支個人金鑰,通過選單來建立一支金鑰或是匯入現有私鑰。接下來,你可以下載你朋友的金鑰,或是通過QR條碼和NFC進行交換。</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>我在OpenKeychain發現問題!</h2>
<p>請通過<a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">OpenKeychain問題追蹤</a>回報問題。</p>
diff --git a/OpenKeychain/src/main/res/raw-zh-rTW/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-zh-rTW/nfc_beam_share.html
deleted file mode 100644
index c87976b61..000000000
--- a/OpenKeychain/src/main/res/raw-zh-rTW/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>確定在 \"設定\" \&gt; \"更多內容…\" \&gt; \"NFC\" 裡面已經開啟NFC和Android Beam。</li>
-<li>將裝置背對背輕靠,直到感覺到震動。</li>
-<li>震動後會發現畫面變成卡片狀,並且背景帶有Star Trek的特效。</li>
-<li>輕觸畫面,內容將顯示在對方的畫面上。</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-zh/help_about.html b/OpenKeychain/src/main/res/raw-zh/help_about.html
index 7c3813133..9fa512604 100644
--- a/OpenKeychain/src/main/res/raw-zh/help_about.html
+++ b/OpenKeychain/src/main/res/raw-zh/help_about.html
@@ -31,27 +31,31 @@
<h2>函式庫</h2>
<ul>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
+<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<li>
+<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
+<a href="http://developer.android.com/tools/support-library/index.html">Android Support Libraries</a> (Apache License v2)</li>
<li>
<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
-<li>
<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
<li>
<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
+<a href="https://github.com/zxing/zxing">ZXing</a> (Apache License v2)</li>
<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
+<a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Minimal</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
+<a href="https://github.com/jpardogo/PagerSlidingTabStrip">PagerSlidingTabStrip (Material Design)</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/SafeSlingerProject/exchange-android">SafeSlinger Exchange library</a> (MIT License)</li>
+<a href="https://github.com/neokree/MaterialNavigationDrawer">MaterialNavigationDrawer</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/nispok/snackbar">Snackbar</a> (MIT License)</li>
+<li>
+<a href="https://github.com/futuresimple/android-floating-action-button">FloatingActionButton</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-zh/help_changelog.html b/OpenKeychain/src/main/res/raw-zh/help_changelog.html
index 7bba18be8..af25ad08e 100644
--- a/OpenKeychain/src/main/res/raw-zh/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-zh/help_changelog.html
@@ -9,11 +9,11 @@
<h2>3.1.1</h2>
<ul>
<li>Fix key export to files (they were written partially)</li>
-<li>Fix crash on Android 2.3</li>
+<li>解决在 Android 2.3 下的崩溃</li>
</ul>
<h2>3.1</h2>
<ul>
-<li>Fix crash on Android 5</li>
+<li>解决在 Android 5 下的崩溃</li>
<li>New certify screen</li>
<li>Secure Exchange directly from key list (SafeSlinger library)</li>
<li>New QR Code program flow</li>
diff --git a/OpenKeychain/src/main/res/raw-zh/help_start.html b/OpenKeychain/src/main/res/raw-zh/help_start.html
index 1290e109a..cf1b84941 100644
--- a/OpenKeychain/src/main/res/raw-zh/help_start.html
+++ b/OpenKeychain/src/main/res/raw-zh/help_start.html
@@ -1,18 +1,21 @@
<html>
<head></head>
<body>
-<h2>快速上手指南</h2>
-<p>首先你需要一个个人密钥。可以通过菜单创建一个密钥或者导入已有密钥。之后你就可以从网络下载朋友的密钥或者通过二维码和NFC功能交换密钥。</p>
-
-<p>On Android lower 4.4, it is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection.</p>
+<h2>How do I activate OpenKeychain in K-9 Mail?</h2>
+<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p>
+<ol>
+<li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li>
+ <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li>
+ <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li>
+</ol>
<h2>我在OpenKeychain發現問題!</h2>
<p>請利用 <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">OpenKeychain 項目回報系統</a>回報問題。</p>
<h2>發布</h2>
<p>帮助我们开发 <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">Github</a>.</p>
-<h2>翻譯</h2>
+<h2>翻译</h2>
<p>帮助翻译 OpenKeychain。 <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain on Transifex</a>.</p>
</body>
diff --git a/OpenKeychain/src/main/res/raw-zh/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-zh/nfc_beam_share.html
deleted file mode 100644
index 99ffe4c12..000000000
--- a/OpenKeychain/src/main/res/raw-zh/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>確定在 "設定" &gt; "更多內容…" &gt; "NFC" 裡面已經開啟 NFC 和 Android Beam。</li>
-<li>將兩部裝置背對背貼近(幾乎接觸),你會感覺到一股震動。</li>
-<li>震動之後你會看見你夥伴的畫面變成卡片狀,並且背景帶有如 Star Trek 般的特效。</li>
-<li>輕觸卡片,內容隨即顯示在你的裝置上。</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw/help_changelog.html b/OpenKeychain/src/main/res/raw/help_changelog.html
index 2cc93bc38..dcc626feb 100644
--- a/OpenKeychain/src/main/res/raw/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw/help_changelog.html
@@ -6,6 +6,21 @@ And don't add newlines before or after p tags because of transifex -->
</head>
<body>
+<h2>3.2beta2</h2>
+<ul>
+<li>Material design</li>
+<li>Integration of QR Scanner (New permissions required)</li>
+<li>Improved key creation wizard</li>
+<li>Fix missing contacts after sync</li>
+<li>Requires Android 4</li>
+<li>Redesigned key screen</li>
+<li>Simplify crypto preferences, better selection of secure ciphers</li>
+<li>API: Detached signatures, free selection of signing key,...</li>
+<li>Fix: Some valid keys were shown revoked or expired</li>
+<li>Don't accept signatures by expired or revoked subkeys</li>
+<li>Keybase.io support in advanced view</li>
+</ul>
+
<h2>3.1.2</h2>
<ul>
<li>Fix key export to files (now for real)</li>
diff --git a/OpenKeychain/src/main/res/raw/nfc_beam_share.html b/OpenKeychain/src/main/res/raw/nfc_beam_share.html
deleted file mode 100644
index 873c71777..000000000
--- a/OpenKeychain/src/main/res/raw/nfc_beam_share.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- Maintain structure with headings with h2 tags and content with p tags.
-This makes it easy to translate the values with transifex!
-And don't add newlines before or after p tags because of transifex -->
-<html>
-<head>
-</head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings > More > NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/values-bg/strings.xml b/OpenKeychain/src/main/res/values-bg/strings.xml
index 233347bd3..518b80f47 100644
--- a/OpenKeychain/src/main/res/values-bg/strings.xml
+++ b/OpenKeychain/src/main/res/values-bg/strings.xml
@@ -59,6 +59,7 @@
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<!--First Time-->
<!--unsorted-->
diff --git a/OpenKeychain/src/main/res/values-cs/strings.xml b/OpenKeychain/src/main/res/values-cs/strings.xml
index ce4f1cdcf..9c16fa413 100644
--- a/OpenKeychain/src/main/res/values-cs/strings.xml
+++ b/OpenKeychain/src/main/res/values-cs/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Vybrat klíče</string>
<string name="title_select_secret_key">Vybrat svůj klíč</string>
- <string name="title_encrypt_text">Zašifrovat text</string>
- <string name="title_encrypt_files">Zašifrovat soubory</string>
<string name="title_decrypt">Rozšifrovat</string>
<string name="title_unlock">Odemknout klíč</string>
<string name="title_add_subkey">Přidat podklíč</string>
@@ -19,7 +17,6 @@
<string name="title_share_fingerprint_with">Sdílet otisk s...</string>
<string name="title_share_key">Sdílet klíč s...</string>
<string name="title_share_file">Sdílet soubor s...</string>
- <string name="title_share_message">Sdílet zprávu s...</string>
<string name="title_encrypt_to_file">Zašifrovat do souboru</string>
<string name="title_decrypt_to_file">Rozšifrovat do souboru</string>
<string name="title_import_keys">Importovat klíče</string>
@@ -28,7 +25,6 @@
<string name="title_export_keys">Exportovat klíče</string>
<string name="title_key_not_found">Klíč nebyl nalezen</string>
<string name="title_send_key">Nahrát na keyserver</string>
- <string name="title_certify_key">Certifikovat identity</string>
<string name="title_key_details">Detaily klíče</string>
<string name="title_help">Nápověda</string>
<string name="title_log_display">Log</string>
@@ -43,20 +39,16 @@
<string name="section_defaults">Výchozí hodnoty</string>
<string name="section_advanced">Pokročilé</string>
<string name="section_passphrase_cache">Cache hesel</string>
- <string name="section_certify">Certifikovat</string>
<string name="section_actions">Akce</string>
<string name="section_share_key">Klíč</string>
- <string name="section_certification_key">Klíč použitý pro certifikaci</string>
<string name="section_upload_key">Synchronizovat klíč</string>
<string name="section_key_server">Keyserver</string>
<string name="section_fingerprint">Otisk</string>
- <string name="section_key_to_certify">Klíče k ověření</string>
<string name="section_decrypt_files">Soubory</string>
<string name="section_decrypt_text">Text</string>
<string name="section_certs">Certifikáty</string>
<!--button-->
<string name="btn_decrypt_verify_file">Dešifrovat, ověřit a uložit soubor</string>
- <string name="btn_decrypt_verify_message">Dešifrovat a ověřit zpávu</string>
<string name="btn_encrypt_file">Zaširovat a uložit soubor</string>
<string name="btn_encrypt_share_file">Zašifrovat a sdílet soubor</string>
<string name="btn_save">Uložit</string>
@@ -68,7 +60,6 @@
<string name="btn_next">Další</string>
<string name="btn_back">Zpět</string>
<string name="btn_lookup_key">Vyhledat klíč</string>
- <string name="btn_share_encrypted_signed">Zašifrovat a sdílet zprávu</string>
<string name="btn_view_cert_key">Zobrazit klíč certifikátu</string>
<string name="btn_create_key">Vytvořit klíč</string>
<string name="btn_add_files">Přidat soubor(y)</string>
@@ -91,7 +82,6 @@
<string name="menu_export_all_keys">Exportovat všechny klíče</string>
<string name="menu_advanced">Zobrazit pokročilé info</string>
<!--label-->
- <string name="label_message">Zpráva</string>
<string name="label_file">Soubor</string>
<string name="label_files">Soubor(y)</string>
<string name="label_file_colon">Soubor:</string>
@@ -116,7 +106,6 @@
<string name="label_symmetric">Zašifrovat heslem</string>
<string name="label_passphrase_cache_ttl">Čas vypršení pro cache</string>
<string name="label_passphrase_cache_subs">Pamatovat si heslo podle podklíče</string>
- <string name="label_message_compression">Komprimovat zprávu</string>
<string name="label_file_compression">Komprimovat soubor</string>
<string name="label_keyservers">Keyservery</string>
<string name="label_key_id">ID klíče</string>
@@ -136,13 +125,6 @@
<string name="label_preferred">upřednostněno</string>
<string name="user_id_no_name">&lt;beze jména&gt;</string>
<string name="none">&lt;žádný&gt;</string>
- <string name="no_key">&lt;žádný klíč&gt;</string>
- <string name="can_encrypt">slouží k šifrovní</string>
- <string name="can_sign">slouží k podpisu</string>
- <string name="can_certify">může ověřit</string>
- <string name="can_certify_not">nemůže ověřit</string>
- <string name="expired">po epiraci</string>
- <string name="revoked">revokovat</string>
<plurals name="n_keys">
<item quantity="one">1 klíč</item>
<item quantity="few">%d klíče</item>
@@ -174,7 +156,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Otevřít...</string>
- <string name="warning">Varovnání</string>
<string name="error">Chyba</string>
<string name="error_message">Chyba: %s</string>
<!--key flags-->
@@ -192,20 +173,14 @@
<string name="pin_for">Zadat PIN pro \'%s\'</string>
<string name="yubikey_pin_for">Zadejte PIN pro přístup k YubiKey pro \'%s\'</string>
<string name="nfc_text">Přidržte YubiKey u zadní strany vašeho přístroje.</string>
- <string name="file_delete_confirmation">Chcete opravdu smazat\n%s?</string>
- <string name="file_delete_successful">Úspěšně smazáno.</string>
- <string name="no_file_selected">Nejprve vyberte soubor.</string>
+ <string name="no_file_selected">Nejprve vyberte soubor.</string>
<string name="encrypt_sign_successful">Úspěšně podepsáno a/nebo zašifrováno.</string>
<string name="encrypt_sign_clipboard_successful">Úspěšně podepsání a/nebo zašifrováno do schránky.</string>
- <string name="enter_passphrase_twice">Heslo zadejte dvakrát.</string>
<string name="select_encryption_key">Vyberte alespoň jeden šifrovací klíč.</string>
<string name="select_encryption_or_signature_key">Vyberte alespoň jeden šifrovací nebo podpisový klíč.</string>
<string name="specify_file_to_encrypt_to">Prosím specifikujte do kterého souboru zašifrovat.\nVAROVÁNÍ: Pokud soubor již existuje, bude přepsán.</string>
<string name="specify_file_to_decrypt_to">Prosím specifikujte do kterého souboru rozšifrovat.\nVAROVÁNÍ: Pokud soubor již existuje, bude přepsán.</string>
<string name="specify_file_to_export_to">Prosím specifikujte do kterého souboru exportovat.\nVAROVÁNÍ: Pokud soubor již existuje, bude přepsán.</string>
- <string name="key_deletion_confirmation_multi">Opravdu si přejete smazat všechny vybrané veřejné klíče?\nToto nebude možné vzít zpět!</string>
- <string name="secret_key_deletion_confirmation">Opravdu chcete smazat TAJNÝ klíč \'%s\'?\nTuto operaci nelze vzít zpět!</string>
- <string name="public_key_deletetion_confirmation">Opravdu chcete smazat veřejný klíč \'%s\'?\nToto nelze vzít zpět!</string>
<string name="also_export_secret_keys">Zárověň exportovat tajný klíč</string>
<string name="reinstall_openkeychain">Narazili jste na známou chybu v Androidu. Přeinstalujte prosím OpenKeychain pokud chcete své propojit kontakty s klíči.</string>
<string name="key_exported">Úspěšně exportován 1 klíč.</string>
@@ -217,13 +192,11 @@
<string name="nfc_successful">Úspěšně odeslaný klíč pomocí NFC Beam!</string>
<string name="key_copied_to_clipboard">Klíč byl zkopírován do schránky!</string>
<string name="fingerprint_copied_to_clipboard">Fingerprint byl zkopírován do schránky!</string>
- <string name="select_key_to_certify">Prosím vyberte klíč pro ověření!</string>
<string name="key_too_big_for_sharing">Klíč je příliš velký aby byl sdílen pomocí této metody!</string>
<string name="text_copied_to_clipboard">Text byl zkopírován do schránky!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">mazání \'%s\' selhalo</string>
<string name="error_file_not_found">soubor nenalezen</string>
<string name="error_no_secret_key_found">žádný vhodný tajný klíč nenalezen</string>
<string name="error_external_storage_not_ready">externí úložiště není připraveno</string>
@@ -305,8 +278,6 @@
<string name="progress_deleting_securely">mažu \'%s\' bezpečně...</string>
<string name="progress_deleting">mažu klíče...</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Jméno/Email/ID klíče</string>
- <string name="hint_cloud_search_hint">Jméno/Email/Důkaz/Klíč...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -334,7 +305,6 @@
<!--Help-->
<string name="help_tab_start">Začít</string>
<string name="help_tab_faq">FAQ</string>
- <string name="help_tab_wot">Síť důvěry</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Historie změn</string>
<string name="help_tab_about">O aplikaci</string>
@@ -414,7 +384,6 @@
<string name="key_view_action_edit">Editovat klíč</string>
<string name="key_view_action_encrypt">Zašifrovat text</string>
<string name="key_view_action_encrypt_files">soubory</string>
- <string name="key_view_action_certify">Certifikovat identity</string>
<string name="key_view_action_update">Aktualizuji z keyserveru</string>
<string name="key_view_action_share_with">Sdílet pomocí...</string>
<string name="key_view_action_share_nfc">Sdílet přes NFC</string>
@@ -457,15 +426,12 @@
<string name="edit_key_error_add_identity">Přidejte alespoň jednu identitu!</string>
<string name="edit_key_error_add_subkey">Přidejte alespoň jeden podklíč!</string>
<!--Create key-->
- <string name="create_key_upload">Aktualizovat klíč na keyserver</string>
<string name="create_key_empty">Toto pole je vyžadováno</string>
<string name="create_key_passphrases_not_equal">Heslo nesouhlasí</string>
<string name="create_key_final_text">Zadali jste následující identitu:</string>
<string name="create_key_final_robot_text">Vytvoření klíče může chvíli trvat, mezitím si dejte třeba šálek dobré kávy...</string>
<string name="create_key_rsa">(3 podklíče, RSA, 4096 bit)</string>
<string name="create_key_custom">(uživatelská konfigurace klíče)</string>
- <string name="create_key_identity_text">Zadejte své celé jméno, emailovou adresu a zvolte heslo.</string>
- <string name="create_key_hint_full_name">Celé jméno, např. Jan Novák</string>
<string name="create_key_edit">Změnit konfiguraci klíče</string>
<!--View key-->
<!--Navigation Drawer-->
@@ -513,6 +479,7 @@
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
<string name="msg_acc_saved">Účet uložen</string>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Kliknout pro vymazání načtených hesel</string>
<string name="passp_cache_notif_clear">Smazat cache</string>
@@ -527,7 +494,6 @@
<string name="unknown_uid">&lt;neznámý&gt;</string>
<string name="empty_certs">Žádné certifikáty pro tento klíč</string>
<string name="label_revocation">Důvod revokace</string>
- <string name="label_verify_status">Stav ověření</string>
<string name="label_cert_type">Typ</string>
<string name="error_key_not_found">Klíč nenalezen!</string>
<string name="error_key_processing">Chyba zpracování klíče!</string>
@@ -540,7 +506,8 @@
<string name="error_no_encrypt_subkey">Není dostupný šifrovací podklíč!</string>
<string name="contact_show_key">Zobrazit klíč (%s)</string>
<string name="swipe_to_update">Potáhnout dolů pro aktualizaci z keyserveru</string>
- <!--Passphrase wizard-->
+ <string name="file_delete_successful"></string>
+ <!--Passphrase wizard-->
<!--TODO: rename all the things!-->
<!--<string name="enter_passphrase_twice">Enter passphrase twice</string>-->
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml
index 245de82ec..fbae159a3 100644
--- a/OpenKeychain/src/main/res/values-de/strings.xml
+++ b/OpenKeychain/src/main/res/values-de/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Wähle Schlüssel</string>
<string name="title_select_secret_key">Wähle Deinen Schlüssel</string>
- <string name="title_encrypt_text">Text Verschlüsseln</string>
- <string name="title_encrypt_files">Dateien verschlüsseln</string>
<string name="title_decrypt">Entschlüsseln</string>
<string name="title_unlock">Schlüssel entsperren</string>
<string name="title_add_subkey">Unterschlüssel hinzufügen</string>
@@ -20,7 +18,6 @@
<string name="title_share_fingerprint_with">Teile Fingerabdruck über…</string>
<string name="title_share_key">Teile Schlüssel über...</string>
<string name="title_share_file">Datei teilen mit…</string>
- <string name="title_share_message">Teile Nachricht über…</string>
<string name="title_encrypt_to_file">In eine Datei verschlüsseln</string>
<string name="title_decrypt_to_file">In eine Datei entschlüsseln</string>
<string name="title_import_keys">Schlüssel importieren</string>
@@ -29,7 +26,7 @@
<string name="title_export_keys">Schlüssel exportieren</string>
<string name="title_key_not_found">Schlüssel nicht gefunden</string>
<string name="title_send_key">Auf Schlüsselserver hochladen</string>
- <string name="title_certify_key">Identitäten beglaubigen</string>
+ <string name="title_certify_key">Schlüssel bestätigen</string>
<string name="title_key_details">Schlüsseldetails</string>
<string name="title_help">Hilfe</string>
<string name="title_log_display">Log</string>
@@ -37,30 +34,33 @@
<string name="title_exchange_keys">Schlüssel austauschen</string>
<string name="title_advanced_key_info">Erweiterte Schlüsselinformation</string>
<string name="title_keys">Schlüssel</string>
+ <string name="title_delete_secret_key">DEINEN Schlüssel löschen \'%s\'?</string>
<!--section-->
<string name="section_user_ids">Identitäten</string>
+ <string name="section_should_you_trust">Sollten Sie diesem Schlüssel vertrauen?</string>
+ <string name="section_proof_details">Nachweis überprüfen</string>
+ <string name="section_cloud_evidence">Nachweise aus der Cloud</string>
<string name="section_keys">Unterschlüssel</string>
<string name="section_cloud_search">Cloudsuche</string>
<string name="section_general">Allgemein</string>
<string name="section_defaults">Standardwerte</string>
<string name="section_advanced">Fortgeschrittene Einstellungen</string>
<string name="section_passphrase_cache">Passwort Zwischenspeicher</string>
- <string name="section_certify">Beglaubigen</string>
+ <string name="section_certify">Bestätigen</string>
<string name="section_actions">Aktionen</string>
<string name="section_share_key">Schlüssel</string>
- <string name="section_certification_key">Mit diesem Schlüssel beglaubigen</string>
<string name="section_upload_key">Schlüssel synchronisieren</string>
<string name="section_key_server">Schlüsselserver</string>
<string name="section_fingerprint">Fingerabdruck</string>
- <string name="section_key_to_certify">Zu beglaubigender Schlüssel</string>
<string name="section_decrypt_files">Dateien</string>
<string name="section_decrypt_text">Text</string>
<string name="section_certs">Zertifikate</string>
<string name="section_encrypt">Verschlüsseln</string>
<string name="section_decrypt">Entschlüsseln</string>
+ <string name="section_current_expiry">Aktuelles Ablaufdatum</string>
+ <string name="section_new_expiry">Neues Ablaufdatum</string>
<!--button-->
<string name="btn_decrypt_verify_file">Datei entschlüsseln, verifizieren und speichern</string>
- <string name="btn_decrypt_verify_message">Entschlüsseln und verifizieren</string>
<string name="btn_encrypt_file">Datei verschlüsseln und speichern</string>
<string name="btn_encrypt_share_file">Datei verschlüsseln und teilen</string>
<string name="btn_save">Speichern</string>
@@ -71,8 +71,9 @@
<string name="btn_export_to_server">Auf Schlüsselserver hochladen</string>
<string name="btn_next">Weiter</string>
<string name="btn_back">Zurück</string>
+ <string name="btn_no">Nein</string>
+ <string name="btn_match">Fingerabdrücke stimmen überein</string>
<string name="btn_lookup_key">Schlüssel nachschlagen</string>
- <string name="btn_share_encrypted_signed">Verschlüsseln und teilen</string>
<string name="btn_view_cert_key">Beglaubigungsschlüssel anzeigen</string>
<string name="btn_create_key">Schlüssel erzeugen</string>
<string name="btn_add_files">Datei(en) hinzufügen</string>
@@ -90,6 +91,7 @@
<string name="menu_create_key">Erzeuge meinen Schlüssel</string>
<string name="menu_import_existing_key">Von Datei importieren</string>
<string name="menu_search">Suchen</string>
+ <string name="menu_nfc_preferences">NFC-Einstellungen</string>
<string name="menu_beam_preferences">Beam-Einstellungen</string>
<string name="menu_key_edit_cancel">Abbrechen</string>
<string name="menu_encrypt_to">Verschlüsseln nach…</string>
@@ -99,7 +101,6 @@
<string name="menu_export_all_keys">Alle Schlüssel exportieren</string>
<string name="menu_advanced">Erweiterte Infos anzeigen</string>
<!--label-->
- <string name="label_message">Nachricht</string>
<string name="label_file">Datei</string>
<string name="label_files">Datei(en)</string>
<string name="label_file_colon">Datei:</string>
@@ -114,7 +115,7 @@
<string name="label_write_version_header_summary">Fügt \'OpenKeychain v2.7\' zu OpenPGP-Signaturen, Daten und exportierten Schlüsseln hinzu</string>
<string name="label_use_default_yubikey_pin">Standard-YubiKey-PIN verwenden</string>
<string name="label_use_num_keypad_for_yubikey_pin">Zifferntastatur für YubiKey PIN verwenden</string>
- <string name="label_label_use_default_yubikey_pin_summary">Verwendet Standard-PIN (123456) zum Zugriff auf YubiKeys über NFC</string>
+ <string name="label_label_use_default_yubikey_pin_summary">Verwendet zum Zugriff auf YubiKeys über NFC die Standard-PIN (123456)</string>
<string name="label_asymmetric_from">Signiert von:</string>
<string name="label_to">Verschlüsselt an:</string>
<string name="label_delete_after_encryption">Datei nach Verschlüsselung löschen</string>
@@ -122,9 +123,8 @@
<string name="label_encryption_algorithm">Verschlüsselungsalgorithmus</string>
<string name="label_hash_algorithm">Hash-Algorithmus</string>
<string name="label_symmetric">Mit Passwort verschlüsseln</string>
- <string name="label_passphrase_cache_ttl">Länge der Zwischenspeicherung</string>
+ <string name="label_passphrase_cache_ttl">Zwischenspeicherdauer</string>
<string name="label_passphrase_cache_subs">Passwort pro Unterschlüssel zwischenspeichern</string>
- <string name="label_message_compression">Nachrichten Kompression</string>
<string name="label_file_compression">Datei Kompression</string>
<string name="label_keyservers">Schlüsselserver</string>
<string name="label_key_id">Schlüssel-ID</string>
@@ -144,13 +144,6 @@
<string name="label_preferred">bevorzugt</string>
<string name="user_id_no_name">&lt;kein Name&gt;</string>
<string name="none">&lt;keine&gt;</string>
- <string name="no_key">&lt;kein Schlüssel&gt;</string>
- <string name="can_encrypt">kann verschlüsseln</string>
- <string name="can_sign">kann signieren</string>
- <string name="can_certify">kann beglaubigen</string>
- <string name="can_certify_not">kann nicht beglaubigen</string>
- <string name="expired">abgelaufen</string>
- <string name="revoked">widerrufen</string>
<plurals name="n_keys">
<item quantity="one">1 Schlüssel</item>
<item quantity="other">%d Schlüssel</item>
@@ -180,7 +173,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Öffnen...</string>
- <string name="warning">Warnung</string>
<string name="error">Fehler</string>
<string name="error_message">Fehler: %s</string>
<!--key flags-->
@@ -198,20 +190,16 @@
<string name="pin_for">PIN für \'%s\' eingeben</string>
<string name="yubikey_pin_for">PIN für Zugriff auf Yubikey für \'%s\' eingeben</string>
<string name="nfc_text">Halten Sie den YubiKey gegen die Rückseite Ihres Geräts.</string>
- <string name="file_delete_confirmation">%s wirklich löschen?</string>
- <string name="file_delete_successful">Erfolgreich gelöscht.</string>
- <string name="no_file_selected">Zuerst eine Datei auswählen.</string>
+ <string name="no_file_selected">Zuerst eine Datei auswählen.</string>
<string name="encrypt_sign_successful">Erfolgreich signiert und/oder verschlüsselt.</string>
<string name="encrypt_sign_clipboard_successful">Erfolgreich in die Zwischenablage signiert und/oder verschlüsselt.</string>
- <string name="enter_passphrase_twice">Das Passwort bitte zweimal eingeben.</string>
<string name="select_encryption_key">Mindestens einen Schlüssel zum Verschlüsseln auswählen.</string>
<string name="select_encryption_or_signature_key">Mindestens einen Schlüssel zum Verschlüsseln oder einen zum Signieren auswählen.</string>
<string name="specify_file_to_encrypt_to">Bitte angeben in welche Datei verschlüsselt werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert.</string>
<string name="specify_file_to_decrypt_to">Bitte angeben in welche Datei entschlüsselt werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert. </string>
<string name="specify_file_to_export_to">Bitte angeben in welche Datei exportiert werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert. </string>
- <string name="key_deletion_confirmation_multi">Möchtest du wirklich alle ausgewählten öffentlichen Schlüssel löschen?\nDies kann nicht rückgängig gemacht werden!</string>
- <string name="secret_key_deletion_confirmation">Soll der PRIVATE Schlüssel \'%s\' wirklich gelöscht werden?\nDies kann nicht rückgängig gemacht werden!</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="key_deletion_confirmation_multi">Möchtest du wirklich alle ausgewählten Schlüssel löschen?</string>
+ <string name="public_key_deletetion_confirmation">Schlüssel löschen \'%s\'?</string>
<string name="also_export_secret_keys">Exportiere auch private Schlüssel</string>
<string name="reinstall_openkeychain">Sie sind auf einen Fehler in Android gestoßen. Installieren Sie OpenKeychain erneut, wenn Sie Ihre Kontakte mit Schlüsseln verbinden wollen.</string>
<string name="key_exported">1 Schlüssel erfolgreich exportiert.</string>
@@ -227,13 +215,11 @@
<string name="nfc_successful">Schlüssel erfolgreich mit NFC-Beam gesendet!</string>
<string name="key_copied_to_clipboard">Schlüssel wurde in die Zwischenablage kopiert!</string>
<string name="fingerprint_copied_to_clipboard">Fingerabdruck wurde in die Zwischenablage kopiert!</string>
- <string name="select_key_to_certify">Bitte wähle einen Schlüssel um zu Beglaubigen!</string>
<string name="key_too_big_for_sharing">Schlüssel ist zu groß um so geteilt zu werden!</string>
<string name="text_copied_to_clipboard">Text wurde in Zwischenablage kopiert!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">Löschen von \'%s\' ist fehlgeschlagen</string>
<string name="error_file_not_found">Datei nicht gefunden</string>
<string name="error_no_secret_key_found">kein geeigneter privater Schlüssel gefunden</string>
<string name="error_external_storage_not_ready">Externes Laufwerk ist nicht bereit</string>
@@ -249,6 +235,8 @@
<string name="error_could_not_extract_private_key">Privater Schlüssel konnte nicht extrahiert werden</string>
<!--errors without preceeding Error:-->
<string name="error_jelly_bean_needed">Android 4.1 wird benötigt um Androids NFC Beam nutzen zu können!</string>
+ <string name="error_nfc_needed">NFC muss aktiviert sein!</string>
+ <string name="error_beam_needed">Beam muss aktiviert sein!</string>
<string name="error_nothing_import">Keine Schlüssel gefunden!</string>
<string name="error_contacts_key_id_missing">Abrufen der Schlüsselkennung von den Kontakten ist fehlgeschlagen!</string>
<string name="error_generic_report_bug">Ein allgemeiner Fehler trat auf, bitte schreiben Sie einen neuen Bugreport für OpenKeychain.</string>
@@ -318,8 +306,7 @@
<string name="progress_con_saving">Zusammenführung: Im Cache speichern...</string>
<string name="progress_con_reimport">Zusammenführung: Neuimportierung...</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Name/Email/Schlüssel ID...</string>
- <string name="hint_cloud_search_hint">Name/Email/Nachweis/Schlüssel...</string>
+ <string name="hint_cloud_search_hint">Suche via Name, E-Mail...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -347,7 +334,6 @@
<!--Help-->
<string name="help_tab_start">Start</string>
<string name="help_tab_faq">FAQ</string>
- <string name="help_tab_wot">Web of Trust</string>
<string name="help_tab_nfc_beam">NFC-Beam</string>
<string name="help_tab_changelog">Changelog</string>
<string name="help_tab_about">Über</string>
@@ -384,12 +370,12 @@
<item quantity="other">%1$d Schlüssel erfolgreich aktualisiert: %2$s.</item>
</plurals>
<plurals name="import_keys_with_errors">
- <item quantity="one">Importieren von einen Schlüssel fehlgeschlagen!</item>
- <item quantity="other">Importieren von %d Schlüsseln fehlgeschlagen!</item>
+ <item quantity="one">Import eines Schlüssels fehlgeschlagen!</item>
+ <item quantity="other">Import von %d Schlüsseln fehlgeschlagen!</item>
</plurals>
<plurals name="import_error">
- <item quantity="one">Importieren fehlgeschlagen!</item>
- <item quantity="other">Importieren von %d Schlüsseln fehlgeschlagen!</item>
+ <item quantity="one">Import fehlgeschlagen!</item>
+ <item quantity="other">Import von %d Schlüsseln fehlgeschlagen!</item>
</plurals>
<string name="import_error_nothing">Nichts zu importieren.</string>
<string name="import_error_nothing_cancelled">Import abgebrochen.</string>
@@ -478,7 +464,7 @@
<string name="key_view_action_edit">Schlüssel bearbeiten</string>
<string name="key_view_action_encrypt">Text Verschlüsseln</string>
<string name="key_view_action_encrypt_files">Dateien</string>
- <string name="key_view_action_certify">Identitäten beglaubigen</string>
+ <string name="key_view_action_certify">Schlüssel bestätigen</string>
<string name="key_view_action_update">Von Schlüsselserver aktualisieren</string>
<string name="key_view_action_share_with">Teilen über...</string>
<string name="key_view_action_share_nfc">Über NFC teilen</string>
@@ -487,8 +473,9 @@
<string name="key_view_tab_share">Teilen</string>
<string name="key_view_tab_keys">Unterschlüssel</string>
<string name="key_view_tab_certs">Beglaubigungen</string>
- <string name="user_id_info_revoked_title">Wiederrufen</string>
- <string name="user_id_info_revoked_text">Diese Identität wurde durch den Schlüsselinhaber wiederrufen. Sie ist nicht mehr gültig.</string>
+ <string name="key_view_tab_keybase">Keybase.io</string>
+ <string name="user_id_info_revoked_title">Widerrufen</string>
+ <string name="user_id_info_revoked_text">Diese Identität wurde vom Schlüsselinhaber widerrufen. Sie ist nicht mehr gültig.</string>
<string name="user_id_info_certified_title">Beglaubigt</string>
<string name="user_id_info_certified_text">Diese Identität wurde von Ihnen beglaubigt.</string>
<string name="user_id_info_uncertified_title">Nicht beglaubigt</string>
@@ -496,7 +483,41 @@
<string name="user_id_info_invalid_title">Ungültig</string>
<string name="user_id_info_invalid_text">Irgend etwas ist mit dieser Identität nicht in Ordnung!</string>
<!--Key trust-->
+ <string name="key_trust_it_is_yours">Dies ist einer deiner Schlüssel!</string>
+ <string name="key_trust_revoked">Dieser Schlüssel wurde vom Schlüsselinhaber widerrufen. Du solltest ihm nicht vertrauen.</string>
+ <string name="key_trust_expired">Dieser Schlüssel ist abgelaufen. Du solltest ihm nicht vertrauen.</string>
+ <string name="key_trust_no_cloud_evidence">Kein Nachweis aus der Cloud zur Vertrauenswürdigkeit dieses Schlüssels.</string>
+ <string name="key_trust_start_cloud_search">Suche beginnen</string>
+ <string name="key_trust_results_prefix">Keybase.io bietet \"Nachweise\" die versichern, dass der Schlüsselinhaber:</string>
<!--keybase proof stuff-->
+ <string name="keybase_narrative_twitter">Schreibt auf Twitter als</string>
+ <string name="keybase_narrative_github">Ist auf GitHub bekannt als</string>
+ <string name="keybase_narrative_dns">Kontrolliert diese Domainnamen</string>
+ <string name="keybase_narrative_web_site">Kann auf diesen Webseiten veröffentlichen</string>
+ <string name="keybase_narrative_reddit">Veröffentlicht auf Reddit als</string>
+ <string name="keybase_narrative_coinbase">Ist auf Coinbase bekannt als</string>
+ <string name="keybase_narrative_hackernews">Veröffentlicht auf Hacker News als</string>
+ <string name="keybase_narrative_unknown">Unbekannter Nachweistyp</string>
+ <string name="keybase_proof_failure">Leider kann dieser Nachweis nicht überprüft werden.</string>
+ <string name="keybase_unknown_proof_failure">Unbekanntes Problem mit dem Nachweis-Prüfer</string>
+ <string name="keybase_problem_fetching_evidence">Problem mit dem Nachweis</string>
+ <string name="keybase_key_mismatch">Schlüssel-Fingerabdruck stimmt nicht mit dem Fingerabdruck im Nachweis überein</string>
+ <string name="keybase_dns_query_failure">Abfrage des DNS-TXT-Eintrags fehlgeschlagen</string>
+ <string name="keybase_no_prover_found">Kein Nachweis-Prüfer gefunden für</string>
+ <string name="keybase_message_payload_mismatch">Entschlüsselter Nachweis entspricht nicht dem erwarteten Wert</string>
+ <string name="keybase_message_fetching_data">Hole Nachweis</string>
+ <string name="keybase_proof_succeeded">Dieser Nachweis wurde überprüft!</string>
+ <string name="keybase_a_post">Ein Posting</string>
+ <string name="keybase_fetched_from">abgerufen von</string>
+ <string name="keybase_for_the_domain">für die Domain</string>
+ <string name="keybase_contained_signature">enthält eine Nachricht, die nur vom Schlüsselinhaber hätte erzeugt werden können.</string>
+ <string name="keybase_twitter_proof">Ein Tweet</string>
+ <string name="keybase_dns_proof">Ein DNS-TXT-Eintrag</string>
+ <string name="keybase_web_site_proof">Eine Textdatei</string>
+ <string name="keybase_github_proof">Ein Gist</string>
+ <string name="keybase_reddit_proof">Eine JSON-Datei</string>
+ <string name="keybase_reddit_attribution">von Reddit zugeordnet an</string>
+ <string name="keybase_verify">Überprüfen</string>
<!--Edit key-->
<string name="edit_key_action_change_passphrase">Passwort ändern</string>
<string name="edit_key_action_add_identity">Identität hinzufügen</string>
@@ -521,17 +542,19 @@
<string name="edit_key_error_add_identity">Füge mindestens eine Identität hinzu!</string>
<string name="edit_key_error_add_subkey">Fügen Sie mindestens einen Unterschlüssel hinzu!</string>
<!--Create key-->
- <string name="create_key_upload">Schlüssel auf Schlüsselserver hochladen</string>
+ <string name="create_key_upload">Mit der Cloud synchronisieren</string>
<string name="create_key_empty">Dieses Feld wird benötigt</string>
<string name="create_key_passphrases_not_equal">Passwörter stimmen nicht überein</string>
<string name="create_key_final_text">Du hast folgende Identität eingegeben:</string>
<string name="create_key_final_robot_text">Einen Schlüssel zu erzeugen braucht eine Weile, trink in der Zeit einen Kaffee...</string>
<string name="create_key_rsa">(3 Unterschlüssel, RSA, 4096 Bit)</string>
<string name="create_key_custom">(Benutzerdefinierte Schlüsseleinstellung)</string>
- <string name="create_key_identity_text">Vollen Namen und Emailadresse angeben und Passwort wählen.</string>
- <string name="create_key_hint_full_name">Vollständiger Name, z.B. Max Mustermann</string>
<string name="create_key_edit">Schlüsselkonfiguration ändern</string>
<!--View key-->
+ <string name="view_key_revoked">Widerrufen: Schlüssel darf nicht mehr genutzt werden!</string>
+ <string name="view_key_expired">Abgelaufen: Der Kontakt muss die Gültigkeit des Schlüssels verlängern!</string>
+ <string name="view_key_expired_secret">Abgelaufen: Du kannst die Gültigkeit des Schlüssels verlängern indem du ihn editierst.</string>
+ <string name="view_key_my_key">Mein Schlüssel</string>
<!--Navigation Drawer-->
<string name="nav_keys">Schlüssel</string>
<string name="nav_encrypt_decrypt">Verschlüsseln/Entschlüsseln</string>
@@ -564,7 +587,7 @@
<string name="msg_ip_error_op_exc">Vorgang aufgrund eines Datenbankfehlers fehlgeschlagen</string>
<string name="msg_ip_error_remote_ex">Vorgang augrund internem Fehler fehlgeschlagen</string>
<string name="msg_ip">Importiere öffentlichen Schlüsselbund %s</string>
- <string name="msg_ip_insert_keyring">Schlüsselbund-daten werden kodiert</string>
+ <string name="msg_ip_insert_keyring">Schlüsselbunddaten werden kodiert</string>
<string name="msg_ip_insert_keys">Analysiere Schlüssel</string>
<string name="msg_ip_prepare">Datenbank-Transaktionen werden vorbereitet</string>
<string name="msg_ip_master">Hauptschlüssel %s wird verarbeitet</string>
@@ -623,14 +646,14 @@
<item quantity="one">Ignoriere eine Beglaubigung, ausgestellt von unbekanntm öffentlichen Schlüssel</item>
<item quantity="other">Ignoriere %s Beglaubigungen, ausgestellt von unbekannten öffentlichen Schlüsseln</item>
</plurals>
- <string name="msg_ip_uid_classifying_zero">Benutzerkennungen werden klassifiziert (keine vertrauenswürdigen Schlüssel verfügbar)</string>
+ <string name="msg_ip_uid_classifying_zero">User-IDs werden klassifiziert (keine vertrauenswürdigen Schlüssel verfügbar)</string>
<plurals name="msg_ip_uid_classifying">
- <item quantity="one">Benutzerkennungen werden klassifiziert (ein vertrauenswürdiger Schlüssel wird verwendet)</item>
- <item quantity="other">Benutzerkennungen werden klassifiziert (%s vertrauenswürdige Schlüssel werden verwendet)</item>
+ <item quantity="one">User-ID wird klassifiziert (verwende einen vertrauenswürdigen Schlüssel)</item>
+ <item quantity="other">User-IDs werden klassifiziert (verwende %s vertrauenswürdige Schlüssel)</item>
</plurals>
- <string name="msg_ip_uid_reorder">Benutzerkennungen werden neu geordnet</string>
- <string name="msg_ip_uid_processing">Benutzerkennung %s wird verarbeitet</string>
- <string name="msg_ip_uid_revoked">Nutzer ID wiederrufen</string>
+ <string name="msg_ip_uid_reorder">User-IDs werden neu geordnet</string>
+ <string name="msg_ip_uid_processing">User-ID %s wird verarbeitet</string>
+ <string name="msg_ip_uid_revoked">User-ID wurde widerrufen</string>
<string name="msg_ip_uat_processing_image">Bilder werden verarbeitet</string>
<string name="msg_ip_uat_processing_unknown">Unbekannte Benutzerattribute werden verarbeitet</string>
<string name="msg_ip_uat_cert_bad">Ungültiges Zertifikat gefunden!</string>
@@ -659,32 +682,31 @@
<string name="msg_is_pubring_generate">Generiere öffentlichen Schlüsselbund aus geheimem Schlüsselbund</string>
<string name="msg_is_subkey_nonexistent">Unterschlüssel %s in privatem Schlüssel nicht verfügbar.</string>
<string name="msg_is_subkey_ok">Geheimen Unterschlüssel %s als verfügbar markiert</string>
- <string name="msg_is_subkey_empty">Geheimen Unterschlüssel %s als verfügbar markiert, ohne Passphrase</string>
+ <string name="msg_is_subkey_empty">Geheimen Unterschlüssel %s als verfügbar markiert, ohne Passwort</string>
<string name="msg_is_subkey_pin">Geheimen Unterschlüssel %s als verfügbar markiert, mit PIN</string>
<string name="msg_is_subkey_stripped">Privater Unterschlüssel %s als gekürzt markiert</string>
- <string name="msg_is_subkey_divert">Privater Unterschlüssel %s als \'Umleiten zu Smartcard/NFC\' markiert</string>
- <string name="msg_is_success_identical">Schlüsselbund enthält keine neuen Daten, es gibt nichts zu tun.</string>
+ <string name="msg_is_subkey_divert">Privater Unterschlüssel %s als \'Umgeleitet zu Smartcard/NFC\' markiert</string>
+ <string name="msg_is_success_identical">Schlüsselbund enthält keine neuen Daten, es gibt nichts zu tun</string>
<string name="msg_is_success">Geheimer Schlüsselbund erfolgreich importiert</string>
<!--Keyring Canonicalization log entries-->
<string name="msg_kc_public">Öffentlicher Schlüsselbund %s wird in vorschriftsgemäße Form gebracht</string>
<string name="msg_kc_secret">Geheimer Schlüsselbund %s wird in vorschriftsgemäße Form gebracht</string>
<string name="msg_kc_error_v3">Dies ist ein OpenPGP Schlüssel der Version 3, welche hinfällig sind und nicht weiter unterstützt werden!</string>
- <string name="msg_kc_error_no_uid">Schlüsselbund hat keine gültigen Benutzerkennungen!</string>
+ <string name="msg_kc_error_no_uid">Schlüsselbund hat keine gültigen User-IDs!</string>
<string name="msg_kc_error_master_algo">Der Hauptschlüssel verwendet einen unbekannten (%s) Algorithmus!</string>
<string name="msg_kc_error_dup_key">Unterschlüssel %s kommt zweimal im Schlüsselbund vor. Schlüsselbund ist fehlerhaft, wird nicht importiert!</string>
<string name="msg_kc_master">Verarbeite Hauptschlüssel</string>
<string name="msg_kc_master_bad_type">Hauptschlüsselbeglaubigung unbekannter Art wird entfernt (%s)</string>
- <string name="msg_kc_master_bad_local">Hauptschlüsselbeglaubigung mit \'Lokal\'-Attribut wird entfernt</string>
+ <string name="msg_kc_master_bad_local">Entferne Hauptschlüsselbeglaubigung mit \'Local\'-Attribut</string>
<string name="msg_kc_master_bad_err">Fehlerhafte Hauptschlüsselbeglaubigung wird entfernt</string>
<string name="msg_kc_master_bad_time">Schlüsselbund-Widerrufszertifikat mit zukünftigem Zeitstempel wird entfernt</string>
- <string name="msg_kc_master_bad_type_uid"> Benutzerkennungsbeglaubigung an falscher Position wird entfernt</string>
+ <string name="msg_kc_master_bad_type_uid">User-ID-Beglaubigung an falscher Position wird entfernt</string>
<string name="msg_kc_master_bad">Fehlerhafte Hauptschlüsselbeglaubigung wird entfernt</string>
- <string name="msg_kc_master_local">Hauptschlüsselbeglaubigung mit \'Lokal\'-Attribut wird entfernt</string>
- <string name="msg_kc_revoke_dup">Entferne redundantes Schlüsselbund Widerrufszertifikat</string>
+ <string name="msg_kc_master_local">Entferne Hauptschlüsselbeglaubigung mit \'Local\'-Attribut</string>
+ <string name="msg_kc_revoke_dup">Entferne redundantes Schlüsselbund-Widerrufszertifikat</string>
<string name="msg_kc_sub">Verarbeite Unterschlüssel %s</string>
<string name="msg_kc_sub_bad">Entferne ungültige Unterschlüssel Zwischenbeglaubigung</string>
<string name="msg_kc_sub_bad_err">Entferne fehlerhafte Unterschlüssel Zwischenbeglaubigung</string>
- <string name="msg_kc_sub_bad_local">Entferne Unterschlüssel Zwischenzertifikat mit \"Lokal\" Attribut</string>
<string name="msg_kc_sub_bad_keyid">Ungleiche Zwischenausstellerkennung beim Unterschlüssels</string>
<string name="msg_kc_sub_bad_time">Entferne Unterschlüssel Zwischenbeglaubigung mit zukünftigem Zeitstempel</string>
<string name="msg_kc_sub_bad_type">Unbekannte Unterschlüsselbeglaubigungart: %s</string>
@@ -692,7 +714,7 @@
<string name="msg_kc_sub_primary_bad">Entferne Unterschlüssel Zwischenbeglaubigung aufgrund ungültiger primärer Zwischenbeglaubigung</string>
<string name="msg_kc_sub_primary_bad_err">Entferne Unterschlüssel Zwischenbeglaubigung aufgrund fehlerhafter primärer Zwischenbeglaubigung</string>
<string name="msg_kc_sub_primary_none">Entferne Unterschlüssel Zwischenbeglaubigung aufgrund fehlender primärer Zwischenbeglaubigung</string>
- <string name="msg_kc_sub_no_cert">Keine gültige Beglaubigung für %s gefunden, entferne vom Ring</string>
+ <string name="msg_kc_sub_no_cert">Keine gültige Beglaubigung für %s gefunden, entferne vom Schlüsselbund</string>
<string name="msg_kc_sub_revoke_bad_err">Entferne fehlerhaftes Unterschlüssel Widerrufszertifikat</string>
<string name="msg_kc_sub_revoke_bad">Entferne fehlerhaftes Unterschlüssel Widerrufszertifikat</string>
<string name="msg_kc_sub_revoke_dup">Entferne redundantes Unterschlüssel Widerrufszertifikat</string>
@@ -709,19 +731,18 @@
<item quantity="one">Schlüsselbund wurde erfolgreich in vorschriftsgemäße Form gebracht, eine redundante Beglaubigung entfernt</item>
<item quantity="other">Schlüsselbund wurde erfolgreich in vorschriftsgemäße Form gebracht, %d redundante Beglaubigungen entfernt</item>
</plurals>
- <string name="msg_kc_uid_bad_err">Fehlerhafte Eigenbeglaubigung für Benutzerkennung \'%s\' wird entfernt</string>
- <string name="msg_kc_uid_bad_local">Benutzerkennungsbeglaubigung mit \'Lokal\'-Attribut wird entfernt</string>
- <string name="msg_kc_uid_bad_time">Benutzerkennung mit zukünftigem Zeitstempel wird entfernt</string>
- <string name="msg_kc_uid_bad_type">Benutzerkennungsbeglaubigung unbekannter Art wird entfernt (%s)</string>
- <string name="msg_kc_uid_bad">Fehlerhafte Eigenbeglaubigung für Benutzerkennung \'%s\' wird entfernt</string>
- <string name="msg_kc_uid_cert_dup">Abgelaufene Eigenbeglaubigung für Benutzerkennung \'%s\' wird entfernt</string>
- <string name="msg_kc_uid_foreign">Fremde Benutzerkennungsbeglaubigung von \'%s\' wird entfernt</string>
- <string name="msg_kc_uid_revoke_dup">Redundantes Widerrufszertifikat für Benutzerkennung \'%s\' wird entfernt</string>
- <string name="msg_kc_uid_revoke_old">Abgelaufenes Widerrufszertifikat für Benutzerkennung \'%s\' wird entfernt</string>
- <string name="msg_kc_uid_no_cert">Keine gültige Eigenbeglaubigung für Benutzerkennung \'%s\' gefunden, wird vom Bund entfernt</string>
- <string name="msg_kc_uid_remove">Ungültige Benutzerkennung \'%s\' wird entfernt</string>
- <string name="msg_kc_uid_dup">Doppelte Benutzerkennung \'%s\' wird entfernt. Der geheime Schlüssel enthielt zwei davon. Hieraus könnten fehlende Beglaubigungen resultieren!</string>
- <string name="msg_kc_uid_warn_encoding">Benutzerkennung nicht als UTF-8 bestätigt!</string>
+ <string name="msg_kc_uid_bad_err">Fehlerhafte Eigenbeglaubigung für User-ID \'%s\' wird entfernt</string>
+ <string name="msg_kc_uid_bad_local">User-ID-Beglaubigung mit \'Lokal\'-Attribut wird entfernt</string>
+ <string name="msg_kc_uid_bad_time">User-ID mit zukünftigem Zeitstempel wird entfernt</string>
+ <string name="msg_kc_uid_bad_type">User-ID-Beglaubigung unbekannter Art wird entfernt (%s)</string>
+ <string name="msg_kc_uid_bad">Fehlerhafte Eigenbeglaubigung für User-ID \'%s\' wird entfernt</string>
+ <string name="msg_kc_uid_cert_dup">Abgelaufene Eigenbeglaubigung für User-ID \'%s\' wird entfernt</string>
+ <string name="msg_kc_uid_foreign">Fremde User-ID-Beglaubigung von \'%s\' wird entfernt</string>
+ <string name="msg_kc_uid_revoke_dup">Redundantes Widerrufszertifikat für User-ID \'%s\' wird entfernt</string>
+ <string name="msg_kc_uid_revoke_old">Abgelaufenes Widerrufszertifikat für User-ID \'%s\' wird entfernt</string>
+ <string name="msg_kc_uid_no_cert">Keine gültige Eigenbeglaubigung für User-ID \'%s\' gefunden, wird aus Schlüsselbund entfernt</string>
+ <string name="msg_kc_uid_remove">Ungültige User-ID \'%s\' wird entfernt</string>
+ <string name="msg_kc_uid_dup">Doppelte User-ID \'%s\' wird entfernt. Der Schlüsselbund enthielt zwei davon. Hieraus könnten fehlende Beglaubigungen resultieren!</string>
<string name="msg_kc_uat_jpeg">Das Benutzerattribut JPEG wird verarbeitet</string>
<string name="msg_kc_uat_unknown">Ein unbekanntes Benutzerattribut wird verarbeitet</string>
<string name="msg_kc_uat_bad_err">Entferne fehlerhafte Eigenbeglaubigung für Benutzerattribut</string>
@@ -730,17 +751,18 @@
<string name="msg_kc_uat_bad_type">Entferne Benutzerattributbeglaubigung unbekannter Art (%s)</string>
<string name="msg_kc_uat_bad">Entferne fehlerhafte Eigenbeglaubigung für Benutzerattribut</string>
<string name="msg_kc_uat_cert_dup">Entferne abgelaufene Eigenbeglaubigung für Benutzerattribut</string>
+ <string name="msg_kc_uat_dup">Doppeltes Benutzerattribut wird entfernt. Der Schlüsselbund enthielt zwei davon. Hieraus könnten fehlende Beglaubigungen resultieren!</string>
<string name="msg_kc_uat_foreign">Entferne fremdes Benutzerattributszertifikat von</string>
<string name="msg_kc_uat_revoke_dup">Entferne redundantes Widerrufszertifikat für Benutzerkennung</string>
<string name="msg_kc_uat_revoke_old">Entferne abgelaufenes Widerrufszertifikat für Benutzerkennung</string>
- <string name="msg_kc_uat_no_cert">Keine gültigen Eigenbeglaubigungen für das Benutzerattribut gefunden, entferne vom Ring</string>
+ <string name="msg_kc_uat_no_cert">Keine gültige Eigenbeglaubigung für das Benutzerattribut gefunden, wird aus Schlüsselbund entfernt</string>
<string name="msg_kc_uat_remove">Ungültiges Benutzerattribut wird entfernt</string>
- <string name="msg_kc_uat_warn_encoding">Benutzerkennung nicht als UTF-8 bestätigt!</string>
<!--Keyring merging log entries-->
<string name="msg_mg_error_secret_dummy">Neuer öffentlicher Unterschlüssel gefunden, aber Erstellung von geheimen Unterschlüsseldummys wird nicht unterstützt!</string>
- <string name="msg_mg_error_heterogeneous">Versucht Schlüsselbunde mit unterschiedlichen Fingerabdrücken zusammenzufügen!</string>
+ <string name="msg_mg_error_heterogeneous">Versuch Schlüsselbünde mit unterschiedlichen Fingerabdrücken zusammenzuführen!</string>
<string name="msg_mg_error_encode">Schwerer Fehler bei Kodierung der Signatur!</string>
- <string name="msg_mg_public">Vereine in öffentlichen Schlüsselbund %s </string>
+ <string name="msg_mg_public">Wird in öffentlichen Schlüsselbund %s eingefügt
+</string>
<string name="msg_mg_secret">Wird in geheimen Schlüsselbund %s eingefügt</string>
<string name="msg_mg_new_subkey">Neuer Unterschlüssel %s wird hinzugefügt</string>
<string name="msg_mg_found_new">%s neue Beglaubigungen in Schlüsselbund gefunden</string>
@@ -748,7 +770,7 @@
<!--createSecretKeyRing-->
<string name="msg_cr">Neuer Masterschlüssel wird erzeugt</string>
<string name="msg_cr_error_no_master">Keine Hauptschlüsseloptionen definiert!</string>
- <string name="msg_cr_error_no_user_id">Schlüsselbund muss mit mindestens einer Benutzerkennung erstellt werden!</string>
+ <string name="msg_cr_error_no_user_id">Schlüsselbünde müssen mit mindestens einer User-ID erstellt werden!</string>
<string name="msg_cr_error_no_certify">Hauptschlüssel benötigt das Attribut beglaubigen!</string>
<string name="msg_cr_error_null_expiry">Ablaufdatum kann bei Schlüsselerstellung nicht \'gleiche wie vorher\' sein. Das ist ein Programmierfehler, bitte reiche einen Fehlerbericht ein.</string>
<string name="msg_cr_error_keysize_512">Schlüsselgröße muss größer/gleich 512 sein!</string>
@@ -767,9 +789,9 @@
<string name="msg_mf_error_keyid">Keine Schlüssel ID. Dies ist ein interner Fehler, bitte reiche einen Fehlerbericht ein.</string>
<string name="msg_mf_error_integrity">Interner Fehler, Integritätsprüfung fehlgeschlagen!</string>
<string name="msg_mf_error_master_none">Keine Hauptbeglaubigung zum arbeiten gefunden! (Alle widerrufen?)</string>
- <string name="msg_mf_error_noexist_primary">Falsche primäre Benutzerkennung festgelegt!</string>
- <string name="msg_mf_error_noexist_revoke">Falsche Benutzerkennung für Widerruf definiert!</string>
- <string name="msg_mf_error_revoked_primary">Widerrufene Benutzerkennungen können keine Primäre sein!</string>
+ <string name="msg_mf_error_noexist_primary">Falsche primäre User-ID festgelegt!</string>
+ <string name="msg_mf_error_noexist_revoke">Falsche User-ID für Widerruf festgelegt!</string>
+ <string name="msg_mf_error_revoked_primary">Widerrufene User-IDs können nicht primäre IDs sein!</string>
<string name="msg_mf_error_null_expiry">Ablaufdatum kann bei Unterschlüsselerstellung nicht \'gleiche wie vorher\' sein. Das ist ein Programmierfehler, bitte reiche einen Fehlerbericht ein.</string>
<string name="msg_mf_error_passphrase_master">Schwerer Fehler beim Entschlüsseln des Hauptschlüssels! Dies ist wahrscheinlich ein Programmierfehler, bitte reiche einen Fehlerbericht ein.</string>
<string name="msg_mf_error_pgp">Interner OpenPGP Fehler!</string>
@@ -779,8 +801,8 @@
<string name="msg_mf_passphrase_key">Erneute Verschlüsselung des Unterschlüssels %s mit neuem Passwort</string>
<string name="msg_mf_passphrase_empty_retry">Setzen des neuen Passworts fehlgeschlagen, versuche es nochmal mit leerem altem Passwort</string>
<string name="msg_mf_passphrase_fail">Passwort für Unterschlüssel konnte nicht geändert werden! (Hat er ein anderes als die anderen Schlüssel?)</string>
- <string name="msg_mf_primary_replace_old">Beglaubigung von vorheriger primärer Benutzerkennung wird ersetzt</string>
- <string name="msg_mf_primary_new">Neue Beglaubigung für neue primäre Benutzerkennung wird erzeugt</string>
+ <string name="msg_mf_primary_replace_old">Beglaubigung von vorheriger primärer User-ID wird ersetzt</string>
+ <string name="msg_mf_primary_new">Neue Beglaubigung für neue primäre User-ID wird erzeugt</string>
<string name="msg_mf_subkey_change">Unterschlüssel %s wird geändert</string>
<string name="msg_mf_error_subkey_missing">Versuch mit fehlendem Unterschlüssel %s zu arbeiten!</string>
<string name="msg_mf_subkey_new">Füge neuen Unterschlüssel vom Typ %s hinzu</string>
@@ -789,10 +811,10 @@
<string name="msg_mf_subkey_revoke">Widerrufe Unterschlüssel %s</string>
<string name="msg_mf_subkey_strip">Kürze Unterschlüssel %s</string>
<string name="msg_mf_success">Schlüsselbund erfolgreich verändert</string>
- <string name="msg_mf_uid_add">Benutzerkennung %s wird hinzugefügt</string>
- <string name="msg_mf_uid_primary">Primäre Benutzerkenung wird auf %s geändert</string>
- <string name="msg_mf_uid_revoke">Benutzerkennung %s wird widerrufen</string>
- <string name="msg_mf_uid_error_empty">Benutzerkennung darf nicht leer sein!</string>
+ <string name="msg_mf_uid_add">User-ID %s wird hinzugefügt</string>
+ <string name="msg_mf_uid_primary">Primäre User-ID wird geändert zu %s</string>
+ <string name="msg_mf_uid_revoke">Widerrufe User-ID %s</string>
+ <string name="msg_mf_uid_error_empty">User-ID darf nicht leer sein!</string>
<string name="msg_mf_uat_error_empty">Benutzerattribut darf nicht leer sein!</string>
<string name="msg_mf_uat_add_image">Benutzerattribut vom Typ Bild wird hinzugefügt</string>
<string name="msg_mf_uat_add_unknown">Benutzerattribut unbekannter Art wird hinzugefügt</string>
@@ -818,30 +840,32 @@
<string name="msg_con_recover">Zusammenführungsvorgang wird fortgesetzt</string>
<string name="msg_con_recover_unknown">Zusammenführungsvorgang aus unbekanntem Zustand wird fortgesetzt</string>
<plurals name="msg_con_reimport_public">
- <item quantity="one">Wiederimport eines öffentlichen Schlüssels </item>
- <item quantity="other">Reimport von %d öffentlichen Schlüsseln</item>
+ <item quantity="one">Reimportiere einen öffentlichen Schlüssel</item>
+ <item quantity="other">Reimportiere %d öffentliche Schlüssel</item>
</plurals>
- <string name="msg_con_reimport_public_skip">Keine öffentlichen Schlüssel für reimport, überspringe...</string>
+ <string name="msg_con_reimport_public_skip">Keine öffentlichen Schlüssel für Reimport, überspringe...</string>
<plurals name="msg_con_reimport_secret">
- <item quantity="one">Wiederimport eines geheimen Schlüssels</item>
- <item quantity="other">Reimport von %d geheimen Schlüsseln</item>
+ <item quantity="one">Reimportiere einen geheimen Schlüssel</item>
+ <item quantity="other">Reimportiere %d geheime Schlüssel</item>
</plurals>
- <string name="msg_con_reimport_secret_skip">Keine geheimen Schlüssel für reimport, überspringe...</string>
+ <string name="msg_con_reimport_secret_skip">Keine geheimen Schlüssel für Reimport, überspringe...</string>
<string name="msg_con_warn_delete_public">Fehler beim Löschen der Öffentlichen Cache-Datei</string>
<string name="msg_con_warn_delete_secret">Fehler beim Löschen der Geheimen Cache-Datei</string>
<!--Edit Key (higher level than modify)-->
<string name="msg_ed">Schlüsselvorgang wird durchgeführt</string>
<string name="msg_ed_caching_new">Neues Passwort wird zwischengespeichert</string>
+ <string name="msg_ed_error_no_parcel">SaveKeyringParcel fehlt! (Dies ist ein Bug, bitte melden.)</string>
<string name="msg_ed_error_key_not_found">Schlüssel nicht gefunden!</string>
<string name="msg_ed_fetching">Zu ändernder Schlüssel wird abgerufen (%s)</string>
<string name="msg_ed_success">Schlüsselvorgang erfolgreich</string>
<!--Promote key-->
+ <string name="msg_pr">Befördere öffentlichen Schlüssel zum geheimen Schlüssel</string>
<string name="msg_pr_error_already_secret">Der Schlüssel ist bereits ein geheimer Schlüssel!</string>
<string name="msg_pr_error_key_not_found">Schlüssel nicht gefunden!</string>
<string name="msg_pr_fetching">Zu ändernder Schlüssel wird abgerufen (%s)</string>
- <string name="msg_pr_success">Schlüssel erfolgreich eingebracht</string>
+ <string name="msg_pr_success">Schlüssel erfolgreich befördert</string>
<!--Other messages used in OperationLogs-->
- <string name="msg_ek_error_divert">Bearbeiten von NFC Schlüsseln wird (noch) nicht unterstützt!</string>
+ <string name="msg_ek_error_divert">Bearbeiten von NFC-Schlüsseln wird (noch) nicht unterstützt!</string>
<string name="msg_ek_error_dummy">Kann Schlüsselbund nicht mit gekürztem Hauptschlüssel bearbeiten!</string>
<string name="msg_ek_error_not_found">Schlüssel nicht gefunden!</string>
<!--Messages for DecryptVerify operation-->
@@ -854,7 +878,7 @@
<string name="msg_dc_clear_meta_file">Dateiname: %s</string>
<string name="msg_dc_clear_meta_mime">MIME-Typ: %s</string>
<string name="msg_dc_clear_meta_size">Dateigröße: %s</string>
- <string name="msg_dc_clear_meta_size_unknown">Dateigröße ist unbekannt</string>
+ <string name="msg_dc_clear_meta_size_unknown">Dateigröße unbekannt</string>
<string name="msg_dc_clear_meta_time">Änderungszeit: %s</string>
<string name="msg_dc_clear_signature_bad">Signaturprüfung NICHT OK!</string>
<string name="msg_dc_clear_signature_check">Überprüfe Signaturdaten</string>
@@ -871,9 +895,8 @@
<string name="msg_dc_error_pgp_exception">Es ist ein OpenPGP-Ausnahmefehler während des Vorgangs aufgetreten!</string>
<string name="msg_dc_integrity_check_ok">Integritätsprüfung OK!</string>
<string name="msg_dc_ok_meta_only">Es wurden nur Metadaten angefragt, überspringe Entschlüsselung</string>
- <string name="msg_dc_ok">OK</string>
<string name="msg_dc_pass_cached">Verwende Passwort aus Zwischenspeicher</string>
- <string name="msg_dc_pending_nfc">NFC Token benötigt, verlange Benutzereingabe...</string>
+ <string name="msg_dc_pending_nfc">NFC-Token benötigt, verlange Benutzereingabe...</string>
<string name="msg_dc_pending_passphrase">Passwort benötigt, verlange Benutezreingabe...</string>
<string name="msg_dc_prep_streams">Bereite Datenkette </string>
<string name="msg_dc">Starte Entschlüsselungsvorgang...</string>
@@ -884,10 +907,19 @@
<string name="msg_dc_trail_unknown">Anhängende Daten unbekannter Art gefunden</string>
<string name="msg_dc_unlocking">Geheimer Schlüssel wird entsperrt</string>
<!--Messages for VerifySignedLiteralData operation-->
+ <string name="msg_vl_clear_meta_file">Dateiname: %s</string>
+ <string name="msg_vl_clear_meta_mime">MIME-Typ: %s</string>
+ <string name="msg_vl_clear_meta_time">Änderungszeit: %s</string>
+ <string name="msg_vl_clear_meta_size">Dateigröße: %s</string>
+ <string name="msg_vl_clear_signature_check">Überprüfe Signaturdaten</string>
+ <string name="msg_vl_ok">OK</string>
<!--Messages for SignEncrypt operation-->
<string name="msg_se">Starte Signier-/Verschlüsselungsvorgang</string>
+ <string name="msg_se_input_bytes">Verarbeite Eingabe aus Bytearray</string>
+ <string name="msg_se_input_uri">Verarbeite Eingabe von URI</string>
<string name="msg_se_error_no_input">Keine Eingabe gegeben!</string>
- <string name="msg_se_error_input_uri_not_found">Fehler beim öffnen der Uri zum lesen!</string>
+ <string name="msg_se_error_input_uri_not_found">Fehler beim öffnen der URI zum lesen!</string>
+ <string name="msg_se_error_output_uri_not_found">Fehler beim öffnen der URI zum schreiben!</string>
<string name="msg_se_success">Signier-/Verschlüsselungsvorgang erfolgreich!</string>
<!--Messages for PgpSignEncrypt operation-->
<string name="msg_pse_asymmetric">Bereite öffentliche Schlüssel für Verschlüsselung vor</string>
@@ -900,7 +932,7 @@
<string name="msg_pse_error_key_sign">Gewählter Signaturschlüssel kann keine Daten signieren!</string>
<string name="msg_pse_error_sign_key">Fehler bei Abruf des Signaturschlüssels!</string>
<string name="msg_pse_error_nfc">NFC-Datenfehler!</string>
- <string name="msg_pse_error_no_passphrase">Kein Passwort bereitgestellt!</string>
+ <string name="msg_pse_error_no_passphrase">Kein Passwort angegeben!</string>
<string name="msg_pse_error_pgp">Interner OpenPGP Fehler!</string>
<string name="msg_pse_error_sig">OpenPGP-Signaturfehler aufgetreten!</string>
<string name="msg_pse_error_unlock">Unbekannter Fehler bei Schlüsselentsperrung!</string>
@@ -908,7 +940,7 @@
<string name="msg_pse_key_unknown">Fehlender Schlüssel für Verschlüsselung: %s</string>
<string name="msg_pse_key_warn">Falscher Schlüssel für Verschlüsselung: %s</string>
<string name="msg_pse_ok">Signierungs-/Verschlüsselungsvorgang erfolgreich!</string>
- <string name="msg_pse_pending_nfc">NFC Token benötigt, verlange Benutzereingabe...</string>
+ <string name="msg_pse_pending_nfc">NFC-Token benötigt, verlange Benutzereingabe...</string>
<string name="msg_pse_pending_passphrase">Passwort benötigt, verlange Benutzereingabe...</string>
<string name="msg_pse_signing">Signiere Daten (ohne Verschlüsselung)</string>
<string name="msg_pse_signing_cleartext">Erstelle Klartextsignatur</string>
@@ -917,20 +949,15 @@
<string name="msg_pse">Starte Signier- und/oder Verschlüsselungsvorgang</string>
<string name="msg_pse_symmetric">Bereite symmetrische Verschlüsselung vor</string>
<string name="msg_crt_certifying">Zertifizierungen werden erzeugt</string>
- <string name="msg_crt_certify_all">Alle Benutzerkennungen für Schlüssel %s werden beglaubigt</string>
- <plurals name="msg_crt_certify_some">
- <item quantity="one">Eine Benutzerkennung für Schlüssel %2$s wird beglaubigt</item>
- <item quantity="other">%1$d Benutzerkennungen für Schlüssel %2$s werden beglaubigt</item>
- </plurals>
<string name="msg_crt_error_self">Auf diese Art und Weise kann keine Eigenbeglaubigung ausgestellt werden!</string>
<string name="msg_crt_error_master_not_found">Hauptschlüssel nicht gefunden!</string>
<string name="msg_crt_error_nothing">Keine beglaubigten Schlüssel!</string>
<string name="msg_crt_error_unlock">Fehler beim Entsperren des Hauptschlüssels!</string>
- <string name="msg_crt_error_divert">Beglaubigung mit NFC wird (noch) nicht unterstützt!</string>
- <string name="msg_crt">Schlüsselbund wird beglaubigt</string>
+ <string name="msg_crt_error_divert">Beglaubigung über NFC wird (noch) nicht unterstützt!</string>
+ <string name="msg_crt">Schlüsselbünde werden beglaubigt</string>
<string name="msg_crt_master_fetch">Beglaubigender Hauptschlüssel wird abgerfufen</string>
<string name="msg_crt_save">Beglaubigter Schlüssel %s wird gespeichert</string>
- <string name="msg_crt_saving">Schlüsselbunde werden gespeichert</string>
+ <string name="msg_crt_saving">Schlüsselbünde werden gespeichert</string>
<string name="msg_crt_unlock">Hauptschlüssel wird entsperrt</string>
<string name="msg_crt_success">Identitäten erfolgreich beglaubigt</string>
<string name="msg_crt_warn_not_found">Schlüssel nicht gefunden!</string>
@@ -1000,8 +1027,10 @@
<string name="msg_download_too_many_responses">Schlüsselsuchanfrage lieferte zu viele Kandidaten. Bitte verfeinern Sie Ihre Anfrage!</string>
<string name="msg_download_query_too_short_or_too_many_responses">Entweder keine oder zu viele Schlüssel wurden gefunden. Bitte verbessern Sie Ihre Anfrage!</string>
<string name="msg_download_query_failed">Beim suchen der Schlüssel ist ein Fehler aufgetreten.</string>
+ <!--Messages for Export Log operation-->
+ <string name="msg_export_log_error_no_file">Kein Dateiname angegeben!</string>
<!--PassphraseCache-->
- <string name="passp_cache_notif_click_to_clear">Klicken um Passworte aus Zwischenspeicher zu leeren</string>
+ <string name="passp_cache_notif_click_to_clear">Klicken um Passworte aus Zwischenspeicher zu löschen</string>
<string name="passp_cache_notif_n_keys">OpenKeychain hat %d Passworte zwischengespeichert</string>
<string name="passp_cache_notif_keys">Zwischengespeicherte Passworte:</string>
<string name="passp_cache_notif_clear">Cache löschen</string>
@@ -1019,14 +1048,15 @@
<string name="empty_certs">Keine Beglaubigungen für diesen Schlüssel</string>
<string name="certs_text">Nur geprüfte Eigenbeglaubigungen und geprüfte Beglaubigungen welche mit deinen Schlüsseln erstellt wurden werden hier angezeigt.</string>
<string name="section_uids_to_certify">Identitäten für</string>
+ <string name="certify_fingerprint_text">Vergleiche den angezeigten Fingerabdruck zeichenweise mit dem, der auf dem Gerät deines Gegenübers angezeigt wird.</string>
+ <string name="certify_fingerprint_text2">Stimmen die angezeigten Fingerabdrücke überein?</string>
<string name="label_revocation">Widerrufsgrund</string>
- <string name="label_verify_status">Verifikationsstatus</string>
<string name="label_cert_type">Typ</string>
<string name="error_key_not_found">Schlüssel nicht gefunden!</string>
<string name="error_key_processing">Fehler bei der Verarbeitung des Schlüssels!</string>
<string name="key_stripped">nicht verfügbar</string>
- <string name="key_divert">Übergebe an SmartCard/NFC</string>
- <string name="key_no_passphrase">Kein Passwort</string>
+ <string name="key_divert">Umgeleitet zu SmartCard/NFC</string>
+ <string name="key_no_passphrase">kein Passwort</string>
<string name="key_unavailable">nicht verfügbar</string>
<string name="secret_cannot_multiple">Deine eigenen Schlüssel können nur einzeln gelöscht werden!</string>
<string name="title_view_cert">Zertifikatdetails anzeigen</string>
@@ -1049,22 +1079,23 @@
<string name="passphrase">Passwort</string>
<string name="noPassphrase">Kein Passwort</string>
<string name="no_passphrase_set">Kein Passwort gesetzt</string>
- <string name="passphrases_match">Die Passwörter stimmten nicht überein.</string>
+ <string name="passphrases_match">Die Passwörter stimmten nicht überein</string>
<string name="passphrase_saved">Passwort gespeichert</string>
<string name="passphrase_invalid">Falsches Passwort</string>
<string name="missing_passphrase">Fehlendes Passwort</string>
<string name="passphrase_again">Wiederholen</string>
<string name="lockpattern">Entsperrcode</string>
- <string name="lockpatternNFC">NFc + Entsperrcode</string>
+ <string name="lockpatternNFC">NFC + Entsperrcode</string>
<string name="unlock_method">Entsperrmethode</string>
<string name="set_passphrase">Passwort setzen</string>
<string name="draw_lockpattern">Zeichne Entsperrcode</string>
<string name="nfc_title">NFC</string>
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
<string name="nfc_wrong_tag">Falscher Tag. Bitte versuche es erneut.</string>
- <string name="enable_nfc">Aktiviere NFC in deinen Einstellungen.</string>
+ <string name="enable_nfc">Bitte aktiviere NFC in deinen Einstellungen.</string>
<string name="no_nfc_support">Dieses Gerät unterstützt kein NFC</string>
- <string name="nfc_write_succesful">Erfolgreich auf den NFC Tag geschrieben</string>
+ <string name="nfc_write_succesful">Erfolgreich auf den NFC-Tag geschrieben</string>
<string name="unlocked">Entsperrt</string>
<string name="nfc_settings">Einstellungen</string>
+ <string name="file_delete_successful"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml
index d5d8440af..d7557074a 100644
--- a/OpenKeychain/src/main/res/values-es/strings.xml
+++ b/OpenKeychain/src/main/res/values-es/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Seleccionar claves</string>
<string name="title_select_secret_key">Seleccionar su clave</string>
- <string name="title_encrypt_text">Cifrar texto</string>
- <string name="title_encrypt_files">Cifrar ficheros</string>
<string name="title_decrypt">Descifrar</string>
<string name="title_unlock">Desbloquear clave</string>
<string name="title_add_subkey">Añadir subclave</string>
@@ -20,7 +18,6 @@
<string name="title_share_fingerprint_with">Compartir huella de validación de clave con...</string>
<string name="title_share_key">Compartir clave con...</string>
<string name="title_share_file">Compartir fichero con...</string>
- <string name="title_share_message">Compartir mensaje con...</string>
<string name="title_encrypt_to_file">Cifrar hacia archivo</string>
<string name="title_decrypt_to_file">Descifrar hacia archivo</string>
<string name="title_import_keys">Importar claves</string>
@@ -29,7 +26,7 @@
<string name="title_export_keys">Exportar claves</string>
<string name="title_key_not_found">Clave no encontrada</string>
<string name="title_send_key">Cargar al servidor de claves</string>
- <string name="title_certify_key">Certificar identificaciones</string>
+ <string name="title_certify_key">Confirmar clave</string>
<string name="title_key_details">Detalles de la clave</string>
<string name="title_help">Ayuda</string>
<string name="title_log_display">Registro (log)</string>
@@ -37,33 +34,34 @@
<string name="title_exchange_keys">Intercambiar claves</string>
<string name="title_advanced_key_info">Información avanzada de clave</string>
<string name="title_keys">Claves</string>
+ <string name="title_delete_secret_key">¿Borrar SU clave \'%s\'?</string>
+ <string name="title_export_log">Exportar registro (log)</string>
<!--section-->
<string name="section_user_ids">Identificaciones</string>
<string name="section_should_you_trust">¿Debe confiar en esta clave?</string>
- <string name="section_proof_details">Prueba de verificación</string>
- <string name="section_cloud_evidence">Evidencia desde la nube</string>
+ <string name="section_proof_details">Comprobante de verificación</string>
+ <string name="section_cloud_evidence">Comprobantes desde la nube</string>
<string name="section_keys">Subclaves</string>
<string name="section_cloud_search">Búsqueda en la nube</string>
<string name="section_general">General</string>
<string name="section_defaults">Predeterminados</string>
<string name="section_advanced">Avanzado</string>
<string name="section_passphrase_cache">Caché de frase-contraseña</string>
- <string name="section_certify">Certificar</string>
+ <string name="section_certify">Confirmar</string>
<string name="section_actions">Acciones</string>
<string name="section_share_key">Clave</string>
- <string name="section_certification_key">Tu clave usada para las certificaciones</string>
<string name="section_upload_key">Sincronizar clave</string>
<string name="section_key_server">Servidor de claves</string>
<string name="section_fingerprint">Huella de validación de clave</string>
- <string name="section_key_to_certify">Clave a ser certificada</string>
<string name="section_decrypt_files">Ficheros</string>
<string name="section_decrypt_text">Texto</string>
<string name="section_certs">Certificados</string>
<string name="section_encrypt">Cifrar</string>
<string name="section_decrypt">Descifrar</string>
+ <string name="section_current_expiry">Caducidad actual</string>
+ <string name="section_new_expiry">Nueva caducidad</string>
<!--button-->
<string name="btn_decrypt_verify_file">Descifrar, verificar, y guardar fichero</string>
- <string name="btn_decrypt_verify_message">Descifrar y verificar mensaje</string>
<string name="btn_encrypt_file">Cifrar y guardar fichero</string>
<string name="btn_encrypt_share_file">Cifrar y compartir fichero</string>
<string name="btn_save">Guardar</string>
@@ -75,9 +73,8 @@
<string name="btn_next">Siguiente</string>
<string name="btn_back">Volver</string>
<string name="btn_no">No</string>
- <string name="btn_match">Las huellas de validación son coincidentes</string>
+ <string name="btn_match">Las huellas de validación coinciden</string>
<string name="btn_lookup_key">Buscar clave</string>
- <string name="btn_share_encrypted_signed">Cifrar y compartir mensaje</string>
<string name="btn_view_cert_key">Ver clave de verificación</string>
<string name="btn_create_key">Crear clave</string>
<string name="btn_add_files">Añadir fichero(s)</string>
@@ -104,9 +101,9 @@
<string name="menu_search_cloud">Buscar en la nube</string>
<string name="menu_export_all_keys">Exportar todas las claves</string>
<string name="menu_advanced">Mostrar información avanzada</string>
- <string name="menu_certify_fingerprint">Verificar vía comparación de huellas de validación</string>
+ <string name="menu_certify_fingerprint">Confirmar mediante comparación de la huella de validación (fingerprint)</string>
+ <string name="menu_export_log">Exportar registro (log)</string>
<!--label-->
- <string name="label_message">Mensaje</string>
<string name="label_file">Archivo</string>
<string name="label_files">Fichero(s)</string>
<string name="label_file_colon">Fichero:</string>
@@ -131,7 +128,6 @@
<string name="label_symmetric">Cifrar con frase-contraseña</string>
<string name="label_passphrase_cache_ttl">Duración en caché</string>
<string name="label_passphrase_cache_subs">Almacenar en caché frases-contraseña por subclave</string>
- <string name="label_message_compression">Compresión del mensaje</string>
<string name="label_file_compression">Compresión del fichero</string>
<string name="label_keyservers">Servidores de claves</string>
<string name="label_key_id">ID de clave</string>
@@ -149,15 +145,9 @@
<string name="expiry_date_dialog_title">Establer la fecha de vencimiento</string>
<string name="label_first_keyserver_is_used">(Se prefiere el primer servidor de claves listado)</string>
<string name="label_preferred">preferido</string>
+ <string name="label_enable_compression">Habilitar compresión</string>
<string name="user_id_no_name">&lt;sin nombre&gt;</string>
<string name="none">&lt;ninguna&gt;</string>
- <string name="no_key">&lt;sin clave&gt;</string>
- <string name="can_encrypt">se puede cifrar</string>
- <string name="can_sign">se puede firmar</string>
- <string name="can_certify">puede certificarse</string>
- <string name="can_certify_not">no puede certificarse</string>
- <string name="expired">caducado</string>
- <string name="revoked">revocado</string>
<plurals name="n_keys">
<item quantity="one">1 clave</item>
<item quantity="other">%d claves</item>
@@ -187,7 +177,6 @@
<string name="ecdh">ECDH (intercambio Diffie-Hellman con curva elíptica)</string>
<string name="ecdsa">ECDSA (algoritmo de firma digital con curva elíptica)</string>
<string name="filemanager_title_open">Abrir...</string>
- <string name="warning">Advertencia</string>
<string name="error">Error</string>
<string name="error_message">Error: %s</string>
<!--key flags-->
@@ -205,20 +194,17 @@
<string name="pin_for">Introduzca el PIN para \'%s\'</string>
<string name="yubikey_pin_for">Introduzca el PIN para acceder a la YubiKey para \'%s\'</string>
<string name="nfc_text">Sostenga la YubiKey contra el reverso de su dispositivo.</string>
- <string name="file_delete_confirmation">¿Está seguro de que quiere eliminar\n%s?</string>
- <string name="file_delete_successful">Borrado satisfactoriamente.</string>
- <string name="no_file_selected">Selecciona un archivo antes.</string>
+ <string name="no_file_selected">Selecciona un archivo antes.</string>
<string name="encrypt_sign_successful">Firmado y/o cifrado con éxito.</string>
<string name="encrypt_sign_clipboard_successful">Firmado y/o cifrado del portapapeles con éxito.</string>
- <string name="enter_passphrase_twice">Introduce la frase de contraseña dos veces.</string>
<string name="select_encryption_key">Selecciona al menos una clave de cifrado.</string>
<string name="select_encryption_or_signature_key">Selecciona al menos una clave de cifrado o de firma.</string>
<string name="specify_file_to_encrypt_to">Por favor especifique hacia qué fichero cifrar.\nADVERTENCIA: El fichero se sobreescribirá si existe.</string>
<string name="specify_file_to_decrypt_to">Por favor especifique hacia que fichero descifrar.\nADVERTENCIA: El fichero se sobreescribirá si existe.</string>
<string name="specify_file_to_export_to">Por favor especifique hacia qué fichero exportar.\nADVERTENCIA: El fichero se sobreescribirá si existe.</string>
- <string name="key_deletion_confirmation_multi">¿De verdad quiere eliminar todas las claves públicas seleccionadas?\n¡No puede deshacer esto!</string>
- <string name="secret_key_deletion_confirmation">¿De verdad quiere eliminar la clave SECRETA (privada) \'%s\'?\n¡No puede deshacer esto!</string>
- <string name="public_key_deletetion_confirmation">¿De verdad quiere eliminar la clave pública \'%s\'?\n¡No puede deshacer esto!</string>
+ <string name="key_deletion_confirmation_multi">¿De verdad quiere borrar todas las claves seleccionadas?</string>
+ <string name="secret_key_deletion_confirmation">¡Después del borrado no podrá leer mensajes cifrados con esta clave y perderá todas las confirmaciones de clave hechas con ella!</string>
+ <string name="public_key_deletetion_confirmation">¿Borrar clave \'%s\'?</string>
<string name="also_export_secret_keys">Exportar también claves secretas (privadas)</string>
<string name="reinstall_openkeychain">Ha encontrado un conocido fallo con Android. Por favor reinstale OpenKeychain si quiere enlazar sus contactos con las claves.</string>
<string name="key_exported">Se ha exportado 1 clave satisfactoriamente.</string>
@@ -226,6 +212,7 @@
<string name="no_keys_exported">No se han exportado claves.</string>
<string name="key_creation_el_gamal_info">Nota: Sólo las subclaves soportan ElGamal.</string>
<string name="key_not_found">No se puede encontrar la clave %08X.</string>
+ <string name="specify_file_to_export_log_to">Por favor especifique el fichero al que exportar. \nADVERTENCIA: El fichero se sobreescribirá si existe.</string>
<plurals name="bad_keys_encountered">
<item quantity="one">%d clave secreta (privada) defectuosa ignorada. Quizá exportó con la opción\n --export-secret-subkeys\nAsegúrese de que exporta con\n --export-secret-keys\nen su lugar.\"</item>
<item quantity="other">%d claves secretas (privadas) defectuosas ignoradas. Quizá exportó con la opción\n --export-secret-subkeys\nAsegúrese de que exporta con\n --export-secret-keys\nen su lugar.\"</item>
@@ -234,13 +221,12 @@
<string name="nfc_successful">¡Clave enviada con éxito vía NFC Beam (haz NFC)!</string>
<string name="key_copied_to_clipboard">¡La clave ha sido copiada al portapapeles!</string>
<string name="fingerprint_copied_to_clipboard">¡La huella de validación de clave se ha copiado al portapapeles!</string>
- <string name="select_key_to_certify">Por favor ¡seleccione una clave para ser usada en certificación!</string>
+ <string name="select_key_to_certify">¡Por favor seleccione una clave a usar para confirmación!</string>
<string name="key_too_big_for_sharing">¡La clave es demasiado grande para ser compartida de esta forma!</string>
<string name="text_copied_to_clipboard">¡El texto se ha copiado al portapapeles!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">ha fallado el borrado de \'%s\'</string>
<string name="error_file_not_found">archivo no encontrado</string>
<string name="error_no_secret_key_found">no se ha encontrado una clave secreta adecuada</string>
<string name="error_external_storage_not_ready">el almacenamiento externo no está preparado</string>
@@ -327,8 +313,7 @@
<string name="progress_con_saving">consolidación: guardando en caché...</string>
<string name="progress_con_reimport">consolidación: reimportando</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Nombre/Correo electrónico/Identificación de clave...</string>
- <string name="hint_cloud_search_hint">Nombre/Correo/Prueba/Clave...</string>
+ <string name="hint_cloud_search_hint">Buscar mediante Nombre, Correo electrónico...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -356,7 +341,7 @@
<!--Help-->
<string name="help_tab_start">Comenzar</string>
<string name="help_tab_faq">FAQ</string>
- <string name="help_tab_wot">Anillo de confianza</string>
+ <string name="help_tab_wot">Confirmación de clave</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Registro de cambios</string>
<string name="help_tab_about">A cerca de</string>
@@ -487,7 +472,7 @@
<string name="key_view_action_edit">Editar clave</string>
<string name="key_view_action_encrypt">Cifrar texto</string>
<string name="key_view_action_encrypt_files">ficheros</string>
- <string name="key_view_action_certify">Certificar identificación</string>
+ <string name="key_view_action_certify">Confirmar clave</string>
<string name="key_view_action_update">Actualizar desde el servidor de claves</string>
<string name="key_view_action_share_with">Compartir con...</string>
<string name="key_view_action_share_nfc">Compartir por NFC</string>
@@ -506,15 +491,15 @@
<string name="user_id_info_invalid_title">No válida</string>
<string name="user_id_info_invalid_text">¡Hay algo mal con esta identificación!</string>
<!--Key trust-->
- <string name="key_trust_already_verified">¡Ya ha certificado esta clave!</string>
+ <string name="key_trust_already_verified">¡Ya ha confirmado esta clave!</string>
<string name="key_trust_it_is_yours">¡Esta es una de sus claves!</string>
- <string name="key_trust_maybe">Esta clave no está revocada ni caducada.\nNo la ha certificado, pero puede elegir confiar en ella.</string>
+ <string name="key_trust_maybe">Esta clave no está revocada ni ha caducado.\nNo la ha confirmado, pero puede elegir confiar en ella.</string>
<string name="key_trust_revoked">Esta clave ha sido revocada por su propietario. No debe confiar en ella.</string>
<string name="key_trust_expired">Esta clave ha caducado. No debe confiar en ella.</string>
- <string name="key_trust_old_keys">Puede ser correcto usar esta para descifrar un mensaje antiguo que date del momento en que esta clave estaba vigente.</string>
- <string name="key_trust_no_cloud_evidence">No hay evidencia desde la nube de la fiabilidad de esta clave.</string>
+ <string name="key_trust_no_cloud_evidence">No hay comprobantes desde la nube sobre la confiabilidad de esta clave.</string>
<string name="key_trust_start_cloud_search">Comenzar búsqueda</string>
- <string name="key_trust_results_prefix">Keybase.io ofrece \"pruebas\" que sostienen que el propietario de esta clave:</string>
+ <string name="key_trust_results_prefix">Keybase.io ofrece \"comprobantes\" que sostienen que el propietario de esta clave:</string>
+ <string name="key_trust_header_text">Nota: Los comprobantes de Keybase.io son una característica experimental de OpenKeychain. Le animamos a que escanee los Códigos QR o intercambie claves vía NFC además de confirmarlas.</string>
<!--keybase proof stuff-->
<string name="keybase_narrative_twitter">Publica en Twitter como</string>
<string name="keybase_narrative_github">Es conocido en GitHub como</string>
@@ -523,16 +508,16 @@
<string name="keybase_narrative_reddit">Publica en Reddit como </string>
<string name="keybase_narrative_coinbase">Es conocido en Coinbase como</string>
<string name="keybase_narrative_hackernews">Publica en Hacker News como</string>
- <string name="keybase_narrative_unknown">Tipo de prueba desconocido</string>
- <string name="keybase_proof_failure">Desafortunadamente esta prueba no puede ser verificada.</string>
- <string name="keybase_unknown_proof_failure">Problema no reconocido con el verificador de la prueba</string>
- <string name="keybase_problem_fetching_evidence">Problema con la evidencia de la prueba</string>
- <string name="keybase_key_mismatch">La huella de validación de clave no coincide con aquella en el post de la prueba</string>
+ <string name="keybase_narrative_unknown">Tipo de comprobante desconocido</string>
+ <string name="keybase_proof_failure">Desafortunadamente este comprobante no se puede verificar.</string>
+ <string name="keybase_unknown_proof_failure">Problema no reconocido con el chequeador del comprobante</string>
+ <string name="keybase_problem_fetching_evidence">Problema con el comprobante</string>
+ <string name="keybase_key_mismatch">La huella de validación de clave no coincide con aquella en el post del comprobante</string>
<string name="keybase_dns_query_failure">Fallo al obtener registro DNS TXT</string>
- <string name="keybase_no_prover_found">No se encontró verificador de prueba para</string>
- <string name="keybase_message_payload_mismatch">El post de la prueba descifrada no coincide con el valor esperado</string>
- <string name="keybase_message_fetching_data">Descargado evidencia de la prueba</string>
- <string name="keybase_proof_succeeded">¡Esta prueba ha sido verificada!</string>
+ <string name="keybase_no_prover_found">No se encontró chequeador del comprobante</string>
+ <string name="keybase_message_payload_mismatch">El post del comprobante descrifrado no coincide con el valor esperado</string>
+ <string name="keybase_message_fetching_data">Descargando comprobante</string>
+ <string name="keybase_proof_succeeded">¡Este comprobante ha sido verificado!</string>
<string name="keybase_a_post">Un post</string>
<string name="keybase_fetched_from">descargada desde</string>
<string name="keybase_for_the_domain">para el dominio</string>
@@ -568,23 +553,21 @@
<string name="edit_key_error_add_identity">¡Añadir al menos una identificación!</string>
<string name="edit_key_error_add_subkey">¡Añadir al menos una subclave!</string>
<!--Create key-->
- <string name="create_key_upload">Subir clave al servidor de claves</string>
+ <string name="create_key_upload">Sincronizar con la nube</string>
<string name="create_key_empty">Este campo es obligatorio</string>
<string name="create_key_passphrases_not_equal">Las frases-contraseña no coinciden</string>
<string name="create_key_final_text">Ha introducido la siguiente identificación:</string>
<string name="create_key_final_robot_text">Crear una clave puede llevar un tiempo, tómese una taza de café entre tanto...</string>
<string name="create_key_rsa">(3 subclaves, RSA, 4096 bits)</string>
<string name="create_key_custom">(configuración de clave personalizada)</string>
- <string name="create_key_identity_text">Introduzca su nombre completo, dirección de correo electrónico, y elija una frase contraseña.</string>
- <string name="create_key_hint_full_name">Nombre completo, ej. Max Mustermann</string>
<string name="create_key_edit">Cambiar configuración de clave</string>
<!--View key-->
<string name="view_key_revoked">Revocada: ¡La clave no debe volver a ser usada!</string>
- <string name="view_key_expired">Caducada: ¡El contacto necesita extender la vigencia de las claves!</string>
+ <string name="view_key_expired">Caducada: ¡El contacto necesita extender la vigencia de la clave!</string>
<string name="view_key_expired_secret">Caducada: ¡Puede extender la vigencia de las claves al editarlas!</string>
<string name="view_key_my_key">Mi clave</string>
- <string name="view_key_verified">Clave verificada</string>
- <string name="view_key_unverified">No verificada: ¡Escanee el código QR para verificar la clave!</string>
+ <string name="view_key_verified">Clave confirmada</string>
+ <string name="view_key_unverified">No confirmada: ¡Escanee el código QR para confirmar clave!</string>
<!--Navigation Drawer-->
<string name="nav_keys">Claves</string>
<string name="nav_encrypt_decrypt">Cifrar/Descifrar</string>
@@ -727,19 +710,19 @@
<string name="msg_kc_error_dup_key">La subclave %s aparece dos veces en el juego de claves (keyring). El juego de claves está mal formado, ¡no se va a importar!</string>
<string name="msg_kc_master">Procesando clave maestra</string>
<string name="msg_kc_master_bad_type">Eliminando certificado de clave maestra de tipo desconocido (%s)</string>
- <string name="msg_kc_master_bad_local">Eliminando certificado de clave maestra con distintivo \"local\"</string>
+ <string name="msg_kc_master_bad_local">Eliminando certificado de clave maestra con distintivo \'local\'</string>
<string name="msg_kc_master_bad_err">Eliminando certificado de clave maestra defectuoso</string>
<string name="msg_kc_master_bad_time">Eliminando certificado de revocación de juego de claves con marca de tiempo en el futuro</string>
<string name="msg_kc_master_bad_type_uid">Eliminando certificado de identificación de usuario en posición incorrecta</string>
<string name="msg_kc_master_bad">Eliminando certificado de clave maestra defectuoso</string>
- <string name="msg_kc_master_local">Eliminando certificado de clave maestra con distitivo \"local\"</string>
+ <string name="msg_kc_master_local">Eliminando certificado de clave maestra con distintitivo \'local\'</string>
<string name="msg_kc_revoke_dup">Eliminando certificado redundante de revocación de juego de claves </string>
<string name="msg_kc_notation_dup">Eliminando certificado de notación redundante</string>
<string name="msg_kc_notation_empty">Eliminando certificado de notación vacía</string>
<string name="msg_kc_sub">Procesando subclave %s</string>
<string name="msg_kc_sub_bad">Eliminando certificado no vigente de vinculación de subclave</string>
<string name="msg_kc_sub_bad_err">Eliminando certificado defectuoso de vinculación de subclave</string>
- <string name="msg_kc_sub_bad_local">Eliminando certificado de vinculación de subclave, con distintivo \"local\"</string>
+ <string name="msg_kc_sub_bad_local">Eliminando certificado de vinculación de subclave con distintivo \'local\'</string>
<string name="msg_kc_sub_bad_keyid">La identificación del publicante de la vinculación de subclave no coincide</string>
<string name="msg_kc_sub_bad_time">Eliminando certificado de vinculación de subclave, con marca de tiempo futura</string>
<string name="msg_kc_sub_bad_type">Tipo de certificado de subclave desconocido: %s</string>
@@ -776,7 +759,7 @@
<string name="msg_kc_uid_no_cert">No se encontró auto-certificado vigente para la identificación de usuario \'%s\', eliminándola del juego de claves</string>
<string name="msg_kc_uid_remove">Eliminando identificación de usuario \'%s\' no válida</string>
<string name="msg_kc_uid_dup">Eliminando identificaciones de usuario duplicadas \'%s\'. El juego de claves contenía dos de ellas. ¡Esto puede resultar en certificados perdidos!</string>
- <string name="msg_kc_uid_warn_encoding">¡La identificación de usuario no se verifica como UTF-8!</string>
+ <string name="msg_kc_uid_warn_encoding">¡La identificación de usuario no se confirma como UTF-8!</string>
<string name="msg_kc_uat_jpeg">Procesando atributo de usuario del tipo JPEG</string>
<string name="msg_kc_uat_unknown">Procesando atributo de usuario de tipo desconocido</string>
<string name="msg_kc_uat_bad_err">Eliminando auto certificados defectuosos para el atributo de usuario</string>
@@ -791,7 +774,7 @@
<string name="msg_kc_uat_revoke_old">Eliminando certificado de revocación desactualizado para el atributo de usuario</string>
<string name="msg_kc_uat_no_cert">No se encontró auto certificado válido para el atributo de usuario, eliminándolo del juego de claves</string>
<string name="msg_kc_uat_remove">Eliminando atributo de usuario no válido</string>
- <string name="msg_kc_uat_warn_encoding">¡La identificación de usuario no se verifica con formato UTF-8!</string>
+ <string name="msg_kc_uat_warn_encoding">¡La identificación de usuario no se confirma como UTF-8!</string>
<!--Keyring merging log entries-->
<string name="msg_mg_error_secret_dummy">Nueva subclave pública encontrada, ¡pero la generación de subclaves secretas (privadas) ficticias no está soportada!</string>
<string name="msg_mg_error_heterogeneous">¡Se intentaron fusionar juegos de claves con diferentes huellas de validación!</string>
@@ -920,6 +903,7 @@
<string name="msg_dc_clear_meta_size_unknown">Tamaño de fichero desconocido</string>
<string name="msg_dc_clear_meta_time">Hora de la modificación: %s</string>
<string name="msg_dc_clear_signature_bad">¡Comprobación de firma NO CORRECTA!</string>
+ <string name="msg_dc_error_unsupported_hash_algo">¡Algoritmo de identificador criptográfico (hash) no soportado y potencialmente inseguro!</string>
<string name="msg_dc_clear_signature_check">Verificando datos de firma</string>
<string name="msg_dc_clear_signature_ok">Comprobación de firma CORRECTA</string>
<string name="msg_dc_clear_signature">Guardando datos de firma para más tarde</string>
@@ -935,7 +919,7 @@
<string name="msg_dc_error_pgp_exception">¡Se encontró una excepción OpenPGP durante la operación!</string>
<string name="msg_dc_integrity_check_ok">¡Comprobación de integridad CORRECTA!</string>
<string name="msg_dc_ok_meta_only">Sólo fueron solicitados los metadatos, omitiendo descifrado</string>
- <string name="msg_dc_ok">CORRECTO</string>
+ <string name="msg_dc_ok">Descifrado/Verificación finalizado</string>
<string name="msg_dc_pass_cached">Usando frase-contraseña desde caché</string>
<string name="msg_dc_pending_nfc">Se requiere credencial NFC, solicitando su introducción por el usuario...</string>
<string name="msg_dc_pending_passphrase">Se requiere frase-contraseña, solicitando su introducción por el usuario...</string>
@@ -947,6 +931,7 @@
<string name="msg_dc_trail_sym">Se encontró huella, datos cifrados simétricamente</string>
<string name="msg_dc_trail_unknown">Se encontró huella, datos de tipo desconocido</string>
<string name="msg_dc_unlocking">Desbloqueando clave secreta (privada)</string>
+ <string name="msg_dc_old_symmetric_encryption_algo">¡Se ha usado un algoritmo de cifrado potencialmente inseguro!</string>
<!--Messages for VerifySignedLiteralData operation-->
<string name="msg_vl">Comenzando comprobación de firma</string>
<string name="msg_vl_error_no_siglist">No hay lista de firmas en los datos literales firmados</string>
@@ -962,7 +947,7 @@
<!--Messages for SignEncrypt operation-->
<string name="msg_se">Iniciando operación de firmado/cifrado</string>
<string name="msg_se_input_bytes">Procesando entrada de matriz de bytes</string>
- <string name="msg_se_input_uri">Procesando entrada de URI</string>
+ <string name="msg_se_input_uri">Procesar entrada desde URI</string>
<string name="msg_se_error_no_input">¡No se proporcionó entrada!</string>
<string name="msg_se_error_input_uri_not_found">¡Error al abrir URI para lectura!</string>
<string name="msg_se_error_output_uri_not_found">¡Error al abrir URI para escritura!</string>
@@ -997,11 +982,14 @@
<string name="msg_pse">Iniciando operación de firmado y/o cifrado</string>
<string name="msg_pse_symmetric">Preparando cifrado simétrico</string>
<string name="msg_crt_certifying">Generando certificaciones</string>
- <string name="msg_crt_certify_all">Certificando todas las identificaciones de usuario para la clave %s</string>
- <plurals name="msg_crt_certify_some">
+ <plurals name="msg_crt_certify_uids">
<item quantity="one">Certificando una identificación de usuario para la clave %2$s</item>
<item quantity="other">Certificando %1$d identificaciones de usuario para la clave %2$s</item>
</plurals>
+ <plurals name="msg_crt_certify_uats">
+ <item quantity="one">Certificando un atributo de usuario para la clave %2$s</item>
+ <item quantity="other">Certificando %1$d atributos de usuario para la clave %2$s</item>
+ </plurals>
<string name="msg_crt_error_self">¡No se puede emitir un auto-certificado como este!</string>
<string name="msg_crt_error_master_not_found">¡Clave maestra no encontrada!</string>
<string name="msg_crt_error_nothing">¡No se certificaron claves!</string>
@@ -1080,6 +1068,12 @@
<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_download_query_failed">Ocurrió un error al buscar claves.</string>
+ <!--Messages for Export Log operation-->
+ <string name="msg_export_log_start">Exportando registro (log)</string>
+ <string name="msg_export_log_error_fopen">Error abriendo fichero</string>
+ <string name="msg_export_log_error_no_file">¡No se especificó nombre de fichero!</string>
+ <string name="msg_export_log_error_writing">¡Error de E/S al escribir al fichero!</string>
+ <string name="msg_export_log_success">¡Registro (log) exportado con éxito!</string>
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Haga clic para eliminar las frases-contraseña almacenadas en caché</string>
<string name="passp_cache_notif_n_keys">OpenKeychain ha almacenado en caché %d frases-contraseña</string>
@@ -1099,11 +1093,10 @@
<string name="empty_certs">No hay certificados para esta clave</string>
<string name="certs_text">Aquí sólo se muestran auto-certificados validados y certificados validados creados con sus claves.</string>
<string name="section_uids_to_certify">Identificaciones para</string>
- <string name="certify_text">Las claves que está importando contienen \"identificaciones\": nombres y correos electrónicos. Para certificación seleccione exactamente aquellas que coinciden con lo que usted esperaba.</string>
+ <string name="certify_text">Las claves que está importando contienen \"identidades\": nombres y correos electrónicos. Seleccione exactamente aquellos para confirmación que coinciden con lo que esperaba.</string>
<string name="certify_fingerprint_text">Compare la huella de validación mostrada, caracter por caracter, con la que se muestra en el dispositivo de su colega.</string>
<string name="certify_fingerprint_text2">¿Coinciden las huellas de validación mostradas?</string>
<string name="label_revocation">Razón de la revocación</string>
- <string name="label_verify_status">Estado de la verificación</string>
<string name="label_cert_type">Tipo</string>
<string name="error_key_not_found">¡Clave no encontrada!</string>
<string name="error_key_processing">¡Error procesando clave!</string>
@@ -1151,4 +1144,5 @@
<string name="nfc_write_succesful">Se escribió con éxito en la etiqueta NFC</string>
<string name="unlocked">Desbloqueado</string>
<string name="nfc_settings">Configuración</string>
+ <string name="file_delete_successful"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-et/strings.xml b/OpenKeychain/src/main/res/values-et/strings.xml
index 057eb8e00..f67ffb328 100644
--- a/OpenKeychain/src/main/res/values-et/strings.xml
+++ b/OpenKeychain/src/main/res/values-et/strings.xml
@@ -26,7 +26,6 @@
<string name="menu_delete_key">Kustuta võti</string>
<string name="menu_search">Otsi</string>
<!--label-->
- <string name="label_message">Sõnum</string>
<string name="label_file">Fail</string>
<string name="label_no_passphrase">Salasõnet pole</string>
<string name="label_passphrase">Salasõne</string>
@@ -38,7 +37,6 @@
<string name="label_name">Nimi</string>
<string name="label_comment">Kommentaar</string>
<string name="label_email">E-mail</string>
- <string name="expired">aegunud</string>
<string name="secret_key">Salajane võti:</string>
<!--choice-->
<string name="choice_15secs">15 sekundit</string>
@@ -56,7 +54,6 @@
<string name="elgamal">ElGamal</string>
<string name="rsa">RSA</string>
<string name="filemanager_title_open">Ava...</string>
- <string name="warning">Hoiatus</string>
<string name="error">Viga</string>
<string name="error_message">Viga: %s</string>
<!--key flags-->
@@ -64,9 +61,11 @@
<string name="wrong_passphrase">Vale salasõne</string>
<string name="passphrases_do_not_match">Salasõned ei ühti.</string>
<string name="passphrase_for_symmetric_encryption">Sümmeetriline krüpteering</string>
- <!--errors
- no punctuation, all lowercase,
- they will be put after "error_message", e.g. "Error: file not found"-->
+ <string name="file_delete_successful"></string>
+ <string name="file_delete_confirmation"></string>
+ <!--errors
+ no punctuation, all lowercase,
+ they will be put after "error_message", e.g. "Error: file not found"-->
<!--errors without preceeding Error:-->
<!--results shown after decryption/verification-->
<!--Add keys-->
@@ -113,6 +112,7 @@
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<!--First Time-->
<!--unsorted-->
diff --git a/OpenKeychain/src/main/res/values-eu/strings.xml b/OpenKeychain/src/main/res/values-eu/strings.xml
index 233347bd3..32fdfc4cb 100644
--- a/OpenKeychain/src/main/res/values-eu/strings.xml
+++ b/OpenKeychain/src/main/res/values-eu/strings.xml
@@ -2,50 +2,360 @@
<resources>
<!--GENERAL: Please put all strings inside quotes as described in example 1 on
http://developer.android.com/guide/topics/resources/string-resource.html (scroll down to "Escaping apostrophes and quotes").-->
+ <string name="app_name">OpenKeychain</string>
<!--title-->
+ <string name="title_select_recipients">Hautatu Giltzak</string>
+ <string name="title_select_secret_key">Hautatu Zure Giltza</string>
+ <string name="title_decrypt">Dekriptatu</string>
+ <string name="title_unlock">Desblokeatu Giltza</string>
+ <string name="title_add_subkey">Gehitu azpigiltza</string>
+ <string name="title_edit_key">Editatu Giltza</string>
+ <string name="title_preferences">Ezarpenak</string>
+ <string name="title_cloud_search_preferences">Hodei Bilaketa Hobespenak</string>
+ <string name="title_api_registered_apps">Aplikazioak</string>
+ <string name="title_key_server_preference">Giltza-zerbitzariak</string>
+ <string name="title_change_passphrase">Aldatu Sar-esaldia</string>
+ <string name="title_share_key">Elkarbanatu giltza honekin...</string>
+ <string name="title_share_file">Elkarbanatu agiria honekin...</string>
+ <string name="title_encrypt_to_file">Enkriptatu Agirira</string>
+ <string name="title_decrypt_to_file">Dekriptatu Agirira</string>
+ <string name="title_import_keys">Inportatu Giltzak</string>
+ <string name="title_add_keys">Gehitu Giltzak</string>
+ <string name="title_export_key">Esportatu Giltza</string>
+ <string name="title_export_keys">Esportatu Giltzak</string>
+ <string name="title_key_not_found">Giltza Ez da Aurkitu</string>
+ <string name="title_send_key">Igo Giltza-zerbitzarira</string>
+ <string name="title_key_details">Giltzaren Xehetasunak</string>
+ <string name="title_help">Laguntza</string>
+ <string name="title_log_display">Oharra</string>
+ <string name="title_create_key">Sortu Giltza</string>
+ <string name="title_advanced_key_info">Giltza Argibide Aurreratuak</string>
+ <string name="title_keys">Giltzak</string>
<!--section-->
+ <string name="section_user_ids">Nortasunak</string>
+ <string name="section_should_you_trust">Fildatu behar zara giltza honetaz?</string>
+ <string name="section_keys">Azpigiltzak</string>
+ <string name="section_cloud_search">Hodei bilaketa</string>
+ <string name="section_general">Orokorra</string>
+ <string name="section_defaults">Berezkoak</string>
+ <string name="section_advanced">Aurreratua</string>
+ <string name="section_passphrase_cache">Sar-esaldi Katxea</string>
+ <string name="section_actions">Ekintzak</string>
+ <string name="section_share_key">Giltza</string>
+ <string name="section_upload_key">Aldiberetu Giltza</string>
+ <string name="section_key_server">Giltza-zerbitzaria</string>
+ <string name="section_decrypt_files">Agiriak</string>
+ <string name="section_decrypt_text">Idazkia</string>
+ <string name="section_certs">Egiaztagiriak</string>
+ <string name="section_encrypt">Enkriptatu</string>
+ <string name="section_decrypt">Dekriptatu</string>
<!--button-->
+ <string name="btn_decrypt_verify_file">Dekriptatu, egiaztatu eta gorde agiria</string>
+ <string name="btn_encrypt_file">Enkriptatu eta gorde agiria</string>
+ <string name="btn_encrypt_share_file">Enkriptatu eta elkarbanatu agiria</string>
+ <string name="btn_save">Gorde</string>
+ <string name="btn_do_not_save">Ezeztatu</string>
+ <string name="btn_delete">Ezabatu</string>
+ <string name="btn_no_date">Epemuga gabe</string>
+ <string name="btn_okay">Ongi</string>
+ <string name="btn_export_to_server">Igo Giltza-zerbitzarira</string>
+ <string name="btn_next">Hurrengoa</string>
+ <string name="btn_back">Atzera</string>
+ <string name="btn_no">Ez</string>
+ <string name="btn_view_cert_key">Ikusi egiaztagiri giltza</string>
+ <string name="btn_create_key">Sortu giltza</string>
+ <string name="btn_add_files">Gehitu agiria(k)</string>
+ <string name="btn_add_share_decrypted_text">Elkarbanatu dekriptaturiko idazkia</string>
+ <string name="btn_decrypt_clipboard">Dekriptatu idazkia gakotik</string>
+ <string name="btn_decrypt_and_verify">eta egiaztatu sinadurak</string>
+ <string name="btn_decrypt_files">Dekriptatu agiriak</string>
+ <string name="btn_encrypt_files">Enkriptatu agiriak</string>
+ <string name="btn_encrypt_text">Enkriptatu idazkia</string>
<!--menu-->
+ <string name="menu_preferences">Ezarpenak</string>
+ <string name="menu_help">Laguntza</string>
+ <string name="menu_export_key">Esportatu agirira</string>
+ <string name="menu_delete_key">Ezabatu giltza</string>
+ <string name="menu_create_key">Sortu nire giltza</string>
+ <string name="menu_import_existing_key">inportatu agiritik</string>
+ <string name="menu_search">Bilatu</string>
+ <string name="menu_nfc_preferences">NFC ezarpenak</string>
+ <string name="menu_beam_preferences">Beam ezarpenak</string>
+ <string name="menu_key_edit_cancel">Ezeztatu</string>
+ <string name="menu_encrypt_to">Enkriptatu hona...</string>
+ <string name="menu_select_all">Hautatu denak</string>
+ <string name="menu_add_keys">Gehitu giltzak</string>
+ <string name="menu_search_cloud">Bilatu hodeian</string>
+ <string name="menu_export_all_keys">Esportatu giltza guztiak</string>
+ <string name="menu_advanced">Erakutsi argibide aurreratuak</string>
<!--label-->
+ <string name="label_file">Agiria</string>
+ <string name="label_files">Agiria(k)</string>
+ <string name="label_file_colon">Agiria:</string>
+ <string name="label_no_passphrase">Sar-esaldirik ez</string>
+ <string name="label_passphrase">Sar-esaldia</string>
+ <string name="label_unlock">Desblokeatzen...</string>
+ <string name="label_passphrase_again">Berregin Sar-esaldia</string>
+ <string name="label_algorithm">Algoritmoa</string>
+ <string name="label_file_ascii_armor">Gaitu ASCII Armor</string>
+ <string name="label_use_default_yubikey_pin">Erabili berezko YubiKey PIN-a</string>
+ <string name="label_asymmetric_from">Sinatzailea:</string>
+ <string name="label_to">Enkriptatu hona:</string>
+ <string name="label_delete_after_encryption">Ezabatu agiria enkriptatu ondoren</string>
+ <string name="label_delete_after_decryption">Ezabatu dekriptatu ondoren</string>
+ <string name="label_encryption_algorithm">Enkriptaketa algoritmoa</string>
+ <string name="label_hash_algorithm">Hash algoritmoa</string>
+ <string name="label_symmetric">Enkriptatu sar-esaldiarekin</string>
+ <string name="label_passphrase_cache_ttl">Katxe denbora</string>
+ <string name="label_file_compression">Agiri konpresioa</string>
+ <string name="label_keyservers">Giltza-zerbitzariak</string>
+ <string name="label_key_id">Giltza ID-a</string>
+ <string name="label_creation">Sortzea</string>
+ <string name="label_expiry">Epemuga</string>
+ <string name="label_usage">Erabilpena</string>
+ <string name="label_key_size">Giltza Neurria</string>
+ <string name="label_ecc_curve">Bihurgune Eliptikoa</string>
+ <string name="label_main_user_id">Lehen nortasuna</string>
+ <string name="label_name">Izena</string>
+ <string name="label_comment">Aipamena</string>
+ <string name="label_email">Post@</string>
+ <string name="label_send_key">Aldiberetu hodeiarekin</string>
+ <string name="expiry_date_dialog_title">Ezarri epemuga eguna</string>
+ <string name="label_preferred">hobetsia</string>
+ <string name="secret_key">Giltza Sekretua:</string>
<!--choice-->
+ <string name="choice_none">Ezer ez</string>
+ <string name="choice_15secs">15 seg</string>
+ <string name="choice_1min">1 min</string>
+ <string name="choice_3mins">3 min</string>
+ <string name="choice_5mins">5 min</string>
+ <string name="choice_10mins">10 min</string>
+ <string name="choice_20mins">20 min</string>
+ <string name="choice_40mins">40 min</string>
+ <string name="choice_1hour">1 ordu</string>
+ <string name="choice_2hours">2 ordu</string>
+ <string name="choice_4hours">4 ordu</string>
+ <string name="choice_8hours">8 ordu</string>
+ <string name="choice_forever">betirako</string>
+ <string name="dsa">DSA</string>
+ <string name="elgamal">ElGamal</string>
+ <string name="rsa">RSA</string>
+ <string name="ecdh">ECDH</string>
+ <string name="ecdsa">ECDSA</string>
+ <string name="filemanager_title_open">Ireki...</string>
+ <string name="error">Akatsa</string>
+ <string name="error_message">Akatsa: %s</string>
<!--key flags-->
+ <string name="flag_certify">Egiaztatu</string>
+ <string name="flag_sign">Sinatu</string>
+ <string name="flag_encrypt">Enkriptatu</string>
+ <string name="flag_authenticate">Egiaztatu</string>
<!--sentences-->
+ <string name="wrong_passphrase">Sar-esaldi okerra.</string>
+ <string name="no_filemanager_installed">Ez dago agiri kudeatzaile bateragarririk ezarrita.</string>
+ <string name="passphrases_do_not_match">Sar-esaldiak ez datoz bat.</string>
+ <string name="passphrase_must_not_be_empty">Mesedez sartu sar-esaldi bat.</string>
+ <string name="passphrase_for_symmetric_encryption">Enkriptaketa simetrikoa.</string>
+ <string name="list_empty">Zerrenda hau hutsik dago!</string>
+ <string name="text_copied_to_clipboard">Idazkia gakora kopiatu da!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
+ <string name="error_file_not_found">agiria ez da aurkitu</string>
+ <string name="error_key_size_minimum512bit">giltzaren neurria gutxienez 512bitekoa izan behar da</string>
+ <string name="error_unknown_algorithm_choice">algoritmo ezezagun hautapena</string>
+ <string name="error_user_id_no_email">ez da post@rik aurkitu</string>
+ <string name="error_key_needs_a_user_id">gutxienez nortasun bat behar da</string>
+ <string name="error_no_signature_passphrase">ez da sar-esaldirik behar</string>
+ <string name="error_no_signature_key">ez da sinadura giltzarik eman</string>
+ <string name="error_integrity_check_failed">osotasun egiaztapen hutsigitea! Datuak aldatuak izan dira!</string>
+ <string name="error_wrong_passphrase">sar-esaldi okerra</string>
+ <string name="error_could_not_extract_private_key">ezin da giltza pribatua atera</string>
<!--errors without preceeding Error:-->
+ <string name="error_nfc_needed">NFC gaitua izan behar da!</string>
+ <string name="error_beam_needed">Beam gaitua izan behar da!</string>
+ <string name="error_nothing_import">Ez da giltzarik aurkitu!</string>
<!--results shown after decryption/verification-->
+ <string name="decrypt_result_no_signature">Sinatu Gabe</string>
+ <string name="decrypt_result_invalid_signature">Sinadura baliogabea!</string>
+ <string name="decrypt_result_signature_uncertified">Sinatzailea (egiaztatu gabea!)</string>
+ <string name="decrypt_result_signature_certified">Sinatzailea</string>
+ <string name="decrypt_result_signature_expired_key">Giltzaren epemuga gaindituta!</string>
+ <string name="decrypt_result_signature_missing_key">Giltza publiko ezezaguna</string>
+ <string name="decrypt_result_encrypted">Enkriptatuta</string>
+ <string name="decrypt_result_not_encrypted">Enkriptatu Gabea</string>
+ <string name="decrypt_result_action_show">Erakutsi</string>
<!--Add keys-->
+ <string name="add_keys_my_key">Nire giltza:</string>
<!--progress dialogs, usually ending in '…'-->
+ <string name="progress_done">Eginda.</string>
+ <string name="progress_cancel">Ezeztatu</string>
+ <string name="progress_cancelling">ezeztatzen...</string>
+ <string name="progress_saving">gordetzen...</string>
+ <string name="progress_importing">inportatzen...</string>
+ <string name="progress_exporting">esportatzen...</string>
+ <string name="progress_uploading">igotzen...</string>
+ <string name="progress_building_key">giltza eraikitzen...</string>
+ <string name="progress_generating_rsa">RSA giltza berria sortzen...</string>
+ <string name="progress_generating_dsa">DSA giltza berria sortzen...</string>
+ <string name="progress_generating_elgamal">EIGamal giltza berria sortzen...</string>
+ <string name="progress_generating_ecdsa">ECDSA giltza berria sortzen...</string>
+ <string name="progress_generating_ecdh">ECDH giltza berria sortzen...</string>
+ <string name="progress_modify_adduid">erabiltzaile ID-ak gehitzen...</string>
+ <string name="progress_modify_adduat">erabiltzaile ezaugarriak gehitzen...</string>
+ <string name="progress_modify_primaryuid">lehen erabiltzaile ID-a aldatzen...</string>
+ <string name="progress_modify_subkeychange">azpigiltzak aldatzen...</string>
+ <string name="progress_modify_subkeyadd">azpigiltzak gehitzen...</string>
+ <string name="progress_modify_passphrase">sar-esaldia aldatzen...</string>
+ <plurals name="progress_exporting_key">
+ <item quantity="one">giltza esportatzen</item>
+ <item quantity="other">giltzak esportatzen</item>
+ </plurals>
+ <string name="progress_extracting_signature_key">sinadura giltza ateratzen...</string>
+ <string name="progress_extracting_key">giltza ateratzen...</string>
+ <string name="progress_preparing_streams">jarioak gertatzen...</string>
+ <string name="progress_encrypting">datuak enkriptatzen...</string>
+ <string name="progress_decrypting">datuak dekriptatzen...</string>
+ <string name="progress_preparing_signature">sinadura gertatzen...</string>
+ <string name="progress_generating_signature">sinadura sortzen...</string>
+ <string name="progress_processing_signature">sinadura prozesatzen...</string>
+ <string name="progress_verifying_signature">sinadura egiaztatzen...</string>
+ <string name="progress_signing">sinatzen...</string>
+ <string name="progress_certifying">egiaztagiritzen...</string>
+ <string name="progress_reading_data">datuak irakurtzen...</string>
+ <string name="progress_finding_key">giltza bilatzen...</string>
+ <string name="progress_decompressing_data">datuak deskonprimitzen...</string>
+ <string name="progress_verifying_integrity">osotasuna egiaztatzen...</string>
+ <string name="progress_deleting_securely">\'%s\' segurtasunez ezabatzen...</string>
+ <string name="progress_deleting">giltzak ezabatzen...</string>
<!--action strings-->
+ <string name="hint_cloud_search_hint">Bilatu Izena, Post@... bidez</string>
<!--key bit length selections-->
+ <string name="key_size_512">512</string>
+ <string name="key_size_768">768</string>
+ <string name="key_size_1024">1024</string>
+ <string name="key_size_1536">1536</string>
+ <string name="key_size_2048">2048</string>
+ <string name="key_size_3072">3072</string>
+ <string name="key_size_4096">4096</string>
+ <string name="key_size_8192">8192</string>
+ <string name="key_size_custom">Norbere giltza neurria</string>
+ <string name="key_size_custom_info">Idatzi norbere giltza luzera (bitetan):</string>
<!--elliptic curve names-->
+ <string name="key_curve_nist_p256">NIST P-256</string>
+ <string name="key_curve_nist_p384">NIST P-384</string>
+ <string name="key_curve_nist_p521">NIST P-521</string>
<!--not in for now, see SaveKeyringParcel
<string name="key_curve_bp_p256">"Brainpool P-256"</string>
<string name="key_curve_bp_p384">"Brainpool P-384"</string>
<string name="key_curve_bp_p512">"Brainpool P-512"</string>-->
<!--compression-->
+ <string name="compression_fast">azkarra</string>
+ <string name="compression_very_slow">oso astiroa</string>
<!--Help-->
+ <string name="help_tab_start">Hasi</string>
+ <string name="help_tab_faq">SEG</string>
+ <string name="help_tab_nfc_beam">NFC Beam</string>
+ <string name="help_tab_changelog">Aldaketa-oharra</string>
+ <string name="help_tab_about">Honi buruz</string>
+ <string name="help_about_version">Bertsioa:</string>
<!--Import-->
+ <string name="import_tab_keyserver">Giltza-zerbitzaria</string>
+ <string name="import_tab_direct">Agiria/Gakoa</string>
+ <string name="import_tab_qr_code">QR Kodea/NFC</string>
+ <string name="import_import">Inportatu hautaturiko giltzak</string>
+ <string name="import_qr_code_button">Eskaneatu QR Kodea</string>
+ <string name="import_qr_code_text">Jarri zure kamera QR Kodearen gainean!</string>
<!--Generic result toast-->
+ <string name="view_log">Xehetasunak</string>
+ <string name="with_warnings">, kontuz oharrekin</string>
<!--Import result toast-->
+ <string name="import_error_nothing">Ez dago ezer inportatzeko.</string>
+ <string name="import_error_nothing_cancelled">Inportazioa ezeztatuta.</string>
<!--Delete result toast-->
+ <string name="delete_nothing">Ez dago ezer ezabatzeko</string>
+ <string name="delete_cancelled">Ezabapen eragiketa ezeztaturik.</string>
<!--Certify result toast-->
<!--Intent labels-->
+ <string name="intent_import_key">Inportatu Giltza OpenKeychain-rekin</string>
+ <string name="intent_send_encrypt">Enkriptatu OpenKeychain-rekin</string>
+ <string name="intent_send_decrypt">Dekriptatu OpenKeychain-rekin</string>
<!--Remote API-->
+ <string name="api_settings_show_info">Erakutsi argibide aurreratuak</string>
+ <string name="api_settings_hide_info">Ezkutatu argibide aurreratuak</string>
+ <string name="api_settings_show_advanced">Erakutsi ezarpen aurreratuak</string>
+ <string name="api_settings_hide_advanced">Ezkutatu ezarpen aurreratuak</string>
+ <string name="api_settings_no_key">Ez da giltzarik hautatu</string>
+ <string name="api_settings_select_key">Hautatu giltza</string>
+ <string name="api_settings_create_key">Sortu giltza berria kontu honentzat</string>
+ <string name="api_settings_save">Gorde</string>
+ <string name="api_settings_save_msg">Kontua gorde da</string>
+ <string name="api_settings_cancel">Ezeztatu</string>
+ <string name="api_settings_revoke">Ukatu sarbidea</string>
+ <string name="api_settings_start">Abiarazi aplikazioa</string>
+ <string name="api_settings_delete_account">Ezabatu kontua</string>
+ <string name="api_settings_package_name">Pakete Izena</string>
+ <string name="api_settings_advanced">Argibide Aurreratuak</string>
+ <string name="api_settings_allowed_keys">Ahalbidetutako Giltzak</string>
+ <string name="api_settings_settings">Ezarpenak</string>
+ <string name="api_settings_key">Kontuaren giltza:</string>
+ <string name="api_settings_accounts_empty">Ez dago konturik app honi erantsita.</string>
+ <string name="api_register_allow">Ahalbidetu sarbidea</string>
+ <string name="api_register_disallow">Ez ahalbidetu sarbidea</string>
+ <string name="api_register_error_select_key">Mesedez hautatu giltza bat!</string>
+ <string name="api_select_pub_keys_text">Mesedz berrikusi jasotzaile zerrenda!</string>
+ <string name="api_select_pub_keys_text_no_user_ids">Mesedez hautatu jasotzaileak!</string>
<!--Share-->
+ <string name="share_nfc_dialog">Elkarbanatu NFC-rekin</string>
<!--Key list-->
+ <string name="key_list_empty_text1">Ez da giltzarik aurkitu!</string>
+ <string name="key_list_filter_show_all">Erakutsi giltza guztiak</string>
+ <string name="key_list_filter_show_certified">Erakutsi egiaztaturiko giltzak bakarrik</string>
<!--Key view-->
+ <string name="key_view_action_edit">Editatu giltza</string>
+ <string name="key_view_action_encrypt">Enkriptatu idazkia</string>
+ <string name="key_view_action_encrypt_files">agiriak</string>
+ <string name="key_view_action_update">Eguneratu giltza-zerbitzaritik</string>
+ <string name="key_view_action_share_with">Elkarbanatu honekin...</string>
+ <string name="key_view_action_share_nfc">Elkarbanatu NFC gain</string>
+ <string name="key_view_action_upload">Igo giltza-zerbitzarira</string>
+ <string name="key_view_tab_main">Argibide Nagusiak</string>
+ <string name="key_view_tab_share">Elkarbanatu</string>
+ <string name="key_view_tab_keys">Azpigiltzak</string>
+ <string name="key_view_tab_certs">Egiaztagiriak</string>
+ <string name="user_id_info_certified_title">Egiaztuta</string>
+ <string name="user_id_info_certified_text">Nortasun hau zeuk egiaztatua da.</string>
+ <string name="user_id_info_uncertified_title">Egiaztatu gabea</string>
+ <string name="user_id_info_invalid_title">Baliogabea</string>
<!--Key trust-->
<!--keybase proof stuff-->
<!--Edit key-->
+ <string name="edit_key_new_subkey">azpigiltza berria</string>
<!--Create key-->
<!--View key-->
+ <string name="view_key_my_key">Nire Giltza</string>
<!--Navigation Drawer-->
+ <string name="nav_keys">Giltzak</string>
+ <string name="nav_encrypt_decrypt">Enkriptatu/Dekriptatu</string>
+ <string name="nav_apps">Aplikazioak</string>
+ <string name="drawer_open">Ireki nabigazio marraztzailea</string>
+ <string name="drawer_close">Itxi nabigazio marraztzailea</string>
+ <string name="my_keys">Nire Giltzak</string>
<!--hints-->
+ <string name="encrypt_content_edit_text_hint">Idatzi idazkia</string>
<!--certs-->
+ <string name="cert_default">berezkoa</string>
+ <string name="cert_none">ezer ez</string>
+ <string name="cert_verify_ok">Ongi</string>
+ <string name="cert_verify_failed">hutsegitea!</string>
+ <string name="cert_verify_error">akatsa!</string>
+ <string name="cert_verify_unavailable">giltza eskuraezina</string>
<!--LogType log messages. Errors should have _ERROR_ in their name and end with a !-->
+ <string name="msg_internal_error">Barneko akatsa!</string>
+ <string name="msg_cancelled">Eragiketa ezeztaturik.</string>
<!--Import Public log entries-->
+ <string name="msg_ip_insert_keys">Giltzak aztertzen</string>
+ <string name="msg_ip_prepare">Datubase eragiketak gertatzen</string>
<!--Import Secret log entries-->
<!--Keyring Canonicalization log entries-->
<!--Keyring merging log entries-->
@@ -59,11 +369,16 @@
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<!--First Time-->
<!--unsorted-->
<!--Passphrase wizard-->
<!--TODO: rename all the things!-->
<!--<string name="enter_passphrase_twice">Enter passphrase twice</string>-->
+ <string name="nfc_title">NFC</string>
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
+ <string name="nfc_settings">Ezarpenak</string>
+ <string name="file_delete_successful"></string>
+ <string name="file_delete_confirmation"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-fi/strings.xml b/OpenKeychain/src/main/res/values-fi/strings.xml
index 804383637..4b75d203d 100644
--- a/OpenKeychain/src/main/res/values-fi/strings.xml
+++ b/OpenKeychain/src/main/res/values-fi/strings.xml
@@ -5,8 +5,6 @@
<!--title-->
<string name="title_select_recipients">Valitse Avaimet</string>
<string name="title_select_secret_key">Valitse Oma Avain</string>
- <string name="title_encrypt_text">Salaa Tekstiä</string>
- <string name="title_encrypt_files">Salaa Tiedostoja</string>
<string name="title_decrypt">Pura Salaus</string>
<string name="title_unlock">Avaa Avain</string>
<string name="title_add_subkey">Lisää aliavain</string>
@@ -18,7 +16,6 @@
<string name="title_share_fingerprint_with">Jaa sormenjälki...</string>
<string name="title_share_key">Jaa avain...</string>
<string name="title_share_file">Jaa tiedosto...</string>
- <string name="title_share_message">Jaa viesti...</string>
<string name="title_encrypt_to_file">Salaa Tiedostoon</string>
<string name="title_decrypt_to_file">Pura Tiedostoon</string>
<string name="title_import_keys">Tuo Avaimia</string>
@@ -27,7 +24,6 @@
<string name="title_export_keys">Vie Avaimia</string>
<string name="title_key_not_found">Avainta Ei Löydy</string>
<string name="title_send_key">Lähetä Avainpalvelimelle</string>
- <string name="title_certify_key">Varmenna Identiteetit</string>
<string name="title_key_details">Avaimen Tiedot</string>
<string name="title_help">Apua</string>
<string name="title_log_display">Loki</string>
@@ -42,20 +38,16 @@
<string name="section_defaults">Vakiot</string>
<string name="section_advanced">Lisäasetukset</string>
<string name="section_passphrase_cache">Salasanavälimuisti</string>
- <string name="section_certify">Varmenna</string>
<string name="section_actions">Toiminteet</string>
<string name="section_share_key">Avain</string>
- <string name="section_certification_key">Varmentamiseen käytetty Avaimesi</string>
<string name="section_upload_key">Synkronoi Avain</string>
<string name="section_key_server">Avainpalvelin</string>
<string name="section_fingerprint">Sormenjälki</string>
- <string name="section_key_to_certify">Varmennettava avain</string>
<string name="section_decrypt_files">Tiedostot</string>
<string name="section_decrypt_text">Teksti</string>
<string name="section_certs">Varmenteet</string>
<!--button-->
<string name="btn_decrypt_verify_file">Pura, todenna ja tallenna tiedosto</string>
- <string name="btn_decrypt_verify_message">Pura ja todenna viesti</string>
<string name="btn_encrypt_file">Salaa ja tallenna tiedosto</string>
<string name="btn_encrypt_share_file">Salaa ja jaa tiedosto</string>
<string name="btn_save">Tallenna</string>
@@ -67,7 +59,6 @@
<string name="btn_next">Seuraava</string>
<string name="btn_back">Takaisin</string>
<string name="btn_lookup_key">Etsi avain</string>
- <string name="btn_share_encrypted_signed">Salaa ja jaa viesti</string>
<string name="btn_view_cert_key">Näytä varmennusavain</string>
<string name="btn_create_key">Luo avain</string>
<string name="btn_add_files">Lisää tiedosto(ja)</string>
@@ -91,7 +82,6 @@
<string name="menu_export_all_keys">Vie kaikki avaimet</string>
<string name="menu_advanced">Näytä lisäinformaatio</string>
<!--label-->
- <string name="label_message">Viesti</string>
<string name="label_file">Tiedosto</string>
<string name="label_files">Tiedosto(t)</string>
<string name="label_file_colon">Tiedosto:</string>
@@ -116,7 +106,6 @@
<string name="label_symmetric">Salaa salasanalla</string>
<string name="label_passphrase_cache_ttl">Välimuistiaika</string>
<string name="label_passphrase_cache_subs">Väliaikaistalleta salasanat aliavaimen mukaan</string>
- <string name="label_message_compression">Viestin pakkaus</string>
<string name="label_file_compression">Tiedoston pakkaus</string>
<string name="label_keyservers">Avainpalvelimet</string>
<string name="label_key_id">Avaimen ID</string>
@@ -136,13 +125,6 @@
<string name="label_preferred">ensisijainen</string>
<string name="user_id_no_name">&lt;ei nimeä&gt;</string>
<string name="none">&lt;ei mitään&gt;</string>
- <string name="no_key">&lt;ei avainta&gt;</string>
- <string name="can_encrypt">voi salata</string>
- <string name="can_sign">voi allekirjoittaa</string>
- <string name="can_certify">voi varmentaa</string>
- <string name="can_certify_not">ei voi varmentaa</string>
- <string name="expired">umpeutunut</string>
- <string name="revoked">peruutettu</string>
<plurals name="n_keys">
<item quantity="one">1 avain</item>
<item quantity="other">%d avainta</item>
@@ -172,7 +154,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Avaa...</string>
- <string name="warning">Varoitus</string>
<string name="error">Virhe</string>
<string name="error_message">Virhe: %s</string>
<!--key flags-->
@@ -188,9 +169,11 @@
<string name="passphrase_for_symmetric_encryption">Symmetrinen salaus.</string>
<string name="passphrase_for">Syötä salasana \'%s\':lle</string>
<string name="pin_for">Syötä PIN \'%s\':lle</string>
- <!--errors
- no punctuation, all lowercase,
- they will be put after "error_message", e.g. "Error: file not found"-->
+ <string name="file_delete_successful"></string>
+ <string name="file_delete_confirmation"></string>
+ <!--errors
+ no punctuation, all lowercase,
+ they will be put after "error_message", e.g. "Error: file not found"-->
<!--errors without preceeding Error:-->
<!--results shown after decryption/verification-->
<!--Add keys-->
@@ -237,6 +220,7 @@
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<!--First Time-->
<!--unsorted-->
diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml
index 8cc1cc735..ba6f2e2af 100644
--- a/OpenKeychain/src/main/res/values-fr/strings.xml
+++ b/OpenKeychain/src/main/res/values-fr/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Choisir des clefs</string>
<string name="title_select_secret_key">Choisir ma clef</string>
- <string name="title_encrypt_text">Chiffrer un texte</string>
- <string name="title_encrypt_files">Chiffrer des fichiers</string>
<string name="title_decrypt">Déchiffrer</string>
<string name="title_unlock">Déverrouiller la clef</string>
<string name="title_add_subkey">Ajouter une sous-clef</string>
@@ -20,7 +18,6 @@
<string name="title_share_fingerprint_with">Partager l\'empreinte avec...</string>
<string name="title_share_key">Partager la clef avec...</string>
<string name="title_share_file">Partager le fichier avec...</string>
- <string name="title_share_message">Partager le message avec...</string>
<string name="title_encrypt_to_file">Chiffrer vers un fichier</string>
<string name="title_decrypt_to_file">Déchiffrer vers un fichier</string>
<string name="title_import_keys">importer des clefs</string>
@@ -29,7 +26,7 @@
<string name="title_export_keys">Exporter les clefs</string>
<string name="title_key_not_found">Clef introuvable</string>
<string name="title_send_key">Téléverser vers le serveur de clefs</string>
- <string name="title_certify_key">Certifier les identités</string>
+ <string name="title_certify_key">Confirmer la clef</string>
<string name="title_key_details">Détails sur la clef</string>
<string name="title_help">Aide</string>
<string name="title_log_display">Journal</string>
@@ -37,33 +34,34 @@
<string name="title_exchange_keys">Échanger des clefs</string>
<string name="title_advanced_key_info">Infos avancées sur les clefs</string>
<string name="title_keys">Clefs</string>
+ <string name="title_delete_secret_key">Supprimer VOTRE clef \'%s\' ?</string>
+ <string name="title_export_log">Exporter le journal</string>
<!--section-->
<string name="section_user_ids">identités</string>
<string name="section_should_you_trust">Devriez-vous faire confiance à cette clef ?</string>
<string name="section_proof_details">Vérification de preuve</string>
- <string name="section_cloud_evidence">Preuve provenant du nuage</string>
+ <string name="section_cloud_evidence">Preuves provenant du nuage</string>
<string name="section_keys">Sous-clefs</string>
<string name="section_cloud_search">Recherche nuagique</string>
<string name="section_general">Général</string>
<string name="section_defaults">Valeurs par défaut</string>
<string name="section_advanced">Avancé</string>
<string name="section_passphrase_cache">Cache de la phrase de passe</string>
- <string name="section_certify">Certifier</string>
+ <string name="section_certify">Confirmer</string>
<string name="section_actions">Actions</string>
<string name="section_share_key">Clef</string>
- <string name="section_certification_key">Votre clef utilisée pour la certification</string>
<string name="section_upload_key">Synchroniser la clef</string>
<string name="section_key_server">Serveur de clefs</string>
<string name="section_fingerprint">Empreinte</string>
- <string name="section_key_to_certify">Clef à certifier !</string>
<string name="section_decrypt_files">Fichiers</string>
<string name="section_decrypt_text">Texte</string>
<string name="section_certs">Certificats</string>
<string name="section_encrypt">Chiffrer</string>
<string name="section_decrypt">Déchiffrer</string>
+ <string name="section_current_expiry">Expiration actuelle</string>
+ <string name="section_new_expiry">Nouvelle expiration</string>
<!--button-->
<string name="btn_decrypt_verify_file">Déchiffrer, vérifier et enregistrer le fichier</string>
- <string name="btn_decrypt_verify_message">Déchiffrer et enregistrer le message</string>
<string name="btn_encrypt_file">Chiffrer et enregistrer le fichier</string>
<string name="btn_encrypt_share_file">Chiffrer et partager le fichier</string>
<string name="btn_save">Enregistrer</string>
@@ -77,7 +75,6 @@
<string name="btn_no">Non</string>
<string name="btn_match">Les empreintes correspondent</string>
<string name="btn_lookup_key">Rechercher la clef</string>
- <string name="btn_share_encrypted_signed">Chiffrer et partager le message</string>
<string name="btn_view_cert_key">Voir la clef de certification</string>
<string name="btn_create_key">Créer la clef</string>
<string name="btn_add_files">Ajouter un/des fichier(s)</string>
@@ -104,9 +101,9 @@
<string name="menu_search_cloud">Rechercher dans le nuage</string>
<string name="menu_export_all_keys">Exporter toutes les clefs</string>
<string name="menu_advanced">Afficher les infos avancées</string>
- <string name="menu_certify_fingerprint">Vérifier par comparaison d\'empreintes</string>
+ <string name="menu_certify_fingerprint">Confirmer par une comparaison d\'empreinte</string>
+ <string name="menu_export_log">Exporter le journal</string>
<!--label-->
- <string name="label_message">Message</string>
<string name="label_file">Fichier</string>
<string name="label_files">Fichier(s)</string>
<string name="label_file_colon">Fichier :</string>
@@ -131,7 +128,6 @@
<string name="label_symmetric">Chiffrer avec une phrase de passe</string>
<string name="label_passphrase_cache_ttl">Durée du cache</string>
<string name="label_passphrase_cache_subs">Mettre en cache une phrase de passe par sous-clef</string>
- <string name="label_message_compression">Compression des messages</string>
<string name="label_file_compression">Compression des fichiers</string>
<string name="label_keyservers">Serveurs de clefs</string>
<string name="label_key_id">ID de clef</string>
@@ -149,15 +145,9 @@
<string name="expiry_date_dialog_title">Définir une date d\'expiration</string>
<string name="label_first_keyserver_is_used">(Le premier serveur de clefs listé est préféré)</string>
<string name="label_preferred">préféré</string>
+ <string name="label_enable_compression">Activer la compression</string>
<string name="user_id_no_name">&lt;aucun nom&gt;</string>
<string name="none">&lt;aucune&gt;</string>
- <string name="no_key">&lt;pas de clef&gt;</string>
- <string name="can_encrypt">peut chiffrer</string>
- <string name="can_sign">peut signer</string>
- <string name="can_certify">peut certifier</string>
- <string name="can_certify_not">ne peut pas certifier</string>
- <string name="expired">expiré</string>
- <string name="revoked">révoquée</string>
<plurals name="n_keys">
<item quantity="one">1 clef</item>
<item quantity="other">%d clefs</item>
@@ -187,7 +177,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Ouvrir...</string>
- <string name="warning">Avertissement</string>
<string name="error">Erreur</string>
<string name="error_message">Erreur : %s</string>
<!--key flags-->
@@ -205,20 +194,17 @@
<string name="pin_for">Saisir le NIP pour « %s »</string>
<string name="yubikey_pin_for">Saisir le NIP pour accéder à la Yubikey pour « %s »</string>
<string name="nfc_text">Tenez la YubiKey contre le dos de votre appareil.</string>
- <string name="file_delete_confirmation">Êtes-vous certain de vouloir supprimer\n%s?</string>
- <string name="file_delete_successful">Supprimé avec succès.</string>
- <string name="no_file_selected">Choisir d\'abord un fichier.</string>
+ <string name="no_file_selected">Choisir d\'abord un fichier.</string>
<string name="encrypt_sign_successful">Signé et/ou chiffré avec succès.</string>
<string name="encrypt_sign_clipboard_successful">Signé et/ou chiffré vers le presse-papiers avec succès.</string>
- <string name="enter_passphrase_twice">Saisir la phrase de passe deux fois.</string>
<string name="select_encryption_key">Choisir au moins une clef de chiffrement.</string>
<string name="select_encryption_or_signature_key">Choisir au moins une clef de chiffrement ou de signature.</string>
<string name="specify_file_to_encrypt_to">Veuillez spécifier vers quel fichier chiffrer.\nAVERTISSEMENT ! Le fichier sera écrasé s\'il existe.</string>
<string name="specify_file_to_decrypt_to">Veuillez spécifier vers quel fichier déchiffrer.\nAVERTISSEMENT : le fichier sera écrasé s\'il existe.</string>
<string name="specify_file_to_export_to">Veuillez spécifier vers quel fichier exporter.\nAVERTISSEMENT ! Le fichier sera écrasé s\'il existe.</string>
- <string name="key_deletion_confirmation_multi">Voulez-vous vraiment supprimer toutes les clefs publiques choisies ?\nCeci est irréversible !</string>
- <string name="secret_key_deletion_confirmation">Voulez-vous vraiment supprimer la clef SECRÈTE « %s » ?\nCeci est irréversible !</string>
- <string name="public_key_deletetion_confirmation">Voulez-vous vraiment supprimer la clef publique « %s » ?\nCeci est irréversible !</string>
+ <string name="key_deletion_confirmation_multi">Voulez-vous vraiment supprimer toutes les clefs sélectionnées ?</string>
+ <string name="secret_key_deletion_confirmation">Après suppression vous ne pourrez plus lire les messages chiffrés avec cette clef et vous perdrez toutes les confirmations de clefs faites avec elle !</string>
+ <string name="public_key_deletetion_confirmation">Supprimer la clef \'%s\' ?</string>
<string name="also_export_secret_keys">Importer aussi les clefs secrètes</string>
<string name="reinstall_openkeychain">Vous venez de rencontrer un bogue connu d\'Android. Veuillez réinstaller OpenKeychain si voulez relier vos contacts avec des clefs.</string>
<string name="key_exported">1 clef exportée avec succès.</string>
@@ -226,6 +212,7 @@
<string name="no_keys_exported">Aucune clef exportée.</string>
<string name="key_creation_el_gamal_info">Note : seules les sous-clefs prennent en charge ElGamal.</string>
<string name="key_not_found">Clef %08X introuvable.</string>
+ <string name="specify_file_to_export_log_to">Veuillez spécifier le fichier vers lequel exporter. \nAVERTISSEMENT : le fichier sera écrasé s\'il existe.</string>
<plurals name="bad_keys_encountered">
<item quantity="one">%d mauvaise clef secrète ignorée. Vous avez peut-être exporté avec l\'option\n --export-secret-subkeys\nAssurez-vous d\'exporter plutôt avec\n --export-secret-keys.</item>
<item quantity="other">%d mauvaises clefs secrètes ignorées. Vous avez peut-être exporté avec l\'option\n --export-secret-subkeys\nAssurez-vous d\'exporter plutôt avec\n --export-secret-keys.</item>
@@ -234,13 +221,12 @@
<string name="nfc_successful">Clef envoyée par Beam NFC avec succès |</string>
<string name="key_copied_to_clipboard">La clef a été copié vers le presse-papiers !</string>
<string name="fingerprint_copied_to_clipboard">L\'empreinte a été copié vers le presse-papiers !</string>
- <string name="select_key_to_certify">Veuillez choisir une clef à utiliser pour la certification !</string>
+ <string name="select_key_to_certify">Veuillez sélectionner une clef à utiliser pour la confirmation !</string>
<string name="key_too_big_for_sharing">La clef est trop grosse pour être partagée ainsi !</string>
<string name="text_copied_to_clipboard">La texte a été copié vers le presse-papiers !</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">échec lors de la suppression de « %s »</string>
<string name="error_file_not_found">fichier introuvable</string>
<string name="error_no_secret_key_found">aucune clefs secrète adéquate n\'a été trouvée</string>
<string name="error_external_storage_not_ready">le stockage externe n\'est pas prêt</string>
@@ -327,8 +313,7 @@
<string name="progress_con_saving">consolider : enregistrement dans le cache...</string>
<string name="progress_con_reimport">consolider : réimportation...</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Nom/courriel/ID de clef...</string>
- <string name="hint_cloud_search_hint">Nom/Courriel/Preuve/Clef...</string>
+ <string name="hint_cloud_search_hint">Chercher par nom, adresse courriel...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -356,7 +341,7 @@
<!--Help-->
<string name="help_tab_start">Commencer</string>
<string name="help_tab_faq">FAQ</string>
- <string name="help_tab_wot">Toile de confiance</string>
+ <string name="help_tab_wot">Confirmation de la clef</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Journal des changements</string>
<string name="help_tab_about">À propos de</string>
@@ -416,8 +401,8 @@
<item quantity="other">%1$d key%2$s supprimées avec succès.</item>
</plurals>
<plurals name="delete_fail">
- <item quantity="one">Erreur lors de la suppression d\'une key%2$s.</item>
- <item quantity="other">Erreur lors de la suppression de %1$d clefs.</item>
+ <item quantity="one">Erreur de suppression d\'une key%2$s.</item>
+ <item quantity="other">Erreur de suppression de %1$d clefs.</item>
</plurals>
<string name="delete_nothing">Rien à supprimer.</string>
<string name="delete_cancelled">Opération de suppression annulée.</string>
@@ -487,7 +472,7 @@
<string name="key_view_action_edit">Modifier la clef</string>
<string name="key_view_action_encrypt">Chiffrer un texte</string>
<string name="key_view_action_encrypt_files">fichiers</string>
- <string name="key_view_action_certify">Certifier les identités</string>
+ <string name="key_view_action_certify">Confirmer la clef</string>
<string name="key_view_action_update">Mise à jour depuis le serveur de clefs</string>
<string name="key_view_action_share_with">Partager avec...</string>
<string name="key_view_action_share_nfc">Partager par la NFC</string>
@@ -506,15 +491,15 @@
<string name="user_id_info_invalid_title">Invalide</string>
<string name="user_id_info_invalid_text">Quelque chose ne va pas avec cette identité !</string>
<!--Key trust-->
- <string name="key_trust_already_verified">Vous avez déjà certifié cette clef !</string>
+ <string name="key_trust_already_verified">Vous avez déjà confirmé cette clef !</string>
<string name="key_trust_it_is_yours">C\'est une de vos clefs !</string>
- <string name="key_trust_maybe">Cette clef n\'est ni révoquée, ni expirée.\nVous ne l\'avez pas certifiée, mais vous pourriez décider de lui faire confiance.</string>
+ <string name="key_trust_maybe">Cette clef n\'est ni révoquée, ni expirée.\nVous ne l\'avez pas confirmée, mais vous pourriez décider de lui faire confiance.</string>
<string name="key_trust_revoked">Cette clef a été révoquée par son propriétaire. Vous ne devriez pas lui faire confiance.</string>
<string name="key_trust_expired">Cette clef est expirée. Vous ne devriez pas lui faire confiance.</string>
- <string name="key_trust_old_keys">Vous pourriez l\'utiliser pour déchiffrer un ancien message datant de la période de validité de la clef.</string>
<string name="key_trust_no_cloud_evidence">Aucune preuve de fiabilité provenant du nuage pour cette clef.</string>
<string name="key_trust_start_cloud_search">Lancer la recherche</string>
<string name="key_trust_results_prefix">Keybase.io offre des « preuves » affirmant que le propriétaire de cette clef : </string>
+ <string name="key_trust_header_text">Note : les preuves de keybase.io sont une fonction expérimentales d\'OpenKeychain. Nous vous encourageons à balayer des codes QR ou à échanger des clefs via NFC en plus de les confirmer.</string>
<!--keybase proof stuff-->
<string name="keybase_narrative_twitter">Publie vers Twitter en tant que</string>
<string name="keybase_narrative_github">Est connu sur GitHub en tant que</string>
@@ -526,11 +511,13 @@
<string name="keybase_narrative_unknown">Type de preuve inconnu</string>
<string name="keybase_proof_failure">Malheureusement cette preuve ne peut pas être vérifiée.</string>
<string name="keybase_unknown_proof_failure">Problème inconnu avec le vérificateur de preuve</string>
+ <string name="keybase_problem_fetching_evidence">Problème avec la preuve</string>
<string name="keybase_key_mismatch">L\'empreinte de clef ne correspondant pas à celle du billet de preuve</string>
<string name="keybase_dns_query_failure">Échec lors de la récupération de l\'enregistrement DNS TXT</string>
<string name="keybase_no_prover_found">Aucun vérificateur de preuve trouvé pour</string>
<string name="keybase_message_payload_mismatch">Le billet de preuve déchiffré ne correspond pas à la valeur attendue</string>
- <string name="keybase_proof_succeeded">Cette preuve a été vérifié !</string>
+ <string name="keybase_message_fetching_data">Récupération de la preuve</string>
+ <string name="keybase_proof_succeeded">Cette preuve a été vérifiée !</string>
<string name="keybase_a_post">Un billet</string>
<string name="keybase_fetched_from">récupéré de</string>
<string name="keybase_for_the_domain">pour le domaine</string>
@@ -566,23 +553,21 @@
<string name="edit_key_error_add_identity">Ajouter au moins une identité !</string>
<string name="edit_key_error_add_subkey">Ajouter au moins une sous-clef !</string>
<!--Create key-->
- <string name="create_key_upload">Téléverser la clef vers le serveur de clefs</string>
+ <string name="create_key_upload">Synchroniser avec le nuage</string>
<string name="create_key_empty">Ce champ est exigé</string>
<string name="create_key_passphrases_not_equal">Les phrases de passe ne correspondent pas</string>
<string name="create_key_final_text">Vous avez saisie l\'identité suivante :</string>
<string name="create_key_final_robot_text">Créer une clef peut prendre du temps, prenez donc un café en attendant...</string>
<string name="create_key_rsa">(3 sous-clefs, RSA, 4096 bits)</string>
<string name="create_key_custom">(configuration personnalisée de la clef)</string>
- <string name="create_key_identity_text">Saisissez votre nom complet, votre adresse courriel et choisissez votre phrase de passe.</string>
- <string name="create_key_hint_full_name">Nom complet, p. ex. Marc-Olivier Lagacé</string>
<string name="create_key_edit">Changer la configuration de la clef</string>
<!--View key-->
<string name="view_key_revoked">Révoquée : la clef ne doit plus être utilisée !</string>
<string name="view_key_expired">Expirée : le contact doit prolonger la validité de la clef !</string>
<string name="view_key_expired_secret">Expirée : vous pouvez prolonger la validité de la clef en la modifiant !</string>
<string name="view_key_my_key">Ma clef</string>
- <string name="view_key_verified">Clef vérifiée</string>
- <string name="view_key_unverified">Non vérifiée : balayez le code QR pour vérifier la clef !</string>
+ <string name="view_key_verified">Confirmer la clef</string>
+ <string name="view_key_unverified">Non vérifiée : balayez le code QR pour confirmer la clef !</string>
<!--Navigation Drawer-->
<string name="nav_keys">Clefs</string>
<string name="nav_encrypt_decrypt">Chiffrer/déchiffrer</string>
@@ -685,7 +670,7 @@
<string name="msg_ip_uat_processing_image">Traitement de l\'attribut utilisateur de type image</string>
<string name="msg_ip_uat_processing_unknown">Traitement de l\'attribut utilisateur de type inconnu</string>
<string name="msg_ip_uat_cert_bad">Mauvais certificat rencontré !</string>
- <string name="msg_ip_uat_cert_error">Erreur lors du traitement du certificat !</string>
+ <string name="msg_ip_uat_cert_error">Erreur de traitement du certificat !</string>
<string name="msg_ip_uat_cert_nonrevoke">A déjà un certificat non-révocable, étape ignorée.</string>
<string name="msg_ip_uat_cert_old">Le certificat est plus ancien que le précédent, étape ignorée.</string>
<string name="msg_ip_uat_cert_new">Le certificat est plus récent, remplacement du précédent.</string>
@@ -703,7 +688,7 @@
<string name="msg_is">Importation de la clef secrète %s</string>
<string name="msg_is_db_exception">Erreur de base de données!</string>
<string name="msg_is_importing_subkeys">Traitement des sous-clefs secrètes</string>
- <string name="msg_is_error_io_exc">Erreur lors de l\'encodage du trousseau</string>
+ <string name="msg_is_error_io_exc">Erreur d\'encodage du trousseau</string>
<string name="msg_is_merge_public">Fusion des données importées dans le trousseau public existant</string>
<string name="msg_is_merge_secret">Fusion des données importées dans le trousseau public existant</string>
<string name="msg_is_merge_special">Fusion des données du trousseau public dans les auto-certificats</string>
@@ -725,7 +710,7 @@
<string name="msg_kc_error_dup_key">La sous-clef %s se présente deux fois dans le trousseau. Le trousseau est mal formé, pas d\'importation ! </string>
<string name="msg_kc_master">Traitement de la clef maîtresse</string>
<string name="msg_kc_master_bad_type">Suppression du certificat de clef maîtresse de type inconnu (%s)</string>
- <string name="msg_kc_master_bad_local">Suppression du certificat clef maîtresse ayant le drapeau « local »</string>
+ <string name="msg_kc_master_bad_local">Suppression du certificat de clef maîtresse ayant le drapeau « local »</string>
<string name="msg_kc_master_bad_err">Suppression du mauvais certificat de clef maîtresse</string>
<string name="msg_kc_master_bad_time">Suppression du certificat de révocation du trousseau ayant une estampille temporelle dans le futur</string>
<string name="msg_kc_master_bad_type_uid">Suppression du certificat de l\'ID utilisateur en mauvaise position</string>
@@ -774,7 +759,7 @@
<string name="msg_kc_uid_no_cert">Aucun auto-certificat valide trouvé pour l\'ID utilisateur « %s », qui est maintenant enlevé du trousseau</string>
<string name="msg_kc_uid_remove">Suppression de l\'ID utilisateur invalide « %s »</string>
<string name="msg_kc_uid_dup">Suppression de l\'ID d\'utilisateur en double « %s ». Le trousseau en contenait deux. Ceci pourrait entraîner des certificats manquants !</string>
- <string name="msg_kc_uid_warn_encoding">L\'ID utilisateur ne passe pas le test UTF-8 !</string>
+ <string name="msg_kc_uid_warn_encoding">L\'ID d\'utilisateur ne passe pas le test UTF-8 !</string>
<string name="msg_kc_uat_jpeg">Traitement de l\'attribut utilisateur de type JPEG</string>
<string name="msg_kc_uat_unknown">Traitement de l\'attribut utilisateur de type inconnu</string>
<string name="msg_kc_uat_bad_err">Suppression du mauvais auto-certificat pour l\'attribut utilisateur</string>
@@ -789,11 +774,11 @@
<string name="msg_kc_uat_revoke_old">Suppression de l\'auto-certificat périmé pour l\'attribut utilisateur</string>
<string name="msg_kc_uat_no_cert">Aucun auto-certificat valide trouvé pour l\'attribut utilisateur, qui est maintenant enlevé du trousseau</string>
<string name="msg_kc_uat_remove">Suppression de l\'attribut utilisateur invalide</string>
- <string name="msg_kc_uat_warn_encoding">L\'ID utilisateur ne passe pas le test UTF-8 !</string>
+ <string name="msg_kc_uat_warn_encoding">L\'ID d\'utilisateur ne passe pas le test UTF-8 !</string>
<!--Keyring merging log entries-->
<string name="msg_mg_error_secret_dummy">Une nouvelle sous-clef publique a été trouvée, mais la génération de sous-clef secrète factice n\'est pas prise en charge !</string>
<string name="msg_mg_error_heterogeneous">Il a été tenté de fusionner des trousseaux avec des empreintes différentes !</string>
- <string name="msg_mg_error_encode">Erreur fatale lors de l\'encodage de la signature !</string>
+ <string name="msg_mg_error_encode">Erreur fatale d\'encodage de la signature !</string>
<string name="msg_mg_public">Fusion vers le trousseau public %s</string>
<string name="msg_mg_secret">Fusion vers le trousseau secret %s</string>
<string name="msg_mg_new_subkey">Ajout de la nouvelle sous-clef %s</string>
@@ -854,7 +839,7 @@
<string name="msg_mf_uat_error_empty">L\'attribut utilisateur ne peut pas être vide !</string>
<string name="msg_mf_uat_add_image">Ajout de l\'attribut utilisateur de type image</string>
<string name="msg_mf_uat_add_unknown">Ajout de l\'attribut utilisateur de type inconnu</string>
- <string name="msg_mf_unlock_error">Erreur lors du déverrouillage du trousseau !</string>
+ <string name="msg_mf_unlock_error">Erreur de déverrouillage du trousseau !</string>
<string name="msg_mf_unlock">Déverrouillage du trousseau</string>
<!--Consolidate-->
<string name="msg_con">Consolidation de la base de données</string>
@@ -868,11 +853,11 @@
<string name="msg_con_critical_out">Fin de la phase critique</string>
<string name="msg_con_delete_public">Suppression du fichier de cache du trousseau public</string>
<string name="msg_con_delete_secret">Suppression du fichier de cache du trousseau secret</string>
- <string name="msg_con_error_db">Erreur lors de l\'ouverture de la base de données !</string>
- <string name="msg_con_error_io_public">Erreur E/S lors de l\'écriture des clefs publiques vers le cache !</string>
- <string name="msg_con_error_io_secret">Erreur E/S lors de l\'écriture des clefs secrètes vers le cache !</string>
- <string name="msg_con_error_public">Erreur lors de la réimportation des clefs publiques !</string>
- <string name="msg_con_error_secret">Erreur lors de la réimportation des clefs secrètes !</string>
+ <string name="msg_con_error_db">Erreur d\'ouverture de la base de données !</string>
+ <string name="msg_con_error_io_public">Erreur E/S d\'écriture des clefs publiques vers le cache !</string>
+ <string name="msg_con_error_io_secret">Erreur E/S d\'écriture des clefs secrètes vers le cache !</string>
+ <string name="msg_con_error_public">Erreur de réimportation des clefs publiques !</string>
+ <string name="msg_con_error_secret">Erreur de réimportation des clefs secrètes !</string>
<string name="msg_con_recover">Reprise du processus de consolidation</string>
<string name="msg_con_recursive">Consolidation récursive ignorée</string>
<string name="msg_con_recover_unknown">Reprise du processus de consolidation à partir d\'un état inconnu</string>
@@ -915,15 +900,16 @@
<string name="msg_dc_clear_meta_file">Nom de fichier : %s</string>
<string name="msg_dc_clear_meta_mime">Type MIME : %s</string>
<string name="msg_dc_clear_meta_size">Taille de fichier : %s</string>
- <string name="msg_dc_clear_meta_size_unknown">La taille de fichier est inconnue</string>
+ <string name="msg_dc_clear_meta_size_unknown">La taille du fichier est inconnue</string>
<string name="msg_dc_clear_meta_time">Heure de modification : %s</string>
<string name="msg_dc_clear_signature_bad">La vérification de la signature n\'est PAS CORRECTE !</string>
+ <string name="msg_dc_error_unsupported_hash_algo">Algorithme de hachage non pris en charge et potentiellement non sécurisé ! </string>
<string name="msg_dc_clear_signature_check">Vérification des données de signature</string>
<string name="msg_dc_clear_signature_ok">La vérification de la signature OK</string>
<string name="msg_dc_clear_signature">Enregistrement des données de signature pour plus tard</string>
<string name="msg_dc_clear">Traitement des données de texte en clair</string>
- <string name="msg_dc_error_bad_passphrase">Erreur lors du déverrouillage de la clef, phrase de passe erronée !</string>
- <string name="msg_dc_error_extract_key">Erreur inconnue lors du déverrouillage de la clef !</string>
+ <string name="msg_dc_error_bad_passphrase">Erreur de déverrouillage de la clef, phrase de passe erronée !</string>
+ <string name="msg_dc_error_extract_key">Erreur inconnue de déverrouillage de la clef !</string>
<string name="msg_dc_error_integrity_check">Erreur de vérification de l\'intégrité !</string>
<string name="msg_dc_error_integrity_missing">Vérification de l\'intégrité absente ! Ceci peut arriver car l\'application n\'est pas à jour, ou à cause d\'une attaque par mise à niveau inférieur.</string>
<string name="msg_dc_error_invalid_siglist">Aucune donnée de signature valide trouvée !</string>
@@ -933,7 +919,7 @@
<string name="msg_dc_error_pgp_exception">Une exception OpenPGP a été rencontrée durant l\'opération !</string>
<string name="msg_dc_integrity_check_ok">Vérification de l\'intégrité OK !</string>
<string name="msg_dc_ok_meta_only">Seules les métadonnées ont été demandées, déchiffrement ignoré</string>
- <string name="msg_dc_ok">OK</string>
+ <string name="msg_dc_ok">Déchiffrement/Vérification terminé</string>
<string name="msg_dc_pass_cached">Utilisation de la phrase de passe du cache</string>
<string name="msg_dc_pending_nfc">Jeton NFC exigé, demande de saisie à l\'utilisateur...</string>
<string name="msg_dc_pending_passphrase">Phrase de passe exigée, demande de saisie à l\'utilisateur...</string>
@@ -945,15 +931,25 @@
<string name="msg_dc_trail_sym">Des données traînantes chiffrées symétriquement ont été rencontrées</string>
<string name="msg_dc_trail_unknown">Des données traînantes de type inconnu ont été rencontrées</string>
<string name="msg_dc_unlocking">Déverrouillage de la clef secrète</string>
+ <string name="msg_dc_old_symmetric_encryption_algo">Un algorithme de chiffrement possiblement non sécurisé à été utilisé !</string>
<!--Messages for VerifySignedLiteralData operation-->
<string name="msg_vl">Lancement de la vérification de la signature</string>
+ <string name="msg_vl_error_no_siglist">Aucune liste de signatures dans les données littérales signées</string>
+ <string name="msg_vl_error_wrong_key">Le message n\'est pas signé avec la bonne clef</string>
+ <string name="msg_vl_clear_meta_file">Nom de fichier : %s</string>
+ <string name="msg_vl_clear_meta_mime">Type MIME : %s</string>
+ <string name="msg_vl_clear_meta_time">Heure de modification : %s</string>
+ <string name="msg_vl_clear_meta_size">Taille de fichier : %s</string>
+ <string name="msg_vl_clear_signature_check">Vérification des données de signature</string>
+ <string name="msg_vl_error_integrity_check">Erreur de vérification de l\'intégrité !</string>
+ <string name="msg_vl_ok">OK</string>
<!--Messages for SignEncrypt operation-->
<string name="msg_se">Début de l\'opération de signature/chiffrement</string>
<string name="msg_se_input_bytes">Traitement de l\'entrée du tableau de bytes</string>
<string name="msg_se_input_uri">Traitement de l\'entrée de l\'URI</string>
<string name="msg_se_error_no_input">Aucune entrée donnée !</string>
- <string name="msg_se_error_input_uri_not_found">Erreur lors de l\'ouverture de l\'URI en lecture !</string>
- <string name="msg_se_error_output_uri_not_found">Erreur lors de l\'ouverture de l\'URI en écriture !</string>
+ <string name="msg_se_error_input_uri_not_found">Erreur d\'ouverture de l\'URI en lecture !</string>
+ <string name="msg_se_error_output_uri_not_found">Erreur d\'ouverture de l\'URI en écriture !</string>
<string name="msg_se_error_too_many_inputs">Plus d\'entrées spécifiées que de sorties ! Ceci est probablement une erreur de programmation, veuillez remplir un rapport de bogue !</string>
<string name="msg_se_warn_output_left">Il reste des sorties mais pas d\'entrée. Ceci est probablement une erreur de programmation, veuillez remplir un rapport de bogue !</string>
<string name="msg_se_success">Opération de signature/chiffrement réussie</string>
@@ -966,12 +962,12 @@
<string name="msg_pse_error_hash_algo">L’algorithme de hachage demandé n\'est pas pris en charge par cette clef ! </string>
<string name="msg_pse_error_io">Une exception E/S a été rencontrée durant l\'opération !</string>
<string name="msg_pse_error_key_sign">La clef de signature choisie ne peut pas signer les données !</string>
- <string name="msg_pse_error_sign_key">Erreur lors de la récupération de la clef de signature !</string>
+ <string name="msg_pse_error_sign_key">Erreur de récupération de la clef de signature !</string>
<string name="msg_pse_error_nfc">Erreur de données NFC !</string>
<string name="msg_pse_error_no_passphrase">Aucune phrase de passe fournie !</string>
<string name="msg_pse_error_pgp">Erreur interne OpenPGP !</string>
<string name="msg_pse_error_sig">Une exception de signature OpenPGP a été rencontrée !</string>
- <string name="msg_pse_error_unlock">Erreur inconnue lors du déverrouillage de la clef !</string>
+ <string name="msg_pse_error_unlock">Erreur inconnue de déverrouillage de la clef !</string>
<string name="msg_pse_key_ok">Chiffrement pour la clef : %s</string>
<string name="msg_pse_key_unknown">Clef manquante pour le chiffrement : %s</string>
<string name="msg_pse_key_warn">Clef erronée pour le chiffrement : %s</string>
@@ -985,15 +981,10 @@
<string name="msg_pse">Début de l\'opération de signature et/ou de chiffrement</string>
<string name="msg_pse_symmetric">Préparation du chiffrement symétrique</string>
<string name="msg_crt_certifying">Générations des certifications</string>
- <string name="msg_crt_certify_all">Certification de tous les ID utilisateurs pour la clef %s</string>
- <plurals name="msg_crt_certify_some">
- <item quantity="one">Certification d\'un ID utilisateur pour la clef %2$s</item>
- <item quantity="other">Certification de %1$d ID utilisateurs pour la clef %2$s</item>
- </plurals>
<string name="msg_crt_error_self">Un auto-certificat ne peut pas être délivré ainsi !</string>
<string name="msg_crt_error_master_not_found">Clef maîtresse introuvable !</string>
<string name="msg_crt_error_nothing">Aucune clef certifiée !</string>
- <string name="msg_crt_error_unlock">Erreur lors du déverrouillage de la clef maîtresse !</string>
+ <string name="msg_crt_error_unlock">Erreur de déverrouillage de la clef maîtresse !</string>
<string name="msg_crt_error_divert">La certification par la NFC n\'est pas (encore) prise en charge !</string>
<string name="msg_crt">Certification des trousseaux</string>
<string name="msg_crt_master_fetch">Récupération de la clef maîtresse de certification</string>
@@ -1009,7 +1000,7 @@
<item quantity="one">Importation de la clef</item>
<item quantity="other">Importation de %d clefs</item>
</plurals>
- <string name="msg_import_fetch_error_decode">Erreur lors du décodage du trousseau récupéré !</string>
+ <string name="msg_import_fetch_error_decode">Erreur de décodage du trousseau récupéré !</string>
<string name="msg_import_fetch_error">La clef n\'a pas pu être récupérée ! (problèmes réseau ?)</string>
<string name="msg_import_fetch_keybase">Récupération depuis keybase.io : %s</string>
<string name="msg_import_fetch_keyserver_error">Impossible de récupérer la clef à partir de la base de clefs !</string>
@@ -1031,13 +1022,13 @@
<string name="msg_export_public">Exportation de la clef publique %s</string>
<string name="msg_export_secret">Exportation de la clef secrète %s</string>
<string name="msg_export_error_no_file">Aucun nom de fichier spécifié !</string>
- <string name="msg_export_error_fopen">Erreur lors de l\'ouverture du fichier !</string>
+ <string name="msg_export_error_fopen">Erreur d\'ouverture du fichier !</string>
<string name="msg_export_error_no_uri">Aucun URI spécifié !</string>
- <string name="msg_export_error_uri_open">Erreur lors de l\'ouverture du flux de l\'URI !</string>
+ <string name="msg_export_error_uri_open">Erreur d\'ouverture du flux de l\'URI !</string>
<string name="msg_export_error_storage">Le stockage n\'est pas prêt pour l\'écriture !</string>
<string name="msg_export_error_db">Erreur de base de données !</string>
<string name="msg_export_error_io">Erreur d\'entrée/sortie !</string>
- <string name="msg_export_error_key">Erreur lors du prétraitement des données de la clef !</string>
+ <string name="msg_export_error_key">Erreur de prétraitement des données de la clef !</string>
<string name="msg_export_success">Opération d\'exportation réussie !</string>
<string name="msg_del_error_empty">Rien à supprimer !</string>
<string name="msg_del_error_multi_secret">Les clefs secrètes ne peuvent être supprimées qu\'individuellement !</string>
@@ -1068,6 +1059,12 @@
<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_download_query_failed">Une erreur est survenue lors de la recherche de clefs.</string>
+ <!--Messages for Export Log operation-->
+ <string name="msg_export_log_start">Exportation du journal</string>
+ <string name="msg_export_log_error_fopen">Erreur d\'ouverture du fichier !</string>
+ <string name="msg_export_log_error_no_file">Aucun nom de fichier spécifié !</string>
+ <string name="msg_export_log_error_writing">Erreur E/S d\'écriture vers le fichier !</string>
+ <string name="msg_export_log_success">Journal exporté avec succès !</string>
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Cliquer ici pour effacer les phrases de passe mises en cache</string>
<string name="passp_cache_notif_n_keys">OpenKeychain a mis en cache %d phrases de passe</string>
@@ -1087,14 +1084,13 @@
<string name="empty_certs">Aucun certificat pour cette clef</string>
<string name="certs_text">Seuls les auto-certificats et les certificats validés créés avec vos clefs sont affichés ici.</string>
<string name="section_uids_to_certify">Identités pour</string>
- <string name="certify_text">Les clefs que vous importez contiennent des « identités » : des noms et des adresses courriel. Choisissez exactement ceux qui correspondent à ce que vous attendiez.</string>
+ <string name="certify_text">Les clefs que vous importez contiennent des « identités » : des noms et des adresses courriel. Pour la confirmation, choisissez exactement celles qui correspondent à ce que vous attendiez.</string>
<string name="certify_fingerprint_text">Comparez l\'empreinte affichée, caractère par caractère, à celle affichée sur l\'appareil de l\'autre personne.</string>
<string name="certify_fingerprint_text2">Est-ce que les empreintes affichées correspondent ?</string>
<string name="label_revocation">Raison de la révocation</string>
- <string name="label_verify_status">État de vérification</string>
<string name="label_cert_type">Type</string>
<string name="error_key_not_found">Clef introuvable !</string>
- <string name="error_key_processing">Erreur lors du traitement de la clef !</string>
+ <string name="error_key_processing">Erreur de traitement de la clef !</string>
<string name="key_stripped">dépouillée</string>
<string name="key_divert">dévier vers la carte intelligente/la NFC</string>
<string name="key_no_passphrase">aucune phrase de passe</string>
@@ -1139,4 +1135,5 @@
<string name="nfc_write_succesful">Écrit avec succès sur la balise NFC</string>
<string name="unlocked">Déverrouillé</string>
<string name="nfc_settings">Paramètres</string>
+ <string name="file_delete_successful"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-is/strings.xml b/OpenKeychain/src/main/res/values-is/strings.xml
index 233347bd3..518b80f47 100644
--- a/OpenKeychain/src/main/res/values-is/strings.xml
+++ b/OpenKeychain/src/main/res/values-is/strings.xml
@@ -59,6 +59,7 @@
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<!--First Time-->
<!--unsorted-->
diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml
index f55d16dfc..5de5a1579 100644
--- a/OpenKeychain/src/main/res/values-it/strings.xml
+++ b/OpenKeychain/src/main/res/values-it/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Seleziona chiavi</string>
<string name="title_select_secret_key">Seleziona la tua chiave</string>
- <string name="title_encrypt_text">Testo cifrato</string>
- <string name="title_encrypt_files">File cifrati</string>
<string name="title_decrypt">Decodifica</string>
<string name="title_add_subkey">Aggiungi Sottochiave</string>
<string name="title_edit_key">Modifica Chiave</string>
@@ -17,7 +15,6 @@
<string name="title_share_fingerprint_with">Condivi impronta con...</string>
<string name="title_share_key">Condividi chiave con...</string>
<string name="title_share_file">Condividi file con...</string>
- <string name="title_share_message">Condividi messaggio con...</string>
<string name="title_encrypt_to_file">Codifica File</string>
<string name="title_decrypt_to_file">Decodifica File</string>
<string name="title_import_keys">Importa Chiavi</string>
@@ -26,7 +23,6 @@
<string name="title_export_keys">Esporta Chiavi</string>
<string name="title_key_not_found">Chiave Non Trovata</string>
<string name="title_send_key">Carica sul Server delle Chiavi</string>
- <string name="title_certify_key">Certifica identità</string>
<string name="title_key_details">Dettagli Chiave</string>
<string name="title_help">Aiuto</string>
<string name="title_log_display">Registro</string>
@@ -41,20 +37,16 @@
<string name="section_defaults">Predefiniti</string>
<string name="section_advanced">Avanzato</string>
<string name="section_passphrase_cache">Cache Frase di Accesso</string>
- <string name="section_certify">Certifica</string>
<string name="section_actions">Azioni</string>
<string name="section_share_key">Chiave</string>
- <string name="section_certification_key">La Tua Chiave usata per la certificazione</string>
<string name="section_upload_key">Sincronizza Chiave</string>
<string name="section_key_server">Server delle Chiavi</string>
<string name="section_fingerprint">Impronta</string>
- <string name="section_key_to_certify">Chiave da certificare</string>
<string name="section_decrypt_files">Files</string>
<string name="section_decrypt_text">Testo</string>
<string name="section_certs">Certificati</string>
<!--button-->
<string name="btn_decrypt_verify_file">Decodifica, verifica e salva su file</string>
- <string name="btn_decrypt_verify_message">Decodifica e verifica messaggio</string>
<string name="btn_encrypt_file">Codifica e salva file</string>
<string name="btn_encrypt_share_file">Codifica e condividi file</string>
<string name="btn_save">Salva</string>
@@ -66,7 +58,6 @@
<string name="btn_next">Prossimo</string>
<string name="btn_back">Precedente</string>
<string name="btn_lookup_key">Chiave di ricerca</string>
- <string name="btn_share_encrypted_signed">Codifica e condividi messaggio</string>
<string name="btn_view_cert_key">Mostra chiave di certificazione</string>
<string name="btn_create_key">Crea chiave</string>
<string name="btn_add_files">Aggiungi file(s)</string>
@@ -89,7 +80,6 @@
<string name="menu_export_all_keys">Esporta tutte le chiavi</string>
<string name="menu_advanced">Mostra informazioni avanzate</string>
<!--label-->
- <string name="label_message">Messaggio</string>
<string name="label_file">File</string>
<string name="label_files">File(s)</string>
<string name="label_file_colon">File:</string>
@@ -112,7 +102,6 @@
<string name="label_hash_algorithm">Algoritmo Hash</string>
<string name="label_symmetric">Cifra con password</string>
<string name="label_passphrase_cache_subs">Memorizza password tramite sottochiave</string>
- <string name="label_message_compression">Compressione messaggio</string>
<string name="label_file_compression">Compressione file</string>
<string name="label_keyservers">Server Chiavi</string>
<string name="label_key_id">ID Chiave</string>
@@ -132,13 +121,6 @@
<string name="label_preferred">preferiti</string>
<string name="user_id_no_name">&lt;nessun nome&gt;</string>
<string name="none">&lt;nessuno&gt;</string>
- <string name="no_key">&lt;nessuna chiave&gt;</string>
- <string name="can_encrypt">puo\' codificare</string>
- <string name="can_sign">puo\' firmare</string>
- <string name="can_certify">può certificare</string>
- <string name="can_certify_not">non può certificare</string>
- <string name="expired">scaduto</string>
- <string name="revoked">revocato</string>
<plurals name="n_keys">
<item quantity="one">1 chiave</item>
<item quantity="other">%d chiavi</item>
@@ -168,7 +150,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Apri...</string>
- <string name="warning">Attenzione</string>
<string name="error">Errore</string>
<string name="error_message">Errore: %s</string>
<!--key flags-->
@@ -183,12 +164,9 @@
<string name="passphrase_must_not_be_empty">Si prega di inserire una frase di accesso.</string>
<string name="passphrase_for_symmetric_encryption">Codifica Simmetrica.</string>
<string name="passphrase_for">Inserisci la frase di accesso per \'%s\'</string>
- <string name="file_delete_confirmation">Sei sicuro di voler eliminare\n%s?</string>
- <string name="file_delete_successful">Eliminato correttamente.</string>
- <string name="no_file_selected">Seleziona un file prima.</string>
+ <string name="no_file_selected">Seleziona un file prima.</string>
<string name="encrypt_sign_successful">Firmato e/o codificato con successo.</string>
<string name="encrypt_sign_clipboard_successful">Firmato e/o codificato con successo negli appunti.</string>
- <string name="enter_passphrase_twice">Inserisci la frase di accesso due volte.</string>
<string name="select_encryption_key">Seleziona almeno una chiave di codifica.</string>
<string name="select_encryption_or_signature_key">Seleziona almeno una chiave di codifica o di firma.</string>
<string name="specify_file_to_encrypt_to">Perfavore specifica il file da codificare.
@@ -197,12 +175,6 @@ ATTENZIONE: Il file sara\' sovrascritto se esistente.</string>
ATTENZIONE: Il file sara\' sovrascritto se esistente.</string>
<string name="specify_file_to_export_to">Perfavore specifica il file da esportare.
ATTENZIONE: Il file sara\' sovrascritto se esistente.</string>
- <string name="key_deletion_confirmation_multi">Vuoi veramente eliminare tutte le chiavi pubbliche selezionate?
-Non potrai annullare!</string>
- <string name="secret_key_deletion_confirmation">Vuoi veramente eliminare la chiave PRIVATA \'%s\'?
-Non potrai annullare!</string>
- <string name="public_key_deletetion_confirmation">Vuoi veramente eliminare la chiave pubblica \'%s\'?
-Non potrai annullare!</string>
<string name="also_export_secret_keys">Esporta anche chiave segreta</string>
<string name="reinstall_openkeychain">Hai riscontrato un bug noto con Android. Si prega di reinstallare OpenKeychain se vuoi collegare i tuoi contatti con le chiavi.</string>
<string name="key_exported">1 chiave esportata correttamente.</string>
@@ -218,13 +190,11 @@ Non potrai annullare!</string>
<string name="nfc_successful">Chiave correttamente inviata tramite NFC Beam!</string>
<string name="key_copied_to_clipboard">Chiave copiata negli appunti!</string>
<string name="fingerprint_copied_to_clipboard">Impronta copiata negli appunti!</string>
- <string name="select_key_to_certify">Per favore seleziona una chiave per la certificazione!</string>
<string name="key_too_big_for_sharing">Chiave troppo grande per essere condivisa in questo modo!</string>
<string name="text_copied_to_clipboard">Il testo è stato copiato sulla lavagna!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">Cancellazione di \'%s\' fallita</string>
<string name="error_file_not_found">File non trovato</string>
<string name="error_no_secret_key_found">nessuna chiave privata adatta trovata</string>
<string name="error_external_storage_not_ready">memoria esterna non pronta</string>
@@ -305,8 +275,6 @@ Non potrai annullare!</string>
<string name="progress_con_saving">consolidazione: salvataggio della cache...</string>
<string name="progress_con_reimport">consolidazione: reimportazione...</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Nome/Email/ID Chiave...</string>
- <string name="hint_cloud_search_hint">Nome/Email/Certificato/Chiave...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -334,7 +302,6 @@ Non potrai annullare!</string>
<!--Help-->
<string name="help_tab_start">Inizia</string>
<string name="help_tab_faq">FAQ</string>
- <string name="help_tab_wot">Rete di Fiducia</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Novita\'</string>
<string name="help_tab_about">Info</string>
@@ -432,7 +399,6 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars
<string name="key_view_action_edit">Modifica chiave</string>
<string name="key_view_action_encrypt">Codifica Testo</string>
<string name="key_view_action_encrypt_files">documenti</string>
- <string name="key_view_action_certify">Certifica identità</string>
<string name="key_view_action_update">Aggiorna dal server delle chiavi</string>
<string name="key_view_action_share_with">Condividi con...</string>
<string name="key_view_action_share_nfc">Condividi tramite NFC</string>
@@ -475,15 +441,12 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars
<string name="edit_key_error_add_identity">Aggiungi almeno una identità</string>
<string name="edit_key_error_add_subkey">Aggiungi almeno una sottochiave!</string>
<!--Create key-->
- <string name="create_key_upload">Carica chiave nel server delle chiavi</string>
<string name="create_key_empty">Questo campo è necessario</string>
<string name="create_key_passphrases_not_equal">Le frasi di accesso non coincidono.</string>
<string name="create_key_final_text">Hai inserito la seguente identità:</string>
<string name="create_key_final_robot_text">La creazione di una chiave richiede un po\' di tempo, prendi un caffè nel frattempo...</string>
<string name="create_key_rsa">(3 sottochiavi, RSA, 4096 bit)</string>
<string name="create_key_custom">(personalizza la configurazione della chiave)</string>
- <string name="create_key_identity_text">Inserisci Nome Completo, Email e scegli una Frase di Accesso.</string>
- <string name="create_key_hint_full_name">Nome completo, es: Mario Rossi</string>
<string name="create_key_edit">Cambia configurazione della chiave</string>
<!--View key-->
<!--Navigation Drawer-->
@@ -597,7 +560,6 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars
<string name="msg_kc_sub">Elaborazione sottochiave %s</string>
<string name="msg_kc_sub_bad">Rimozione certificato vincolante di sottochiave non valido</string>
<string name="msg_kc_sub_bad_err">Rimozione certificato vincolante di sottochiave corrotto</string>
- <string name="msg_kc_sub_bad_local">Rimozione certificato di sottochiave con caratteristica \"locale\"</string>
<string name="msg_kc_sub_bad_keyid">ID emittente vincolante della sottochiave non corrispondente</string>
<string name="msg_kc_sub_bad_time">Rimozione certificato vincolante della sottochiave con marca temporale futura</string>
<string name="msg_kc_sub_bad_type">Tipo di certificato della sottochiave sconosciuto: %s</string>
@@ -695,14 +657,12 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars
<!--Messages for DecryptVerify operation-->
<string name="msg_dc_clear_meta_file">Nome file: %s</string>
<string name="msg_dc_clear_meta_mime">Tipo MIME: %s</string>
- <string name="msg_dc_clear_meta_size">Dimensione file: %s</string>
<string name="msg_dc_clear_meta_time">Ultima modifica: %s</string>
<string name="msg_dc_clear_signature_bad">Controllo firma NON OK!</string>
<string name="msg_dc_clear_signature_check">Verifica dati firma</string>
<string name="msg_dc_clear_signature_ok">Controllo firma OK</string>
<string name="msg_dc_error_integrity_check">Errore di controllo di integrità!</string>
<string name="msg_dc_integrity_check_ok">Controllo integrità OK!</string>
- <string name="msg_dc_ok">OK</string>
<string name="msg_dc_pass_cached">Uso della frase di accesso dalla cache</string>
<string name="msg_dc">Inizio operazione di decodifica...</string>
<string name="msg_dc_sym_skip">Dati simmetrici non permessi, proseguo...</string>
@@ -720,6 +680,7 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars
<item quantity="one">parte del file caricato e\' un oggetto OpenPGP valido, ma non una chave OpenPGP</item>
<item quantity="other">parti del file caricato sono oggetti OpenPGP validi, ma non chavi OpenPGP</item>
</plurals>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Clicca per rimuovere la frase di accesso nella cache</string>
<string name="passp_cache_notif_n_keys">OpenKeychain ha memorizzato nella cache %d frasi di accesso</string>
@@ -737,7 +698,6 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars
<string name="unknown_uid">&lt;sconosciuto&gt;</string>
<string name="empty_certs">Nessun certificato per questa chiave</string>
<string name="label_revocation">Ragione della Revoca</string>
- <string name="label_verify_status">Stato Verifica</string>
<string name="label_cert_type">Tipo</string>
<string name="error_key_not_found">Chiave non trovata!</string>
<string name="error_key_processing">Errore di elaborazione chiave!</string>
@@ -754,7 +714,8 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars
<string name="error_no_file_selected">Seleziona almeno un file da codificare!</string>
<string name="error_multi_not_supported">Il salvataggio di più file non è supportato. Questa è una limitazione corrente di Android.</string>
<string name="key_colon">Chiave:</string>
- <!--Passphrase wizard-->
+ <string name="file_delete_successful"></string>
+ <!--Passphrase wizard-->
<!--TODO: rename all the things!-->
<!--<string name="enter_passphrase_twice">Enter passphrase twice</string>-->
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml
index ef817f398..183938811 100644
--- a/OpenKeychain/src/main/res/values-ja/strings.xml
+++ b/OpenKeychain/src/main/res/values-ja/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">鍵を選択</string>
<string name="title_select_secret_key">あなたの鍵を選択</string>
- <string name="title_encrypt_text">テキスト暗号化</string>
- <string name="title_encrypt_files">ファイル暗号化</string>
<string name="title_decrypt">復号化</string>
<string name="title_unlock">鍵のロック解除</string>
<string name="title_add_subkey">副鍵の追加</string>
@@ -20,7 +18,6 @@
<string name="title_share_fingerprint_with">...で指紋の共有</string>
<string name="title_share_key">...で鍵の共有</string>
<string name="title_share_file">...でファイルの共有</string>
- <string name="title_share_message">...でメッセージを共有</string>
<string name="title_encrypt_to_file">暗号化してファイルに</string>
<string name="title_decrypt_to_file">復号化してファイルに</string>
<string name="title_import_keys">鍵のインポート</string>
@@ -29,7 +26,7 @@
<string name="title_export_keys">複数鍵のエクスポート</string>
<string name="title_key_not_found">鍵が見当りません</string>
<string name="title_send_key">鍵サーバへアップロード</string>
- <string name="title_certify_key">ユーザID検証</string>
+ <string name="title_certify_key">鍵の確認</string>
<string name="title_key_details">鍵の概要</string>
<string name="title_help">ヘルプ</string>
<string name="title_log_display">ログ</string>
@@ -37,30 +34,34 @@
<string name="title_exchange_keys">鍵の交換</string>
<string name="title_advanced_key_info">鍵の詳細情報</string>
<string name="title_keys">鍵</string>
+ <string name="title_delete_secret_key">あなたの鍵 \'%s\' を削除しますか?</string>
+ <string name="title_export_log">エクスポートログ</string>
<!--section-->
<string name="section_user_ids">ユーザID</string>
+ <string name="section_should_you_trust">この鍵を信頼しますか?</string>
+ <string name="section_proof_details">証明検証</string>
+ <string name="section_cloud_evidence">クラウドからの証明</string>
<string name="section_keys">副鍵</string>
<string name="section_cloud_search">クラウド検索</string>
<string name="section_general">一般</string>
<string name="section_defaults">デフォルト</string>
<string name="section_advanced">拡張</string>
<string name="section_passphrase_cache">パスフレーズキャッシュ</string>
- <string name="section_certify">検証</string>
+ <string name="section_certify">確認</string>
<string name="section_actions">アクション</string>
<string name="section_share_key">鍵</string>
- <string name="section_certification_key">あなたの鍵を証明に利用します</string>
<string name="section_upload_key">鍵の同期</string>
<string name="section_key_server">鍵サーバ</string>
<string name="section_fingerprint">指紋</string>
- <string name="section_key_to_certify">鍵は検証されています。</string>
<string name="section_decrypt_files">ファイル</string>
<string name="section_decrypt_text">テキスト</string>
<string name="section_certs">証明</string>
<string name="section_encrypt">暗号化</string>
<string name="section_decrypt">復号化</string>
+ <string name="section_current_expiry">現在の期限</string>
+ <string name="section_new_expiry">新しい期限</string>
<!--button-->
<string name="btn_decrypt_verify_file">復号化と検証、そしてファイルの保存</string>
- <string name="btn_decrypt_verify_message">メッセージの復号化と検証</string>
<string name="btn_encrypt_file">暗号化してファイルを保存</string>
<string name="btn_encrypt_share_file">暗号化してファイルを共有</string>
<string name="btn_save">保存</string>
@@ -72,9 +73,8 @@
<string name="btn_next">次</string>
<string name="btn_back">戻る</string>
<string name="btn_no">なし</string>
- <string name="btn_match">指紋が一致</string>
+ <string name="btn_match">指紋一致</string>
<string name="btn_lookup_key">鍵検出</string>
- <string name="btn_share_encrypted_signed">暗号化してメッセージを共有</string>
<string name="btn_view_cert_key">検証した鍵を見る</string>
<string name="btn_create_key">鍵の生成</string>
<string name="btn_add_files">ファイルの追加</string>
@@ -101,9 +101,9 @@
<string name="menu_search_cloud">クラウドを検索</string>
<string name="menu_export_all_keys">すべての鍵のエクスポート</string>
<string name="menu_advanced">詳細情報を表示</string>
- <string name="menu_certify_fingerprint">指紋比較による検証</string>
+ <string name="menu_certify_fingerprint">指紋比較による確認</string>
+ <string name="menu_export_log">エクスポートログ</string>
<!--label-->
- <string name="label_message">メッセージ</string>
<string name="label_file">ファイル</string>
<string name="label_files">ファイル</string>
<string name="label_file_colon">ファイル:</string>
@@ -128,7 +128,6 @@
<string name="label_symmetric">パスフレーズで暗号化</string>
<string name="label_passphrase_cache_ttl">キャッシュ時間</string>
<string name="label_passphrase_cache_subs">副鍵のパスフレーズをキャッシュ</string>
- <string name="label_message_compression">メッセージの圧縮</string>
<string name="label_file_compression">ファイルの圧縮</string>
<string name="label_keyservers">鍵サーバ</string>
<string name="label_key_id">鍵ID</string>
@@ -146,15 +145,9 @@
<string name="expiry_date_dialog_title">期限日時を設定</string>
<string name="label_first_keyserver_is_used">(リストの最初の鍵サーバが優先されます)</string>
<string name="label_preferred">優先</string>
+ <string name="label_enable_compression">圧縮を有効</string>
<string name="user_id_no_name">&lt;名前なし&gt;</string>
<string name="none">&lt;無し&gt;</string>
- <string name="no_key">&lt;鍵無し&gt;</string>
- <string name="can_encrypt">暗号化可能</string>
- <string name="can_sign">署名可能</string>
- <string name="can_certify">検証可能</string>
- <string name="can_certify_not">検証不能</string>
- <string name="expired">期限切れ</string>
- <string name="revoked">破棄</string>
<plurals name="n_keys">
<item quantity="other">%d個の鍵</item>
</plurals>
@@ -182,7 +175,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">開く...</string>
- <string name="warning">注意</string>
<string name="error">エラー</string>
<string name="error_message">エラー: %s</string>
<!--key flags-->
@@ -200,13 +192,9 @@
<string name="pin_for">\'%s\' にPINを入力してください</string>
<string name="yubikey_pin_for">\'%s\' の Yubikey にアクセスするためのPINを入力してください</string>
<string name="nfc_text">あなたのデバイスの背面にYubiKeyを固定してください。</string>
- <string name="file_delete_confirmation">%s
-を削除してもかまいませんか?</string>
- <string name="file_delete_successful">削除に成功しました。</string>
- <string name="no_file_selected">最初にファイルを選択してください。</string>
+ <string name="no_file_selected">最初にファイルを選択してください。</string>
<string name="encrypt_sign_successful">署名/暗号化に成功しました。</string>
<string name="encrypt_sign_clipboard_successful">クリップボードの中身の署名/暗号化に成功しました。</string>
- <string name="enter_passphrase_twice">もう一度パスフレーズを入れてください。</string>
<string name="select_encryption_key">少なくとも1つの暗号化鍵を選択して下さい。</string>
<string name="select_encryption_or_signature_key">少なくとも1つの暗号化鍵か署名鍵を選択して下さい。</string>
<string name="specify_file_to_encrypt_to">どのファイルを暗号化するか決めてください。
@@ -215,12 +203,7 @@
注意: 既存のファイルがあると上書きされます。</string>
<string name="specify_file_to_export_to">どのファイルをエクスポートするか決めてください。
注意: 既存のファイルがあると上書きされます。</string>
- <string name="key_deletion_confirmation_multi">選択したすべての公開鍵を削除して本当に良いのですか?
-これは元に戻せません!</string>
- <string name="secret_key_deletion_confirmation">秘密鍵\'%s\'を本当に削除してもよいですか?
-これは元に戻せません!</string>
- <string name="public_key_deletetion_confirmation">公開鍵\'%s\'を本当に削除してもよいですか?
-これは元に戻せません!</string>
+ <string name="public_key_deletetion_confirmation">鍵 \'%s\' を削除しますか?</string>
<string name="also_export_secret_keys">秘密鍵もエクスポートします</string>
<string name="reinstall_openkeychain">あなたは既知のAndroidのバグに遭遇しました。もし鍵とあなたの連絡先をリンクさせたいならOpenKeychainを再インストールしてください。</string>
<string name="key_exported">1つの鍵をエクスポートしました。</string>
@@ -239,13 +222,12 @@
<string name="nfc_successful">NFCビームで鍵を送信しました!</string>
<string name="key_copied_to_clipboard">鍵はクリップボードにコピーされました!</string>
<string name="fingerprint_copied_to_clipboard">指紋はクリップボードにコピーされました!</string>
- <string name="select_key_to_certify">検証に使う鍵を選択して下さい!</string>
+ <string name="select_key_to_certify">確認に使う鍵を選択して下さい!</string>
<string name="key_too_big_for_sharing">この共有方法では鍵が大きすぎます!</string>
<string name="text_copied_to_clipboard">鍵はクリップボードにコピーされました!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">\'%s\' の削除に失敗</string>
<string name="error_file_not_found">ファイルが見付かりません</string>
<string name="error_no_secret_key_found">組になっている秘密鍵が見付かりません</string>
<string name="error_external_storage_not_ready">外部ストレージが準備できていません</string>
@@ -331,8 +313,7 @@
<string name="progress_con_saving">統合: キャッシュへ保存…</string>
<string name="progress_con_reimport">統合: 再インポート中…</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">名前/メール/鍵ID...</string>
- <string name="hint_cloud_search_hint">名前/メール/証明/鍵...</string>
+ <string name="hint_cloud_search_hint">名前、Email...で検索</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -360,7 +341,7 @@
<!--Help-->
<string name="help_tab_start">開始</string>
<string name="help_tab_faq">FAQ</string>
- <string name="help_tab_wot">信頼の輪</string>
+ <string name="help_tab_wot">鍵確認</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Changelog</string>
<string name="help_tab_about">これについて</string>
@@ -482,7 +463,7 @@
<string name="key_view_action_edit">鍵の編集</string>
<string name="key_view_action_encrypt">テキスト暗号化</string>
<string name="key_view_action_encrypt_files">ファイル</string>
- <string name="key_view_action_certify">ユーザID検証</string>
+ <string name="key_view_action_certify">鍵の確認</string>
<string name="key_view_action_update">鍵サーバからの更新</string>
<string name="key_view_action_share_with">...で共有</string>
<string name="key_view_action_share_nfc">NFC越しに共有</string>
@@ -491,6 +472,7 @@
<string name="key_view_tab_share">共有</string>
<string name="key_view_tab_keys">副鍵</string>
<string name="key_view_tab_certs">証明</string>
+ <string name="key_view_tab_keybase">Keybase.io</string>
<string name="user_id_info_revoked_title">破棄</string>
<string name="user_id_info_revoked_text">このIDは鍵の所有者により破棄されています。もう適正ではありません。</string>
<string name="user_id_info_certified_title">検証済み</string>
@@ -500,7 +482,28 @@
<string name="user_id_info_invalid_title">無効</string>
<string name="user_id_info_invalid_text">このIDではなにかしら問題があります!</string>
<!--Key trust-->
+ <string name="key_trust_already_verified">鍵はすでに確認されています!</string>
+ <string name="key_trust_it_is_yours">これはあなたの鍵の内のひとつです!</string>
+ <string name="key_trust_revoked">このIDは鍵の所有者により破棄されています。信頼することはできません。</string>
+ <string name="key_trust_expired">この鍵は期限切れです。信頼することができません。</string>
+ <string name="key_trust_start_cloud_search">検索開始</string>
<!--keybase proof stuff-->
+ <string name="keybase_narrative_twitter">Twitterへ以下のIDで投稿</string>
+ <string name="keybase_narrative_github">Githubでは以下のIDで知られています</string>
+ <string name="keybase_narrative_dns">制御下にあるドメイン名(たち)</string>
+ <string name="keybase_narrative_reddit">Redditへ以下のIDで投稿</string>
+ <string name="keybase_narrative_coinbase">Coinbaseでは以下で知られています</string>
+ <string name="keybase_narrative_hackernews">Hacker Newsへ以下のIDで投稿</string>
+ <string name="keybase_narrative_unknown">不明な確認種別</string>
+ <string name="keybase_problem_fetching_evidence">確認に問題があります</string>
+ <string name="keybase_dns_query_failure">DNS TXTレコードの確認に失敗</string>
+ <string name="keybase_proof_succeeded">この証明は検証されています!</string>
+ <string name="keybase_twitter_proof">ツィート</string>
+ <string name="keybase_dns_proof">DNSのTXTレコード</string>
+ <string name="keybase_web_site_proof">テキストファイル</string>
+ <string name="keybase_github_proof">gist</string>
+ <string name="keybase_reddit_proof">JSONファイル</string>
+ <string name="keybase_verify">検証</string>
<!--Edit key-->
<string name="edit_key_action_change_passphrase">パスフレーズの変更</string>
<string name="edit_key_action_add_identity">ユーザIDの追加</string>
@@ -525,23 +528,19 @@
<string name="edit_key_error_add_identity">最低でも1つのユーザIDを追加!</string>
<string name="edit_key_error_add_subkey">最低でも1つの副鍵を追加!</string>
<!--Create key-->
- <string name="create_key_upload">鍵サーバへアップロード</string>
+ <string name="create_key_upload">クラウドとの同期</string>
<string name="create_key_empty">このフィールドは必須です</string>
<string name="create_key_passphrases_not_equal">パスフレーズが一致しない</string>
<string name="create_key_final_text">あたなが入力したIDは以下です:</string>
<string name="create_key_final_robot_text">しばらくの間鍵を生成しています、その間はコーヒーでもどうぞ....</string>
<string name="create_key_rsa">(3副鍵、RSA, 4096 bit)</string>
<string name="create_key_custom">(個別の鍵設定)</string>
- <string name="create_key_identity_text">フルネーム、Eメールアドレスを入力そしてパスフレーズを選択してください。</string>
- <string name="create_key_hint_full_name">フルネーム、例えば Max Mustermann</string>
<string name="create_key_edit">鍵の設定変更</string>
<!--View key-->
<string name="view_key_revoked">破棄: 鍵はもう使われません!</string>
- <string name="view_key_expired">期限切れ: この連絡先は鍵の妥当性を拡張する必要があります!</string>
<string name="view_key_expired_secret">期限切れ: 編集で鍵の妥当性を拡張することができます!</string>
<string name="view_key_my_key">自分の鍵</string>
- <string name="view_key_verified">検証済みの鍵</string>
- <string name="view_key_unverified">未検証: QRコードをスキャンして鍵を検証!</string>
+ <string name="view_key_verified">確認済みの鍵</string>
<!--Navigation Drawer-->
<string name="nav_keys">鍵</string>
<string name="nav_encrypt_decrypt">暗号化/復号化</string>
@@ -693,7 +692,6 @@
<string name="msg_kc_sub">副鍵 %s の処理中</string>
<string name="msg_kc_sub_bad">証明が付随する無効な副鍵を破棄中</string>
<string name="msg_kc_sub_bad_err">証明が付随する問題のある副鍵を破棄中</string>
- <string name="msg_kc_sub_bad_local">ローカルフラグ付きの証明が付随する副鍵を破棄中</string>
<string name="msg_kc_sub_bad_keyid">副鍵の発行者のIDと付随するIDがミスマッチ</string>
<string name="msg_kc_sub_bad_time">未来にタイムスタンプがある証明が付随する副鍵を破棄中</string>
<string name="msg_kc_sub_bad_type">不明な検証のタイプ: %sの副鍵</string>
@@ -728,7 +726,7 @@
<string name="msg_kc_uid_no_cert">ユーザID \'%s\' の正常な自己署名が見付かりませんでした、鍵輪から除去しました</string>
<string name="msg_kc_uid_remove">無効なユーザID \'%s\' を破棄中</string>
<string name="msg_kc_uid_dup">重複したユーザID \'%s\' を削除中。IDを二つもっています。この結果は署名を失っているためかもしれません!</string>
- <string name="msg_kc_uid_warn_encoding">ユーザIDがUTF-8で検証できませんでした!</string>
+ <string name="msg_kc_uid_warn_encoding">ユーザIDをUTF-8として検証できませんでした!</string>
<string name="msg_kc_uat_jpeg">JPEG型のユーザー属性の処理中</string>
<string name="msg_kc_uat_unknown">不明な型のユーザー属性の処理中</string>
<string name="msg_kc_uat_bad_err">ユーザ属性で問題のある自己検証を破棄中</string>
@@ -743,7 +741,7 @@
<string name="msg_kc_uat_revoke_old">ユーザ属性の期限の切れた破棄証明を破棄中</string>
<string name="msg_kc_uat_no_cert">ユーザー属性として正常な自己署名が見付かりませんでした、鍵輪から除去しました</string>
<string name="msg_kc_uat_remove">無効なユーザ属性を破棄中</string>
- <string name="msg_kc_uat_warn_encoding">ユーザIDがUTF-8として検証できませんでした!</string>
+ <string name="msg_kc_uat_warn_encoding">ユーザIDをUTF-8として検証できませんでした!</string>
<!--Keyring merging log entries-->
<string name="msg_mg_error_secret_dummy">新しい公開鍵の副鍵を見付けました、しかしダミー生成の秘密鍵の副鍵でサポートされません。!</string>
<string name="msg_mg_error_heterogeneous">指紋が異なる鍵輪をマージしようとしています!</string>
@@ -870,6 +868,7 @@
<string name="msg_dc_clear_meta_size_unknown">ファイルサイズが不明</string>
<string name="msg_dc_clear_meta_time">更新日時: %s</string>
<string name="msg_dc_clear_signature_bad">署名の確認がOKではありません!</string>
+ <string name="msg_dc_error_unsupported_hash_algo">サポート外かつセキュアでない可能性があるハッシュアルゴリズム!</string>
<string name="msg_dc_clear_signature_check">署名データの検証中</string>
<string name="msg_dc_clear_signature_ok">署名の確認はOKです</string>
<string name="msg_dc_clear_signature">後程署名データを保存します</string>
@@ -885,7 +884,7 @@
<string name="msg_dc_error_pgp_exception">操作中にPGP例外に当たりました!</string>
<string name="msg_dc_integrity_check_ok">完全性チェックOK!</string>
<string name="msg_dc_ok_meta_only">メタデータだけが要求され、暗号化をスキップしました</string>
- <string name="msg_dc_ok">OK</string>
+ <string name="msg_dc_ok">復号化/検証完了</string>
<string name="msg_dc_pass_cached">キャッシュからパスフレーズを利用します。</string>
<string name="msg_dc_pending_nfc">NFCトークンが必要、ユーザー入力を要求中...</string>
<string name="msg_dc_pending_passphrase">パスフレーズが必要、ユーザー入力を要求中...</string>
@@ -897,14 +896,21 @@
<string name="msg_dc_trail_sym">追跡で遭遇、対称暗号化されたデータ</string>
<string name="msg_dc_trail_unknown">追跡で未知のタイプのデータに遭遇</string>
<string name="msg_dc_unlocking">秘密鍵のロック解除</string>
+ <string name="msg_dc_old_symmetric_encryption_algo">セキュアでない可能性がある暗号化アルゴリズムが利用されています!</string>
<!--Messages for VerifySignedLiteralData operation-->
+ <string name="msg_vl">署名の確認開始</string>
+ <string name="msg_vl_error_missing_literal">署名済み固定データにペイロードがありません</string>
+ <string name="msg_vl_clear_meta_file">ファイル名: %s</string>
+ <string name="msg_vl_clear_meta_mime">MIME種別: %s</string>
+ <string name="msg_vl_clear_meta_time">更新日時: %s</string>
+ <string name="msg_vl_clear_meta_size">ファイルサイズ: %s</string>
+ <string name="msg_vl_clear_signature_check">署名データの検証中</string>
+ <string name="msg_vl_error_integrity_check">完全性チェックエラー!</string>
+ <string name="msg_vl_ok">OK</string>
<!--Messages for SignEncrypt operation-->
<string name="msg_se">署名/暗号化操作を開始します</string>
<string name="msg_se_input_bytes">バイト配列からの入力処理中</string>
- <string name="msg_se_input_uri">URIからの入力処理中</string>
<string name="msg_se_error_no_input">入力がありません!</string>
- <string name="msg_se_error_input_uri_not_found">読み出すためにURIを開く時にエラー!</string>
- <string name="msg_se_error_output_uri_not_found">書き込むためにURIを開く時にエラー!</string>
<string name="msg_se_error_too_many_inputs">不明な出力以上の入力過多です! これはプログラミングのエラーで、バグレポートの提出をお願いします!</string>
<string name="msg_se_warn_output_left">得られた出力が入力から乖離している。これはプログラミングのエラーで、バグレポートの提出をお願いします!</string>
<string name="msg_se_success">署名/暗号化操作に成功!</string>
@@ -936,10 +942,6 @@
<string name="msg_pse">署名/暗号化操作を開始します</string>
<string name="msg_pse_symmetric">対称暗号の準備</string>
<string name="msg_crt_certifying">検証の生成中</string>
- <string name="msg_crt_certify_all">鍵 %s ですべてのユーザIDの検証中</string>
- <plurals name="msg_crt_certify_some">
- <item quantity="other">鍵 %2$s で %1$d 個のユーザIDの検証中</item>
- </plurals>
<string name="msg_crt_error_self">自己証明書的な発行は行えません!</string>
<string name="msg_crt_error_master_not_found">主鍵が見当りません!</string>
<string name="msg_crt_error_nothing">検証できた鍵がない!</string>
@@ -1012,6 +1014,12 @@
<string name="msg_download_too_many_responses">鍵検索のクエリが沢山の候補を返しました。クエリを精密化してください!</string>
<string name="msg_download_query_too_short_or_too_many_responses">鍵がまったく無いか、多すぎる鍵が見付かりました。クエリを改善してください!</string>
<string name="msg_download_query_failed">鍵の検索時にエラーが発生しました。</string>
+ <!--Messages for Export Log operation-->
+ <string name="msg_export_log_start">ログのエクスポート</string>
+ <string name="msg_export_log_error_fopen">ファイルオープン中のエラー</string>
+ <string name="msg_export_log_error_no_file">指定のファイル名のファイルはありません!</string>
+ <string name="msg_export_log_error_writing">ファイルへの書き込みでI/Oエラー!</string>
+ <string name="msg_export_log_success">ログのエクスポートに成功しました!</string>
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">クリックしてパスフレーズのキャッシュをクリア</string>
<string name="passp_cache_notif_n_keys">OpenKeychainは %d のパスフレーズをキャッシュしています</string>
@@ -1031,11 +1039,9 @@
<string name="empty_certs">この鍵に証明がない</string>
<string name="certs_text">あなたの検証された自己証明とあなたの鍵で生成された証明がここに表示されます</string>
<string name="section_uids_to_certify">ユーザID</string>
- <string name="certify_text">インポートした鍵には\"アイデンティティ\": 名前とメールアドレス を含みます。正確に期待したものと一致しているか認定されているものを選択します。</string>
<string name="certify_fingerprint_text">表示している指紋を、文字対文字で、あなたのパートナーの表示しているものと比較</string>
<string name="certify_fingerprint_text2">表示している指紋は一致しましたか?</string>
<string name="label_revocation">破棄の理由</string>
- <string name="label_verify_status">検証ステータス</string>
<string name="label_cert_type">種別</string>
<string name="error_key_not_found">鍵が見当りません!</string>
<string name="error_key_processing">鍵処理中のエラー!</string>
@@ -1084,4 +1090,5 @@
<string name="nfc_write_succesful">NFCタグに書けました!</string>
<string name="unlocked">アンロック</string>
<string name="nfc_settings">設定</string>
+ <string name="file_delete_successful"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml
index f8ee75750..0d3cb0094 100644
--- a/OpenKeychain/src/main/res/values-nl/strings.xml
+++ b/OpenKeychain/src/main/res/values-nl/strings.xml
@@ -6,8 +6,8 @@
<!--title-->
<string name="title_select_recipients">Selecteer sleutels</string>
<string name="title_select_secret_key">Selecteer je sleutel</string>
- <string name="title_encrypt_text">Versleutel tekst</string>
- <string name="title_encrypt_files">Versleutel bestanden</string>
+ <string name="title_encrypt_text">Versleutelen</string>
+ <string name="title_encrypt_files">Versleutelen</string>
<string name="title_decrypt">Ontsleutelen</string>
<string name="title_unlock">Ontgrendel sleutel</string>
<string name="title_add_subkey">Voeg subsleutel toe</string>
@@ -20,7 +20,7 @@
<string name="title_share_fingerprint_with">Vingerafdruk delen met…</string>
<string name="title_share_key">Sleutel delen met…</string>
<string name="title_share_file">Bestand delen met…</string>
- <string name="title_share_message">Bericht delen met…</string>
+ <string name="title_share_message">Tekst delen met…</string>
<string name="title_encrypt_to_file">Versleutelen naar bestand</string>
<string name="title_decrypt_to_file">Ontsleutelen naar bestand</string>
<string name="title_import_keys">Sleutels importeren</string>
@@ -29,7 +29,7 @@
<string name="title_export_keys">Sleutels exporteren</string>
<string name="title_key_not_found">Sleutel niet gevonden</string>
<string name="title_send_key">Upload naar sleutelserver</string>
- <string name="title_certify_key">Certifieer Identiteiten</string>
+ <string name="title_certify_key">Sleutel bevestigen</string>
<string name="title_key_details">Sleutel Details</string>
<string name="title_help">Help</string>
<string name="title_log_display">Log</string>
@@ -37,35 +37,38 @@
<string name="title_exchange_keys">Sleutels uitwisselen</string>
<string name="title_advanced_key_info">Geavanceerde sleutelinfo</string>
<string name="title_keys">Sleutels</string>
+ <string name="title_delete_secret_key">JOUW sleutel \'%s\' verwijderen?</string>
+ <string name="title_export_log">Log exporteren</string>
<!--section-->
<string name="section_user_ids">Identiteiten</string>
<string name="section_should_you_trust">Zou je deze sleutel vertrouwen?</string>
<string name="section_proof_details">Bewijs van verificatie</string>
- <string name="section_cloud_evidence">Bewijs van de cloud</string>
+ <string name="section_cloud_evidence">Bewijzen van de cloud</string>
<string name="section_keys">Subsleutels</string>
<string name="section_cloud_search">Cloud zoeken</string>
<string name="section_general">Algemeen</string>
<string name="section_defaults">Standaard</string>
<string name="section_advanced">Geavanceerd</string>
<string name="section_passphrase_cache">Wachtwoordcache</string>
- <string name="section_certify">Certificeren</string>
+ <string name="section_certify">Bevestigen</string>
<string name="section_actions">Acties</string>
<string name="section_share_key">Sleutel</string>
- <string name="section_certification_key">Uw Sleutel die u gebruikt voor certificatie</string>
<string name="section_upload_key">Synchroniseer sleutel</string>
<string name="section_key_server">Sleutelserver</string>
<string name="section_fingerprint">Vingerafdruk</string>
- <string name="section_key_to_certify">Sleutel om te certificeren</string>
<string name="section_decrypt_files">Bestanden</string>
<string name="section_decrypt_text">Tekst</string>
<string name="section_certs">Certificaten</string>
<string name="section_encrypt">Versleutelen</string>
<string name="section_decrypt">Ontsleutelen</string>
+ <string name="section_current_expiry">Huidige verloopdatum</string>
+ <string name="section_new_expiry">Nieuwe verloopdatum</string>
<!--button-->
<string name="btn_decrypt_verify_file">Decodeer, verifiëer en sla bestand op</string>
- <string name="btn_decrypt_verify_message">Decodeer en verifiëer bericht</string>
+ <string name="btn_decrypt_verify_message">Tekst ontsleutelen en verifiëren</string>
<string name="btn_encrypt_file">Codeer en sla bestanden op</string>
<string name="btn_encrypt_share_file">Bestand versleutelen en delen</string>
+ <string name="btn_encrypt_save_file">Bestand versleutelen en opslaan</string>
<string name="btn_save">Opslaan</string>
<string name="btn_do_not_save">Annuleren</string>
<string name="btn_delete">Verwijderen</string>
@@ -77,7 +80,8 @@
<string name="btn_no">Nee</string>
<string name="btn_match">Vingerafdrukken komen overeen</string>
<string name="btn_lookup_key">Opzoeksleutel</string>
- <string name="btn_share_encrypted_signed">Bericht versleutelen en delen</string>
+ <string name="btn_share_encrypted_signed">Tekst versleutelen en opslaan</string>
+ <string name="btn_copy_encrypted_signed">Tekst versleutelen en kopiëren</string>
<string name="btn_view_cert_key">Toon certificatiesleutel</string>
<string name="btn_create_key">Sleutel aanmaken</string>
<string name="btn_add_files">Bestand(en) toevoegen</string>
@@ -104,9 +108,10 @@
<string name="menu_search_cloud">Zoeken</string>
<string name="menu_export_all_keys">Alle sleutels exporteren</string>
<string name="menu_advanced">Geavanceerde info tonen</string>
- <string name="menu_certify_fingerprint">Verifiëren door vingerafdrukken te vergelijken</string>
+ <string name="menu_certify_fingerprint">Bevestigen door vingerafdrukken te vergelijken</string>
+ <string name="menu_export_log">Log exporteren</string>
<!--label-->
- <string name="label_message">Bericht</string>
+ <string name="label_message">Tekst</string>
<string name="label_file">Bestand</string>
<string name="label_files">Bestand(en)</string>
<string name="label_file_colon">Bestand:</string>
@@ -114,6 +119,7 @@
<string name="label_passphrase">Wachtwoord</string>
<string name="label_unlock">Bezig met ontgrendelen…</string>
<string name="label_passphrase_again">Herhaal wachtwoord</string>
+ <string name="label_show_passphrase">Wachtwoord weergeven</string>
<string name="label_algorithm">Algoritme</string>
<string name="label_ascii_armor">Bestand ASCII Armor</string>
<string name="label_file_ascii_armor">ASCII Armor aanzetten</string>
@@ -131,7 +137,7 @@
<string name="label_symmetric">Versleutelen met wachtwoord</string>
<string name="label_passphrase_cache_ttl">Cachetijd</string>
<string name="label_passphrase_cache_subs">Cache wachtwoorden per subsleutel</string>
- <string name="label_message_compression">Berichtscompressie</string>
+ <string name="label_message_compression">Tekstcompressie</string>
<string name="label_file_compression">Bestandscompressie</string>
<string name="label_keyservers">Sleutelservers</string>
<string name="label_key_id">Sleutel-id</string>
@@ -149,15 +155,9 @@
<string name="expiry_date_dialog_title">Bepaal verloopdatum</string>
<string name="label_first_keyserver_is_used">(Voorkeur gaat uit naar de eerste keyserver in de lijst)</string>
<string name="label_preferred">voorkeur</string>
+ <string name="label_enable_compression">Compressie aanzetten</string>
<string name="user_id_no_name">&lt;no naam&gt;</string>
<string name="none">&lt;geen&gt;</string>
- <string name="no_key">&lt;geen sleutel&gt;</string>
- <string name="can_encrypt">versleutelbaar</string>
- <string name="can_sign">ondertekenbaar</string>
- <string name="can_certify">kan certificeren</string>
- <string name="can_certify_not">kan niet certificeren</string>
- <string name="expired">verlopen</string>
- <string name="revoked">ingetrokken</string>
<plurals name="n_keys">
<item quantity="one">1 sleutel</item>
<item quantity="other">%d sleutels</item>
@@ -187,7 +187,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Openen…</string>
- <string name="warning">Waarschuwing</string>
<string name="error">Fout</string>
<string name="error_message">Fout: %s</string>
<!--key flags-->
@@ -205,20 +204,17 @@
<string name="pin_for">Voer PIN in voor \'%s\'</string>
<string name="yubikey_pin_for">Voer PIN in om toegang te verkrijgen tot YubiKey voor \'%s\'</string>
<string name="nfc_text">Hou YubiKey tegen de achterkant van je toestel</string>
- <string name="file_delete_confirmation">Ben je zeker dat je %s wil verwijderen?</string>
- <string name="file_delete_successful">Succesvol verwijderd.</string>
- <string name="no_file_selected">Selecteer eerst een bestand.</string>
+ <string name="no_file_selected">Selecteer eerst een bestand.</string>
<string name="encrypt_sign_successful">Succesvol gesigneerd en/of gecodeerd.</string>
<string name="encrypt_sign_clipboard_successful">Succesvol gesigneerd en/of gecodeerd naar klembord.</string>
- <string name="enter_passphrase_twice">Voer het wachtwoord tweemaal in.</string>
<string name="select_encryption_key">Selecteer ten minste één versleutelingssleutel.</string>
<string name="select_encryption_or_signature_key">Selecter ten minste één versleutelings-/ondertekeningssleutel.</string>
<string name="specify_file_to_encrypt_to">Gelieve aan te geven naar welk bestand versleuteld moet worden.\nWAARSCHUWING: Als het bestand al bestaat, zal het overschreven worden.</string>
<string name="specify_file_to_decrypt_to">Gelieve aan te geven naar welk bestand ontcijferd moet worden.\nWAARSCHUWING: Als het bestand al bestaat, zal het overschreven worden.</string>
<string name="specify_file_to_export_to">Gelieve aan te geven naar welk bestand geëxporteerd moet worden.\nWAARSCHUWING: Als het bestand al bestaat, zal het overschreven worden.</string>
- <string name="key_deletion_confirmation_multi">Ben je zeker dat je alle geselecteerde publieke sleutels wil verwijderen?\nJe kan dit niet ongedaan maken!</string>
- <string name="secret_key_deletion_confirmation">Ben je zeker dat je de GEHEIME sleutel \'%s\' wil verwijderen?\nJe kan dit niet ongedaan maken!</string>
- <string name="public_key_deletetion_confirmation">Ben je zeker dat je de publieke sleutel \'%s\' wil verwijderen?\nJe kan dit niet ongedaan maken!</string>
+ <string name="key_deletion_confirmation_multi">Ben je zeker dat je alle geselecteerde sleutels wil verwijderen?</string>
+ <string name="secret_key_deletion_confirmation">Na verwijderen zal je niet langer berichten versleuteld met deze sleutel kunnen lezen, en alle sleutelbevestigingen die ermee gedaan zijn verliezen!</string>
+ <string name="public_key_deletetion_confirmation">Sleutel \'%s\' verwijderen?</string>
<string name="also_export_secret_keys">Exporteer ook geheime sleutels</string>
<string name="reinstall_openkeychain">Je bent een gekende Android-bug tegengekomen. Gelieve OpenKeychain opnieuw te installeren als je je contacten met sleutels wil verbinden.</string>
<string name="key_exported">1 sleutel succesvol geëxporteerd.</string>
@@ -226,6 +222,7 @@
<string name="no_keys_exported">Geen sleutels geëxporteerd.</string>
<string name="key_creation_el_gamal_info">Opmerking: alleen subsleutels ondersteunen ElGamal.</string>
<string name="key_not_found">Kan de sleutel %08X niet vinden.</string>
+ <string name="specify_file_to_export_log_to">Gelieve aan te geven naar welk bestand geëxporteerd moet worden.\nWAARSCHUWING: Als het bestand al bestaat, zal het overschreven worden.</string>
<plurals name="bad_keys_encountered">
<item quantity="one">%d slechte geheime sleutel genegeerd. Misschien heb je geëxporteerd met de optie\n--export-secret-subkeys\nZorg ervoor dat je in plaats daarvan met --export-secret-keys exporteert.</item>
<item quantity="other">%d slechte geheime sleutels genegeerd. Misschien heb je geëxporteerd met de optie\n--export-secret-subkeys\nZorg ervoor dat je in plaats daarvan met --export-secret-keys exporteert.</item>
@@ -234,14 +231,13 @@
<string name="nfc_successful">Succesvol sleutel verstuurd met NFC Beam!</string>
<string name="key_copied_to_clipboard">Sleutel is gekopieerd naar het klembord!</string>
<string name="fingerprint_copied_to_clipboard">Sleutel is gekopieerd naar het klembord!</string>
- <string name="select_key_to_certify">Selecteer een sleutel die gebruikt moet worden voor certificatie!</string>
+ <string name="select_key_to_certify">Gelieve een sleutel te selecteren om te gebruiken voor bevestiging!</string>
<string name="key_too_big_for_sharing">Sleutel is te groot om op deze manier gedeeld te worden!</string>
<string name="text_copied_to_clipboard">Tekst is gekopieerd naar klembord!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">verwijderen \'%s\' mislukt</string>
- <string name="error_file_not_found">bestand niet gevonden</string>
+ <string name="error_file_not_found">bestand niet gevonden</string>
<string name="error_no_secret_key_found">geen geschikte privésleutel gevonden</string>
<string name="error_external_storage_not_ready">externe opslag niet gereed</string>
<string name="error_key_size_minimum512bit">sleutelgrootte moet minstens 512-bits zijn</string>
@@ -327,8 +323,7 @@
<string name="progress_con_saving">consolidatie: bezig met opslaan naar cache…</string>
<string name="progress_con_reimport">consolidatie: bezig met opnieuw importeren…</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Naam/E-mail/Sleutel ID…</string>
- <string name="hint_cloud_search_hint">Name/E-mail/Bewijs/Sleutel…</string>
+ <string name="hint_cloud_search_hint">Zoeken via naam, e-mail, ...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -356,7 +351,7 @@
<!--Help-->
<string name="help_tab_start">Beginnen</string>
<string name="help_tab_faq">FAQ</string>
- <string name="help_tab_wot">Web van Vertrouwen</string>
+ <string name="help_tab_wot">Sleutelbevestiging</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Lijst van wijzigingen</string>
<string name="help_tab_about">Over</string>
@@ -487,7 +482,7 @@
<string name="key_view_action_edit">Sleutel bewerken</string>
<string name="key_view_action_encrypt">Versleutel tekst</string>
<string name="key_view_action_encrypt_files">bestanden</string>
- <string name="key_view_action_certify">Certifiëer identiteiten</string>
+ <string name="key_view_action_certify">Sleutel bevestigen</string>
<string name="key_view_action_update">Update van sleutelserver</string>
<string name="key_view_action_share_with">Delen met…</string>
<string name="key_view_action_share_nfc">Delen over NFC</string>
@@ -506,15 +501,15 @@
<string name="user_id_info_invalid_title">Ongeldig</string>
<string name="user_id_info_invalid_text">Er is iets mis met deze identiteit!</string>
<!--Key trust-->
- <string name="key_trust_already_verified">Je hebt deze sleutel al gecertificeerd!</string>
+ <string name="key_trust_already_verified">Je hebt deze sleutel al bevestigd!</string>
<string name="key_trust_it_is_yours">Dit is een van jouw sleutels!</string>
- <string name="key_trust_maybe">Deze sleutel is ingetrokken noch verlopen.\nJe hebt ze niet gecertificeerd, maar je kan kiezen ze te vertrouwen.</string>
+ <string name="key_trust_maybe">Deze sleutel is ingetrokken noch verlopen.\nJe hebt ze niet bevestigd, maar je kan kiezen ze te vertrouwen.</string>
<string name="key_trust_revoked">Deze sleutel is door de eigenaar ingetrokken. Je zou ze niet moeten vertrouwen.</string>
<string name="key_trust_expired">Deze sleutel is verlopen. Je zou ze niet moeten vertrouwen.</string>
- <string name="key_trust_old_keys">Het kan oké zijn deze sleutel te gebruiken om een oud bericht te ontsleutelen van een moment waarop de sleutel nog geldig was.</string>
<string name="key_trust_no_cloud_evidence">Geen bewijs van de cloud voor de betrouwbaarheid van deze sleutel.</string>
<string name="key_trust_start_cloud_search">Zoeken starten</string>
<string name="key_trust_results_prefix">Keybase.io geeft “bewijzen” die stellen dat de eigenaar van deze sleutel:</string>
+ <string name="key_trust_header_text">Let op: Keybase.io-bewijzen zijn een experimentele functie van OpenKeychain. We moedigen je aan QR-codes te scannen of sleutels uit te wisselen via NFC bovenop het bevestigen ervan.</string>
<!--keybase proof stuff-->
<string name="keybase_narrative_twitter">Post op Twitter als</string>
<string name="keybase_narrative_github">Bekend is op GitHub als</string>
@@ -526,12 +521,12 @@
<string name="keybase_narrative_unknown">Onbekend bewijstype</string>
<string name="keybase_proof_failure">Helaas kan dit bewijs niet geverifieerd worden.</string>
<string name="keybase_unknown_proof_failure">Niet-herkend probleem met de bewijschecker</string>
- <string name="keybase_problem_fetching_evidence">Probleem met bewijs van bewijs</string>
+ <string name="keybase_problem_fetching_evidence">Probleem met bewijs</string>
<string name="keybase_key_mismatch">Sleutelvingerafdruk komt niet overeen met die in bewijspost</string>
<string name="keybase_dns_query_failure">DNS TXT record ophalen mislukt</string>
<string name="keybase_no_prover_found">Geen bewijschecker gevonden voor</string>
<string name="keybase_message_payload_mismatch">Ontsleuteld bewijs komt niet overeen met verwachte waarde</string>
- <string name="keybase_message_fetching_data">Bezig met ophalen van bewijs van bewijs</string>
+ <string name="keybase_message_fetching_data">Bezig met ophalen van bewijs</string>
<string name="keybase_proof_succeeded">Dit bewijs is geverifieerd!</string>
<string name="keybase_a_post">Een post</string>
<string name="keybase_fetched_from">opgehaald van</string>
@@ -568,23 +563,23 @@
<string name="edit_key_error_add_identity">Voeg minstens een identiteit toe!</string>
<string name="edit_key_error_add_subkey">Voeg minstens een subsleutel toe!</string>
<!--Create key-->
- <string name="create_key_upload">Upload sleutel naar sleutelserver</string>
+ <string name="create_key_upload">Synchroniseren met de cloud</string>
<string name="create_key_empty">Dit veld moet ingevuld worden</string>
<string name="create_key_passphrases_not_equal">Wachtwoorden komen niet overeen</string>
<string name="create_key_final_text">Je hebt volgende identiteit ingevoerd:</string>
<string name="create_key_final_robot_text">Een sleutel aanmaken kan even duren, maak intussen een tasje thee klaar…</string>
<string name="create_key_rsa">(3 subsleutels, RSA, 4096 bit)</string>
<string name="create_key_custom">(aangepaste sleutelconfiguratie)</string>
- <string name="create_key_identity_text">Voer je volledige naam en e-mailadres in, en kies een wachtwoord.</string>
- <string name="create_key_hint_full_name">Volledige naam, bv. Max Mustermann</string>
<string name="create_key_edit">Sleutelconfiguratie wijzigen</string>
+ <string name="create_key_add_email">E-mailadres toevoegen</string>
<!--View key-->
<string name="view_key_revoked">Ingetrokken: sleutel mag niet meer gebruikt worden!</string>
- <string name="view_key_expired">Verlopen: het contact moet de geldigheid van de sleutels verlengen!</string>
+ <string name="view_key_expired">Verlopen: het contact moet de geldigheid van de sleutel verlengen!</string>
<string name="view_key_expired_secret">Verlopen: je kan de geldigheid van de sleutels verlengen door ze te bewerken!</string>
<string name="view_key_my_key">Mijn sleutel</string>
- <string name="view_key_verified">Geverifieerde sleutels</string>
- <string name="view_key_unverified">Niet geverifieerd: scan QR-code om de sleutel te verifiëren!</string>
+ <string name="view_key_verified">Bevestigde sleutel</string>
+ <string name="view_key_unverified">Niet bevestigd: scan QR-code om de sleutel te bevestigen!</string>
+ <string name="view_key_fragment_no_system_contact">&lt;geen&gt;</string>
<!--Navigation Drawer-->
<string name="nav_keys">Sleutels</string>
<string name="nav_encrypt_decrypt">Versleutelen/Ontsleutelen</string>
@@ -920,6 +915,7 @@
<string name="msg_dc_clear_meta_size_unknown">Bestandsgrootte onbekend</string>
<string name="msg_dc_clear_meta_time">Wijzigingstijd: %s</string>
<string name="msg_dc_clear_signature_bad">Ondertekeningscontrole NIET OKÉ!</string>
+ <string name="msg_dc_error_unsupported_hash_algo">Niet ondersteund en mogelijk onveilig hash-algoritme!</string>
<string name="msg_dc_clear_signature_check">Bezig met verifiëren van ondertekeningsgegevens</string>
<string name="msg_dc_clear_signature_ok">Ondertekeningscontrole OKÉ</string>
<string name="msg_dc_clear_signature">Bezig met opslaan van ondertekeningsgegevens voor later</string>
@@ -935,7 +931,7 @@
<string name="msg_dc_error_pgp_exception">OpenPGP-uitzondering tegengekomen tijdens bewerking!</string>
<string name="msg_dc_integrity_check_ok">Integriteitscontrole OKÉ!</string>
<string name="msg_dc_ok_meta_only">Enkel metadata opgevraagd, ontcijferen wordt overgeslaan</string>
- <string name="msg_dc_ok">Oké</string>
+ <string name="msg_dc_ok">Ontsleuteling/verificatie voltooid</string>
<string name="msg_dc_pass_cached">Wachtwoord wordt uit cache gebruikt</string>
<string name="msg_dc_pending_nfc">NFC token vereist, gebruikersinput wordt gevraagd…</string>
<string name="msg_dc_pending_passphrase">Wachtwoord vereist, gebruikersinput wordt gevraagd…</string>
@@ -947,6 +943,7 @@
<string name="msg_dc_trail_sym">Achterlopende, symmetrisch versleutelde gegevens tegengekomen</string>
<string name="msg_dc_trail_unknown">Achterlopende gegevens van onbekend type tegengekomen</string>
<string name="msg_dc_unlocking">Bezig met ontgrendelen van geheime sleutel</string>
+ <string name="msg_dc_old_symmetric_encryption_algo">Mogelijk onveilig versleutelingsalgoritme gebruikt!</string>
<!--Messages for VerifySignedLiteralData operation-->
<string name="msg_vl">Ondertekeningscontrole wordt gestart</string>
<string name="msg_vl_error_no_siglist">Geen ondertekeningslijst in ondertekende letterlijke gegevens</string>
@@ -997,11 +994,14 @@
<string name="msg_pse">Ondertekening en/of versleuteling wordt gestart</string>
<string name="msg_pse_symmetric">Bezig met voorbereiden van symmetrische versleuteling</string>
<string name="msg_crt_certifying">Bezig met aanmaken van certificaten</string>
- <string name="msg_crt_certify_all">Bezig met certificeren van alle gebruikers-ID\'s voor sleutel %s</string>
- <plurals name="msg_crt_certify_some">
+ <plurals name="msg_crt_certify_uids">
<item quantity="one">Bezig met certificeren van een gebruikers-ID voor sleutel %2$s</item>
<item quantity="other">Bezig met certificeren van %1$d gebruikers-ID\'s voor sleutel %2$s</item>
</plurals>
+ <plurals name="msg_crt_certify_uats">
+ <item quantity="one">Bezig met certificeren van een gebruikersattribuut voor sleutel %2$s</item>
+ <item quantity="other">Bezig met certificeren van %1$d gebruikersattributen voor sleutel %2$s</item>
+ </plurals>
<string name="msg_crt_error_self">Kan self-certificaat zo niet uitgeven!</string>
<string name="msg_crt_error_master_not_found">Hoofdsleutel niet gevonden!</string>
<string name="msg_crt_error_nothing">Geen sleutels gecertificeerd!</string>
@@ -1080,6 +1080,12 @@
<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_download_query_failed">Er trad een fout op bij het zoeken naar sleutels.</string>
+ <!--Messages for Export Log operation-->
+ <string name="msg_export_log_start">Bezig met exporteren van log</string>
+ <string name="msg_export_log_error_fopen">Fout bij openen van bestand</string>
+ <string name="msg_export_log_error_no_file">Geen bestandsnaam opgegeven!</string>
+ <string name="msg_export_log_error_writing">I/O-fout bij schrijven naar bestand!</string>
+ <string name="msg_export_log_success">Log succesvol geëxporteerd!</string>
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Klik om de gecachete wachtwoorden te wissen</string>
<string name="passp_cache_notif_n_keys">OpenKeychain heeft %d wachtwoorden gecachet</string>
@@ -1099,11 +1105,10 @@
<string name="empty_certs">Geen certificaten voor deze sleutel</string>
<string name="certs_text">Enkel gevalideerde self-certificaten en gevalideerde certificaten gemaakt met jouw sleutels worden hier weergegeven.</string>
<string name="section_uids_to_certify">Identiteiten voor</string>
- <string name="certify_text">De sleutels die je importeert bevatten \'identiteiten\': namen en e-mailadressen. Selecteer precies die voor certificatie die overeenkomen met wat je had verwacht.</string>
+ <string name="certify_text">De sleutels die je importeert bevatten \'identiteiten\': namen en e-mailadressen. Selecteer precies die voor bevestiging die overeenkomen met wat je had verwacht.</string>
<string name="certify_fingerprint_text">Vergelijk de weergegeven vingerafdruk, karakter per karakter, met die weergegeven op het toestel van je partner.</string>
<string name="certify_fingerprint_text2">Komen de weergegeven vingerafdrukken overeen?</string>
<string name="label_revocation">Intrek Reden</string>
- <string name="label_verify_status">Verificatie Status</string>
<string name="label_cert_type">Type</string>
<string name="error_key_not_found">Sleutel niet gevonden!</string>
<string name="error_key_processing">Fout bij verwerken sleutel!</string>
@@ -1151,4 +1156,5 @@
<string name="nfc_write_succesful">Succesvol geschreven op NFC-tag</string>
<string name="unlocked">Ontgrendeld</string>
<string name="nfc_settings">Instellingen</string>
+ <string name="file_delete_successful"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml
index 46dd8c313..1ee5a86e7 100644
--- a/OpenKeychain/src/main/res/values-pl/strings.xml
+++ b/OpenKeychain/src/main/res/values-pl/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Wybierz klucze</string>
<string name="title_select_secret_key">Wybierz swój klucz</string>
- <string name="title_encrypt_text">Szyfruj tekst</string>
- <string name="title_encrypt_files">Szyfruj pliki</string>
<string name="title_decrypt">Odszyfruj</string>
<string name="title_unlock">Odblokuj klucz</string>
<string name="title_add_subkey">Dodaj pod-klucz</string>
@@ -20,7 +18,6 @@
<string name="title_share_fingerprint_with">Podziel się odciskiem klucza przez...</string>
<string name="title_share_key">Podziel się kluczem przez...</string>
<string name="title_share_file">Podziel się plikiem przez...</string>
- <string name="title_share_message">Podziel się wiadomością przez...</string>
<string name="title_encrypt_to_file">Zaszyfruj do pliku</string>
<string name="title_decrypt_to_file">Odszyfruj do pliku</string>
<string name="title_import_keys">Importuj klucze</string>
@@ -29,7 +26,6 @@
<string name="title_export_keys">Eksportuj klucze</string>
<string name="title_key_not_found">Nie znaleziono klucza</string>
<string name="title_send_key">Wyślij do serwera kluczy</string>
- <string name="title_certify_key">Certyfikuj tożsamości</string>
<string name="title_key_details">Szczegóły klucza</string>
<string name="title_help">Pomoc</string>
<string name="title_log_display">Logi</string>
@@ -45,14 +41,11 @@
<string name="section_defaults">Domyślne</string>
<string name="section_advanced">Zaawansowane</string>
<string name="section_passphrase_cache">Pamięć cache hasła</string>
- <string name="section_certify">Certyfikuj</string>
<string name="section_actions">Działania</string>
<string name="section_share_key">Klucz</string>
- <string name="section_certification_key">Twój klucz użyty do certyfikacji</string>
<string name="section_upload_key">Synchronizuj Klucz</string>
<string name="section_key_server">Serwer kluczy</string>
<string name="section_fingerprint">Odcisk klucza</string>
- <string name="section_key_to_certify">Klucz do certyfikacji</string>
<string name="section_decrypt_files">Pliki</string>
<string name="section_decrypt_text">Tekst</string>
<string name="section_certs">Certyfikaty</string>
@@ -60,7 +53,6 @@
<string name="section_decrypt">Odszyfruj</string>
<!--button-->
<string name="btn_decrypt_verify_file">Odszyfruj, weryfikuj i zapisz plik</string>
- <string name="btn_decrypt_verify_message">Odszyfruj i weryfikuj wiadomość</string>
<string name="btn_encrypt_file">Szyfruj i zapisz plik</string>
<string name="btn_encrypt_share_file">Szyfruj i podziel się plikiem</string>
<string name="btn_save">Zapisz</string>
@@ -72,7 +64,6 @@
<string name="btn_next">Dalej</string>
<string name="btn_back">Wstecz</string>
<string name="btn_lookup_key">Sprawdź klucz</string>
- <string name="btn_share_encrypted_signed">Szyfruj i podziel się wiadomością</string>
<string name="btn_view_cert_key">Wyświetl klucz certyfikacji</string>
<string name="btn_create_key">Utwórz klucz</string>
<string name="btn_add_files">Dodaj plik(i)</string>
@@ -98,7 +89,6 @@
<string name="menu_export_all_keys">Eksportuj wszystkie klucze</string>
<string name="menu_advanced">Pokaż zaawansowane informacje</string>
<!--label-->
- <string name="label_message">Wiadomość</string>
<string name="label_file">Plik</string>
<string name="label_files">Plik(i)</string>
<string name="label_file_colon">Plik:</string>
@@ -123,7 +113,6 @@
<string name="label_symmetric">Szyfruj z hasłem</string>
<string name="label_passphrase_cache_ttl">Czas pamięci cache</string>
<string name="label_passphrase_cache_subs">Pamiętaj hasła względem pod-klucza:</string>
- <string name="label_message_compression">Kompresja wiadomości</string>
<string name="label_file_compression">Kompresja pliku</string>
<string name="label_keyservers">Serwery kluczy</string>
<string name="label_key_id">Identyfikator klucza</string>
@@ -143,13 +132,6 @@
<string name="label_preferred">preferowany</string>
<string name="user_id_no_name">&lt;bez nazwy&gt;</string>
<string name="none">&lt;żaden&gt;</string>
- <string name="no_key">&lt;brak klucza&gt;</string>
- <string name="can_encrypt">może szyfrować</string>
- <string name="can_sign">może podpisywać</string>
- <string name="can_certify">może certyfikować</string>
- <string name="can_certify_not">nie może certyfikować</string>
- <string name="expired">wygasły</string>
- <string name="revoked">unieważniony</string>
<plurals name="n_keys">
<item quantity="one">1 klucz</item>
<item quantity="few">%d klucze</item>
@@ -181,7 +163,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Otwórz...</string>
- <string name="warning">Ostrzeżenie</string>
<string name="error">Błąd</string>
<string name="error_message">Błąd: %s</string>
<!--key flags-->
@@ -198,20 +179,14 @@
<string name="passphrase_for">Podaj hasło dla \'%s\'</string>
<string name="pin_for">Wpisz PIN dla \'%s\'</string>
<string name="nfc_text">Trzymaj YubiKey z tyłu Twojego urządzenia.</string>
- <string name="file_delete_confirmation">Czy jesteś pewny, że chcesz usunąć\n%s?</string>
- <string name="file_delete_successful">Usunięto pomyślnie.</string>
- <string name="no_file_selected">Najpierw wskaż plik.</string>
+ <string name="no_file_selected">Najpierw wskaż plik.</string>
<string name="encrypt_sign_successful">Pomyślnie podpisano i/lub zaszyfrowano.</string>
<string name="encrypt_sign_clipboard_successful">Pomyslnie podpisano i/lub zaszyfrowano do schowka.</string>
- <string name="enter_passphrase_twice">Podaj hasło dwukrotnie.</string>
<string name="select_encryption_key">Wybierz co najmniej jeden klucz szyfrujący.</string>
<string name="select_encryption_or_signature_key">Wybierz co najmniej jeden klucz szyfrujący lub klucz podpisujący.</string>
<string name="specify_file_to_encrypt_to">Wskaż, do którego pliku zapisać zaszyfrowane dane.\nOSTRZEŻENIE: Plik zostanie nadpisany, jeżeli istnieje.</string>
<string name="specify_file_to_decrypt_to">Wskaż, do którego pliku zapisać odszyfrowane dane.\nOSTRZEŻENIE: Plik zostanie nadpisany, jeżeli istnieje.</string>
<string name="specify_file_to_export_to">Wskaż, do którego pliku wyeksportować dane.\nOSTRZEŻENIE: Plik zostanie nadpisany, jeżeli istnieje.</string>
- <string name="key_deletion_confirmation_multi">Czy na pewno chcesz usunąć wszystkie zaznaczone klucze publiczne?\nTej operacji nie można cofnąć!</string>
- <string name="secret_key_deletion_confirmation">Czy na pewno chcesz usunąć TAJNY klucz \'%s\'?\nNie można cofnąć tej operacji!</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">Także eksportuj tajne klucze</string>
<string name="reinstall_openkeychain">Napotkałeś się na znany błąd w Androidzie. Proszę ponownie zainstalować OpenKeychain jeśli chcesz połączyć kontakty z kluczami.</string>
<string name="key_exported">Pomyślnie wyeksportowano 1 klucz.</string>
@@ -228,13 +203,11 @@
<string name="nfc_successful">Pomyślnie wysłano klucz przez NFC Beam!</string>
<string name="key_copied_to_clipboard">Klucz został skopiowany do schowka!</string>
<string name="fingerprint_copied_to_clipboard">Odcisk klucza został skopiowany do schowka!</string>
- <string name="select_key_to_certify">Proszę wybrać klucz który będzie użyty do certyfikacji!</string>
<string name="key_too_big_for_sharing">Klucz ma za duży rozmiar by być udostępniony w ten sposób!</string>
<string name="text_copied_to_clipboard">Tekst został skopiowany do schowka!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">usuwanie \'%s\' zakończone niepowodzeniem</string>
<string name="error_file_not_found">plik nie znaleziony</string>
<string name="error_no_secret_key_found">nie znaleziono pasującego klucza prywatnego</string>
<string name="error_external_storage_not_ready">zewnętrzne urządzenie jest niegotowe</string>
@@ -316,8 +289,6 @@
<string name="progress_deleting_securely">usuwanie \'%s\' bezpiecznie…</string>
<string name="progress_deleting">usuwanie kluczy...</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Nazwa/Email/ID klucza...</string>
- <string name="hint_cloud_search_hint">Nazwa/Email/Dowód/Klucz...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -345,7 +316,6 @@
<!--Help-->
<string name="help_tab_start">Początek</string>
<string name="help_tab_faq">FAQ</string>
- <string name="help_tab_wot">Sieć zaufania</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Dziennik zmian</string>
<string name="help_tab_about">O programie</string>
@@ -490,7 +460,6 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw
<string name="key_view_action_edit">Edytuj klucz</string>
<string name="key_view_action_encrypt">Szyfruj tekst</string>
<string name="key_view_action_encrypt_files">pliki</string>
- <string name="key_view_action_certify">Certyfikuj tożsamości</string>
<string name="key_view_action_update">Aktualizuj z serwera kluczy</string>
<string name="key_view_action_share_with">Podziel się z...</string>
<string name="key_view_action_share_nfc">Udostępnij używając NFC</string>
@@ -533,15 +502,12 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw
<string name="edit_key_error_add_identity">Dodaj przynajmniej jedną tożsamość!</string>
<string name="edit_key_error_add_subkey">Dodaj przynajmniej jeden pod-klucz!</string>
<!--Create key-->
- <string name="create_key_upload">Wyślij klucz do serwera kluczy</string>
<string name="create_key_empty">Dane pole jest wymagane</string>
<string name="create_key_passphrases_not_equal">Hasła nie zgadzają się</string>
<string name="create_key_final_text">Wpisałeś następującą tożsamość:</string>
<string name="create_key_final_robot_text">Tworzenie klucza może zająć trochę czasu... w międzyczasie idź się napij kawy.</string>
<string name="create_key_rsa">(3 pod-klucze, RSA, 4096 bit)</string>
<string name="create_key_custom">(niestandardowa konfiguracja kluczy)</string>
- <string name="create_key_identity_text">Wpisz swoje imię, adres email oraz wybierz hasło.</string>
- <string name="create_key_hint_full_name">Imię i nazwisko, na przykład, Jan Kowalski</string>
<string name="create_key_edit">Zmień klucz konfiguracji</string>
<!--View key-->
<!--Navigation Drawer-->
@@ -602,13 +568,11 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw
<string name="msg_dc_clear_decompress">Rozpakowywanie skompresowanych danych</string>
<string name="msg_dc_clear_meta_file">Nazwa pliku: %s</string>
<string name="msg_dc_clear_meta_mime">Typ MIME: %s</string>
- <string name="msg_dc_clear_meta_size">Rozmiar pliku: %s</string>
<string name="msg_dc_clear_meta_time">Czas modyfikacji: %s</string>
<string name="msg_dc_clear_signature_bad">Sprawdzanie podpisu NIE JEST OK</string>
<string name="msg_dc_clear_signature_check">Weryfikowanie danych podpisu...</string>
<string name="msg_dc_clear_signature_ok">Sprawdzanie podpisu jest OK</string>
<string name="msg_dc_ok_meta_only">Tylko metadane były wymagane, pomijanie odszyfrowania</string>
- <string name="msg_dc_ok">OK</string>
<string name="msg_dc_pass_cached">Użycie hasła z pamięci cache</string>
<string name="msg_dc_pending_passphrase">Hasło wymagane, wymagana reakcja użytkownika...</string>
<string name="msg_dc">Rozpoczynanie operacji odszyfrowania...</string>
@@ -657,6 +621,7 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw
<item quantity="few">Część wczytanego pliku to poprawne obiekty OpenPGP, ale nie są kluczami OpenPGP</item>
<item quantity="other">Część wczytanego pliku to poprawne obiekty OpenPGP, ale nie są kluczami OpenPGP</item>
</plurals>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Kliknij, aby wyczyścić zapamiętane hasła</string>
<string name="passp_cache_notif_n_keys">OpenKeychain zapamiętał %d haseł</string>
@@ -675,7 +640,6 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw
<string name="empty_certs">Nie ma certyfikatów dla tego klucza</string>
<string name="section_uids_to_certify">Tożsamości dla</string>
<string name="label_revocation">Powód odwołania</string>
- <string name="label_verify_status">Stan weryfikacji</string>
<string name="label_cert_type">Typ</string>
<string name="error_key_not_found">Nie znaleziono klucza!</string>
<string name="error_key_processing">Błąd przy przetwarzaniu klucza!</string>
@@ -692,7 +656,8 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw
<string name="error_no_file_selected">Wybierz przynajmniej jeden plik, aby szyfrować!</string>
<string name="key_colon">Klucz:</string>
<string name="btn_start_exchange">Rozpocznij wymianę</string>
- <!--Passphrase wizard-->
+ <string name="file_delete_successful"></string>
+ <!--Passphrase wizard-->
<!--TODO: rename all the things!-->
<!--<string name="enter_passphrase_twice">Enter passphrase twice</string>-->
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
diff --git a/OpenKeychain/src/main/res/values-pt/strings.xml b/OpenKeychain/src/main/res/values-pt/strings.xml
index 233347bd3..518b80f47 100644
--- a/OpenKeychain/src/main/res/values-pt/strings.xml
+++ b/OpenKeychain/src/main/res/values-pt/strings.xml
@@ -59,6 +59,7 @@
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<!--First Time-->
<!--unsorted-->
diff --git a/OpenKeychain/src/main/res/values-ro/strings.xml b/OpenKeychain/src/main/res/values-ro/strings.xml
index 233347bd3..518b80f47 100644
--- a/OpenKeychain/src/main/res/values-ro/strings.xml
+++ b/OpenKeychain/src/main/res/values-ro/strings.xml
@@ -59,6 +59,7 @@
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<!--First Time-->
<!--unsorted-->
diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml
index 211433d26..9559ecf51 100644
--- a/OpenKeychain/src/main/res/values-ru/strings.xml
+++ b/OpenKeychain/src/main/res/values-ru/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Выберите ключи</string>
<string name="title_select_secret_key">Выберите Ваш ключ</string>
- <string name="title_encrypt_text">Зашифровать текст</string>
- <string name="title_encrypt_files">Зашифровать файлы</string>
<string name="title_decrypt">Расшифровать</string>
<string name="title_unlock">Разблокировать ключ</string>
<string name="title_add_subkey">Добавить доп. ключ</string>
@@ -20,7 +18,6 @@
<string name="title_share_fingerprint_with">Отправить отпечаток...</string>
<string name="title_share_key">Отправить ключ...</string>
<string name="title_share_file">Отправить файл...</string>
- <string name="title_share_message">Отправить сообщение...</string>
<string name="title_encrypt_to_file">Зашифровать в файл</string>
<string name="title_decrypt_to_file">Расшифровать в файл</string>
<string name="title_import_keys">Импорт ключей</string>
@@ -29,7 +26,6 @@
<string name="title_export_keys">Экспорт ключей</string>
<string name="title_key_not_found">Ключ не найден</string>
<string name="title_send_key">Загрузить на сервер ключей</string>
- <string name="title_certify_key">Сертифицировать</string>
<string name="title_key_details">Сведения о ключе</string>
<string name="title_help">Помощь</string>
<string name="title_log_display">Журнал</string>
@@ -39,28 +35,29 @@
<string name="title_keys">Ключи</string>
<!--section-->
<string name="section_user_ids">Идентификаторы</string>
+ <string name="section_should_you_trust">Должны ли Вы доверять этому ключу?</string>
+ <string name="section_proof_details">Подтвердить верификацию</string>
+ <string name="section_cloud_evidence">Подтвердить из облака</string>
<string name="section_keys">Доп. ключи</string>
<string name="section_cloud_search">Облачный поиск</string>
<string name="section_general">Приложение</string>
<string name="section_defaults">Алгоритмы</string>
<string name="section_advanced">Дополнительно</string>
<string name="section_passphrase_cache">Кэш пароля</string>
- <string name="section_certify">Удостоверить</string>
<string name="section_actions">Действия</string>
<string name="section_share_key">Ключ</string>
- <string name="section_certification_key">Ваш ключ для сертификации</string>
<string name="section_upload_key">Синхронизировать ключ</string>
<string name="section_key_server">Сервер ключей</string>
<string name="section_fingerprint">Отпечаток ключа</string>
- <string name="section_key_to_certify">Сертифицируемый ключ</string>
<string name="section_decrypt_files">Файлы</string>
<string name="section_decrypt_text">Текст</string>
<string name="section_certs">Сертификаты</string>
<string name="section_encrypt">Зашифровать</string>
<string name="section_decrypt">Расшифровать</string>
+ <string name="section_current_expiry">Текущий срок годности</string>
+ <string name="section_new_expiry">Новый срок годности</string>
<!--button-->
<string name="btn_decrypt_verify_file">Расшифровать, проверить и сохранить файл</string>
- <string name="btn_decrypt_verify_message">Расшифровать и проверить сообщение</string>
<string name="btn_encrypt_file">Зашифровать и сохранить файл</string>
<string name="btn_encrypt_share_file">Зашифровать и отправить файл</string>
<string name="btn_save">Сохранить</string>
@@ -74,7 +71,6 @@
<string name="btn_no">Нет</string>
<string name="btn_match">Отпечатки совпадают</string>
<string name="btn_lookup_key">Найти ключ</string>
- <string name="btn_share_encrypted_signed">Зашифровать и отправить сообщение</string>
<string name="btn_view_cert_key">Просмотр ключа</string>
<string name="btn_create_key">Создать ключ</string>
<string name="btn_add_files">Добавить файл(ы)</string>
@@ -101,9 +97,7 @@
<string name="menu_search_cloud">Поиск в облаке</string>
<string name="menu_export_all_keys">Экспорт всех ключей</string>
<string name="menu_advanced">Подробные данные</string>
- <string name="menu_certify_fingerprint">Сверить отпечатки</string>
<!--label-->
- <string name="label_message">Сообщение</string>
<string name="label_file">Файл</string>
<string name="label_files">Файл(ы)</string>
<string name="label_file_colon">Файл:</string>
@@ -128,7 +122,6 @@
<string name="label_symmetric">Зашифровать паролем</string>
<string name="label_passphrase_cache_ttl">Время хранения в кэше</string>
<string name="label_passphrase_cache_subs">Кэшировать пароли по доп. ключу</string>
- <string name="label_message_compression">Сжимать сообщение</string>
<string name="label_file_compression">Сжатие файла</string>
<string name="label_keyservers">Серверы ключей</string>
<string name="label_key_id">ID ключа</string>
@@ -148,13 +141,6 @@
<string name="label_preferred">предпочитаемый</string>
<string name="user_id_no_name">&lt;нет имени&gt;</string>
<string name="none">&lt;нет&gt;</string>
- <string name="no_key">&lt;нет ключа&gt;</string>
- <string name="can_encrypt">шифрование</string>
- <string name="can_sign">подпись</string>
- <string name="can_certify">сертификация</string>
- <string name="can_certify_not">не для сертификации</string>
- <string name="expired">просрочен</string>
- <string name="revoked">отозван</string>
<plurals name="n_keys">
<item quantity="one">1 ключ</item>
<item quantity="few">%d ключей</item>
@@ -186,7 +172,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Открыть...</string>
- <string name="warning">Внимание</string>
<string name="error">Ошибка</string>
<string name="error_message">Ошибка: %s</string>
<!--key flags-->
@@ -207,20 +192,14 @@
<string name="yubikey_pin_for">Введите PIN для доступа к YubiKey для
\'%s\'</string>
<string name="nfc_text">Держите YubiKey возле задней части вашего устройства.</string>
- <string name="file_delete_confirmation">Вы уверены, что хотите удалить\n%s?</string>
- <string name="file_delete_successful">Удалено.</string>
- <string name="no_file_selected">Сначала выберите файл.</string>
+ <string name="no_file_selected">Сначала выберите файл.</string>
<string name="encrypt_sign_successful">Успешно подписано и/или зашифровано.</string>
<string name="encrypt_sign_clipboard_successful">Успешно подписано и/или зашифровано в буфер обмена.</string>
- <string name="enter_passphrase_twice">Дважды введите пароль.</string>
<string name="select_encryption_key">Укажите хотя бы один ключ.</string>
<string name="select_encryption_or_signature_key">Выберите хотя бы один ключ для шифрования или подписи.</string>
<string name="specify_file_to_encrypt_to">Пожалуйста, выберите файл для шифрования.\nВНИМАНИЕ! Файл будет перезаписан если он уже существует.</string>
<string name="specify_file_to_decrypt_to">Пожалуйста, выберите файл для расшифровки.\nВНИМАНИЕ! Файл будет перезаписан если он уже существует.</string>
<string name="specify_file_to_export_to">Пожалуйста, выберите файл для экспорта.\nВНИМАНИЕ! Файл будет перезаписан если он уже существует.</string>
- <string name="key_deletion_confirmation_multi">Вы уверены, что хотите удалить ВСЕ выбранные Публичные ключи?\nЭто действие нельзя отменить!</string>
- <string name="secret_key_deletion_confirmation">Вы уверены, что хотите удалить СЕКРЕТНЫЙ ключ \'%s\'?\nЭто действие нельзя отменить!</string>
- <string name="public_key_deletetion_confirmation">Вы правда хотите удалить публичный ключ \'%s\'?\nЭто действие нельзя отменить!</string>
<string name="also_export_secret_keys">Экспортировать секретные ключи</string>
<string name="reinstall_openkeychain">Вы столкнулись с багом Андроид. Пожалуйста, переустановите OpenKeychain чтобы связать ваши контакты и ключи. </string>
<string name="key_exported">Успешный экспорт 1 ключа.</string>
@@ -232,13 +211,11 @@
<string name="nfc_successful">Ключ успешно передан через NFC!</string>
<string name="key_copied_to_clipboard">Ключ скопирован в буфер обмена!</string>
<string name="fingerprint_copied_to_clipboard">Отпечаток ключа скопирован в буфер обмена!</string>
- <string name="select_key_to_certify">Выберите ключ, используемый для сертификации!</string>
<string name="key_too_big_for_sharing">Ключ слишком большой для этого способа передачи!</string>
<string name="text_copied_to_clipboard">Тест скопирован в буфер обмена!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">ошибка удаления \'%s\'</string>
<string name="error_file_not_found">файл не найден</string>
<string name="error_no_secret_key_found">нет подходящего секретного ключа</string>
<string name="error_external_storage_not_ready">внешняя память не готова</string>
@@ -326,8 +303,7 @@
<string name="progress_con_saving">объединение: сохранение в кэш...</string>
<string name="progress_con_reimport">объединение: реимпорт...</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Имя/Email/ID ключа…</string>
- <string name="hint_cloud_search_hint">Имя/Email/Проверка/Ключ...</string>
+ <string name="hint_cloud_search_hint">Искать через Имя, Email...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -355,7 +331,6 @@
<!--Help-->
<string name="help_tab_start">Начать</string>
<string name="help_tab_faq">ЧаВо</string>
- <string name="help_tab_wot">Сеть доверия (WoT)</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Изменения</string>
<string name="help_tab_about">О программе</string>
@@ -440,7 +415,6 @@
<string name="key_view_action_edit">Изменить ключ</string>
<string name="key_view_action_encrypt">Зашифровать текст</string>
<string name="key_view_action_encrypt_files">файлы</string>
- <string name="key_view_action_certify">Сертифицировать</string>
<string name="key_view_action_update">Обновить с сервера ключей</string>
<string name="key_view_action_share_with">Отправить...</string>
<string name="key_view_action_share_nfc">Отправить через NFC</string>
@@ -449,6 +423,7 @@
<string name="key_view_tab_share">Отправить...</string>
<string name="key_view_tab_keys">Доп. ключи</string>
<string name="key_view_tab_certs">Сертификация</string>
+ <string name="key_view_tab_keybase">Keybase.io</string>
<string name="user_id_info_revoked_title">Аннулировано</string>
<string name="user_id_info_revoked_text">Этот идентификатор отозван владельцем ключа. Он больше недействителен.</string>
<string name="user_id_info_certified_title">Сертифицировано</string>
@@ -458,7 +433,24 @@
<string name="user_id_info_invalid_title">Недействительно</string>
<string name="user_id_info_invalid_text">Что-то не так с идентификатором!</string>
<!--Key trust-->
+ <string name="key_trust_it_is_yours">Это один из ваших ключей!</string>
+ <string name="key_trust_revoked">Этот ключ отозван владельцем. Вы не должны доверять ему.</string>
+ <string name="key_trust_expired">У этого ключа истек срок годности. Вы не должны доверять ему.</string>
+ <string name="key_trust_start_cloud_search">Начать поиск</string>
<!--keybase proof stuff-->
+ <string name="keybase_narrative_twitter">Отправить в Твиттер как</string>
+ <string name="keybase_narrative_github">Это известно на GitHub как</string>
+ <string name="keybase_narrative_dns">Управлять доменным именем(именами)</string>
+ <string name="keybase_narrative_reddit">Опубликовать на Reddit как</string>
+ <string name="keybase_narrative_hackernews">Опубликовать на Hacker News как</string>
+ <string name="keybase_narrative_unknown">Неизвестный тип доказательства</string>
+ <string name="keybase_proof_failure">К сожалению это доказательство не может быть верифицировано.</string>
+ <string name="keybase_unknown_proof_failure">Неопознанная проблема с проверкой доказательства </string>
+ <string name="keybase_problem_fetching_evidence">Проблема с доказательством</string>
+ <string name="keybase_key_mismatch">Отпечаток ключа не совпадает с таковым в доказательной записи.</string>
+ <string name="keybase_no_prover_found">Не найдено проверки доказательства для </string>
+ <string name="keybase_message_payload_mismatch">Расшифрованная доказательная запись не соответствует ожидаемому значению</string>
+ <string name="keybase_reddit_proof">JSON file</string>
<!--Edit key-->
<string name="edit_key_action_change_passphrase">Изменить пароль</string>
<string name="edit_key_action_add_identity">Добавить идентификатор</string>
@@ -483,23 +475,17 @@
<string name="edit_key_error_add_identity">Добавьте хотя бы один идентификатор!</string>
<string name="edit_key_error_add_subkey">Добавьте хотя бы один доп. ключ!</string>
<!--Create key-->
- <string name="create_key_upload">Загрузить ключ на сервер</string>
<string name="create_key_empty">Это обязательне поле</string>
<string name="create_key_passphrases_not_equal">Пароли не совпадают.</string>
<string name="create_key_final_text">Вы указали следующие данные:</string>
<string name="create_key_final_robot_text">Создание ключа займет некоторое время, можете пока выпить чашечку кофе...</string>
<string name="create_key_rsa">(3 доп. ключа, RSA, 4096 bit)</string>
<string name="create_key_custom">(произвольная конфигурация ключа)</string>
- <string name="create_key_identity_text">Укажите полное имя, адрес почты и придумайте надежный пароль.</string>
- <string name="create_key_hint_full_name">Полное имя, напр. Иван Хлестаков</string>
<string name="create_key_edit">Изменить конфигурацию ключа</string>
<!--View key-->
<string name="view_key_revoked">Аннулирован: Ключ не должен использоваться когда-либо в будущем!</string>
- <string name="view_key_expired">Срок годности истёк: Контакт должен продлить срок!</string>
<string name="view_key_expired_secret">Срок годности истёк: Вы можете продлить срок, изменив ключ!</string>
<string name="view_key_my_key">Мой ключ</string>
- <string name="view_key_verified">Подтвержденный ключ</string>
- <string name="view_key_unverified">Достоверность: Сканируйте QR код для проверки ключа!</string>
<!--Navigation Drawer-->
<string name="nav_keys">Ключи</string>
<string name="nav_encrypt_decrypt">Зашифровать/Расшифровать</string>
@@ -630,19 +616,16 @@
<string name="msg_kc_error_dup_key">Доп. ключ %s найден дважды в связке. Связка некорректна, не импортируется!</string>
<string name="msg_kc_master">Подготовка основного ключа</string>
<string name="msg_kc_master_bad_type">Удаление сертификата основного ключа неизвестного типа (%s)</string>
- <string name="msg_kc_master_bad_local">Удаление сертификата основного ключа с \"локальным\" флагом</string>
<string name="msg_kc_master_bad_err">Удаление плохого сертификата основного ключа</string>
<string name="msg_kc_master_bad_time">Удаление сертификата аннулирования ключа с отметкой времени, находящейся в будущем</string>
<string name="msg_kc_master_bad_type_uid">Удаление сертификата ID в некорректном положении</string>
<string name="msg_kc_master_bad">Удаление плохого сертификата основного ключа</string>
- <string name="msg_kc_master_local">Удаление сертификата основного ключа с \"локальным\" флагом</string>
<string name="msg_kc_revoke_dup">Удаление лишнего сертификата аннулирования ключа</string>
<string name="msg_kc_notation_dup">Удаление лишнего сертификата обозначения</string>
<string name="msg_kc_notation_empty">Удаление пустого сертификата обозначения</string>
<string name="msg_kc_sub">Обработка доп. ключа %s</string>
<string name="msg_kc_sub_bad">Удаление неверного сертификата связывания доп. ключа</string>
<string name="msg_kc_sub_bad_err">Удаление плохого сертификата связывания доп. ключа</string>
- <string name="msg_kc_sub_bad_local">Удаление сертификата связывания доп. ключа с \"локальным\" флагом</string>
<string name="msg_kc_sub_bad_keyid">Несоответствие id издателя связывания доп. ключа</string>
<string name="msg_kc_sub_bad_time">Удаление сертификата связывания доп. ключа с отметкой времени, находящейся в будущем</string>
<string name="msg_kc_sub_bad_type">Неизвестный тип сертификата доп. ключа: %s</string>
@@ -671,7 +654,6 @@
<string name="msg_kc_uid_no_cert">Нет допустимого самостоятельного сертификата для ID \'%s\', удаление из связки</string>
<string name="msg_kc_uid_remove">Удаление неверного ID \'%s\'</string>
<string name="msg_kc_uid_dup">Удаление повторяющегося ID \'%s\'. Связка содержит их два. Это может привести к отсутствию сертификатов!</string>
- <string name="msg_kc_uid_warn_encoding">ID пользователя не соответствует UTF-8!</string>
<string name="msg_kc_uat_jpeg">Обработка атрибута пользователя типа JPEG</string>
<string name="msg_kc_uat_unknown">Обработка атрибута пользователя неизвестного типа</string>
<string name="msg_kc_uat_bad_err">Удаление плохого самостоятельного сертификата для атрибута пользователя</string>
@@ -686,7 +668,6 @@
<string name="msg_kc_uat_revoke_old">Удаление устаревшего сертификата аннулирования для атрибута пользователя</string>
<string name="msg_kc_uat_no_cert">Нет допустимого самостоятельного сертификата для атрибута пользователя, удаление из связки</string>
<string name="msg_kc_uat_remove">Удаление неверного атрибута пользователя</string>
- <string name="msg_kc_uat_warn_encoding">ID пользователя не соответствует UTF-8!</string>
<!--Keyring merging log entries-->
<string name="msg_mg_error_secret_dummy">Найден новый публичный доп. ключ, но фиктивное создание секретного доп. ключа не поддерживается!</string>
<string name="msg_mg_error_heterogeneous">Попытка объединить связки с различными отпечатками!</string>
@@ -738,28 +719,47 @@
<!--Consolidate-->
<string name="msg_con">Консолидация базы данных</string>
<string name="msg_con_error_bad_state">Консолидация началась но база не кэширована! Это программная ошибка, пожалуйста, сообщите об этом.</string>
+ <string name="msg_con_error_db">Ошибка открытия базы данных!</string>
<!--Edit Key (higher level than modify)-->
+ <string name="msg_ed_error_key_not_found">Ключ не найден!</string>
<!--Promote key-->
<string name="msg_pr_error_key_not_found">Ключ не найден!</string>
<!--Other messages used in OperationLogs-->
<string name="msg_ek_error_divert">Редактирование NFC ключей (еще) не поддерживается!</string>
<string name="msg_ek_error_not_found">Ключ не найден!</string>
<!--Messages for DecryptVerify operation-->
- <string name="msg_dc_ok">OK</string>
<string name="msg_dc_unlocking">Разблокировка секретного ключа</string>
<!--Messages for VerifySignedLiteralData operation-->
+ <string name="msg_vl_clear_signature_check">Проверка подписи данных</string>
+ <string name="msg_vl_ok">ОК</string>
<!--Messages for SignEncrypt operation-->
+ <string name="msg_se">Начало операции подписи/шифровки</string>
+ <string name="msg_se_input_bytes">Обработка ввода из массива байт</string>
+ <string name="msg_se_input_uri">Обработка ввода из URI</string>
+ <string name="msg_se_error_no_input">Входных данных не получено!</string>
+ <string name="msg_se_error_input_uri_not_found">Ошибка при открытии URI для чтения!</string>
+ <string name="msg_se_error_output_uri_not_found">Ошибка при открытии URI для записи!</string>
+ <string name="msg_se_error_too_many_inputs">Входов больше, чем выходов! Скорее всего это программная ошибка, пожалуйста сообщите нам об этом! </string>
+ <string name="msg_se_success">Операция подписи/шифрования успешна!</string>
<!--Messages for PgpSignEncrypt operation-->
+ <string name="msg_pse_asymmetric">Подготовка публичных ключей для шифрования</string>
+ <string name="msg_pse_clearsign_only">Подписание пустого текста не поддерживается!</string>
<string name="msg_pse_compressing">Подготовка сжатия</string>
<string name="msg_pse_encrypting">Шифрование данных</string>
<string name="msg_pse_error_bad_passphrase">Неправильный пароль!</string>
+ <string name="msg_pse_error_hash_algo">Запрашиваемый алгоритм хеширования не поддерживается этим ключом!</string>
+ <string name="msg_pse_error_io">Обнаружена исключительная ситуация ввода\вывода во время выполнения операции!</string>
+ <string name="msg_pse_error_key_sign">Выбранным ключом подписи нельзя подписать данные! </string>
+ <string name="msg_pse_error_sign_key">Ошибка при выборке ключа подписи!</string>
<string name="msg_pse_error_nfc">Ошибка данных NFC!</string>
+ <string name="msg_pse_error_no_passphrase">Парольных фраз не найдено!</string>
<string name="msg_pse_error_pgp">Внутренняя ошибка OpenPGP!</string>
<string name="msg_crt_saving">Сохранение связки</string>
<string name="msg_crt_unlock">Разблокировка основного ключа</string>
<string name="msg_crt_warn_not_found">Ключ не найден!</string>
<string name="msg_crt_warn_cert_failed">Создание сертификата не удалось!</string>
<string name="msg_crt_upload_success">Ключ успешно загружен на сервер</string>
+ <string name="msg_import_fingerprint_ok">Проверка отпечатка успешна</string>
<string name="msg_export_error_fopen">Ошибка открытия файла!</string>
<string name="msg_export_error_db">Ошибка базы данных!</string>
<string name="msg_export_error_io">Ошибка ввода/вывода!</string>
@@ -770,6 +770,7 @@
<item quantity="few">части загруженного файла содержат данные OpenPGP, но это не ключ</item>
<item quantity="other">части загруженного файла содержат данные OpenPGP, но это не ключ</item>
</plurals>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_keys">Кэшированные пароли:</string>
<string name="passp_cache_notif_clear">Очистить кэш</string>
@@ -786,7 +787,6 @@
<string name="unknown_uid">&lt;неизв.&gt;</string>
<string name="empty_certs">Этот ключ не сертифицирован</string>
<string name="label_revocation">Причина отзыва</string>
- <string name="label_verify_status">Статус верификации</string>
<string name="label_cert_type">Тип</string>
<string name="error_key_not_found">Ключ не найден!</string>
<string name="error_key_processing">Ошибка обработки ключа!</string>
@@ -810,4 +810,5 @@
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
<string name="unlocked">Разблокирован</string>
<string name="nfc_settings">Настройки</string>
+ <string name="file_delete_successful"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-sl/strings.xml b/OpenKeychain/src/main/res/values-sl/strings.xml
index 5d6581bfc..3eb8eeba8 100644
--- a/OpenKeychain/src/main/res/values-sl/strings.xml
+++ b/OpenKeychain/src/main/res/values-sl/strings.xml
@@ -6,19 +6,18 @@
<!--title-->
<string name="title_select_recipients">Izberi ključe</string>
<string name="title_select_secret_key">Izberi zasebni ključ</string>
- <string name="title_encrypt_text">Šifriraj besedilo</string>
- <string name="title_encrypt_files">Šifriraj datoteko</string>
<string name="title_decrypt">Dešifriraj</string>
<string name="title_unlock">Odkleni ključ</string>
<string name="title_add_subkey">Dodaj podključ</string>
<string name="title_edit_key">Uredi ključ</string>
+ <string name="title_preferences">Nastavitve</string>
<string name="title_cloud_search_preferences">Nastavitve iskanja v oblaku</string>
<string name="title_api_registered_apps">Aplikacije</string>
+ <string name="title_key_server_preference">Strežniki javnih ključev</string>
<string name="title_change_passphrase">Spremeni geslo</string>
<string name="title_share_fingerprint_with">Deli prstni odtis z...</string>
<string name="title_share_key">Deli ključ z...</string>
<string name="title_share_file">Deli datoteko z...</string>
- <string name="title_share_message">Deli sporočilo z...</string>
<string name="title_encrypt_to_file">Šifriraj v datoteko</string>
<string name="title_decrypt_to_file">Dešifriraj v datoteko</string>
<string name="title_import_keys">Uvozi ključe</string>
@@ -27,33 +26,35 @@
<string name="title_export_keys">Izvozi ključe</string>
<string name="title_key_not_found">Ključ ni bil najden</string>
<string name="title_send_key">Naloži na strežnik</string>
- <string name="title_certify_key">Overi identiteto</string>
+ <string name="title_certify_key">Potrdi ključ</string>
<string name="title_key_details">Podrobnosti o ključu</string>
<string name="title_help">Pomoč</string>
<string name="title_log_display">Dnevnik</string>
<string name="title_create_key">Ustvari kluč</string>
<string name="title_exchange_keys">Izmenjava ključev</string>
<string name="title_advanced_key_info">Napredne informacije o ključu</string>
+ <string name="title_keys">Ključi</string>
+ <string name="title_delete_secret_key">Izbrišem VAŠ ključ \'%s\'?</string>
<!--section-->
<string name="section_user_ids">Identitete</string>
+ <string name="section_should_you_trust">Ali zaupate temu ključu?</string>
<string name="section_keys">Podključi</string>
<string name="section_cloud_search">Iskanje v oblaku</string>
<string name="section_general">Splošno</string>
<string name="section_defaults">Privzeto</string>
<string name="section_advanced">Napredno</string>
- <string name="section_certify">Overjanje</string>
+ <string name="section_certify">Potrdi</string>
<string name="section_actions">Ravnanja</string>
<string name="section_share_key">Ključ</string>
- <string name="section_certification_key">Vaš ključ, uporabljan za overitev</string>
<string name="section_key_server">Strežnik</string>
<string name="section_fingerprint">Prstni odtis</string>
- <string name="section_key_to_certify">Ključi za overjanje</string>
<string name="section_decrypt_files">Datoteke</string>
<string name="section_decrypt_text">Besedilo</string>
<string name="section_certs">Certifikati</string>
+ <string name="section_encrypt">Šifriraj</string>
+ <string name="section_decrypt">Dešifriraj</string>
<!--button-->
<string name="btn_decrypt_verify_file">Dešifriraj, preveri in shrani</string>
- <string name="btn_decrypt_verify_message">Dešifriraj in preveri sporočilo</string>
<string name="btn_encrypt_file">Šifriraj in shrani datoteko</string>
<string name="btn_encrypt_share_file">Šifriraj in deli datoteko</string>
<string name="btn_save">Shrani</string>
@@ -65,7 +66,6 @@
<string name="btn_next">Naprej</string>
<string name="btn_back">Nazaj</string>
<string name="btn_lookup_key">Išči ključ</string>
- <string name="btn_share_encrypted_signed">Šifriraj in deli sporočilo</string>
<string name="btn_view_cert_key">Poglej ključ za overjanje</string>
<string name="btn_create_key">Ustvari ključ</string>
<string name="btn_add_files">Dodaj datoteko</string>
@@ -86,7 +86,6 @@
<string name="menu_export_all_keys">Izvozi vse ključe</string>
<string name="menu_advanced">Prikaži dodatne informacije</string>
<!--label-->
- <string name="label_message">Sporočilo</string>
<string name="label_file">Datoteka</string>
<string name="label_files">Datoteke</string>
<string name="label_file_colon">Datoteka:</string>
@@ -106,7 +105,6 @@
<string name="label_encryption_algorithm">Šifrirni algoritem</string>
<string name="label_hash_algorithm">Zgostitveni algoritem</string>
<string name="label_symmetric">Šifriranje z geslom</string>
- <string name="label_message_compression">Stiskanje sporočil</string>
<string name="label_file_compression">Stiskanje datotek</string>
<string name="label_keyservers">Strežniki</string>
<string name="label_key_id">ID ključa</string>
@@ -123,13 +121,6 @@
<string name="expiry_date_dialog_title">Določi datum poteka veljavnosti</string>
<string name="user_id_no_name">&lt;brez imena&gt;</string>
<string name="none">&lt;nič&gt;</string>
- <string name="no_key">&lt;brez ključa&gt;</string>
- <string name="can_encrypt">lahko šifrira</string>
- <string name="can_sign">lahko podpisuje</string>
- <string name="can_certify">lahko overovi</string>
- <string name="can_certify_not">ne more overoviti</string>
- <string name="expired">potečen</string>
- <string name="revoked">preklican</string>
<plurals name="n_keys">
<item quantity="one">1 ključ</item>
<item quantity="two">%d ključa</item>
@@ -163,7 +154,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Odpri...</string>
- <string name="warning">Opozorilo</string>
<string name="error">Napaka</string>
<string name="error_message">Napaka: %s</string>
<!--key flags-->
@@ -178,12 +168,9 @@
<string name="passphrase_must_not_be_empty">Vnesite geslo.</string>
<string name="passphrase_for_symmetric_encryption">Simetrično šifriranje.</string>
<string name="passphrase_for">Vnesite geslo za \'%s\'</string>
- <string name="file_delete_confirmation">Ste prepričani, da želite izbrisati\n%s?</string>
- <string name="file_delete_successful">Uspešno izbrisano.</string>
- <string name="no_file_selected">Najprej izberite datoteko.</string>
+ <string name="no_file_selected">Najprej izberite datoteko.</string>
<string name="encrypt_sign_successful">Uspešno podpisano in/ali šifrirano.</string>
<string name="encrypt_sign_clipboard_successful">Uspešno podpisano in/ali šifrirano ter poslano v odložišče.</string>
- <string name="enter_passphrase_twice">Dvakrat vnesite geslo.</string>
<string name="select_encryption_key">Izberite vsaj en šifrirni ključ.</string>
<string name="select_encryption_or_signature_key">Vnesite vsaj en šifrirni ključ ali ključ za podpisovanje.</string>
<string name="specify_file_to_encrypt_to">Določite datoteko, v katero želite šifrirati vsebino.\nPOZOR: če datoteka že obstaja, bo prepisana.</string>
@@ -198,13 +185,11 @@
<string name="nfc_successful">Ključ uspešno poslan preko NFC Beam!</string>
<string name="key_copied_to_clipboard">Ključ je bil prekopiran v odložišče!</string>
<string name="fingerprint_copied_to_clipboard">Prstni odtis je bil prekopiran v odložišče!</string>
- <string name="select_key_to_certify">Izberite ključ, ki ga boste uporabljali za overjanje!</string>
<string name="key_too_big_for_sharing">Ključ je prevelik za delitev na ta način!</string>
<string name="text_copied_to_clipboard">Besedilo je bilo prekopirano v odložišče!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">izbris \'%s\' ni uspel</string>
<string name="error_file_not_found">ne najdem datoteke</string>
<string name="error_no_secret_key_found">ne najdem ustreznega zasebnega ključa</string>
<string name="error_external_storage_not_ready">zunanja shramba ni na voljo</string>
@@ -279,8 +264,6 @@
<string name="progress_deleting_securely">varno brišem \'%s\'…</string>
<string name="progress_deleting">brisanje ključev...</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Ime/e-pošta/ID ključa</string>
- <string name="hint_cloud_search_hint">Ime/E-pošta/Dokaz/Ključ...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -308,7 +291,6 @@
<!--Help-->
<string name="help_tab_start">Start</string>
<string name="help_tab_faq">Pogosta vprašanja</string>
- <string name="help_tab_wot">Omrežje zaupanja</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Dnevnik sprememb</string>
<string name="help_tab_about">O aplikaciji</string>
@@ -368,7 +350,6 @@
<string name="key_view_action_edit">Uredi ključ</string>
<string name="key_view_action_encrypt">Šifriraj besedilo</string>
<string name="key_view_action_encrypt_files">datoteke</string>
- <string name="key_view_action_certify">Overi identitete</string>
<string name="key_view_action_update">Posodobi s strežnika</string>
<string name="key_view_action_share_with">Deli z...</string>
<string name="key_view_action_share_nfc">Deli preko NFC</string>
@@ -392,10 +373,8 @@
</string-array>
<string name="edit_key_edit_subkey_title">Izberite dejanje!</string>
<!--Create key-->
- <string name="create_key_upload">Naloži ključ na strežnik ključev</string>
<string name="create_key_empty">To polje je obvezno</string>
<string name="create_key_passphrases_not_equal">Gesli se ne ujemata</string>
- <string name="create_key_hint_full_name">Polno ime, npr. Janez Vzorec</string>
<!--View key-->
<!--Navigation Drawer-->
<string name="nav_keys">Ključi</string>
@@ -445,7 +424,6 @@
<string name="msg_kc_sub">Obdelujem podključ %s</string>
<string name="msg_kc_sub_bad">Umikam neveljaven certifikat za povezovanje podključev</string>
<string name="msg_kc_sub_bad_err">Umikam slab certifikat za povezovanje podključev</string>
- <string name="msg_kc_sub_bad_local">Umikam certifikat za povezovanje podključev z oznako \"lokalno\"</string>
<string name="msg_kc_sub_bad_time">Umikam certifikat za povezovanje podključev z časovno znamko v prihodnosti</string>
<!--Keyring merging log entries-->
<!--createSecretKeyRing-->
@@ -469,6 +447,7 @@
<item quantity="few">Deli naložene datoteke so veljavni objekti OpenPGP a niso ključi.</item>
<item quantity="other">Deli naložene datoteke so veljavni objekti OpenPGP a niso ključi.</item>
</plurals>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Kliknite za izbris zapomnjenih gesel</string>
<string name="passp_cache_notif_n_keys">OpenKeychain pomni gesla: %d</string>
@@ -486,7 +465,6 @@
<string name="unknown_uid">&lt;neznan&gt;</string>
<string name="empty_certs">Ni potrdil za ta ključ</string>
<string name="label_revocation">Razlog za preklic</string>
- <string name="label_verify_status">Status preverjanja</string>
<string name="label_cert_type">Vrsta</string>
<string name="error_key_not_found">Ključ ni bil najden!</string>
<string name="error_key_processing">Napaka pri obdelavi ključa!</string>
@@ -500,7 +478,8 @@
<string name="error_no_encrypt_subkey">Ni nobenega podključa za šifriranje!</string>
<string name="contact_show_key">Prikaži ključ (%s)</string>
<string name="key_colon">Ključ:</string>
- <!--Passphrase wizard-->
+ <string name="file_delete_successful"></string>
+ <!--Passphrase wizard-->
<!--TODO: rename all the things!-->
<!--<string name="enter_passphrase_twice">Enter passphrase twice</string>-->
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
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 @@
<string name="pin_for">Унесите ПИН за „%s“</string>
<string name="yubikey_pin_for">Унесите ПИН за приступ Јубикључу за „%s“</string>
<string name="nfc_text">Држите Јубикључ на полеђини вашег уређаја.</string>
- <string name="file_delete_confirmation">Желите ли заиста да обришете\n%s?</string>
- <string name="file_delete_successful">Брисање је успело.</string>
- <string name="no_file_selected">Најпре изаберите фајл.</string>
+ <string name="no_file_selected">Најпре изаберите фајл.</string>
<string name="encrypt_sign_successful">Потписивање и/или шифровање је успело.</string>
<string name="encrypt_sign_clipboard_successful">Потписивање и/или шифровање на клипборд је успело.</string>
<string name="enter_passphrase_twice">Унесите лозинку два пута.</string>
@@ -240,8 +238,7 @@
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">брисање „%s“ није успело</string>
- <string name="error_file_not_found">фајл није нађен</string>
+ <string name="error_file_not_found">фајл није нађен</string>
<string name="error_no_secret_key_found">одговарајући тајни кључ није нађен</string>
<string name="error_external_storage_not_ready">спољашње складиште није спремно</string>
<string name="error_key_size_minimum512bit">величина кључа мора да буде најмање 512 бита</string>
@@ -1145,4 +1142,5 @@
<string name="nfc_write_succesful">Успешно уписах на НФЦ ознаку</string>
<string name="unlocked">Откључан</string>
<string name="nfc_settings">Поставке</string>
+ <string name="file_delete_successful"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-sv/strings.xml b/OpenKeychain/src/main/res/values-sv/strings.xml
index d22eea22a..93b833590 100644
--- a/OpenKeychain/src/main/res/values-sv/strings.xml
+++ b/OpenKeychain/src/main/res/values-sv/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Välj nycklar</string>
<string name="title_select_secret_key">Välj din nyckel</string>
- <string name="title_encrypt_text">Kryptera text</string>
- <string name="title_encrypt_files">Kryptera filer</string>
<string name="title_decrypt">Dekryptera</string>
<string name="title_unlock">Lås upp nyckel</string>
<string name="title_add_subkey">Lägg till undernyckel</string>
@@ -20,7 +18,6 @@
<string name="title_share_fingerprint_with">Dela fingeravtryck med…</string>
<string name="title_share_key">Dela nyckel med…</string>
<string name="title_share_file">Dela fil med…</string>
- <string name="title_share_message">Dela meddelande med…</string>
<string name="title_encrypt_to_file">Kryptera till fil</string>
<string name="title_decrypt_to_file">Dekryptera till fil</string>
<string name="title_import_keys">Importera nycklar</string>
@@ -29,7 +26,6 @@
<string name="title_export_keys">Exportera nycklar</string>
<string name="title_key_not_found">Nyckel hittades inte</string>
<string name="title_send_key">Ladda upp till nyckelserver</string>
- <string name="title_certify_key">Certifiera identiteter</string>
<string name="title_key_details">Nyckelinformation</string>
<string name="title_help">Hjälp</string>
<string name="title_log_display">Logg</string>
@@ -45,14 +41,11 @@
<string name="section_defaults">Förval</string>
<string name="section_advanced">Avancerat</string>
<string name="section_passphrase_cache">Cache för lösenordsfras</string>
- <string name="section_certify">Certifiera</string>
<string name="section_actions">Åtgärder</string>
<string name="section_share_key">Nyckel</string>
- <string name="section_certification_key">Din nyckel för att certifiera</string>
<string name="section_upload_key">Synkronisera nyckel</string>
<string name="section_key_server">Nyckelserver</string>
<string name="section_fingerprint">Fingeravtryck</string>
- <string name="section_key_to_certify">Nyckel att certifiera</string>
<string name="section_decrypt_files">Filer</string>
<string name="section_decrypt_text">Text</string>
<string name="section_certs">Certifikat</string>
@@ -60,7 +53,6 @@
<string name="section_decrypt">Dekryptera</string>
<!--button-->
<string name="btn_decrypt_verify_file">Dekryptera, verifiera och spara fil</string>
- <string name="btn_decrypt_verify_message">Dekryptera och verifiera meddelande</string>
<string name="btn_encrypt_file">Kryptera och spara fil</string>
<string name="btn_encrypt_share_file">Kryptera och dela fil</string>
<string name="btn_save">Spara</string>
@@ -72,7 +64,6 @@
<string name="btn_next">Nästa</string>
<string name="btn_back">Föregående</string>
<string name="btn_lookup_key">Sök efter nyckel</string>
- <string name="btn_share_encrypted_signed">Kryptera och dela meddelande</string>
<string name="btn_view_cert_key">Visa nyckel för certifiering</string>
<string name="btn_create_key">Skapa nyckel</string>
<string name="btn_add_files">Lägg till fil(er)</string>
@@ -99,7 +90,6 @@
<string name="menu_export_all_keys">Exportera alla nycklar</string>
<string name="menu_advanced">Visa avancerad information</string>
<!--label-->
- <string name="label_message">Meddelande</string>
<string name="label_file">Fil</string>
<string name="label_files">Fil(er)</string>
<string name="label_file_colon">Fil:</string>
@@ -124,7 +114,6 @@
<string name="label_symmetric">Kryptera med lösenordsfras</string>
<string name="label_passphrase_cache_ttl">Tid i cache</string>
<string name="label_passphrase_cache_subs">Cacha lösenordsfraser efter undernyckel</string>
- <string name="label_message_compression">Meddelandekompression</string>
<string name="label_file_compression">Filkompression</string>
<string name="label_keyservers">Nyckelservrar</string>
<string name="label_key_id">Nyckel-ID</string>
@@ -143,13 +132,6 @@
<string name="label_preferred">föredraget</string>
<string name="user_id_no_name">&lt;inget namn&gt;</string>
<string name="none">&lt;ingen&gt;</string>
- <string name="no_key">&lt;ingen nyckel&gt;</string>
- <string name="can_encrypt">kan kryptera</string>
- <string name="can_sign">kan signera</string>
- <string name="can_certify">kan certifiera</string>
- <string name="can_certify_not">kan inte certifiera</string>
- <string name="expired">utgången</string>
- <string name="revoked">återkallad</string>
<plurals name="n_keys">
<item quantity="one">1 nyckel</item>
<item quantity="other">%d nycklar</item>
@@ -179,7 +161,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Öppna…</string>
- <string name="warning">Varning</string>
<string name="error">Fel</string>
<string name="error_message">Fel: %s</string>
<!--key flags-->
@@ -197,20 +178,14 @@
<string name="pin_for">Ange PIN för \'%s\'</string>
<string name="yubikey_pin_for">Ange PIN för att få åtkomst till YubiKey för \'%s\'</string>
<string name="nfc_text">Håll YubiKey mot baksidan av din enhet.</string>
- <string name="file_delete_confirmation">Vill du verkligen radera\n%s?</string>
- <string name="file_delete_successful">Raderades.</string>
- <string name="no_file_selected">Välj en fil först.</string>
+ <string name="no_file_selected">Välj en fil först.</string>
<string name="encrypt_sign_successful">Signerades och/eller krypterades.</string>
<string name="encrypt_sign_clipboard_successful">Signerades och/eller krypterades till urklipp.</string>
- <string name="enter_passphrase_twice">Ange lösenordsfrasen två gånger.</string>
<string name="select_encryption_key">Välj åtminstone en krypteringsnyckel.</string>
<string name="select_encryption_or_signature_key">Välj åtminstone en krypterings- eller signeringsnyckel.</string>
<string name="specify_file_to_encrypt_to">Ange vilken fil som du vill kryptera till.\nVARNING: Om filen redan finns kommer den att skrivas över.</string>
<string name="specify_file_to_decrypt_to">Ange vilken fil som du vill dekryptera till.\nVARNING: Om filen redan finns kommer den att skrivas över.</string>
<string name="specify_file_to_export_to">Ange vilken fil som du vill exportera till.\nVARNING: Om filen redan finns kommer den att skrivas över.</string>
- <string name="key_deletion_confirmation_multi">Vill du verkligen radera alla markerade publika nycklar?\nDu kan inte ångra detta!</string>
- <string name="secret_key_deletion_confirmation">Vill du verkligen radera den PRIVATA nyckeln \'%s\'?\nDu kan inte ångra detta!</string>
- <string name="public_key_deletetion_confirmation">Vill du verkligen radera den publika nyckeln \'%s\'?\nDu kan inte ångra detta!</string>
<string name="also_export_secret_keys">Exportera även privata nycklar</string>
<string name="reinstall_openkeychain">Du stötte på en känd bugg hos Android. Installera om OpenKeychain om du vill koppla ihop dina kontaker med nycklar.</string>
<string name="key_exported">Exporterade 1 nyckel.</string>
@@ -226,13 +201,11 @@
<string name="nfc_successful">Skickade nyckel med NFC Beam!</string>
<string name="key_copied_to_clipboard">Nyckel har kopierats till urklipp!</string>
<string name="fingerprint_copied_to_clipboard">Fingeravtryck har kopierats till urklipp!</string>
- <string name="select_key_to_certify">Välj en nyckel att använda för certifiering!</string>
<string name="key_too_big_for_sharing">Nyckeln är för stor för att dela på detta sätt!</string>
<string name="text_copied_to_clipboard">Text har kopierats till urklipp!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">det gick inte att radera \'%s\' </string>
<string name="error_file_not_found">fil hittades inte</string>
<string name="error_no_secret_key_found">ingen passande privat nyckel hittades</string>
<string name="error_external_storage_not_ready">extern lagring inte redo</string>
@@ -317,8 +290,6 @@
<string name="progress_con_saving">konsolidera: sparar till cache…</string>
<string name="progress_con_reimport">konsolidera: återimporterar…</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Namn/e-post/nyckel-ID…</string>
- <string name="hint_cloud_search_hint">Namn/e-post/bevis/nyckel…</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -345,7 +316,6 @@
<string name="compression_very_slow">väldigt långsam</string>
<!--Help-->
<string name="help_tab_faq">Vanliga frågor</string>
- <string name="help_tab_wot">Tillitsnät</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Ändringslogg</string>
<string name="help_tab_about">Om</string>
@@ -476,7 +446,6 @@
<string name="key_view_action_edit">Redigera nyckel</string>
<string name="key_view_action_encrypt">Kryptera text</string>
<string name="key_view_action_encrypt_files">filer</string>
- <string name="key_view_action_certify">Certifiera identiteter</string>
<string name="key_view_action_update">Uppdatera från nyckelserver</string>
<string name="key_view_action_share_with">Dela med…</string>
<string name="key_view_action_share_nfc">Dela via NFC</string>
@@ -514,15 +483,12 @@
<string name="edit_key_error_add_identity">Lägg till åtminstone en identitet!</string>
<string name="edit_key_error_add_subkey">Lägg till åtminstone en undernyckel!</string>
<!--Create key-->
- <string name="create_key_upload">Ladda upp nyckel till nyckelserver</string>
<string name="create_key_empty">Detta fält krävs</string>
<string name="create_key_passphrases_not_equal">Lösenordsfraser stämmer inte överens</string>
<string name="create_key_final_text">Du angav följande identitet:</string>
<string name="create_key_final_robot_text">Att skapa en nyckel kan ta ett tag, drick en kopp kaffe under tiden…</string>
<string name="create_key_rsa">(3 undernycklar, RSA, 4096 bit)</string>
<string name="create_key_custom">(anpassad nyckelkonfiguration)</string>
- <string name="create_key_identity_text">Ange ditt fullständiga namn, e-postadress och välj en lösenordsfras.</string>
- <string name="create_key_hint_full_name">Fullständigt namn, t.ex. Kalle Svensson</string>
<string name="create_key_edit">Ändra nyckelkonfiguration</string>
<!--View key-->
<!--Navigation Drawer-->
@@ -652,11 +618,9 @@
<string name="msg_kc_error_master_algo">Den här huvudnyckeln använder en okänd (%s) algoritm!</string>
<string name="msg_kc_master">Bearbetar huvudnyckel</string>
<string name="msg_kc_master_bad_type">Tar bort huvudnyckelcertifikat av okänd typ (%s)</string>
- <string name="msg_kc_master_bad_local">Tar bort huvudnyckelcertifikat med flaggan \"local\"</string>
<string name="msg_kc_master_bad_err">Tar bort dåligt huvudnyckelcertifikat</string>
<string name="msg_kc_master_bad_time">Tar bort återkallelsecertifikat för nyckelring med framtida tidstämpel</string>
<string name="msg_kc_master_bad">Tar bort dåligt huvudnyckelcertifikat</string>
- <string name="msg_kc_master_local">Tar bort huvudnyckelcertifikat med flaggan \"local\"</string>
<string name="msg_kc_revoke_dup">Tar bort överflödigt återkallelsecertifikat för nyckelring</string>
<string name="msg_kc_sub">Bearbetar undernyckel %s</string>
<string name="msg_kc_sub_no_cert">Inget giltigt certifikat hittades för %s, tar bort från nyckelring</string>
@@ -672,7 +636,6 @@
<string name="msg_kc_uid_revoke_old">Tar bort föråldrat återkallelsecertifikat för användar-ID \'%s\'</string>
<string name="msg_kc_uid_no_cert">Inget giltigt eget-certifikat hittades för användar-ID \'%s\', tar bort från nyckelring</string>
<string name="msg_kc_uid_remove">Tar bort ogiltigt användar-ID \'%s\'</string>
- <string name="msg_kc_uid_warn_encoding">Användar-ID verifierar inte som UTF-8!</string>
<string name="msg_kc_uat_remove">Tar bort ogiltigt användarattribut</string>
<!--Keyring merging log entries-->
<string name="msg_mg_error_heterogeneous">Försökte att slå ihop nyckelringar med olika fingeravtryck!</string>
@@ -757,7 +720,6 @@
<string name="msg_dc_clear_decompress">Packar upp komprimerad data</string>
<string name="msg_dc_clear_meta_file">Filnamn: %s</string>
<string name="msg_dc_clear_meta_mime">MIME-typ: %s</string>
- <string name="msg_dc_clear_meta_size">Filstorlek: %s</string>
<string name="msg_dc_clear_signature_bad">Signaturkontroll INTE OK!</string>
<string name="msg_dc_clear_signature_check">Verifierar signaturdata</string>
<string name="msg_dc_clear_signature_ok">Signaturkontroll OK</string>
@@ -766,7 +728,6 @@
<string name="msg_dc_error_extract_key">Okänt fel vid upplåsning av nyckel</string>
<string name="msg_dc_error_integrity_check">Fel vid integritetskontroll!</string>
<string name="msg_dc_ok_meta_only">Endast metadata krävdes, hoppar över dekryptering</string>
- <string name="msg_dc_ok">OK</string>
<string name="msg_dc_pass_cached">Använder lösenordsfras från cache</string>
<string name="msg_dc_prep_streams">Förbereder strömmar för dekryptering</string>
<string name="msg_dc">Startar dekrypteringsoperation…</string>
@@ -842,6 +803,7 @@
<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>
</plurals>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Klicka för att rensa cachade lösenordsfraser</string>
<string name="passp_cache_notif_n_keys">OpenKeychain har cachat %d lösenordsfraser</string>
@@ -860,7 +822,6 @@
<string name="empty_certs">Inga certifikat för den här nyckeln</string>
<string name="section_uids_to_certify">Identiteter för</string>
<string name="label_revocation">Anledning till återkallelse</string>
- <string name="label_verify_status">Verifieringsstatus</string>
<string name="label_cert_type">Typ</string>
<string name="error_key_not_found">Nyckel hittades inte!</string>
<string name="error_key_processing">Fel vid bearbetning av nyckel!</string>
@@ -902,4 +863,5 @@
<string name="no_nfc_support">Denna enhet stöder inte NFC</string>
<string name="unlocked">Upplåst</string>
<string name="nfc_settings">Inställningar</string>
+ <string name="file_delete_successful"></string>
</resources>
diff --git a/OpenKeychain/src/main/res/values-tr/strings.xml b/OpenKeychain/src/main/res/values-tr/strings.xml
index ee5306cc7..2b60c9758 100644
--- a/OpenKeychain/src/main/res/values-tr/strings.xml
+++ b/OpenKeychain/src/main/res/values-tr/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Anahtarları Seç</string>
<string name="title_select_secret_key">Anahtarını Seç</string>
- <string name="title_encrypt_text">Metni Şifrele</string>
- <string name="title_encrypt_files">Dosyaları Şifrele</string>
<string name="title_decrypt">Şifre çöz</string>
<string name="title_add_subkey">Alt anahtar ekle</string>
<string name="title_edit_key">Anahtarı düzenle</string>
@@ -17,7 +15,6 @@
<string name="title_share_fingerprint_with">Parmak izini paylaş...</string>
<string name="title_share_key">Anahtarı paylaş...</string>
<string name="title_share_file">Dosyayı paylaş...</string>
- <string name="title_share_message">Mesajı paylaş...</string>
<string name="title_encrypt_to_file">Dosyaya Şifrele</string>
<string name="title_decrypt_to_file">Dosyaya Çözümle</string>
<string name="title_import_keys">Anahtarları Al</string>
@@ -26,7 +23,6 @@
<string name="title_export_keys">Anahtarları Ver</string>
<string name="title_key_not_found">Anahtar Bulunamadı</string>
<string name="title_send_key">Anahtar Sunucusuna Yükle</string>
- <string name="title_certify_key">Kimlikleri Tasdikle</string>
<string name="title_key_details">Anahtar Detayları</string>
<string name="title_help">Yardım</string>
<string name="title_log_display">Günlük</string>
@@ -41,20 +37,16 @@
<string name="section_defaults">Varsayılanlar</string>
<string name="section_advanced">Gelişmiş</string>
<string name="section_passphrase_cache">Parola Önbelleği</string>
- <string name="section_certify">Tasdik et</string>
<string name="section_actions">Eylemler</string>
<string name="section_share_key">Anahtar</string>
- <string name="section_certification_key">Tasdik işlemi için kullanılan anahtarınız</string>
<string name="section_upload_key">Anahtarı Eşitle</string>
<string name="section_key_server">Anahtar Sunucusu</string>
<string name="section_fingerprint">Parmak izi</string>
- <string name="section_key_to_certify">Tasdik edilecek anahtar</string>
<string name="section_decrypt_files">Dosyalar</string>
<string name="section_decrypt_text">Metin</string>
<string name="section_certs">Sertifikalar</string>
<!--button-->
<string name="btn_decrypt_verify_file">Şifreyi çöz, doğrula ve dosyayı kaydet</string>
- <string name="btn_decrypt_verify_message">Şifreyi çöz ve mesajı doğrula</string>
<string name="btn_encrypt_file">Şifrele ve dosyayı kaydet</string>
<string name="btn_encrypt_share_file">Şifrele ve dosyayı paylaş</string>
<string name="btn_save">Kaydet</string>
@@ -66,7 +58,6 @@
<string name="btn_next">İleri</string>
<string name="btn_back">Geri</string>
<string name="btn_lookup_key">Anahtarı ara</string>
- <string name="btn_share_encrypted_signed">Şifrele ve mesajı paylaş</string>
<string name="btn_view_cert_key">Tasdikleme anahtarını görüntüle</string>
<string name="btn_create_key">Anahtar oluştur</string>
<string name="btn_add_files">Dosya(lar) ekle</string>
@@ -89,7 +80,6 @@
<string name="menu_export_all_keys">Tüm anahtarları ver</string>
<string name="menu_advanced">Gelişmiş bilgiyi göster</string>
<!--label-->
- <string name="label_message">Mesaj</string>
<string name="label_file">Dosya</string>
<string name="label_files">Dosya(lar)</string>
<string name="label_file_colon">Dosya:</string>
@@ -114,7 +104,6 @@
<string name="label_symmetric">Parolayla şifrele</string>
<string name="label_passphrase_cache_ttl">Önbellek zamanı</string>
<string name="label_passphrase_cache_subs">Parolaları altanahtarlara göre önbellekle</string>
- <string name="label_message_compression">Mesaj sıkıştırma</string>
<string name="label_file_compression">Dosya sıkıştırma</string>
<string name="label_keyservers">Anahtar Sunucuları</string>
<string name="label_key_id">Anahtar ID</string>
@@ -134,13 +123,6 @@
<string name="label_preferred">tercih edilen</string>
<string name="user_id_no_name">&lt;isimsiz&gt;</string>
<string name="none">&lt;hiçbiri&gt;</string>
- <string name="no_key">&lt;anahtar yok&gt;</string>
- <string name="can_encrypt">şifreleyebilir</string>
- <string name="can_sign">imzalayabilir</string>
- <string name="can_certify">tasdikleyebilir</string>
- <string name="can_certify_not">tasdikleyemez</string>
- <string name="expired">zaman aşımına uğramış</string>
- <string name="revoked">yürürlükten kaldırılmış</string>
<plurals name="n_keys">
<item quantity="one">1 anahtar</item>
<item quantity="other">%d anahtar</item>
@@ -170,7 +152,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Aç...</string>
- <string name="warning">Uyarı</string>
<string name="error">Hata</string>
<string name="error_message">Hata: %s</string>
<!--key flags-->
@@ -186,20 +167,14 @@
<string name="passphrase_for_symmetric_encryption">Simetrik şifreleme.</string>
<string name="passphrase_for">\'%s\' için bir parola girin</string>
<string name="nfc_text">YubiKey\'inizi cihazınızın arkasında tutun.</string>
- <string name="file_delete_confirmation">Silmek istediğinize emin misiniz\n%s?</string>
- <string name="file_delete_successful">Başarıyla silindi.</string>
- <string name="no_file_selected">Önce bir dosya seçin.</string>
+ <string name="no_file_selected">Önce bir dosya seçin.</string>
<string name="encrypt_sign_successful">Başarıyla imzalandı ve/veya şifrelendi.</string>
<string name="encrypt_sign_clipboard_successful">Kopyalama önbelleğine başarıyla imzalandı ve/veya şifrelendi.</string>
- <string name="enter_passphrase_twice">Parolanızı iki kere girin.</string>
<string name="select_encryption_key">En az bir şifreleme anahtarı seçiniz.</string>
<string name="select_encryption_or_signature_key">En az bir şifreleme anahtarı veya imza anahtarı seçiniz.</string>
<string name="specify_file_to_encrypt_to">Lütfen şifreleme sonucu hangi dosyanın oluşturulması gerektiğini belirtin.\nUYARI: Eğer dosya mevcutsa üzerine yazılacaktır.</string>
<string name="specify_file_to_decrypt_to">Lütfen şifre çözme sonucu hangi dosyanın oluşturulması gerektiğini belirtin.\nUYARI: Eğer dosya mevcutsa üzerine yazılacaktır.</string>
<string name="specify_file_to_export_to">Lütfen dışa aktarım için hangi dosyanın kullanılması gerektiğini belirtin.\nUYARI: Eğer dosya mevcutsa üzerine yazılacaktır.</string>
- <string name="key_deletion_confirmation_multi">Seçilen tüm genel anahtarları gerçekten silmek istiyor musunuz?\nBu işlemi geri alamazsınız!</string>
- <string name="secret_key_deletion_confirmation">\'%s\' ÖZEL anahtarını gerçekten silmek istiyor musunuz?\nBu işlemi geri alamazsınız!</string>
- <string name="public_key_deletetion_confirmation">\'%s\' genel anahtarını gerçekten silmek istiyor musunuz?\nBu işlemi geri alamazsınız!</string>
<string name="also_export_secret_keys">Özel anahtarları da dışa aktar</string>
<string name="reinstall_openkeychain">Android için bilinen bir hataya denk geldiniz. Eğer kişilerinizi anahtarlarla eşlemek istiyorsanız, lütfen OpenKeychain uygulamasını yeniden yükleyin.</string>
<string name="key_exported">1 anahtar başarıyla dışa aktarıldı.</string>
@@ -215,13 +190,11 @@
<string name="nfc_successful">Anahtar NFC Beam ile başarıyla gönderildi!</string>
<string name="key_copied_to_clipboard">Anahtar kopyalama önbelleğine kopyalandı!</string>
<string name="fingerprint_copied_to_clipboard">Parmak izi kopyalama önbelleğine kopyalandı!</string>
- <string name="select_key_to_certify">Lütfen tasdikleme için kullanılacak bir anahtar seçin!</string>
<string name="key_too_big_for_sharing">Anahtar bu yolla paylaşılamayacak kadar büyük!</string>
<string name="text_copied_to_clipboard">Metin kopyalama önbelleğine kopyalandı!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">\'%s\' silmesi başarısız oldu</string>
<string name="error_file_not_found">dosya bulunamadı</string>
<string name="error_no_secret_key_found">uygun bir özel anahtar bulunamadı</string>
<string name="error_external_storage_not_ready">harici depolama hazır değil</string>
@@ -305,8 +278,6 @@
<string name="progress_con_saving">birleştir: önbelleğe kaydediliyor...</string>
<string name="progress_con_reimport">birleştir: yeniden içe aktarılıyor...</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">İsim/Eposta/Anahtar ID...</string>
- <string name="hint_cloud_search_hint">İsim/Eposta/Kanıt/Anahtar...</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -334,7 +305,6 @@
<!--Help-->
<string name="help_tab_start">Başla</string>
<string name="help_tab_faq">SSS</string>
- <string name="help_tab_wot">Güven Ağı</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">Sürüm Notları</string>
<string name="help_tab_about">Hakkında</string>
@@ -408,7 +378,6 @@
<string name="key_view_action_edit">Anahtarı düzenle</string>
<string name="key_view_action_encrypt">Metni şifrele</string>
<string name="key_view_action_encrypt_files">dosyalar</string>
- <string name="key_view_action_certify">Kimlikleri Tasdikle</string>
<string name="key_view_action_update">Anahtar sunucusundan güncelle</string>
<string name="key_view_action_share_with">Şu şekilde paylaş...</string>
<string name="key_view_action_share_nfc">NFC üzerinden Paylaş</string>
@@ -442,15 +411,12 @@
<string name="edit_key_error_add_identity">En az bir kimlik ekleyin!</string>
<string name="edit_key_error_add_subkey">En az bir alt anahtar ekleyin!</string>
<!--Create key-->
- <string name="create_key_upload">Anahtarı anahtar sunucusuna yükle</string>
<string name="create_key_empty">Bu alan zorunludur</string>
<string name="create_key_passphrases_not_equal">Parolalar eşleşmedi</string>
<string name="create_key_final_text">Şu kimliği girdiniz:</string>
<string name="create_key_final_robot_text">Anahtar oluşturma biraz zaman alabilir, bu sırada bir çay için...</string>
<string name="create_key_rsa">(3 alt anahtar, RSA, 4096 bit)</string>
<string name="create_key_custom">(özel anahtar yapılandırması)</string>
- <string name="create_key_identity_text">Tam isminizi, e-posta adresinizi girin ve bir parola seçin.</string>
- <string name="create_key_hint_full_name">Tam Ad, örneğin: Max Mustermann</string>
<string name="create_key_edit">Anahtar yapılandırmasını değiştir.</string>
<!--View key-->
<!--Navigation Drawer-->
@@ -508,6 +474,7 @@
<string name="msg_del_error_empty">Silinecek bir şey yok!</string>
<string name="msg_acc_saved">Hesap kaydedildi</string>
<string name="msg_download_success">Başarıyla indirildi!</string>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_clear">Önbelleği Temizle</string>
<string name="passp_cache_notif_pwd">Parola</string>
@@ -522,7 +489,6 @@
<string name="unknown_uid">&lt;bilinmeyen&gt;</string>
<string name="empty_certs">Bu anahtar için sertifika yok</string>
<string name="label_revocation">Yürürlükten Kaldırma Nedeni</string>
- <string name="label_verify_status">Doğrulama Durumu</string>
<string name="label_cert_type">Tip</string>
<string name="error_key_not_found">Anahtar bulunamadı!</string>
<string name="error_key_processing">Anahtar işlenirken hata!</string>
@@ -542,7 +508,8 @@
<string name="error_multi_not_supported">Birden çok dosyanın kaydedilmesi desteklenmiyor. Bu şu anki Android\'in bir kısıtlamasıdır.</string>
<string name="key_colon">Anahtar:</string>
<string name="exchange_description">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.</string>
- <!--Passphrase wizard-->
+ <string name="file_delete_successful"></string>
+ <!--Passphrase wizard-->
<!--TODO: rename all the things!-->
<!--<string name="enter_passphrase_twice">Enter passphrase twice</string>-->
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml
index 365821f4a..b3a161758 100644
--- a/OpenKeychain/src/main/res/values-uk/strings.xml
+++ b/OpenKeychain/src/main/res/values-uk/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">Вибрати ключі</string>
<string name="title_select_secret_key">Виберіть ваш ключ</string>
- <string name="title_encrypt_text">Зашифрувати текст…</string>
- <string name="title_encrypt_files">Зашифрувати файли</string>
<string name="title_decrypt">Розшифрувати</string>
<string name="title_add_subkey">Додати підключ</string>
<string name="title_edit_key">Редагувати ключ</string>
@@ -17,7 +15,6 @@
<string name="title_share_fingerprint_with">Поділитися відбитком із…</string>
<string name="title_share_key">Поділитися ключем з…</string>
<string name="title_share_file">Поширити файл з…</string>
- <string name="title_share_message">Поширити повідомлення із…</string>
<string name="title_encrypt_to_file">Зашифрувати до файлу</string>
<string name="title_decrypt_to_file">Розшифрувати до файлу</string>
<string name="title_import_keys">Імпортувати ключі</string>
@@ -26,7 +23,6 @@
<string name="title_export_keys">Експортувати ключі</string>
<string name="title_key_not_found">Ключ не знайдено</string>
<string name="title_send_key">Завантажити на сервер ключів</string>
- <string name="title_certify_key">Сертифікувати сутності</string>
<string name="title_key_details">Подробиці про ключ</string>
<string name="title_help">Довідка</string>
<string name="title_log_display">Журнал</string>
@@ -41,20 +37,16 @@
<string name="section_defaults">Типове</string>
<string name="section_advanced">Додаткове</string>
<string name="section_passphrase_cache">Кеш парольної фрази</string>
- <string name="section_certify">Сертифікувати</string>
<string name="section_actions">Дії</string>
<string name="section_share_key">Ключ</string>
- <string name="section_certification_key">Ваш ключ використаний для сертифікації</string>
<string name="section_upload_key">Синхронізувати ключ</string>
<string name="section_key_server">Сервер ключів</string>
<string name="section_fingerprint">Відбиток</string>
- <string name="section_key_to_certify">Ключ для сертикації</string>
<string name="section_decrypt_files">Файли</string>
<string name="section_decrypt_text">Текст</string>
<string name="section_certs">Сертифікати</string>
<!--button-->
<string name="btn_decrypt_verify_file">Розшифрувати, перевірити та зберегти файл</string>
- <string name="btn_decrypt_verify_message">Розшифрувати і перевірити повідомлення</string>
<string name="btn_encrypt_file">Шифрувати і зберегти файл</string>
<string name="btn_encrypt_share_file">Зашифрувати та поширити файл</string>
<string name="btn_save">Зберегти</string>
@@ -66,7 +58,6 @@
<string name="btn_next">Далі</string>
<string name="btn_back">Назад</string>
<string name="btn_lookup_key">Шукати ключ</string>
- <string name="btn_share_encrypted_signed">Зашифрувати і поширити повідомлення</string>
<string name="btn_view_cert_key">Переглянути ключ сертифікації</string>
<string name="btn_create_key">Створити ключ</string>
<string name="btn_add_files">Додати файл(и)</string>
@@ -89,7 +80,6 @@
<string name="menu_export_all_keys">Експортувати усі ключі</string>
<string name="menu_advanced">Показати додаткову інформацію</string>
<!--label-->
- <string name="label_message">Повідомлення</string>
<string name="label_file">Файл</string>
<string name="label_files">Файл(и)</string>
<string name="label_file_colon">Файл:</string>
@@ -114,7 +104,6 @@
<string name="label_symmetric">Зашифрувати з парольною фразою</string>
<string name="label_passphrase_cache_ttl">Кешувати час</string>
<string name="label_passphrase_cache_subs">Кешувати парольні фрази за підключем</string>
- <string name="label_message_compression">Стиснення повідомлення</string>
<string name="label_file_compression">Стиснення файлу</string>
<string name="label_keyservers">Сервери ключів</string>
<string name="label_key_id">ІД ключа</string>
@@ -134,13 +123,6 @@
<string name="label_preferred">бажаний</string>
<string name="user_id_no_name">&lt;без імені&gt;</string>
<string name="none">&lt;жоден&gt;</string>
- <string name="no_key">&lt;без ключа&gt;</string>
- <string name="can_encrypt">можна зашифрувати</string>
- <string name="can_sign">можна підписати</string>
- <string name="can_certify">можна сертифікувати</string>
- <string name="can_certify_not">не можна сертифікувати</string>
- <string name="expired">закінчився</string>
- <string name="revoked">скасовано</string>
<plurals name="n_keys">
<item quantity="one">1 ключ</item>
<item quantity="few">%d ключі</item>
@@ -172,7 +154,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">Відкрити…</string>
- <string name="warning">Попередження</string>
<string name="error">Помилка</string>
<string name="error_message">Помилка: %s</string>
<!--key flags-->
@@ -187,20 +168,14 @@
<string name="passphrase_must_not_be_empty">Будь ласка, введіть парольну фразу.</string>
<string name="passphrase_for_symmetric_encryption">Симетричне шифрування.</string>
<string name="passphrase_for">Введіть парольну фразу для \'%s\'</string>
- <string name="file_delete_confirmation">Ви справді хочете вилучити\n%s?</string>
- <string name="file_delete_successful">Успішно вилучено.</string>
- <string name="no_file_selected">Виберіть спершу файл.</string>
+ <string name="no_file_selected">Виберіть спершу файл.</string>
<string name="encrypt_sign_successful">Успішно підписано та/або перевірено.</string>
<string name="encrypt_sign_clipboard_successful">Успішно підписано та/або зашифровано до буфера обміну.</string>
- <string name="enter_passphrase_twice">Введіть двічі парольну фразу.</string>
<string name="select_encryption_key">Виберіть принаймні один ключ шифрування.</string>
<string name="select_encryption_or_signature_key">Виберіть принаймні один ключ шифрування або ключ підпису.</string>
<string name="specify_file_to_encrypt_to">Будь ласка, виберіть файл для шифрування.\nУВАГА! Якщо файл існує, то він буде переписаний.</string>
<string name="specify_file_to_decrypt_to">Будь ласка, виберіть файл для розшифрування.\nУВАГА! Якщо файл існує, то він буде переписаний.</string>
<string name="specify_file_to_export_to">Будь ласка, виберіть файл для експорту.\nУВАГА! Якщо файл існує, то він буде переписаний.</string>
- <string name="key_deletion_confirmation_multi">Ви справді хочете вилучити усі вибрані відкриті ключі?\nВи не зможете це відмінити!</string>
- <string name="secret_key_deletion_confirmation">Ви справді хочете вилучити секретний ключ \'%s\'?\nВи не зможете це відмінити!</string>
- <string name="public_key_deletetion_confirmation">Ви справді хочете вилучити відкритий ключ \'%s\'?\nВи не зможете це відмінити!</string>
<string name="also_export_secret_keys">Також експортувати секретні ключі</string>
<string name="key_exported">Успішно експортовано 1 ключ.</string>
<string name="keys_exported">Успішно експортовано %d ключів.</string>
@@ -219,13 +194,11 @@
<string name="nfc_successful">Успішно надіслано ключ через промінь NFC!</string>
<string name="key_copied_to_clipboard">Ключ вже скопійовано у буфер обміну!</string>
<string name="fingerprint_copied_to_clipboard">Відбиток вже скопійовано до буфера обміну!</string>
- <string name="select_key_to_certify">Будь ласка, виберіть ключ для використання у сертифікації!</string>
<string name="key_too_big_for_sharing">Ключ надто великий для цього способу поширення!</string>
<string name="text_copied_to_clipboard">Текст вже скопійовано у буфер обміну!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">вилучення \'%s\' провалилося</string>
<string name="error_file_not_found">файл не знайдено</string>
<string name="error_no_secret_key_found">відповідного секретного ключа не знайдено</string>
<string name="error_external_storage_not_ready">зовнішній носій не готовий</string>
@@ -303,7 +276,6 @@
<string name="progress_con_saving">consolidate: зберігається у кеші…</string>
<string name="progress_con_reimport">consolidate: повторний імпорт…</string>
<!--action strings-->
- <string name="hint_keyserver_search_hint">Назва/Ел. пошта/ІД ключа…</string>
<!--key bit length selections-->
<string name="key_size_512">512</string>
<string name="key_size_768">768</string>
@@ -331,7 +303,6 @@
<!--Help-->
<string name="help_tab_start">Початок</string>
<string name="help_tab_faq">ЧАП</string>
- <string name="help_tab_wot">Мережа довіри</string>
<string name="help_tab_nfc_beam">NFC промінь</string>
<string name="help_tab_changelog">Журнал змін</string>
<string name="help_tab_about">Про</string>
@@ -416,7 +387,6 @@
<string name="key_view_action_edit">Редагувати ключ</string>
<string name="key_view_action_encrypt">Зашифрувати текст</string>
<string name="key_view_action_encrypt_files">файли</string>
- <string name="key_view_action_certify">Сертифікувати сутності</string>
<string name="key_view_action_update">Оновити із сервера ключів</string>
<string name="key_view_action_share_with">Поділитися із…</string>
<string name="key_view_action_share_nfc">Поділитися через NFC</string>
@@ -445,12 +415,9 @@
<string name="edit_key_error_add_identity">Додати хоча б одну сутність!</string>
<string name="edit_key_error_add_subkey">Додати хоча б один підключ!</string>
<!--Create key-->
- <string name="create_key_upload">Відвантажити ключ на сервер ключів</string>
<string name="create_key_empty">Це поле - обов\'язкове</string>
<string name="create_key_passphrases_not_equal">Паролі фрази не збігаються</string>
<string name="create_key_final_text">Ви ввели наступну сутність:</string>
- <string name="create_key_identity_text">Введіть ваше повне ім\'я, електронну адреса та оберіть парольну фразу.</string>
- <string name="create_key_hint_full_name">Повне ім\'я, наприклад Степан Бандера</string>
<!--View key-->
<!--Navigation Drawer-->
<string name="nav_keys">Ключі</string>
@@ -584,10 +551,8 @@
<!--Messages for DecryptVerify operation-->
<string name="msg_dc_clear_meta_file">Назва файла: %s</string>
<string name="msg_dc_clear_meta_mime">Тип MIME: %s</string>
- <string name="msg_dc_clear_meta_size">Розмір файла: %s</string>
<string name="msg_dc_clear_meta_time">Час зміни: %s</string>
<string name="msg_dc_error_integrity_check">Помилка перевірки цілісності!</string>
- <string name="msg_dc_ok">Гаразд</string>
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
@@ -596,6 +561,7 @@
<item quantity="few">частини завантаженого файлу є вірним об\'єктом OpenPGP, але не ключем OpenPGP</item>
<item quantity="other">частин завантаженого файлу є вірним об\'єктом OpenPGP, але не ключем OpenPGP</item>
</plurals>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Клацніть для очищення кешованих парольних фраз</string>
<string name="passp_cache_notif_n_keys">OpenKeychain має %d кешованих парольних фраз</string>
@@ -612,7 +578,6 @@
<string name="unknown_uid">&lt;невідомо&gt;</string>
<string name="empty_certs">Немає сертифікатів для цього ключа</string>
<string name="label_revocation">Причина відхилення</string>
- <string name="label_verify_status">Стан перевірки</string>
<string name="label_cert_type">Тип</string>
<string name="error_key_not_found">Ключ не знайдено!</string>
<string name="error_key_processing">Помилка опрацювання ключа!</string>
@@ -623,7 +588,8 @@
<string name="can_sign_not">не можна підписати</string>
<string name="error_no_encrypt_subkey">Жодний підключ шифрування недоступний!</string>
<string name="contact_show_key">Показати ключ (%s)</string>
- <!--Passphrase wizard-->
+ <string name="file_delete_successful"></string>
+ <!--Passphrase wizard-->
<!--TODO: rename all the things!-->
<!--<string name="enter_passphrase_twice">Enter passphrase twice</string>-->
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
diff --git a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml
index b5b57d91f..286e98b79 100644
--- a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml
+++ b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml
@@ -6,8 +6,6 @@
<!--title-->
<string name="title_select_recipients">選擇金鑰</string>
<string name="title_select_secret_key">選擇私鑰</string>
- <string name="title_encrypt_text">加密文字</string>
- <string name="title_encrypt_files">加密檔案</string>
<string name="title_decrypt">解密</string>
<string name="title_add_subkey">新增子金鑰</string>
<string name="title_edit_key">編輯金鑰</string>
@@ -17,7 +15,6 @@
<string name="title_share_fingerprint_with">分享指紋…</string>
<string name="title_share_key">分享金鑰…</string>
<string name="title_share_file">分享檔案…</string>
- <string name="title_share_message">分享訊息…</string>
<string name="title_encrypt_to_file">加密到檔案</string>
<string name="title_decrypt_to_file">解密到檔案</string>
<string name="title_import_keys">匯入金鑰</string>
@@ -26,7 +23,6 @@
<string name="title_export_keys">匯出所有金鑰</string>
<string name="title_key_not_found">找不到金鑰</string>
<string name="title_send_key">上傳到金鑰伺服器</string>
- <string name="title_certify_key">簽署身份</string>
<string name="title_key_details">金鑰內容</string>
<string name="title_help">說明</string>
<string name="title_log_display">紀錄</string>
@@ -41,15 +37,12 @@
<string name="section_defaults">預設</string>
<string name="section_advanced">進階</string>
<string name="section_passphrase_cache">口令快取</string>
- <string name="section_certification_key">用來簽署的私鑰</string>
<string name="section_key_server">金鑰伺服器</string>
<string name="section_fingerprint">指紋</string>
- <string name="section_key_to_certify">要簽署的金鑰</string>
<string name="section_decrypt_files">檔案</string>
<string name="section_decrypt_text">文字</string>
<!--button-->
<string name="btn_decrypt_verify_file">解密並驗證檔案</string>
- <string name="btn_decrypt_verify_message">解密並驗證訊息</string>
<string name="btn_encrypt_file">加密檔案</string>
<string name="btn_encrypt_share_file">加密並分享檔案</string>
<string name="btn_save">儲存</string>
@@ -61,7 +54,6 @@
<string name="btn_next">下一步</string>
<string name="btn_back">返回</string>
<string name="btn_lookup_key">尋找金鑰</string>
- <string name="btn_share_encrypted_signed">加密並分享訊息</string>
<string name="btn_view_cert_key">檢視簽署的金鑰</string>
<string name="btn_create_key">建立金鑰</string>
<string name="btn_add_files">加入檔案</string>
@@ -83,7 +75,6 @@
<string name="menu_export_all_keys">匯出所有金鑰</string>
<string name="menu_advanced">顯示進階資訊</string>
<!--label-->
- <string name="label_message">訊息</string>
<string name="label_file">檔案</string>
<string name="label_files">檔案</string>
<string name="label_no_passphrase">沒有口令</string>
@@ -100,7 +91,6 @@
<string name="label_hash_algorithm">雜湊演算法</string>
<string name="label_symmetric">使用口令加密</string>
<string name="label_passphrase_cache_ttl">快取時間</string>
- <string name="label_message_compression">訊息壓縮</string>
<string name="label_file_compression">檔案壓縮</string>
<string name="label_keyservers">金鑰伺服器</string>
<string name="label_key_id">金鑰ID</string>
@@ -116,12 +106,6 @@
<string name="label_send_key">與雲端同步</string>
<string name="label_fingerprint">指紋</string>
<string name="expiry_date_dialog_title">設定效期</string>
- <string name="can_encrypt">可以加密</string>
- <string name="can_sign">可以簽名</string>
- <string name="can_certify">可以簽署</string>
- <string name="can_certify_not">無法簽署</string>
- <string name="expired">已過期</string>
- <string name="revoked">已撤銷</string>
<string name="secret_key">密鑰:</string>
<!--choice-->
<string name="choice_15secs">15秒</string>
@@ -142,7 +126,6 @@
<string name="ecdh">ECDH</string>
<string name="ecdsa">ECDSA</string>
<string name="filemanager_title_open">開啟…</string>
- <string name="warning">警告</string>
<string name="error">錯誤</string>
<string name="error_message">錯誤: %s</string>
<!--key flags-->
@@ -156,33 +139,25 @@
<string name="passphrases_do_not_match">口令不相符。</string>
<string name="passphrase_must_not_be_empty">請輸入口令。</string>
<string name="passphrase_for_symmetric_encryption">對稱加密。</string>
- <string name="file_delete_confirmation">你確定要刪除\n%s?</string>
- <string name="file_delete_successful">刪除成功。</string>
- <string name="no_file_selected">請先選擇檔案。</string>
+ <string name="no_file_selected">請先選擇檔案。</string>
<string name="encrypt_sign_successful">成功簽名並/或加密。</string>
<string name="encrypt_sign_clipboard_successful">成功簽名並/或加密到剪貼簿。</string>
- <string name="enter_passphrase_twice">重複輸入口令</string>
<string name="select_encryption_key">選擇至少一把加密金鑰。</string>
<string name="select_encryption_or_signature_key">選擇至少一把加密或簽名金鑰。</string>
<string name="specify_file_to_encrypt_to">請選擇要將檔案加密到哪。\n警告:已經存在的檔案將被覆蓋。</string>
<string name="specify_file_to_decrypt_to">請選擇要將檔案解密到哪。\n警告:已經存在的檔案將被覆蓋。</string>
<string name="specify_file_to_export_to">請選擇要將檔案匯出到哪。\n警告:已經存在的檔案將被覆蓋。</string>
- <string name="key_deletion_confirmation_multi">你確定要刪除選擇的公鑰?\n此動作無法復原!</string>
- <string name="secret_key_deletion_confirmation">你確定要刪除密鑰\'%s\'?\n此動作無法復原!</string>
- <string name="public_key_deletetion_confirmation">你確定要刪除公鑰\'%s\'?\n此動作無法復原!</string>
<string name="also_export_secret_keys">一併匯出私鑰</string>
<string name="key_exported">成功匯出 1 把金鑰。</string>
<string name="keys_exported">成功匯出 %d 把金鑰。</string>
<string name="nfc_successful">NFC Beam發送金鑰成功!</string>
<string name="key_copied_to_clipboard">金鑰已複製到剪貼簿!</string>
<string name="fingerprint_copied_to_clipboard">指紋已複製到剪貼簿!</string>
- <string name="select_key_to_certify">請選擇要用來認證的金鑰!</string>
<string name="key_too_big_for_sharing">金鑰太大無法使用此方式分享!</string>
<string name="text_copied_to_clipboard">文字已複製到剪貼簿!</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">刪除%s失敗</string>
<string name="error_file_not_found">找不到檔案</string>
<string name="error_no_secret_key_found">沒有適合的私鑰</string>
<string name="error_external_storage_not_ready">外部儲存空間尚未就緒</string>
@@ -274,7 +249,6 @@
<!--Help-->
<string name="help_tab_start">快速上手</string>
<string name="help_tab_faq">常見問題</string>
- <string name="help_tab_wot">信任網</string>
<string name="help_tab_nfc_beam">NFC Beam</string>
<string name="help_tab_changelog">更新紀錄</string>
<string name="help_tab_about">關於</string>
@@ -373,11 +347,9 @@
<string name="edit_key_error_add_identity">新增至少一組身分識別!</string>
<string name="edit_key_error_add_subkey">新增至少一組子金鑰!</string>
<!--Create key-->
- <string name="create_key_upload">上傳到金鑰伺服器</string>
<string name="create_key_empty">必填欄位</string>
<string name="create_key_passphrases_not_equal">口令不相符</string>
<string name="create_key_final_robot_text">建立金鑰可能需要一點時間,來杯咖啡吧…</string>
- <string name="create_key_identity_text">輸入你的全名、電子郵件,並選擇一組口令。</string>
<!--View key-->
<!--Navigation Drawer-->
<string name="nav_keys">金鑰</string>
@@ -430,6 +402,7 @@
<string name="msg_download_success">下載成功!</string>
<string name="msg_download_no_valid_keys">在檔案/剪貼簿中找不到有效的金鑰!</string>
<string name="msg_download_query_failed">查詢金鑰的時候發生錯誤。</string>
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<string name="passp_cache_notif_n_keys">OpenKeychain快取了%d個口令</string>
<string name="passp_cache_notif_keys">已快取的口令:</string>
@@ -448,7 +421,8 @@
<string name="error_no_encrypt_subkey">沒有可供加密的子金鑰!</string>
<string name="info_no_manual_account_creation">請不要自行建立OpenKeychain帳戶。\n更多資訊請參考說明。</string>
<string name="exchange_description">要發起金鑰交換,先在右邊選擇與會人數,然後點選〝開始交換〞。\n\n接下來會詢問你兩個問題,以確保會議成員與交換的指紋是正確的。</string>
- <!--Passphrase wizard-->
+ <string name="file_delete_successful"></string>
+ <!--Passphrase wizard-->
<!--TODO: rename all the things!-->
<!--<string name="enter_passphrase_twice">Enter passphrase twice</string>-->
<!--<string name="nfc_text">Please place a NFC tag near your device</string>-->
diff --git a/OpenKeychain/src/main/res/values-zh/strings.xml b/OpenKeychain/src/main/res/values-zh/strings.xml
index 209350332..d59b2a2e0 100644
--- a/OpenKeychain/src/main/res/values-zh/strings.xml
+++ b/OpenKeychain/src/main/res/values-zh/strings.xml
@@ -3,17 +3,16 @@
<!--GENERAL: Please put all strings inside quotes as described in example 1 on
http://developer.android.com/guide/topics/resources/string-resource.html (scroll down to "Escaping apostrophes and quotes").-->
<!--title-->
+ <string name="title_select_recipients">选择密钥</string>
<string name="title_select_secret_key">选择私钥</string>
- <string name="title_encrypt_text">加密文本</string>
- <string name="title_encrypt_files">加密文件</string>
<string name="title_decrypt">解密</string>
+ <string name="title_add_subkey">添加子密钥</string>
<string name="title_edit_key">编辑密钥</string>
<string name="title_api_registered_apps">已注册应用</string>
<string name="title_change_passphrase">变更密码</string>
<string name="title_share_fingerprint_with">分享签名</string>
<string name="title_share_key">分享密钥</string>
<string name="title_share_file">分享文件</string>
- <string name="title_share_message">分享信息</string>
<string name="title_encrypt_to_file">加密至文件</string>
<string name="title_decrypt_to_file">解密至文件</string>
<string name="title_import_keys">导入密钥</string>
@@ -21,7 +20,6 @@
<string name="title_export_keys">导出密钥</string>
<string name="title_key_not_found">无法找到密钥</string>
<string name="title_send_key">上传到密钥服务器</string>
- <string name="title_certify_key">验证密钥</string>
<string name="title_key_details">密钥详情</string>
<string name="title_help">帮助</string>
<string name="title_create_key">创建密钥</string>
@@ -32,14 +30,12 @@
<string name="section_general">常规</string>
<string name="section_defaults">缺省</string>
<string name="section_advanced">高级</string>
- <string name="section_certification_key">签署密钥</string>
<string name="section_key_server">密钥服务器</string>
<string name="section_fingerprint">签名</string>
<string name="section_decrypt_files">解密文件</string>
<string name="section_decrypt_text">解密文本</string>
<!--button-->
<string name="btn_decrypt_verify_file">解密并验证文件</string>
- <string name="btn_decrypt_verify_message">解密并验证信息</string>
<string name="btn_encrypt_file">加密文件</string>
<string name="btn_encrypt_share_file">加密并分享文件</string>
<string name="btn_save">保存</string>
@@ -71,7 +67,6 @@
<string name="menu_export_all_keys">导出全部密钥</string>
<string name="menu_advanced">高级</string>
<!--label-->
- <string name="label_message">讯息</string>
<string name="label_file">文件</string>
<string name="label_files">多个文件</string>
<string name="label_no_passphrase">没有密码</string>
@@ -87,11 +82,6 @@
<string name="label_fingerprint">指纹</string>
<string name="expiry_date_dialog_title">有效期</string>
<string name="label_first_keyserver_is_used">首选服务器</string>
- <string name="can_encrypt">可以加密</string>
- <string name="can_sign">可以签署</string>
- <string name="can_certify">可以验证</string>
- <string name="expired">过期了</string>
- <string name="revoked">已被废弃</string>
<plurals name="n_keys">
<item quantity="other">其他</item>
</plurals>
@@ -114,7 +104,6 @@
<string name="choice_8hours">8小时</string>
<string name="choice_forever">永远</string>
<string name="filemanager_title_open">打开...</string>
- <string name="warning">警告</string>
<string name="error">错误</string>
<!--key flags-->
<!--sentences-->
@@ -124,14 +113,11 @@
<string name="passphrase_must_not_be_empty">密码不能为空</string>
<string name="passphrase_for_symmetric_encryption">对称加密</string>
<string name="passphrase_for">密码</string>
- <string name="file_delete_successful">删除成功</string>
<string name="no_file_selected">先选择一个文件</string>
<string name="encrypt_sign_successful">加密并签名成功</string>
<string name="encrypt_sign_clipboard_successful">加密签名并复制到剪贴板成功</string>
- <string name="enter_passphrase_twice">输入两次密钥</string>
<string name="select_encryption_key">选择至少一个加密密钥</string>
<string name="select_encryption_or_signature_key">选择至少一个加密密钥或者签名密钥</string>
- <string name="public_key_deletetion_confirmation">确认删除公钥</string>
<string name="also_export_secret_keys">同时导出密钥</string>
<string name="key_exported">成功地导出了1个密钥</string>
<string name="keys_exported">成功导出多个密钥</string>
@@ -144,13 +130,11 @@
<string name="nfc_successful">NFC成功</string>
<string name="key_copied_to_clipboard">复制密钥到剪贴板</string>
<string name="fingerprint_copied_to_clipboard">复制签名到剪贴板</string>
- <string name="select_key_to_certify">选择验证密钥</string>
<string name="key_too_big_for_sharing">密钥太长</string>
<string name="text_copied_to_clipboard">复制文本到剪贴板</string>
<!--errors
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"-->
- <string name="error_file_delete_failed">文件删除失败</string>
<string name="error_file_not_found">没有找到文件</string>
<string name="error_no_secret_key_found">没有找到私钥</string>
<string name="error_external_storage_not_ready">外置存储没有准备好</string>
@@ -211,7 +195,9 @@
<string name="api_select_pub_keys_text">请重审收件人列表</string>
<!--Share-->
<string name="share_nfc_dialog">使用NFC分享</string>
- <!--Key list-->
+ <string name="file_delete_successful"></string>
+ <string name="file_delete_confirmation"></string>
+ <!--Key list-->
<!--Key view-->
<!--Key trust-->
<!--keybase proof stuff-->
@@ -236,6 +222,7 @@
<!--Messages for VerifySignedLiteralData operation-->
<!--Messages for SignEncrypt operation-->
<!--Messages for PgpSignEncrypt operation-->
+ <!--Messages for Export Log operation-->
<!--PassphraseCache-->
<!--First Time-->
<!--unsorted-->
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 1e1e5ffe3..3e46a7328 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -43,7 +43,7 @@
<string name="title_exchange_keys">"Exchange Keys"</string>
<string name="title_advanced_key_info">"Advanced Key Info"</string>
<string name="title_keys">"Keys"</string>
- <string name="title_delete_secret_key">"Delete YOUR key \'%s\'?"</string>
+ <string name="title_delete_secret_key">"Delete YOUR key '%s'?"</string>
<string name="title_export_log">"Export Log"</string>
<!-- section -->
@@ -223,8 +223,9 @@
<string name="pin_for">"Enter PIN for '%s'"</string>
<string name="yubikey_pin_for">"Enter PIN to access YubiKey for '%s'"</string>
<string name="nfc_text">"Hold YubiKey against the back of your device."</string>
- <string name="file_delete_confirmation">"Are you sure you want to delete\n%s?"</string>
- <string name="file_delete_successful">"'%s' has been deleted."</string>
+ <string name="file_delete_confirmation_title">"Delete original files?"</string>
+ <string name="file_delete_confirmation">"The following files will be deleted:%s"</string>
+ <string name="file_delete_successful">"%1$d out of %2$d files have been deleted.%3$s"</string>
<string name="no_file_selected">"Select a file first."</string>
<string name="encrypt_sign_successful">"Successfully signed and/or encrypted."</string>
<string name="encrypt_sign_clipboard_successful">"Successfully signed and/or encrypted to clipboard."</string>
@@ -265,7 +266,8 @@
no punctuation, all lowercase,
they will be put after "error_message", e.g. "Error: file not found"
-->
- <string name="error_file_delete_failed">"Deleting '%s' failed. Please do this manually!"</string>
+ <string name="error_file_delete_failed">"have not been deleted. Delete them manually!"</string>
+ <string name="error_file_added_already">%s has already been added.</string>
<string name="error_file_not_found">"file not found"</string>
<string name="error_no_secret_key_found">"no suitable secret key found"</string>
<string name="error_external_storage_not_ready">"external storage not ready"</string>
@@ -492,7 +494,7 @@
<string name="api_settings_hide_advanced">"Hide advanced settings"</string>
<string name="api_settings_no_key">"No key selected"</string>
<string name="api_settings_select_key">"Select key"</string>
- <string name="api_settings_create_key">"Create new key for this account"</string>
+ <string name="api_settings_create_key">"Create new key"</string>
<string name="api_settings_save">"Save"</string>
<string name="api_settings_save_msg">"Account has been saved"</string>
<string name="api_settings_cancel">"Cancel"</string>
@@ -518,6 +520,7 @@
<string name="api_select_pub_keys_text">"Please review the list of recipients!"</string>
<string name="api_select_pub_keys_text_no_user_ids">"Please select the recipients!"</string>
<string name="api_error_wrong_signature">"Signature check failed! Have you installed this app from a different source? If you are sure that this is not an attack, revoke this app's registration in OpenKeychain and then register the app again."</string>
+ <string name="api_select_sign_key_text">"Please select one of your existing keys or create a new one."</string>
<!-- Share -->
<string name="share_qr_code_dialog_title">"Share with QR Code"</string>
diff --git a/extern/openpgp-api-lib b/extern/openpgp-api-lib
-Subproject 1861415d77f46a466a0ae654ee72f5768f1eed1
+Subproject 71af808820032de9b508bcde7f283f5aa8ccf15