Compare commits

...
18 Commits
Author SHA1 Message Date
Alexander Bakker 1748e2221f Release v1.4
Build / build (push) Canceled after 0s
2020-12-26 15:58:18 +01:00
Alexander Bakker b1b4c021cf Update translations from Crowdin 2020-12-26 15:41:34 +01:00
Michael SchättgenandGitHub a27e3c6364 Merge pull request #642 from alexbakker/block-minimize-lock
Fix an issue where the app would lock when showing DocumentsUI
2020-12-26 15:36:48 +01:00
Michael SchättgenandGitHub 8f7b152af4 Merge pull request #641 from alexbakker/fix-593-extra
Use GoogleAuthInfo.parseSecret for secrets from Google Authenticator
2020-12-26 15:23:13 +01:00
Michael SchättgenandGitHub 39f18b79cb Merge pull request #636 from alexbakker/libsu-mount-ns
Run libsu commands inside the global mount namespace
2020-12-26 15:18:28 +01:00
Michael SchättgenandGitHub 9a81cccbe2 Merge pull request #623 from alexbakker/fixup-gauth-proto
Make the Google Authenticator Protobuf parser more complete
2020-12-26 15:18:00 +01:00
Michael SchättgenandGitHub 2c6be39f88 Merge pull request #634 from alexbakker/fix-package-query
Explicitly define which packages (apps) we want to query
2020-12-26 15:15:00 +01:00
Michael SchättgenandGitHub a6299ffb5f Merge pull request #627 from alexbakker/pass-popup-position
Display the password reminder popup on top instead of the bottom
2020-12-26 15:14:06 +01:00
Alexander Bakker 6e5a80a000 Fix an issue where the app would lock when showing DocumentsUI 2020-12-26 13:22:40 +01:00
Alexander Bakker f012c7ce22 Use GoogleAuthInfo.parseSecret for secrets from Google Authenticator 2020-12-26 12:25:43 +01:00
Alexander Bakker 805a9001e1 Run libsu commands inside the global mount namespace
This ensures we're able to access other app's internal storage directories using libsu when running on Android 11 or newer.
2020-12-20 13:53:34 +01:00
Alexander Bakker 884a1d07c4 Explicitly define which packages (apps) we want to query
This is necessary to be able to see if the app a user wants to import from is installed.
See: https://developer.android.com/about/versions/11/privacy/package-visibility
2020-12-19 13:21:21 +01:00
Alexander Bakker e9f6371885 Display the password reminder popup on top instead of the bottom
This prevents the Android's autofill popup from occluding our popup
2020-12-12 13:44:23 +01:00
Michael Schättgen 1f2e45fd12 Add GitHub action and remove Travis config 2020-12-12 11:32:50 +01:00
Alexander Bakker 6a5323b12b Make the Google Authenticator Protobuf parser more complete
I don't think Google Authenticator actually currently supports any of these
extra digit/algorithm options, but they're specified in the proto file, so we
should support them for completeness sake.
2020-12-07 21:28:27 +01:00
Alexander Bakker 735c086726 Release v1.4-beta2 2020-12-04 22:10:04 +01:00
Alexander Bakker d94be2420c Downgrade Android Gradle plugin to 4.0.1 to fix a crash 2020-12-04 22:07:07 +01:00
Alexander Bakker 0b6da5a93c Prevent file provider name collision (for debug builds) 2020-12-04 22:03:58 +01:00
23 changed files with 232 additions and 87 deletions
+10
View File
@@ -0,0 +1,10 @@
name: Build
on: [pull_request, push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v2
- name: Build the app
run: ./gradlew build
-24
View File
@@ -1,24 +0,0 @@
language: shell
os: linux
dist: bionic
env:
global:
- ANDROID_HOME=${HOME}/android
- ANDROID_SDK_ROOT=${ANDROID_HOME}
- TOOLS=${ANDROID_HOME}/cmdline-tools
- PATH=${ANDROID_HOME}/emulator:${TOOLS}/tools/bin:${ANDROID_HOME}/platform-tools:${PATH}
before_install:
- mkdir -p ${ANDROID_HOME}/licenses
- echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > ${ANDROID_HOME}/licenses/android-sdk-license
- echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> ${ANDROID_HOME}/licenses/android-sdk-license
- echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >> ${ANDROID_HOME}/licenses/android-sdk-license
install:
- mkdir -p ${TOOLS}
- travis_retry wget https://dl.google.com/android/repository/commandlinetools-linux-6514223_latest.zip -O ${TOOLS}/tools.zip
- unzip ${TOOLS}/tools.zip -d ${TOOLS}
- yes | travis_retry sdkmanager "platform-tools" > /dev/null
- yes | travis_retry sdkmanager "tools" > /dev/null
- yes | travis_retry sdkmanager "build-tools;30.0.1" > /dev/null
- yes | travis_retry sdkmanager "platforms;android-30" > /dev/null
script:
- ./gradlew assemble check
+18 -8
View File
@@ -13,22 +13,22 @@ def getCmdOutput = { cmd ->
def getGitHash = { -> return getCmdOutput(["git", "rev-parse", "--short", "HEAD"]) }
def getGitBranch = { -> return getCmdOutput(["git", "rev-parse", "--abbrev-ref", "HEAD"]) }
def fileProviderAuthority = "com.beemdevelopment.aegis.fileprovider"
def packageName = "com.beemdevelopment.aegis"
def fileProviderAuthority = "${packageName}.fileprovider"
def fileProviderAuthorityDebug = "${packageName}.debug.fileprovider"
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.beemdevelopment.aegis"
applicationId "${packageName}"
minSdkVersion 21
targetSdkVersion 30
versionCode 41
versionName "1.4-beta1"
versionCode 43
versionName "1.4"
multiDexEnabled true
buildConfigField "String", "GIT_HASH", "\"${getGitHash()}\""
buildConfigField "String", "GIT_BRANCH", "\"${getGitBranch()}\""
buildConfigField("String", "FILE_PROVIDER_AUTHORITY", "\"${fileProviderAuthority}\"")
manifestPlaceholders = [fileProviderAuthority: "${fileProviderAuthority}"]
testInstrumentationRunner "com.beemdevelopment.aegis.AegisTestRunner"
testInstrumentationRunnerArguments clearPackageData: 'true'
@@ -55,7 +55,12 @@ android {
buildTypes {
debug {
applicationIdSuffix ".debug"
manifestPlaceholders = [title: "AegisDev", iconName: "ic_launcher_debug"]
manifestPlaceholders = [
title: "AegisDev",
iconName: "ic_launcher_debug",
fileProviderAuthority: "${fileProviderAuthorityDebug}"
]
buildConfigField("String", "FILE_PROVIDER_AUTHORITY", "\"${fileProviderAuthorityDebug}\"")
resValue "bool", "pref_secure_screen_default", "false"
postprocessing {
removeUnusedCode true
@@ -66,7 +71,12 @@ android {
}
}
release {
manifestPlaceholders = [title: "Aegis", iconName: "ic_launcher"]
manifestPlaceholders = [
title: "Aegis",
iconName: "ic_launcher",
fileProviderAuthority: "${fileProviderAuthority}"
]
buildConfigField("String", "FILE_PROVIDER_AUTHORITY", "\"${fileProviderAuthority}\"")
resValue "bool", "pref_secure_screen_default", "true"
postprocessing {
removeUnusedCode true
+10
View File
@@ -97,4 +97,14 @@
</provider>
</application>
<queries>
<package android:name="com.authy.authy" />
<package android:name="org.fedorahosted.freeotp" />
<package android:name="org.liberty.android.freeotpplus" />
<package android:name="com.google.android.apps.authenticator2" />
<package android:name="com.azure.authenticator" />
<package android:name="com.valvesoftware.android.steam.community" />
<package android:name="com.authenticator.authservice2" />
</queries>
</manifest>
+2
View File
@@ -58,6 +58,8 @@
<li>The app would crash if an entry was added to the vault twice due to an IO error</li>
<li>The app would crash if the device was rotated while a progress dialog was shown</li>
<li>The PIN keyboard would show even if a new non-digit password was set</li>
<li>The password reminder popup would be occluded by the autofill popup</li>
<li>Importing from other apps on Android 11 was broken due to some permission issues</li>
</ul>
<h3>Version 1.3</h3>
<h4>New</h4>
@@ -29,6 +29,7 @@ import com.beemdevelopment.aegis.vault.VaultManager;
import com.beemdevelopment.aegis.vault.VaultManagerException;
import com.mikepenz.iconics.Iconics;
import com.mikepenz.material_design_iconic_typeface_library.MaterialDesignIconic;
import com.topjohnwu.superuser.Shell;
import java.util.ArrayList;
import java.util.Collections;
@@ -39,10 +40,16 @@ public class AegisApplication extends Application {
private VaultManager _manager;
private Preferences _prefs;
private List<LockListener> _lockListeners;
private boolean _blockAutoLock;
private static final String CODE_LOCK_STATUS_ID = "lock_status_channel";
private static final String CODE_LOCK_VAULT_ACTION = "lock_vault";
static {
// to access other app's internal storage directory, run libsu commands inside the global mount namespace
Shell.Config.setFlags(Shell.FLAG_MOUNT_MASTER);
}
@Override
public void onCreate() {
super.onCreate();
@@ -135,6 +142,15 @@ public class AegisApplication extends Application {
_lockListeners.remove(listener);
}
/**
* Sets whether to block automatic lock on minimization. This should only be called
* by activities before invoking an intent that shows a DocumentsUI, because that
* action leads AppLifecycleObserver to believe that the app has been minimized.
*/
public void setBlockAutoLock(boolean block) {
_blockAutoLock = block;
}
/**
* Locks the vault and the app.
* @param userInitiated whether or not the user initiated the lock in MainActivity.
@@ -189,7 +205,9 @@ public class AegisApplication extends Application {
private class AppLifecycleObserver implements LifecycleEventObserver {
@Override
public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) {
if (event == Lifecycle.Event.ON_STOP && isAutoLockEnabled(Preferences.AUTO_LOCK_ON_MINIMIZE)) {
if (event == Lifecycle.Event.ON_STOP
&& isAutoLockEnabled(Preferences.AUTO_LOCK_ON_MINIMIZE)
&& !_blockAutoLock) {
lock(false);
}
}
@@ -0,0 +1,14 @@
package com.beemdevelopment.aegis.helpers;
import android.content.Context;
import android.util.DisplayMetrics;
public class MetricsHelper {
private MetricsHelper() {
}
public static int convertDpToPixels(Context context, float dp) {
return (int) (dp * (context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT));
}
}
@@ -4,8 +4,8 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.database.Cursor;
import com.beemdevelopment.aegis.encoding.Base32;
import com.beemdevelopment.aegis.encoding.EncodingException;
import com.beemdevelopment.aegis.otp.GoogleAuthInfo;
import com.beemdevelopment.aegis.otp.HotpInfo;
import com.beemdevelopment.aegis.otp.OtpInfo;
import com.beemdevelopment.aegis.otp.OtpInfoException;
@@ -73,7 +73,7 @@ public class GoogleAuthImporter extends DatabaseImporter {
private static VaultEntry convertEntry(Entry entry) throws DatabaseImporterEntryException {
try {
byte[] secret = Base32.decode(entry.getSecret());
byte[] secret = GoogleAuthInfo.parseSecret(entry.getSecret());
OtpInfo info;
switch (entry.getType()) {
@@ -216,13 +216,46 @@ public class GoogleAuthInfo implements Serializable {
for (GoogleAuthProtos.MigrationPayload.OtpParameters params : payload.getOtpParametersList()) {
OtpInfo otp;
try {
int digits;
switch (params.getDigits()) {
case DIGIT_COUNT_UNSPECIFIED:
// intentional fallthrough
case DIGIT_COUNT_SIX:
digits = 6;
break;
case DIGIT_COUNT_EIGHT:
digits = 8;
break;
default:
throw new GoogleAuthInfoException(String.format("Unsupported digits: %d", params.getDigits().ordinal()));
}
String algo;
switch (params.getAlgorithm()) {
case ALGORITHM_UNSPECIFIED:
// intentional fallthrough
case ALGORITHM_SHA1:
algo = "SHA1";
break;
case ALGORITHM_SHA256:
algo = "SHA256";
break;
case ALGORITHM_SHA512:
algo = "SHA512";
break;
default:
throw new GoogleAuthInfoException(String.format("Unsupported hash algorithm: %d", params.getAlgorithm().ordinal()));
}
byte[] secret = params.getSecret().toByteArray();
switch (params.getType()) {
case OTP_HOTP:
otp = new HotpInfo(secret, params.getCounter());
case OTP_TYPE_UNSPECIFIED:
// intentional fallthrough
case OTP_TYPE_TOTP:
otp = new TotpInfo(secret, algo, digits, 30);
break;
case OTP_TOTP:
otp = new TotpInfo(secret);
case OTP_TYPE_HOTP:
otp = new HotpInfo(secret, algo, digits, params.getCounter());
break;
default:
throw new GoogleAuthInfoException(String.format("Unsupported algorithm: %d", params.getType().ordinal()));
@@ -55,6 +55,12 @@ public abstract class AegisActivity extends AppCompatActivity implements AegisAp
super.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
_app.setBlockAutoLock(false);
}
@Override
public void onLocked(boolean userInitiated) {
setResult(RESULT_CANCELED, null);
@@ -31,6 +31,7 @@ import com.beemdevelopment.aegis.crypto.KeyStoreHandleException;
import com.beemdevelopment.aegis.crypto.MasterKey;
import com.beemdevelopment.aegis.helpers.BiometricsHelper;
import com.beemdevelopment.aegis.helpers.EditTextHelper;
import com.beemdevelopment.aegis.helpers.MetricsHelper;
import com.beemdevelopment.aegis.helpers.UiThreadExecutor;
import com.beemdevelopment.aegis.ui.tasks.PasswordSlotDecryptTask;
import com.beemdevelopment.aegis.vault.VaultFile;
@@ -231,13 +232,22 @@ public class AuthActivity extends AegisActivity {
private void showPasswordReminder() {
View popupLayout = getLayoutInflater().inflate(R.layout.popup_password, null);
popupLayout.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
PopupWindow popup = new PopupWindow(popupLayout, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
popup.setFocusable(false);
popup.setOutsideTouchable(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
popup.setElevation(5.0f);
}
_textPassword.post(() -> popup.showAsDropDown(_textPassword));
_textPassword.post(() -> {
// calculating the actual height of the popup window does not seem possible
// adding 25dp seems to look good enough
int yoff = _textPassword.getHeight()
+ popupLayout.getMeasuredHeight()
+ MetricsHelper.convertDpToPixels(this, 25);
popup.showAsDropDown(_textPassword, 0, -yoff);
});
_textPassword.postDelayed(popup::dismiss, 5000);
}
@@ -407,6 +407,8 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
}
private void startScanImageActivity() {
_app.setBlockAutoLock(true);
Intent galleryIntent = new Intent(Intent.ACTION_PICK);
galleryIntent.setDataAndType(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI, "image/*");
@@ -87,6 +87,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
private static final int CODE_BACKUPS = 8;
private Intent _result;
private AegisApplication _app;
private Preferences _prefs;
private VaultManager _vault;
@@ -112,9 +113,9 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
AegisApplication app = (AegisApplication) getActivity().getApplication();
_prefs = app.getPreferences();
_vault = app.getVaultManager();
_app = (AegisApplication) getActivity().getApplication();
_prefs = _app.getPreferences();
_vault = _app.getVaultManager();
// set the result intent in advance
setResult(new Intent());
@@ -190,6 +191,8 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
_app.setBlockAutoLock(true);
startActivityForResult(intent, CODE_IMPORT);
});
return true;
@@ -282,14 +285,14 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
});
Preference tapToRevealTimePreference = findPreference("pref_tap_to_reveal_time");
tapToRevealTimePreference.setSummary(app.getPreferences().getTapToRevealTime() + " seconds");
tapToRevealTimePreference.setSummary(_app.getPreferences().getTapToRevealTime() + " seconds");
tapToRevealTimePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Dialogs.showNumberPickerDialog(getActivity(), new Dialogs.NumberInputListener() {
@Override
public void onNumberInputResult(int number) {
app.getPreferences().setTapToRevealTime(number);
_app.getPreferences().setTapToRevealTime(number);
tapToRevealTimePreference.setSummary(number + " seconds");
_result.putExtra("needsRefresh", true);
}
@@ -735,6 +738,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
.setType(getExportMimeType(requestCode))
.putExtra(Intent.EXTRA_TITLE, fileInfo.toString());
_app.setBlockAutoLock(true);
startActivityForResult(intent, requestCode);
});
@@ -771,6 +775,8 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
.setType(getExportMimeType(requestCode))
.putExtra(Intent.EXTRA_STREAM, uri);
Intent chooser = Intent.createChooser(intent, getString(R.string.pref_export_summary));
_app.setBlockAutoLock(true);
startActivity(chooser);
});
});
@@ -1014,6 +1020,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
_app.setBlockAutoLock(true);
startActivityForResult(intent, CODE_BACKUPS);
}
@@ -24,6 +24,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.beemdevelopment.aegis.R;
import com.beemdevelopment.aegis.SortCategory;
import com.beemdevelopment.aegis.ViewMode;
import com.beemdevelopment.aegis.helpers.MetricsHelper;
import com.beemdevelopment.aegis.helpers.SimpleItemTouchHelperCallback;
import com.beemdevelopment.aegis.helpers.UiRefresher;
import com.beemdevelopment.aegis.otp.TotpInfo;
@@ -392,7 +393,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
private VerticalSpaceItemDecoration(float dp) {
// convert dp to pixels
_height = (int) (dp * (getContext().getResources().getDisplayMetrics().densityDpi / 160f));
_height = MetricsHelper.convertDpToPixels(getContext(), dp);
}
@Override
+15 -6
View File
@@ -5,14 +5,23 @@ option java_outer_classname = "GoogleAuthProtos";
message MigrationPayload {
enum Algorithm {
ALGO_INVALID = 0;
ALGO_SHA1 = 1;
ALGORITHM_UNSPECIFIED = 0;
ALGORITHM_SHA1 = 1;
ALGORITHM_SHA256 = 2;
ALGORITHM_SHA512 = 3;
ALGORITHM_MD5 = 4;
}
enum DigitCount {
DIGIT_COUNT_UNSPECIFIED = 0;
DIGIT_COUNT_SIX = 1;
DIGIT_COUNT_EIGHT = 2;
}
enum OtpType {
OTP_INVALID = 0;
OTP_HOTP = 1;
OTP_TOTP = 2;
OTP_TYPE_UNSPECIFIED = 0;
OTP_TYPE_HOTP = 1;
OTP_TYPE_TOTP = 2;
}
message OtpParameters {
@@ -20,7 +29,7 @@ message MigrationPayload {
string name = 2;
string issuer = 3;
Algorithm algorithm = 4;
int32 digits = 5;
DigitCount digits = 5;
OtpType type = 6;
int64 counter = 7;
}
@@ -61,6 +61,10 @@
<string name="pref_set_password_summary">تعيين كلمة مرور جديدة، ستحتاجها لفتح قفل المخزن</string>
<string name="export_encrypted">تشفير المخزن</string>
<string name="export_help">هذا الإجراء سيصدر المخزن خارج ذاكرة تخزين Aegis الداخلية. حدد الصيغة التي ترغب بأن يكون التصدير عليها:</string>
<string name="export_warning_unencrypted">أنت على وشك تصدير نسخة غير مشفرة من مخزن Aegis. <b>لا يُنصح بهذا</b>.</string>
<string name="export_warning_accept">أنا أتفهم المخاطر</string>
<string name="export_format_aegis">Aegis (.JSON)</string>
<string name="export_format_google_auth_uri">ملف نصي (.TXT)</string>
<string name="choose_authentication_method">الأمان</string>
<string name="authentication_method_explanation">تطبيق Aegis هو تطبيق مصادقة يركز على الأمان. تخزّن الرموز في مخزن، يمكن تشفيره اختياريًا بكلمة مرور من اختيارك. إذا حصل مهاجم على ملف المخزن المشفر الخاص بك، فإنه لن يتمكن من الوصول إلى المحتوى بدون معرفة كلمة المرور.\n\nلقد حددنا مسبقًا الخيار الذي نعتقد أنه يناسب جهازك.</string>
<string name="authentication_method_none">بلا</string>
@@ -84,6 +88,7 @@
<string name="invalidated_biometrics">تم كشف تغيير في إعدادات أمان جهازك. الرجاء الذهاب إلى \" Aegis -&gt; الإعدادات -&gt; البيومترية \" وأعد تفعيل الفتح البيومتري.</string>
<string name="password_reminder">لقد مرت فترة طويلة منذ أن أدخلت كلمة مرورك. هل مازلت تتذكرها؟</string>
<string name="enter_password_authy_message">يبدو أن رموز Authy الخاصة بك مشفرة. الرجاء إغلاق Aegis، وفتح Authy وفتح قفل الرموز بكلمة مرورك. بدلًا من ذلك، Aegis يمكنه أيضًا محاولة فك تشفير رموز Authy الخاصة بك، إذا قمت بإدخال كلمة مرورك أدناه.</string>
<string name="share">شارك</string>
<string name="yes">نعم</string>
<string name="no">لا</string>
<string name="unlock">فتح القفل</string>
@@ -114,6 +119,7 @@
<string name="password_equality_error">كلمات المرور يجب أن تكون متطابقة وغير فارغة</string>
<string name="snackbar_authentication_method">الرجاء تحديد طريقة مصادقة</string>
<string name="encrypting_vault">يتم تشفير المخزن</string>
<string name="exporting_vault">يجري تصدير المخزن</string>
<string name="delete_entry">حذف المدخلات</string>
<string name="delete_entry_description">هل ترغب حقًا في حذف هذا المدخل؟</string>
<string name="delete_entries">حذف المدخلات</string>
@@ -142,6 +148,7 @@
<string name="disable_encryption_description">هل ترغب حقًا في تعطيل التشفير؟ هذا سيؤدي إلى تخزين المخزن كنص عادي.</string>
<string name="enable_encryption_error">حدث خطأ أثناء تفعيل التشفير</string>
<string name="disable_encryption_error">حدث خطأ أثناء تعطيل التشفير</string>
<string name="backup_successful">تم جدولة النسخ الاحتياطي بنجاح</string>
<string name="backup_error">حدث خطأ أثناء محاولة عمل نسخة احتياطية</string>
<string name="permission_denied">طلب الاذن مرفوض</string>
<string name="andotp_new_format">الصيغة الجديدة (الإصدار v0.6.3 أو أحدث)</string>
@@ -200,6 +207,7 @@
<string name="pin_keyboard_description">أدخل كلمة المرور لتفعيل لوحة مفاتيح PIN. لاحظ أن هذا يعمل فقط إذا كانت كلمة المرور الخاصة بك تتكون فقط من أرقام</string>
<string name="pin_keyboard_error">خطأ في تفعيل لوحة مفاتيح PIN</string>
<string name="pin_keyboard_error_description">لا يمكن تعيين لوحة مفاتيح PIN. يجب أن تتكون كلمة المرور من أرقام فقط.</string>
<string name="pin_keyboard_disabled">تغيرت كلمة المرور. لن تُعرض لوحة مفاتيح PIN.</string>
<string name="selected">محددة</string>
<string name="dark_theme_title">نمط داكن</string>
<string name="light_theme_title">نمط فاتح</string>
@@ -240,6 +248,7 @@
<string name="google_qr_export_unrelated">تم العثور على كود QR لا علاقة له. حاول إعادة تشغيل الماسح.</string>
<string name="google_qr_export_unexpected">انتظرت كود QR #%d، ولكن مسحت #%d بدلًا منه</string>
<string name="backup_error_bar_message"><b>النسخ الاحتياطي للمخزن فشل مؤخرًا</b></string>
<string name="switch_camera">تبديل الكاميرا</string>
<string name="empty_list">لا توجد أكواد لعرضها. ابدأ بإضافة مدخلات بالنقر على علامة الزائد في أسفل الركن الأيسر</string>
<string name="empty_list_title">لم يتم العثور على مدخلات</string>
<string name="done">تم</string>
+45 -32
View File
@@ -25,7 +25,7 @@
<string name="pref_account_name_summary">Aktiviere dies, um den Kontonamen neben dem Herausgeber anzuzeigen</string>
<string name="pref_timeout_title">Zeitüberschreitung</string>
<string name="pref_timeout_summary">Sperrt die Datenbank automatisch nach %1$s Sekunden Inaktivität</string>
<string name="pref_slots_title">Schlüssel Steckplätze</string>
<string name="pref_slots_title">Schlüsselplätze</string>
<string name="pref_slots_summary">Verwalte die Liste der Schlüssel, die die Datenbank entschlüsseln können</string>
<string name="pref_import_file_title">Aus Datei importieren</string>
<string name="pref_import_file_summary">Token aus einer Datei importieren</string>
@@ -47,10 +47,10 @@
<string name="pref_password_reminder_title">Passworterinnerung</string>
<string name="pref_password_reminder_summary">Von Zeit zu Zeit nach dem Passwort fragen, damit du es nicht vergisst.</string>
<string name="pref_secure_screen_title">Bildschirmsicherheit</string>
<string name="pref_secure_screen_summary">Blockiere Screenshots und andere Versuche, den Bildschirm innerhalb der App aufzunehmen.</string>
<string name="pref_secure_screen_summary">Blockiere Screenshots und andere Versuche, den Bildschirm innerhalb der App aufzunehmen</string>
<string name="pref_tap_to_reveal_title">Zum Aufdecken tippen</string>
<string name="pref_tap_to_reveal_summary">Token werden standardmäßig ausgeblendet. Tippe auf die Token, um den Code anzuzeigen.</string>
<string name="pref_tap_to_reveal_time_title">Zeitüberschreitung für Tippen zum Anzeigen</string>
<string name="pref_tap_to_reveal_time_title">Zeitüberschreitung für die Anzeige durch Antippen</string>
<string name="pref_auto_lock_title">Automatische Sperre</string>
<string name="pref_auto_lock_summary">Wenn %s</string>
<string name="pref_auto_lock_summary_disabled">Deaktiviert</string>
@@ -60,10 +60,10 @@
<string name="pref_auto_lock_type_device_lock">Das Gerät gesperrt ist</string>
<string name="pref_encryption_title">Verschlüsselung</string>
<string name="pref_encryption_summary">Verschlüssele die Datenbank und entsperre sie mit einem Passwort oder biometrischen Daten</string>
<string name="pref_biometrics_title">Biometische Entsperrung</string>
<string name="pref_biometrics_summary">Erlauben, die Datenbank mit biometrischer Authentifizierung zu entsperren</string>
<string name="pref_biometrics_title">Biometrisches Entsperren</string>
<string name="pref_biometrics_summary">Erlaube die biometrische Authentifizierung zum Entsperren der Datenbank</string>
<string name="pref_set_password_title">Passwort ändern</string>
<string name="pref_set_password_summary">Lege ein neues Passwort fest, das erforderlich ist, um die Datenbank freizuschalten</string>
<string name="pref_set_password_summary">Lege ein neues Passwort fest, das erforderlich ist, um die Datenbank zu entsperren</string>
<string name="export_encrypted">Datenbank verschlüsseln</string>
<string name="export_help">Mit dieser Aktion wird die Datenbank aus dem internen Speicher von Aegis exportiert. Wähle das Format aus, in dem der Export erfolgen soll:</string>
<string name="export_warning_unencrypted">Du bist dabei, eine unverschlüsselte Kopie deiner Aegis-Datenbank zu exportieren. <b>Dies wird nicht empfohlen</b>.</string>
@@ -71,7 +71,7 @@
<string name="export_format_aegis">Aegis (.JSON)</string>
<string name="export_format_google_auth_uri">Textdatei (.TXT)</string>
<string name="choose_authentication_method">Sicherheit</string>
<string name="authentication_method_explanation">Aegis ist eine auf Sicherheit ausgerichtete 2FA-App. Die Token werden in einer Datenbank gespeichert, die optional mit einem Passwort deiner Wahl verschlüsselt werden kann. Wenn ein Angreifer an deine verschlüsselte Datenbank-Datei gelangt, kann er ohne Kenntnis des Passworts nicht auf den Inhalt zugreifen.\n\nWir haben die Optionen voreingestellt, die unserer Meinung nach am besten zu deinem Gerät passen.</string>
<string name="authentication_method_explanation">Aegis ist eine auf Sicherheit ausgerichtete 2FA-App. Die Token werden in einer Datenbank gespeichert, die optional mit einem Passwort deiner Wahl verschlüsselt werden kann. Wenn ein Angreifer an deine verschlüsselte Datenbankdatei gelangt, kann er ohne Kenntnis des Passworts nicht auf den Inhalt zugreifen.\n\nWir haben die Optionen voreingestellt, die unserer Meinung nach am besten zu deinem Gerät passen.</string>
<string name="authentication_method_none">Keine</string>
<string name="authentication_method_none_description">Die Datenbank wird nicht verschlüsselt und es wird kein Passwort zum Entschlüsseln benötigt. <b>Diese Option wird nicht empfohlen</b>.</string>
<string name="authentication_method_password">Passwort</string>
@@ -90,7 +90,7 @@
<string name="set_number">Bitte gib eine Zahl ein</string>
<string name="set_password_confirm">Bitte bestätige das Passwort</string>
<string name="invalid_password">Das Passwort ist falsch</string>
<string name="invalidated_biometrics">Es wurde eine Änderung der Sicherheitseinstellungen auf deinem Gerät festgestellt. Bitte gehe zu \"Aegis -&gt; Einstellungen -&gt; Sicherheit\" und aktiviere die biometrische Entsperrung erneut.</string>
<string name="invalidated_biometrics">Es wurde eine Änderung der Sicherheitseinstellungen auf deinem Gerät festgestellt. Bitte gehe zu \"Aegis -&gt; Einstellungen -&gt; Sicherheit\" und aktiviere erneut biometrisches Entsperren.</string>
<string name="password_reminder">Bitte gib dein Passwort ein. Wir bitten dich gelegentlich, dies zu tun, damit du es nicht vergisst.</string>
<string name="enter_password_authy_message">Es sieht so aus, als ob deine Authy-Token verschlüsselt sind. Bitte schließe Aegis, öffne Authy und entsperre die Token mit deinem Passwort. Ebenfalls kann Aegis versuchen, deine Authy-Token zu entschlüsseln, wenn du unten dein Passwort eingibst.</string>
<string name="share">Teilen</string>
@@ -106,11 +106,11 @@
<string name="scan">QR-Code scannen</string>
<string name="scan_image">Bild scannen</string>
<string name="enter_manually">Manuell eingeben</string>
<string name="add_biometric">Biometrik hinzufügen</string>
<string name="add_biometric">Biometrie hinzufügen</string>
<string name="add_biometric_slot">Biometrischen Slot hinzufügen</string>
<string name="set_up_biometric">Biometrische Entsperren einrichten</string>
<string name="set_up_biometric">Biometrisches Entsperren einrichten</string>
<string name="add_password">Passwort hinzufügen</string>
<string name="slots_warning">Die Datenbank ist nur so sicher wie dein schwächstes Geheimnis. Wenn du die biometrischen Authentifizierungseinstellungen deines Geräts änderst, musst du die biometrische Entsperrung in Aegis reaktivieren.</string>
<string name="slots_warning">Die Datenbank ist nur so sicher wie dein schwächstes Geheimnis. Wenn du die biometrischen Authentifizierungseinstellungen deines Geräts änderst, musst du biometrisches Entsperren in Aegis reaktivieren.</string>
<string name="copy">Kopieren</string>
<string name="edit">Bearbeiten</string>
<string name="delete">Löschen</string>
@@ -133,13 +133,13 @@
<item quantity="other">Sind Sie sicher, dass du %d Einträge löschen möchtest?</item>
</plurals>
<string name="discard_changes">Änderungen verwerfen?</string>
<string name="discard_changes_description">Deine Änderungen wurden nicht gespeichert</string>
<string name="discard_changes_description">Deine Änderungen wurden noch nicht gespeichert</string>
<string name="folder">Ordner</string>
<string name="tap_to_select">Zum Auswählen tippen</string>
<string name="saving_profile_error">Fehler beim Speichern des Profils</string>
<string name="welcome">Willkommen</string>
<string name="app_description">Aegis ist eine kostenlose, sichere und Open Source 2FA-App</string>
<string name="setup_completed">Einrichten abgeschlossen</string>
<string name="app_description">Aegis ist eine kostenlose, sichere und quelloffene 2FA-App</string>
<string name="setup_completed">Einrichtung abgeschlossen</string>
<string name="setup_completed_description">Aegis wurde eingerichtet und ist nun bereit.</string>
<string name="vault_not_found">Datenbank nicht gefunden, Starten der Einrichtung…</string>
<string name="copied">Kopiert</string>
@@ -147,7 +147,7 @@
<string name="version_copied">Version in die Zwischenablage kopiert</string>
<string name="error_occurred">Ein Fehler ist aufgetreten</string>
<string name="decryption_error">Beim Versuch, die Datenbank zu entsperren, ist ein Fehler aufgetreten</string>
<string name="decryption_corrupt_error">Beim Entsperren der Datenbank ist ein Fehler aufgetreten. Deine Datenbank-Datei könnte beschädigt sein.</string>
<string name="decryption_corrupt_error">Beim Entsperren der Datenbank ist ein Fehler aufgetreten. Deine Datenbankdatei könnte beschädigt sein.</string>
<string name="saving_error">Beim Versuch, die Datenbank zu speichern, ist ein Fehler aufgetreten</string>
<string name="vault_init_error">Beim Versuch, die Datenbank zu initialisieren, ist ein Fehler aufgetreten</string>
<string name="vault_load_error">Beim Versuch, die Datenbank aus dem Speicher zu laden, ist ein Fehler aufgetreten</string>
@@ -155,8 +155,9 @@
<string name="biometric_init_error">Beim Versuch, die biometrische Authentifizierung vorzubereiten, ist ein Fehler aufgetreten. Dies geschieht in der Regel nur, wenn die Sicherheitseinstellungen deines Geräts geändert wurden. Bitte entsperre die Datenbank mit deinem Passwort und konfiguriere die biometrische Authentifizierung in den Einstellungen von Aegis neu.</string>
<string name="disable_encryption">Verschlüsselung deaktivieren</string>
<string name="disable_encryption_description">Bist du sicher, dass du die Verschlüsselung deaktivieren willst? Dadurch wird die Datenbank im Klartext gespeichert.</string>
<string name="enable_encryption_error">Bei der Aktivierung der Verschlüsselung ist ein Fehler aufgetreten.</string>
<string name="disable_encryption_error">Bei der Deaktivierung der Verschlüsselung ist ein Fehler aufgetreten.</string>
<string name="enable_encryption_error">Bei der Aktivierung der Verschlüsselung ist ein Fehler aufgetreten</string>
<string name="disable_encryption_error">Bei der Deaktivierung der Verschlüsselung ist ein Fehler aufgetreten</string>
<string name="backup_successful">Die Sicherung wurde erfolgreich durchgeführt</string>
<string name="backup_error">Beim Erstellen der Sicherungskopie ist ein Fehler aufgetreten</string>
<string name="permission_denied">Zugriff verweigert</string>
<string name="andotp_new_format">Neues Format (v0.6.3 oder neuer) </string>
@@ -166,26 +167,26 @@
<string name="choose_application">Wähle die App aus, aus der du importieren möchtest</string>
<string name="choose_theme">Wähle das gewünschte Design aus</string>
<string name="choose_view_mode">Wähle den gewünschten Ansichtsmodus aus</string>
<string name="parsing_file_error">Beim Versuch, die Datei zu analysieren, ist ein Fehler aufgetreten.</string>
<string name="parsing_file_error">Beim Versuch, die Datei zu analysieren, ist ein Fehler aufgetreten</string>
<string name="file_not_found">Fehler: Datei nicht gefunden</string>
<string name="reading_file_error">Beim Versuch, die Datei zu lesen, ist ein Fehler aufgetreten.</string>
<string name="reading_file_error">Beim Versuch, die Datei zu lesen, ist ein Fehler aufgetreten</string>
<string name="app_lookup_error">Fehler: App ist nicht installiert</string>
<string name="root_error">Fehler: Root-Zugriff nicht möglich</string>
<plurals name="imported_entries_count">
<item quantity="one">%d Eintrag importiert</item>
<item quantity="other">%d Einträge importiert</item>
</plurals>
<string name="import_error_title">Beim Import sind ein oder mehrere Fehler aufgetreten.</string>
<string name="import_error_title">Beim Import sind ein oder mehrere Fehler aufgetreten</string>
<string name="exporting_vault_error">Beim Versuch, die Datenbank zu exportieren, ist ein Fehler aufgetreten</string>
<string name="exported_vault">Die Datenbank wurde exportiert</string>
<string name="encryption_set_password_error">Beim Versuch, das Passwort festzulegen, ist ein Fehler aufgetreten.</string>
<string name="encryption_enable_biometrics_error">Beim Versuch, die biometrische Entsperrung zu aktivieren, ist ein Fehler aufgetreten. Einige Geräte haben eine schlechte Implementierung der biometrischen Authentifizierung und es ist wahrscheinlich, dass dieses Gerät dazu gehört. Ziehe stattdessen in Betracht, zu einer Konfiguration zu wechseln, die auf ein Passwort basiert.</string>
<string name="encryption_enable_biometrics_error">Beim Versuch, biometrisches Entsperren zu aktivieren, ist ein Fehler aufgetreten. Einige Geräte haben eine schlechte Implementierung der biometrischen Authentifizierung und es ist wahrscheinlich, dass dieses Gerät dazu gehört. Ziehe stattdessen in Betracht, zu einer Konfiguration zu wechseln, die auf ein Passwort basiert.</string>
<string name="no_cameras_available">Keine Kameras verfügbar</string>
<string name="read_qr_error">Beim Versuch, den QR-Code zu lesen, ist ein Fehler aufgetreten.</string>
<string name="read_qr_error">Beim Versuch, den QR-Code zu lesen, ist ein Fehler aufgetreten</string>
<string name="authentication_method_raw">Raw</string>
<string name="unlocking_vault">Entsperren der Datenbank</string>
<string name="unlocking_vault_repair">Entsperren der Datenbank (reparieren)</string>
<string name="password_slot_error">Du musst mindestens einen Passwort-Slot haben.</string>
<string name="password_slot_error">Du musst mindestens einen Passwort-Slot haben</string>
<string name="slot_this_device">(Dieses Gerät)</string>
<string name="remove_slot">Slot entfernen</string>
<string name="remove_slot_description">Bist du sicher, dass du diesen Slot entfernen willst?</string>
@@ -211,7 +212,7 @@
<string name="preference_manage_groups">Gruppen bearbeiten</string>
<string name="preference_manage_groups_summary">Verwalte und lösche deine Gruppen hier</string>
<string name="pref_search_name_title">In Kontonamen suchen</string>
<string name="pref_search_name_summary">Entsprechende Kontonamen in den Suchergebnissen miteinbeziehen</string>
<string name="pref_search_name_summary">Übereinstimmungen von Kontonamen in die Suchergebnisse einbeziehen</string>
<string name="pref_highlight_entry_title">Token beim Tippen hervorheben</string>
<string name="pref_highlight_entry_summary">Token beim Antippen hervorheben, um sie leichter voneinander unterscheiden zu können</string>
<string name="pref_copy_on_tap_title">Token beim Tippen kopieren</string>
@@ -235,17 +236,17 @@
<item quantity="one">Aegis konnte %d Token nicht importieren. Dieser Token wird übersprungen. Klicke auf Details, um weitere Informationen über die Fehler zu erhalten.</item>
<item quantity="other">Aegis konnte %d Token nicht importieren. Diese Token werden übersprungen. Klicke auf Details, um weitere Informationen über die Fehler zu erhalten.</item>
</plurals>
<string name="unable_to_read_qrcode">QR-Code kann nicht gelesen und verarbeitet werden.</string>
<string name="unable_to_read_qrcode">QR-Code kann nicht gelesen und verarbeitet werden</string>
<string name="unable_to_generate_qrcode">QR-Code kann nicht generiert werden</string>
<string name="select_picture">Bild auswählen</string>
<string name="select_icon">Symbol auswählen</string>
<string name="toggle_checkboxes">Markierungen umschalten</string>
<string name="toggle_checkboxes">Kontrollkästchen umschalten</string>
<string name="search">Suche</string>
<string name="channel_name_lock_status">Sperrstatus</string>
<string name="channel_description_lock_status">Aegis kann eine dauerhafte Benachrichtigung erstellen, um dich zu benachrichtigen, wenn die Datenbank gesperrt ist</string>
<string name="vault_unlocked_state">Die Datenbank ist freigeschaltet. Hier tippen, um zu sperren.</string>
<string name="vault_unlocked_state">Die Datenbank ist entsperrt. Hier tippen, um sie zu sperren.</string>
<string name="version">Version</string>
<string name="changelog">Liste der Änderungen</string>
<string name="changelog">Änderungsprotokoll</string>
<string name="whats_new">Was ist neu</string>
<string name="github_description">Quellcode, Probleme und Informationen</string>
<string name="licenses">Lizenzen</string>
@@ -256,7 +257,7 @@
<string name="about_support">Support</string>
<string name="support_rate">Bewerten</string>
<string name="support_rate_description">Unterstütze uns, indem du eine Bewertung im Google Play Store hinterlässt</string>
<string name="webview_error">Dieses Gerät unterstützt keine Web-Ansicht, die notwendig ist, um das Changelog anzuzeigen. Es fehlt eine Systemkomponente.</string>
<string name="webview_error">Dieses Gerät unterstützt keine Web-Ansicht, die notwendig ist, um das Änderungsprotokoll anzuzeigen. Es fehlt eine Systemkomponente.</string>
<string name="email">E-Mail</string>
<string name="time_sync_warning_title">Automatische Zeitsynchronisierung</string>
<string name="time_sync_warning_message">Aegis ist auf die Synchronisierung der Systemzeit angewiesen, um korrekte Codes zu generieren. Eine Abweichung von nur wenigen Sekunden kann zu falschen Codes führen. Es sieht so aus, als ob dein Gerät nicht so konfiguriert ist, dass es die Zeit automatisch synchronisiert. Möchtest du dies jetzt tun?</string>
@@ -292,7 +293,7 @@
<string name="title_activity_preferences">Einstellungen</string>
<string name="title_activity_manage_groups">Gruppen verwalten</string>
<string name="title_activity_transfer">Einträge übertragen</string>
<string name="title_activity_about">Über uns</string>
<string name="title_activity_about">Über</string>
<string name="title_activity_edit_entry">Eintrag bearbeiten</string>
<string name="title_activity_scan_qr">Scanne einen QR-Code</string>
<string name="title_activity_manage_slots">Schlüsselplätze verwalten</string>
@@ -301,7 +302,19 @@
<string name="dialog_wipe_entries_message">Deine Datenbank enthält bereits Einträge. Möchtest du diese Einträge entfernen, bevor diese Datei importiert wird?\n\n<b>Wenn du dies tust, verlierst du dauerhaft den Zugriff auf die vorhandenen Einträge in der Datenbank.</b></string>
<string name="dialog_wipe_entries_checkbox">Datenbankinhalt löschen</string>
<string name="panic_trigger_ignore_toast">Aegis hat ein Paniksignal empfangen, aber die Einstellung ist deaktiviert - Paniksignal wird ignoriert</string>
<string name="pref_panic_trigger_title">Datenbank beim Panikknopf löschen</string>
<string name="pref_panic_trigger_title">Datenbank bei Paniksignal löschen</string>
<string name="pref_panic_trigger_summary">Datenbank löschen, wenn ein Paniksignal von Ripple empfangen wird</string>
<string name="importer_help_direct">Importiere Einträge direkt aus %s. Dazu muss die Anwendung auf diesem Gerät installiert sein und Aegis muss Root-Zugriff gewährt werden.</string>
<string name="importer_help_aegis">Gib eine Aegis Export-/Sicherungsdatei an.</string>
<string name="importer_help_authenticator_plus">Gib eine Authenticator Plus-Exportdatei an, die du über <b>Einstellungen -&gt; Sicherung &amp; Rücksicherung -&gt; Exportieren als Text und HTML Format</b> erhältst.</string>
<string name="importer_help_authy">Gib eine Kopie von <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b> an, die sich im internen Speicherverzeichnis von Authy befindet.</string>
<string name="importer_help_andotp">Gib eine andOTP Export-/Sicherungsdatei an.</string>
<string name="importer_help_freeotp">Gib eine Kopie von <b>/data/data/org.fedorahosted.freeotp/shared_prefs/tokens.xml</b> an, die sich im internen Speicherverzeichnis von FreeOTP befindet.</string>
<string name="importer_help_freeotp_plus">Gib eine FreeOTP+ Exportdatei an.</string>
<string name="importer_help_google_authenticator">Gib eine Kopie von <b>/data/data/com.google.android.apps.authenticator2/databases/databases</b> an, die sich im internen Speicherverzeichnis von Google Authenticator befindet.</string>
<string name="importer_help_microsoft_authenticator">Gib eine Kopie von <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b> an, die sich im internen Speicherverzeichnis von Microsoft Authenticator befindet.</string>
<string name="importer_help_plain_text">Gib eine Klartextdatei an, die in jeder Zeile eine Google Authenticator-URI enthält.</string>
<string name="importer_help_steam">Gib eine Kopie von <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b> an, die sich im internen Speicherverzeichnis von Steam befindet.</string>
<string name="importer_help_totp_authenticator">Gib eine TOTP Authenticator Exportdatei an.</string>
<string name="importer_help_winauth">Gib eine WinAuth Exportdatei an.</string>
<string name="importer_help_direct">Importiere Einträge direkt aus %s. Dazu muss die App auf diesem Gerät installiert sein und Aegis muss Root-Zugriff gewährt werden.</string>
</resources>
+2 -2
View File
@@ -72,7 +72,7 @@
<string name="export_format_google_auth_uri">Αρχείο κειμένου (*.TXT)</string>
<string name="choose_authentication_method">Ασφάλεια</string>
<string name="authentication_method_explanation">Το Aegis είναι μια εφαρμογή 2FA επικεντρωμένη στην ασφάλεια. Τα αναγνωριστικά αποθηκεύονται σε μία κρύπτη, η οποία μπορεί προαιρετικά να κρυπτογραφηθεί με έναν κωδικό της επιλογής σας. Αν κάποιος εισβολέας αποκτήσει το κρυπτογραφημένο αρχείο της κρύπτης σας, δεν θα έχει πρόσβαση στα περιεχόμενα χωρίς να γνωρίζει τον κωδικό.\n\nΈχουμε προεπιλέξει την επιλογή που νομίζουμε ότι θα ταιριάζει καλύτερα στη συσκευή σας.</string>
<string name="authentication_method_none">Κανένας</string>
<string name="authentication_method_none">Καμία</string>
<string name="authentication_method_none_description">Δεν απαιτείται κωδικός πρόσβασης για να ξεκλειδώσετε την κρύπτη και δεν θα κρυπτογραφηθεί. <b> Αυτή η επιλογή δεν συνιστάται </b>.</string>
<string name="authentication_method_password">Κωδικός πρόσβασης</string>
<string name="authentication_method_password_description">Απαιτείται κωδικός πρόσβασης για να ξεκλειδώσετε την κρύπτη.</string>
@@ -84,7 +84,7 @@
<string name="authentication">Ξεκλείδωμα της κρύπτης</string>
<!-- The newline (\n) on the following line is just for aesthetic purposes !-->
<string name="authentication_multiline">Ξεκλείδωμα\nτης κρύπτης</string>
<string name="auth_use_biometrics">Ή πατήστε εδώ για να χρησιμοποιήσετε <font fgcolor="#FF0D86C1">βιομετρική</font></string>
<string name="auth_use_biometrics">Ή πατήστε εδώ για να χρησιμοποιήσετε <font fgcolor="#FF0D86C1">βιομετρία</font></string>
<string name="set_password">Παρακαλώ εισάγετε έναν κωδικό πρόσβασης</string>
<string name="set_group">Παρακαλώ εισάγετε όνομα ομάδας</string>
<string name="set_number">Παρακαλώ εισάγετε αριθμό</string>
@@ -122,6 +122,7 @@
<string name="password_equality_error">パスワードが一致しません</string>
<string name="snackbar_authentication_method">認証方法を選択してください</string>
<string name="encrypting_vault">保管庫の暗号化</string>
<string name="exporting_vault">保管庫のエクスポート</string>
<string name="delete_entry">エントリーを削除</string>
<string name="delete_entry_description">このエントリーを削除してもよろしいですか?</string>
<string name="delete_entries">エントリーを削除</string>
@@ -153,6 +154,7 @@
<string name="disable_encryption_description">暗号化を無効にしてもよろしいですか?これにより、保管庫は平文で保存されます。</string>
<string name="enable_encryption_error">暗号化の有効化中にエラーが発生しました</string>
<string name="disable_encryption_error">暗号化の無効化中にエラーが発生しました</string>
<string name="backup_successful">バックアップが正常に作成されました</string>
<string name="backup_error">バックアップの作成中にエラーが発生しました</string>
<string name="permission_denied">権限がありません</string>
<string name="andotp_new_format">新しい形式 (v0.6.3 以降) </string>
@@ -64,6 +64,12 @@
<string name="pref_biometrics_summary">Sta biometrische authenticatie toe om de kluis te ontgrendelen</string>
<string name="pref_set_password_title">Wachtwoord wijzigen</string>
<string name="pref_set_password_summary">Stel een nieuw wachtwoord in waarmee je de kluis kunt ontgrendelen</string>
<string name="export_encrypted">Versleutel de kluis</string>
<string name="export_help">Deze actie zal de kluis exporteren uit de interne opslag van Aegis. Selecteer het formaat waarin je de export wilt:</string>
<string name="export_warning_unencrypted">U staat op het punt een niet-geëncrypte kopie van uw Aegis-kluis te exporteren. <b>Dit is niet aanbevolen</b>.</string>
<string name="export_warning_accept">Ik begrijp het risico</string>
<string name="export_format_aegis">Aegis (.JSON)</string>
<string name="export_format_google_auth_uri">Tekstbestand (.TXT)</string>
<string name="choose_authentication_method">Beveiliging</string>
<string name="authentication_method_explanation">Aegis is een op veiligheid gerichte 2FA-applicatie. Tokens worden opgeslagen in een kluis, die optioneel kan worden versleuteld met een wachtwoord van uw keuze. Als een aanvaller je versleutelde kluisbestand verkrijgt, zullen ze geen toegang hebben tot de inhoud zonder het wachtwoord te kennen.\n\nWij hebben de optie gekozen die volgens ons het beste past op jouw apparaat.</string>
<string name="authentication_method_none">Geen</string>
@@ -87,6 +93,7 @@
<string name="invalidated_biometrics">Er is een verandering in de beveiligingsinstellingen van je toestel gedetecteerd. Ga naar \"Aegis -&gt; Instellingen -&gt; Vingerafdruk\" om opnieuw biometrische verificatie in te schakelen.</string>
<string name="password_reminder">Voer je wachtwoord in. We vragen je af en toe om dit te doen, zodat je het niet vergeet.</string>
<string name="enter_password_authy_message">Het lijkt erop dat je Authy tokens zijn versleuteld. Sluit Aegis, open Authy en ontgrendel de tokens met je wachtwoord. In plaats daarvan kan Aegis ook proberen om je Authy tokens te decoderen als je hieronder je wachtwoord invult.</string>
<string name="share">Delen</string>
<string name="yes">Ja</string>
<string name="no">Nee</string>
<string name="unlock">Ontgrendel</string>
@@ -117,6 +124,7 @@
<string name="password_equality_error">Wachtwoorden moeten overeen komen en mogen niet leeg zijn</string>
<string name="snackbar_authentication_method">Kies een inlogmethode</string>
<string name="encrypting_vault">De kluis wordt geëncrypt</string>
<string name="exporting_vault">De kluis wordt geëxporteerd</string>
<string name="delete_entry">Item verwijderen</string>
<string name="delete_entry_description">Weet je zeker dat je dit item wilt verwijderen?</string>
<string name="delete_entries">Items verwijderen</string>
@@ -149,6 +157,7 @@
<string name="disable_encryption_description">Weet je zeker dat je encryptie wilt uitschakelen? Dit zorgt ervoor dat de kluis in leesbare tekst wordt opgeslagen.</string>
<string name="enable_encryption_error">Er is een fout opgetreden tijdens het inschakelen van de encryptie</string>
<string name="disable_encryption_error">Er is een fout opgetreden tijden het uitschakelen van de encryptie</string>
<string name="backup_successful">De back-up is succesvol gepland</string>
<string name="backup_error">Er is een fout opgetreden bij maken van een back-up</string>
<string name="permission_denied">Toestemming geweigerd</string>
<string name="andotp_new_format">Nieuw formaat (v0.6.3 of nieuwer) </string>
@@ -124,6 +124,7 @@
<string name="password_equality_error">As senhas devem ser iguais e não vazias</string>
<string name="snackbar_authentication_method">Por favor selecione um método de autenticação</string>
<string name="encrypting_vault">Criptografando o cofre</string>
<string name="exporting_vault">Exportando o cofre</string>
<string name="delete_entry">Deletar entrada</string>
<string name="delete_entry_description">Você tem certeza que deseja deletar essa entrada?</string>
<string name="delete_entries">Deletar entradas</string>
@@ -156,6 +157,7 @@
<string name="disable_encryption_description">Você tem certeza que deseja desabilitar a criptografia? Isso irá fazer com que o cofre será armazenado em texto.</string>
<string name="enable_encryption_error">Um erro ocorreu durante a ativação da criptografia</string>
<string name="disable_encryption_error">Um erro ocorreu durante a desativação da criptografia</string>
<string name="backup_successful">O backup foi agendado com sucesso</string>
<string name="backup_error">Um erro ocorreu durante a tentativa de criar um backup</string>
<string name="permission_denied">Permissão negada</string>
<string name="andotp_new_format">Novo formato (v0.6.3 ou mais novo) </string>
@@ -124,6 +124,7 @@
<string name="password_equality_error">As senhas devem ser idênticas e não vazias</string>
<string name="snackbar_authentication_method">Por favor, selecione um método de autenticação</string>
<string name="encrypting_vault">Criptografando o cofre</string>
<string name="exporting_vault">Exportando o cofre</string>
<string name="delete_entry">Excluir entrada</string>
<string name="delete_entry_description">Tem a certeza de que quer excluir esta entrada?</string>
<string name="delete_entries">Excluir entradas</string>
@@ -156,6 +157,7 @@
<string name="disable_encryption_description">Tem certeza que deseja desativar a criptografia? Isso fará com que o cofre seja armazenado em um arquivo inseguro.</string>
<string name="enable_encryption_error">Ocorreu um erro ao ativar a criptografia</string>
<string name="disable_encryption_error">Ocorreu um erro ao desativar a criptografia</string>
<string name="backup_successful">O backup foi agendado com sucesso</string>
<string name="backup_error">Ocorreu um erro ao tentar criar um backup</string>
<string name="permission_denied">Permissão negada</string>
<string name="andotp_new_format">Novo formato (v0.6.3 ou mais recente) </string>
+1 -1
View File
@@ -6,7 +6,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.1'
classpath 'com.android.tools.build:gradle:4.0.1'
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.13'
// NOTE: Do not place your application dependencies here; they belong