mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-06-28 19:59:54 +00:00
Compare commits
71 commits
Author | SHA1 | Date | |
---|---|---|---|
|
9d32a426f9 | ||
|
36bd8f945a | ||
|
ab9cdabddc | ||
|
d35c67d9d3 | ||
|
313b33793f | ||
|
94aabdcd88 | ||
|
d6b372bad5 | ||
|
af4e3d9566 | ||
|
8d667cd26c | ||
|
1335be6787 | ||
|
efaa6afda6 | ||
|
1c30557779 | ||
|
6f270144e2 | ||
|
62c0d273a5 | ||
|
3c4e8b44a0 | ||
|
63d2666230 | ||
|
6c40cfa748 | ||
|
6758ec498b | ||
|
819865230f | ||
|
97762fa146 | ||
|
60eea0bcb2 | ||
|
3818f9408d | ||
|
03c00d51ba | ||
|
afa1fbd3ae | ||
|
c81e08bf1f | ||
|
a5dc861336 | ||
|
fbfdd50069 | ||
|
19fe7bd4d2 | ||
|
7882ecc33a | ||
|
d39b44f0c3 | ||
|
7c6e3ae2a8 | ||
|
78ee38ba7d | ||
|
8ddf8c58da | ||
|
ce29d120a9 | ||
|
6bbb42fb83 | ||
|
e8d712ec71 | ||
|
ad2dc803fb | ||
|
3d50ab1b65 | ||
|
a4812c530d | ||
|
9ab949a59e | ||
|
e8bf7b0506 | ||
|
ec92fb2b31 | ||
|
919e6854e8 | ||
|
d98e23a1e5 | ||
|
e59df63e94 | ||
|
14643b4000 | ||
|
5439067e9f | ||
|
81a26ccad8 | ||
|
1fb36b0578 | ||
|
de74daef33 | ||
|
fe8b638818 | ||
|
05a415bb38 | ||
|
920df1d9be | ||
|
19a77209d8 | ||
|
aec16f22c1 | ||
|
a76f3394f3 | ||
|
6039cfa20e | ||
|
0eb1194578 | ||
|
170f626c9e | ||
|
c616a4f43c | ||
|
411a677fbf | ||
|
d48f2ead28 | ||
|
8147d07606 | ||
|
fa073371b5 | ||
|
3a9e27bacb | ||
|
51f656dd6b | ||
|
3efe74d375 | ||
|
f9ada47956 | ||
|
5213bafc97 | ||
|
503ce87c91 | ||
|
d2fcb24d79 |
157 changed files with 5359 additions and 668 deletions
|
@ -1,10 +0,0 @@
|
|||
project_id: "372633"
|
||||
api_token: "<api-token-here>"
|
||||
base_path: "../app/src/main"
|
||||
base_url: "https://api.crowdin.com"
|
||||
preserve_hierarchy: true
|
||||
|
||||
files:
|
||||
- source: "res/values/strings.xml"
|
||||
dest: "strings.xml"
|
||||
translation: "res/values-%android_code%/%original_file_name%"
|
2
.github/workflows/build-app-workflow.yaml
vendored
2
.github/workflows/build-app-workflow.yaml
vendored
|
@ -35,7 +35,7 @@ jobs:
|
|||
sudo udevadm control --reload-rules
|
||||
sudo udevadm trigger --name-match=kvm
|
||||
- name: Tests
|
||||
uses: reactivecircus/android-emulator-runner@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2
|
||||
uses: reactivecircus/android-emulator-runner@62dbb605bba737720e10b196cb4220d374026a6d
|
||||
with:
|
||||
api-level: 31
|
||||
arch: x86_64
|
||||
|
|
1
.github/workflows/codeql-analysis.yml
vendored
1
.github/workflows/codeql-analysis.yml
vendored
|
@ -14,6 +14,7 @@ jobs:
|
|||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
if: github.event_name != 'schedule' || github.repository == 'beemdevelopment/Aegis'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
|
14
.github/workflows/crowdin.yml
vendored
14
.github/workflows/crowdin.yml
vendored
|
@ -13,19 +13,13 @@ jobs:
|
|||
- uses: actions/checkout@v4
|
||||
- name: Install crowdin-cli
|
||||
run: |
|
||||
wget https://github.com/crowdin/crowdin-cli/releases/download/3.7.2/crowdin-cli.zip
|
||||
echo "ee9f838b819ccedc33c9b2537055e5ba7d7934561b24df1e1a6274cbd6e27f2d crowdin-cli.zip" | sha256sum -c
|
||||
wget https://github.com/crowdin/crowdin-cli/releases/download/4.6.1/crowdin-cli.zip
|
||||
echo "7afd70de3a747ac631a5bad7866008163ae1d50c4606b5773f0b90a5481ffde2 crowdin-cli.zip" | sha256sum -c
|
||||
unzip crowdin-cli.zip -d crowdin-cli
|
||||
- name: Upload to Crowdin
|
||||
env:
|
||||
CROWDIN_TOKEN: "${{ secrets.CROWDIN_TOKEN }}"
|
||||
CROWDIN_PERSONAL_TOKEN: "${{ secrets.CROWDIN_TOKEN }}"
|
||||
run: |
|
||||
java -jar ./crowdin-cli/3.7.2/crowdin-cli.jar upload sources \
|
||||
java -jar ./crowdin-cli/4.6.1/crowdin-cli.jar upload sources \
|
||||
--no-progress \
|
||||
--token "$CROWDIN_TOKEN" \
|
||||
--project-id 372633 \
|
||||
--base-path app/src/main \
|
||||
--source res/values/strings.xml \
|
||||
--translation "res/values-%android_code%/%original_file_name%" \
|
||||
--dest strings.xml \
|
||||
--branch master
|
||||
|
|
8
FAQ.md
8
FAQ.md
|
@ -86,6 +86,14 @@ Another common setup is to configure Aegis to back up to a folder on local
|
|||
storage of your device and then have a separate app (like
|
||||
[Syncthing](https://syncthing.net/)) sync that folder anywhere you want.
|
||||
|
||||
## Encrypted Backups
|
||||
|
||||
### Why do I not get prompted to enter an encryption password when exporting?
|
||||
|
||||
Aegis uses the same password you have configured to encrypt your vault as the
|
||||
password which is used when exporting and importing your vault; so when prompted,
|
||||
you will enter that when importing your vault.
|
||||
|
||||
## Importing
|
||||
|
||||
### When importing from Authenticator Plus, an error is shown claiming that Accounts.txt is missing
|
||||
|
|
22
README.md
22
README.md
|
@ -123,24 +123,33 @@ documentation](docs/iconpacks.md).
|
|||
Unofficial monochrome-styled 2FA icons.
|
||||
|
||||
[<img width=500 alt="aegis-icons preview"
|
||||
src="https://raw.githubusercontent.com/aegis-icons/aegis-icons/master/showcase.png">](https://github.com/aegis-icons/aegis-icons)
|
||||
src="metadata/en-US/images/iconPacks/aegis-icons.png">](https://github.com/aegis-icons/aegis-icons)
|
||||
|
||||
- [delta-aegis-icons](https://github.com/Delta-Icons/aegis-icons)
|
||||
|
||||
Delta version of the unofficial monochrome-styled 2FA icon pack aegis-icons.
|
||||
|
||||
- [aegis-simple-icons](https://github.com/alexbakker/aegis-simple-icons) *
|
||||
[<img width=500 alt="delta-icons preview"
|
||||
src="metadata/en-US/images/iconPacks/delta-icons.png">](https://github.com/Delta-Icons/aegis-icons)
|
||||
|
||||
- [aegis-simple-icons](https://github.com/alexbakker/aegis-simple-icons) \*
|
||||
|
||||
This project periodically generates an icon pack for Aegis based on [Simple
|
||||
Icons](https://simpleicons.org/).
|
||||
|
||||
- [aegis-simple-icons-outlined](https://github.com/michaelschattgen/aegis-simple-icons-outlined) *
|
||||
[<img width=500 alt="aegis-simple-icons preview"
|
||||
src="metadata/en-US/images/iconPacks/aegis-simple-icons.png">](https://github.com/alexbakker/aegis-simple-icons)
|
||||
|
||||
- [aegis-simple-icons-outlined](https://github.com/michaelschattgen/aegis-simple-icons-outlined) \*
|
||||
|
||||
This is a variant on the aegis-simple-icons pack where the icons contain no solid background and just the outlines are being used.
|
||||
|
||||
|
||||
[<img width=500 alt="aegis-simple-icons-outlined preview"
|
||||
src="metadata/en-US/images/iconPacks/aegis-simple-icons-outlined.png">](https://github.com/michaelschattgen/aegis-simple-icons-outlined)
|
||||
|
||||
\* The icons are automatically generated, so
|
||||
not all of them are as high quality as the ones you'll find in
|
||||
[aegis-icons](https://github.com/aegis-icons/aegis-icons).
|
||||
not all of them are as high quality as the ones you'll find in
|
||||
[aegis-icons](https://github.com/aegis-icons/aegis-icons).
|
||||
|
||||
## Contributing
|
||||
|
||||
|
@ -158,5 +167,6 @@ This project is licensed under the GNU General Public License v3.0. See the
|
|||
|
||||
A couple of libraries vendored in Aegis' repository are licensed under a
|
||||
different license:
|
||||
|
||||
- [TextDrawable](app/src/main/java/com/amulyakhare/textdrawable)
|
||||
- [TrustedIntents](app/src/main/java/info/guardianproject/trustedintents)
|
||||
|
|
|
@ -26,10 +26,10 @@ android {
|
|||
|
||||
defaultConfig {
|
||||
applicationId "${packageName}"
|
||||
minSdkVersion 21
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 35
|
||||
versionCode 74
|
||||
versionName "3.3.1"
|
||||
versionCode 79
|
||||
versionName "3.4"
|
||||
multiDexEnabled true
|
||||
buildConfigField "String", "GIT_HASH", "\"${getGitHash()}\""
|
||||
buildConfigField "String", "GIT_BRANCH", "\"${getGitBranch()}\""
|
||||
|
@ -93,16 +93,27 @@ android {
|
|||
}
|
||||
}
|
||||
|
||||
// Required to make the APK reproducible
|
||||
aaptOptions {
|
||||
cruncherEnabled = false
|
||||
}
|
||||
defaultConfig {
|
||||
vectorDrawables.generatedDensities = []
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
// R8 doesn't remove these resources, so exclude them manually. This reduces APK size by 4MB.
|
||||
resources {
|
||||
excludes += ['/org/bouncycastle/pqc/**/*.properties']
|
||||
excludes += [
|
||||
'/org/bouncycastle/pqc/**/*.properties',
|
||||
'META-INF/versions/9/OSGI-INF/MANIFEST.MF'
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
targetCompatibility 1.8
|
||||
sourceCompatibility 1.8
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
coreLibraryDesugaringEnabled true
|
||||
}
|
||||
lint {
|
||||
|
@ -141,13 +152,13 @@ aboutLibraries {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
def cameraxVersion = '1.4.0'
|
||||
def cameraxVersion = '1.4.2'
|
||||
def glideVersion = '4.16.0'
|
||||
def guavaVersion = '33.3.1'
|
||||
def hiltVersion = '2.52'
|
||||
def guavaVersion = '33.4.8'
|
||||
def hiltVersion = '2.56.2'
|
||||
def junitVersion = '4.13.2'
|
||||
def libsuVersion = '6.0.0'
|
||||
def roomVersion = "2.6.1"
|
||||
def roomVersion = '2.7.1'
|
||||
|
||||
annotationProcessor 'androidx.annotation:annotation:1.9.1'
|
||||
annotationProcessor "androidx.room:room-compiler:$roomVersion"
|
||||
|
@ -155,18 +166,18 @@ dependencies {
|
|||
annotationProcessor "com.github.bumptech.glide:compiler:${glideVersion}"
|
||||
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'androidx.activity:activity:1.9.3'
|
||||
implementation 'androidx.activity:activity:1.10.1'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation "androidx.biometric:biometric:1.1.0"
|
||||
implementation "androidx.camera:camera-camera2:$cameraxVersion"
|
||||
implementation "androidx.camera:camera-lifecycle:$cameraxVersion"
|
||||
implementation "androidx.camera:camera-view:$cameraxVersion"
|
||||
implementation 'androidx.core:core:1.15.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
|
||||
implementation 'androidx.documentfile:documentfile:1.0.1'
|
||||
implementation 'androidx.lifecycle:lifecycle-process:2.8.7'
|
||||
implementation 'androidx.core:core:1.16.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||
implementation 'androidx.documentfile:documentfile:1.1.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-process:2.9.0'
|
||||
implementation "androidx.preference:preference:1.2.1"
|
||||
implementation 'androidx.recyclerview:recyclerview:1.3.2'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.4.0'
|
||||
implementation "androidx.room:room-runtime:$roomVersion"
|
||||
implementation 'androidx.viewpager2:viewpager2:1.1.0'
|
||||
implementation 'com.caverock:androidsvg-aar:1.4'
|
||||
|
@ -181,7 +192,7 @@ dependencies {
|
|||
implementation "com.github.topjohnwu.libsu:io:${libsuVersion}"
|
||||
implementation "com.google.guava:guava:${guavaVersion}-android"
|
||||
implementation 'com.google.android.material:material:1.12.0'
|
||||
implementation 'com.google.protobuf:protobuf-javalite:4.28.3'
|
||||
implementation 'com.google.protobuf:protobuf-javalite:4.31.0'
|
||||
implementation 'com.google.zxing:core:3.5.3'
|
||||
implementation('com.mikepenz:aboutlibraries:11.2.3') {
|
||||
exclude group: 'com.mikepenz', module: 'aboutlibraries-core'
|
||||
|
@ -189,7 +200,7 @@ dependencies {
|
|||
implementation 'com.mikepenz:aboutlibraries-core-android:11.2.3'
|
||||
implementation 'com.nulab-inc:zxcvbn:1.9.0'
|
||||
implementation 'net.lingala.zip4j:zip4j:2.11.5'
|
||||
implementation 'org.bouncycastle:bcprov-jdk18on:1.79'
|
||||
implementation 'org.bouncycastle:bcprov-jdk18on:1.80'
|
||||
implementation 'org.simpleflatmapper:sfm-csv:8.2.3'
|
||||
|
||||
androidTestAnnotationProcessor "com.google.dagger:hilt-android-compiler:$hiltVersion"
|
||||
|
@ -207,8 +218,8 @@ dependencies {
|
|||
testImplementation 'androidx.test:core:1.6.1'
|
||||
testImplementation "com.google.guava:guava:${guavaVersion}-jre"
|
||||
testImplementation "junit:junit:${junitVersion}"
|
||||
testImplementation 'org.json:json:20240303'
|
||||
testImplementation 'org.robolectric:robolectric:4.14'
|
||||
testImplementation 'org.json:json:20250517'
|
||||
testImplementation 'org.robolectric:robolectric:4.14.1'
|
||||
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.3'
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
|
||||
}
|
||||
|
|
|
@ -61,13 +61,20 @@ import org.junit.Test;
|
|||
import org.junit.rules.RuleChain;
|
||||
import org.junit.rules.TestRule;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
import org.xmlpull.v1.XmlPullParserFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.SecretKey;
|
||||
|
@ -183,7 +190,9 @@ public class BackupExportTest extends AegisTest {
|
|||
onView(withText(R.string.export_format_html)).inRoot(RootMatchers.isPlatformPopup()).perform(click());
|
||||
onView(withId(android.R.id.button1)).perform(click());
|
||||
onView(withId(R.id.checkbox_accept)).perform(click());
|
||||
doExport();
|
||||
File file = doExport();
|
||||
|
||||
checkHtmlExport(file);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -196,7 +205,9 @@ public class BackupExportTest extends AegisTest {
|
|||
onView(withText(R.string.export_format_html)).inRoot(RootMatchers.isPlatformPopup()).perform(click());
|
||||
onView(withId(android.R.id.button1)).perform(click());
|
||||
onView(withId(R.id.checkbox_accept)).perform(click());
|
||||
doExport();
|
||||
File file = doExport();
|
||||
|
||||
checkHtmlExport(file);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -380,6 +391,26 @@ public class BackupExportTest extends AegisTest {
|
|||
checkReadEntries(entries);
|
||||
}
|
||||
|
||||
private void checkHtmlExport(File file) {
|
||||
try (InputStream inStream = new FileInputStream(file)) {
|
||||
Reader inReader = new InputStreamReader(inStream, StandardCharsets.UTF_8);
|
||||
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
|
||||
XmlPullParser parser = factory.newPullParser();
|
||||
parser.setInput(inReader);
|
||||
while (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
parser.next();
|
||||
}
|
||||
if (!parser.getName().toLowerCase(Locale.ROOT).equals("html")) {
|
||||
throw new RuntimeException("not an html document!");
|
||||
}
|
||||
while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
|
||||
parser.next();
|
||||
}
|
||||
} catch (IOException | XmlPullParserException e) {
|
||||
throw new RuntimeException("Unable to read html export file", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkReadEntries(Collection<VaultEntry> entries) {
|
||||
List<VaultEntry> vectors = VaultEntries.get();
|
||||
assertEquals(vectors.size(), entries.size());
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
|
||||
<!-- NOTE: Disabled for now. See issue: #1047
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
|
@ -27,6 +28,7 @@
|
|||
android:icon="@mipmap/${iconName}"
|
||||
android:label="Aegis"
|
||||
android:supportsRtl="true"
|
||||
android:largeHeap="true"
|
||||
android:theme="@style/Theme.Aegis.Launch"
|
||||
tools:targetApi="tiramisu">
|
||||
<activity android:name=".ui.TransferEntriesActivity"
|
||||
|
@ -149,7 +151,7 @@
|
|||
</application>
|
||||
|
||||
<queries>
|
||||
<package android:name="me.jmh.authenticatorpro" />
|
||||
<package android:name="com.stratumauth.app" />
|
||||
<package android:name="com.authy.authy" />
|
||||
<package android:name="org.fedorahosted.freeotp" />
|
||||
<package android:name="org.liberty.android.freeotpplus" />
|
||||
|
|
|
@ -31,6 +31,53 @@
|
|||
</head>
|
||||
<body>
|
||||
<div></div>
|
||||
<h3>Version 3.4</h3>
|
||||
<h4>New</h4>
|
||||
<ul>
|
||||
<li>Haptic feedback when an entry is about to expire</li>
|
||||
<li>Brightness increase is now toggleable in the entry transfer view</li>
|
||||
<li>Filter on multiple groups simultaneously</li>
|
||||
<li>Color contrast on hidden codes has been improved</li>
|
||||
<li>Prompt before the user is about to save an entry with a duplicate name/issuer combination</li>
|
||||
<li>New languages: Estonian, Korean, Malayalam, Norwegian (Bokmål) and Serbian</li>
|
||||
</ul>
|
||||
<h4>Fixes</h4>
|
||||
<ul>
|
||||
<li>A crash could occur if an entry with period 7 exists and code expiry indication is enabled</li>
|
||||
<li>The Portuguese (Brazilian) locale was used even if Portuguese was configured</li>
|
||||
<li>FreeOTP import would fail if the algorithm or digits field was not specified for an entry</li>
|
||||
<li>The divider between entries would be missing in certain filter configurations</li>
|
||||
<li>The snackbar in try entry importing view could obstruct the name of an entry</li>
|
||||
</ul>
|
||||
<h4>Miscellaneous</h4>
|
||||
<ul>
|
||||
<li>Android 6 or newer is now required the run the app</li>
|
||||
</ul>
|
||||
<h3>Version 3.3.4</h3>
|
||||
<h4>Fixes</h4>
|
||||
<ul>
|
||||
<li>Icons are now resized to 512x512 to reduce the size of the vault file and to reduce the chance of encountering out of memory conditions</li>
|
||||
</ul>
|
||||
<h3>Version 3.3.3</h3>
|
||||
<h4>Fixes</h4>
|
||||
<ul>
|
||||
<li>Some users ran into out of memory conditions due to large icons in their vault file. We've introduced a temporary measure that should help in most cases, but we'll follow up with a more comprehensive fix soon.</li>
|
||||
<li>Window insets were not always applied correctly, causing parts of the UI to appear off-screen</li>
|
||||
<li>The 2FAS importer did not tolerate spaces for secrets and was not always able to extract the issuer</li>
|
||||
</ul>
|
||||
<h3>Version 3.3.2</h3>
|
||||
<h4>New</h4>
|
||||
<ul>
|
||||
<li>Find entries by searching in multiple fields simultaneously</li>
|
||||
</ul>
|
||||
<h4>Fixes</h4>
|
||||
<ul>
|
||||
<li>Entries would not actually be added to the Aegis vault in some cases when importing from Google Authenticator export QR codes</li>
|
||||
<li>The lock button was sometimes shown for unencrypted vaults</li>
|
||||
<li>The sort category menu item did not always reflect the current sorting</li>
|
||||
<li>The next code was not always easy to read because its color had low contrast with the background</li>
|
||||
<li>Entry selection was not cancelled when changing the group filter</li>
|
||||
</ul>
|
||||
<h3>Version 3.3.1</h3>
|
||||
<h4>Fixes</h4>
|
||||
<ul>
|
||||
|
|
|
@ -17,23 +17,14 @@ import androidx.lifecycle.Lifecycle;
|
|||
import androidx.lifecycle.LifecycleEventObserver;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.ProcessLifecycleOwner;
|
||||
import androidx.room.Room;
|
||||
|
||||
import com.beemdevelopment.aegis.database.AppDatabase;
|
||||
import com.beemdevelopment.aegis.database.AuditLogEntry;
|
||||
import com.beemdevelopment.aegis.database.AuditLogRepository;
|
||||
import com.beemdevelopment.aegis.receivers.VaultLockReceiver;
|
||||
import com.beemdevelopment.aegis.ui.MainActivity;
|
||||
import com.beemdevelopment.aegis.util.IOUtils;
|
||||
import com.beemdevelopment.aegis.vault.VaultManager;
|
||||
import com.topjohnwu.superuser.Shell;
|
||||
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import dagger.hilt.InstallIn;
|
||||
import dagger.hilt.android.EarlyEntryPoint;
|
||||
|
|
|
@ -86,10 +86,18 @@ public class Preferences {
|
|||
return _prefs.getBoolean("pref_tap_to_reveal", false);
|
||||
}
|
||||
|
||||
public boolean isGroupMultiselectEnabled() {
|
||||
return _prefs.getBoolean("pref_groups_multiselect", false);
|
||||
}
|
||||
|
||||
public boolean isEntryHighlightEnabled() {
|
||||
return _prefs.getBoolean("pref_highlight_entry", false);
|
||||
}
|
||||
|
||||
public boolean isHapticFeedbackEnabled() {
|
||||
return _prefs.getBoolean("pref_haptic_feedback", true);
|
||||
}
|
||||
|
||||
public boolean isPauseFocusedEnabled() {
|
||||
boolean dependenciesEnabled = isTapToRevealEnabled() || isEntryHighlightEnabled();
|
||||
if (!dependenciesEnabled) return false;
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
package com.beemdevelopment.aegis;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class VibrationPatterns {
|
||||
public static final long[] EXPIRING = {475, 20, 5, 20, 965, 20, 5, 20, 965, 20, 5, 20, 420};
|
||||
public static final long[] REFRESH_CODE = {0, 100};
|
||||
|
||||
public static long getLengthInMillis(long[] pattern) {
|
||||
return Arrays.stream(pattern).sum();
|
||||
}
|
||||
}
|
|
@ -1,7 +1,5 @@
|
|||
package com.beemdevelopment.aegis.crypto;
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import com.beemdevelopment.aegis.crypto.bc.SCrypt;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
@ -23,7 +21,6 @@ import javax.crypto.KeyGenerator;
|
|||
import javax.crypto.NoSuchPaddingException;
|
||||
import javax.crypto.SecretKey;
|
||||
import javax.crypto.spec.GCMParameterSpec;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
public class CryptoUtils {
|
||||
|
@ -66,13 +63,7 @@ public class CryptoUtils {
|
|||
// generate the nonce if none is given
|
||||
// we are not allowed to do this ourselves as "setRandomizedEncryptionRequired" is set to true
|
||||
if (nonce != null) {
|
||||
AlgorithmParameterSpec spec;
|
||||
// apparently kitkat doesn't support GCMParameterSpec
|
||||
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
|
||||
spec = new IvParameterSpec(nonce);
|
||||
} else {
|
||||
spec = new GCMParameterSpec(CRYPTO_AEAD_TAG_SIZE * 8, nonce);
|
||||
}
|
||||
AlgorithmParameterSpec spec = new GCMParameterSpec(CRYPTO_AEAD_TAG_SIZE * 8, nonce);
|
||||
cipher.init(opmode, key, spec);
|
||||
} else {
|
||||
cipher.init(opmode, key);
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
package com.beemdevelopment.aegis.crypto;
|
||||
|
||||
import android.os.Build;
|
||||
import android.security.keystore.KeyGenParameterSpec;
|
||||
import android.security.keystore.KeyProperties;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
import java.security.InvalidKeyException;
|
||||
|
@ -45,10 +42,6 @@ public class KeyStoreHandle {
|
|||
}
|
||||
|
||||
public SecretKey generateKey(String id) throws KeyStoreHandleException {
|
||||
if (!isSupported()) {
|
||||
throw new KeyStoreHandleException("Symmetric KeyStore keys are not supported in this version of Android");
|
||||
}
|
||||
|
||||
try {
|
||||
KeyGenerator generator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, STORE_NAME);
|
||||
generator.init(new KeyGenParameterSpec.Builder(id,
|
||||
|
@ -87,14 +80,13 @@ public class KeyStoreHandle {
|
|||
throw new KeyStoreHandleException(e);
|
||||
}
|
||||
|
||||
if (isSupported() && isKeyPermanentlyInvalidated(key)) {
|
||||
if (isKeyPermanentlyInvalidated(key)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
private static boolean isKeyPermanentlyInvalidated(SecretKey key) {
|
||||
// try to initialize a dummy cipher and see if an InvalidKeyException is thrown
|
||||
try {
|
||||
|
@ -127,8 +119,4 @@ public class KeyStoreHandle {
|
|||
throw new KeyStoreHandleException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isSupported() {
|
||||
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
package com.beemdevelopment.aegis.helpers;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
||||
import com.beemdevelopment.aegis.icons.IconType;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntryIcon;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.Objects;
|
||||
|
||||
public class BitmapHelper {
|
||||
private BitmapHelper() {
|
||||
|
@ -28,4 +35,29 @@ public class BitmapHelper {
|
|||
|
||||
return Bitmap.createScaledBitmap(bitmap, width, height, true);
|
||||
}
|
||||
|
||||
public static boolean isVaultEntryIconOptimized(VaultEntryIcon icon) {
|
||||
BitmapFactory.Options opts = new BitmapFactory.Options();
|
||||
opts.inJustDecodeBounds = true;
|
||||
BitmapFactory.decodeByteArray(icon.getBytes(), 0, icon.getBytes().length, opts);
|
||||
return opts.outWidth <= VaultEntryIcon.MAX_DIMENS && opts.outHeight <= VaultEntryIcon.MAX_DIMENS;
|
||||
}
|
||||
|
||||
public static VaultEntryIcon toVaultEntryIcon(Bitmap bitmap, IconType iconType) {
|
||||
if (bitmap.getWidth() > VaultEntryIcon.MAX_DIMENS
|
||||
|| bitmap.getHeight() > VaultEntryIcon.MAX_DIMENS) {
|
||||
bitmap = resize(bitmap, VaultEntryIcon.MAX_DIMENS, VaultEntryIcon.MAX_DIMENS);
|
||||
}
|
||||
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
if (Objects.equals(iconType, IconType.PNG)) {
|
||||
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
|
||||
} else {
|
||||
iconType = IconType.JPEG;
|
||||
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, stream);
|
||||
}
|
||||
|
||||
byte[] data = stream.toByteArray();
|
||||
return new VaultEntryIcon(data, iconType);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,8 @@ package com.beemdevelopment.aegis.helpers;
|
|||
|
||||
import android.os.Handler;
|
||||
|
||||
import com.beemdevelopment.aegis.VibrationPatterns;
|
||||
|
||||
public class UiRefresher {
|
||||
private boolean _running;
|
||||
private Listener _listener;
|
||||
|
@ -23,7 +25,6 @@ public class UiRefresher {
|
|||
}
|
||||
_running = true;
|
||||
|
||||
_listener.onRefresh();
|
||||
_handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -31,6 +32,27 @@ public class UiRefresher {
|
|||
_handler.postDelayed(this, _listener.getMillisTillNextRefresh());
|
||||
}
|
||||
}, _listener.getMillisTillNextRefresh());
|
||||
|
||||
_handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
_listener.onExpiring();
|
||||
_handler.postDelayed(this, getNextRun());
|
||||
}
|
||||
}, getInitialRun());
|
||||
}
|
||||
|
||||
private long getInitialRun() {
|
||||
long sum = _listener.getMillisTillNextRefresh() - VibrationPatterns.getLengthInMillis(VibrationPatterns.EXPIRING);
|
||||
if (sum < 0) {
|
||||
return getNextRun();
|
||||
}
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
private long getNextRun() {
|
||||
return (_listener.getMillisTillNextRefresh() + _listener.getPeriodMillis()) - VibrationPatterns.getLengthInMillis(VibrationPatterns.EXPIRING);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
|
@ -40,6 +62,8 @@ public class UiRefresher {
|
|||
|
||||
public interface Listener {
|
||||
void onRefresh();
|
||||
void onExpiring();
|
||||
long getMillisTillNextRefresh();
|
||||
long getPeriodMillis();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package com.beemdevelopment.aegis.helpers;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.VibrationEffect;
|
||||
import android.os.Vibrator;
|
||||
import android.os.VibratorManager;
|
||||
|
||||
import com.beemdevelopment.aegis.Preferences;
|
||||
|
||||
public class VibrationHelper {
|
||||
private Preferences _preferences;
|
||||
|
||||
public VibrationHelper(Context context) {
|
||||
_preferences = new Preferences(context);
|
||||
}
|
||||
|
||||
public void vibratePattern(Context context, long[] pattern) {
|
||||
if (!isHapticFeedbackEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
VibratorManager vibratorManager = (VibratorManager) context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE);
|
||||
if (vibratorManager != null) {
|
||||
Vibrator vibrator = vibratorManager.getDefaultVibrator();
|
||||
VibrationEffect effect = VibrationEffect.createWaveform(pattern, -1);
|
||||
vibrator.vibrate(effect);
|
||||
}
|
||||
} else {
|
||||
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
|
||||
if (vibrator != null) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
VibrationEffect effect = VibrationEffect.createWaveform(pattern, -1);
|
||||
vibrator.vibrate(effect);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isHapticFeedbackEnabled() {
|
||||
return _preferences.isHapticFeedbackEnabled();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.beemdevelopment.aegis.helpers;
|
||||
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
|
||||
public class ViewHelper {
|
||||
private ViewHelper() {
|
||||
|
||||
}
|
||||
|
||||
public static void setupAppBarInsets(AppBarLayout appBar) {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(appBar, (targetView, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout());
|
||||
targetView.setPadding(
|
||||
insets.left,
|
||||
insets.top,
|
||||
insets.right,
|
||||
0
|
||||
);
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
}
|
||||
}
|
|
@ -34,7 +34,6 @@ public abstract class DatabaseImporter {
|
|||
_importers.add(new Definition("Aegis", AegisImporter.class, R.string.importer_help_aegis, false));
|
||||
_importers.add(new Definition("andOTP", AndOtpImporter.class, R.string.importer_help_andotp, false));
|
||||
_importers.add(new Definition("Authenticator Plus", AuthenticatorPlusImporter.class, R.string.importer_help_authenticator_plus, false));
|
||||
_importers.add(new Definition("Authenticator Pro", AuthenticatorProImporter.class, R.string.importer_help_authenticator_pro, true));
|
||||
_importers.add(new Definition("Authy", AuthyImporter.class, R.string.importer_help_authy, true));
|
||||
_importers.add(new Definition("Battle.net Authenticator", BattleNetImporter.class, R.string.importer_help_battle_net_authenticator, true));
|
||||
_importers.add(new Definition("Bitwarden", BitwardenImporter.class, R.string.importer_help_bitwarden, false));
|
||||
|
@ -46,6 +45,7 @@ public abstract class DatabaseImporter {
|
|||
_importers.add(new Definition("Microsoft Authenticator", MicrosoftAuthImporter.class, R.string.importer_help_microsoft_authenticator, true));
|
||||
_importers.add(new Definition("Plain text", GoogleAuthUriImporter.class, R.string.importer_help_plain_text, false));
|
||||
_importers.add(new Definition("Steam", SteamImporter.class, R.string.importer_help_steam, true));
|
||||
_importers.add(new Definition("Stratum (Authenticator Pro)", StratumImporter.class, R.string.importer_help_stratum, true));
|
||||
_importers.add(new Definition("TOTP Authenticator", TotpAuthenticatorImporter.class, R.string.importer_help_totp_authenticator, true));
|
||||
_importers.add(new Definition("WinAuth", WinAuthImporter.class, R.string.importer_help_winauth, false));
|
||||
}
|
||||
|
|
|
@ -298,8 +298,8 @@ public class FreeOtpImporter extends DatabaseImporter {
|
|||
private static VaultEntry convertEntry(JSONObject obj) throws DatabaseImporterEntryException {
|
||||
try {
|
||||
String type = obj.getString("type").toLowerCase(Locale.ROOT);
|
||||
String algo = obj.getString("algo");
|
||||
int digits = obj.getInt("digits");
|
||||
String algo = obj.optString("algo", OtpInfo.DEFAULT_ALGORITHM);
|
||||
int digits = obj.optInt("digits", OtpInfo.DEFAULT_DIGITS);
|
||||
byte[] secret = toBytes(obj.getJSONArray("secret"));
|
||||
|
||||
String issuer = obj.getString("issuerExt");
|
||||
|
@ -308,7 +308,7 @@ public class FreeOtpImporter extends DatabaseImporter {
|
|||
OtpInfo info;
|
||||
switch (type) {
|
||||
case "totp":
|
||||
int period = obj.getInt("period");
|
||||
int period = obj.optInt("period", TotpInfo.DEFAULT_PERIOD);
|
||||
if (issuer.equals("Steam")) {
|
||||
info = new SteamInfo(secret, algo, digits, period);
|
||||
} else {
|
||||
|
|
|
@ -45,11 +45,11 @@ import javax.crypto.NoSuchPaddingException;
|
|||
import javax.crypto.SecretKey;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
|
||||
public class AuthenticatorProImporter extends DatabaseImporter {
|
||||
public class StratumImporter extends DatabaseImporter {
|
||||
private static final String HEADER = "AUTHENTICATORPRO";
|
||||
private static final String HEADER_LEGACY = "AuthenticatorPro";
|
||||
private static final String PKG_NAME = "me.jmh.authenticatorpro";
|
||||
private static final String PKG_DB_PATH = "files/proauth.db3";
|
||||
private static final String PKG_NAME = "com.stratumauth.app";
|
||||
private static final String PKG_DB_PATH = "databases/authenticator.db3";
|
||||
|
||||
private enum Algorithm {
|
||||
SHA1,
|
||||
|
@ -57,7 +57,7 @@ public class AuthenticatorProImporter extends DatabaseImporter {
|
|||
SHA512
|
||||
}
|
||||
|
||||
public AuthenticatorProImporter(Context context) {
|
||||
public StratumImporter(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
|
@ -169,7 +169,7 @@ public class AuthenticatorProImporter extends DatabaseImporter {
|
|||
Argon2Task.Params params = getKeyDerivationParams(password);
|
||||
Argon2Task task = new Argon2Task(context, key -> {
|
||||
try {
|
||||
AuthenticatorProImporter.JsonState state = decrypt(key);
|
||||
StratumImporter.JsonState state = decrypt(key);
|
||||
listener.onStateDecrypted(state);
|
||||
} catch (DatabaseImporterException e) {
|
||||
listener.onError(e);
|
||||
|
@ -244,7 +244,7 @@ public class AuthenticatorProImporter extends DatabaseImporter {
|
|||
PBKDFTask.Params params = getKeyDerivationParams(password);
|
||||
PBKDFTask task = new PBKDFTask(context, key -> {
|
||||
try {
|
||||
AuthenticatorProImporter.JsonState state = decrypt(key);
|
||||
StratumImporter.JsonState state = decrypt(key);
|
||||
listener.onStateDecrypted(state);
|
||||
} catch (DatabaseImporterException e) {
|
||||
listener.onError(e);
|
|
@ -4,9 +4,9 @@ import android.content.Context;
|
|||
|
||||
import com.beemdevelopment.aegis.R;
|
||||
import com.beemdevelopment.aegis.crypto.CryptoUtils;
|
||||
import com.beemdevelopment.aegis.encoding.Base32;
|
||||
import com.beemdevelopment.aegis.encoding.Base64;
|
||||
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;
|
||||
|
@ -16,6 +16,7 @@ import com.beemdevelopment.aegis.ui.dialogs.Dialogs;
|
|||
import com.beemdevelopment.aegis.util.IOUtils;
|
||||
import com.beemdevelopment.aegis.util.JsonUtils;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntry;
|
||||
import com.google.common.base.Strings;
|
||||
import com.topjohnwu.superuser.io.SuFile;
|
||||
|
||||
import org.json.JSONArray;
|
||||
|
@ -173,9 +174,12 @@ public class TwoFASImporter extends DatabaseImporter {
|
|||
|
||||
private static VaultEntry convertEntry(JSONObject obj) throws DatabaseImporterEntryException {
|
||||
try {
|
||||
byte[] secret = Base32.decode(obj.getString("secret"));
|
||||
byte[] secret = GoogleAuthInfo.parseSecret(obj.getString("secret"));
|
||||
JSONObject info = obj.getJSONObject("otp");
|
||||
String issuer = info.optString("issuer");
|
||||
String issuer = obj.optString("name");
|
||||
if (Strings.isNullOrEmpty(issuer)) {
|
||||
issuer = info.optString("issuer");
|
||||
}
|
||||
String name = info.optString("account");
|
||||
int digits = info.optInt("digits", TotpInfo.DEFAULT_DIGITS);
|
||||
String algorithm = info.optString("algorithm", TotpInfo.DEFAULT_ALGORITHM);
|
||||
|
|
|
@ -4,7 +4,6 @@ import android.annotation.SuppressLint;
|
|||
import android.app.PendingIntent;
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.IBinder;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
@ -29,11 +28,7 @@ public class NotificationService extends Service {
|
|||
|
||||
@SuppressLint("LaunchActivityFromNotification")
|
||||
public void serviceMethod() {
|
||||
int flags = PendingIntent.FLAG_ONE_SHOT;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
flags |= PendingIntent.FLAG_IMMUTABLE;
|
||||
}
|
||||
|
||||
int flags = PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE;
|
||||
Intent intent = new Intent(this, VaultLockReceiver.class);
|
||||
intent.setAction(VaultLockReceiver.ACTION_LOCK_VAULT);
|
||||
intent.setPackage(BuildConfig.APPLICATION_ID);
|
||||
|
|
|
@ -13,11 +13,15 @@ import android.widget.Toast;
|
|||
|
||||
import androidx.annotation.AttrRes;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
|
||||
import com.beemdevelopment.aegis.BuildConfig;
|
||||
import com.beemdevelopment.aegis.R;
|
||||
import com.beemdevelopment.aegis.ui.dialogs.ChangelogDialog;
|
||||
import com.beemdevelopment.aegis.ui.dialogs.LicenseDialog;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
import com.google.android.material.color.MaterialColors;
|
||||
|
||||
public class AboutActivity extends AegisActivity {
|
||||
|
@ -39,6 +43,7 @@ public class AboutActivity extends AegisActivity {
|
|||
|
||||
setContentView(R.layout.activity_about);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
@ -90,6 +95,17 @@ public class AboutActivity extends AegisActivity {
|
|||
.setTheme(_themeHelper.getConfiguredTheme())
|
||||
.show(getSupportFragmentManager(), null);
|
||||
});
|
||||
|
||||
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.about_scroll_view), (targetView, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout());
|
||||
targetView.setPadding(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
insets.bottom
|
||||
);
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
}
|
||||
|
||||
private static String getCurrentAppVersion() {
|
||||
|
|
|
@ -25,6 +25,7 @@ import com.beemdevelopment.aegis.ui.models.AssignIconEntry;
|
|||
import com.beemdevelopment.aegis.ui.views.AssignIconAdapter;
|
||||
import com.beemdevelopment.aegis.ui.views.IconAdapter;
|
||||
import com.beemdevelopment.aegis.util.IOUtils;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntry;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntryIcon;
|
||||
import com.bumptech.glide.Glide;
|
||||
|
@ -61,6 +62,7 @@ public class AssignIconsActivity extends AegisActivity implements AssignIconAdap
|
|||
|
||||
setContentView(R.layout.activity_assign_icons);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setDisplayShowHomeEnabled(true);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.beemdevelopment.aegis.ui;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
@ -27,6 +28,7 @@ import androidx.activity.result.contract.ActivityResultContracts.StartActivityFo
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import com.amulyakhare.textdrawable.TextDrawable;
|
||||
import com.avito.android.krop.KropView;
|
||||
|
@ -35,12 +37,14 @@ import com.beemdevelopment.aegis.encoding.Base32;
|
|||
import com.beemdevelopment.aegis.encoding.EncodingException;
|
||||
import com.beemdevelopment.aegis.encoding.Hex;
|
||||
import com.beemdevelopment.aegis.helpers.AnimationsHelper;
|
||||
import com.beemdevelopment.aegis.helpers.BitmapHelper;
|
||||
import com.beemdevelopment.aegis.helpers.DropdownHelper;
|
||||
import com.beemdevelopment.aegis.helpers.EditTextHelper;
|
||||
import com.beemdevelopment.aegis.helpers.SafHelper;
|
||||
import com.beemdevelopment.aegis.helpers.SimpleAnimationEndListener;
|
||||
import com.beemdevelopment.aegis.helpers.SimpleTextWatcher;
|
||||
import com.beemdevelopment.aegis.helpers.TextDrawableHelper;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
import com.beemdevelopment.aegis.icons.IconPack;
|
||||
import com.beemdevelopment.aegis.icons.IconType;
|
||||
import com.beemdevelopment.aegis.otp.GoogleAuthInfo;
|
||||
|
@ -75,7 +79,6 @@ import com.google.android.material.imageview.ShapeableImageView;
|
|||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
|
@ -86,6 +89,7 @@ import java.util.Collections;
|
|||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
@ -102,6 +106,7 @@ public class EditEntryActivity extends AegisActivity {
|
|||
// keep track of icon changes separately as the generated jpeg's are not deterministic
|
||||
private boolean _hasChangedIcon = false;
|
||||
private IconPack.Icon _selectedIcon;
|
||||
private String _pickedMimeType;
|
||||
private ShapeableImageView _iconView;
|
||||
private ImageView _saveImageButton;
|
||||
|
||||
|
@ -139,8 +144,8 @@ public class EditEntryActivity extends AegisActivity {
|
|||
if (activityResult.getResultCode() != RESULT_OK || data == null || data.getData() == null) {
|
||||
return;
|
||||
}
|
||||
String fileType = SafHelper.getMimeType(this, data.getData());
|
||||
if (fileType != null && fileType.equals(IconType.SVG.toMimeType())) {
|
||||
_pickedMimeType = SafHelper.getMimeType(this, data.getData());
|
||||
if (_pickedMimeType != null && _pickedMimeType.equals(IconType.SVG.toMimeType())) {
|
||||
ImportFileTask.Params params = new ImportFileTask.Params(data.getData(), "icon", null);
|
||||
ImportFileTask task = new ImportFileTask(this, result -> {
|
||||
if (result.getError() == null) {
|
||||
|
@ -164,6 +169,7 @@ public class EditEntryActivity extends AegisActivity {
|
|||
}
|
||||
setContentView(R.layout.activity_edit_entry);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
|
||||
_groups = _vaultManager.getVault().getGroups();
|
||||
|
||||
|
@ -802,11 +808,12 @@ public class EditEntryActivity extends AegisActivity {
|
|||
VaultEntryIcon icon;
|
||||
if (_selectedIcon == null) {
|
||||
Bitmap bitmap = ((BitmapDrawable) _iconView.getDrawable()).getBitmap();
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
// the quality parameter is ignored for PNG
|
||||
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
|
||||
byte[] data = stream.toByteArray();
|
||||
icon = new VaultEntryIcon(data, IconType.PNG);
|
||||
IconType iconType = _pickedMimeType == null
|
||||
? IconType.INVALID : IconType.fromMimeType(_pickedMimeType);
|
||||
if (iconType == IconType.INVALID) {
|
||||
iconType = bitmap.hasAlpha() ? IconType.PNG : IconType.JPEG;
|
||||
}
|
||||
icon = BitmapHelper.toVaultEntryIcon(bitmap, iconType);
|
||||
} else {
|
||||
byte[] iconBytes;
|
||||
try (FileInputStream inStream = new FileInputStream(_selectedIcon.getFile())){
|
||||
|
@ -848,10 +855,92 @@ public class EditEntryActivity extends AegisActivity {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (_isNew) {
|
||||
for (VaultEntry existing : _vaultManager.getVault().getEntries()) {
|
||||
if (entry.hasSameNameAndIssuer(existing)) {
|
||||
showDuplicateBottomSheet(entry);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
addAndFinish(entry);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void showDuplicateBottomSheet(VaultEntry newEntry) {
|
||||
BottomSheetDialog dialog = new BottomSheetDialog(this);
|
||||
View view = getLayoutInflater().inflate(R.layout.dialog_duplicate_entry, null);
|
||||
dialog.setContentView(view);
|
||||
|
||||
dialog.setCancelable(false);
|
||||
|
||||
View overwrite = view.findViewById(R.id.overwrite_entry);
|
||||
View addSuffix = view.findViewById(R.id.create_new_entry);
|
||||
View cancel = view.findViewById(R.id.cancel_save);
|
||||
|
||||
TextView suffixSubtext = view.findViewById(R.id.duplicate_suffix_subtitle);
|
||||
|
||||
String baseName = newEntry.getName();
|
||||
Set<String> existingNames = new HashSet<>();
|
||||
for (VaultEntry e : _vaultManager.getVault().getEntries()) {
|
||||
if (e.getIssuer().equals(newEntry.getIssuer())) {
|
||||
existingNames.add(e.getName());
|
||||
}
|
||||
}
|
||||
|
||||
int counter = 2;
|
||||
String newName;
|
||||
do {
|
||||
newName = baseName + " #" + counter++;
|
||||
} while (existingNames.contains(newName));
|
||||
|
||||
suffixSubtext.setText(getString(R.string.dialog_duplicate_entry_suffix_subtitle, newName));
|
||||
|
||||
overwrite.setOnClickListener(v -> {
|
||||
List<VaultEntry> duplicates = new ArrayList<>();
|
||||
for (VaultEntry existing : _vaultManager.getVault().getEntries()) {
|
||||
if (existing.hasSameNameAndIssuer(newEntry)) {
|
||||
duplicates.add(existing);
|
||||
}
|
||||
}
|
||||
|
||||
Resources res = getResources();
|
||||
String message = res.getQuantityString(
|
||||
R.plurals.dialog_duplicate_entry_overwrite_dialog_message,
|
||||
duplicates.size(),
|
||||
duplicates.size(),
|
||||
newEntry.getIssuer(),
|
||||
newEntry.getName()
|
||||
);
|
||||
|
||||
new MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.dialog_duplicate_entry_overwrite_dialog_title)
|
||||
.setMessage(message)
|
||||
.setPositiveButton(R.string.action_delete, (d, which) -> {
|
||||
for (VaultEntry dup : duplicates) {
|
||||
_vaultManager.getVault().removeEntry(dup);
|
||||
}
|
||||
|
||||
dialog.dismiss();
|
||||
addAndFinish(newEntry);
|
||||
})
|
||||
.setNegativeButton(android.R.string.no, null)
|
||||
.show();
|
||||
});
|
||||
|
||||
String finalNewName = newName;
|
||||
addSuffix.setOnClickListener(v -> {
|
||||
newEntry.setName(finalNewName);
|
||||
dialog.dismiss();
|
||||
addAndFinish(newEntry);
|
||||
});
|
||||
|
||||
cancel.setOnClickListener(v -> dialog.dismiss());
|
||||
|
||||
Dialogs.showSecureDialog(dialog);
|
||||
}
|
||||
|
||||
private static void setViewEnabled(View view, boolean enabled) {
|
||||
view.setEnabled(enabled);
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ import com.beemdevelopment.aegis.R;
|
|||
import com.beemdevelopment.aegis.ui.dialogs.Dialogs;
|
||||
import com.beemdevelopment.aegis.ui.views.GroupAdapter;
|
||||
import com.beemdevelopment.aegis.util.Cloner;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
import com.beemdevelopment.aegis.vault.VaultGroup;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
|
@ -39,6 +40,7 @@ public class GroupManagerActivity extends AegisActivity implements GroupAdapter.
|
|||
}
|
||||
setContentView(R.layout.activity_groups);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setDisplayShowHomeEnabled(true);
|
||||
|
|
|
@ -15,16 +15,21 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
|||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.beemdevelopment.aegis.R;
|
||||
import com.beemdevelopment.aegis.helpers.BitmapHelper;
|
||||
import com.beemdevelopment.aegis.helpers.FabScrollHelper;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
import com.beemdevelopment.aegis.icons.IconType;
|
||||
import com.beemdevelopment.aegis.importers.DatabaseImporter;
|
||||
import com.beemdevelopment.aegis.importers.DatabaseImporterEntryException;
|
||||
import com.beemdevelopment.aegis.importers.DatabaseImporterException;
|
||||
import com.beemdevelopment.aegis.ui.dialogs.Dialogs;
|
||||
import com.beemdevelopment.aegis.ui.models.ImportEntry;
|
||||
import com.beemdevelopment.aegis.ui.tasks.IconOptimizationTask;
|
||||
import com.beemdevelopment.aegis.ui.tasks.RootShellTask;
|
||||
import com.beemdevelopment.aegis.ui.views.ImportEntriesAdapter;
|
||||
import com.beemdevelopment.aegis.util.UUIDMap;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntry;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntryIcon;
|
||||
import com.beemdevelopment.aegis.vault.VaultGroup;
|
||||
import com.beemdevelopment.aegis.vault.VaultRepository;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
@ -39,12 +44,15 @@ import java.io.InputStream;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ImportEntriesActivity extends AegisActivity {
|
||||
private View _view;
|
||||
private Menu _menu;
|
||||
private RecyclerView _entriesView;
|
||||
private ImportEntriesAdapter _adapter;
|
||||
private FabScrollHelper _fabScrollHelper;
|
||||
|
||||
|
@ -58,6 +66,7 @@ public class ImportEntriesActivity extends AegisActivity {
|
|||
}
|
||||
setContentView(R.layout.activity_import_entries);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
|
||||
_view = findViewById(R.id.importEntriesRootView);
|
||||
|
||||
|
@ -66,8 +75,8 @@ public class ImportEntriesActivity extends AegisActivity {
|
|||
bar.setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
_adapter = new ImportEntriesAdapter();
|
||||
RecyclerView entriesView = findViewById(R.id.list_entries);
|
||||
entriesView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
_entriesView = findViewById(R.id.list_entries);
|
||||
_entriesView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
|
@ -76,9 +85,9 @@ public class ImportEntriesActivity extends AegisActivity {
|
|||
});
|
||||
|
||||
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
|
||||
entriesView.setLayoutManager(layoutManager);
|
||||
entriesView.setAdapter(_adapter);
|
||||
entriesView.setNestedScrollingEnabled(false);
|
||||
_entriesView.setLayoutManager(layoutManager);
|
||||
_entriesView.setAdapter(_adapter);
|
||||
_entriesView.setNestedScrollingEnabled(false);
|
||||
|
||||
FloatingActionButton fab = findViewById(R.id.fab);
|
||||
fab.setOnClickListener(v -> {
|
||||
|
@ -170,7 +179,7 @@ public class ImportEntriesActivity extends AegisActivity {
|
|||
state.decrypt(this, new DatabaseImporter.DecryptListener() {
|
||||
@Override
|
||||
public void onStateDecrypted(DatabaseImporter.State state) {
|
||||
importDatabase(state);
|
||||
processDecryptedImporterState(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -185,7 +194,7 @@ public class ImportEntriesActivity extends AegisActivity {
|
|||
}
|
||||
});
|
||||
} else {
|
||||
importDatabase(state);
|
||||
processDecryptedImporterState(state);
|
||||
}
|
||||
} catch (DatabaseImporterException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -193,8 +202,7 @@ public class ImportEntriesActivity extends AegisActivity {
|
|||
}
|
||||
}
|
||||
|
||||
private void importDatabase(DatabaseImporter.State state) {
|
||||
List<ImportEntry> importEntries = new ArrayList<>();
|
||||
private void processDecryptedImporterState(DatabaseImporter.State state) {
|
||||
DatabaseImporter.Result result;
|
||||
try {
|
||||
result = state.convert();
|
||||
|
@ -204,8 +212,29 @@ public class ImportEntriesActivity extends AegisActivity {
|
|||
return;
|
||||
}
|
||||
|
||||
UUIDMap<VaultEntry> entries = result.getEntries();
|
||||
for (VaultEntry entry : entries.getValues()) {
|
||||
Map<UUID, VaultEntryIcon> icons = result.getEntries().getValues().stream()
|
||||
.filter(e -> e.getIcon() != null
|
||||
&& !e.getIcon().getType().equals(IconType.SVG)
|
||||
&& !BitmapHelper.isVaultEntryIconOptimized(e.getIcon()))
|
||||
.collect(Collectors.toMap(VaultEntry::getUUID, VaultEntry::getIcon));
|
||||
if (!icons.isEmpty()) {
|
||||
IconOptimizationTask task = new IconOptimizationTask(this, newIcons -> {
|
||||
for (Map.Entry<UUID, VaultEntryIcon> mapEntry : newIcons.entrySet()) {
|
||||
VaultEntry entry = result.getEntries().getByUUID(mapEntry.getKey());
|
||||
entry.setIcon(mapEntry.getValue());
|
||||
}
|
||||
|
||||
processImporterResult(result);
|
||||
});
|
||||
task.execute(getLifecycle(), icons);
|
||||
} else {
|
||||
processImporterResult(result);
|
||||
}
|
||||
}
|
||||
|
||||
private void processImporterResult(DatabaseImporter.Result result) {
|
||||
List<ImportEntry> importEntries = new ArrayList<>();
|
||||
for (VaultEntry entry : result.getEntries().getValues()) {
|
||||
ImportEntry importEntry = new ImportEntry(entry);
|
||||
_adapter.addEntry(importEntry);
|
||||
importEntries.add(importEntry);
|
||||
|
@ -330,6 +359,31 @@ public class ImportEntriesActivity extends AegisActivity {
|
|||
|
||||
_adapter.setCheckboxStates(duplicateEntries, false);
|
||||
Snackbar snackbar = Snackbar.make(_view, getResources().getQuantityString(R.plurals.import_duplicate_toast, duplicateEntries.size(), duplicateEntries.size()), Snackbar.LENGTH_INDEFINITE);
|
||||
snackbar.addCallback(new Snackbar.Callback() {
|
||||
@Override
|
||||
public void onShown(Snackbar sb) {
|
||||
int snackbarHeight = sb.getView().getHeight();
|
||||
|
||||
_entriesView.setPadding(
|
||||
_entriesView.getPaddingLeft(),
|
||||
_entriesView.getPaddingTop(),
|
||||
_entriesView.getPaddingRight(),
|
||||
_entriesView.getPaddingBottom() + snackbarHeight * 2
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismissed(Snackbar sb, int event) {
|
||||
int snackbarHeight = sb.getView().getHeight();
|
||||
|
||||
_entriesView.setPadding(
|
||||
_entriesView.getPaddingLeft(),
|
||||
_entriesView.getPaddingTop(),
|
||||
_entriesView.getPaddingRight(),
|
||||
_entriesView.getPaddingBottom() - snackbarHeight * 2
|
||||
);
|
||||
}
|
||||
});
|
||||
snackbar.setAction(R.string.undo, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
|
|
@ -44,9 +44,12 @@ import com.beemdevelopment.aegis.GroupPlaceholderType;
|
|||
import com.beemdevelopment.aegis.Preferences;
|
||||
import com.beemdevelopment.aegis.R;
|
||||
import com.beemdevelopment.aegis.SortCategory;
|
||||
import com.beemdevelopment.aegis.helpers.BitmapHelper;
|
||||
import com.beemdevelopment.aegis.helpers.DropdownHelper;
|
||||
import com.beemdevelopment.aegis.helpers.FabScrollHelper;
|
||||
import com.beemdevelopment.aegis.helpers.PermissionHelper;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
import com.beemdevelopment.aegis.icons.IconType;
|
||||
import com.beemdevelopment.aegis.otp.GoogleAuthInfo;
|
||||
import com.beemdevelopment.aegis.otp.GoogleAuthInfoException;
|
||||
import com.beemdevelopment.aegis.otp.OtpInfoException;
|
||||
|
@ -55,11 +58,13 @@ import com.beemdevelopment.aegis.ui.fragments.preferences.BackupsPreferencesFrag
|
|||
import com.beemdevelopment.aegis.ui.fragments.preferences.PreferencesFragment;
|
||||
import com.beemdevelopment.aegis.ui.models.ErrorCardInfo;
|
||||
import com.beemdevelopment.aegis.ui.models.VaultGroupModel;
|
||||
import com.beemdevelopment.aegis.ui.tasks.IconOptimizationTask;
|
||||
import com.beemdevelopment.aegis.ui.tasks.QrDecodeTask;
|
||||
import com.beemdevelopment.aegis.ui.views.EntryListView;
|
||||
import com.beemdevelopment.aegis.util.TimeUtils;
|
||||
import com.beemdevelopment.aegis.util.UUIDMap;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntry;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntryIcon;
|
||||
import com.beemdevelopment.aegis.vault.VaultFile;
|
||||
import com.beemdevelopment.aegis.vault.VaultGroup;
|
||||
import com.beemdevelopment.aegis.vault.VaultRepository;
|
||||
|
@ -183,6 +188,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
_loaded = false;
|
||||
_isDPadPressed = false;
|
||||
_isDoingIntro = false;
|
||||
|
@ -214,8 +220,8 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
_entryListView.setPauseFocused(_prefs.isPauseFocusedEnabled());
|
||||
_entryListView.setTapToReveal(_prefs.isTapToRevealEnabled());
|
||||
_entryListView.setTapToRevealTime(_prefs.getTapToRevealTime());
|
||||
_entryListView.setSortCategory(_prefs.getCurrentSortCategory(), false);
|
||||
_entryListView.setViewMode(_prefs.getCurrentViewMode());
|
||||
_entryListView.setSortCategory(_prefs.getCurrentSortCategory(), false);
|
||||
_entryListView.setCopyBehavior(_prefs.getCopyBehavior());
|
||||
_entryListView.setSearchBehaviorMask(_prefs.getSearchBehaviorMask());
|
||||
_prefGroupFilter = _prefs.getGroupFilter();
|
||||
|
@ -272,6 +278,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
|
||||
private void initializeGroups() {
|
||||
_groupChip.removeAllViews();
|
||||
_groupChip.setSingleSelection(!_prefs.isGroupMultiselectEnabled());
|
||||
|
||||
for (VaultGroup group : _groups) {
|
||||
addChipTo(_groupChip, new VaultGroupModel(group));
|
||||
|
@ -311,25 +318,24 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
}
|
||||
|
||||
chip.setOnCheckedChangeListener((group1, isChecked) -> {
|
||||
Set<UUID> groupFilter = new HashSet<>();
|
||||
if (_actionMode != null) {
|
||||
_actionMode.finish();
|
||||
}
|
||||
|
||||
setSaveChipVisibility(true);
|
||||
|
||||
if (!isChecked) {
|
||||
group1.setChecked(false);
|
||||
// Reset group filter if last checked group gets unchecked
|
||||
if (!isChecked && _groupFilter.size() == 1) {
|
||||
Set<UUID> groupFilter = new HashSet<>();
|
||||
|
||||
chipGroup.clearCheck();
|
||||
_groupFilter = groupFilter;
|
||||
_entryListView.setGroupFilter(groupFilter);
|
||||
return;
|
||||
}
|
||||
|
||||
Object chipTag = group1.getTag();
|
||||
if (chipTag == GroupPlaceholderType.NO_GROUP) {
|
||||
groupFilter.add(null);
|
||||
} else {
|
||||
groupFilter = getGroupFilter(chipGroup);
|
||||
}
|
||||
|
||||
_groupFilter = groupFilter;
|
||||
_entryListView.setGroupFilter(groupFilter);
|
||||
_groupFilter = getGroupFilter(chipGroup);
|
||||
_entryListView.setGroupFilter(_groupFilter);
|
||||
});
|
||||
|
||||
chipGroup.addView(chip);
|
||||
|
@ -362,8 +368,10 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
|
||||
private static Set<UUID> getGroupFilter(ChipGroup chipGroup) {
|
||||
return chipGroup.getCheckedChipIds().stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(i -> {
|
||||
Chip chip = chipGroup.findViewById(i);
|
||||
|
||||
if (chip.getTag() instanceof VaultGroupModel) {
|
||||
VaultGroupModel group = (VaultGroupModel) chip.getTag();
|
||||
return group.getUUID();
|
||||
|
@ -371,7 +379,6 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
|
||||
return null;
|
||||
})
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
|
@ -685,6 +692,10 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
if (entries.size() == 1) {
|
||||
startEditEntryActivityForNew(entries.get(0));
|
||||
} else if (entries.size() > 1) {
|
||||
for (VaultEntry entry: entries) {
|
||||
_vaultManager.getVault().addEntry(entry);
|
||||
}
|
||||
|
||||
if (saveAndBackupVault()) {
|
||||
Toast.makeText(this, getResources().getQuantityString(R.plurals.added_new_entries, entries.size(), entries.size()), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
@ -714,6 +725,37 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
}
|
||||
}
|
||||
|
||||
private void checkIconOptimization() {
|
||||
if (!_vaultManager.getVault().areIconsOptimized()) {
|
||||
Map<UUID, VaultEntryIcon> oldIcons = _vaultManager.getVault().getEntries().stream()
|
||||
.filter(e -> e.getIcon() != null
|
||||
&& !e.getIcon().getType().equals(IconType.SVG)
|
||||
&& !BitmapHelper.isVaultEntryIconOptimized(e.getIcon()))
|
||||
.collect(Collectors.toMap(VaultEntry::getUUID, VaultEntry::getIcon));
|
||||
|
||||
if (!oldIcons.isEmpty()) {
|
||||
IconOptimizationTask task = new IconOptimizationTask(this, this::onIconsOptimized);
|
||||
task.execute(getLifecycle(), oldIcons);
|
||||
} else {
|
||||
onIconsOptimized(Collections.emptyMap());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void onIconsOptimized(Map<UUID, VaultEntryIcon> newIcons) {
|
||||
for (Map.Entry<UUID, VaultEntryIcon> mapEntry : newIcons.entrySet()) {
|
||||
VaultEntry entry = _vaultManager.getVault().getEntryByUUID(mapEntry.getKey());
|
||||
entry.setIcon(mapEntry.getValue());
|
||||
}
|
||||
|
||||
_vaultManager.getVault().setIconsOptimized(true);
|
||||
saveAndBackupVault();
|
||||
|
||||
if (!newIcons.isEmpty()) {
|
||||
_entryListView.setEntries(_vaultManager.getVault().getEntries());
|
||||
}
|
||||
}
|
||||
|
||||
private void onDecryptResult() {
|
||||
_auditLogRepository.addVaultUnlockedEvent();
|
||||
|
||||
|
@ -848,6 +890,13 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
|
||||
_entryListView.onRefreshStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
|
@ -899,13 +948,18 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
|
||||
// refresh all codes to prevent showing old ones
|
||||
_entryListView.refresh(false);
|
||||
|
||||
_entryListView.onRefreshStart();
|
||||
} else {
|
||||
loadEntries();
|
||||
checkTimeSyncSetting();
|
||||
checkIconOptimization();
|
||||
|
||||
_entryListView.onRefreshStart();
|
||||
}
|
||||
|
||||
_lockBackPressHandler.setEnabled(
|
||||
_vaultManager.isAutoLockEnabled(Preferences.AUTO_LOCK_ON_BACK_BUTTON)
|
||||
_vaultManager.isAutoLockEnabled(Preferences.AUTO_LOCK_ON_BACK_BUTTON)
|
||||
);
|
||||
|
||||
handleIncomingIntent();
|
||||
|
@ -920,6 +974,9 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
_menu = menu;
|
||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||
|
||||
updateLockIcon();
|
||||
updateSortCategoryMenu();
|
||||
|
||||
MenuItem searchViewMenuItem = menu.findItem(R.id.mi_search);
|
||||
_searchView = (SearchView) searchViewMenuItem.getActionView();
|
||||
_searchView.setMaxWidth(Integer.MAX_VALUE);
|
||||
|
@ -930,6 +987,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
_searchView.setOnCloseListener(() -> {
|
||||
boolean enabled = _submittedSearchQuery != null;
|
||||
_searchViewBackPressHandler.setEnabled(enabled);
|
||||
_groupChip.setVisibility(_groups.isEmpty() ? View.GONE : View.VISIBLE);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
@ -963,6 +1021,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
});
|
||||
_searchView.setOnSearchClickListener(v -> {
|
||||
String query = _submittedSearchQuery != null ? _submittedSearchQuery : _pendingSearchQuery;
|
||||
_groupChip.setVisibility(View.GONE);
|
||||
_searchView.setQuery(query, false);
|
||||
});
|
||||
|
||||
|
@ -1028,6 +1087,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
}
|
||||
|
||||
private void collapseSearchView() {
|
||||
_groupChip.setVisibility(_groups.isEmpty() ? View.GONE : View.VISIBLE);
|
||||
_searchView.setQuery(null, false);
|
||||
_searchView.setIconified(true);
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import com.beemdevelopment.aegis.R;
|
|||
import com.beemdevelopment.aegis.ui.fragments.preferences.AppearancePreferencesFragment;
|
||||
import com.beemdevelopment.aegis.ui.fragments.preferences.MainPreferencesFragment;
|
||||
import com.beemdevelopment.aegis.ui.fragments.preferences.PreferencesFragment;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
|
||||
public class PreferencesActivity extends AegisActivity implements
|
||||
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
|
||||
|
@ -27,6 +28,7 @@ public class PreferencesActivity extends AegisActivity implements
|
|||
}
|
||||
setContentView(R.layout.activity_preferences);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
getSupportFragmentManager()
|
||||
.registerFragmentLifecycleCallbacks(new FragmentResumeListener(), true);
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import com.beemdevelopment.aegis.helpers.QrCodeAnalyzer;
|
|||
import com.beemdevelopment.aegis.otp.GoogleAuthInfo;
|
||||
import com.beemdevelopment.aegis.otp.GoogleAuthInfoException;
|
||||
import com.beemdevelopment.aegis.ui.dialogs.Dialogs;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntry;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.zxing.Result;
|
||||
|
@ -56,6 +57,7 @@ public class ScannerActivity extends AegisActivity implements QrCodeAnalyzer.Lis
|
|||
}
|
||||
setContentView(R.layout.activity_scanner);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
|
||||
_entries = new ArrayList<>();
|
||||
_lenses = new ArrayList<>();
|
||||
|
|
|
@ -10,6 +10,7 @@ import android.graphics.Color;
|
|||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.PersistableBundle;
|
||||
import android.provider.Settings;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -28,6 +29,7 @@ import com.beemdevelopment.aegis.otp.GoogleAuthInfo;
|
|||
import com.beemdevelopment.aegis.otp.GoogleAuthInfoException;
|
||||
import com.beemdevelopment.aegis.otp.Transferable;
|
||||
import com.beemdevelopment.aegis.ui.dialogs.Dialogs;
|
||||
import com.beemdevelopment.aegis.helpers.ViewHelper;
|
||||
import com.google.android.material.color.MaterialColors;
|
||||
import com.google.android.material.imageview.ShapeableImageView;
|
||||
import com.google.zxing.WriterException;
|
||||
|
@ -46,6 +48,8 @@ public class TransferEntriesActivity extends AegisActivity {
|
|||
private Button _previousButton;
|
||||
private Button _copyButton;
|
||||
private int _currentEntryCount = 1;
|
||||
private float _deviceBrightness;
|
||||
private boolean _isMaxBrightnessSet = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -55,6 +59,7 @@ public class TransferEntriesActivity extends AegisActivity {
|
|||
}
|
||||
setContentView(R.layout.activity_share_entry);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
ViewHelper.setupAppBarInsets(findViewById(R.id.app_bar_layout));
|
||||
|
||||
_qrImage = findViewById(R.id.ivQrCode);
|
||||
_description = findViewById(R.id.tvDescription);
|
||||
|
@ -144,13 +149,33 @@ public class TransferEntriesActivity extends AegisActivity {
|
|||
_qrImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
}
|
||||
});
|
||||
|
||||
_deviceBrightness = getSystemBrightness();
|
||||
_qrImage.setOnClickListener(v -> {
|
||||
if (!_isMaxBrightnessSet) {
|
||||
setBrightness(1f);
|
||||
_isMaxBrightnessSet = true;
|
||||
} else {
|
||||
setBrightness(_deviceBrightness);
|
||||
_isMaxBrightnessSet = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttachedToWindow() {
|
||||
// Max brightness to make the QR codes easier to scan
|
||||
private float getSystemBrightness() {
|
||||
int brightness = 0;
|
||||
try {
|
||||
brightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
|
||||
} catch (Settings.SettingNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return brightness / 255f;
|
||||
}
|
||||
|
||||
private void setBrightness(float brightnessAmount) {
|
||||
WindowManager.LayoutParams attrs = getWindow().getAttributes();
|
||||
attrs.screenBrightness = 1.0f;
|
||||
attrs.screenBrightness = brightnessAmount;
|
||||
getWindow().setAttributes(attrs);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,9 @@ import android.view.View;
|
|||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
@ -58,6 +61,17 @@ public class AuditLogPreferencesFragment extends Fragment {
|
|||
_auditLogRecyclerView.setAdapter(_adapter);
|
||||
_auditLogRecyclerView.setNestedScrollingEnabled(false);
|
||||
|
||||
ViewCompat.setOnApplyWindowInsetsListener(_auditLogRecyclerView, (targetView, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout());
|
||||
targetView.setPadding(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
insets.bottom
|
||||
);
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
|
||||
entries.observe(getViewLifecycleOwner(), entries1 -> {
|
||||
_noAuditLogsView.setVisibility(entries1.isEmpty() ? View.VISIBLE : View.GONE);
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.net.Uri;
|
|||
import android.os.Bundle;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup.MarginLayoutParams;
|
||||
import android.view.animation.Animation;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
@ -14,6 +15,9 @@ import androidx.activity.result.ActivityResultLauncher;
|
|||
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
@ -67,6 +71,19 @@ public class IconPacksManagerFragment extends Fragment implements IconPackAdapte
|
|||
fab.setOnClickListener(v -> startImportIconPack());
|
||||
_fabScrollHelper = new FabScrollHelper(fab);
|
||||
|
||||
final MarginLayoutParams fabInitialMargin = (MarginLayoutParams) fab.getLayoutParams();
|
||||
ViewCompat.setOnApplyWindowInsetsListener(fab, (targetView, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout());
|
||||
|
||||
MarginLayoutParams marginParams = (MarginLayoutParams) targetView.getLayoutParams();
|
||||
marginParams.leftMargin = fabInitialMargin.leftMargin + insets.left;
|
||||
marginParams.bottomMargin = fabInitialMargin.bottomMargin + insets.bottom;
|
||||
marginParams.rightMargin = fabInitialMargin.rightMargin + insets.right;
|
||||
targetView.setLayoutParams(marginParams);
|
||||
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
|
||||
_noIconPacksView = view.findViewById(R.id.vEmptyList);
|
||||
((TextView) view.findViewById(R.id.txt_no_icon_packs)).setMovementMethod(LinkMovementMethod.getInstance());
|
||||
_adapter = new IconPackAdapter(this);
|
||||
|
|
|
@ -296,7 +296,7 @@ public class ImportExportPreferencesFragment extends PreferencesFragment {
|
|||
boolean encrypt = checkBoxEncrypt.isChecked();
|
||||
try {
|
||||
VaultBackupManager.FileInfo fileInfo = getExportFileInfo(pos, encrypt);
|
||||
file = File.createTempFile(fileInfo.getFilename() + "-", "." + fileInfo.getExtension(), getExportCacheDir());
|
||||
file = new File(getExportCacheDir(), fileInfo.toString());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
Dialogs.showErrorDialog(requireContext(), R.string.exporting_vault_error, e);
|
||||
|
@ -518,11 +518,10 @@ public class ImportExportPreferencesFragment extends PreferencesFragment {
|
|||
file = File.createTempFile(VaultRepository.FILENAME_PREFIX_EXPORT + "-", ".json", getExportCacheDir());
|
||||
outStream = new FileOutputStream(file);
|
||||
cb.exportVault(outStream);
|
||||
|
||||
new ExportTask(requireContext(), new ExportResultListener()).execute(getLifecycle(), new ExportTask.Params(file, uri));
|
||||
} catch (VaultRepositoryException | IOException e) {
|
||||
e.printStackTrace();
|
||||
Dialogs.showErrorDialog(requireContext(), R.string.exporting_vault_error, e);
|
||||
return;
|
||||
} finally {
|
||||
try {
|
||||
if (outStream != null) {
|
||||
|
@ -532,6 +531,8 @@ public class ImportExportPreferencesFragment extends PreferencesFragment {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
new ExportTask(requireContext(), new ExportResultListener()).execute(getLifecycle(), new ExportTask.Params(file, uri));
|
||||
}, _exportFilter);
|
||||
_exportFilter = null;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
package com.beemdevelopment.aegis.ui.fragments.preferences;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.Animation;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.beemdevelopment.aegis.Preferences;
|
||||
import com.beemdevelopment.aegis.R;
|
||||
|
@ -61,6 +68,23 @@ public abstract class PreferencesFragment extends PreferenceFragmentCompat {
|
|||
return super.onCreateAnimation(transit, enter, nextAnim);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView onCreateRecyclerView(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent, @Nullable Bundle savedInstanceState) {
|
||||
RecyclerView recyclerView = super.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||
ViewCompat.setOnApplyWindowInsetsListener(recyclerView, (targetView, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout());
|
||||
targetView.setPadding(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
insets.bottom
|
||||
);
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
return recyclerView;
|
||||
}
|
||||
|
||||
protected boolean saveAndBackupVault() {
|
||||
try {
|
||||
_vaultManager.saveAndBackup();
|
||||
|
|
|
@ -1,17 +1,14 @@
|
|||
package com.beemdevelopment.aegis.ui.preferences;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.SwitchPreferenceCompat;
|
||||
|
||||
public class SwitchPreference extends SwitchPreferenceCompat {
|
||||
private Preference.OnPreferenceChangeListener _listener;
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
public SwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
|
|
@ -34,6 +34,8 @@ public class ExportTask extends ProgressDialogTask<ExportTask.Params, Exception>
|
|||
return null;
|
||||
} catch (IOException e) {
|
||||
return e;
|
||||
} finally {
|
||||
boolean ignored = params.getFile().delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
package com.beemdevelopment.aegis.ui.tasks;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
||||
import com.beemdevelopment.aegis.R;
|
||||
import com.beemdevelopment.aegis.helpers.BitmapHelper;
|
||||
import com.beemdevelopment.aegis.icons.IconType;
|
||||
import com.beemdevelopment.aegis.vault.VaultEntryIcon;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class IconOptimizationTask extends ProgressDialogTask<Map<UUID, VaultEntryIcon>, Map<UUID, VaultEntryIcon>> {
|
||||
private final Callback _cb;
|
||||
|
||||
public IconOptimizationTask(Context context, Callback cb) {
|
||||
super(context, context.getString(R.string.optimizing_icon));
|
||||
_cb = cb;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<UUID, VaultEntryIcon> doInBackground(Map<UUID, VaultEntryIcon>... params) {
|
||||
Map<UUID, VaultEntryIcon> res = new HashMap<>();
|
||||
Context context = getDialog().getContext();
|
||||
|
||||
int i = 0;
|
||||
Map<UUID, VaultEntryIcon> icons = params[0];
|
||||
for (Map.Entry<UUID, VaultEntryIcon> entry : icons.entrySet()) {
|
||||
if (icons.size() > 1) {
|
||||
publishProgress(context.getString(R.string.optimizing_icon_multiple, i + 1, icons.size()));
|
||||
}
|
||||
i++;
|
||||
|
||||
VaultEntryIcon oldIcon = entry.getValue();
|
||||
if (oldIcon == null || oldIcon.getType().equals(IconType.SVG)) {
|
||||
continue;
|
||||
}
|
||||
if (BitmapHelper.isVaultEntryIconOptimized(oldIcon)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Bitmap bitmap = BitmapFactory.decodeByteArray(oldIcon.getBytes(), 0, oldIcon.getBytes().length);
|
||||
VaultEntryIcon newIcon = BitmapHelper.toVaultEntryIcon(bitmap, oldIcon.getType());
|
||||
bitmap.recycle();
|
||||
res.put(entry.getKey(), newIcon);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Map<UUID, VaultEntryIcon> results) {
|
||||
super.onPostExecute(results);
|
||||
_cb.onTaskFinished(results);
|
||||
}
|
||||
|
||||
public interface Callback {
|
||||
void onTaskFinished(Map<UUID, VaultEntryIcon> results);
|
||||
}
|
||||
}
|
|
@ -37,6 +37,7 @@ import com.beemdevelopment.aegis.vault.VaultEntry;
|
|||
import com.beemdevelopment.aegis.vault.VaultGroup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
@ -196,6 +197,19 @@ public class EntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||
String name = entry.getName().toLowerCase();
|
||||
String note = entry.getNote().toLowerCase();
|
||||
|
||||
if (_searchFilter != null) {
|
||||
String[] tokens = _searchFilter.toLowerCase().split("\\s+");
|
||||
|
||||
// Return true if not all tokens match at least one of the relevant fields
|
||||
return !Arrays.stream(tokens)
|
||||
.allMatch(token ->
|
||||
((_searchBehaviorMask & Preferences.SEARCH_IN_ISSUER) != 0 && issuer.contains(token)) ||
|
||||
((_searchBehaviorMask & Preferences.SEARCH_IN_NAME) != 0 && name.contains(token)) ||
|
||||
((_searchBehaviorMask & Preferences.SEARCH_IN_NOTE) != 0 && note.contains(token)) ||
|
||||
((_searchBehaviorMask & Preferences.SEARCH_IN_GROUPS) != 0 && doesAnyGroupMatchSearchFilter(groups, token))
|
||||
);
|
||||
}
|
||||
|
||||
if (!_groupFilter.isEmpty()) {
|
||||
if (groups.isEmpty() && !_groupFilter.contains(null)) {
|
||||
return true;
|
||||
|
@ -205,14 +219,7 @@ public class EntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||
}
|
||||
}
|
||||
|
||||
if (_searchFilter == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ((_searchBehaviorMask & Preferences.SEARCH_IN_ISSUER) == 0 || !issuer.contains(_searchFilter))
|
||||
&& ((_searchBehaviorMask & Preferences.SEARCH_IN_NAME) == 0 || !name.contains(_searchFilter))
|
||||
&& ((_searchBehaviorMask & Preferences.SEARCH_IN_NOTE) == 0 || !note.contains(_searchFilter))
|
||||
&& ((_searchBehaviorMask & Preferences.SEARCH_IN_GROUPS) == 0 || !doesAnyGroupMatchSearchFilter(entry.getGroups(), _searchFilter));
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean doesAnyGroupMatchSearchFilter(Set<UUID> entryGroupUUIDs, String searchFilter) {
|
||||
|
|
|
@ -67,7 +67,6 @@ public class EntryHolder extends RecyclerView.ViewHolder {
|
|||
|
||||
private boolean _hidden;
|
||||
private boolean _paused;
|
||||
|
||||
private TotpProgressBar _progressBar;
|
||||
private MaterialCardView _view;
|
||||
|
||||
|
@ -111,14 +110,22 @@ public class EntryHolder extends RecyclerView.ViewHolder {
|
|||
refreshCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExpiring() { }
|
||||
|
||||
@Override
|
||||
public long getMillisTillNextRefresh() {
|
||||
return ((TotpInfo) _entry.getInfo()).getMillisTillNextRotation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPeriodMillis() {
|
||||
return ((TotpInfo) _entry.getInfo()).getPeriod() * 1000L;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setData(VaultEntry entry, Preferences.CodeGrouping groupSize, ViewMode viewMode, AccountNamePosition accountNamePosition, boolean showIcon, boolean showProgress, boolean hidden, boolean paused, boolean dimmed, boolean showExpirationState, boolean showNextCode) {
|
||||
public void setData(VaultEntry entry, Preferences.CodeGrouping groupSize, ViewMode viewMode, AccountNamePosition accountNamePosition, boolean showIcon, boolean nonUniform, boolean hidden, boolean paused, boolean dimmed, boolean showExpirationState, boolean showNextCode) {
|
||||
_entry = entry;
|
||||
_hidden = hidden;
|
||||
_paused = paused;
|
||||
|
@ -140,7 +147,7 @@ public class EntryHolder extends RecyclerView.ViewHolder {
|
|||
_favoriteIndicator.setVisibility(_entry.isFavorite() ? View.VISIBLE : View.INVISIBLE);
|
||||
|
||||
// only show the progress bar if there is no uniform period and the entry type is TotpInfo
|
||||
setShowProgress(showProgress);
|
||||
setShowProgress(nonUniform);
|
||||
|
||||
// only show the button if this entry is of type HotpInfo
|
||||
_buttonRefresh.setVisibility(entry.getInfo() instanceof HotpInfo ? View.VISIBLE : View.GONE);
|
||||
|
@ -369,9 +376,11 @@ public class EntryHolder extends RecyclerView.ViewHolder {
|
|||
public void hideCode() {
|
||||
String code = getOtp();
|
||||
String hiddenText = code.replaceAll("\\S", Character.toString(HIDDEN_CHAR));
|
||||
stopExpirationAnimation();
|
||||
|
||||
updateTextViewWithDots(_profileCode, hiddenText, code);
|
||||
updateTextViewWithDots(_nextProfileCode, hiddenText, code);
|
||||
stopExpirationAnimation();
|
||||
|
||||
_hidden = true;
|
||||
}
|
||||
|
||||
|
@ -384,6 +393,7 @@ public class EntryHolder extends RecyclerView.ViewHolder {
|
|||
float dotsWidth = paint.measureText(hiddenCode);
|
||||
float scaleFactor = codeWidth / dotsWidth;
|
||||
scaleFactor = (float)(Math.round(scaleFactor * 10.0) / 10.0);
|
||||
textView.setTextColor(MaterialColors.getColor(textView, R.attr.colorCodeHidden));
|
||||
|
||||
// If scale is higher or equal to 0.8, do nothing and proceed with the normal text rendering
|
||||
if (scaleFactor >= 0.8) {
|
||||
|
@ -423,7 +433,7 @@ public class EntryHolder extends RecyclerView.ViewHolder {
|
|||
|
||||
final int totalStateDuration = 7000;
|
||||
TotpInfo info = (TotpInfo) _entry.getInfo();
|
||||
if (info.getPeriod() * 1000 < totalStateDuration) {
|
||||
if (info.getPeriod() * 1000 <= totalStateDuration) {
|
||||
_profileCode.setTextColor(MaterialColors.getColor(_profileCode, com.google.android.material.R.attr.colorError));
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,9 @@ import androidx.annotation.AttrRes;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StyleRes;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
|
@ -30,11 +33,13 @@ import com.beemdevelopment.aegis.CopyBehavior;
|
|||
import com.beemdevelopment.aegis.Preferences;
|
||||
import com.beemdevelopment.aegis.R;
|
||||
import com.beemdevelopment.aegis.SortCategory;
|
||||
import com.beemdevelopment.aegis.VibrationPatterns;
|
||||
import com.beemdevelopment.aegis.ViewMode;
|
||||
import com.beemdevelopment.aegis.helpers.AnimationsHelper;
|
||||
import com.beemdevelopment.aegis.helpers.MetricsHelper;
|
||||
import com.beemdevelopment.aegis.helpers.SimpleItemTouchHelperCallback;
|
||||
import com.beemdevelopment.aegis.helpers.UiRefresher;
|
||||
import com.beemdevelopment.aegis.helpers.VibrationHelper;
|
||||
import com.beemdevelopment.aegis.otp.TotpInfo;
|
||||
import com.beemdevelopment.aegis.ui.glide.GlideHelper;
|
||||
import com.beemdevelopment.aegis.ui.models.ErrorCardInfo;
|
||||
|
@ -63,13 +68,13 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
private Listener _listener;
|
||||
private SimpleItemTouchHelperCallback _touchCallback;
|
||||
private ItemTouchHelper _touchHelper;
|
||||
private VibrationHelper _vibrationHelper;
|
||||
|
||||
private RecyclerView _recyclerView;
|
||||
private RecyclerView.ItemDecoration _itemDecoration;
|
||||
private ViewPreloadSizeProvider<VaultEntry> _preloadSizeProvider;
|
||||
private TotpProgressBar _progressBar;
|
||||
private boolean _showProgress;
|
||||
private boolean _showExpirationState;
|
||||
private ViewMode _viewMode;
|
||||
private LinearLayout _emptyStateView;
|
||||
|
||||
|
@ -92,6 +97,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_entry_list_view, container, false);
|
||||
_progressBar = view.findViewById(R.id.progressBar);
|
||||
_vibrationHelper = new VibrationHelper(getContext());
|
||||
|
||||
// set up the recycler view
|
||||
_recyclerView = view.findViewById(R.id.rvKeyProfiles);
|
||||
|
@ -141,12 +147,40 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
@Override
|
||||
public void onRefresh() {
|
||||
refresh(false);
|
||||
_vibrationHelper.vibratePattern(getContext(), VibrationPatterns.REFRESH_CODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExpiring() {
|
||||
_vibrationHelper.vibratePattern(getContext(), VibrationPatterns.EXPIRING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMillisTillNextRefresh() {
|
||||
return TotpInfo.getMillisTillNextRotation(_adapter.getMostFrequentPeriod());
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPeriodMillis() {
|
||||
return _adapter.getMostFrequentPeriod() * 1000L;
|
||||
}
|
||||
});
|
||||
|
||||
final int rvInitialPaddingLeft = _recyclerView.getPaddingLeft();
|
||||
final int rvInitialPaddingTop = _recyclerView.getPaddingTop();
|
||||
final int rvInitialPaddingRight = _recyclerView.getPaddingRight();
|
||||
final int rvInitialPaddingBottom = _recyclerView.getPaddingBottom();
|
||||
|
||||
ViewCompat.setOnApplyWindowInsetsListener(_recyclerView, (targetView, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout());
|
||||
// left and right padding seems to be handled by fitsSystemWindows="true" on the CoordinatorLayout in activity_main.xml
|
||||
targetView.setPadding(
|
||||
rvInitialPaddingLeft,
|
||||
rvInitialPaddingTop,
|
||||
rvInitialPaddingRight,
|
||||
rvInitialPaddingBottom + insets.bottom
|
||||
);
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
|
||||
_emptyStateView = view.findViewById(R.id.vEmptyList);
|
||||
|
@ -171,6 +205,16 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
super.onDestroyView();
|
||||
}
|
||||
|
||||
public void onRefreshStop() {
|
||||
_refresher.stop();
|
||||
}
|
||||
|
||||
public void onRefreshStart() {
|
||||
if (_adapter.getMostFrequentPeriod() != -1){
|
||||
_refresher.start();
|
||||
}
|
||||
}
|
||||
|
||||
public void setGroups(Collection<VaultGroup> groups) {
|
||||
_adapter.setGroups(groups);
|
||||
updateDividerDecoration();
|
||||
|
@ -180,6 +224,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
_adapter.setGroupFilter(groups);
|
||||
_touchCallback.setIsLongPressDragEnabled(_adapter.isDragAndDropAllowed());
|
||||
updateEmptyState();
|
||||
updateDividerDecoration();
|
||||
}
|
||||
|
||||
public void setIsLongPressDragEnabled(boolean enabled) {
|
||||
|
@ -212,6 +257,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
public void setSortCategory(SortCategory sortCategory, boolean apply) {
|
||||
_adapter.setSortCategory(sortCategory, apply);
|
||||
_touchCallback.setIsLongPressDragEnabled(_adapter.isDragAndDropAllowed());
|
||||
updateDividerDecoration();
|
||||
}
|
||||
|
||||
public void setUsageCounts(Map<UUID, Integer> usageCounts) {
|
||||
|
@ -233,8 +279,8 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
public void setSearchFilter(String search) {
|
||||
_adapter.setSearchFilter(search);
|
||||
_touchCallback.setIsLongPressDragEnabled(_adapter.isDragAndDropAllowed());
|
||||
|
||||
updateEmptyState();
|
||||
updateDividerDecoration();
|
||||
}
|
||||
|
||||
public void setSelectedEntry(VaultEntry entry) {
|
||||
|
@ -333,11 +379,11 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
_progressBar.setVisibility(View.VISIBLE);
|
||||
_progressBar.setPeriod(period);
|
||||
_progressBar.start();
|
||||
_refresher.start();
|
||||
onRefreshStart();
|
||||
} else {
|
||||
_progressBar.setVisibility(View.GONE);
|
||||
_progressBar.stop();
|
||||
_refresher.stop();
|
||||
onRefreshStop();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -369,7 +415,6 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
|||
}
|
||||
|
||||
public void setShowExpirationState(boolean showExpirationState) {
|
||||
_showExpirationState = showExpirationState;
|
||||
_adapter.setShowExpirationState(showExpirationState);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,14 +2,11 @@ package com.beemdevelopment.aegis.ui.views;
|
|||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import com.beemdevelopment.aegis.helpers.AnimationsHelper;
|
||||
import com.beemdevelopment.aegis.otp.TotpInfo;
|
||||
|
||||
|
@ -30,7 +27,6 @@ public class TotpProgressBar extends ProgressBar {
|
|||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
public TotpProgressBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ public class Vault {
|
|||
private static final int VERSION = 3;
|
||||
private final UUIDMap<VaultEntry> _entries = new UUIDMap<>();
|
||||
private final UUIDMap<VaultGroup> _groups = new UUIDMap<>();
|
||||
private boolean _iconsOptimized = true;
|
||||
|
||||
// Whether we've migrated the group list to the new format while parsing the vault
|
||||
private boolean _isGroupsMigrationFresh = false;
|
||||
|
@ -42,6 +43,7 @@ public class Vault {
|
|||
obj.put("version", VERSION);
|
||||
obj.put("entries", entriesArray);
|
||||
obj.put("groups", groupsArray);
|
||||
obj.put("icons_optimized", _iconsOptimized);
|
||||
|
||||
return obj;
|
||||
} catch (JSONException e) {
|
||||
|
@ -86,6 +88,10 @@ public class Vault {
|
|||
|
||||
entries.add(entry);
|
||||
}
|
||||
|
||||
if (!obj.optBoolean("icons_optimized")) {
|
||||
vault.setIconsOptimized(false);
|
||||
}
|
||||
} catch (VaultEntryException | JSONException e) {
|
||||
throw new VaultException(e);
|
||||
}
|
||||
|
@ -101,6 +107,14 @@ public class Vault {
|
|||
return _isGroupsMigrationFresh;
|
||||
}
|
||||
|
||||
public void setIconsOptimized(boolean optimized) {
|
||||
_iconsOptimized = optimized;
|
||||
}
|
||||
|
||||
public boolean areIconsOptimized() {
|
||||
return _iconsOptimized;
|
||||
}
|
||||
|
||||
public boolean migrateOldGroup(VaultEntry entry) {
|
||||
if (entry.getOldGroup() != null) {
|
||||
Optional<VaultGroup> optGroup = getGroups().getValues()
|
||||
|
|
|
@ -103,8 +103,14 @@ public class VaultEntry extends UUIDMap.Value {
|
|||
entry.setOldGroup(JsonUtils.optString(obj, "group"));
|
||||
}
|
||||
|
||||
VaultEntryIcon icon = VaultEntryIcon.fromJson(obj);
|
||||
entry.setIcon(icon);
|
||||
// Silently ignore any errors that occur when trying to parse the icon of an
|
||||
// entry. This allows us to introduce new icon types in the future (e.g. WebP)
|
||||
// without breaking compatibility with older versions of Aegis.
|
||||
try {
|
||||
VaultEntryIcon icon = VaultEntryIcon.fromJson(obj);
|
||||
entry.setIcon(icon);
|
||||
} catch (VaultEntryIconException ignored) {
|
||||
}
|
||||
|
||||
return entry;
|
||||
} catch (OtpInfoException | JSONException e) {
|
||||
|
@ -233,6 +239,10 @@ public class VaultEntry extends UUIDMap.Value {
|
|||
&& getGroups().equals(entry.getGroups());
|
||||
}
|
||||
|
||||
public boolean hasSameNameAndIssuer(VaultEntry entry) {
|
||||
return getName().equals(entry.getName()) && getIssuer().equals(entry.getIssuer());
|
||||
}
|
||||
|
||||
/**
|
||||
* Reports whether this entry has its values set to the defaults.
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package com.beemdevelopment.aegis.vault;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.beemdevelopment.aegis.encoding.Base64;
|
||||
import com.beemdevelopment.aegis.encoding.EncodingException;
|
||||
import com.beemdevelopment.aegis.encoding.Hex;
|
||||
|
@ -7,8 +10,6 @@ import com.beemdevelopment.aegis.icons.IconType;
|
|||
import com.beemdevelopment.aegis.util.JsonUtils;
|
||||
import com.google.common.hash.HashCode;
|
||||
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
|
@ -23,21 +24,23 @@ public class VaultEntryIcon implements Serializable {
|
|||
private final byte[] _hash;
|
||||
private final IconType _type;
|
||||
|
||||
public VaultEntryIcon(byte @NonNull [] bytes, @NonNull IconType type) {
|
||||
public static final int MAX_DIMENS = 512;
|
||||
|
||||
public VaultEntryIcon(@NonNull byte[] bytes, @NonNull IconType type) {
|
||||
this(bytes, type, generateHash(bytes, type));
|
||||
}
|
||||
|
||||
VaultEntryIcon(byte @NonNull [] bytes, @NonNull IconType type, byte @NonNull [] hash) {
|
||||
VaultEntryIcon(@NonNull byte[] bytes, @NonNull IconType type, @NonNull byte[] hash) {
|
||||
_bytes = bytes;
|
||||
_hash = hash;
|
||||
_type = type;
|
||||
}
|
||||
|
||||
public byte @NonNull [] getBytes() {
|
||||
public @NonNull byte[] getBytes() {
|
||||
return _bytes;
|
||||
}
|
||||
|
||||
public byte @NonNull [] getHash() {
|
||||
public @NonNull byte[] getHash() {
|
||||
return _hash;
|
||||
}
|
||||
|
||||
|
@ -70,7 +73,7 @@ public class VaultEntryIcon implements Serializable {
|
|||
}
|
||||
|
||||
@Nullable
|
||||
static VaultEntryIcon fromJson(@NonNull JSONObject obj) throws VaultEntryException {
|
||||
static VaultEntryIcon fromJson(@NonNull JSONObject obj) throws VaultEntryIconException {
|
||||
try {
|
||||
Object icon = obj.get("icon");
|
||||
if (icon == JSONObject.NULL) {
|
||||
|
@ -80,7 +83,7 @@ public class VaultEntryIcon implements Serializable {
|
|||
String mime = JsonUtils.optString(obj, "icon_mime");
|
||||
IconType iconType = mime == null ? IconType.JPEG : IconType.fromMimeType(mime);
|
||||
if (iconType == IconType.INVALID) {
|
||||
throw new VaultEntryException(String.format("Bad icon MIME type: %s", mime));
|
||||
throw new VaultEntryIconException(String.format("Bad icon MIME type: %s", mime));
|
||||
}
|
||||
|
||||
byte[] iconBytes = Base64.decode((String) icon);
|
||||
|
@ -92,11 +95,11 @@ public class VaultEntryIcon implements Serializable {
|
|||
|
||||
return new VaultEntryIcon(iconBytes, iconType);
|
||||
} catch (JSONException | EncodingException e) {
|
||||
throw new VaultEntryException(e);
|
||||
throw new VaultEntryIconException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static byte @NonNull [] generateHash(byte @NonNull [] bytes, @NonNull IconType type) {
|
||||
private static @NonNull byte[] generateHash(@NonNull byte[] bytes, @NonNull IconType type) {
|
||||
try {
|
||||
MessageDigest md = MessageDigest.getInstance("SHA-256");
|
||||
md.update(type.toMimeType().getBytes(StandardCharsets.UTF_8));
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package com.beemdevelopment.aegis.vault;
|
||||
|
||||
public class VaultEntryIconException extends Exception {
|
||||
public VaultEntryIconException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public VaultEntryIconException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
|
@ -333,6 +333,14 @@ public class VaultRepository {
|
|||
return _vault.isGroupsMigrationFresh();
|
||||
}
|
||||
|
||||
public boolean areIconsOptimized() {
|
||||
return _vault.areIconsOptimized();
|
||||
}
|
||||
|
||||
public void setIconsOptimized(boolean optimized) {
|
||||
_vault.setIconsOptimized(optimized);
|
||||
}
|
||||
|
||||
public VaultFileCredentials getCredentials() {
|
||||
return _creds == null ? null : _creds.clone();
|
||||
}
|
||||
|
|
9
app/src/main/res/drawable/ic_tag_24.xml
Normal file
9
app/src/main/res/drawable/ic_tag_24.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:pathData="m240,800 l40,-160L120,640l20,-80h160l40,-160L180,400l20,-80h160l40,-160h80l-40,160h160l40,-160h80l-40,160h160l-20,80L660,400l-40,160h160l-20,80L600,640l-40,160h-80l40,-160L360,640l-40,160h-80ZM380,560h160l40,-160L420,400l-40,160Z"
|
||||
android:fillColor="#e3e3e3"/>
|
||||
</vector>
|
|
@ -17,6 +17,7 @@
|
|||
android:layout_height="?attr/actionBarSize" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
<ScrollView
|
||||
android:id="@+id/about_scroll_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
android:id="@+id/list_entries"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="60dp"
|
||||
android:clipToPadding="false"
|
||||
android:scrollbars="vertical"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
|
||||
|
|
|
@ -39,8 +39,7 @@
|
|||
android:id="@+id/groupChipGroup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:selectionRequired="true"
|
||||
app:singleSelection="true"/>
|
||||
app:selectionRequired="true"/>
|
||||
</LinearLayout>
|
||||
</HorizontalScrollView>
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
android:id="@+id/layoutShareEntry"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingHorizontal="30dp"
|
||||
android:layout_marginTop="?attr/actionBarSize">
|
||||
android:layout_marginTop="?attr/actionBarSize"
|
||||
android:paddingHorizontal="30dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvDescription"
|
||||
|
@ -34,44 +34,44 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/transfer_entry_description"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/ivQrCode"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.google.android.material.imageview.ShapeableImageView
|
||||
android:id="@+id/ivQrCode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Aegis.ImageView.Rounded"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintVertical_bias="0.3"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.3"
|
||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Aegis.ImageView.Rounded" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvIssuer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
tools:text="Issuer"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ivQrCode" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/ivQrCode"
|
||||
tools:text="Issuer" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAccountName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
tools:text="Accountname"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvIssuer" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvIssuer"
|
||||
tools:text="Accountname" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnCopyClipboard"
|
||||
|
@ -80,17 +80,19 @@
|
|||
android:text="@string/copy_uri"
|
||||
android:textAllCaps="false"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintBottom_toTopOf="@id/tvEntriesCount"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.497"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvAccountName"
|
||||
app:layout_constraintBottom_toTopOf="@id/tvEntriesCount" />
|
||||
app:layout_constraintVertical_bias="0.134" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnNext"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="4dp"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:text="@string/next"
|
||||
android:textAllCaps="false"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
@ -98,11 +100,11 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/btnPrevious"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:text="@string/previous"
|
||||
android:textAllCaps="false"
|
||||
android:visibility="invisible"
|
||||
|
@ -118,6 +120,16 @@
|
|||
app:layout_constraintEnd_toEndOf="@+id/btnNext"
|
||||
app:layout_constraintStart_toStartOf="@+id/btnPrevious" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/transfer_entry_brightness"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tvEntriesCount"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/btnCopyClipboard" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
151
app/src/main/res/layout/dialog_duplicate_entry.xml
Normal file
151
app/src/main/res/layout/dialog_duplicate_entry.xml
Normal file
|
@ -0,0 +1,151 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="20dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:paddingTop="16dp"
|
||||
android:text="@string/dialog_duplicate_entry_title"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/duplicate_warning_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dialog_duplicate_entry_message"
|
||||
android:textSize="16sp"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="20dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/overwrite_entry"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingVertical="15dp"
|
||||
android:paddingHorizontal="10dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:src="@drawable/ic_outline_brush_24"
|
||||
app:tint="?attr/colorOnSurfaceVariant" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginStart="16dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dialog_duplicate_entry_overwrite_title"
|
||||
android:textSize="17sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dialog_duplicate_entry_overwrite_subtitle"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?attr/colorOnSurfaceVariant" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/create_new_entry"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingVertical="15dp"
|
||||
android:paddingHorizontal="10dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:src="@drawable/ic_tag_24"
|
||||
app:tint="?attr/colorOnSurfaceVariant" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginStart="16dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dialog_duplicate_entry_suffix_title"
|
||||
android:textSize="17sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/duplicate_suffix_subtitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dialog_duplicate_entry_suffix_subtitle"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?attr/colorOnSurfaceVariant" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/cancel_save"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingVertical="15dp"
|
||||
android:paddingHorizontal="10dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:src="@drawable/ic_outline_close_24"
|
||||
app:tint="?attr/colorOnSurfaceVariant" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginStart="16dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dialog_duplicate_entry_cancel_title"
|
||||
android:textSize="17sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dialog_duplicate_entry_cancel_subtitle"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?attr/colorOnSurfaceVariant" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
|
@ -51,6 +51,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:scrollbars="vertical"
|
||||
android:scrollbarStyle="outsideOverlay"
|
||||
android:clipToPadding="false"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
android:paddingHorizontal="8dp"
|
||||
android:scrollbars="vertical"
|
||||
android:scrollbarStyle="outsideOverlay"
|
||||
android:clipToPadding="false"
|
||||
android:id="@+id/rvKeyProfiles"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
5
app/src/main/res/values-ar-rSA-v29/strings.xml
Normal file
5
app/src/main/res/values-ar-rSA-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">الإفتراضي للنظام</string>
|
||||
<string name="system_amoled_theme_title">افتراضي النظام (أموليد AMOLED)</string>
|
||||
</resources>
|
|
@ -46,8 +46,13 @@
|
|||
<string name="pref_code_group_size_summary">حدد عدد الأرقام لتجميع الرموز حسبها</string>
|
||||
<string name="pref_account_name_position_title">اضهِر اسم الحساب</string>
|
||||
<string name="pref_show_next_code_title">أظهِر الرمز التالي</string>
|
||||
<string name="pref_show_next_code_summary">ولّد وأظهِر الكود التالي قبل الوقت</string>
|
||||
<string name="pref_expiration_state_title">أشر متى تكون الرموز على وشك الانتهاء</string>
|
||||
<string name="pref_expiration_state_summary">غيّر لون الرموز البرمجية وجعلها غير واضحة عندما تكون على وشك الانتهاء</string>
|
||||
<string name="pref_expiration_state_fallback">غيّر لون الرموز عندما تكون على وشك الانتهاء</string>
|
||||
<string name="pref_shared_issuer_account_name_title">اضهِر اسم الحساب فقط عند الضرورة</string>
|
||||
<string name="pref_shared_issuer_account_name_summary">أضهِر أسماء الحسابات فقط عندما يشتركون نفس المصدر. سيتم إخفاء أسماء الحسابات الأخرى.</string>
|
||||
<string name="pref_account_name_position_summary_override">تم تجاوز هذا الإعداد بوضع عرض البلاط. سيتم عرض اسم الحساب أسفل المُصدّر.</string>
|
||||
<string name="pref_import_file_title">استيراد من ملف</string>
|
||||
<string name="pref_import_file_summary">استيراد الرموز من ملف</string>
|
||||
<string name="pref_android_backups_title">النسخ الاحتياطية السحابية للأندرويد</string>
|
||||
|
@ -59,7 +64,14 @@
|
|||
<string name="pref_backups_reminder_summary">أظهر تذكيرًا للاحتفاظ بنسخة احتياطية من مخزنك في حالة عدم إجراء نسخ احتياطي لآخر تغييراتك.</string>
|
||||
<string name="pref_backups_reminder_dialog_title">تعطيل تذكير النسخ الاحتياطي</string>
|
||||
<string name="pref_backups_reminder_dialog_summary">يعني تعطيل هذا التذكير أن Aegis لن يخبرك بما إذا كان لديك تغييرات لم يتم نسخها احتياطيًا حتى الآن أم لا. هذا يعرضك لخطر فقدان الوصول إلى الرموز الخاصة بك. هل أنت متأكد أنك تريد تعطيل التذكير؟</string>
|
||||
<string name="pref_backups_versioning_strategy_title">استراتيجية النسخ الاحتياطي</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">احتفظ بعدد من الإصدارات</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup">نُسخة احتياطية واحدة</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup_warning">استراتيجية النسخ الاحتياطي المحددة غير موثوقة ولا يُنصح بها. فشل احتياطي واحد يمكن أن يؤدي إلى فقدان النسخة الاحتياطية الوحيدة.</string>
|
||||
<string name="pref_backups_versioning_strategy_dialog_title">حدد استراتيجية النسخ الاحتياطي</string>
|
||||
<string name="pref_backups_location_title">موقع النسخة الاحتياطية</string>
|
||||
<string name="pref_backups_location_summary">سيتم تخزين النسخ الاحتياطية في</string>
|
||||
<string name="pref_backup_location_summary">سيتم تخزين النسخ الاحتياطي في</string>
|
||||
<string name="pref_backups_trigger_title">اصنع نسخة احتياطية</string>
|
||||
<string name="pref_backups_trigger_summary">قم بعمل نسخة احتياطية يدويًّا</string>
|
||||
<string name="pref_backups_versions_title">عدد الإصدارات المراد الاحتفاظ بها</string>
|
||||
|
@ -72,7 +84,7 @@
|
|||
<item quantity="many">احتفظ ب%1$d إصدارات من النسخ الاحتياطية</item>
|
||||
<item quantity="other">احتفظ ب%1$d إصدارات من النسخ الاحتياطية</item>
|
||||
</plurals>
|
||||
<string name="pref_backups_versions_infinite_summary">الاحتفاظ بعدد غير محدود من النُسخ الاحتياطية</string>
|
||||
<string name="pref_backups_versions_infinite_summary">احتفظ بعدد غير محدود من النُسخ الاحتياطية</string>
|
||||
<string name="pref_import_app_title">استيراد من تطبيق</string>
|
||||
<string name="pref_import_app_summary">استيراد الرموز من تطبيق (يتطلب الوصول إلى الجذر root)</string>
|
||||
<string name="pref_export_title">تصدير</string>
|
||||
|
@ -112,6 +124,8 @@
|
|||
<string name="pref_encryption_summary">قم بتشفير المخزن وفك قفله بكملة مرور أو مصادقة بيومترية</string>
|
||||
<string name="pref_biometrics_title">الفتح البيومتري</string>
|
||||
<string name="pref_biometrics_summary">السماح بالمصادقة البيومترية لفتح قفل المخزن</string>
|
||||
<string name="pref_search_behavior_summary">البحث من خلال: %s</string>
|
||||
<string name="pref_search_behavior_prompt">البحث في أي من الحقول التالية</string>
|
||||
<string name="pref_search_behavior_type_name">الاسم</string>
|
||||
<string name="pref_search_behavior_type_issuer">المصدِّر</string>
|
||||
<string name="pref_search_behavior_type_note">ملاحظة</string>
|
||||
|
@ -200,7 +214,7 @@
|
|||
<string name="counter">العداد</string>
|
||||
<string name="digits">الأرقام</string>
|
||||
<string name="secret">السر</string>
|
||||
<string name="scan">امسح كود QR</string>
|
||||
<string name="scan">امسح رمز QR</string>
|
||||
<string name="scan_image">امسح الصورة</string>
|
||||
<string name="enter_manually">أدخل يدويًا</string>
|
||||
<string name="set_up_biometric">تعيين الفتح البيومتري</string>
|
||||
|
@ -225,6 +239,8 @@
|
|||
<string name="snackbar_authentication_method">الرجاء تحديد طريقة مصادقة</string>
|
||||
<string name="encrypting_vault">يتم تشفير المخزن</string>
|
||||
<string name="exporting_vault">يجري تصدير المخزن</string>
|
||||
<string name="optimizing_icon">تحسين الأيقونة</string>
|
||||
<string name="optimizing_icon_multiple">تحسين الأيقونات %1$d/%2$d</string>
|
||||
<string name="reading_file">قراءة الملف</string>
|
||||
<string name="requesting_root_access">طلب صلاحية الجذر</string>
|
||||
<string name="analyzing_qr">تحليل رمز QR</string>
|
||||
|
@ -338,6 +354,14 @@
|
|||
<string name="partial_google_auth_import">اكتُشف تصدير Google Authenticator غير مكتمل</string>
|
||||
<string name="partial_google_auth_import_warning">بعض رموز QR مفقودة من الاستيراد. لم يتم العثور على الرموز التالية:\n\n<b>%s</b>\n\nيمكنك الاستمرار في استيراد هذا التصدير الجزئي ولكننا نوصي بإعادة المحاولة باستخدام جميع رموز QR حتى لا تخاطر بفقدان الوصول إلى أي رموز.</string>
|
||||
<string name="missing_qr_code_descriptor">• رمز QR %d</string>
|
||||
<plurals name="import_partial_export_anyway">
|
||||
<item quantity="zero">استيراد %d رموز على أي حال</item>
|
||||
<item quantity="one">استيراد رمز %d على أي حال</item>
|
||||
<item quantity="two">استيراد رمزين على أي حال</item>
|
||||
<item quantity="few">استيراد %d رموز على أي حال</item>
|
||||
<item quantity="many">استيراد %d رموز على أي حال</item>
|
||||
<item quantity="other">استيراد %d رموز على أي حال</item>
|
||||
</plurals>
|
||||
<string name="import_google_auth_failure">فشل استيراد تصدير Google Authenticator</string>
|
||||
<string name="unrelated_google_auth_batches_error">يحتوي التصدير على معلومات عن دُفعة غير ذات صلة. حاول استيراد دفعة واحدة في كل مرة.</string>
|
||||
<string name="no_tokens_can_be_imported">نتيجة لذلك، لا يمكن استيراد أي رموز</string>
|
||||
|
@ -375,8 +399,29 @@
|
|||
<string name="preference_reset_usage_count_dialog">هل أنت متأكد من أنك تريد جعل العداد لكل مدخل في خزنتك يصبح 0؟</string>
|
||||
<string name="note" comment="Users can add a note to an entry">ملاحظة</string>
|
||||
<string name="clear">مسح</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">إدخال مكرر</string>
|
||||
<string name="dialog_duplicate_entry_message">هذا الإدخال يحمل نفس الاسم والمصدر كواحد أو أكثر من الإدخالات الموجودة. كيف ترغب في المتابعة؟</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">الكتابة فوق إدخال/إدخالات موجودة</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">استبدل الإدخال أو الإدخالات الموجودة بالإدخال الجديد. لا يمكن التراجع عن هذا الإجراء</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">أضف لاحقة</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">أضف لاحقة إلى اسم هذا الإدخال الجديد. الاسم الجديد سيكون هو: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">ألغِ الحفظ</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">يسمح لك بتعديل الإدخال قبل محاولة حفظه مرة أخرى</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="zero">هل أنت متأكد من أنك تريد حذف الإدخال %d بالاسم التالي:\n\n%s - %s</item>
|
||||
<item quantity="one">هل أنت متأكد من أنك تريد حذف مدخل بالاسم التالي:\n\n%s - %s</item>
|
||||
<item quantity="two">هل أنت متأكد من أنك تريد حذف مدخلان بالاسم التالي:\n\n%s - %s</item>
|
||||
<item quantity="few">هل أنت متأكد من أنك تريد حذف %d مدخلات بالاسم التالي:\n\n%s - %s</item>
|
||||
<item quantity="many">هل أنت متأكد من أنك تريد حذف %d مدخل بالاسم التالي:\n\n%s - %s</item>
|
||||
<item quantity="other">هل أنت متأكد من أنك تريد حذف %d مدخل بالاسم التالي:\n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">تأكيد الحذف</string>
|
||||
<string name="pref_haptic_feedback_summary">اجعل جهازك يهتز عند تحديث الرموز</string>
|
||||
<string name="pref_haptic_feedback_title">الاستجابة اللمسية</string>
|
||||
<string name="pref_highlight_entry_title">ابرز الرموز عندما تُنقر</string>
|
||||
<string name="pref_highlight_entry_summary">يسهل تمييز الرموز عن بعضها بتسليط الضوء عليهم عندما يتم النقر عليهم</string>
|
||||
<string name="pref_groups_multiselect_title">مجموعات متعددة الإختيار</string>
|
||||
<string name="pref_groups_multiselect_summary">السماح باختيار مجموعات متعددة في نفس الوقت</string>
|
||||
<string name="pref_minimize_on_copy_title">تصغير عند النسخ</string>
|
||||
<string name="pref_minimize_on_copy_summary">تصغير التطبيق بعد نسخ رمز</string>
|
||||
<string name="pref_copy_behavior_title">نسخ الرموز إلى الحافظة</string>
|
||||
|
@ -410,6 +455,7 @@
|
|||
<string name="unable_to_process_deeplink">تعذرت معالجة الارتباط العميق</string>
|
||||
<string name="unable_to_read_qrcode_file">غير قادر على قراءة ومعالجة رمز QR من الملف: %s.</string>
|
||||
<string name="unable_to_process_shared_text">غير قادر على معالجة النص المُشارك ك OTP</string>
|
||||
<string name="unable_to_read_qrcode_files">غير قادر على قراءة ومعالجة بعض رموز QR. سيتم استيراد %1$d/%2$d فقط من المدخلات.</string>
|
||||
<string name="unable_to_generate_qrcode">تعذّر توليد كود QR</string>
|
||||
<string name="select_picture">اختر صورة</string>
|
||||
<string name="select_icon">اختر أيقونة</string>
|
||||
|
@ -440,7 +486,19 @@
|
|||
<string name="time_sync_warning_message">يعتمد Aegis على وقت النظام لتوليد الأكواد الصحيحة. انحراف بمقادر بضعة ثواني يمكن أن يؤدي إلى أكواد خاطئة. يبدوا أن جهازك غير معيّن إلى مزامنة الوقت تلقائيًا. هل ترغب بفعل ذلك الآن؟</string>
|
||||
<string name="time_sync_warning_disable">إيقاف تحذيري. أنا أعرف ما أفعله.</string>
|
||||
<string name="google_qr_export_unrelated">تم العثور على كود QR لا علاقة له. حاول إعادة تشغيل الماسح.</string>
|
||||
<plurals name="google_qr_export_scanned">
|
||||
<item quantity="zero">تم مسح %1$d/%2$d رموز QR</item>
|
||||
<item quantity="one">تم مسح %1$d/%2$d رمز QR</item>
|
||||
<item quantity="two">تم مسح %1$d/%2$d رموز QR</item>
|
||||
<item quantity="few">تم مسح %1$d/%2$d رموز QR</item>
|
||||
<item quantity="many">تم مسح %1$d/%2$d رموز QR</item>
|
||||
<item quantity="other">تم مسح %1$d/%2$d رموز QR</item>
|
||||
</plurals>
|
||||
<string name="google_qr_export_unexpected">انتظرت رمز QR #%1$d، ولكن مسحت #%2$d بدلًا منه</string>
|
||||
<string name="backup_error_bar_message"><b>النسخ الاحتياطي للمخزن فشل مؤخرًا</b></string>
|
||||
<string name="backup_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'."> فشلت محاولة النسخ الاحتياطي للمخزون باستخدام %1$s بسبب حدوث خطأ. تمت محاولة النسخ الاحتياطي %2$s. الرجاء التحقق من إعدادات النسخ الاحتياطي للتأكد من أن النسخ الاحتياطي يمكن أن يكتمل بنجاح.
|
||||
</string>
|
||||
<string name="backup_permission_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'.">فشلت محاولة النسخ الاحتياطي الأخيرة للمخزون باستخدام %1$s لأن Aegis لم يكن لديه الإذن قراءة وجهة النسخ الاحتياطي. تمت محاولة النسخ الاحتياطي %2$s. يمكن أن يحدث هذا الخطأ إذا قمت بنقل/إعادة تسمية وجهة النسخ الاحتياطي أو إذا قمت للتو باستعادة Aegis من نسخة احتياطية. الرجاء إعادة إعداد وجهة النسخ الإحتياطي. </string>
|
||||
<string name="backup_system_builtin">النسخ الاحتياطية التلقائية المضنة في Aegis</string>
|
||||
<string name="backup_system_android">نظام النسخ الاحتياطي السحابي للأندرويد</string>
|
||||
<string name="backup_reminder_bar_message_with_latest" comment="The parameter is an elapsed time in the style of 'x seconds/minutes/days ago'"> أحدث نسخة احتياطية قديمة (%s)
|
||||
|
@ -478,6 +536,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">تعذر نسخ URI إلى الحافظة</string>
|
||||
<string name="uri_copied_to_clipboard">نُسخ URI إلى الحافظة</string>
|
||||
<string name="transfer_entry_description">امسح كود QR هذا بتطبيق المصادقة الذي ترغب بنقل ذلك المدخل إليه</string>
|
||||
<string name="transfer_entry_brightness">اضغط على رمز الاستجابة السريعة لتبديل سطوع الشاشة بالكامل</string>
|
||||
<string name="google_auth_compatible_transfer_description">امسح رموز ال QR هذه بواسطة Aegis أو Google Authenticator.\n\nبسبب القيود في تطبيق Google Authenticator، فقط رموز TOTP & HOTP التي تستعمل SHA1 وتنتِج كود من 6 خانات هي من سيتم إدراجها</string>
|
||||
<string name="password_strength_very_weak">ضعيف جدًا</string>
|
||||
<string name="password_strength_weak">ضعيف</string>
|
||||
|
@ -515,13 +574,13 @@
|
|||
<string name="importer_help_2fas">توفير مِلَفّ النسخ الاحتياطي 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">توفير مِلَفّ Aegis للتصدير / النسخ الاحتياطي.</string>
|
||||
<string name="importer_help_authenticator_plus">توفير مِلَفّ تصدير Authenticator Plus الذي تم الحصول عليه من خلال <b>الإعدادات -> النسخ الاحتياطي & استعادة -> تصدير كنص و HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">توفير مِلَفّ تصدير Authenticator Pro الذي تم الحصول عليه من خلال <b>الإعدادات -> النسخ الاحتياطي -> النسخ الاحتياطي إلى مِلَفّ مشفر (مستحسن).</string>
|
||||
<string name="importer_help_authy">توفير نسخة من <b> /data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>، الموجود في دليل التخزين الداخلي لـ Authy.</string>
|
||||
<string name="importer_help_andotp">توفير مِلَفّ تصدير / نسخ احتياطي andOTP.</string>
|
||||
<string name="importer_help_bitwarden">توفير مِلَفّ تصدير / نسخ احتياطي لـ Bitwarden. الملفات المشفرة غير مدعومة.</string>
|
||||
<string name="importer_help_battle_net_authenticator">يرجى توفير نسخة من <b>/data/data/com.blizzard.messenger/shared_prefs/com.blizzard.messenger.authenticator_preferences.xml</b>، الموجود في دليل التخزين الداخلي لـ Battle.net Authenticator.</string>
|
||||
<string name="importer_help_duo">توفير نسخة من <b>/data/data/com.duosecurity.duomobile/files/duokit/accounts.json</b>، الموجودة في دليل التخزين الداخلي لـ DUO.</string>
|
||||
<string name="importer_help_ente_auth">قم بتوفير ملف تصدير Ente Auth. حاليا فقط الملفات غير المشفرة مدعومة.</string>
|
||||
<string name="importer_help_freeotp">FreeOTP 2: توفير ملف احتياطي.\nFreeOTP 1.x: توفير نسخة من <b>/data/data/org.fedorahosted.freeotp/shared_prefs/tokens.xml</b>، الموجود في دليل التخزين الداخلي لـ FreeOTP.</string>
|
||||
<string name="importer_help_freeotp_plus">توفير ملف تصدير FreeOTP +.</string>
|
||||
<string name="importer_warning_title_freeotp2">توافق مع FreeOTP 2</string>
|
||||
<string name="importer_warning_message_freeotp2">هناك عدد من المشاكل في FreeOTP 2 التي يمكن أن تؤدي إلى وجود نسخ احتياطية فاسدة. سوف يحاول درع إنقاذ أكبر عدد ممكن من الإدخالات، ولكن من الممكن أن يفشل البعض أو حتى الجميع في الاستيراد.</string>
|
||||
|
@ -529,6 +588,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">توفير نسخة من<b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>، الموجود في دليل التخزين الداخلي لـ Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">توفير مِلَفّ نصي عادي مع Google Authenticator URI في كل سطر.</string>
|
||||
<string name="importer_help_steam"><b>لا يتم دعم Steam v3.0 والإصدارات الأحدث</b>. توفير نسخة من<b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>، الموجود في دليل التخزين الداخلي لـ Steam.</string>
|
||||
<string name="importer_help_stratum">جهّز ملف تصدير Stratum تم الحصول عليه من خلال <b>الإعدادات -> النسخ الاحتياطي -> النسخ الاحتياطي للملف المشفر (موصى به)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">توفير مِلَفّ تصدير TOTP Authenticator.</string>
|
||||
<string name="importer_help_winauth">توفير مِلَفّ تصدير WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">تعيين أيقونات</string>
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
<string name="action_default_icon">Reafitar l\'iconu</string>
|
||||
<string name="discard">Escartar</string>
|
||||
<string name="save">Guardar</string>
|
||||
<string name="all">Too</string>
|
||||
<string name="issuer">Emisor</string>
|
||||
<string name="yandex_pin">PIN (4–16 díxitos)</string>
|
||||
<string name="motp_pin">PIN (4 díxitos)</string>
|
||||
|
@ -28,17 +29,26 @@
|
|||
<string name="pref_section_security_summary">Configura\'l cifráu, el bloquéu biométricu, el bloquéu automáticu ya otros valores de seguranza.</string>
|
||||
<string name="pref_section_import_export_title">Importación ya esportación</string>
|
||||
<string name="pref_section_import_export_summary">Importa les copies de seguranza d\'Aeguis o d\'otres aplicaciones del mesmu tipu. Crea ficheros d\'esportación manuales de l\'arca d\'Aeguis.</string>
|
||||
<string name="pref_section_audit_log_title">Rexistros d\'auditoría</string>
|
||||
<string name="pref_section_backups_title">Copies de seguranza</string>
|
||||
<string name="pref_section_backups_summary">Configura\'l llugar onde s\'atroxen les copies de seguranza o activa la participación nel sistema de copies de seguranza na ñube d\'Android.</string>
|
||||
<string name="pref_section_icon_packs">Paquetes d\'iconos</string>
|
||||
<string name="pref_section_icon_packs_summary">Xestiona ya importa paquetes d\'iconos</string>
|
||||
<string name="pref_select_theme_title">Estilu</string>
|
||||
<string name="pref_dynamic_colors_title">Colores dinámicos</string>
|
||||
<string name="pref_view_mode_title">Mou de la visualización</string>
|
||||
<string name="pref_lang_title">Llingua</string>
|
||||
<string name="pref_show_icons_title">Amosar los iconos</string>
|
||||
<string name="pref_show_icons_summary">Amuesa los iconos al llau de cada entrada</string>
|
||||
<string name="pref_code_group_size_title">Agrupamientu de díxitos</string>
|
||||
<string name="pref_code_group_size_summary">Seleiciona\'l númberu de díxitos pol que s\'agrupen los códigos</string>
|
||||
<string name="pref_account_name_position_title">Amosar el nome de la cuenta</string>
|
||||
<string name="pref_show_next_code_title">Amosar el códigu siguiente</string>
|
||||
<string name="pref_show_next_code_summary">Xenera y amuesa\'l códigu siguiente per adelantao</string>
|
||||
<string name="pref_expiration_state_title">Indicar cuándo tán a piques de caducar los códigos</string>
|
||||
<string name="pref_expiration_state_summary">Camuda\'l color de los códigos y fai que parpaguien cuando tán a piques de caducar</string>
|
||||
<string name="pref_expiration_state_fallback">Camuda\'l color de los códigos cuando tán a piques de caducar</string>
|
||||
<string name="pref_shared_issuer_account_name_title">Amosar el nome de la cuenta namás cuando seya necesariu</string>
|
||||
<string name="pref_import_file_title">Importar d\'un ficheru</string>
|
||||
<string name="pref_import_file_summary">Importa los pases d\'un ficheru</string>
|
||||
<string name="pref_android_backups_title">Copies de seguranza na ñube</string>
|
||||
|
@ -46,7 +56,12 @@
|
|||
<string name="pref_android_backups_hint"><i>Siempres se permiten les copies de seguranza D2D, independientemente de la configuración d\'arriba</i></string>
|
||||
<string name="pref_backups_title">Crear automáticamente copies de seguranza</string>
|
||||
<string name="pref_backups_summary">Crea automáticamente copies de seguranza de l\'arca nel almacenamientu esternu al facer cambeos. Esta opción namás ye compatible coles arques cifraes.</string>
|
||||
<string name="pref_backups_reminder_title">Recordatoriu de copia de seguranza</string>
|
||||
<string name="pref_backups_versioning_strategy_title">Estratexa de copies de seguranza</string>
|
||||
<string name="pref_backups_versioning_strategy_dialog_title">Seleiciona una estratexa de copies de seguranza</string>
|
||||
<string name="pref_backups_location_title">Llocalización de les copies de seguranza</string>
|
||||
<string name="pref_backups_location_summary">Les copies de seguranza van atroxase en</string>
|
||||
<string name="pref_backup_location_summary">La copia de seguranza va atroxase en</string>
|
||||
<string name="pref_backups_trigger_title">Facer una copia de seguranza</string>
|
||||
<string name="pref_backups_trigger_summary">Fai manualmente una copia de seguranza</string>
|
||||
<string name="pref_backups_versions_title">Númberu de versiones a caltener</string>
|
||||
|
@ -89,8 +104,31 @@
|
|||
<string name="pref_encryption_summary">Cifra l\'arca ya desblóquiala con una contraseña o cola biometría</string>
|
||||
<string name="pref_biometrics_title">Desbloquéu biométricu</string>
|
||||
<string name="pref_biometrics_summary">Permite que l\'autenticación biométrica desbloquie l\'arca</string>
|
||||
<string name="pref_search_behavior_type_name">Nome</string>
|
||||
<string name="pref_search_behavior_type_issuer">Emisor</string>
|
||||
<string name="pref_search_behavior_type_note">Nota</string>
|
||||
<string name="pref_search_behavior_type_groups">Grupos</string>
|
||||
<string name="pref_set_password_title">Camudar la contraseña</string>
|
||||
<string name="pref_set_password_summary">Configura la contraseña que vas precisar pa desbloquiar l\'arca</string>
|
||||
<string name="no_events_title">Nun s\'informó de nengún eventu</string>
|
||||
<string name="no_events_description">Nun s\'informó de nengún eventu importante na aplicación</string>
|
||||
<string name="event_title_vault_unlocked">Arca desbloquiada</string>
|
||||
<string name="event_description_vault_unlocked">L\'arca desbloquióse correutamente</string>
|
||||
<string name="event_title_backup_created">Copia de seguranza creada</string>
|
||||
<string name="event_description_backup_created">Creóse una copia de seguranza de l\'arca correutamente</string>
|
||||
<string name="event_title_android_backup_created">Copia de seguranza creada por Android</string>
|
||||
<string name="event_description_android_backup_created">Android creó una copia de seguranza de l\'arca correutamente</string>
|
||||
<string name="event_title_vault_exported">Arca esportada</string>
|
||||
<string name="event_description_vault_exported">Esportóse una copia de l\'arca</string>
|
||||
<string name="event_title_entry_shared">Entrada compartida</string>
|
||||
<string name="event_description_entry_shared">Compartióse una entrada</string>
|
||||
<string name="event_title_vault_unlock_failed_password">Error de desbloquéu de l\'arca (contraseña)</string>
|
||||
<string name="event_description_vault_unlock_failed_password">Hebo un intentu de desbloquiar l\'arca con una contraseña que falló</string>
|
||||
<string name="event_title_vault_unlock_failed_biometrics">Error de desbloquéu de l\'arca (biometría)</string>
|
||||
<string name="event_description_vault_unlock_failed_biometrics">Hebo un intentu de desbloquiar l\'arca cola biometría que falló</string>
|
||||
<string name="event_unknown">Tipu d\'eventu desconocíu</string>
|
||||
<string name="today_at_time">Güei a les %1$s</string>
|
||||
<string name="day_of_week_at_time">%1$s a les %2$s</string>
|
||||
<string name="export_encrypted">Cifrar l\'arca</string>
|
||||
<string name="export_help">Esta aición esporta l\'arca fuera del almacenamientu internu d\'Aegis. Seleiciona\'l formatu col que quies esportar:</string>
|
||||
<string name="export_warning_unencrypted">Tas a piques d\'esportar una copia ensin cifrar de l\'arca d\'Aegis. <b>Nun s\'aconseya</b>.</string>
|
||||
|
@ -100,6 +138,7 @@
|
|||
<string name="export_format_google_auth_uri">Ficheru de testu (.TXT)</string>
|
||||
<string name="export_format_html">Páxina web (.HTML)</string>
|
||||
<string name="export_format_hint">Formatu de la esportación</string>
|
||||
<string name="export_all_groups">Esportar tolos grupos</string>
|
||||
<plurals name="export_groups_selected_count">
|
||||
<item quantity="one">Seleicionóse %d grupu</item>
|
||||
<item quantity="other">Seleicionáronse %d grupos</item>
|
||||
|
@ -137,6 +176,7 @@
|
|||
<string name="share">Compartir</string>
|
||||
<string name="yes">Sí</string>
|
||||
<string name="no">Non</string>
|
||||
<string name="undo">Desfacer</string>
|
||||
<string name="unlock">Desbloquiar</string>
|
||||
<string name="advanced">Configuración avanzada</string>
|
||||
<string name="counter">Contador</string>
|
||||
|
@ -148,6 +188,7 @@
|
|||
<string name="set_up_biometric">Configuración del desbloquéu biométricu</string>
|
||||
<string name="copy">Copiar</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="assign_groups_dialog_dropdown">Seleiciona un grupu</string>
|
||||
<string name="favorite" comment="Verb">Meter en Favoritos</string>
|
||||
<string name="unfavorite" comment="Verb">Quitar en Favoritos</string>
|
||||
<string name="error_all_caps">ERROR</string>
|
||||
|
@ -163,7 +204,9 @@
|
|||
<string name="encrypting_vault">Cifrando l\'arca</string>
|
||||
<string name="exporting_vault">Esportando l\'arca</string>
|
||||
<string name="reading_file">Lleendo\'l ficheru</string>
|
||||
<string name="requesting_root_access">Consiguiendo l\'accesu de superusuariu</string>
|
||||
<string name="analyzing_qr">Analizándo\'l códigu QR</string>
|
||||
<string name="analyzing_qr_multiple">Analizando\'l códigu QR %1$d/%2$d (%3$s)</string>
|
||||
<plurals name="added_new_entries">
|
||||
<item quantity="one">Amestóse %d entrada nueva a l\'arca</item>
|
||||
<item quantity="other">Amestáronse %d entraes nueves a l\'arca</item>
|
||||
|
@ -228,6 +271,7 @@
|
|||
<string name="reading_file_error">Prodúxose un error mentanto se lleía\'l ficheru</string>
|
||||
<string name="app_lookup_error">Error: l\'aplicación nun ta instalada</string>
|
||||
<string name="app_version_error">La versión instalada de «%s» nun ye compatible. Les versiones nueves comenzaron a cifrar dalgunos ficheros nel direutoriu del almacenamientu internu, lo que fai qu\'Aegis nun seya a acceder a la información que precisa pa la importación. Ye probable qu\'al tentar d\'importar se produza un error. ¿Quies siguir de toes toes?</string>
|
||||
<string name="root_error">Error: nun ye posible consiguir l\'accesu de superusuariu</string>
|
||||
<plurals name="imported_entries_count">
|
||||
<item quantity="one">Importóse %d entrada</item>
|
||||
<item quantity="other">Importáronse %d entraes</item>
|
||||
|
@ -252,8 +296,10 @@
|
|||
<string name="unrelated_google_auth_batches_error">La esportación contién información d\'un llote que nun tien rellación. Prueba a importar llotes d\'unu nunu.</string>
|
||||
<string name="no_tokens_can_be_imported">Como resultáu, nun se pue importar nengún pase</string>
|
||||
<string name="unlocking_vault">Desbloquiando l\'arca</string>
|
||||
<string name="rename_group">Renomar grupu</string>
|
||||
<string name="remove_group">Desaniciu d\'un grupu</string>
|
||||
<string name="remove_group_description">¿De xuru que quies quitar esti grupu? Les entraes d\'esti grupu cambien automáticamente al grupu «Ensin grupu».</string>
|
||||
<string name="remove_unused_groups">Desaniciar grupos ensin usu</string>
|
||||
<string name="remove_icon_pack">Desaniciu d\'un paquete d\'iconos</string>
|
||||
<string name="remove_icon_pack_description">¿De xuru que quies quitar esti paquete d\'iconos? Esta aición nun va tener nengún efeutu sobre les entraes qu\'usen iconos d\'esti paquete.</string>
|
||||
<string name="details">Detalles</string>
|
||||
|
@ -267,7 +313,9 @@
|
|||
<string name="sort_alphabetically_name">Nome de cuenta (de l\'A a la Z)</string>
|
||||
<string name="sort_alphabetically_name_reverse">Nome de cuenta (de la Z a l\'A)</string>
|
||||
<string name="sort_usage_count">Númberu d\'usos</string>
|
||||
<string name="sort_last_used">Últimu usu</string>
|
||||
<string name="sort_custom">Orde personalizáu</string>
|
||||
<string name="last_used">Últimu usu</string>
|
||||
<string name="new_group">Grupu nuevu…</string>
|
||||
<string name="group">Grupu</string>
|
||||
<string name="group_name_hint">Nome del grupu</string>
|
||||
|
@ -282,6 +330,7 @@
|
|||
<string name="pref_highlight_entry_summary">Fai que los pases s\'estremen meyor al rescamplalos temporalmente cuando toques nellos</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimizar al copiar</string>
|
||||
<string name="pref_minimize_on_copy_summary">Minimiza l\'aplicación dempués de copiar un pase</string>
|
||||
<string name="pref_search_behavior_title">Comportamientu de la busca</string>
|
||||
<string name="pref_pause_entry_title">Paralizar los pases al tocalos</string>
|
||||
<string name="pref_pause_entry_summary">Posa l\'anovamientu automáticu de los pases al tocar nellos y, polo tanto, nun s\'anueven mentanto tengan el focu. Esta opción rique l\'activación de les opciones «Rescamplar los pases al tocalos» o «Tocar pa desvelar».</string>
|
||||
<string name="pin_keyboard_description">Activa la contraseña p\'activar el tecláu numbéricu. Decátate qu\'esta opción namás funciona si la contraseña ta formada namás por númberos</string>
|
||||
|
@ -302,6 +351,7 @@
|
|||
<string name="unable_to_process_deeplink">Nun ye posible procesar l\'enllaz fondu</string>
|
||||
<string name="unable_to_read_qrcode_file">Nun se posible lleer ya procesar el códigu QR del ficheru: %s.</string>
|
||||
<string name="unable_to_process_shared_text">Nun ye posible procesar el testu compartíu como cadena d\'OTP</string>
|
||||
<string name="unable_to_read_qrcode_files">Nun ye posible lleer ya procesar dalgunos códigos QR. Namás van importase %1$d/%2$d entraes.</string>
|
||||
<string name="unable_to_generate_qrcode">Nun ye posible xenerar el códigu QR</string>
|
||||
<string name="select_picture">Seleición d\'una semeya</string>
|
||||
<string name="select_icon">Seleición d\'un iconu</string>
|
||||
|
@ -332,7 +382,10 @@
|
|||
<string name="time_sync_warning_message">Aegis encóntase na hora del sistema pa xenerar códigos correutos ya la esviación d\'unos segundos na hora podría facer que se xeneren códigos incorreutos. Paez que\'l preséu nun ta configuráu pa sincronizar automáticamente la hora. ¿Quies facelo agora?</string>
|
||||
<string name="time_sync_warning_disable">Dexar d\'alvertime, sé lo que faigo.</string>
|
||||
<string name="google_qr_export_unrelated">Atopóse un códigu QR que nun tien rellación. Prueba a reaniciar l\'escaniador.</string>
|
||||
<string name="google_qr_export_unexpected">Esperábase\'l códigu QR #%1$d, mas escanióse\'l #%2$d</string>
|
||||
<string name="backup_error_bar_message"><b>La copia de seguranza de l\'arca falló apocayá</b></string>
|
||||
<string name="backup_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'."> Falló un intentu recién de facer una copia de seguranza de l\'arca con «%1$s» porque se produxo un error (data de l\'aición: %2$s). Revisa la configuración pa que les copies de seguranza puedan facese correutamente.
|
||||
</string>
|
||||
<string name="backup_system_builtin">Copies de seguranza automátiques d\'Aegis</string>
|
||||
<string name="backup_system_android">Sistema de copies de segurazan na ñube d\'Android</string>
|
||||
<string name="backup_plaintext_export_warning"><b>L\'arca esportóse apocayá a un ficheru de testu planu</b></string>
|
||||
|
@ -354,6 +407,7 @@
|
|||
</plurals>
|
||||
<string name="next">Siguiente</string>
|
||||
<string name="previous">Anterior</string>
|
||||
<string name="copy_uri">Copiar la URI</string>
|
||||
<string name="unable_to_copy_uri_to_clipboard">Nun ye posible copiar la URI al cartafueyu</string>
|
||||
<string name="uri_copied_to_clipboard">La URI copióse al cartafueyu</string>
|
||||
<string name="transfer_entry_description">Escania esti códígu QR cola aplicación autenticadora a la que quies tresferir esta entrada</string>
|
||||
|
@ -372,20 +426,25 @@
|
|||
<string name="title_activity_edit_entry">Edición d\'una entrada</string>
|
||||
<string name="title_activity_scan_qr">Escanéu d\'un códigu QR</string>
|
||||
<string name="title_activity_import_entries">Importación d\'entraes</string>
|
||||
<string name="title_activity_licenses">Llicencies de terceros</string>
|
||||
<string name="dialog_wipe_entries_title">Borráu d\'entraes</string>
|
||||
<string name="dialog_wipe_entries_message">L\'arca xá contién entraes. ¿Quies quitales enantes d\'importar esti ficheru?\n\n<b>Al facelo, vas perder permanentemente l\'accesu a les entraes esistentes de l\'arca.</b></string>
|
||||
<string name="dialog_wipe_entries_checkbox">Borrar el conteníu de l\'arca</string>
|
||||
<string name="panic_trigger_ignore_toast">Aegis recibió un eventu de pánicu mas la opción ta desactivada</string>
|
||||
<string name="pref_panic_trigger_title">Desaniciar l\'arca n\'eventos de pánicu</string>
|
||||
<string name="pref_panic_trigger_summary">Desaniciar l\'arca al recibir un eventu de pánicu de Ripple</string>
|
||||
<string name="import_vault">Importar un arca d\'Aegis</string>
|
||||
<string name="importer_help_2fas">Forni una copia de seguranza de 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Forni un ficheru d\'esportación/copia de seguranza d\'Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Forni un ficheru d\'esportación d\'Authenticator Plus que se consigue pente <b>Configuración -> Copia de seguranza ya restauración -> Esportar como testu ya HTML</b>.</string>
|
||||
<string name="importer_help_authy">Forni una copia del ficheru <b>com.authy.storage.tokens.authenticator.xml</b> que s\'alluga na direición «/data/data/com.authy.authy/shared_prefs/», dientro del direutoriu del almacenamientu internu d\'Authy.</string>
|
||||
<string name="importer_help_andotp">Forni un ficheru d\'esportación/copia de seguranza d\'AndOTP.</string>
|
||||
<string name="importer_help_bitwarden">Forni un ficheru d\'esportación/copia de seguranza de Bitwarden. Los ficheros cifraos nun son compatibles.</string>
|
||||
<string name="importer_help_battle_net_authenticator">Forni una copia del ficheru <b>/data/data/com.blizzard.messenger/shared_prefs/com.blizzard.messenger.authenticator_preferences.xml</b>, llocalizáu nel direutoriu del almacenamientu internu de Battle.net Authenticator.</string>
|
||||
<string name="importer_help_duo">Forni una copia del ficheru <b>accounts.json</b> que s\'alluga na direición «/data/data/com.duosecurity.duomobile/files/duokit/», dientro del direutoriu del almacenamientu internu de DUO.</string>
|
||||
<string name="importer_help_freeotp">FreeOTP 2: forni una copia de seguranza.\nFreeOTP 1.x: forni una copia del ficheru <b>/data/data/org.fedorahosted.freeotp/shared_prefs/tokens.xml</b>, llocalizáu nel direutoriu del almacenamientu internu de FreeOTP.</string>
|
||||
<string name="importer_help_freeotp_plus">Forni un ficheru d\'esportación de FreeOTP+.</string>
|
||||
<string name="importer_warning_title_freeotp2">Compatibilidá con FreeOTP 2</string>
|
||||
<string name="importer_help_google_authenticator"><b>Namás les bases de datos de la versión 5.10 ya les inferiores de Google Authenticator son compatibles.</b>\n\nForni una copia de <b>databases</b> que s\'alluga na direición «/data/data/com.google.android.apps.authenticator2/databases/», dientro del direutoriu del almacenamientu internu de Google Authenticator.</string>
|
||||
<string name="importer_help_microsoft_authenticator">Forni una copia del ficheru <b>PhoneFactor</b> que s\'alluga na direición «/data/data/com.azure.authenticator/databases/», dientro del direutoriu del almacenamientu internu de Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Forni un ficheru en testu planu con una URI de Google Authenticator en cada llinia.</string>
|
||||
|
@ -402,6 +461,15 @@
|
|||
<string name="pref_grouping_size_two">Grupos de 2</string>
|
||||
<string name="pref_grouping_size_three">Grupos de 3</string>
|
||||
<string name="pref_grouping_size_four">Grupos de 4</string>
|
||||
<string name="pref_copy_behavior_never">Enxamás</string>
|
||||
<string name="pref_copy_behavior_single_tap">Un toque</string>
|
||||
<string name="pref_copy_behavior_double_tap">Dos toques</string>
|
||||
<string name="pref_account_name_position_end">Al llau l\'emisor</string>
|
||||
<string name="pref_account_name_position_below">Embaxo l\'emisor</string>
|
||||
<plurals name="time_elapsed_minutes" tools:ignore="UnusedResources">
|
||||
<item quantity="one">fai %d minutu</item>
|
||||
<item quantity="other">fai %d minutos</item>
|
||||
</plurals>
|
||||
<plurals name="dropdown_checkboxes_default_count">
|
||||
<item quantity="one">Seleicionóse %d elementu</item>
|
||||
<item quantity="other">Seleicionáronse %d elementos</item>
|
||||
|
|
5
app/src/main/res/values-bg-rBG-v29/strings.xml
Normal file
5
app/src/main/res/values-bg-rBG-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Системна</string>
|
||||
<string name="system_amoled_theme_title">Системна (AMOLED)</string>
|
||||
</resources>
|
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Изберете метод за удостоверяване</string>
|
||||
<string name="encrypting_vault">Шифроване на трезора</string>
|
||||
<string name="exporting_vault">Изнасяне на трезора</string>
|
||||
<string name="optimizing_icon">Оптимизиране на пиктограма</string>
|
||||
<string name="optimizing_icon_multiple">Оптимизиране на пиктограми %1$d/%2$d</string>
|
||||
<string name="reading_file">Прочитане на файла</string>
|
||||
<string name="requesting_root_access">Достъп до правата на суперпотребителя</string>
|
||||
<string name="analyzing_qr">Анализиране на QR кода</string>
|
||||
|
@ -361,8 +363,25 @@
|
|||
<string name="preference_reset_usage_count_dialog">Сигурни ли сте, че желаете броя на използванията на всеки запис в хранилището да бъде нулиран?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Бележка</string>
|
||||
<string name="clear">Изчистване</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Дублирано</string>
|
||||
<string name="dialog_duplicate_entry_message">Записът има същото име и издател като вече съществуващи записи. Как да продължим?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Презаписване на съществуващите записи</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Заменя съществуващите записи с новия. Действието е необратимо</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Добавяне на наставка</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Добавяне на наставка към името на записа. Новото име ще бъде: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Отказ от запазването</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Дава възможност за повторна промяна преди запазване</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Желаете ли да бъде премахнат %d елемент с име: \n\n%s - %s</item>
|
||||
<item quantity="other">Желаете ли да бъдат премахнати %d елемента с име: \n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Потвърждаване на премахване</string>
|
||||
<string name="pref_haptic_feedback_summary">Кара устройството да вибрира при презареждане на кодовете</string>
|
||||
<string name="pref_haptic_feedback_title">Тактилна обратна връзка</string>
|
||||
<string name="pref_highlight_entry_title">Осветяване на запис при докосване</string>
|
||||
<string name="pref_highlight_entry_summary">Прави записите в списъка по-лесни за различаване един от друг, като при докосване временно ги осветява</string>
|
||||
<string name="pref_groups_multiselect_title">Групи за множествен избор</string>
|
||||
<string name="pref_groups_multiselect_summary">Дава възможност за избиране на няколко групи едновременно</string>
|
||||
<string name="pref_minimize_on_copy_title">Свиване при копиране</string>
|
||||
<string name="pref_minimize_on_copy_summary">Приложението се свива при копиране на код за достъп</string>
|
||||
<string name="pref_copy_behavior_title">Копиране на кодове за защита в междинната памет</string>
|
||||
|
@ -466,6 +485,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Грешка при копиране на адреса</string>
|
||||
<string name="uri_copied_to_clipboard">Адресът е копиран</string>
|
||||
<string name="transfer_entry_description">Сканирайте QR кода с приложението за удостоверяване, в което искате да прехвърлите този запис</string>
|
||||
<string name="transfer_entry_brightness">Докоснете QR, за да превключите пълна яркост при цял екран</string>
|
||||
<string name="google_auth_compatible_transfer_description">Сканирайте тези кодове в Aegis или Google Authenticator.\n\nПоради ограничения в приложението на Google Authenticator са включени само кодовете, които използват SHA1 и извеждат 6 цифри</string>
|
||||
<string name="password_strength_very_weak">Много слаба</string>
|
||||
<string name="password_strength_weak">Слаба</string>
|
||||
|
@ -499,7 +519,6 @@
|
|||
<string name="importer_help_2fas">Изберете файл с резервно копие на 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Изберете изнесен файл или резервно копие на Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Изберете файл с резервно копие на Authenticator Plus, получен от <b>Настройки → Резервни копия и възстановяване → Изнасяне като текст и HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Изберете файл с резервно копие на Authenticator Pro, получен от <b>Настройки → Резервно копие → Резервно копие в шифрован файл (препотъчително)</b>.</string>
|
||||
<string name="importer_help_authy">Изберете копие на файла <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, който се намира в папката с данни на Authy.</string>
|
||||
<string name="importer_help_andotp">Изберете изнесен файл или резервно копие на andOTP.</string>
|
||||
<string name="importer_help_bitwarden">Изберете изнесен файл или резервно копие на Bitwarden. Шифровани файлове не се поддържат.</string>
|
||||
|
@ -514,6 +533,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Изберете копие на файла <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, който се намира в папката с данни на Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Изберете чист текстов файл с Google Authenticator URI, по един на ред.</string>
|
||||
<string name="importer_help_steam"><b>Поддържат се файлове на Steam v3.0 и по-нови издания.</b>\n\nИзберете копие на файла <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>, който се намира в папката с данни на Steam.</string>
|
||||
<string name="importer_help_stratum">Изберете файл с резервно копие на Stratum, получен от <b>Настройки → Резервно копие → Резервно копие в шифрован файл (препотъчително)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Изберете изнесен файл от TOTP Authenticator.</string>
|
||||
<string name="importer_help_winauth">Изберете изнесен файл от WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Задаване на икони</string>
|
||||
|
|
5
app/src/main/res/values-ca-rES-v29/strings.xml
Normal file
5
app/src/main/res/values-ca-rES-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Predeterminat del sistema</string>
|
||||
<string name="system_amoled_theme_title">Predeterminat del sistema (AMOLED)</string>
|
||||
</resources>
|
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Si us plau, tria un mètode d\'autenticació</string>
|
||||
<string name="encrypting_vault">Xifrant la caixa forta</string>
|
||||
<string name="exporting_vault">Exporta la caixa forta</string>
|
||||
<string name="optimizing_icon">Optimitzant icona</string>
|
||||
<string name="optimizing_icon_multiple">Optimitzant icones %1$d/%2$d</string>
|
||||
<string name="reading_file">S\'està llegint el fitxer</string>
|
||||
<string name="requesting_root_access">Demanant accés root</string>
|
||||
<string name="analyzing_qr">Anàlisi del codi QR</string>
|
||||
|
@ -355,14 +357,31 @@
|
|||
<string name="group">Grup</string>
|
||||
<string name="group_name_hint">Nom del grup</string>
|
||||
<string name="preference_manage_groups">Edita els grups</string>
|
||||
<string name="preference_manage_groups_summary">Gestiona i elimina els grups aqui</string>
|
||||
<string name="preference_manage_groups_summary">Gestiona i elimina els grups aquí</string>
|
||||
<string name="preference_reset_usage_count">Reiniciar comptador d\'usos</string>
|
||||
<string name="preference_reset_usage_count_summary">Reinicia el comptador d\'usos de totes les entrades</string>
|
||||
<string name="preference_reset_usage_count_dialog">Segur que vols reiniciar el comptador d\'us de cada entrada a 0?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Nota</string>
|
||||
<string name="clear">Neteja</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Entrada duplicada</string>
|
||||
<string name="dialog_duplicate_entry_message">Aquesta entrada té el mateix nom i emissor que una altra entrada. Com vols continuar?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Sobreescriure l\'entrada/des existents</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Reemplaçar l\'entrada/des existents per la nova. Aquesta acció no es pot desfer</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Afegir un sufix</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Afegir un sufix al nom d\'aquesta nova entrada. El nou nom serà: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Cancel·la el guardat</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Et permet editar l\'entrada abans de tornar a intentar el guardat</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Estàs segur de voler esborrar %d entrada amb aquest nom:\n\n%s - %s</item>
|
||||
<item quantity="other">Estàs segur de voler esborrar %d entrades amb aquests noms:\n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Confirma la supressió</string>
|
||||
<string name="pref_haptic_feedback_summary">Fes que el dispositiu vibri quan s\'actualitzin els codis</string>
|
||||
<string name="pref_haptic_feedback_title">Resposta hàptica</string>
|
||||
<string name="pref_highlight_entry_title">Il·luminar les fitxes al tocar</string>
|
||||
<string name="pref_highlight_entry_summary">Fes les fitxes més fàcils de distingir de la resta il·luminant-les temporalment quan les toquis</string>
|
||||
<string name="pref_groups_multiselect_title">Selecció múltiple de grups</string>
|
||||
<string name="pref_groups_multiselect_summary">Permet la selecció de múltiples grups al mateix temps</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimitzar al copiar</string>
|
||||
<string name="pref_minimize_on_copy_summary">Minimitzar l\'aplicació després de copiar una fitxa</string>
|
||||
<string name="pref_copy_behavior_title">Copia les fitxes al porta-retalls</string>
|
||||
|
@ -464,6 +483,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">No s\'ha pogut copiar la URI</string>
|
||||
<string name="uri_copied_to_clipboard">URI copiada al porta-retalls</string>
|
||||
<string name="transfer_entry_description">Escaneja aquest codi QR amb l\'aplicació d\'autenticació a la que vols transferir aquesta entrada</string>
|
||||
<string name="transfer_entry_brightness">Toca el codi QR per canviar a màxima brillantor</string>
|
||||
<string name="google_auth_compatible_transfer_description">Escanegeu aquests codis QR amb Aegis o Google Authenticator.\n\n A causa de les limitacions de l\'aplicació Google Authenticator, només s\'inclouen tokens TOTP & HOTP que utilitzen SHA1 i produeixen codis de 6 dígits</string>
|
||||
<string name="password_strength_very_weak">Molt feble</string>
|
||||
<string name="password_strength_weak">Feble</string>
|
||||
|
@ -497,7 +517,6 @@
|
|||
<string name="importer_help_2fas">Subministra un fitxer exportat del 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Subministra un fitxer exportat del Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Subministra un fitxer exportat del Authenticator Plus, obtingut amb <b>Settings -> Backup & Restore -> Export as Text and HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Proveeix un fitxer exportat d\'Authenticat Pro, aconseguit a <b>Settings > Back up > Back up to encrypted file (recommended)</b>.</string>
|
||||
<string name="importer_help_authy">Subministra una còpia de <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, que està a l\'emmagatzematge intern del teu dispositiu, al directori del Authy.</string>
|
||||
<string name="importer_help_andotp">Subministra un fitxer exportat del andOTP.</string>
|
||||
<string name="importer_help_bitwarden">Subministreu un fitxer d\'exportació/còpia de seguretat de Bitwarden. Els fitxers xifrats no són compatibles.</string>
|
||||
|
@ -512,6 +531,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Subministra una còpia de <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, que està a l\'emmagatzematge intern del teu dispositiu, al directori del Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Subministra un fitxer de text pla amb una URI de Google Authenticator a cada línia.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 i posteriors no són compatibles</b>. Proporcioneu una còpia de <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>, que es troba al directori d\'emmagatzematge intern de Steam.</string>
|
||||
<string name="importer_help_stratum">Proveeix un fitxer exportat de Stratum, aconseguit a <b>Settings > Back up > Back up to encrypted file (recommended)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Subministra un fitxer exportat del TOTP Authenticator.</string>
|
||||
<string name="importer_help_winauth">Subministra un fitxer exportat del WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Assignar icones</string>
|
||||
|
|
5
app/src/main/res/values-cs-rCZ-v29/strings.xml
Normal file
5
app/src/main/res/values-cs-rCZ-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Podle systému</string>
|
||||
<string name="system_amoled_theme_title">Podle systému (AMOLED)</string>
|
||||
</resources>
|
|
@ -233,6 +233,8 @@
|
|||
<string name="snackbar_authentication_method">Zvolte prosím způsob ověření</string>
|
||||
<string name="encrypting_vault">Šifrování trezoru</string>
|
||||
<string name="exporting_vault">Exportování trezoru</string>
|
||||
<string name="optimizing_icon">Optimalizace ikony</string>
|
||||
<string name="optimizing_icon_multiple">Optimalizace ikon %1$d/%2$d</string>
|
||||
<string name="reading_file">Čtení souboru</string>
|
||||
<string name="requesting_root_access">Žádání o přístup root</string>
|
||||
<string name="analyzing_qr">Analyzování QR kódu</string>
|
||||
|
@ -379,8 +381,27 @@
|
|||
<string name="preference_reset_usage_count_dialog">Opravdu chcete nastavit počet použití všech položek na 0?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Poznámka</string>
|
||||
<string name="clear">Vymazat</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Duplicitní položka</string>
|
||||
<string name="dialog_duplicate_entry_message">Tato položka má stejný název a poskytovatele, jako jedna nebo více existujících. Jak chcete pokračovat?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Přepsat existující položky</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Nahradit existující položku nebo položky novou. Tato akce je nevratná</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Přidat příponu</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Přidat příponu k názvu této položky. Nový název bude: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Zrušit uložení</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Umožňuje upravit položku před pokusem o její opětovné uložení</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Opravdu chcete odstranit %d položku s následujícím názvem:\n\n%s - %s</item>
|
||||
<item quantity="few">Opravdu chcete odstranit %d položky s následujícím názvem:\n\n%s - %s</item>
|
||||
<item quantity="many">Opravdu chcete odstranit %d položek s následujícím názvem:\n\n%s - %s</item>
|
||||
<item quantity="other">Opravdu chcete odstranit %d položek s následujícím názvem:\n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Potvrdit odstranění</string>
|
||||
<string name="pref_haptic_feedback_summary">Vibrovat při změně kódů</string>
|
||||
<string name="pref_haptic_feedback_title">Haptická odezva</string>
|
||||
<string name="pref_highlight_entry_title">Zvýraznit tokeny po klepnutí</string>
|
||||
<string name="pref_highlight_entry_summary">Usnadnit vzájemné rozlišení tokenů dočasným zvýrazněním po kleputí</string>
|
||||
<string name="pref_groups_multiselect_title">Vícenásobný výběr skupin</string>
|
||||
<string name="pref_groups_multiselect_summary">Povolit současný výběr více skupin</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimalizovat při kopírování</string>
|
||||
<string name="pref_minimize_on_copy_summary">Minimalizovat aplikaci po zkopírování tokenu</string>
|
||||
<string name="pref_copy_behavior_title">Zkopírovat tokeny do schránky</string>
|
||||
|
@ -490,6 +511,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Nepodařilo se zkopírovat URI do schránky</string>
|
||||
<string name="uri_copied_to_clipboard">URI zkopírována do schránky</string>
|
||||
<string name="transfer_entry_description">Naskenujte tento QR kód ověřovací aplikací, do které chcete položku přenést</string>
|
||||
<string name="transfer_entry_brightness">Klepnutím na QR kód přepnete na jas celé obrazovky</string>
|
||||
<string name="google_auth_compatible_transfer_description">Naskenujte tyto QR kódy s aplikací Aegis nebo Google Authenticator.\n\nKvůli limitacím aplikace Google Authenticator jsou zahrnuty pouze 6-místné tokeny TOTP a HOTP využívající SHA1</string>
|
||||
<string name="password_strength_very_weak">Velmi slabé</string>
|
||||
<string name="password_strength_weak">Slabé</string>
|
||||
|
@ -525,7 +547,6 @@
|
|||
<string name="importer_help_2fas">Dodejte záložní soubor 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Dodejte soubor exportu/zálohy Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Dodejte exportovaný soubor Authenticator Plus získaný přes <b>Nastavení -> Záloha a obnovení -> Exportovat jako text a HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Dodejte exportovaný soubor Authenticator Pro získaný přes <b>Nastavení -> Záloha -> Exportovat do šifrovaného souboru (doporučeno)</b>.</string>
|
||||
<string name="importer_help_authy">Dodejte kopii <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, která se nachází v interním úložišti Authy.</string>
|
||||
<string name="importer_help_andotp">Dodejte soubor exportu/zálohy andOTP.</string>
|
||||
<string name="importer_help_bitwarden">Vyberte soubor exportu/zálohy Bitwardenu. Šifrované soubory nejsou podporovány.</string>
|
||||
|
@ -540,6 +561,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Dodejte kopii <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, která se nachází v interním úložišti Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Dodejte prostý textový soubor Google Authenticator URI na každý řádek.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 a novější nejsou podporovány</b>. Dodejte kopii souboru <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b> umístěného v interním úložném adresáři aplikace Steam.</string>
|
||||
<string name="importer_help_stratum">Dodejte exportovaný soubor Stratum získaný přes <b>Nastavení -> Záloha -> Exportovat do šifrovaného souboru (doporučeno)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Dodejte soubor exportu TOTP.</string>
|
||||
<string name="importer_help_winauth">Dodejte soubor exportu WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Přiřadit ikony</string>
|
||||
|
|
5
app/src/main/res/values-da-rDK-v29/strings.xml
Normal file
5
app/src/main/res/values-da-rDK-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Systemstandard</string>
|
||||
<string name="system_amoled_theme_title">Systemstandard (AMOLED)</string>
|
||||
</resources>
|
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Vælg bekræftelsesmetode</string>
|
||||
<string name="encrypting_vault">Krypterer Boksen</string>
|
||||
<string name="exporting_vault">Eksporterer Boksen</string>
|
||||
<string name="optimizing_icon">Optimerer ikon</string>
|
||||
<string name="optimizing_icon_multiple">Optimerer ikoner %1$d/%2$d</string>
|
||||
<string name="reading_file">Læser fil</string>
|
||||
<string name="requesting_root_access">Anmoder om root-adgang</string>
|
||||
<string name="analyzing_qr">Analyserer QR-kode</string>
|
||||
|
@ -361,8 +363,25 @@
|
|||
<string name="preference_reset_usage_count_dialog">Sikker på, at alle brugstællingsposter i din Boks skal nulstilles?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Notat</string>
|
||||
<string name="clear">Ryd</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Dubletpost</string>
|
||||
<string name="dialog_duplicate_entry_message">Denne post har samme navn og udsteder som mindst én eksisterende post. Hvordan skal der fortsættes?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Overskriv eksisterende post(er)</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Erstat eksisterende post(er) med den nye. Denne handling kan ikke fortrydes</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Tilføj endelse</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Føj en endelse til navnet på denne nye post. Det nye navn vil være: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Afbryd gem</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Muliggør at redigere posten inden den igen forsøges gemt</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Sikker på, at der skal slettes %d post med flg. navn:\n\n%s - %s</item>
|
||||
<item quantity="other">Sikker på, at der skal slettes %d poster med flg. navn:\n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Bekræft sletning</string>
|
||||
<string name="pref_haptic_feedback_summary">Få enheden til at vibrere, når koder opdateres</string>
|
||||
<string name="pref_haptic_feedback_title">Haptisk feedback</string>
|
||||
<string name="pref_highlight_entry_title">Fremhæv tokener ved tryk</string>
|
||||
<string name="pref_highlight_entry_summary">Gør tokener lettere at skelne fra hinanden ved midlertidigt at fremhæve dem, når der trykkes på dem</string>
|
||||
<string name="pref_groups_multiselect_title">Multivalg af grupper</string>
|
||||
<string name="pref_groups_multiselect_summary">Muliggør valg af flere grupper samtidig</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimér under kopiering</string>
|
||||
<string name="pref_minimize_on_copy_summary">Minimér appen efter kopiering af et token</string>
|
||||
<string name="pref_copy_behavior_title">Kopiér tokener til udklipsholder</string>
|
||||
|
@ -466,6 +485,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Kunne ikke kopiere URI til udklipsholder</string>
|
||||
<string name="uri_copied_to_clipboard">URI kopieret til udklipsholder</string>
|
||||
<string name="transfer_entry_description">Scan denne QR-kode med den autentificerings-app, du gerne vil overføre denne post til</string>
|
||||
<string name="transfer_entry_brightness">Tryk på QR-koden for at skifte fuldskærmslysstyrke</string>
|
||||
<string name="google_auth_compatible_transfer_description">Skan disse QR-koder med Aegis eller Google Authenticator.\n\nGrundet begrænsninger i Google Authenticator-appen inkluderes kun TOTP- og HOTP-tokener, som bruger SHA1 og genererer 6-cifrede koder</string>
|
||||
<string name="password_strength_very_weak">Meget svag</string>
|
||||
<string name="password_strength_weak">Svag</string>
|
||||
|
@ -499,7 +519,6 @@
|
|||
<string name="importer_help_2fas">Stil en 2FAS-godkendelse sikkerhedskopifil til rådighed.</string>
|
||||
<string name="importer_help_aegis">Levér en Aegis eksport/backup fil.</string>
|
||||
<string name="importer_help_authenticator_plus">Levér en Authenticator Plus-eksportfil opnået gennem <b>Indstillinger -> Sikkerhedskopi & Gendan -> Eksport som tekst og HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Benyt en Authenticator Pro-eksportfil genereret via <b>Indstillinger -> Sikkerhedskopiering -> Sikkerhedskopiering til krypteret fil (anbefalet)</b>.</string>
|
||||
<string name="importer_help_authy">Levér en kopi af <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, der er placeret i den interne lagermappe i Authy.</string>
|
||||
<string name="importer_help_andotp">Levér en andOTP eksport/backup fil.</string>
|
||||
<string name="importer_help_bitwarden">Vælg en Bitwarden-eksport-/sikkerhedskopifil. Krypterede filer understøttes ikke.</string>
|
||||
|
@ -514,6 +533,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Levér en kopi af <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, der er placeret i den interne lagermappe i Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Levér en almindelig tekstfil med en Google Authenticator URI på hver linje.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 og nyere understøttes ikke</b>. Levér en kopi af <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b> fra den interne lagermappe i Steam.</string>
|
||||
<string name="importer_help_stratum">Benyt en Stratum-eksportfil genereret via <b>Indstillinger -> Sikkerhedskopiering -> Sikkerhedskopiering til krypteret fil (anbefalet)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Levér en TOTP Authenticator eksportfil.</string>
|
||||
<string name="importer_help_winauth">Levér en WinAuth eksportfil.</string>
|
||||
<string name="import_assign_icons_dialog_title">Tildel ikoner</string>
|
||||
|
|
5
app/src/main/res/values-de-rDE-v29/strings.xml
Normal file
5
app/src/main/res/values-de-rDE-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Systemvorgabe</string>
|
||||
<string name="system_amoled_theme_title">Systemvorgabe (AMOLED)</string>
|
||||
</resources>
|
|
@ -37,7 +37,7 @@
|
|||
<string name="pref_section_icon_packs_summary">Symbolpakete verwalten und importieren.</string>
|
||||
<string name="pref_select_theme_title">Design</string>
|
||||
<string name="pref_dynamic_colors_title">Dynamische Farben</string>
|
||||
<string name="pref_dynamic_colors_summary">Overlay basierend auf den Farben deines Android-Designs anwenden</string>
|
||||
<string name="pref_dynamic_colors_summary">Design basierend auf den Systemfarben anpassen</string>
|
||||
<string name="pref_view_mode_title">Darstellungsstil</string>
|
||||
<string name="pref_lang_title">Sprache</string>
|
||||
<string name="pref_show_icons_title">Symbole anzeigen</string>
|
||||
|
@ -104,7 +104,7 @@
|
|||
<string name="pref_auto_lock_summary">Wenn %s</string>
|
||||
<string name="pref_auto_lock_summary_disabled">Deaktiviert</string>
|
||||
<string name="pref_auto_lock_prompt">Aegis automatisch sperren, wenn</string>
|
||||
<string name="pref_auto_lock_type_back_button">Die Zurück-Taste gedrückt wird</string>
|
||||
<string name="pref_auto_lock_type_back_button">Die \"Zurück-Taste\" gedrückt wird</string>
|
||||
<string name="pref_auto_lock_type_minimize">Die App minimiert wird</string>
|
||||
<string name="pref_auto_lock_type_device_lock">Das Gerät gesperrt wird</string>
|
||||
<string name="pref_backup_password_category">Sicherung und Exportdatei</string>
|
||||
|
@ -128,7 +128,7 @@
|
|||
<string name="no_events_description">Es wurden keine wichtigen Ereignisse innerhalb der App gemeldet</string>
|
||||
<string name="event_title_vault_unlocked">Datenbank entsperrt</string>
|
||||
<string name="event_description_vault_unlocked">Die Datenbank wurde erfolgreich entsperrt</string>
|
||||
<string name="event_title_backup_created">Sicherungdsdatei erstellt</string>
|
||||
<string name="event_title_backup_created">Sicherungsdatei erstellt</string>
|
||||
<string name="event_description_backup_created">Eine Sicherungsdatei wurde erfolgreich erstellt</string>
|
||||
<string name="event_title_android_backup_created">Sicherungsdatei von Android erstellt</string>
|
||||
<string name="event_description_android_backup_created">Eine Sicherungsdatei wurde erfolgreich von Android erstellt</string>
|
||||
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Bitte wähle eine Authentifizierungsmethode aus</string>
|
||||
<string name="encrypting_vault">Verschlüsselung der Datenbank</string>
|
||||
<string name="exporting_vault">Exportieren der Datenbank</string>
|
||||
<string name="optimizing_icon">Symbol wird optimiert</string>
|
||||
<string name="optimizing_icon_multiple">Symbol %1$d/%2$d wird optimiert</string>
|
||||
<string name="reading_file">Datei wird gelesen</string>
|
||||
<string name="requesting_root_access">Root-Zugriff wird angefordert</string>
|
||||
<string name="analyzing_qr">QR-Code wird analysiert</string>
|
||||
|
@ -361,8 +363,25 @@
|
|||
<string name="preference_reset_usage_count_dialog">Den Verwendungszähler aller Einträge in der Datenbank auf 0 setzen?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Notiz</string>
|
||||
<string name="clear">Löschen</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Eintrag bereits vorhanden</string>
|
||||
<string name="dialog_duplicate_entry_message">Dieser Eintrag hat den gleichen Namen und Herausgeber wie ein oder mehrere bestehende Einträge. Wie möchtest du fortfahren?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Vorhandene(n) Eintrag/Einträge überschreiben</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Vorhandene(n) Eintrag/Einträge durch den neuen ersetzen. Die Aktion kann nicht rückgängig gemacht werden</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Suffix hinzufügen</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Dem Namen des neuen Eintrags ein Suffix hinzufügen. Der neue Name lautet: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Nicht speichern</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Ermöglicht das Bearbeiten des Eintrags, um ihn anschließend erneut zu speichern</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Möchtest du wirklich %d Eintrag mit folgendem Namen löschen?\n\n%s – %s</item>
|
||||
<item quantity="other">Möchtest du wirklich %d Einträge mit folgendem Namen löschen?\n\n%s – %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Löschen bestätigen</string>
|
||||
<string name="pref_haptic_feedback_summary">Gerät vibrieren lassen, wenn sich Codes aktualisieren</string>
|
||||
<string name="pref_haptic_feedback_title">Haptisches Feedback</string>
|
||||
<string name="pref_highlight_entry_title">Token beim Antippen hervorheben</string>
|
||||
<string name="pref_highlight_entry_summary">Token beim Antippen hervorheben, um sie leichter voneinander unterscheiden zu können</string>
|
||||
<string name="pref_groups_multiselect_title">Mehrere Gruppen auswählen</string>
|
||||
<string name="pref_groups_multiselect_summary">Das Auswählen mehrerer Gruppen auf einmal ermöglichen</string>
|
||||
<string name="pref_minimize_on_copy_title">Beim Kopieren minimieren</string>
|
||||
<string name="pref_minimize_on_copy_summary">App nach dem Kopieren eines Tokens minimieren</string>
|
||||
<string name="pref_copy_behavior_title">Token in die Zwischenablage kopieren</string>
|
||||
|
@ -466,6 +485,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">URI konnte nicht in die Zwischenablage kopiert werden</string>
|
||||
<string name="uri_copied_to_clipboard">URI in die Zwischenablage kopiert</string>
|
||||
<string name="transfer_entry_description">Scanne diesen QR-Code mit der Authentifizierungs-App, zu der du diesen Eintrag übertragen möchtest</string>
|
||||
<string name="transfer_entry_brightness">QR-Code antippen, um die Helligkeit zu ändern</string>
|
||||
<string name="google_auth_compatible_transfer_description">Scanne diese QR-Codes mit Aegis oder Google Authenticator.\n\nAufgrund der Einschränkungen der Google Authenticator-App sind nur TOTP- und HOTP-Token enthalten, die SHA1 verwenden und 6-stellige Codes erzeugen</string>
|
||||
<string name="password_strength_very_weak">Sehr schwach</string>
|
||||
<string name="password_strength_weak">Schwach</string>
|
||||
|
@ -499,7 +519,6 @@
|
|||
<string name="importer_help_2fas">Gib eine 2FAS-Authenticator-Sicherungsdatei an.</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 -> Sicherung & Rücksicherung -> Exportieren als Text und HTML Format</b> erhältst.</string>
|
||||
<string name="importer_help_authenticator_pro">Gib eine Authenticator-Pro-Exportdatei an, die du über <b>Einstellungen -> Sicherung -> Als verschlüsselte Datei sichern (empfohlen)</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_bitwarden">Gib eine Bitwarden-Export-/Sicherungsdatei an. Verschlüsselte Dateien werden nicht unterstützt.</string>
|
||||
|
@ -514,6 +533,7 @@
|
|||
<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"><b>Steam v3.0 und neuer wird nicht unterstützt</b>. 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_stratum">Gib eine Stratum-Exportdatei an, die du über <b>Einstellungen -> Sicherung -> Als verschlüsselte Datei sichern (empfohlen)</b> erhältst.</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="import_assign_icons_dialog_title">Symbole zuweisen</string>
|
||||
|
|
5
app/src/main/res/values-el-rGR-v29/strings.xml
Normal file
5
app/src/main/res/values-el-rGR-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Προεπιλογή συστήματος</string>
|
||||
<string name="system_amoled_theme_title">Προεπιλογή συστήματος (AMOLED)</string>
|
||||
</resources>
|
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Παρακαλώ επιλέξτε μέθοδο ελέγχου ταυτότητας</string>
|
||||
<string name="encrypting_vault">Κρυπτογράφηση κρύπτης</string>
|
||||
<string name="exporting_vault">Εξαγωγή της κρύπτης</string>
|
||||
<string name="optimizing_icon">Βελτιστοποίηση εικονιδίου</string>
|
||||
<string name="optimizing_icon_multiple">Βελτιστοποίηση εικονιδίων %1$d/%2$d</string>
|
||||
<string name="reading_file">Ανάγνωση αρχείου</string>
|
||||
<string name="requesting_root_access">Αίτηση πρόσβασης root</string>
|
||||
<string name="analyzing_qr">Ανάλυση κωδικού QR</string>
|
||||
|
@ -361,8 +363,25 @@
|
|||
<string name="preference_reset_usage_count_dialog">Είστε βέβαιοι ότι θέλετε να ορίσετε τον αριθμό χρήσης κάθε εισόδου στην κρύπτη σας στο 0;</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Σημείωση</string>
|
||||
<string name="clear">Εκκαθάριση</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Διπλότυπη καταχώρηση</string>
|
||||
<string name="dialog_duplicate_entry_message">Αυτή η καταχώρηση έχει το ίδιο όνομα και τον ίδιο εκδότη με μία ή περισσότερες υπάρχουσες καταχωρήσεις. Πώς θα θέλατε να προχωρήσετε;</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Αντικατάσταση υπάρχουσας/ων καταχώρησης/ων</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Αντικατάσταση της υπάρχουσας καταχώρησης ή καταχωρήσεων με τη νέα. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Προσθήκη επιθήματος</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Προσθέστε ένα επίθημα στο όνομα αυτής της νέας καταχώρησης. Το νέο όνομα θα είναι: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Ακύρωση αποθήκευσης</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Σας επιτρέπει να επεξεργαστείτε την καταχώρηση πριν επιχειρήσετε να την αποθηκεύσετε ξανά</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Είστε βέβαιοι ότι θέλετε να διαγράψετε την καταχώρηση %d με το ακόλουθο όνομα:\n\n%s - %s</item>
|
||||
<item quantity="other">Είστε βέβαιοι ότι θέλετε να διαγράψετε καταχωρήσεις %d με το ακόλουθο όνομα:\n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Επιβεβαίωση διαγραφής</string>
|
||||
<string name="pref_haptic_feedback_summary">Κάντε τη συσκευή σας να δονείται όταν ανανεώνονται οι κωδικοί</string>
|
||||
<string name="pref_haptic_feedback_title">Απτική ανάδραση</string>
|
||||
<string name="pref_highlight_entry_title">Επισήμανση αναγνωριστικών όταν πατηθεί</string>
|
||||
<string name="pref_highlight_entry_summary">Κάνετε τα αναγνωριστικά να ξεχωρίζουν ευκολότερα το ένα από το άλλο, επισημαίνοντας τα προσωρινά όταν τα πατήσετε</string>
|
||||
<string name="pref_groups_multiselect_title">Πολλαπλή επιλογή ομάδων</string>
|
||||
<string name="pref_groups_multiselect_summary">Να επιτρέπεται η επιλογή πολλαπλών ομάδων ταυτόχρονα</string>
|
||||
<string name="pref_minimize_on_copy_title">Ελαχιστοποίηση κατά την αντιγραφή</string>
|
||||
<string name="pref_minimize_on_copy_summary">Ελαχιστοποίηση της εφαρμογής μετά την αντιγραφή ενός αναγνωριστικού</string>
|
||||
<string name="pref_copy_behavior_title">Αντιγραφή αναγνωριστικών στο πρόχειρο</string>
|
||||
|
@ -465,6 +484,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Αδυναμία αντιγραφής του URI στο πρόχειρο</string>
|
||||
<string name="uri_copied_to_clipboard">Το URI αντιγράφηκε στο πρόχειρο</string>
|
||||
<string name="transfer_entry_description">Σαρώστε αυτόν τον κωδικό QR με την εφαρμογή ελέγχου ταυτότητας στην οποία θέλετε να μεταφέρετε αυτήν την καταχώριση</string>
|
||||
<string name="transfer_entry_brightness">Πατήστε τον κωδικό QR για εναλλαγή φωτεινότητας πλήρους οθόνης</string>
|
||||
<string name="google_auth_compatible_transfer_description">Σαρώστε αυτούς τους κωδικούς QR με το Aegis ή το Google Authenticator.\n\nΛόγω περιορισμών της εφαρμογής Google Authenticator, περιλαμβάνονται μόνο αναγνωριστικά TOTP & HOTP που χρησιμοποιούν SHA1 και παράγουν 6ψήφιους κωδικούς</string>
|
||||
<string name="password_strength_very_weak">Πολύ αδύναμος</string>
|
||||
<string name="password_strength_weak">Αδύναμος</string>
|
||||
|
@ -498,7 +518,6 @@
|
|||
<string name="importer_help_2fas">Παρέχετε ένα αντίγραφο ασφαλείας 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Παρέχετε ένα αρχείο εξαγωγής/αντιγράφων ασφαλείας Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Παρέχετε ένα αρχείο εξαγωγής Authenticator Plus που αποκτήθηκε μέσω των <b> Ρυθμίσεων - > Αντιγράφων ασφαλείας & Επαναφορά - > Εξαγωγή ως Κείμενο και HTML </b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Παρέχεται ένα αρχείο εξαγωγής Authenticator Pro που λαμβάνεται μέσω <b>Ρυθμίσεις -> Δημιουργία αντιγράφων ασφαλείας -> Δημιουργία σε κρυπτογραφημένο αρχείο (συνιστάται)</b>.</string>
|
||||
<string name="importer_help_authy">Παρέχετε ένα αντίγραφο του <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, που βρίσκεται στον κατάλογο εσωτερικής αποθήκευσης του Authy.</string>
|
||||
<string name="importer_help_andotp">Παρέχετε ένα αρχείο εξαγωγής/αντιγράφου ασφαλείας andOTP.</string>
|
||||
<string name="importer_help_bitwarden">Παρέχετε ένα αρχείο εξαγωγής/αντιγράφων ασφαλείας Bitwarden. Τα κρυπτογραφημένα αρχεία δεν υποστηρίζονται.</string>
|
||||
|
@ -513,6 +532,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Παρέχεi ένα αντίγραφο του <b> /data/data/com.azure.authenticator/databases/PhoneFactor </b>, που βρίσκεται στον κατάλογο εσωτερικής αποθήκευσης του Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Παρέχεi ένα αρχείο απλού κειμένου με ένα URI Επαληθευτή Google σε κάθε γραμμή.</string>
|
||||
<string name="importer_help_steam"><b>Το Steam v3.0 και νεότερα δεν υποστηρίζονται</b>. Παρέχετε αντίγραφο του <b>/data/data/com.valvesoftware. ndroid.steam.community/files/Steamguard-*.json</b>, που βρίσκεται στον εσωτερικό κατάλογο αποθήκευσης του Steam.</string>
|
||||
<string name="importer_help_stratum">Παροχή ενός αρχείου εξαγωγής Stratum που λαμβάνεται μέσω <b>Ρυθμίσεις -> Αντίγραφα ασφαλείας -> Δημιουργία αντιγράφου ασφαλείας σε κρυπτογραφημένο αρχείο (συνιστάται)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Παρέχετε ένα αρχείο εξαγωγής TOTP Authenticator.</string>
|
||||
<string name="importer_help_winauth">Παρέχετε ένα αρχείο εξαγωγής WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Αντιστοίχιση εικονιδίων</string>
|
||||
|
|
5
app/src/main/res/values-es-rES-v29/strings.xml
Normal file
5
app/src/main/res/values-es-rES-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Del sistema</string>
|
||||
<string name="system_amoled_theme_title">Del sistema (AMOLED)</string>
|
||||
</resources>
|
|
@ -22,7 +22,7 @@
|
|||
<string name="pref_cat_backups_android">Android</string>
|
||||
<string name="pref_cat_backups_auto">Copias de seguridad automáticas</string>
|
||||
<string name="pref_section_behavior_title">Comportamiento</string>
|
||||
<string name="pref_section_behavior_summary">Personaliza la funcionalidad y cómo se interactua con la lista de claves.</string>
|
||||
<string name="pref_section_behavior_summary">Personaliza la funcionalidad y cómo se interactúa con la lista de claves.</string>
|
||||
<string name="pref_section_appearance_title">Apariencia</string>
|
||||
<string name="pref_section_appearance_summary">Ajusta el esquema de colores, idioma y otros parámetros relacionados con el aspecto de la aplicación.</string>
|
||||
<string name="pref_section_security_title">Seguridad</string>
|
||||
|
@ -34,7 +34,7 @@
|
|||
<string name="pref_section_backups_title">Copias de seguridad</string>
|
||||
<string name="pref_section_backups_summary">Configura copias de seguridad automáticas en una carpeta local o activa el sistema de copia de seguridad en la nube de Android.</string>
|
||||
<string name="pref_section_icon_packs">Paquetes de iconos</string>
|
||||
<string name="pref_section_icon_packs_summary">Gestiona e importa tus paquetes de iconos</string>
|
||||
<string name="pref_section_icon_packs_summary">Gestiona e importa tus paquetes de iconos.</string>
|
||||
<string name="pref_select_theme_title">Tema</string>
|
||||
<string name="pref_dynamic_colors_title">Colores dinámicos</string>
|
||||
<string name="pref_dynamic_colors_summary">Colorear la interfaz con el mismo esquema de colores de tu tema de Android</string>
|
||||
|
@ -43,7 +43,7 @@
|
|||
<string name="pref_show_icons_title">Mostrar iconos</string>
|
||||
<string name="pref_show_icons_summary">Mostrar iconos al lado de cada clave</string>
|
||||
<string name="pref_code_group_size_title">Agrupación de los dígitos del código</string>
|
||||
<string name="pref_code_group_size_summary">Elige el número de dígitos por los que agrupar los códigos</string>
|
||||
<string name="pref_code_group_size_summary">Elige el número de dígitos por los que agrupar los códigos, dejando un espacio entre sí</string>
|
||||
<string name="pref_account_name_position_title">Mostrar el nombre de la cuenta</string>
|
||||
<string name="pref_show_next_code_title">Ver siguiente clave</string>
|
||||
<string name="pref_show_next_code_summary">Generar y mostrar la siguiente clave antes de tiempo</string>
|
||||
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Elige una forma de autenticarte</string>
|
||||
<string name="encrypting_vault">Cifrando la bóveda</string>
|
||||
<string name="exporting_vault">Exportando la bóveda</string>
|
||||
<string name="optimizing_icon">Optimizando el icono</string>
|
||||
<string name="optimizing_icon_multiple">Optimizando iconos: %1$d de %2$d</string>
|
||||
<string name="reading_file">Leyendo archivo</string>
|
||||
<string name="requesting_root_access">Solicitando acceso a la raíz</string>
|
||||
<string name="analyzing_qr">Analizando código QR</string>
|
||||
|
@ -239,9 +241,9 @@
|
|||
<string name="delete_entry">Borrar clave</string>
|
||||
<string name="delete_entry_description">¿Seguro de que quieres borrar la clave?</string>
|
||||
<string name="delete_entry_explanation">Esta acción no desactiva 2FA para:\n<b>%s</b>\n\nPara prevenir la pérdida de acceso, asegúrate de que has desactivado 2FA o que tienes una forma alternativa de generar códigos para este servicio.</string>
|
||||
<string name="delete_entries">Eliminar elementos</string>
|
||||
<string name="delete_entries">Borrar claves</string>
|
||||
<plurals name="delete_entries_description">
|
||||
<item quantity="one">¿Está seguro de que desea eliminar %d entrada?</item>
|
||||
<item quantity="one">¿Seguro de que desea eliminar %d clave?</item>
|
||||
<item quantity="other">¿Seguro que quieres borrar %d claves?</item>
|
||||
</plurals>
|
||||
<string name="discard_changes">¿Descartar cambios?</string>
|
||||
|
@ -276,9 +278,9 @@
|
|||
<string name="backup_status_none">Aún no se han realizado copias de seguridad</string>
|
||||
<string name="backup_warning_password">Las copias de seguridad se cifran usando una contraseña separada configurada en la configuración de seguridad</string>
|
||||
<string name="documentsui_error">Tu dispositivo parece no tener DocumentsUI. Es un componente del sistema importante y necesario para elegir y crear archivos. Si utilizaste una herramienta para desinstalar (o hacer «debloat» de) aplicaciones que vienen de fábrica es posible que la hayas eliminado accidentalmente, tendrás que volverla a instalarla.</string>
|
||||
<string name="icon_pack_import_error">Se ha producido un error tratando de importar un paquete de iconos</string>
|
||||
<string name="icon_pack_import_error">Se ha producido un error al intentar importar un paquete de iconos</string>
|
||||
<string name="icon_pack_import_exists_error">El paquete de iconos a importar ya existe. ¿Quieres reemplazarlo?</string>
|
||||
<string name="icon_pack_delete_error">Se ha producido un error tratando de eliminar un paquete de iconos</string>
|
||||
<string name="icon_pack_delete_error">Se ha producido un error al intentar borrar un paquete de iconos</string>
|
||||
<plurals name="icon_pack_info">
|
||||
<item quantity="one">%d icono</item>
|
||||
<item quantity="other">%d iconos</item>
|
||||
|
@ -301,11 +303,11 @@
|
|||
<string name="app_version_error">La versión de %s que está instalada no es compatible. Las versiones recientes han comenzado a cifrar algunos de los archivos en el directorio de almacenamiento interno, haciendo que Aegis no pueda acceder a la información que necesita para la importación. Intentar importar probablemente resultará en un error. ¿Deseas continuar de todos modos?</string>
|
||||
<string name="root_error">Error: No se puede obtener acceso a la raíz</string>
|
||||
<plurals name="imported_entries_count">
|
||||
<item quantity="one">Importada %d entrada</item>
|
||||
<item quantity="one">Importada %d clave</item>
|
||||
<item quantity="other">Importadas %d claves</item>
|
||||
</plurals>
|
||||
<plurals name="entries_shown">
|
||||
<item quantity="one">Mostrando %d entrada</item>
|
||||
<item quantity="one">Mostrando %d clave</item>
|
||||
<item quantity="other">Mostrando %d claves</item>
|
||||
</plurals>
|
||||
<string name="intro_import_error_title">Se ha producido un error al importar la bóveda</string>
|
||||
|
@ -321,7 +323,7 @@
|
|||
<string name="partial_google_auth_import_warning">Algunos código QR de importación no están. Faltan los siguientes códigos:\n\n<b>%s</b>\n\nPuedes seguir adelante con esta importación parcial, pero te recomendamos volver a probar otra vez a escanear todos los códigos QR para evitar que pierdas el acceso a alguno de ellos.</string>
|
||||
<string name="missing_qr_code_descriptor">• código QR %d</string>
|
||||
<plurals name="import_partial_export_anyway">
|
||||
<item quantity="one">Aún así quieres seguir con la importación de este código</item>
|
||||
<item quantity="one">Seguir con la importación de este código</item>
|
||||
<item quantity="other">Seguir con la importación de estos %d códigos</item>
|
||||
</plurals>
|
||||
<string name="import_google_auth_failure">Ha fallado la importación de lo exportado de Google Authenticator</string>
|
||||
|
@ -334,8 +336,8 @@
|
|||
<string name="remove_group_description">¿Seguro que quieres borrar este grupo? Sus elementos se moverán automáticamente a «Sin grupo».</string>
|
||||
<string name="remove_unused_groups">Eliminar grupos no utilizados</string>
|
||||
<string name="remove_unused_groups_description">¿Seguro que quieres borrar todos los grupos que estén vacíos y no tengan ninguna clave dentro?</string>
|
||||
<string name="remove_icon_pack">Eliminar paquete de iconos</string>
|
||||
<string name="remove_icon_pack_description">¿Está seguro de que desea eliminar este paquete de iconos? Las entradas que usen iconos de este paquete no se verán afectadas.</string>
|
||||
<string name="remove_icon_pack">Borrar paquete de iconos</string>
|
||||
<string name="remove_icon_pack_description">¿Seguro que quieres borrar este paquete de iconos? Las claves que ya utilicen algún icono de este paquete no se verán afectadas.</string>
|
||||
<string name="details">Más detalles</string>
|
||||
<string name="show_error_details">Mostrar detalles del error</string>
|
||||
<string name="lock">Bloquear</string>
|
||||
|
@ -361,8 +363,25 @@
|
|||
<string name="preference_reset_usage_count_dialog">¿Seguro de que quieres resetear el contador de uso de todas las claves y dejarlos a cero?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Nota</string>
|
||||
<string name="clear">Restablecer</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Hay un código duplicado</string>
|
||||
<string name="dialog_duplicate_entry_message">Este código tiene el mismo nombre y emisor que otros que ya están en la lista. ¿Qué quieres hacer?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Sobrescribir códigos</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Reemplazarlos. Esta acción no se puede deshacer</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Añadir sufijo</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Añade un sufijo al nombre de este nuevo código. El nuevo nombre será: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">No guardar</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Permite editarlo antes de volverlo a guardar</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">¿Seguro que quieres borrar %d elemento con el siguiente nombre:\n\n%s - %s?</item>
|
||||
<item quantity="other">¿Seguro que quieres borrar %d elementos con el siguiente nombre:\n\n%s - %s?</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Confirmar borrado</string>
|
||||
<string name="pref_haptic_feedback_summary">Hace vibrar tu dispositivo al actualizar los códigos</string>
|
||||
<string name="pref_haptic_feedback_title">Vibración</string>
|
||||
<string name="pref_highlight_entry_title">Resaltar códigos al pulsar</string>
|
||||
<string name="pref_highlight_entry_summary">Resalta temporalmente cada código temporal que toques sobre los demás para que sea más fácil de distinguir</string>
|
||||
<string name="pref_highlight_entry_summary">Resalta temporalmente cada clave que toques sobre las demás para que sea más fácil de distinguir</string>
|
||||
<string name="pref_groups_multiselect_title">Selección multiple de grupos</string>
|
||||
<string name="pref_groups_multiselect_summary">Permite seleccionar varios grupos a la vez</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimizar al copiar</string>
|
||||
<string name="pref_minimize_on_copy_summary">Minimiza la aplicación tras copiar claves</string>
|
||||
<string name="pref_copy_behavior_title">Copiar claves en el portapapeles</string>
|
||||
|
@ -408,11 +427,11 @@
|
|||
<string name="whats_new">Novedades</string>
|
||||
<string name="github_description">Código fuente, problemas e información</string>
|
||||
<string name="license">Licencia</string>
|
||||
<string name="license_description">Aegis Authenticator está licenciado bajo GPLv3</string>
|
||||
<string name="license_description">Aegis Authenticator se distribuye bajo los términos de la licencia GPLv3</string>
|
||||
<string name="third_party_licenses">Licencias de terceros</string>
|
||||
<string name="third_party_licenses_description">Licencias de las bibliotecas de terceros usadas por Aegis</string>
|
||||
<string name="country_netherlands">Países Bajos</string>
|
||||
<string name="email_us">Escribir un correo</string>
|
||||
<string name="email_us">Contacta por correo electrónico</string>
|
||||
<string name="visit_website">Visita nuestra web</string>
|
||||
<string name="about_support">Soporte</string>
|
||||
<string name="support_rate">Valorar</string>
|
||||
|
@ -451,8 +470,8 @@
|
|||
<string name="empty_list_title">No hay ninguna clave</string>
|
||||
<string name="empty_group_list">Todavía no hay ningún grupo; añade uno en la pantalla de editar claves</string>
|
||||
<string name="empty_group_list_title">No se encontraron grupos</string>
|
||||
<string name="no_icon_packs">Aún no se ha importado ningún paquete de iconos. Pulse el signo + para importar uno. Consejo: pruebe <a href="https://aegis-icons.github.io">aegis-icons</a>.</string>
|
||||
<string name="no_icon_packs_title">Sin paquetes de iconos</string>
|
||||
<string name="no_icon_packs">Aún no se ha importado ningún paquete de iconos. Pulsa «+» para importar uno. Consejo: te recomendamos que pruebes <a href="https://aegis-icons.github.io">aegis-icons</a>.</string>
|
||||
<string name="no_icon_packs_title">No parece haber ningún paquete de iconos</string>
|
||||
<string name="pick_icon">Seleccione un icono</string>
|
||||
<string name="uncategorized">Sin categorizar</string>
|
||||
<string name="done">Hecho</string>
|
||||
|
@ -466,6 +485,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">No se puede copiar la dirección URI en el portapapeles</string>
|
||||
<string name="uri_copied_to_clipboard">Se ha copiado la dirección URI al portapapeles</string>
|
||||
<string name="transfer_entry_description">Escanea este código QR con la aplicación de autenticación a la que vayas a importar esta clave</string>
|
||||
<string name="transfer_entry_brightness">Pulsa el código QR para subir/bajar el brillo a pantalla completa</string>
|
||||
<string name="google_auth_compatible_transfer_description">Escanea estos códigos QR con Aegis o Google Authenticator.\n\nDebido a limitaciones técnicas de Google Authenticator solo se incluirán claves de tipo TOTP y HOTP que usen SHA1 y produzcan códigos de 6 dígitos</string>
|
||||
<string name="password_strength_very_weak">Muy débil</string>
|
||||
<string name="password_strength_weak">Débil</string>
|
||||
|
@ -499,7 +519,6 @@
|
|||
<string name="importer_help_2fas">Suministre un archivo exportado de 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Suministre un archivo exportado/copia de seguridad de Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Suministre un archivo exportado de Authenticator Plus obtenido a través de <b>Ajustes -> Copias de seguridad -> Exportar como texto y HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Suministra un archivo de exportación de Authenticator Pro obtenido a través de <b>Configuración -> Copias de seguridad -> Copia de seguridad en archivo cifrado (recomendado)</b>.</string>
|
||||
<string name="importer_help_authy">Proporciona una copia del archivo <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, ubicado en la carpeta de almacenamiento interno de Authy.</string>
|
||||
<string name="importer_help_andotp">Suministre un archivo exportado/copia de seguridad de andOTP.</string>
|
||||
<string name="importer_help_bitwarden">Suministra un archivo de exportación/copia de seguridad de Bitwarden. Los archivos encriptados no están soportados.</string>
|
||||
|
@ -514,6 +533,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Suministre una copia de <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, localizado en el directorio de almacenamiento interno de Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Suministre un archivo de texto plano con una URI de Google Authenticator en cada línea.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 y posteriores no son compatibles</b>. Proporcione una copia de <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>, ubicado en el directorio de almacenamiento interno de Steam.</string>
|
||||
<string name="importer_help_stratum">Suministra un archivo de exportación de Stratum obtenido a través de <b>Configuración -> Copias de seguridad -> Copia de seguridad en archivo cifrado (recomendado)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Suministre un archivo exportado de TOTP Authenticator.</string>
|
||||
<string name="importer_help_winauth">Suministre un archivo exportado de WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Asignar iconos</string>
|
||||
|
@ -523,11 +543,11 @@
|
|||
<string name="groups">Grupos</string>
|
||||
<string name="pref_focus_search">Resaltar el buscador al inicio</string>
|
||||
<string name="pref_focus_search_summary">Enfoca la búsqueda inmediatamente después de abrir la aplicación.</string>
|
||||
<string name="pref_grouping_halves">Mitades</string>
|
||||
<string name="pref_grouping_none">Sin agrupación</string>
|
||||
<string name="pref_grouping_size_two">Grupos de 2</string>
|
||||
<string name="pref_grouping_size_three">Grupos de 3</string>
|
||||
<string name="pref_grouping_size_four">Grupos de 4</string>
|
||||
<string name="pref_grouping_halves">En dos mitades</string>
|
||||
<string name="pref_grouping_none">Sin agrupar</string>
|
||||
<string name="pref_grouping_size_two">En grupos de dos</string>
|
||||
<string name="pref_grouping_size_three">En grupos de tres</string>
|
||||
<string name="pref_grouping_size_four">En grupos de cuatro</string>
|
||||
<string name="pref_copy_behavior_never">Nunca</string>
|
||||
<string name="pref_copy_behavior_single_tap">Un toque</string>
|
||||
<string name="pref_copy_behavior_double_tap">Dos toques</string>
|
||||
|
|
5
app/src/main/res/values-et-rEE-v29/strings.xml
Normal file
5
app/src/main/res/values-et-rEE-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Süsteemi vaikeseadistus</string>
|
||||
<string name="system_amoled_theme_title">Süsteemi vaikeseadistus (AMOLED)</string>
|
||||
</resources>
|
576
app/src/main/res/values-et-rEE/strings.xml
Normal file
576
app/src/main/res/values-et-rEE/strings.xml
Normal file
|
@ -0,0 +1,576 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="action_settings">Seadistused</string>
|
||||
<string name="action_about">Rakenduse teave</string>
|
||||
<string name="action_delete">Kustuta</string>
|
||||
<string name="action_transfer">Teisalda</string>
|
||||
<string name="action_edit_icon">Muuda ikooni</string>
|
||||
<string name="action_reset_usage_count">Nulli kasutuskordade loendur</string>
|
||||
<string name="action_reset_usage_count_dialog">Kas sa oled kindel, et soovid nullida selle kirje kasutuskordade loenduri?</string>
|
||||
<string name="action_default_icon">Taasta vaikimisi ikoon</string>
|
||||
<string name="discard">Loobu</string>
|
||||
<string name="save">Salvesta</string>
|
||||
<string name="all">Kõik</string>
|
||||
<string name="issuer">Väljaandja</string>
|
||||
<string name="yandex_pin">PIN-kood (4–16 numbrit)</string>
|
||||
<string name="motp_pin">PIN-kood (4 numbrit)</string>
|
||||
<string name="suggested">Soovitatud</string>
|
||||
<string name="usage_count">Kasutuskordi</string>
|
||||
<string name="warning">Hoiatus</string>
|
||||
<string name="pref_cat_appearance_app">Rakendus</string>
|
||||
<string name="pref_cat_appearance_entries">Kirjeid</string>
|
||||
<string name="pref_cat_backups_android">Android</string>
|
||||
<string name="pref_cat_backups_auto">Automaatsed varukoopiad</string>
|
||||
<string name="pref_section_behavior_title">Käitumine</string>
|
||||
<string name="pref_section_behavior_summary">Kirjete loendi kohendamise võimalused.</string>
|
||||
<string name="pref_section_appearance_title">Välimus</string>
|
||||
<string name="pref_section_appearance_summary">Muuda kujundust, keelt ja muid seadistusi, mis mõjutavad rakenduse välimust.</string>
|
||||
<string name="pref_section_security_title">Turvalisus</string>
|
||||
<string name="pref_section_security_summary">Seadista krüptimist, biomeetrilist tuvastust, automaatset lukustust ja muid turvaseadistusi.</string>
|
||||
<string name="pref_section_import_export_title">Andmete import ja eksport</string>
|
||||
<string name="pref_section_import_export_summary">Impordi Aegise või teiste autentimisrakenduste varukoopiaid. Tee Aegise andmehoidlast käsitsi varukoopia.</string>
|
||||
<string name="pref_section_audit_log_title">Rakenduse logi</string>
|
||||
<string name="pref_section_audit_log_summary">Kõikide oluliste rakendusega juhtunud sündmuste logi hilisema auditeerimise jaoks.</string>
|
||||
<string name="pref_section_backups_title">Varukoopiad</string>
|
||||
<string name="pref_section_backups_summary">Seadista varukoopiate loomine sinu valitud asukohta või võta kasutusele Androidi pilvevarunduse lahendus.</string>
|
||||
<string name="pref_section_icon_packs">Ikoonipakid</string>
|
||||
<string name="pref_section_icon_packs_summary">Halda ja impordi ikoonipakke</string>
|
||||
<string name="pref_select_theme_title">Kujundus</string>
|
||||
<string name="pref_dynamic_colors_title">Dünaamilised värvid</string>
|
||||
<string name="pref_dynamic_colors_summary">Kasuta ülekatte jaoks Androidi kasutajaliidese kujunduse värve</string>
|
||||
<string name="pref_view_mode_title">Kasutatav vaade</string>
|
||||
<string name="pref_lang_title">Keel</string>
|
||||
<string name="pref_show_icons_title">Näita ikoone</string>
|
||||
<string name="pref_show_icons_summary">Näita iga kirje kõrval ikoone</string>
|
||||
<string name="pref_code_group_size_title">Koodinumbrite rühmitamine</string>
|
||||
<string name="pref_code_group_size_summary">Vali koodide rühmitamise viis</string>
|
||||
<string name="pref_account_name_position_title">Näita kasutajakonto nime</string>
|
||||
<string name="pref_show_next_code_title">Näita järgmist koodi</string>
|
||||
<string name="pref_show_next_code_summary">Loo järgmine kood ja näita seda enne õiget aega</string>
|
||||
<string name="pref_expiration_state_title">Anna märku koodide aegumisest</string>
|
||||
<string name="pref_expiration_state_summary">Enne aegumist muuda kinnituskoodi värvi ja vilguta neid</string>
|
||||
<string name="pref_expiration_state_fallback">Enne aegumist muuda kinnituskoodi värvi</string>
|
||||
<string name="pref_shared_issuer_account_name_title">Näita kasutajakonto nime vaid siis, kui see vajalik on</string>
|
||||
<string name="pref_shared_issuer_account_name_summary">Näita kasutajakontode nimesid vaid siis, kui neil on sama väljaandja. Muul juhul on kasutajakontode nimed peidetud.</string>
|
||||
<string name="pref_account_name_position_summary_override">See seadistus ei toimi ruudustikuvaates. Kasutajakonto nimi on näha väljaandja all.</string>
|
||||
<string name="pref_import_file_title">Impordi failist</string>
|
||||
<string name="pref_import_file_summary">Impordi andmekirjed failist</string>
|
||||
<string name="pref_android_backups_title">Androidi pilvevarundus</string>
|
||||
<string name="pref_android_backups_summary">Luba kaasata Aegise varukoopiaid Androidi sisseehitatud pilvevarundusse. Kehtib vaid krüptitud andmehoidla puhul.</string>
|
||||
<string name="pref_android_backups_hint"><i>Seadmelt seadmele (Device-to-device, D2D) varukoopiad on lubatud alati, sõltumata ülaltoodud seadistusest</i></string>
|
||||
<string name="pref_backups_title">Tee andmehoidlast automaatselt varukoopiaid</string>
|
||||
<string name="pref_backups_summary">Peale iga muudatust tee automaatselt andmehoidlast varukoopia. See funktsionaalsus toimib vaid krüptitud andmehoidlate puhul.</string>
|
||||
<string name="pref_backups_reminder_title">Varunduse meeldetuletus</string>
|
||||
<string name="pref_backups_reminder_summary">Kui sa pole viimaseid muudatusi varundanud, näita meeldetuletust sinu andmehoidla kohta.</string>
|
||||
<string name="pref_backups_reminder_dialog_title">Lülita varunduse meeldetuletus välja</string>
|
||||
<string name="pref_backups_reminder_dialog_summary">Selle meeldetuletuse väljalülitamisel Aegis ei anna sulle enam teada, kas muudatused on varundatud või mitte. Sellega tekib aga võimalus, et võid kaotada ligipääsu oma tunnuslubadele. Kas sa oled kindel, et soovid meeldetuletuse välja lülitada?</string>
|
||||
<string name="pref_backups_versioning_strategy_title">Varundusplaan</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">Säilita mitu varukoopiat</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup">Tee vaid üks varukoopia</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup_warning">Sinu valitud varundusplaan pole töökindel ja me ei soovita seda. Vaid ühe varukoopia tegemisel võid selle kaotada.</string>
|
||||
<string name="pref_backups_versioning_strategy_dialog_title">Vali varundusplaan</string>
|
||||
<string name="pref_backups_location_title">Varukoopia asukoht</string>
|
||||
<string name="pref_backups_location_summary">Varukoopiad salvestuvad siin:</string>
|
||||
<string name="pref_backup_location_summary">Varukoopia salvestub siin:</string>
|
||||
<string name="pref_backups_trigger_title">Käivita kohe varundus</string>
|
||||
<string name="pref_backups_trigger_summary">Tee varundus käsitsi</string>
|
||||
<string name="pref_backups_versions_title">Säilitatavate versioonide arv</string>
|
||||
<string name="pref_backups_versions_infinite">\u221E</string>
|
||||
<plurals name="pref_backups_versions_summary">
|
||||
<item quantity="one">Säilita varukoopiast %1$d versioon</item>
|
||||
<item quantity="other">Säilita varukoopiast %1$d versiooni</item>
|
||||
</plurals>
|
||||
<string name="pref_backups_versions_infinite_summary">Säilita varukooiate lõputu arv versioone</string>
|
||||
<string name="pref_import_app_title">Impordi rakendusest</string>
|
||||
<string name="pref_import_app_summary">Impordi tunnusload rakendusest (eeldab juurkasutaja õigusi)</string>
|
||||
<string name="pref_export_title">Ekspordi</string>
|
||||
<string name="pref_export_summary">Ekspordi andmehoidla</string>
|
||||
<string name="pref_password_reminder_title">Salasõna meeldetuletus</string>
|
||||
<string name="pref_google_auth_export_title">Eksportimine Google Authenticatori jaoks</string>
|
||||
<string name="pref_google_auth_export_descriptor">Selle valikuga saad luua eksportimiseks QR-koode, mis sobivad Google Authenticatori jaoks</string>
|
||||
<string name="pref_google_auth_export_no_data">Pole andmeid, mida saaks eksportida</string>
|
||||
<plurals name="pref_google_auth_export_incompatible_entries">
|
||||
<item quantity="one">Jätsin vahele %d mitteühilduva kirje</item>
|
||||
<item quantity="other">Jätsin vahele %d mitteühilduvat kirjet</item>
|
||||
</plurals>
|
||||
<string name="pref_password_reminder_summary">Selleks, et sa salasõna ei unustaks, näita %s meeldetuletust salasõna sisestamiseks.</string>
|
||||
<string name="pref_password_reminder_summary_disabled">Pole kasutusel</string>
|
||||
<string name="pref_secure_screen_title">Ekraanivaate turvalisus</string>
|
||||
<string name="pref_secure_screen_summary">Rakenduse kasutamisel keela ekraanitõmmiste tegemine ja muul viisil ekraanipildi jäädvustamine</string>
|
||||
<string name="pref_tap_to_reveal_title">Näitamiseks puuduta</string>
|
||||
<string name="pref_tap_to_reveal_summary">Vaikimisi on kinnituskoodid peidetud. Selle nägemiseks klõpsi kirjel.</string>
|
||||
<string name="pref_tap_to_reveal_time_title">Näitamise kestus peale puudutamist</string>
|
||||
<string name="pref_auto_lock_title">Automaatne lukustus</string>
|
||||
<string name="pref_auto_lock_summary">Kui %s</string>
|
||||
<string name="pref_auto_lock_summary_disabled">Pole kasutusel</string>
|
||||
<string name="pref_auto_lock_prompt">Lukusta Aegis automaatselt</string>
|
||||
<string name="pref_auto_lock_type_back_button">Androidi „Tagasi“ nupu vajutamisel</string>
|
||||
<string name="pref_auto_lock_type_minimize">Rakenduse minimeerimisel</string>
|
||||
<string name="pref_auto_lock_type_device_lock">Seadme lukustamisel</string>
|
||||
<string name="pref_backup_password_category">Varundus ja eksport</string>
|
||||
<string name="pref_backup_password_title">Eraldi salasõna varunduse ja ekspordi jaoks</string>
|
||||
<string name="pref_backup_password_summary">Kui see eelistus on kasutusel, siis rakenduse lukustuse eemaldamiseks kasutatav salasõna enam ei toimi varukoopiate ja ekspordifailide dekrüptimisel.</string>
|
||||
<string name="pref_backup_password_change_title">Muuda varunduse ja ekspordi salasõna</string>
|
||||
<string name="pref_backup_password_change_summary">Muuda salasõna, mida kasutatakse andmehoidla krüptimiseks varukoopia tegemisel ja eksportimisel.</string>
|
||||
<string name="pref_encryption_title">Krüptimine</string>
|
||||
<string name="pref_encryption_summary">Krüpti andmehoidla salasõna või biomeetrilise tuvastusega ning kasuta neid ka lukustuse eemaldamisel</string>
|
||||
<string name="pref_biometrics_title">Biomeetriline tuvastus</string>
|
||||
<string name="pref_biometrics_summary">Kasuta andmehoidla lukustuse eemaldamiseks biomeetrilist tuvastust</string>
|
||||
<string name="pref_search_behavior_summary">Otsi väljadest: %s</string>
|
||||
<string name="pref_search_behavior_prompt">Otsi neist märgitud väljadest</string>
|
||||
<string name="pref_search_behavior_type_name">Nimi</string>
|
||||
<string name="pref_search_behavior_type_issuer">Väljaandja</string>
|
||||
<string name="pref_search_behavior_type_note">Märkus</string>
|
||||
<string name="pref_search_behavior_type_groups">Grupid</string>
|
||||
<string name="pref_set_password_title">Muuda salasõna</string>
|
||||
<string name="pref_set_password_summary">Muuda salasõna, mida kasutatakse andmehoidla lukustuse eemaldamiseks</string>
|
||||
<string name="no_events_title">Teadaolevaid sündmusi pole</string>
|
||||
<string name="no_events_description">Raenduses pole teada ühtegi olulist sündmust</string>
|
||||
<string name="event_title_vault_unlocked">Andmehoidla lukustus on eemaldatud</string>
|
||||
<string name="event_description_vault_unlocked">Andmehoidla lukustus on kenasti eemaldatud</string>
|
||||
<string name="event_title_backup_created">Varukoopia on loodud</string>
|
||||
<string name="event_description_backup_created">Andmehoidla varukoopia loomine õnnestus</string>
|
||||
<string name="event_title_android_backup_created">Varukoopia on loodud Androidi poolt</string>
|
||||
<string name="event_description_android_backup_created">Androidid õnnestus luua andmehoidla varukoopia</string>
|
||||
<string name="event_title_vault_exported">Andmehoidla on eksporditud</string>
|
||||
<string name="event_description_vault_exported">Andmehoidla koopia on eksporditud</string>
|
||||
<string name="event_title_entry_shared">Kirje on jagatud</string>
|
||||
<string name="event_description_entry_shared">Kirjet jagati</string>
|
||||
<string name="event_title_vault_unlock_failed_password">Ei õnnestunud eemaldada andmehoidla lukustust (salasõnaga)</string>
|
||||
<string name="event_description_vault_unlock_failed_password">Katse eemaldada andmehoidla lukustust salasõnaga ei õnnestunud</string>
|
||||
<string name="event_title_vault_unlock_failed_biometrics">Ei õnnestunud eemaldada andmehoidla lukustust (biomeetrilise tuvastusega)</string>
|
||||
<string name="event_description_vault_unlock_failed_biometrics">Katse eemaldada andmehoidla lukustust biomeetrilise tuvastusega ei õnnestunud</string>
|
||||
<string name="event_unknown">Tundmastu sündmuse tüüp</string>
|
||||
<string name="audit_log_entry_deleted">(kustutatud)</string>
|
||||
<string name="today_at_time">Täna kell %1$s</string>
|
||||
<string name="day_of_week_at_time">%1$s kell %2$s</string>
|
||||
<string name="export_encrypted">Krüpti andmehoidla</string>
|
||||
<string name="export_help">Selle toiminguga ekspordid andmehoidla Aegise sisemisest andmeruumist. Palun vali vorming, mida soovid eksportimiseks kasutada:</string>
|
||||
<string name="export_warning_unencrypted">Sa oled eksportimas Aegise andmehoidla krüptimata koopiat. <b>Me ei soovita sellist tegevust</b>.</string>
|
||||
<string name="export_warning_password">Ekspordifailid on krüptitud eraldi salasõnaga, mis on lisatud seadistuste sektsioonist Turvalisus.</string>
|
||||
<string name="understand_risk_accept">Ma mõistan seda riski</string>
|
||||
<string name="export_format_aegis">Aegis (.JSON)</string>
|
||||
<string name="export_format_google_auth_uri">Tekstifail (.TXT)</string>
|
||||
<string name="export_format_html">Veebileht (.HTML)</string>
|
||||
<string name="export_format_hint">Eksportimise vorming</string>
|
||||
<string name="export_all_groups">Ekspordi kõik grupid</string>
|
||||
<string name="export_choose_groups">Vali eksporditavad grupid</string>
|
||||
<plurals name="export_groups_selected_count">
|
||||
<item quantity="one">%d grupp on valitud</item>
|
||||
<item quantity="other">%d gruppi on valitud</item>
|
||||
</plurals>
|
||||
<string name="export_no_groups_selected">Sa pole eksportimiseks valinud ühtegi gruppi</string>
|
||||
<string name="export_html_title" comment="The title of an HTML export document">Eksport Aegis Authenticatorist</string>
|
||||
<string name="choose_authentication_method">Turvalisus</string>
|
||||
<string name="authentication_method_explanation">Aegis on turvalisuskeskne kaheastmelise autentimise haldusrakendus. Kirjed on salvestatud andmehoidlas, mida saad soovi korral enda valitud salasõnaga krüptida. Kui see krüptitud andmehoidla satub pahatahtlike kavatsustega kolmanda osapoole kätte, siis pole tal ilma salasõna teadmata võimalust sisu lugeda.\n\nJärgnevalt oleme eelvalinud eelistuse, mis võiks sinu nutiseadmele parimal viisil sobida.</string>
|
||||
<string name="authentication_method_none">Puudub</string>
|
||||
<string name="authentication_method_none_description">Andmehoidla lukustuse eemaldamiseks pole vaja kasutada salasõna ning ta on ka krüptimata. <b>Me ei soovita selle valiku kasutamist</b>.</string>
|
||||
<string name="authentication_method_password">Salasõna</string>
|
||||
<string name="authentication_method_password_description">Andmehoidla lukustuse eemaldamiseks pead kasutama salasõna.</string>
|
||||
<string name="authentication_method_password_explanation">Hoiatus: Kui sa unustad oma salasõna, siis kaotad jäädavalt ligipääsu oma tunnuslubadele. Pole ühtegi viisi ligipääsuks neile ilma salasõnata.</string>
|
||||
<string name="authentication_method_biometrics">Biomeetria</string>
|
||||
<string name="authentication_method_biometrics_description">Lisaks salasõnale, on siin nutiseadmes biomeetrilise tuvastuse võimalus. Näiteks sõrmejälje või näotuvastusega on võimalik andmehoidlat lukust lahti võtta.</string>
|
||||
<string name="authentication">Võta andmehoidla lukust lahti</string>
|
||||
<string name="authentication_multiline" comment="The newline in the middle is used for aesthetic purposes">Võta andmehoidla\nlukust lahti</string>
|
||||
<string name="auth_use_biometrics">Või klõpsi siin <font fgcolor="#FF0D86C1">biomeetrilise tuvastuse</font> kasutamiseks</string>
|
||||
<string name="set_password">Palun sisesta salasõna</string>
|
||||
<string name="set_group">Palun sisesta grupi nimi</string>
|
||||
<string name="set_number">Palun sisesta number</string>
|
||||
<string name="set_password_confirm">Palun korda salasõna</string>
|
||||
<string name="invalid_password">Sisestatud salasõna pole õige</string>
|
||||
<string name="invalidated_biometrics">Tuvastasin muudatuse sinu nutiseadme turvaseadistustes. Palun ava Aegise „Seadistused“ → „Turvalisus“ → „Biomeetriline tuvastus“ ning lülita ta korraks välja ning seejärel uuesti sisse.</string>
|
||||
<string name="password_reminder">Palun sisesta oma salasõna. Selleks, et sa salasõna ei unustaks, me vahetevahel palume sind seda sisestada.</string>
|
||||
<string name="password_reminder_dialog_title">Vaikimisi on lukustuse eemaldamiseks kasutusel biomeetriline tuvastus</string>
|
||||
<string name="password_reminder_dialog_message">Selleks, et sa salasõna ei unustaks ja kaotaks ligipääsu oma andmehoidlale, me vahetevahel palume sind seda sisestada. Peale salasõna kasutamist Aegis pruugib jälle biomeetrilist tuvastust seni, kuni jõuab kätte järjekordne salasõna sisestamise hetk.</string>
|
||||
<string name="password_reminder_freq_never">Mitte kunagi</string>
|
||||
<string name="password_reminder_freq_weekly">kord nädalas</string>
|
||||
<string name="password_reminder_freq_biweekly">kaks korda nädalas</string>
|
||||
<string name="password_reminder_freq_monthly">kord kuus</string>
|
||||
<string name="password_reminder_freq_quarterly">kord kvartalis</string>
|
||||
<string name="enter_password_2fas_message">Tundub, et 2FAS rakenduse varukoopia on krüptitud. Palun sisesta alljärgnevalt salasõna.</string>
|
||||
<string name="enter_password_authy_message">Tundub, et Authy rakenduse kirjed on krüptitud. Palun sulge Aegis, ava Authy ning eemalda kirjete lukustus oma salasõnaga. Võid ka proovida, kas Aegis saab dekrüptimisega hakkama. Selleks sisesta alljärgnevalt vajalik salasõna.</string>
|
||||
<string name="enter_password_aegis_title">Palun sisesta importimise salasõna</string>
|
||||
<string name="period_hint">Välp (sekundites)</string>
|
||||
<string name="algorithm_hint">Räsifunktsioon</string>
|
||||
<string name="type">Tüüp</string>
|
||||
<string name="share">Jaga</string>
|
||||
<string name="yes">Jah</string>
|
||||
<string name="no">Ei</string>
|
||||
<string name="undo">Võta toiming tagasi</string>
|
||||
<string name="unlock">Lukusta lahti</string>
|
||||
<string name="advanced">Lisavalikud</string>
|
||||
<string name="counter">Loendur</string>
|
||||
<string name="digits">Numbreid</string>
|
||||
<string name="secret">Salakood</string>
|
||||
<string name="scan">Skaneeri QR-koodi</string>
|
||||
<string name="scan_image">Skaneeri pilti</string>
|
||||
<string name="enter_manually">Sisesta käsitsi</string>
|
||||
<string name="set_up_biometric">Seadista lukustuse eemaldamine biomeetrilise tuvastusega</string>
|
||||
<string name="copy">Kopeeri</string>
|
||||
<string name="edit">Muuda</string>
|
||||
<string name="select_all">Vali kõik</string>
|
||||
<string name="assign_icons">Lisa ikoone</string>
|
||||
<string name="assign_groups">Lisa gruppi</string>
|
||||
<string name="assign_groups_dialog_summary">Vali grupp, kuhu soovid antud kirjed lisada.</string>
|
||||
<string name="assign_groups_dialog_dropdown">Vali grupp</string>
|
||||
<string name="favorite" comment="Verb">Lisa lemmikuks</string>
|
||||
<string name="unfavorite" comment="Verb">Eemalda lemmikutest</string>
|
||||
<string name="error_all_caps">VIGA</string>
|
||||
<string name="password">Salasõna</string>
|
||||
<string name="confirm_password">Korda salasõna</string>
|
||||
<string name="show_password">Näita salasõna</string>
|
||||
<string name="new_entry">Uus kirje</string>
|
||||
<string name="add_new_entry">Lisa uus kirje</string>
|
||||
<string name="unlock_vault_error">Andmehoidla lukustuse eemaldamine ei õnnestunud</string>
|
||||
<string name="unlock_vault_error_description">Vale salasõna. Palun kontrolli, et kasutasid õiget salasõna.</string>
|
||||
<string name="password_equality_error">Salasõnad peavad olema identsed ega tohi olla tühjad</string>
|
||||
<string name="snackbar_authentication_method">Palun vali autentimise meetod</string>
|
||||
<string name="encrypting_vault">Andmehoidla on krüptimisel</string>
|
||||
<string name="exporting_vault">Andmehoidla on eksportimisel</string>
|
||||
<string name="optimizing_icon">Optimeerin ikoone</string>
|
||||
<string name="optimizing_icon_multiple">Optimeerin ikoone %1$d/%2$d</string>
|
||||
<string name="reading_file">Loen faili</string>
|
||||
<string name="requesting_root_access">Küsin juurkasutaja õigusi</string>
|
||||
<string name="analyzing_qr">Analüüsin QR-koodi</string>
|
||||
<string name="analyzing_qr_multiple">Analüüsin QR-koodi %1$d/%2$d (%3$s)</string>
|
||||
<plurals name="added_new_entries">
|
||||
<item quantity="one">Lisasin %d uue kirje andmehoidlasse</item>
|
||||
<item quantity="other">Lisasin %d uut kirjet andmehoidlasse</item>
|
||||
</plurals>
|
||||
<string name="importing_icon_pack">Impordin ikoonipakki</string>
|
||||
<string name="delete_entry">Kustuta kirje</string>
|
||||
<string name="delete_entry_description">Kas sa oled kindel, et soovid selle kirje kustutada?</string>
|
||||
<string name="delete_entry_explanation">Selle tegevusega sa ei lülita kaheastmelist autentimist välja siin teenuses:\n<b>%s</b>\n\nEt sa ei kaotaks ligipääsu teenusele, siis palun kontrolli, et oleksid seal kaheastmelise autentimise välja lülitanud või sul on olemas alternatiivne viis selle teenuse jaoks autentimiskoode luua.</string>
|
||||
<string name="delete_entries">Kustuta kirjed</string>
|
||||
<plurals name="delete_entries_description">
|
||||
<item quantity="one">Kas oled kindel, et soovid kustutada %d kirje?</item>
|
||||
<item quantity="other">Kas oled kindel, et soovid kustutada %d kirjet?</item>
|
||||
</plurals>
|
||||
<string name="discard_changes">Kas loobud muudatustest?</string>
|
||||
<string name="discard_changes_description">Sinu muudatused pole salvestatud</string>
|
||||
<string name="saving_profile_error">Viga profiili salvestamisel</string>
|
||||
<string name="saving_assign_icons_error">Viga ikoonide lisamisel</string>
|
||||
<string name="welcome">Tere tulemast</string>
|
||||
<string name="app_description">Aegis on vaba, turvaline ja avatud lähtekoodil põhinev kaheastmelise autentimise haldusrakendus</string>
|
||||
<string name="setup_completed">Alseadistamine on lõppenud</string>
|
||||
<string name="setup_completed_description">Aegis on seadistatud ja valmis tööks.</string>
|
||||
<string name="vault_not_found">Andmehoidlat ei leidu, alustan algseadistamisega…</string>
|
||||
<string name="copied">Kopeeritud</string>
|
||||
<string name="errors_copied">Vead on kopeeritud lõikelauale</string>
|
||||
<string name="version_copied">Versiooninumber on kopeeritud lõikelauale</string>
|
||||
<string name="error_required_field">See väli on kohustuslik</string>
|
||||
<string name="error_occurred">Tekkis viga</string>
|
||||
<string name="decryption_error">Andmehoidla lukustuse eemaldamisel tekkis viga</string>
|
||||
<string name="decryption_corrupt_error">Andmehoidla lukustuse eemaldamisel tekkis viga. Andmehoidla fail võib olla vigane.</string>
|
||||
<string name="saving_error">Andmehoidla salvestamisel tekkis viga</string>
|
||||
<string name="vault_init_error">Andmehoidla valmendamisel tekkis viga</string>
|
||||
<string name="vault_load_error">Andmehoidla laadimisel nutiseadme andmeruumist tekkis viga</string>
|
||||
<string name="biometric_decrypt_error">Andmehoidla dekrüptimisel biomeetrilise isikutuvastuse abil tekkis viga. Tavaliselt juhtub see siis, kui nutiseadme turvaseadistused on muutunud. Palun eemalda andmehoidla lukustus salasõnaga ja kohenda Aegise seadistustest uuesti biomeetrilist tuvastust.</string>
|
||||
<string name="biometric_init_error">Biomeetrilise isikutuvastuse valmendamisel tekkis viga. Tavaliselt juhtub see siis, kui nutiseadme turvaseadistused on muutunud. Palun eemalda andmehoidla lukustus salasõnaga ja kohenda Aegise seadistustest uuesti biomeetrilist tuvastust.</string>
|
||||
<string name="disable_encryption">Lülita krüptimine välja</string>
|
||||
<string name="disable_encryption_description">Kas sa oled kindel, et soovid krüptimist välja lülitada? Selle tulemusel salvestatakse andmehoidla lihtteksti vormingus. <b>Lisaks ei saa enam kasutada automaatset varundust</b>.</string>
|
||||
<string name="enable_encryption_error">Krüptimise sisselülitamisel tekkis viga</string>
|
||||
<string name="disable_encryption_error">Krüptimise väljalülitamisel tekkis viga</string>
|
||||
<string name="backup_successful">Varukoopia ajastamine õnnestus</string>
|
||||
<string name="backup_error">Varukoopia tegemisel tekkis viga</string>
|
||||
<string name="backup_status_success">Viimane õnnestunud varukoopia: %s</string>
|
||||
<string name="backup_status_failed">Viimane ebaõnnestunud varukoopia: %s</string>
|
||||
<string name="backup_status_none">Ühtegi varukoopiat pole veel tehtud</string>
|
||||
<string name="backup_warning_password">Varukoopiad on krüptitud eraldi salasõnaga, mis on lisatud seadistuste sektsioonist Turvalisus</string>
|
||||
<string name="documentsui_error">DocumentsUI liidestus tundub olema sinu nutiseadmest puudu. Tegemist on olulise süsteemse komponendiga, mis on kasutusel dokumentide loomisel ja valimisel. Kui oled kasutanud mõnda rakendust oma nutiseadmest erisuguste mittevajalike komponentide eemaldamiseks, siis võid olla ka selle teegi eemaldanud ja pead ta uuesti paigaldama.</string>
|
||||
<string name="icon_pack_import_error">Ikoonipaki importimisel tekkis viga</string>
|
||||
<string name="icon_pack_import_exists_error">Ikoonipakk, mida proovid importida, on juba olemas. Kas tahad selle üle kirjutada?</string>
|
||||
<string name="icon_pack_delete_error">Ikoonipaki kustutamisel tekkis viga</string>
|
||||
<plurals name="icon_pack_info">
|
||||
<item quantity="one">%d ikoon</item>
|
||||
<item quantity="other">%d ikooni</item>
|
||||
</plurals>
|
||||
<string name="icon_custom">Kohandatud</string>
|
||||
<string name="permission_denied">Õigused puuduvad</string>
|
||||
<string name="andotp_new_format">Uus vorming (versioon 0.6.3 või uuem) </string>
|
||||
<string name="andotp_old_format">Vana vorming (versioon 0.6.2 või vanem) </string>
|
||||
<string name="choose_andotp_importer">Mis vormingus on andOTP varukoopia?</string>
|
||||
<string name="choose_totpauth_importer">Kas see TOTP Authenticatori varukoopai on kaitstud salasõnaga?</string>
|
||||
<string name="choose_application">Vali rakendus, kust sa tahaksid andmeid importida</string>
|
||||
<string name="choose_theme">Valid soovitud kujundus</string>
|
||||
<string name="choose_account_name_position">Vali sinu kasutajakonto nime asukoht</string>
|
||||
<string name="choose_view_mode">Vali sinu soovitud vaade</string>
|
||||
<string name="choose_copy_behavior">Vali soovitud käitumine kopeerimisel</string>
|
||||
<string name="parsing_file_error">Faili töötlemisel tekkis viga</string>
|
||||
<string name="file_not_found">Viga: faili ei leidu</string>
|
||||
<string name="reading_file_error">Faili lugemisel tekkis viga</string>
|
||||
<string name="app_lookup_error">Viga: rakendus pole paigaldatud</string>
|
||||
<string name="app_version_error">Paigaldatud „%s“ rakenduse versioon pole toetatud. Viimased versioonid krüptivad osasid faile oma andmekaustas ja seega puudub Aegisel ligipääs nende importimiseks. Kui proovid importida, siis ilmselt lõppeb see veaga. Kas ikkagi tahad jätkata?</string>
|
||||
<string name="root_error">Viga: ei õnnestu kasutada juurkasutaja õigusi</string>
|
||||
<plurals name="imported_entries_count">
|
||||
<item quantity="one">Importisin %d kirje</item>
|
||||
<item quantity="other">Importisin %d kirjet</item>
|
||||
</plurals>
|
||||
<plurals name="entries_shown">
|
||||
<item quantity="one">Näitan %d kirjet</item>
|
||||
<item quantity="other">Näitan %d kirjet</item>
|
||||
</plurals>
|
||||
<string name="intro_import_error_title">Andmehoidla importimisel tekkis viga</string>
|
||||
<string name="import_error_title">Importimisel tekkis üks või enam viga</string>
|
||||
<string name="exporting_vault_error">Andmehoidla eksportimisel tekkis viga</string>
|
||||
<string name="exported_vault">Andmehoidla on eksporditud</string>
|
||||
<string name="encryption_set_password_error">Salasõna salvestamisel tekkis viga.</string>
|
||||
<string name="encryption_enable_biometrics_error">Biomeetrilise isikutuvastuse kasutuselevõtmisel lukustuse eemaldamise jaoks tekkis viga. Mõnede nutiseadmete biomeetrilise tuvastuse teostused on puudulikud ning tundub, et see on üks niisugustest seadmetest. Me soovitame, et kasutad vaid salasõnapõhist tuvastust.</string>
|
||||
<string name="no_cameras_available">Ühtegi kaamerat pole saadaval</string>
|
||||
<string name="read_qr_error">QR-koodi lugemisel tekkis viga</string>
|
||||
<string name="read_qr_error_phonefactor">Aegis pole ühilduv Microsofti kaheastmelise autentimise suletud algoritmiga. Kui oled seadistamas kaheastmelist autentimist Office 365 teenuses, siis palun vali eelistus „Seadista rakendus ilma teavitusteta“.</string>
|
||||
<string name="partial_google_auth_import">Tuvastasin pooliku Google Authenticatori ekspordifaili</string>
|
||||
<string name="partial_google_auth_import_warning">Mõned QR-koodid on imporditavatest andmetest puudu. Järgnevaid koode ei leidunud: \n\n<b>%s</b>\n\nSa võid küll jätkata selle pooliku impordiga, kuid me soovitame, et proovid uuesti kõikide andmetega ning väldid mõmõnede kirjete kadumaminekut.</string>
|
||||
<string name="missing_qr_code_descriptor">• QR-kood %d</string>
|
||||
<plurals name="import_partial_export_anyway">
|
||||
<item quantity="one">Impordi %d tunnusluba ikkagi</item>
|
||||
<item quantity="other">Impordi %d tunnusluba ikkagi</item>
|
||||
</plurals>
|
||||
<string name="import_google_auth_failure">Google Authenticatori ekspordifaili importimine ei õnnestunud</string>
|
||||
<string name="unrelated_google_auth_batches_error">Ekspordis on teave mitteseotud töötluspakkide kohta. Proovida importida ühe paki kaupa.</string>
|
||||
<string name="no_tokens_can_be_imported">Tulemusena pole võimalik ühtegi kirjet importida</string>
|
||||
<string name="unlocking_vault">Andmehoidla lukustus on eemaldamisel</string>
|
||||
<string name="rename_group">Muuda grupi nime</string>
|
||||
<string name="no_group_selection">Kui kirje ei kuulu ühtegi gruppi, siis leidub ta valikus „Grupp puudub“.</string>
|
||||
<string name="remove_group">Eemalda grupp</string>
|
||||
<string name="remove_group_description">Kas sa oled kindel, et soovid selle grupi eemaldada? Selle ja teiste sama grupiga kirjete uus grupp saab olema „Grupp puudub“.</string>
|
||||
<string name="remove_unused_groups">Kustuta kasutamata grupid</string>
|
||||
<string name="remove_unused_groups_description">Kas sa oled kindel, et soovid kustutada kõik grupid, mis pole ühegi kirjega seotud?</string>
|
||||
<string name="remove_icon_pack">Eemalda ikoonipakk</string>
|
||||
<string name="remove_icon_pack_description">Kas sa oled kindel, et soovid selle ikoonipaki eemaldada? Sellest pakist ikoone kasutavad kirjed jäävad alles.</string>
|
||||
<string name="details">Üksikasjad</string>
|
||||
<string name="show_error_details">Näita vea üksikasju</string>
|
||||
<string name="lock">Lukusta</string>
|
||||
<string name="name">Nimi</string>
|
||||
<string name="no_group">Grupp puudub</string>
|
||||
<string name="sort" comment="Title of the Sort button in the top action bar of the main view">Järjesta</string>
|
||||
<string name="sort_alphabetically">Väljaandja (A kuni Z)</string>
|
||||
<string name="sort_alphabetically_reverse">Väljaandja (Z kuni A)</string>
|
||||
<string name="sort_alphabetically_name">Kasutajakonto (A kuni Z)</string>
|
||||
<string name="sort_alphabetically_name_reverse">Kasutajakonto (Z kuni A)</string>
|
||||
<string name="sort_usage_count">Kasutuskorrad</string>
|
||||
<string name="sort_last_used">Viimati kasutatud</string>
|
||||
<string name="sort_custom">Sinu järjestus</string>
|
||||
<string name="last_used">Viimati kasutatud</string>
|
||||
<string name="last_used_never">mitte kunagi</string>
|
||||
<string name="new_group">Uus grupp…</string>
|
||||
<string name="group">Grupp</string>
|
||||
<string name="group_name_hint">Grupi nimi</string>
|
||||
<string name="preference_manage_groups">Muuda gruppe</string>
|
||||
<string name="preference_manage_groups_summary">Halda ja kustuta oma gruppe siin</string>
|
||||
<string name="preference_reset_usage_count">Nulli kasutuskordade loendur</string>
|
||||
<string name="preference_reset_usage_count_summary">Lähtesta andmehoidla kõikide kirjete loendurid</string>
|
||||
<string name="preference_reset_usage_count_dialog">Kas sa oled kindel, et soovid nullida andmehoidla kõikide kirjete kasutuskordade loenduri?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Märkus</string>
|
||||
<string name="clear">Tühjenda</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Topeltkirje</string>
|
||||
<string name="dialog_duplicate_entry_message">Sellel kirjel on sama nimi ja väljaandja, kui veel ühel või mitmel kirjel. Kuidas peaksime jätkama?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Kirjuta olemasolev kirje või kirjed üle</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Asenda olemasolev(ad) kirje või kirjed uuega. Seda tegevust ei saa tagasi pöörata</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Lisa eesliide</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Lisa eesliide uuele kirje nimele. Seega uus nimi saab olema: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Katkesta salvestamine</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Võimaldab sul enne uut salvestuskatset muuta kirjet</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Kas sa oled kindel, et soovid kustutada %d kirje järgneva nimega:\n\n%s - %s</item>
|
||||
<item quantity="other">Kas sa oled kindel, et soovid kustutada %d kirjet järgnevate nimedega:\n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Kinnita kustutamine</string>
|
||||
<string name="pref_haptic_feedback_summary">Anna koodide muutumisest märgi värinaga</string>
|
||||
<string name="pref_haptic_feedback_title">Haptiline tagasiside</string>
|
||||
<string name="pref_highlight_entry_title">Puudutamisel tõsta kinnituskood esile</string>
|
||||
<string name="pref_highlight_entry_summary">Peale kinnituskoodi puudutamist tõsta ta ajutiselt esile ja tee seeläbi teistest kergemini eristatavaks</string>
|
||||
<string name="pref_groups_multiselect_title">Vali mitu grupi korraga</string>
|
||||
<string name="pref_groups_multiselect_summary">Võimalda mitme grupi korraga valimist</string>
|
||||
<string name="pref_minimize_on_copy_title">Kopeerimisel peida rakendus</string>
|
||||
<string name="pref_minimize_on_copy_summary">Peale kinnituskoodi kopeerimist minimeeri rakendus</string>
|
||||
<string name="pref_copy_behavior_title">Kopeeri kinnituskoodid lõikelauale</string>
|
||||
<string name="pref_search_behavior_title">Otsingu toimimine</string>
|
||||
<string name="pref_pause_entry_title">Peale puudutamist peata kinnituskoodide muutumine</string>
|
||||
<string name="pref_pause_entry_summary">Puudutamisel peata kinnituskoodide automaatne uuendamine - seni kuni ta on fookuses kood ei muutu. Eeldab, et „Puudutamisel tõsta kinnituskood esile“ või „Näitamiseks puuduta“ on sisse lülitatud.</string>
|
||||
<string name="pin_keyboard_description">Numbriklahvistiku sisselülitamiseks sisesta uus salasõna. Palun arvesta, et selleks peab salasõna koosnema ainult numbritest</string>
|
||||
<string name="pin_keyboard_error">Lukustusvaate numbriklahvistiku kasutuselevõtmisel tekkis viga</string>
|
||||
<string name="pin_keyboard_error_description">Lukustusvaate numbriklahvistiku pole võimalik kasutusele võtta. Sinu salasõna peab koosnema ainult numbritest.</string>
|
||||
<string name="pin_keyboard_disabled">Salasõna on muudetud. Lukustusvaate numbriklahvistik pole enam kasutusel.</string>
|
||||
<string name="selected">Valitud</string>
|
||||
<string name="dark_theme_title">Tume kujundus</string>
|
||||
<string name="light_theme_title">Hele kujundus</string>
|
||||
<string name="amoled_theme_title">Must kujundus AMOLED-i jaoks</string>
|
||||
<string name="system_theme_title">Määratud akukasutuse optimeerija poolt</string>
|
||||
<string name="system_amoled_theme_title">Määratud akukasutuse optimeerija poolt (AMOLED)</string>
|
||||
<string name="normal_viewmode_title">Tavaline</string>
|
||||
<string name="compact_mode_title">Kompaktne</string>
|
||||
<string name="small_mode_title">Väike</string>
|
||||
<string name="tiles_mode_title">Ruudustik</string>
|
||||
<string name="unknown_issuer">Tundmatu väljaandja</string>
|
||||
<string name="unknown_account_name">Tundmatu kasutajakonto nimi</string>
|
||||
<plurals name="import_error_dialog">
|
||||
<item quantity="one">Aegis ei suutnud importida %d-t kirjet ja see kirje jääb vahele. Leiad täpsemat teavet vea kohta, kui klõpsid viidet „üksikasjad“.</item>
|
||||
<item quantity="other">Aegis ei suutnud importida %d-t kirjet ja need kirjed jäävad vahele. Leiad täpsemat teavet vea kohta, kui klõpsid viidet „üksikasjad“.</item>
|
||||
</plurals>
|
||||
<string name="unable_to_process_deeplink">Süvalinki ei õnnestunud töödelda</string>
|
||||
<string name="unable_to_read_qrcode_file">Failis leiduvad QR-koodi ei õnnestunud töödelda: %s.</string>
|
||||
<string name="unable_to_process_shared_text">Jagatud teksti pole võimalik töödelda ühekordse salasõnana</string>
|
||||
<string name="unable_to_read_qrcode_files">Mõnede QR-koodide lugemine ja töötlemine pole võimalik. Importimisele kuuluvad vaid %1$d kirjet %2$d-st.</string>
|
||||
<string name="unable_to_generate_qrcode">QR-koodi loomine ei õnnestu</string>
|
||||
<string name="select_picture">Vali pilt</string>
|
||||
<string name="select_icon">Vali ikoon</string>
|
||||
<string name="tile_open_vault" comment="label for a quick settings tile that opens the app when tapped">Ava andmehoidla</string>
|
||||
<string name="tile_open_scanner" comment="label for a quick settings tile that opens the QR code scanner when tapped">Ava skanner</string>
|
||||
<string name="toggle_checkboxes">Märgista märkeruudud või eemalda märgistus</string>
|
||||
<string name="search">Otsi</string>
|
||||
<string name="channel_name_lock_status">Lukustuse olek</string>
|
||||
<string name="channel_description_lock_status">Aegis võib luua püsiteavituse, mis kinnitab sulle, kui andmehoidla lukustub</string>
|
||||
<string name="vault_unlocked_state">Andmehoidla pole lukus. Lukustamiseks klõpsi siin.</string>
|
||||
<string name="version">Versioon</string>
|
||||
<string name="changelog">Muudatuste logi</string>
|
||||
<string name="whats_new">Mida on uut</string>
|
||||
<string name="github_description">Lähtekood, veahaldus ja teave</string>
|
||||
<string name="license">Litsents</string>
|
||||
<string name="license_description">Aegis Authenticator on litsentseeritud GPLv3 alusel</string>
|
||||
<string name="third_party_licenses">Kolmandate osapoolte litsentsid</string>
|
||||
<string name="third_party_licenses_description">Aegise kasutatavate kolmandate osapoolte teekide litsentsid</string>
|
||||
<string name="country_netherlands">Madalmaad</string>
|
||||
<string name="email_us">Saada e-kiri</string>
|
||||
<string name="visit_website">Külasta meie veebisaiti</string>
|
||||
<string name="about_support">Kasutajatugi</string>
|
||||
<string name="support_rate">Hinda meie rakendust</string>
|
||||
<string name="support_rate_description">Toeta meid koostades arvustuse Google Play rakendustepoes</string>
|
||||
<string name="webview_error">Selles nutiseadmes puudub webview-teegi tugi. Seda on vaja muudatuste logi ja litsentside kuvamiseks. Tegemist on operatsioonisüsteemi komponendiga.</string>
|
||||
<string name="email">E-post</string>
|
||||
<string name="time_sync_warning_title">Kellaaja automaatne sünkroniseerimine</string>
|
||||
<string name="time_sync_warning_message">Õigete tuvastusskoodide loomiseks vajab Aegis, et kellaajad nutiserdme ja serveri vahel on sünkroonis. Isegi mõnesekundiline erinevus võib tulemuseks anda vale koodi. Tundub, et sinu nutiseadmes on puudu automaatne aja sünkroniseerimine. Kas sa tahaksid seda nüüd teha?</string>
|
||||
<string name="time_sync_warning_disable">Ära hoiata mind enam. Ma tean, mida ma teen.</string>
|
||||
<string name="google_qr_export_unrelated">Tuvastasin mitteseotud QR-koodi. Proovi skanneri uuesti käivitamist.</string>
|
||||
<plurals name="google_qr_export_scanned">
|
||||
<item quantity="one">Skaneerisin %1$d/%2$d QR-koodi</item>
|
||||
<item quantity="other">Skaneerisin %1$d/%2$d QR-koodi</item>
|
||||
</plurals>
|
||||
<string name="google_qr_export_unexpected">Eeldasin näga QR-koodi #%1$d, aga selle asemel skaneerisin #%2$d</string>
|
||||
<string name="backup_error_bar_message"><b>Andmehoidla hiljutine varundamine ei õnnestunud</b></string>
|
||||
<string name="backup_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'.">Vea tekkimise tõttu hiljutine andmehoidla varundus %1$s abil ei õnnestunud. Varukoopia loomise katse toimus %2$s. Selleks, et varundus toimiks korrektselt, palun kontrolli varunduse seadistusi. </string>
|
||||
<string name="backup_permission_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'.">Kuna Aegisel polnud õigust kirjutada varunduse kausta, siis hiljutine andmehoidla varundus %1$s abil ei õnnestunud. Varukoopia loomise katse toimus %2$s. Selline viga võib tekkida, kui sa oled hiljuti muutnud varukoopia kausta nime või ta teisaldanud, samuti ka kui oled hiljuti Aegise varukoopiast taastanud. Palun seadista varukoopia kaust uuesti. </string>
|
||||
<string name="backup_system_builtin">Aegise sisseehitatud automaatne varundus</string>
|
||||
<string name="backup_system_android">Androidi pilvevarundus</string>
|
||||
<string name="backup_reminder_bar_message_with_latest" comment="The parameter is an elapsed time in the style of 'x seconds/minutes/days ago'">Viimane varukoopia on aegunud (%s) </string>
|
||||
<string name="backup_reminder_bar_message">Muudatused on varundamata </string>
|
||||
<string name="backup_reminder_bar_dialog_title">Muudatused on varundamata</string>
|
||||
<string name="backup_reminder_bar_dialog_summary">Andmehoidla viimased muudatused on veel varundamata. Vältimaks, et kaotad ligipääsu oma kasutajakontodele, on oluline, et teed sagedasti varukoopiaid. Palun kaalu automaatse varunduse kasutuselevõtmist seadistuste menüüst. </string>
|
||||
<string name="backup_reminder_bar_dialog_accept">Seadista varundamine</string>
|
||||
<string name="backup_plaintext_export_warning"><b>Andmehoidla on hiljuti eksporditud lihtteksti vormingus</b></string>
|
||||
<string name="pref_show_plaintext_warning_hint">Ära näita seda hoiatust uuesti</string>
|
||||
<string name="backup_plaintext_warning_explanation">Sa näed seda hoiatusest, sest oled hiljuti andmehoidlat eksportinud krüptimata vormingus. Säilitamaks sinu autentimiskirjete turvalisust soovitame me sul selle faili kustutada kohe, kui teda enam vaja pole.</string>
|
||||
<string name="switch_camera">Vaheta kaamerat</string>
|
||||
<string name="empty_list">Me ei saa sulle näidata ühtegi koodi. Kirjete lisamiseks klõpsi + ikooni lehe all paremas nurgas</string>
|
||||
<string name="empty_list_title">Ühtegi kirjet ei leidu</string>
|
||||
<string name="empty_group_list">Ühtegi gruppi pole näidatud. Saad neid lisada kirje muutmisvaatest</string>
|
||||
<string name="empty_group_list_title">Ühtegi gruppi ei leidu</string>
|
||||
<string name="no_icon_packs">Ühtegi ikoonipakki pole veel imporditud. Mõne sellise importimisejs klõpsi + ikooni. Soovitus: vaata ka <a href="https://aegis-icons.github.io">aegise ikoone</a>.</string>
|
||||
<string name="no_icon_packs_title">Ikoonipakke pole</string>
|
||||
<string name="pick_icon">Vali ikoon</string>
|
||||
<string name="uncategorized">Kategoriseerimata</string>
|
||||
<string name="done">Valmis</string>
|
||||
<plurals name="qr_count">
|
||||
<item quantity="one">%d / %d QR-koodi</item>
|
||||
<item quantity="other">%d / %d QR-koodi</item>
|
||||
</plurals>
|
||||
<string name="next">Edasi</string>
|
||||
<string name="previous">Tagasi</string>
|
||||
<string name="copy_uri">Kopeeri URI</string>
|
||||
<string name="unable_to_copy_uri_to_clipboard">URI kopeerimine lõikelauale ei õnnestunud</string>
|
||||
<string name="uri_copied_to_clipboard">URI on kopeeritud lõikelauale</string>
|
||||
<string name="transfer_entry_description">Skaneeri seda QR-koodi autentimisrakendusega, kuhu soovid seda kirjet eksportida</string>
|
||||
<string name="transfer_entry_brightness">Täisekraani ereduse sisse/välja lülitamiseks klõosi QR-koodi</string>
|
||||
<string name="google_auth_compatible_transfer_description">Skaneeri neid QR-koode Aegise või Google Authenticatoriga.\n\nGoogle Authenticatori tehniliste piirangute tõttu on võimalik eksportida vaid TOTP ja HOTP tunnuslube, mis kasutavad SHA1 räsi ning kuvavad tulemuseks 6-kohalisi koode</string>
|
||||
<string name="password_strength_very_weak">Väga nõrk</string>
|
||||
<string name="password_strength_weak">Nõrk</string>
|
||||
<string name="password_strength_fair">Keskpärane</string>
|
||||
<string name="password_strength_good">Hea</string>
|
||||
<string name="password_strength_strong">Tugev</string>
|
||||
<string name="password_strength_unknown">Salasõna tugevuse analüüsimiseks on ta liiga pikk</string>
|
||||
<string name="pref_pin_keyboard_title">Kasuta lukustusvaates numbriklahvistikku</string>
|
||||
<string name="pref_pin_keyboard_summary">Kasuta seda eelistust, kui soovid lukustusvaates näha numbriklahvistikku. Kasutatav vaid numbritest koosneva salasõna puhul</string>
|
||||
<string name="title_activity_preferences">Seadistused</string>
|
||||
<string name="title_activity_manage_groups">Halda gruppe</string>
|
||||
<string name="title_activity_transfer">Kirjete teisaldamine mujale</string>
|
||||
<string name="title_activity_about">Rakenduse teave</string>
|
||||
<string name="title_activity_edit_entry">Muuda kirjet</string>
|
||||
<string name="title_activity_scan_qr">Skanneeri QR-koodi</string>
|
||||
<string name="title_activity_import_entries">Impordi kirjeid</string>
|
||||
<string name="title_activity_assign_icons">Lisa ikoone</string>
|
||||
<string name="title_activity_licenses">Kolmandate osapoolte litsentsid</string>
|
||||
<string name="dialog_wipe_entries_title">Kõikide kirjete kustutamine</string>
|
||||
<string name="dialog_wipe_entries_message">Sinu andmehoidlas juba leidub kirjeid. Kas sa soovid enne importimist need kirjed eemaldada?\n\n<b>Seda tehes kaotad sa jäädavalt ligipääsu eemaldatud kirjetele ja vastavale autentimisteenusele</b>.</string>
|
||||
<string name="dialog_wipe_entries_checkbox">Kustuta andmehoidla sisu</string>
|
||||
<string name="panic_trigger_ignore_toast">Aegis tuvastas paanikanupu vajutuse, kuid kuna vastav seadistus on keelatud, siis me ei tee midagi</string>
|
||||
<string name="pref_panic_trigger_title">Paanikanupu vajutusel kustuta andmehoidla</string>
|
||||
<string name="pref_panic_trigger_summary">Kui Guardian Projekti Ripple\'i rakenduses vajutatakse paanikanuppu, siis kustuta andmehoidla</string>
|
||||
<string name="import_vault">Impordi Aegise andmehoidla</string>
|
||||
<string name="import_vault_hint">Kas soovid andmeid importida mõnest teisest kaheastmelise autentimise haldusrakendusest? Esmalt lõpeta algseadistamine ja seejärel ava rakenduse seadistustest importimise valikud.</string>
|
||||
<plurals name="import_duplicate_toast">
|
||||
<item quantity="one">%d võimalik kontrollimata duplikaat. Palun vaata kirjete loend üle.</item>
|
||||
<item quantity="other">%d võimalikku kontrollimata duplikaati. Palun vaata kirjete loend üle.</item>
|
||||
</plurals>
|
||||
<string name="importer_help_2fas">Ava 2FAS Authenticatori varukoopia fail.</string>
|
||||
<string name="importer_help_aegis">Ava Aegise ekspordi- või varukoopia fail.</string>
|
||||
<string name="importer_help_authenticator_plus">Määratle Authenticator Plusi ekspordifail, mille saad rakendusest siit: <b>Seadistused -> Varundus ja taastamine -> Ekspordi teksti- või html-failina</b>.</string>
|
||||
<string name="importer_help_authy">Ava <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b> faili koopia, leiad Authy sisemisest andmeruumist.</string>
|
||||
<string name="importer_help_andotp">Ava andOTP ekspordi- või varukoopia fail.</string>
|
||||
<string name="importer_help_bitwarden">Ava Bitwardeni ekspordi- või varukoopia fail. Krüptitud failid pole toetatud.</string>
|
||||
<string name="importer_help_battle_net_authenticator">Ava <b>/data/data/com.blizzard.messenger/shared_prefs/com.blizzard.messenger.authenticator_preferences.xml</b> faili koopia, mille leiad Battle.net Authenticatori sisemisest andmeruumist.</string>
|
||||
<string name="importer_help_duo">Ava <b>/data/data/com.duosecurity.duomobile/files/duokit/accounts.json</b> faili koopia, mille leiad DUO sisemisest andmeruumist.</string>
|
||||
<string name="importer_help_ente_auth">Ava Ente Authi ekspordifail. Hetkel on toetatud vaid krüptimata failidest importimine.</string>
|
||||
<string name="importer_help_freeotp">FreeOTP 2: Ava varundatud fail.\nFreeOTP 1.x: Ava <b>/data/data/org.fedorahosted.freeotp/shared_prefs/tokens.xml</b> faili koopia, mille leiad FreeOTP sisemise andmeruumi kaustast.</string>
|
||||
<string name="importer_help_freeotp_plus">Ava FreeOTP+ ekspordifail.</string>
|
||||
<string name="importer_warning_title_freeotp2">FreeOTP 2 ühilduvus</string>
|
||||
<string name="importer_warning_message_freeotp2">FreeOTP 2 rakendusega on seotud mitu viga, mis võib tekitada olukorra, kus varukoopiad on vigased. Aegis proovib olukorrast päästa maksimumi, aga võib juhtuda, et mõned või lausa kõik kirjed jäävad importimata.</string>
|
||||
<string name="importer_help_google_authenticator"><b>Toetatud on ainult Google Authenticatori versiooni 5.10 või varasemad failid</b>.\n\nAva <b>/data/data/com.google.android.apps.authenticator2/databases/databases</b> faili koopia, mille leiad Google Authenticatori sisemise andmeruumi kaustast.</string>
|
||||
<string name="importer_help_microsoft_authenticator">Ava <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b> faili koopia, mille leiad Microsoft Authenticatori sisemisest andmeruumist.</string>
|
||||
<string name="importer_help_plain_text">Lisa siia lihttekstina vormindatud fail, kus iga Google Authenticatori URI asub omaette real.</string>
|
||||
<string name="importer_help_steam"><b>Steam 3.0 ja uuemad pole toetatud</b>. Ava <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b> faili koopia, mille leiad Steami sisemise andmeruumi kaustast.</string>
|
||||
<string name="importer_help_stratum">Ava Stratumi ekspordifail, mille saad rakendusest valides <b>„Seadistused“ → „Varundus“ → „Varunda krüptitud faili (soovitatud)“</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Ava TOTP Authenticatori ekspordifail.</string>
|
||||
<string name="importer_help_winauth">Ava WinAuthi ekspordifail.</string>
|
||||
<string name="import_assign_icons_dialog_title">Lisa ikoone</string>
|
||||
<string name="import_assign_icons_dialog_text">Kas sa sooviksid lisada imporditud kirjetele ikoone?</string>
|
||||
<string name="importer_encrypted_exception_google_authenticator">Krüptitud kirje jäi vahele: %s</string>
|
||||
<string name="importer_help_direct">Impordi kirjed otse „%s“ rakendusest. See eeldab, et rakendus on nutiseadmesse paigaldatud ja Aegisel on juurkasutaja õigused.</string>
|
||||
<string name="groups">Grupid</string>
|
||||
<string name="pref_focus_search">Rakenduse käivitamisel pane fookus otsingule</string>
|
||||
<string name="pref_focus_search_summary">Rakenduse käivitamisel võimalda kohe alustada otsingut.</string>
|
||||
<string name="pref_grouping_halves">Rühmita kahes osas</string>
|
||||
<string name="pref_grouping_none">Ära rühmita</string>
|
||||
<string name="pref_grouping_size_two">Rühmita kahekaupa</string>
|
||||
<string name="pref_grouping_size_three">Rühmita kolmekaupa</string>
|
||||
<string name="pref_grouping_size_four">Rühmita neljakaupa</string>
|
||||
<string name="pref_copy_behavior_never">Ära kopeeri iialgi</string>
|
||||
<string name="pref_copy_behavior_single_tap">Kopeeri ühe puudutusega</string>
|
||||
<string name="pref_copy_behavior_double_tap">Kopeeri kahe puudutusega</string>
|
||||
<string name="pref_account_name_position_hidden">Peidetud</string>
|
||||
<string name="pref_account_name_position_end">Väljaandja kõrval</string>
|
||||
<string name="pref_account_name_position_below">Väljaandja all</string>
|
||||
<plurals name="time_elapsed_seconds" tools:ignore="UnusedResources">
|
||||
<item quantity="one">%d sekund tagasi</item>
|
||||
<item quantity="other">%d sekundit tagasi</item>
|
||||
</plurals>
|
||||
<plurals name="time_elapsed_minutes" tools:ignore="UnusedResources">
|
||||
<item quantity="one">%d minut tagasi</item>
|
||||
<item quantity="other">%d minutit tagasi</item>
|
||||
</plurals>
|
||||
<plurals name="time_elapsed_hours" tools:ignore="UnusedResources">
|
||||
<item quantity="one">%d tund tagasi</item>
|
||||
<item quantity="other">%d tundi tagasi</item>
|
||||
</plurals>
|
||||
<plurals name="time_elapsed_days" tools:ignore="UnusedResources">
|
||||
<item quantity="one">%d päev tagasi</item>
|
||||
<item quantity="other">%d päeva tagasi</item>
|
||||
</plurals>
|
||||
<plurals name="time_elapsed_years" tools:ignore="UnusedResources">
|
||||
<item quantity="one">%d aasta tagasi</item>
|
||||
<item quantity="other">%d aastat tagasi</item>
|
||||
</plurals>
|
||||
<plurals name="dropdown_checkboxes_default_count">
|
||||
<item quantity="one">%d kirje on valitud</item>
|
||||
<item quantity="other">%d kirjet on valitud</item>
|
||||
</plurals>
|
||||
</resources>
|
5
app/src/main/res/values-eu-rES-v29/strings.xml
Normal file
5
app/src/main/res/values-eu-rES-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Sistemaren defektuzkoa</string>
|
||||
<string name="system_amoled_theme_title">Sistemaren defektuzkoa (AMOLED)</string>
|
||||
</resources>
|
|
@ -64,7 +64,14 @@
|
|||
<string name="pref_backups_reminder_summary">Erakutsi segurtasun kopia egiteko gogorarazpena zure azken aldaketen kopiarik ez bada egin.</string>
|
||||
<string name="pref_backups_reminder_dialog_title">Desaktibatu segurtasun kopiaren gogorarazpena</string>
|
||||
<string name="pref_backups_reminder_dialog_summary">Gogorarazpena desaktibatzean Aegisek ez dizu kopien inguruko abisurik emango. Honek zure gakoak galtzea ekar dezake. Gogorarazpena desaktibatu egin nahi duzu?</string>
|
||||
<string name="pref_backups_versioning_strategy_title">Segurtasun kopien estrategia</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">Bertsio kopuru bat mantendu</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup">Segurtasun kopia bakarra</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup_warning">Aukeratutako estrategia ez da fidagarria eta ez dugu gomendatzen. Segurtasun kopia bakarrak huts egiten badu datuak galdu egin ditzakezu.</string>
|
||||
<string name="pref_backups_versioning_strategy_dialog_title">Aukeratu segurtasun kopien estrategia</string>
|
||||
<string name="pref_backups_location_title">Segurtasun kopien kokalekua</string>
|
||||
<string name="pref_backups_location_summary">Segurtasun-kopiak hemen gordeko dira</string>
|
||||
<string name="pref_backup_location_summary">Segurtasun-kopiak hemen gordeko dira</string>
|
||||
<string name="pref_backups_trigger_title">Segurtasun-kopien abiarazlea</string>
|
||||
<string name="pref_backups_trigger_summary">Abiarazi segurtasun-kopia eskuz</string>
|
||||
<string name="pref_backups_versions_title">Gorde beharreko bertsio kopurua</string>
|
||||
|
@ -220,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Aukeratu autentifikazio modua mesedez</string>
|
||||
<string name="encrypting_vault">Biltegia zifratzen</string>
|
||||
<string name="exporting_vault">Biltegia esportatzen</string>
|
||||
<string name="optimizing_icon">Ikonoak optimizatzen</string>
|
||||
<string name="optimizing_icon_multiple">Ikonoak optimizatzen %1$d/%2$d</string>
|
||||
<string name="reading_file">Fitxategia irakurtzen</string>
|
||||
<string name="requesting_root_access">Root sarbidea eskatzen</string>
|
||||
<string name="analyzing_qr">QR kodea aztertzen</string>
|
||||
|
@ -356,6 +365,8 @@
|
|||
<string name="clear">Garbitu</string>
|
||||
<string name="pref_highlight_entry_title">Nabarmendu tokenak ukitzean</string>
|
||||
<string name="pref_highlight_entry_summary">Egin elkarrengandik errazago bereizten diren tokenak, sakatzen dituzunean aldi baterako nabarmenduz</string>
|
||||
<string name="pref_groups_multiselect_title">Talde bat baino gehiago aukeratu</string>
|
||||
<string name="pref_groups_multiselect_summary">Talde bat baino gehiago aldi berean aukeratzea baimendu</string>
|
||||
<string name="pref_minimize_on_copy_title">Txikitu kopiatzean</string>
|
||||
<string name="pref_minimize_on_copy_summary">Aplikazioa txikitu tokena kopiatutakoan</string>
|
||||
<string name="pref_copy_behavior_title">Kopiatu tokenak arbelera</string>
|
||||
|
@ -456,6 +467,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Ezin da URIa arbelean kopiatu</string>
|
||||
<string name="uri_copied_to_clipboard">URIa arbelean kopiatu da</string>
|
||||
<string name="transfer_entry_description">Eskaneatu QR kode hau sarrera transferitu nahi diozun aitentifikazio-aplikazioarekin</string>
|
||||
<string name="transfer_entry_brightness">Sakatu QR kodea pantaila osoan ikusteko</string>
|
||||
<string name="google_auth_compatible_transfer_description">Eskaneatu QR kode hauek Aegis edo Google Authenticator erabiliz.\n\nGoogle Authenticator aplikazioaren mugak direla eta, SHA1 darabilten eta 6 zenbakiko kodeak erabiltzen dituzten TOTP & HOTP tokenak bakarrik sartzen dira</string>
|
||||
<string name="password_strength_very_weak">Oso ahula</string>
|
||||
<string name="password_strength_weak">Ahula</string>
|
||||
|
@ -489,7 +501,6 @@
|
|||
<string name="importer_help_2fas">Aukeratu 2FAS Authenticator segurtasun-kopia fitxategia.</string>
|
||||
<string name="importer_help_aegis">Aegisen esportazio/segurtasun-kopia fitxategia aukeratu.</string>
|
||||
<string name="importer_help_authenticator_plus">Authenticator Plus esportazio fitxategia aukeratu. Lortzeko modua: <b>Settings -> Backup & Restore -> Export as Text and HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Aukeratu Authenticator Proren esportazio fitxategia <b>Settings -> Back up -> Back up to encrypted file (recommended)</b> aukeratik lortu bezala.</string>
|
||||
<string name="importer_help_authy"><b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b> fitxategia aukeratu.</string>
|
||||
<string name="importer_help_andotp">andOTPren esportazio/segurtasun-kopia fitxategia aukeratu.</string>
|
||||
<string name="importer_help_bitwarden">Kargatu Bitwardenen esportazio/segurtasun-kopia fitxategi bat. Ezin dituzu zifratutako fitxategiak kargatu.</string>
|
||||
|
@ -505,6 +516,7 @@
|
|||
<string name="importer_help_plain_text">Google Authenticator URIak dituen testu hutseko fitxategia aukeratu.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 eta berriagoak ezin dira erabili.</b>erabili
|
||||
<b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b> fitxategiaren kopia, berau Steamen barne biltegiratzearen karpetan egongo da.</string>
|
||||
<string name="importer_help_stratum">Aukeratu Stratumen esportazio fitxategia <b>Settings -> Back up -> Back up to encrypted file (recommended)</b> aukeratik lortu bezala.</string>
|
||||
<string name="importer_help_totp_authenticator">TOTP Authenticatoren esportazio fitxategia aukeratu.</string>
|
||||
<string name="importer_help_winauth">WinAuthen esportazio fitxategia aukeratu.</string>
|
||||
<string name="import_assign_icons_dialog_title">Esleitu ikonoak</string>
|
||||
|
|
2
app/src/main/res/values-fa-rIR-v29/strings.xml
Normal file
2
app/src/main/res/values-fa-rIR-v29/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
5
app/src/main/res/values-fi-rFI-v29/strings.xml
Normal file
5
app/src/main/res/values-fi-rFI-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Järjestelmän oletus</string>
|
||||
<string name="system_amoled_theme_title">Järjestelmän oletus (AMOLED)</string>
|
||||
</resources>
|
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Valitse todennusmenetelmä</string>
|
||||
<string name="encrypting_vault">Holvia salataan</string>
|
||||
<string name="exporting_vault">Viedään holvia</string>
|
||||
<string name="optimizing_icon">Optimoidaan kuvaketta</string>
|
||||
<string name="optimizing_icon_multiple">Optimoidaan kuvakkeita %1$d/%2$d</string>
|
||||
<string name="reading_file">Luetaan tiedostoa</string>
|
||||
<string name="requesting_root_access">Pyydetään root-oikeuksia</string>
|
||||
<string name="analyzing_qr">Analysoidaan QR-koodia</string>
|
||||
|
@ -361,8 +363,17 @@
|
|||
<string name="preference_reset_usage_count_dialog">Haluatko varmasti nollata kaikkien holvisi kohteiden käyttömäärän?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Muistiinpano</string>
|
||||
<string name="clear">Tyhjennä</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Korvaa olemassa olevat kohteet</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Korvaa olemassa olevat kohteet uusilla. Tätä toimintoa ei voi kumota</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Lisää pääte</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Peruuta tallennus</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Vahvista poisto</string>
|
||||
<string name="pref_haptic_feedback_summary">Laitteesi värisee, kun koodit päivittyvät</string>
|
||||
<string name="pref_haptic_feedback_title">Haptinen palaute</string>
|
||||
<string name="pref_highlight_entry_title">Korosta todennuskoodit napauttamalla</string>
|
||||
<string name="pref_highlight_entry_summary">Tee todennuskoodeista helpompi erottaa toisistaan korostamalla niitä tilapäisesti napauttamalla</string>
|
||||
<string name="pref_groups_multiselect_title">Valitse useita ryhmiä</string>
|
||||
<string name="pref_groups_multiselect_summary">Salli useiden ryhmien valitseminen samanaikaisesti</string>
|
||||
<string name="pref_minimize_on_copy_title">Pienennä kopioidessa</string>
|
||||
<string name="pref_minimize_on_copy_summary">Pienennä sovellus todennuskoodin kopioinnin jälkeen</string>
|
||||
<string name="pref_copy_behavior_title">Kopioi todennuskoodit leikepöydälle</string>
|
||||
|
@ -466,6 +477,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">URI:a ei voitu kopioida leikepöydälle</string>
|
||||
<string name="uri_copied_to_clipboard">URI kopioitiin leikepöydälle</string>
|
||||
<string name="transfer_entry_description">Skannaa tämä QR-koodi todennussovelluksella, johon haluat siirtää tämän kohteen</string>
|
||||
<string name="transfer_entry_brightness">Napauta QR-koodia muuttaaksesi koko näytön kirkkautta</string>
|
||||
<string name="google_auth_compatible_transfer_description">Skannaa nämä QR-koodit Aegisilla tai Google Authenticatorilla.\n\nGoogle Authenticator -sovelluksen rajoitusten vuoksi, vain SHA1-suojausta ja 6-numeroisia koodeja tuottavat TOTP- ja HOTP-todennuskoodit sisällytetään</string>
|
||||
<string name="password_strength_very_weak">Erittäin heikko</string>
|
||||
<string name="password_strength_weak">Heikko</string>
|
||||
|
@ -499,7 +511,6 @@
|
|||
<string name="importer_help_2fas">Anna 2FAS Authenticatorin varmuuskopiotiedosto.</string>
|
||||
<string name="importer_help_aegis">Anna Aegisisin vienti-/varmuuskopiotiedosto.</string>
|
||||
<string name="importer_help_authenticator_plus">Anna Authenticator Plus -varmuuskopiotiedosto, jonka saat menemällä <b>Asetukset ->Varmuuskopiointi ja palautus -> Vie teksti- tai HTML-tiedostona</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Toimita Authenticator Pro -vientitiedosto, jonka löydät menemällä <b>Asetukset -> Varmuuskopioi -> Varmuuskopioi salattuun tiedostoon (suositus)</b>.</string>
|
||||
<string name="importer_help_authy">Anna kopio tiedostosta <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, joka sijaitsee Authyn sisäisessä tallennushakemistossa.</string>
|
||||
<string name="importer_help_andotp">Anna andOTP:n vienti-/varmuuskopiotiedosto.</string>
|
||||
<string name="importer_help_bitwarden">Anna Bitwardenin vienti-/varmuuskopiotiedosto. Salattuja tiedostoja ei tueta.</string>
|
||||
|
@ -514,6 +525,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Anna kopio tiedostosta <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, joka sijaitsee Microsoft Authenticatorin sisäisessä tallennushakemistossa.</string>
|
||||
<string name="importer_help_plain_text">Anna raakatekstitiedosto, joka sisältää Google Authenticatorin URIn jokaisella rivillä.</string>
|
||||
<string name="importer_help_steam"><b>Steamin versiota 3.0 ja uudempia ei tueta</b>. Toimita kopio tiedostosta <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>, joka sijaitsee Steamin sisäisen tallennustilan hakemistossa.</string>
|
||||
<string name="importer_help_stratum">Toimita Starum-vientitiedosto, jonka löydät menemällä <b>Asetukset -> Varmuuskopioi -> Varmuuskopioi salattuun tiedostoon (suositus)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Anna TOTP Authenticatorin vientitiedosto.</string>
|
||||
<string name="importer_help_winauth">Anna WinAuthin vientitiedosto.</string>
|
||||
<string name="import_assign_icons_dialog_title">Määritä kuvakkeet</string>
|
||||
|
|
5
app/src/main/res/values-fr-rFR-v29/strings.xml
Normal file
5
app/src/main/res/values-fr-rFR-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Valeurs par défaut du système</string>
|
||||
<string name="system_amoled_theme_title">Valeur par défaut du système (AMOLED)</string>
|
||||
</resources>
|
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Veuillez sélectionner une méthode d\'authentification</string>
|
||||
<string name="encrypting_vault">Chiffrement du coffre-fort</string>
|
||||
<string name="exporting_vault">Export du coffre-fort</string>
|
||||
<string name="optimizing_icon">Optimisation de l\'icône</string>
|
||||
<string name="optimizing_icon_multiple">Optimisation des icônes %1$d/%2$d</string>
|
||||
<string name="reading_file">Lecture du fichier</string>
|
||||
<string name="requesting_root_access">Demande d\'accès root</string>
|
||||
<string name="analyzing_qr">Analyse du code QR</string>
|
||||
|
@ -361,8 +363,25 @@
|
|||
<string name="preference_reset_usage_count_dialog">Êtes-vous sûr de vouloir définir le nombre d\'utilisations de chaque entrée de votre coffre-fort à 0 ?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Note</string>
|
||||
<string name="clear">Effacer</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Dupliquer l\'entrée</string>
|
||||
<string name="dialog_duplicate_entry_message">Cette entrée a le même nom et émetteur qu\'une ou plusieurs entrées existantes. Comment voulez-vous procéder?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Écraser la ou les entrées existantes</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Remplacer la ou les entrées existantes par la nouvelle. Cette action ne peut pas être annulée</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Ajouter un suffixe</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Ajouter un suffixe au nom de cette nouvelle entrée. Le nouveau nom sera : %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Annuler l\'enregistrement</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Vous permet de modifier l\'entrée avant de tenter de l\'enregistrer à nouveau</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Êtes-vous sûr de vouloir supprimer %d entrée avec le nom suivant :\n\n%s - %s</item>
|
||||
<item quantity="other">Êtes-vous sûr de vouloir supprimer %d entrées avec le nom suivant :\n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Confirmer la suppression</string>
|
||||
<string name="pref_haptic_feedback_summary">Faire vibrer votre appareil lorsque les codes sont actualisés</string>
|
||||
<string name="pref_haptic_feedback_title">Retour haptique</string>
|
||||
<string name="pref_highlight_entry_title">Surligner les jetons lorsqu\'ils sont appuyés</string>
|
||||
<string name="pref_highlight_entry_summary">Rendre les jetons plus faciles à distinguer les uns des autres en les surlignant temporairement lorsqu\'ils sont appuyés</string>
|
||||
<string name="pref_groups_multiselect_title">Groupes avec sélection multiple</string>
|
||||
<string name="pref_groups_multiselect_summary">Autoriser la sélection de plusieurs groupes en même temps</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimiser lors de la copie</string>
|
||||
<string name="pref_minimize_on_copy_summary">Minimiser l\'application après avoir copié un jeton</string>
|
||||
<string name="pref_copy_behavior_title">Copier les jetons dans le presse-papier</string>
|
||||
|
@ -466,6 +485,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Impossible de copier l\'URI dans le presse-papier</string>
|
||||
<string name="uri_copied_to_clipboard">URI copiée dans le presse-papier</string>
|
||||
<string name="transfer_entry_description">Scannez ce code QR avec l\'application d\'authentification vers laquelle vous souhaitez transférer cette entrée</string>
|
||||
<string name="transfer_entry_brightness">Appuyer sur le code QR pour activer la luminosité maximale</string>
|
||||
<string name="google_auth_compatible_transfer_description">Scannez ces codes QR avec Aegis ou Google Authenticator.\n\nEn raison des limitations de l\'application Google Authenticator, seuls les jetons TOTP & HOTP qui utilisent SHA1 et produisent des codes à 6 chiffres sont inclus</string>
|
||||
<string name="password_strength_very_weak">Très faible</string>
|
||||
<string name="password_strength_weak">Faible</string>
|
||||
|
@ -499,7 +519,6 @@
|
|||
<string name="importer_help_2fas">Fournir une sauvegarde 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Fournir un export/sauvegarde Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Fournir un export Authenticator Plus obtenu via <b>Paramètres -> Sauvegarde & Restauration -> Exporter en tant que texte et HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Fournir un export Authenticator Pro obtenu via <b>Paramètres -> Sauvegarde -> Sauvegarder en tant que fichier chiffré (recommandé)</b>.</string>
|
||||
<string name="importer_help_authy">Fournir une copie de <b>/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, situé dans le répertoire de stockage interne d\'Authy.</string>
|
||||
<string name="importer_help_andotp">Fournir un export/sauvegarde andOTP.</string>
|
||||
<string name="importer_help_bitwarden">Fournir un export/sauvegarde Bitwarden. Les fichiers chiffrés ne sont pas pris en charge.</string>
|
||||
|
@ -514,6 +533,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Fournir une copie de <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, situé dans le répertoire de stockage interne de Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Fournir un fichier texte brut avec une URI Google Authenticator sur chaque ligne.</string>
|
||||
<string name="importer_help_steam"><b>Steam 3.0 et plus récents ne sont pas pris en charge</b>. Fournissez une copie de <b>/data/data/com.valvesoftware. ndroid.steam.community/files/Steamguard-*.json</b>, situé dans le répertoire de stockage interne de Steam.</string>
|
||||
<string name="importer_help_stratum">Fournir un export Stratum obtenu via <b>Paramètres -> Sauvegarde -> Sauvegarder en tant que fichier chiffré (recommandé)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Fournir un export TOTP Authenticator.</string>
|
||||
<string name="importer_help_winauth">Fournir un export WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Association des icônes</string>
|
||||
|
|
5
app/src/main/res/values-fy-rNL-v29/strings.xml
Normal file
5
app/src/main/res/values-fy-rNL-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Systeemstandert</string>
|
||||
<string name="system_amoled_theme_title">Systeemstandert (AMOLED)</string>
|
||||
</resources>
|
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Kies in oanmeldmetoade</string>
|
||||
<string name="encrypting_vault">De klûs wurdt fersifere</string>
|
||||
<string name="exporting_vault">De klûs wurdt eksportearre</string>
|
||||
<string name="optimizing_icon">Piktogram wurdt optimalisearre</string>
|
||||
<string name="optimizing_icon_multiple">Piktogrammen %1$d/%2$d wurde optimalisearre</string>
|
||||
<string name="reading_file">Bestân lêze</string>
|
||||
<string name="requesting_root_access">Root-tagong wurdt oanfrege</string>
|
||||
<string name="analyzing_qr">QR-koade analysearje</string>
|
||||
|
@ -361,8 +363,25 @@
|
|||
<string name="preference_reset_usage_count_dialog">Binne jo wis dat jo de gebrûksteller fan alle items yn de klûs op 0 sette wolle?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Notysje</string>
|
||||
<string name="clear">Wiskje</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Ynfier bestiet al</string>
|
||||
<string name="dialog_duplicate_entry_message">Dizze ynfier hat deselde namme en útjouwer as ien of mear besteande fermeldingen. Hoe wolsto fierder gean?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Besteande ynfier/items oerskriuwe</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">Ferfang de besteande ynfier of fermeldingen troch de nije. Dizze aksje kin net ûngedien makke wurde</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Foegje suffix ta</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Foegje in achterfoechsel ta oan de namme fan dizze nije ynfier. De nije namme wurdt %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Bewarjen annulearje</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Hjirmei kinne jo it item bewurkjen eardat jo it opnij probearje te bewarjen</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Bisto wis datsto %d ynfier mei de folgjende namme fuortsmite wolst:\n\n%s - %s</item>
|
||||
<item quantity="other">Bisto wis datsto %d ynfier mei de folgjende namme fuortsmite wolst:\n\n%s - %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Fuortsmiten befêstigje</string>
|
||||
<string name="pref_haptic_feedback_summary">Lit dy apparaat trille wannear’t de koaden fernije</string>
|
||||
<string name="pref_haptic_feedback_title">Haptyske feedback</string>
|
||||
<string name="pref_highlight_entry_title">Koaden markearje nei oantikken</string>
|
||||
<string name="pref_highlight_entry_summary">Meitsje koaden makliker te ûnderskieden fan inoar troch se tydlik te markearjen nei it oantikken</string>
|
||||
<string name="pref_groups_multiselect_title">Meardere groepen selektearje</string>
|
||||
<string name="pref_groups_multiselect_summary">Seleksje fan meardere groepen tagelyk tastean</string>
|
||||
<string name="pref_minimize_on_copy_title">By kopiearjen minimalisearje</string>
|
||||
<string name="pref_minimize_on_copy_summary">App nei kopiearjen fan in koade minimalisearje</string>
|
||||
<string name="pref_copy_behavior_title">Koaden nei it klamboerd kopiearje</string>
|
||||
|
@ -466,6 +485,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Kin URI net nei klamboerd kopiearje</string>
|
||||
<string name="uri_copied_to_clipboard">URI nei klamboerd kopiearre</string>
|
||||
<string name="transfer_entry_description">Scan dizze QR-koade mei de autentikator-app wêr’t jo dit item nei oerbringe wolle</string>
|
||||
<string name="transfer_entry_brightness">Tik op de QR-koade om helderheid op folslein skerm te skeakeljen</string>
|
||||
<string name="google_auth_compatible_transfer_description">Scan dizze QR-koaden mei Aegis of Google Authenticator.\n\nFanwegen beheiningen fan de Google Authenticator-app, binne allinnich TOTP- & HOTP-tokens dy’t SHA1 brûke en 6-siferige koaden produsearje opnommen</string>
|
||||
<string name="password_strength_very_weak">Hiel swak</string>
|
||||
<string name="password_strength_weak">Swak</string>
|
||||
|
@ -499,7 +519,6 @@
|
|||
<string name="importer_help_2fas">Leverje in 2FAS-autentikator-eksportbestân oan.</string>
|
||||
<string name="importer_help_aegis">Leverje in Aegis-eksport-/reservekopybestân oan.</string>
|
||||
<string name="importer_help_authenticator_plus">Leverje in Authenticator Plus-eksportbestân oan krigen fia <b>Ynstellingen -> Reservekopy & Werstelle -> Eksportearje as Tekst en HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Leverje in Authenticator Pro-eksportbestân oan krigen fia <b>Ynstellingen -> Reservekopy -> Reservekopy nei fersifere bestân (oanrekommandearre)</b>.</string>
|
||||
<string name="importer_help_authy">Leverje in kopy oan fan <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, pleatst yn de ynterne ûnthâldmap fan Authy.</string>
|
||||
<string name="importer_help_andotp">Leverje in andOTP-eksport-/reservekopybestân oan.</string>
|
||||
<string name="importer_help_bitwarden">Leverje in Bitwarden-eksport-/reservekopybestân oan. Fersifere bestannen wurde net stipe.</string>
|
||||
|
@ -514,6 +533,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Leverje in kopy oan fan <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, pleatst yn de ynterne ûnthâldmap fan Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Leverje in tekstbestân oan mei in Google Authenticator-URI op elke rigel.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 en nijer wurde net stipe</b>. Soargje foar in kopy fan <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>, te finen yn de ynterne ûnthâldmap fan Steam.</string>
|
||||
<string name="importer_help_stratum">Leverje in Stratum-eksportbestân oan, ûntfongen fia <b>Ynstellingen -> Reservekopy -> Reservekopy nei fersifere bestân (oanrekommandearre)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Leverje in TOTP-autentikator-eksportbestân oan.</string>
|
||||
<string name="importer_help_winauth">Leverje in WinAuth-eksportbestân oan.</string>
|
||||
<string name="import_assign_icons_dialog_title">Piktogrammen tawize</string>
|
||||
|
|
5
app/src/main/res/values-gl-rES-v29/strings.xml
Normal file
5
app/src/main/res/values-gl-rES-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Predeterminado do sistema</string>
|
||||
<string name="system_amoled_theme_title">Predeterminado do sistema (AMOLED)</string>
|
||||
</resources>
|
|
@ -10,6 +10,7 @@
|
|||
<string name="action_default_icon">Restablecer icona predeterminada</string>
|
||||
<string name="discard">Desbotar</string>
|
||||
<string name="save">Gardar</string>
|
||||
<string name="all">Todo</string>
|
||||
<string name="issuer">Provedor</string>
|
||||
<string name="yandex_pin">PIN (4–16 cifras)</string>
|
||||
<string name="motp_pin">PIN (4 cifras)</string>
|
||||
|
@ -39,13 +40,19 @@
|
|||
<string name="pref_dynamic_colors_summary">Aplica unha superposición baseada nas cores do teu tema de Android</string>
|
||||
<string name="pref_view_mode_title">Modo de visualización</string>
|
||||
<string name="pref_lang_title">Idioma</string>
|
||||
<string name="pref_show_icons_title">Amosar iconas</string>
|
||||
<string name="pref_show_icons_summary">Amosar iconas ao lado de cada entrada</string>
|
||||
<string name="pref_show_icons_title">Mostrar iconas</string>
|
||||
<string name="pref_show_icons_summary">Mostra iconas ao lado de cada entrada</string>
|
||||
<string name="pref_code_group_size_title">Agrupación dos díxitos do código</string>
|
||||
<string name="pref_code_group_size_summary">Escolle o número de díxitos polos que agrupar os códigos</string>
|
||||
<string name="pref_account_name_position_title">Mostrar o nome da conta</string>
|
||||
<string name="pref_show_next_code_title">Mostrar código seguinte</string>
|
||||
<string name="pref_show_next_code_summary">Xera e amosa o seguinte código antes de tempo</string>
|
||||
<string name="pref_expiration_state_title">Indicar que os códigos van caducar</string>
|
||||
<string name="pref_expiration_state_summary">Cambia a cor dos códigos e fainos titilar cando estean a piques de caducar</string>
|
||||
<string name="pref_expiration_state_fallback">Cambia a cor dos códigos cando estean a piques de caducar</string>
|
||||
<string name="pref_shared_issuer_account_name_title">Mostrar o nome da conta só cando sexa necesario</string>
|
||||
<string name="pref_shared_issuer_account_name_summary">Mostrar nomes de conta só cando teñan o mesmo emisor. Os demáis nomes de conta ocultaranse.</string>
|
||||
<string name="pref_shared_issuer_account_name_summary">Mostrar nomes de conta só cando teñan o mesmo provedor. Os demáis nomes de conta ocultaranse.</string>
|
||||
<string name="pref_account_name_position_summary_override">Este axuste está anulado polo modo de visualización de mosaico. O nome da conta mostrarase debaixo do provedor.</string>
|
||||
<string name="pref_import_file_title">Importar desde un ficheiro</string>
|
||||
<string name="pref_import_file_summary">Importar tokens desde un ficheiro</string>
|
||||
<string name="pref_android_backups_title">Copias de seguridade na nube de Android</string>
|
||||
|
@ -57,7 +64,14 @@
|
|||
<string name="pref_backups_reminder_summary">Mostra un recordatorio para facer a copia de seguridade do almacén, no caso de que non fixeras ningunha copia dos teus últimos cambios.</string>
|
||||
<string name="pref_backups_reminder_dialog_title">Desactivar recordatorio da copia de seguridade</string>
|
||||
<string name="pref_backups_reminder_dialog_summary">Se desactivas este recordatorio, Aegis non che dirá se hai cambios sen gardar ou non nas copias de seguridade, polo que estarás no risco de perder o acceso aos teus tokens. Tes a certeza de que queres desactivar o recordatorio?</string>
|
||||
<string name="pref_backups_versioning_strategy_title">Estratexia da copia de seguridade</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">Manter certo número de versións</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup">Copia de seguridade única</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup_warning">A estratexia escollida non é fiable nin recomendable. Un único fallo ao facer a copia de seguridade pode levar a que quedes sen a única copia que tiveras.</string>
|
||||
<string name="pref_backups_versioning_strategy_dialog_title">Escolle unha estratexia para a copia de seguridade</string>
|
||||
<string name="pref_backups_location_title">Localización da copia de seguridade</string>
|
||||
<string name="pref_backups_location_summary">As copias de seguridade gardaranse en</string>
|
||||
<string name="pref_backup_location_summary">A copia de seguridade gardarase en</string>
|
||||
<string name="pref_backups_trigger_title">Executar copia de seguridade</string>
|
||||
<string name="pref_backups_trigger_summary">Lanza manualmente unha copia de seguridade</string>
|
||||
<string name="pref_backups_versions_title">Número de versións a manter</string>
|
||||
|
@ -102,6 +116,12 @@
|
|||
<string name="pref_encryption_summary">Cifra o almacén e permite desbloquealo mediante un contrasinal ou por biometría</string>
|
||||
<string name="pref_biometrics_title">Desbloqueo biométrico</string>
|
||||
<string name="pref_biometrics_summary">Permite a autenticación mediante biometría para desbloquear o almacén</string>
|
||||
<string name="pref_search_behavior_summary">Buscar en: %s</string>
|
||||
<string name="pref_search_behavior_prompt">Buscar nos seguintes campos</string>
|
||||
<string name="pref_search_behavior_type_name">Nome</string>
|
||||
<string name="pref_search_behavior_type_issuer">Provedor</string>
|
||||
<string name="pref_search_behavior_type_note">Nota</string>
|
||||
<string name="pref_search_behavior_type_groups">Grupos</string>
|
||||
<string name="pref_set_password_title">Cambiar contrasinal</string>
|
||||
<string name="pref_set_password_summary">Establece un novo contrasinal co que desbloquear o teu almacén</string>
|
||||
<string name="no_events_title">Non hai ningún evento rexistrado</string>
|
||||
|
@ -121,6 +141,7 @@
|
|||
<string name="event_title_vault_unlock_failed_biometrics">Fallo de desbloqueo do almacén (biometría)</string>
|
||||
<string name="event_description_vault_unlock_failed_biometrics">Houbo un intento errado de desbloquear o almacén mediante datos biométricos</string>
|
||||
<string name="event_unknown">Tipo de evento descoñecido</string>
|
||||
<string name="audit_log_entry_deleted">(borrado)</string>
|
||||
<string name="today_at_time">Hoxe ás %1$s</string>
|
||||
<string name="day_of_week_at_time">%1$s ás %2$s</string>
|
||||
<string name="export_encrypted">Cifrar o almacén</string>
|
||||
|
@ -189,6 +210,9 @@
|
|||
<string name="edit">Editar</string>
|
||||
<string name="select_all">Seleccionar todo</string>
|
||||
<string name="assign_icons">Asignar iconas</string>
|
||||
<string name="assign_groups">Asignar a un grupo</string>
|
||||
<string name="assign_groups_dialog_summary">Escolle o grupo ao que queiras asignar os elementos seleccionados.</string>
|
||||
<string name="assign_groups_dialog_dropdown">Escolle o grupo</string>
|
||||
<string name="favorite" comment="Verb">Marcar como favorito</string>
|
||||
<string name="unfavorite" comment="Verb">Desmarcar como favorito</string>
|
||||
<string name="error_all_caps">ERRO</string>
|
||||
|
@ -203,9 +227,12 @@
|
|||
<string name="snackbar_authentication_method">Tes que escoller un método de autenticación</string>
|
||||
<string name="encrypting_vault">Cifrando o almacén</string>
|
||||
<string name="exporting_vault">Exportando o almacén</string>
|
||||
<string name="optimizing_icon">Optimizando a icona</string>
|
||||
<string name="optimizing_icon_multiple">Optimizando iconas %1$d/%2$d</string>
|
||||
<string name="reading_file">Lendo ficheiro</string>
|
||||
<string name="requesting_root_access">Pedindo acceso root</string>
|
||||
<string name="analyzing_qr">Analizando código QR</string>
|
||||
<string name="analyzing_qr_multiple">Analizando código QR %1$d/%2$d (%3$s)</string>
|
||||
<plurals name="added_new_entries">
|
||||
<item quantity="one">Engadida %d nova entrada ao almacén</item>
|
||||
<item quantity="other">Engadidas %d novas entradas ao almacén</item>
|
||||
|
@ -231,6 +258,7 @@
|
|||
<string name="copied">Copiado</string>
|
||||
<string name="errors_copied">Copiáronse os erros no portapapeis</string>
|
||||
<string name="version_copied">Versión copiada no portapapeis</string>
|
||||
<string name="error_required_field">Este campo é obrigatorio</string>
|
||||
<string name="error_occurred">Ocorreu un erro</string>
|
||||
<string name="decryption_error">Ocorreu un erro ao intentar desbloquear o almacén</string>
|
||||
<string name="decryption_corrupt_error">Ocorreu un erro ao intentar desbloquear o almacén. O ficheiro do almacén podería estar corrompido.</string>
|
||||
|
@ -294,6 +322,10 @@
|
|||
<string name="partial_google_auth_import">Detectouse una exportación de Google Authenticator incompleta</string>
|
||||
<string name="partial_google_auth_import_warning">Faltan algúns códigos QR na importación. Os seguintes códigos non se atoparon:\n\n<b>%s</b>\n\nPodes continuar importando esta exportación parcial, pero o recomendable é volvelo a intentar con tódolos códigos QR para que non te arrisques a perder o acceso a ningún token.</string>
|
||||
<string name="missing_qr_code_descriptor">• código QR %d</string>
|
||||
<plurals name="import_partial_export_anyway">
|
||||
<item quantity="one">Importar %d token de tódolos xeitos</item>
|
||||
<item quantity="other">Importar %d tokens de tódolos xeitos</item>
|
||||
</plurals>
|
||||
<string name="import_google_auth_failure">Fallou a importación do exportado con Google Authenticator</string>
|
||||
<string name="unrelated_google_auth_batches_error">A exportación contén información sobre un lote non relacionado. Intenta importar 1 lote de cada vez.</string>
|
||||
<string name="no_tokens_can_be_imported">Polo tanto, non se pode importar ningún token</string>
|
||||
|
@ -312,8 +344,8 @@
|
|||
<string name="name">Nome</string>
|
||||
<string name="no_group">Sen grupo</string>
|
||||
<string name="sort" comment="Title of the Sort button in the top action bar of the main view">Ordenar</string>
|
||||
<string name="sort_alphabetically">Emisor (A a Z)</string>
|
||||
<string name="sort_alphabetically_reverse">Emisor (Z a A)</string>
|
||||
<string name="sort_alphabetically">Provedor (A a Z)</string>
|
||||
<string name="sort_alphabetically_reverse">Provedor (Z a A)</string>
|
||||
<string name="sort_alphabetically_name">Conta (A a Z)</string>
|
||||
<string name="sort_alphabetically_name_reverse">Conta (Z a A)</string>
|
||||
<string name="sort_usage_count">Contador de usos</string>
|
||||
|
@ -333,9 +365,12 @@
|
|||
<string name="clear">Restablecer</string>
|
||||
<string name="pref_highlight_entry_title">Resaltar tokens ao premelos</string>
|
||||
<string name="pref_highlight_entry_summary">Resalta temporalmente os tokens cando se preman para podelos distinguir máis facilmente</string>
|
||||
<string name="pref_groups_multiselect_title">Selección múltiple de grupos</string>
|
||||
<string name="pref_groups_multiselect_summary">Permite ter seleccionados varios grupos ao mesmo tempo</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimizar ao copiar</string>
|
||||
<string name="pref_minimize_on_copy_summary">Minimiza a aplicación despois de copiar un token</string>
|
||||
<string name="pref_copy_behavior_title">Copiar códigos no portapapeis</string>
|
||||
<string name="pref_search_behavior_title">Comportamento da busca</string>
|
||||
<string name="pref_pause_entry_title">Conxelar tokens ao premelos</string>
|
||||
<string name="pref_pause_entry_summary">Pausa a actualización automática dos tokens ao premer neles. Os tokens non se actualizarán mentres teñan o foco. Require \"Resaltar tokens ao premelos\" ou \"Tocar para mostrar\".</string>
|
||||
<string name="pin_keyboard_description">Introduce o teu contrasinal para activar o teclado do PIN. Ten en conta que isto só funciona se o teu contrasinal consiste só de números</string>
|
||||
|
@ -352,7 +387,7 @@
|
|||
<string name="compact_mode_title">Compacto</string>
|
||||
<string name="small_mode_title">Pequeno</string>
|
||||
<string name="tiles_mode_title">Mosaico</string>
|
||||
<string name="unknown_issuer">Emisor descoñecido</string>
|
||||
<string name="unknown_issuer">Provedor descoñecido</string>
|
||||
<string name="unknown_account_name">Nome de conta descoñecido</string>
|
||||
<plurals name="import_error_dialog">
|
||||
<item quantity="one">Aegis non puido importar %d token. Este token omitirase. Preme en \"detalles\" para ver máis información sobre o erro.</item>
|
||||
|
@ -361,6 +396,7 @@
|
|||
<string name="unable_to_process_deeplink">Non se puido procesar o enlace profundo</string>
|
||||
<string name="unable_to_read_qrcode_file">Non se puido ler e procesar o código QR do ficheiro: %s.</string>
|
||||
<string name="unable_to_process_shared_text">Non se puido procesar o texto compartido como OTP</string>
|
||||
<string name="unable_to_read_qrcode_files">Non se puideron ler e procesar algúns dos códigos QR. Só se importarán %1$d/%2$d elementos.</string>
|
||||
<string name="unable_to_generate_qrcode">Non se puido xerar o código QR</string>
|
||||
<string name="select_picture">Seleccionar imaxe</string>
|
||||
<string name="select_icon">Seleccionar icona</string>
|
||||
|
@ -391,7 +427,16 @@
|
|||
<string name="time_sync_warning_message">Aegis depende de que a hora do sistema estea sincronizada para poder xerar códigos correctos. Unha desviación de tan só uns poucos segundos pode resultar en que os códigos sexan incorrectos. Semella que o teu dispositivo non está configurado para sincronizar automaticamente a hora. Queres configuralo agora?</string>
|
||||
<string name="time_sync_warning_disable">Non me avises máis. Sei o que fago.</string>
|
||||
<string name="google_qr_export_unrelated">Atopouse un código QR non relacionado. Proba a reiniciar o escáner.</string>
|
||||
<plurals name="google_qr_export_scanned">
|
||||
<item quantity="one">%1$d/%2$d código QR escaneado</item>
|
||||
<item quantity="other">%1$d/%2$d códigos QR escaneados</item>
|
||||
</plurals>
|
||||
<string name="google_qr_export_unexpected">Esperábase o código QR nº %1$d, pero escaneouse o nº %2$d</string>
|
||||
<string name="backup_error_bar_message"><b>A copia de seguridade do almacén fallou recentemente</b></string>
|
||||
<string name="backup_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'."> Un intento de facer unha copia de seguridade do almacén usando %1$s fallou debido a algún erro. A copia de seguridade intentouse %2$s. Comproba os axustes da copia de seguridade para asegurarte de que poidan completar correctamente.
|
||||
</string>
|
||||
<string name="backup_permission_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'."> Un recente intento de copia de seguridade utilizando %1$s fallou porque Aegis non tiña permiso de escritura no destino da copia de seguridade. A copia de seguridade intentouse %2$s. Este erro pode ocorrer se moviches ou renomeaches o destino ou se fai pouco que recuperaches Aegis desde unha copia de seguridade. Volve a configurar o destino da copia de seguridade.
|
||||
</string>
|
||||
<string name="backup_system_builtin">Copias de seguridade automáticas de Aegis</string>
|
||||
<string name="backup_system_android">Copias de seguridade na nube de Android</string>
|
||||
<string name="backup_reminder_bar_message_with_latest" comment="The parameter is an elapsed time in the style of 'x seconds/minutes/days ago'"> A última copia de seguridade está desactualizada (%s)
|
||||
|
@ -425,6 +470,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Non se puido copiar a URI no portapapeis</string>
|
||||
<string name="uri_copied_to_clipboard">URI copiada no portapapeis</string>
|
||||
<string name="transfer_entry_description">Escanea este código QR coa aplicación de autenticación á que queiras transferirlle esta entrada</string>
|
||||
<string name="transfer_entry_brightness">Preme no código QR para poñer ou quitar o brillo da pantalla ao máximo</string>
|
||||
<string name="google_auth_compatible_transfer_description">Escanea estes códigos QR con Aegis ou con Google Authenticator.\n\nDebido ás limitacións de Google Authenticator, só se inclúen os tokens TOTP e HOTP que usen SHA1 e produzan códigos de 6 cifras</string>
|
||||
<string name="password_strength_very_weak">Moi feble</string>
|
||||
<string name="password_strength_weak">Feble</string>
|
||||
|
@ -458,17 +504,21 @@
|
|||
<string name="importer_help_2fas">Proporciona un ficheiro de copia de seguridade de 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Proporciona un ficheiro de copia de seguridade ou de exportación de Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Proporciona un ficheiro de exportación de Authenticator Plus obtido mediante <b>Axustes -> Copia de seguridade e restauración -> Exportar como texto e HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Proporciona un ficheiro de exportación de Authenticator Pro, obtido desde <b>Axustes -> Copia de seguridade -> Facer copia de seguridade nun ficheiro cifrado (recomendado)</b>.</string>
|
||||
<string name="importer_help_authy">Proporciona unha copia de <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, localizado no directorio do almacenamento interno de Authy.</string>
|
||||
<string name="importer_help_andotp">Proporciona un ficheiro de copia de seguridade ou de exportación de andOTP.</string>
|
||||
<string name="importer_help_bitwarden">Proporciona un ficheiro de copia de seguridade ou de exportación de Bitwarden. Non se admiten os ficheiros cifrados.</string>
|
||||
<string name="importer_help_battle_net_authenticator">Proporciona unha copia de <b>/data/data/com.blizzard.messenger/shared_prefs/com.blizzard.messenger.authenticator_preferences.xml</b>, localizado no directorio do almacenamento interno de Battle.net Authenticator.</string>
|
||||
<string name="importer_help_duo">Proporciona unha copia de <b>/data/data/com.duosecurity.duomobile/files/duokit/accounts.json</b>, localizado no directorio do almacenamento interno de DUO.</string>
|
||||
<string name="importer_help_ente_auth">Proporciona un ficheiro de exportación de Ente Auth. Polo momento só se admiten ficheiros sen cifrar.</string>
|
||||
<string name="importer_help_freeotp">FreeOTP 2: Proporciona unha copia de seguridade.\nFreeOTP 1.x: Proporciona unha copia de <b>/data/data/org.fedorahosted.freeotp/shared_prefs/tokens.xml</b>, localizado no directorio do almacenamento interno de FreeOTP.</string>
|
||||
<string name="importer_help_freeotp_plus">Proporciona un ficheiro de exportación de FreeOTP+.</string>
|
||||
<string name="importer_warning_title_freeotp2">Compatibilidade con FreeOTP 2</string>
|
||||
<string name="importer_warning_message_freeotp2">Hai varios problemas en FreeOTP 2 que poden provocar copias de seguridade corrompidas. Aegis intentará recuperar o máximo número de elementos posible, pero pode que haxa algúns, ou incluso todos, que non se poidan importar.</string>
|
||||
<string name="importer_help_google_authenticator"><b>Só se admiten ficheiros de base de datos de Google Authenticator v5.10 e anteriores</b>.\n\nProporciona unha copia de <b>/data/data/com.google.android.apps.authenticator2/databases/databases</b>, localizado no directorio do almacenamento interno de Google Authenticator.</string>
|
||||
<string name="importer_help_microsoft_authenticator">Proporciona unha copia de <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, localizado no directorio do almacenamento interno de Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Proporciona un ficheiro de texto plano cunha URI de Google Authenticator en cada liña.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 e versións superiores non son compatibles</b>. Proporciona unha copia de <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>, localizado no directorio do almacenamento interno de Steam.</string>
|
||||
<string name="importer_help_stratum">Proporciona un ficheiro de exportación de Stratum, obtido desde <b>Axustes -> Copia de seguridade -> Facer copia de seguridade nun ficheiro cifrado (recomendado)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Proporciona un ficheiro de exportación de TOTP Authenticator.</string>
|
||||
<string name="importer_help_winauth">Proporciona un ficheiro de exportación de WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Asignar iconas</string>
|
||||
|
@ -487,8 +537,8 @@
|
|||
<string name="pref_copy_behavior_single_tap">Un toque</string>
|
||||
<string name="pref_copy_behavior_double_tap">Dobre toque</string>
|
||||
<string name="pref_account_name_position_hidden">Oculto</string>
|
||||
<string name="pref_account_name_position_end">Ao lado do emisor</string>
|
||||
<string name="pref_account_name_position_below">Debaixo do emisor</string>
|
||||
<string name="pref_account_name_position_end">Ao lado do provedor</string>
|
||||
<string name="pref_account_name_position_below">Debaixo do provedor</string>
|
||||
<plurals name="time_elapsed_seconds" tools:ignore="UnusedResources">
|
||||
<item quantity="one">fai %d segundo</item>
|
||||
<item quantity="other">fai %d segundos</item>
|
||||
|
|
2
app/src/main/res/values-hi-rIN-v29/strings.xml
Normal file
2
app/src/main/res/values-hi-rIN-v29/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
|
@ -399,7 +399,6 @@
|
|||
<string name="importer_help_aegis">एजिस निर्यात/बैकअप फ़ाइल की आपूर्ति करें।</string>
|
||||
<string name="importer_help_authenticator_plus">एक प्रमाणक प्लस निर्यात फ़ाइल की आपूर्ति करें
|
||||
<b>सेटिंग्स -> बैकअप & पुनर्स्थापना -> पाठ और HTML के रूप में निर्यात करें</b>।</string>
|
||||
<string name="importer_help_authenticator_pro"><b>सेटिंग्स -> बैक अप -> के माध्यम से प्राप्त ऑथेंटिकेटर प्रो एक्सपोर्ट फ़ाइल की आपूर्ति करें। एन्क्रिप्टेड फ़ाइल का बैकअप लें (अनुशंसित)</b>।</string>
|
||||
<string name="importer_help_authy">Authy की आंतरिक संग्रहण निर्देशिका में स्थित <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b> की एक प्रति प्रदान करें।</string>
|
||||
<string name="importer_help_andotp">एक andOTP निर्यात/बैकअप फ़ाइल की आपूर्ति करें।</string>
|
||||
<string name="importer_help_bitwarden">एक बिटवर्डन निर्यात/बैकअप फ़ाइल की आपूर्ति करें। एन्क्रिप्टेड फ़ाइलें समर्थित नहीं हैं।</string>
|
||||
|
|
5
app/src/main/res/values-hu-rHU-v29/strings.xml
Normal file
5
app/src/main/res/values-hu-rHU-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Rendszer alapértelmezése</string>
|
||||
<string name="system_amoled_theme_title">Rendszer alapértelmezése (AMOLED)</string>
|
||||
</resources>
|
|
@ -65,7 +65,7 @@
|
|||
<string name="pref_backups_reminder_dialog_title">Biztonsági mentési emlékeztető kikapcsolása</string>
|
||||
<string name="pref_backups_reminder_dialog_summary">Az emlékeztető kikapcsolása után az Aegis nem fogja jelezni hogy a változásokról készült-e biztonsági mentés. Ezzel az adatvesztést kockáztatja. Biztos, hogy kikapcsolja az emlékeztetőt?</string>
|
||||
<string name="pref_backups_versioning_strategy_title">Biztonsági mentési stratégia</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">Verziószámok megtartása</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">Több verzió megtartása</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup">Egyszeri biztonsági mentés</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup_warning">A kiválasztott biztonsági mentési stratégia nem megbízható és nem ajánlott. Az egyszeri biztonsági mentés meghibásodása az egyetlen biztonsági mentés elvesztéséhez vezethet.</string>
|
||||
<string name="pref_backups_versioning_strategy_dialog_title">Biztonsági mentési stratégia kiválasztása</string>
|
||||
|
@ -227,6 +227,8 @@
|
|||
<string name="snackbar_authentication_method">Válasszon hitelesítési módot</string>
|
||||
<string name="encrypting_vault">A széf titkosítása</string>
|
||||
<string name="exporting_vault">A széf exportálása</string>
|
||||
<string name="optimizing_icon">Ikon optimalizálása</string>
|
||||
<string name="optimizing_icon_multiple">Ikonok optimalizálása %1$d/%2$d</string>
|
||||
<string name="reading_file">Fájl olvasása</string>
|
||||
<string name="requesting_root_access">Root hozzáférés igénylése</string>
|
||||
<string name="analyzing_qr">QR-kód elemzése</string>
|
||||
|
@ -358,11 +360,28 @@
|
|||
<string name="preference_manage_groups_summary">Itt kezelheti és törölheti a csoportokat</string>
|
||||
<string name="preference_reset_usage_count">Használati számláló visszaállítása</string>
|
||||
<string name="preference_reset_usage_count_summary">Minden bejegyzés használati számlálójának visszaállítása</string>
|
||||
<string name="preference_reset_usage_count_dialog">Biztos, hogy visszaállítja a széf összes bejegyzésének használati számlálóját 0-ra?</string>
|
||||
<string name="preference_reset_usage_count_dialog">Biztos, hogy visszaállítja a széf összes bejegyzésének használati számlálóját nullára?</string>
|
||||
<string name="note" comment="Users can add a note to an entry">Megjegyzés</string>
|
||||
<string name="clear">Törlés</string>
|
||||
<string name="dialog_duplicate_entry_title" comment="'Duplicate' is a noun here">Ismétlődő bejegyzés</string>
|
||||
<string name="dialog_duplicate_entry_message">Ennek a bejegyzésnek ugyanaz a neve és kibocsátója, mint egy vagy több meglévő bejegyzésnek. Hogyan folytatja?</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_title">Meglévő bejegyzések felülírása</string>
|
||||
<string name="dialog_duplicate_entry_overwrite_subtitle">A meglévő bejegyzések lecserélése egy újjal. Ez a művelet nem vonható vissza.</string>
|
||||
<string name="dialog_duplicate_entry_suffix_title">Utótag hozzáadása</string>
|
||||
<string name="dialog_duplicate_entry_suffix_subtitle">Utótag hozzáadása ehhez a bejegyzéshez. Az új név ez lesz: %s</string>
|
||||
<string name="dialog_duplicate_entry_cancel_title">Mentés megszakítása</string>
|
||||
<string name="dialog_duplicate_entry_cancel_subtitle">Lehetővé teszi a bejegyzés szerkesztését mielőtt újból megpróbálná menteni</string>
|
||||
<plurals name="dialog_duplicate_entry_overwrite_dialog_message">
|
||||
<item quantity="one">Biztos, hogy töröl %d bejegyzést a következő névvel:\n\n%s – %s</item>
|
||||
<item quantity="other">Biztos, hogy töröl %d bejegyzést a következő névvel:\n\n%s – %s</item>
|
||||
</plurals>
|
||||
<string name="dialog_duplicate_entry_overwrite_dialog_title">Törlés megerősítése</string>
|
||||
<string name="pref_haptic_feedback_summary">Az eszköz rezgetése, amikor a kódok frissülnek</string>
|
||||
<string name="pref_haptic_feedback_title">Haptikus visszajelzés</string>
|
||||
<string name="pref_highlight_entry_title">Tokenek kiemelése koppintáskor</string>
|
||||
<string name="pref_highlight_entry_summary">A tokenek könnyebb megkülönböztethetősége érdekében ideiglenesen ki lesznek emelve koppintáskor</string>
|
||||
<string name="pref_groups_multiselect_title">Csoportok többszörös kiválasztása</string>
|
||||
<string name="pref_groups_multiselect_summary">Több csoport egyidejű kiválasztásának engedélyezése</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimalizálás másoláskor</string>
|
||||
<string name="pref_minimize_on_copy_summary">Az alkalmazás minimalizálása a token másolása után</string>
|
||||
<string name="pref_copy_behavior_title">Tokenek másolása a vágólapra</string>
|
||||
|
@ -466,6 +485,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Nem lehet az URI-t a vágólapra másolni</string>
|
||||
<string name="uri_copied_to_clipboard">Az URI a vágólapra másolva</string>
|
||||
<string name="transfer_entry_description">Olvassa le ezt a QR-kódot azzal hitelesítő alkalmazással, amelybe át akarja vinni</string>
|
||||
<string name="transfer_entry_brightness">Koppintson a QR-kódra a teljes fényerő be- és kikapcsolásához</string>
|
||||
<string name="google_auth_compatible_transfer_description">Olvassa le ezeket a QR-kódokat az Aegisszel vagy a Google Hitelesítővel.\n\nA Google Hitelesítő korlátozásai miatt csak az SHA1-et használó és 6 számjegyű kódot előállító TOTP és HOTP tokenek szerepelnek itt.</string>
|
||||
<string name="password_strength_very_weak">Nagyon gyenge</string>
|
||||
<string name="password_strength_weak">Gyenge</string>
|
||||
|
@ -499,7 +519,6 @@
|
|||
<string name="importer_help_2fas">Adja meg a 2FAS Authenticator egy biztonsági mentési fájlját.</string>
|
||||
<string name="importer_help_aegis">Adja meg az Aegis egy exportját vagy biztonsági mentési fájlját.</string>
|
||||
<string name="importer_help_authenticator_plus">Adja meg az Authenticator Plus egy exportfájlját, melyet a <b>Beállítások -> Mentés és visszaállítás -> Exportálás szövegként vagy HTML-ként</b> résznél állíthat elő.</string>
|
||||
<string name="importer_help_authenticator_pro">Adja meg az Authenticator Plus egy exportfájlját, melyet a <b>Beállítások -> Biztonsági mentés -> Biztonsági mentés titkosított fájlba (ajánlott)</b> résznél állíthat elő.</string>
|
||||
<string name="importer_help_authy">Adja meg a <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b> másolatát, mely az Authy belső háttértáron levő mappájában található.</string>
|
||||
<string name="importer_help_andotp">Adja meg az andOTP egy exportját vagy biztonsági mentési fájlját.</string>
|
||||
<string name="importer_help_bitwarden">Adja meg a Bitwarden egy exportját vagy biztonsági mentési fájlját. A titkosított fájlok nem támogatottak.</string>
|
||||
|
@ -514,6 +533,7 @@
|
|||
<string name="importer_help_microsoft_authenticator">Adja meg a <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b> másolatát, mely a Microsoft Authenticator belső háttértáron levő mappájában található.</string>
|
||||
<string name="importer_help_plain_text">Adjon meg egy szöveges fájlt, melynek minden sorában Google Hitelesítő URI található.</string>
|
||||
<string name="importer_help_steam"><b>A Steam v3.0 és újabb verziói nem támogatottak</b>. Adja hozzá a <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b> mappából, mely a Steam belső háttértáron levő mappája.</string>
|
||||
<string name="importer_help_stratum">Adjon meg egy Stratum exportálási fájlt, amelyet a <b>Beállítások > Biztonsági mentés > Biztonsági mentés titkosított fájlba (ajánlott)</b> menüpontban lehet előállítani.</string>
|
||||
<string name="importer_help_totp_authenticator">Adjon meg egy TOTP Autheticator exportfájlt.</string>
|
||||
<string name="importer_help_winauth">Adjon meg egy WinAuth exportfájlt.</string>
|
||||
<string name="import_assign_icons_dialog_title">Ikonok hozzárendelése</string>
|
||||
|
|
2
app/src/main/res/values-in-rID-v29/strings.xml
Normal file
2
app/src/main/res/values-in-rID-v29/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
|
@ -3,13 +3,14 @@
|
|||
<string name="action_settings">Pengaturan</string>
|
||||
<string name="action_about">Tentang</string>
|
||||
<string name="action_delete">Hapus</string>
|
||||
<string name="action_transfer">Kirim</string>
|
||||
<string name="action_edit_icon">Mengedit ikon</string>
|
||||
<string name="action_reset_usage_count">Setel ulang jumlah penggunaan</string>
|
||||
<string name="action_reset_usage_count_dialog">Apakah Anda yakin ingin mengatur jumlah penggunaan entri ini menjadi 0?</string>
|
||||
<string name="action_default_icon">Pulihkan ikon baku</string>
|
||||
<string name="action_transfer">Transfer</string>
|
||||
<string name="action_edit_icon">Ubah ikon</string>
|
||||
<string name="action_reset_usage_count">Reset jumlah penggunaan</string>
|
||||
<string name="action_reset_usage_count_dialog">Apakah Anda yakin ingin mengatur jumlah penggunaan entri ini ke 0?</string>
|
||||
<string name="action_default_icon">Pulihkan ikon bawaan</string>
|
||||
<string name="discard">Buang</string>
|
||||
<string name="save">Simpan</string>
|
||||
<string name="all">Semua</string>
|
||||
<string name="issuer">Penerbit</string>
|
||||
<string name="yandex_pin">PIN (4–16 digit)</string>
|
||||
<string name="motp_pin">PIN (4 digit)</string>
|
||||
|
@ -44,52 +45,64 @@
|
|||
<string name="pref_code_group_size_title">Pengelompokan digit kode</string>
|
||||
<string name="pref_code_group_size_summary">Pilih jumlah digit untuk mengelompokkan kode berdasarkan</string>
|
||||
<string name="pref_account_name_position_title">Tampilkan nama akun</string>
|
||||
<string name="pref_show_next_code_title">Tampilkan kode selanjutnya</string>
|
||||
<string name="pref_show_next_code_summary">Hasilkan dan tampilkan kode berikutnya lebih awal</string>
|
||||
<string name="pref_expiration_state_title">Tunjukkan kapan kode akan kedaluwarsa</string>
|
||||
<string name="pref_expiration_state_summary">Ubah warna kode dan buat kode tersebut berkedip ketika akan kedaluwarsa</string>
|
||||
<string name="pref_expiration_state_fallback">Ubah warna kode saat kode akan kedaluwarsa</string>
|
||||
<string name="pref_shared_issuer_account_name_title">Hanya tampilkan nama akun jika diperlukan</string>
|
||||
<string name="pref_shared_issuer_account_name_summary">Hanya tampilkan nama akun ketika mereka memiliki penerbit yang sama. Nama akun lain akan disembunyikan.</string>
|
||||
<string name="pref_account_name_position_summary_override">Pengaturan ini digantikan oleh mode tampilan ubin. Nama akun akan selalu ditampilkan di bawah penerbit.</string>
|
||||
<string name="pref_import_file_title">Impor berkas</string>
|
||||
<string name="pref_account_name_position_summary_override">Pengaturan ini digantikan oleh mode tampilan kotak. Nama akun akan ditampilkan di bawah penerbit.</string>
|
||||
<string name="pref_import_file_title">Impor dari berkas</string>
|
||||
<string name="pref_import_file_summary">Impor token dari berkas</string>
|
||||
<string name="pref_android_backups_title">Pencadangan awan Android</string>
|
||||
<string name="pref_android_backups_summary">Bolehkan sistem pencadangan awan Android untuk menyertakan brankas Aegis di pencadangan mereka. Ini hanya didukung untuk brankas terenkripsi.</string>
|
||||
<string name="pref_android_backups_hint"><i>Pencadangan perangkat-ke-perangkat (D2D) selalu diperbolehkan, terlepas dari setelan di atas</i></string>
|
||||
<string name="pref_android_backups_summary">Izinkan sistem pencadangan awan Android untuk menyertakan brankas Aegis dalam pencadangannya. Ini hanya didukung untuk brankas terenkripsi.</string>
|
||||
<string name="pref_android_backups_hint"><i>Pencadangan perangkat-ke-perangkat (D2D) selalu diizinkan, terlepas dari pengaturan di atas.</i></string>
|
||||
<string name="pref_backups_title">Otomatis cadangkan brankas</string>
|
||||
<string name="pref_backups_summary">Secara otomatis membuat cadangan vault di penyimpanan eksternal saat ada perubahan. Ini hanya didukung untuk brankas terenkripsi.</string>
|
||||
<string name="pref_backups_reminder_title">Pengingat backup</string>
|
||||
<string name="pref_backups_summary">Secara otomatis membuat cadangan brankas pada penyimpanan eksternal ketika ada perubahan. Ini hanya didukung untuk brankas terenkripsi.</string>
|
||||
<string name="pref_backups_reminder_title">Pengingat pencadangan</string>
|
||||
<string name="pref_backups_reminder_summary">Tampilkan pengingat untuk mencadangkan cadangan jika Anda belum mencadangkan perubahan terakhir.</string>
|
||||
<string name="pref_backups_reminder_dialog_title">Menonaktifkan pengingat cadangan</string>
|
||||
<string name="pref_backups_reminder_dialog_title">Menonaktifkan pengingat pencadangan</string>
|
||||
<string name="pref_backups_reminder_dialog_summary">Dengan menonaktifkan pengingat ini, Aegis tidak akan memberi tahu Anda apakah Anda memiliki perubahan yang belum dicadangkan atau tidak. Hal ini membuat Anda berisiko kehilangan akses ke token Anda. Apakah Anda yakin ingin menonaktifkan pengingat ini?</string>
|
||||
<string name="pref_backups_versioning_strategy_title">Strategi pencadangan</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">Simpan beberapa versi</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup">Pencadangan tunggal</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup_warning">Strategi pencadangan yang dipilih tidak dapat diandalkan dan tidak direkomendasikan. Kegagalan pencadangan tunggal dapat menyebabkan kehilangan satu-satunya cadangan Anda.</string>
|
||||
<string name="pref_backups_versioning_strategy_dialog_title">Pilih strategi pencadangan</string>
|
||||
<string name="pref_backups_location_title">Lokasi pencadangan</string>
|
||||
<string name="pref_backups_location_summary">Cadangan akan disimpan di</string>
|
||||
<string name="pref_backups_trigger_title">Perintah pencadangan</string>
|
||||
<string name="pref_backups_trigger_summary">Perintah pencadangan secara manual</string>
|
||||
<string name="pref_backups_versions_title">Nomor versi untuk disimpan</string>
|
||||
<string name="pref_backup_location_summary">Cadangan akan disimpan di</string>
|
||||
<string name="pref_backups_trigger_title">Jalankan pencadangan</string>
|
||||
<string name="pref_backups_trigger_summary">Jalankan pencadangan secara manual</string>
|
||||
<string name="pref_backups_versions_title">Banyaknya versi yang harus disimpan</string>
|
||||
<string name="pref_backups_versions_infinite">\u221E</string>
|
||||
<plurals name="pref_backups_versions_summary">
|
||||
<item quantity="other">Simpan %1$d versi cadangan</item>
|
||||
<item quantity="other">Simpan versi %1$d dari cadangan</item>
|
||||
</plurals>
|
||||
<string name="pref_backups_versions_infinite_summary">Simpan cadangan dalam jumlah tak terbatas</string>
|
||||
<string name="pref_backups_versions_infinite_summary">Menyimpan cadangan dalam jumlah tak terbatas</string>
|
||||
<string name="pref_import_app_title">Impor dari aplikasi</string>
|
||||
<string name="pref_import_app_summary">Impor token dari aplikasi (membutuhkan akses root)</string>
|
||||
<string name="pref_export_title">Ekspor</string>
|
||||
<string name="pref_export_summary">Ekspor ke brankas</string>
|
||||
<string name="pref_password_reminder_title">Pengingat kata sandi</string>
|
||||
<string name="pref_google_auth_export_title">Ekspor untuk Google Authenticator</string>
|
||||
<string name="pref_google_auth_export_descriptor">Buat kode QR ekspor yang kompatibel dengan Google Authenticator</string>
|
||||
<string name="pref_google_auth_export_descriptor">Membuat kode QR ekspor yang kompatibel dengan Google Authenticator</string>
|
||||
<string name="pref_google_auth_export_no_data">Tidak ada data untuk diekspor</string>
|
||||
<plurals name="pref_google_auth_export_incompatible_entries">
|
||||
<item quantity="other">Melewati %d entri yang tidak kompatibel</item>
|
||||
<item quantity="other">Melewatkan %d entri yang tidak kompatibel</item>
|
||||
</plurals>
|
||||
<string name="pref_password_reminder_summary">Tampilkan pengingat %s untuk memasukkan kata sandi, agar Anda tidak lupa.</string>
|
||||
<string name="pref_password_reminder_summary">Tampilkan pengingat %s untuk memasukkan kata sandi agar Anda tidak lupa.</string>
|
||||
<string name="pref_password_reminder_summary_disabled">Dinonaktifkan</string>
|
||||
<string name="pref_secure_screen_title">Keamanan layar</string>
|
||||
<string name="pref_secure_screen_summary">Blokir tangkapan layar dan upaya lain untuk menangkap layar di dalam aplikasi</string>
|
||||
<string name="pref_tap_to_reveal_title">Sentuh untuk melihat</string>
|
||||
<string name="pref_tap_to_reveal_summary">Token akan disembunyikan secara default. Sentuh token untuk melihat kode.</string>
|
||||
<string name="pref_tap_to_reveal_time_title">Batas waktu sentuh untuk melihat</string>
|
||||
<string name="pref_auto_lock_title">Kunci Otomatis</string>
|
||||
<string name="pref_tap_to_reveal_title">Ketuk untuk menampilkan</string>
|
||||
<string name="pref_tap_to_reveal_summary">Token akan disembunyikan secara bawaan. Ketuk pada token untuk menampilkan kode.</string>
|
||||
<string name="pref_tap_to_reveal_time_title">Batas waktu ketuk untuk menampilkan</string>
|
||||
<string name="pref_auto_lock_title">Kunci otomatis</string>
|
||||
<string name="pref_auto_lock_summary">Kapan %s</string>
|
||||
<string name="pref_auto_lock_summary_disabled">Dinonaktifkan</string>
|
||||
<string name="pref_auto_lock_prompt">Secara otomatis mengunci Aegis saat</string>
|
||||
<string name="pref_auto_lock_type_back_button">Tombol kembali ditekan</string>
|
||||
<string name="pref_auto_lock_prompt">Otomatis mengunci Aegis saat</string>
|
||||
<string name="pref_auto_lock_type_back_button">Tombol kembali sudah ditekan</string>
|
||||
<string name="pref_auto_lock_type_minimize">Aplikasi diminimalkan</string>
|
||||
<string name="pref_auto_lock_type_device_lock">Perangkat terkunci</string>
|
||||
<string name="pref_backup_password_category">Cadangan & Ekspor</string>
|
||||
|
@ -101,6 +114,12 @@
|
|||
<string name="pref_encryption_summary">Enkripsi brankas dan buka dengan kata sandi atau biometrik</string>
|
||||
<string name="pref_biometrics_title">Buka kunci dengan biometrik</string>
|
||||
<string name="pref_biometrics_summary">Izinkan otentikasi biometrik untuk membuka brankas</string>
|
||||
<string name="pref_search_behavior_summary">Telusuri melalui: %s</string>
|
||||
<string name="pref_search_behavior_prompt">Cari di salah satu kolom berikut</string>
|
||||
<string name="pref_search_behavior_type_name">Nama</string>
|
||||
<string name="pref_search_behavior_type_issuer">Penerbit</string>
|
||||
<string name="pref_search_behavior_type_note">Catatan</string>
|
||||
<string name="pref_search_behavior_type_groups">Grup</string>
|
||||
<string name="pref_set_password_title">Ganti kata sandi</string>
|
||||
<string name="pref_set_password_summary">Atur kata sandi baru untuk digunkan membuka brankas Anda</string>
|
||||
<string name="no_events_title">Tidak ada kejadian yang dilaporkan</string>
|
||||
|
@ -188,6 +207,9 @@
|
|||
<string name="edit">Ubah</string>
|
||||
<string name="select_all">Pilih semua</string>
|
||||
<string name="assign_icons">Tetapkan ikon</string>
|
||||
<string name="assign_groups">Tetapkan ke grup</string>
|
||||
<string name="assign_groups_dialog_summary">Pilih grup yang ingin Anda tetapkan untuk menetapkan entri yang dipilih.</string>
|
||||
<string name="assign_groups_dialog_dropdown">Pilih grup</string>
|
||||
<string name="favorite" comment="Verb">Favorit</string>
|
||||
<string name="unfavorite" comment="Verb">Hapus dari favorit</string>
|
||||
<string name="error_all_caps">ERROR</string>
|
||||
|
@ -202,9 +224,12 @@
|
|||
<string name="snackbar_authentication_method">Pilih metode otentikasi</string>
|
||||
<string name="encrypting_vault">Mengenkripsi brankas</string>
|
||||
<string name="exporting_vault">Ekspor brankas</string>
|
||||
<string name="optimizing_icon">Mengoptimasi ikon</string>
|
||||
<string name="optimizing_icon_multiple">Mengoptimasi ikon %1$d/%2$d</string>
|
||||
<string name="reading_file">Baca berkas</string>
|
||||
<string name="requesting_root_access">Meminta akses root</string>
|
||||
<string name="analyzing_qr">Menganalisis kode QR</string>
|
||||
<string name="analyzing_qr_multiple">Menganalisis kode QR %1$d/%2$d (%3$s)</string>
|
||||
<plurals name="added_new_entries">
|
||||
<item quantity="other">Menambahkan %d entri baru ke brankas</item>
|
||||
</plurals>
|
||||
|
@ -228,6 +253,7 @@
|
|||
<string name="copied">Disalin</string>
|
||||
<string name="errors_copied">Kesalahan menyalin ke Clipboard</string>
|
||||
<string name="version_copied">Versi disalin ke Clipboard</string>
|
||||
<string name="error_required_field">Kolom ini wajib diisi</string>
|
||||
<string name="error_occurred">Terjadi kesalahan</string>
|
||||
<string name="decryption_error">Terjadi kesalahan saat membuka brankas</string>
|
||||
<string name="decryption_corrupt_error">Terjadi kesalahan saat membuka brankas. Mungkin file berkas brankas Anda rusak.</string>
|
||||
|
@ -288,6 +314,9 @@
|
|||
<string name="partial_google_auth_import">Ekspor Google Authenticator tidak lengkap terdeteksi</string>
|
||||
<string name="partial_google_auth_import_warning">Beberapa kode QR tidak ditemukan dalam impor Anda. Kode berikut ini tidak ditemukan:\n\n<b>%s</b>\n\nAnda dapat melanjutkan mengimpor ekspor parsial ini, tetapi kami sarankan untuk mencoba kembali dengan semua kode QR agar Anda tidak mengambil risiko kehilangan akses ke token apa pun.</string>
|
||||
<string name="missing_qr_code_descriptor">• - Kode QR %d</string>
|
||||
<plurals name="import_partial_export_anyway">
|
||||
<item quantity="other">Tetap mengimpor token %d</item>
|
||||
</plurals>
|
||||
<string name="import_google_auth_failure">Mengimpor ekspor Google Authenticator gagal</string>
|
||||
<string name="unrelated_google_auth_batches_error">Ekspor berisi informasi untuk batch yang tidak terkait. Coba impor 1 batch dalam satu waktu.</string>
|
||||
<string name="no_tokens_can_be_imported">Tidak ada token yang dapat diimpor sebagai hasilnya</string>
|
||||
|
@ -327,9 +356,12 @@
|
|||
<string name="clear">Bersihkan</string>
|
||||
<string name="pref_highlight_entry_title">Sorot token saat disentuh</string>
|
||||
<string name="pref_highlight_entry_summary">Jadikan token untuk lebih mudah dibedakan satu sama lain dengan menyorotnya saat disentuh</string>
|
||||
<string name="pref_groups_multiselect_title">Pilih berganda grup</string>
|
||||
<string name="pref_groups_multiselect_summary">Mengizinkan memilih beberapa grup pada saat yang sama</string>
|
||||
<string name="pref_minimize_on_copy_title">Meminimalkan penyalinan</string>
|
||||
<string name="pref_minimize_on_copy_summary">Meminimalkan aplikasi setelah menyalin token</string>
|
||||
<string name="pref_copy_behavior_title">Menyalin token ke papan klip</string>
|
||||
<string name="pref_search_behavior_title">Aktivitas pencarian</string>
|
||||
<string name="pref_pause_entry_title">Bekukan token ketika disentuh</string>
|
||||
<string name="pref_pause_entry_summary">Hentikan penyegaran otomatis token dengan menyentuh mereka. Token tidak akan diperbarui selama mereka difokuskan. Membutuhkan \"Sorot token saat disentuh\" atau \"Sentuh untuk melihat.\"</string>
|
||||
<string name="pin_keyboard_description">Masukkan kata sandi Anda untuk mengaktifkan keyboard PIN. Perhatikan bahwa ini hanya berfungsi jika kata sandi Anda hanya terdiri dari angka</string>
|
||||
|
@ -354,6 +386,7 @@
|
|||
<string name="unable_to_process_deeplink">Tidak dapat memproses tautan dalam</string>
|
||||
<string name="unable_to_read_qrcode_file">Tidak dapat membaca dan memproses kode QR dari berkas: %s.</string>
|
||||
<string name="unable_to_process_shared_text">Tidak dapat memproses teks bersama sebagai OTP</string>
|
||||
<string name="unable_to_read_qrcode_files">Tidak dapat membaca dan memproses sebagian kode QR. Hanya entri %1$d/%2$d yang akan diimpor.</string>
|
||||
<string name="unable_to_generate_qrcode">Tidak dapat membuat kode QR</string>
|
||||
<string name="select_picture">Pilih gambar</string>
|
||||
<string name="select_icon">Pilih ikon</string>
|
||||
|
@ -384,7 +417,13 @@
|
|||
<string name="time_sync_warning_message">Aegis mengandalkan waktu sistem untuk disinkronkan menjadi kode yang benar. Selisih hanya beberapa detik dapat menyebabkan kode salah. Sepertinya perangkat Anda tidak dikonfigurasi untuk menyinkronkan waktu secara otomatis. Apakah Anda ingin melakukannya sekarang?</string>
|
||||
<string name="time_sync_warning_disable">Berhenti memperingatkan saya. Saya tahu apa yang saya lakukan.</string>
|
||||
<string name="google_qr_export_unrelated">Ditemukan kode QR yang tidak terkait. Coba mulai ulang pemindai.</string>
|
||||
<plurals name="google_qr_export_scanned">
|
||||
<item quantity="other">Kode QR yang dipindai %1$d/%2$d</item>
|
||||
</plurals>
|
||||
<string name="google_qr_export_unexpected">Kode QR yang seharusnya #%1$d, tetapi yang dipindai justru #%2$d</string>
|
||||
<string name="backup_error_bar_message"><b>Pencadangan Brankas baru-baru ini gagal</b></string>
|
||||
<string name="backup_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'."> Upaya pencadangan brankas terkini menggunakan %1$s gagal karena terjadi kesalahan. Pencadangan telah dilakukan dengan menggunakan %2$s. Periksa pengaturan pencadangan Anda untuk memastikan pencadangan berhasil diselesaikan.</string>
|
||||
<string name="backup_permission_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'."> Upaya pencadangan brankas terkini menggunakan %1$s gagal karena Aegis tidak memiliki izin untuk menulis ke tujuan pencadangan. Pencadangan telah dilakukan dengan menggunakan %2$s. Kesalahan ini dapat terjadi jika Anda memindahkan/mengganti nama tujuan pencadangan atau jika Anda baru saja memulihkan Aegis dari pencadangan. Harap konfigurasikan ulang tujuan pencadangan.</string>
|
||||
<string name="backup_system_builtin">Pencadangan otomatis bawaan Aegis</string>
|
||||
<string name="backup_system_android">Sistem pencadangan awan Android</string>
|
||||
<string name="backup_reminder_bar_message_with_latest" comment="The parameter is an elapsed time in the style of 'x seconds/minutes/days ago'"> Backup terakhir sudah kedaluwarsa (%s)
|
||||
|
@ -449,7 +488,6 @@
|
|||
<string name="importer_help_2fas">Sediakan sebuah berkas cadangan Autetikator 2FAS.</string>
|
||||
<string name="importer_help_aegis">Siapkan berkas ekspor/cadangan Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Siapkan berkas ekspor Authenticator Plus yang didapat melalui<b>Pengaturan -> Pemulihan & Cadangan -> Ekspor sebagai Teks dan HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Sediakan file ekspor Authenticator Pro yang diperoleh melalui <b>Pengaturan -> Cadangkan -> Cadangkan ke file terenkripsi (disarankan)</b>.</string>
|
||||
<string name="importer_help_authy">Siapkan salinan
|
||||
<b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, yang terletak di direktori penyimpanan internal Authy.</string>
|
||||
<string name="importer_help_andotp">Siapkan berkas ekspor/cadangan andOTP.</string>
|
||||
|
@ -457,12 +495,17 @@
|
|||
<string name="importer_help_battle_net_authenticator">Sediakan salinan <b>/data/data/com.blizzard.messenger/shared_prefs/com.blizzard.messenger.authenticator_preferences.xml</b>, yang terletak di direktori penyimpanan internal Battle.net Authenticator.</string>
|
||||
<string name="importer_help_duo">Siapkan salinan
|
||||
<b>/data/data/com.duosecurity.duomobile/files/duokit/accounts.json</b>, yang terletak di direktori penyimpanan internal DUO.</string>
|
||||
<string name="importer_help_ente_auth">Menyediakan file ekspor Ente Auth. Saat ini hanya file yang tidak dienkripsi yang didukung.</string>
|
||||
<string name="importer_help_freeotp">FreeOTP 2: Menyediakan berkas cadangan.\nFreeOTP 1.x: Menyediakan salinan <b>/data/data/org.fedorahosted.freeotp/shared_prefs/tokens.xml</b>, yang terletak di direktori penyimpanan internal FreeOTP.</string>
|
||||
<string name="importer_help_freeotp_plus">Siapkan berkas ekspor FreeOTP+.</string>
|
||||
<string name="importer_warning_title_freeotp2">Kompatibilitas FreeOTP 2</string>
|
||||
<string name="importer_warning_message_freeotp2">Ada sejumlah masalah dalam FreeOTP 2 yang dapat mengakibatkan cadangan rusak. Aegis akan mencoba menyelamatkan sebanyak mungkin entri, tetapi ada kemungkinan beberapa atau bahkan semuanya gagal diimpor.</string>
|
||||
<string name="importer_help_google_authenticator"><b>Hanya berkas basis data dari Google Authenticator v5.10 dan sebelumnya yang didukung</b>.\n\nMasukkan salinan dari <b>/data/data/com.google.android.apps.authenticator2/databases/databases</b>, yang tersimpan di direktori penyimpanan internal Google Authenticator.</string>
|
||||
<string name="importer_help_microsoft_authenticator">Siapkan salinan
|
||||
<b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, yang terletak di direktori penyimpanan internal Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Siapkan berkas plain text Google Authenticator dengan URI di setiap baris.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 dan yang lebih baru tidak didukung</b>. Sediakan salinan <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>, yang terletak di direktori penyimpanan internal Steam.</string>
|
||||
<string name="importer_help_stratum">Sediakan berkas ekspor Stratum yang diperoleh melalui <b>Pengaturan -> Cadangkan -> Cadangkan ke berkas terenkripsi (disarankan)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Siapkan berkas ekspor Autentikasi TOTP.</string>
|
||||
<string name="importer_help_winauth">Siapkan berkas ekspor WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Tetapkan ikon</string>
|
||||
|
|
5
app/src/main/res/values-it-rIT-v29/strings.xml
Normal file
5
app/src/main/res/values-it-rIT-v29/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_theme_title">Predefinito di sistema</string>
|
||||
<string name="system_amoled_theme_title">Predefinito di sistema (AMOLED)</string>
|
||||
</resources>
|
|
@ -29,6 +29,8 @@
|
|||
<string name="pref_section_security_summary">Configura la crittografia, lo sblocco biometrico, il blocco automatico e altre impostazioni di sicurezza.</string>
|
||||
<string name="pref_section_import_export_title">Importa / Esporta</string>
|
||||
<string name="pref_section_import_export_summary">Importa i backup di Aegis o di altre applicazioni di autenticazione. Crea esportazioni manuali della tua cassaforte di Aegis.</string>
|
||||
<string name="pref_section_audit_log_title">Registro di controllo</string>
|
||||
<string name="pref_section_audit_log_summary">Trova un elenco di tutti gli eventi importanti segnalati che sono avvenuti nell\'app.</string>
|
||||
<string name="pref_section_backups_title">Backup</string>
|
||||
<string name="pref_section_backups_summary">Imposta i backup automatici in una posizione a tua scelta o abilita la partecipazione al sistema di backup cloud di Android.</string>
|
||||
<string name="pref_section_icon_packs">Pacchetti di icone</string>
|
||||
|
@ -43,8 +45,14 @@
|
|||
<string name="pref_code_group_size_title">Raggruppamento delle cifre dei codici</string>
|
||||
<string name="pref_code_group_size_summary">Seleziona il numero di cifre per cui raggruppare i codici</string>
|
||||
<string name="pref_account_name_position_title">Mostra il nome dell\'account</string>
|
||||
<string name="pref_show_next_code_title">Mostra il codice successivo</string>
|
||||
<string name="pref_show_next_code_summary">Genera e mostra il codice successivo in anticipo</string>
|
||||
<string name="pref_expiration_state_title">Mostra quando qualche codice sta per scadere</string>
|
||||
<string name="pref_expiration_state_summary">Cambia il colore e fa\' lampeggiare i codici che stanno per scadere</string>
|
||||
<string name="pref_expiration_state_fallback">Cambia il colore dei codici quando stanno per scadere</string>
|
||||
<string name="pref_shared_issuer_account_name_title">Mostra il nome dell\'account solo se necessario</string>
|
||||
<string name="pref_shared_issuer_account_name_summary">Mostra i nomi degli account quando condividono lo stesso servizio. I nomi degli altri account verranno nascosti.</string>
|
||||
<string name="pref_account_name_position_summary_override">Questa impostazione è sovrascritta dalla visualizzazione a schede. Il nome dell\'account verrà mostrato sotto a quello del servizio.</string>
|
||||
<string name="pref_import_file_title">Importa da un file</string>
|
||||
<string name="pref_import_file_summary">Importa i token da un file</string>
|
||||
<string name="pref_android_backups_title">Backup cloud di Android</string>
|
||||
|
@ -56,14 +64,23 @@
|
|||
<string name="pref_backups_reminder_summary">Mostra un promemoria per effettuare il backup della cassaforte nel caso in cui non sia stato fatto dopo le ultime modifiche.</string>
|
||||
<string name="pref_backups_reminder_dialog_title">Disabilita i promemoria di backup</string>
|
||||
<string name="pref_backups_reminder_dialog_summary">Se disabiliti i promemoria, Aegis non ti avviserà delle eventuali modifiche di cui non hai ancora effettuato il backup. Ciò comporta il rischio di perdere l\'accesso ai tuoi token. Sei sicuro di voler disabilitare i promemoria?</string>
|
||||
<string name="pref_backups_versioning_strategy_title">Strategia di backup</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">Mantieni un numero di versioni</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup">Backup singolo</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup_warning">La strategia di backup selezionata non è affidabile e non è consigliata. Un singolo errore di backup potrebbe portare alla perdita dell\'unico salvataggio presente.</string>
|
||||
<string name="pref_backups_versioning_strategy_dialog_title">Seleziona una strategia di backup</string>
|
||||
<string name="pref_backups_location_title">Percorso del backup</string>
|
||||
<string name="pref_backups_location_summary">I backup saranno salvati in</string>
|
||||
<string name="pref_backup_location_summary">I backup saranno salvati in</string>
|
||||
<string name="pref_backups_trigger_title">Effettua un backup</string>
|
||||
<string name="pref_backups_trigger_summary">Effettua un backup manualmente</string>
|
||||
<string name="pref_backups_versions_title">Numero di versioni da salvare</string>
|
||||
<string name="pref_backups_versions_infinite">\u221E</string>
|
||||
<plurals name="pref_backups_versions_summary">
|
||||
<item quantity="one">Salva %1$d versione del backup</item>
|
||||
<item quantity="other">Salva %1$d versioni del backup</item>
|
||||
</plurals>
|
||||
<string name="pref_backups_versions_infinite_summary">Mantieni un numero infinito di versioni del backup</string>
|
||||
<string name="pref_import_app_title">Importa da app</string>
|
||||
<string name="pref_import_app_summary">Importa i token da un\'altra app (richiede i permessi di root)</string>
|
||||
<string name="pref_export_title">Esporta</string>
|
||||
|
@ -99,8 +116,34 @@
|
|||
<string name="pref_encryption_summary">Cripta il database e sbloccalo con password o impronta digitale</string>
|
||||
<string name="pref_biometrics_title">Sblocco biometrico</string>
|
||||
<string name="pref_biometrics_summary">Consenti l\'autenticazione biometrica per sbloccare la cassaforte</string>
|
||||
<string name="pref_search_behavior_summary">Cerca attraverso: %s</string>
|
||||
<string name="pref_search_behavior_prompt">Cerca in uno dei seguenti campi</string>
|
||||
<string name="pref_search_behavior_type_name">Nome</string>
|
||||
<string name="pref_search_behavior_type_issuer">Servizio</string>
|
||||
<string name="pref_search_behavior_type_note">Nota</string>
|
||||
<string name="pref_search_behavior_type_groups">Gruppi</string>
|
||||
<string name="pref_set_password_title">Cambia password</string>
|
||||
<string name="pref_set_password_summary">Modifica la password utilizzata per sbloccare la tua cassaforte</string>
|
||||
<string name="no_events_title">Nessun evento segnalato</string>
|
||||
<string name="no_events_description">Non sono stati segnalati eventi importanti all\'interno dell\'applicazione</string>
|
||||
<string name="event_title_vault_unlocked">Cassaforte sbloccata</string>
|
||||
<string name="event_description_vault_unlocked">La cassaforte è stata sbloccata con successo</string>
|
||||
<string name="event_title_backup_created">Backup creato</string>
|
||||
<string name="event_description_backup_created">Un backup della cassaforte è stato creato con successo</string>
|
||||
<string name="event_title_android_backup_created">Backup creato da Android</string>
|
||||
<string name="event_description_android_backup_created">Un backup della cassaforte è stato creato con successo da Android</string>
|
||||
<string name="event_title_vault_exported">Cassaforte esportata</string>
|
||||
<string name="event_description_vault_exported">Una copia della cassaforte è stata esportata</string>
|
||||
<string name="event_title_entry_shared">Elemento condiviso</string>
|
||||
<string name="event_description_entry_shared">Un elemento è stato condiviso</string>
|
||||
<string name="event_title_vault_unlock_failed_password">Sblocco della cassaforte non riuscito (password)</string>
|
||||
<string name="event_description_vault_unlock_failed_password">Un tentativo di sbloccare la cassaforte con una password non riuscito</string>
|
||||
<string name="event_title_vault_unlock_failed_biometrics">Sblocco della cassaforte non riuscito (biometrica)</string>
|
||||
<string name="event_description_vault_unlock_failed_biometrics">Un tentativo di sbloccare la cassaforte con dati biometrici non riuscito</string>
|
||||
<string name="event_unknown">Tipo di evento sconosciuto</string>
|
||||
<string name="audit_log_entry_deleted">(eliminato)</string>
|
||||
<string name="today_at_time">Oggi alle %1$s</string>
|
||||
<string name="day_of_week_at_time">%1$s alle %2$s</string>
|
||||
<string name="export_encrypted">Cripta la cassaforte</string>
|
||||
<string name="export_help">Questa azione esporterà la cassaforte al di fuori dello spazio di archiviazione interno di Aegis. Seleziona il formato che vorresti utilizzare per l\'esportazione:</string>
|
||||
<string name="export_warning_unencrypted">Stai per esportare una copia non criptata della tua cassaforte Aegis. <b>Questo non è consigliato</b>.</string>
|
||||
|
@ -167,6 +210,9 @@
|
|||
<string name="edit">Modifica</string>
|
||||
<string name="select_all">Seleziona tutto</string>
|
||||
<string name="assign_icons">Assegna icone</string>
|
||||
<string name="assign_groups">Assegna al gruppo</string>
|
||||
<string name="assign_groups_dialog_summary">Selezionare un gruppo al quale assegnare l\'elemento selezionato.</string>
|
||||
<string name="assign_groups_dialog_dropdown">Seleziona un gruppo</string>
|
||||
<string name="favorite" comment="Verb">Aggiungi ai preferiti</string>
|
||||
<string name="unfavorite" comment="Verb">Rimuovi dai preferiti</string>
|
||||
<string name="error_all_caps">ERRORE</string>
|
||||
|
@ -181,9 +227,12 @@
|
|||
<string name="snackbar_authentication_method">Seleziona un metodo di autenticazione</string>
|
||||
<string name="encrypting_vault">Crittografia della cassaforte in corso</string>
|
||||
<string name="exporting_vault">Esportazione della cassaforte in corso</string>
|
||||
<string name="optimizing_icon">Ottimizzazione icona</string>
|
||||
<string name="optimizing_icon_multiple">Ottimizzazione icone %1$d/%2$d</string>
|
||||
<string name="reading_file">Lettura del file in corso</string>
|
||||
<string name="requesting_root_access">Richiesta accesso root</string>
|
||||
<string name="analyzing_qr">Analisi del codice QR</string>
|
||||
<string name="analyzing_qr_multiple">Analisi del codice QR %1$d/%2$d (%3$s)</string>
|
||||
<plurals name="added_new_entries">
|
||||
<item quantity="one">Aggiunta %d nuova voce alla cassaforte</item>
|
||||
<item quantity="other">Aggiunte %d nuove voci alla cassaforte</item>
|
||||
|
@ -273,11 +322,16 @@
|
|||
<string name="partial_google_auth_import">Rilevata esportazione di Google Authenticator incompleta</string>
|
||||
<string name="partial_google_auth_import_warning">Alcuni codici QR non sono presenti nell\'importazione. Non sono stati trovati i seguenti codici:\n\n<b>%s</b>\n\nPuoi continuare a importare questa esportazione parziale, ma ti consigliamo di riprovare con tutti i codici QR in modo da non perdere l\'accesso ai token.</string>
|
||||
<string name="missing_qr_code_descriptor">• QR code %d</string>
|
||||
<plurals name="import_partial_export_anyway">
|
||||
<item quantity="one">Importa comunque il token %d</item>
|
||||
<item quantity="other">Importa comunque i token %d</item>
|
||||
</plurals>
|
||||
<string name="import_google_auth_failure">Importazione dell\'esportazione di Google Authenticator non riuscita</string>
|
||||
<string name="unrelated_google_auth_batches_error">L\'esportazione contiene informazioni per un lotto non correlato. Provare a importare un lotto alla volta.</string>
|
||||
<string name="no_tokens_can_be_imported">Di conseguenza non è possibile importare token</string>
|
||||
<string name="unlocking_vault">Sblocco della cassaforte</string>
|
||||
<string name="rename_group">Rinomina gruppo</string>
|
||||
<string name="no_group_selection">Se un elemento non fa parte di alcun gruppo, può essere trovato in \"Nessun gruppo\".</string>
|
||||
<string name="remove_group">Rimuovi gruppo</string>
|
||||
<string name="remove_group_description">Sei sicuro di voler rimuovere questo gruppo? Gli elementi in questo gruppo verranno automaticamente spostati in \'Nessun gruppo\'.</string>
|
||||
<string name="remove_unused_groups">Elimina gruppi non utilizzati</string>
|
||||
|
@ -311,9 +365,12 @@
|
|||
<string name="clear">Pulisci</string>
|
||||
<string name="pref_highlight_entry_title">Evidenzia i token al tocco</string>
|
||||
<string name="pref_highlight_entry_summary">Rendi i token più facili da distinguere, evidenziandoli temporaneamente quando vengono toccati</string>
|
||||
<string name="pref_groups_multiselect_title">Gruppi multiselezione</string>
|
||||
<string name="pref_groups_multiselect_summary">Consente la selezione multipla di più gruppi contemporaneamente</string>
|
||||
<string name="pref_minimize_on_copy_title">Minimizza alla copia</string>
|
||||
<string name="pref_minimize_on_copy_summary">Minimizza l\'app dopo aver copiato un token</string>
|
||||
<string name="pref_copy_behavior_title">Copia i token negli appunti</string>
|
||||
<string name="pref_search_behavior_title">Comportamento di ricerca</string>
|
||||
<string name="pref_pause_entry_title">Blocca i token con un tocco</string>
|
||||
<string name="pref_pause_entry_summary">Metti in pausa l\'aggiornamento automatico dei token toccandoli. I token non si aggiorneranno finché sono evidenziati. Richiede \"Evidenzia i token al tocco\" o \"Tocca per mostrare\".</string>
|
||||
<string name="pin_keyboard_description">Inserisci la password per abilitare la tastiera PIN. Funziona solo se la password è composta di soli numeri</string>
|
||||
|
@ -339,6 +396,7 @@
|
|||
<string name="unable_to_process_deeplink">Impossibile elaborare il collegamento</string>
|
||||
<string name="unable_to_read_qrcode_file">Impossibile leggere ed elaborare il codice QR dal file: %s.</string>
|
||||
<string name="unable_to_process_shared_text">Impossibile elaborare il testo condiviso come OTP</string>
|
||||
<string name="unable_to_read_qrcode_files">Impossibile leggere ed elaborare alcuni dei codici QR. Solo %1$d/%2$d elementi verranno importati.</string>
|
||||
<string name="unable_to_generate_qrcode">Impossibile generare il codice QR</string>
|
||||
<string name="select_picture">Seleziona immagine</string>
|
||||
<string name="select_icon">Seleziona icona</string>
|
||||
|
@ -369,7 +427,16 @@
|
|||
<string name="time_sync_warning_message">Aegis si basa sull\'esatta sincronizzazione dell\'orario di sistema per generare codici corretti. Una deviazione di pochi secondi potrebbe portare a codici errati. Sembra che il tuo dispositivo non sia configurato per sincronizzare automaticamente l\'ora. Vuoi farlo adesso?</string>
|
||||
<string name="time_sync_warning_disable">Smettetela di avvertirmi. So cosa sto facendo.</string>
|
||||
<string name="google_qr_export_unrelated">Trovato codice QR non correlato. Prova a riavviare lo scanner.</string>
|
||||
<plurals name="google_qr_export_scanned">
|
||||
<item quantity="one">Scansionato %1$d/%2$d codici QR</item>
|
||||
<item quantity="other">Scansionati %1$d/%2$d codici QR</item>
|
||||
</plurals>
|
||||
<string name="google_qr_export_unexpected">Atteso il codice QR #%1$d, ma invece è stato scansionato #%2$d</string>
|
||||
<string name="backup_error_bar_message"><b>Backup della cassaforte fallito recentemente</b></string>
|
||||
<string name="backup_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'."> Un recente tentativo di backup della cassaforte con %1$s non è riuscito perché si è verificato un errore. Il backup è stato tentato %2$s. Verificare le impostazioni di backup per assicurarsi che i backup possano essere completati correttamente.
|
||||
</string>
|
||||
<string name="backup_permission_error_dialog_details" comment="The first parameter is the type of backup (e.g. built-in or Android backup). The second parameter is an elapsed time in the style of 'x seconds/minutes/days ago'."> Un recente tentativo di backup della cassaforte con %1$s non è riuscito perché Aegis non aveva l\'autorizzazione di scrittura nella destinazione del backup. Il backup è stato tentato %2$s. Questo errore può verificarsi se è stato spostata o rinominata la destinazione del backup o se recentemente è stato ripristinato Aegis da un backup. Configurare nuovamente la destinazione del backup.
|
||||
</string>
|
||||
<string name="backup_system_builtin">i backup automatici integrati di Aegis</string>
|
||||
<string name="backup_system_android">il sistema di backup su cloud di Android</string>
|
||||
<string name="backup_reminder_bar_message_with_latest" comment="The parameter is an elapsed time in the style of 'x seconds/minutes/days ago'"> L\'ultimo backup è vecchio (%s)
|
||||
|
@ -402,6 +469,7 @@
|
|||
<string name="unable_to_copy_uri_to_clipboard">Impossibile copiare l\'URI negli appunti</string>
|
||||
<string name="uri_copied_to_clipboard">URI copiato negli appunti</string>
|
||||
<string name="transfer_entry_description">Scansiona questo codice QR con l\'app di autenticazione a cui vuoi trasferire questa voce</string>
|
||||
<string name="transfer_entry_brightness">Tocca il codice QR per attivare o disattivare la luminosità a schermo intero</string>
|
||||
<string name="google_auth_compatible_transfer_description">Scansiona questi codici QR con Aegis o Google Authenticator.\n\nA causa delle limitazioni dell\'app Google Authenticator, sono inclusi solo i token TOTP e HOTP che utilizzano SHA1 e producono codici a 6 cifre</string>
|
||||
<string name="password_strength_very_weak">Molto debole</string>
|
||||
<string name="password_strength_weak">Debole</string>
|
||||
|
@ -435,17 +503,21 @@
|
|||
<string name="importer_help_2fas">Seleziona un backup di 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">Seleziona un file di backup di Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">Seleziona un file di esportazione di Authenticator Plus ottenuto tramite <b>Impostazioni -> Backup & Ripristino -> Esporta come testo e HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">Fornire un file di esportazione di Authenticator Pro ottenuto tramite <b>Impostazioni -> Backup -> Backup in file cifrato (raccomandato)</b>.</string>
|
||||
<string name="importer_help_authy">Seleziona una copia di <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, situata nella directory della memoria interna di Authy.</string>
|
||||
<string name="importer_help_andotp">Seleziona un file di backup di andOTP.</string>
|
||||
<string name="importer_help_bitwarden">Seleziona un file di esportazione/backup di Bitwarden. I file crittografati non sono supportati.</string>
|
||||
<string name="importer_help_battle_net_authenticator">Seleziona una copia di <b>/data/data/com.blizzard.messenger/shared_prefs/com.blizzard.messenger.authenticator_preferences.xml</b>, situata nella directory della memoria interna di Battle.net Authenticator.</string>
|
||||
<string name="importer_help_duo">Seleziona una copia di <b>/data/data/com.duosecurity.duomobile/files/duokit/accounts.json</b>, che si trova nella cartella di archiviazione interna di DUO.</string>
|
||||
<string name="importer_help_ente_auth">Fornire un file di esportazione di Ente Auth. Attualmente sono supportati solo i file non criptati.</string>
|
||||
<string name="importer_help_freeotp">FreeOTP 2: Fornire un file di backup.\nFreeOTP 1.x: Fornire una copia di <b>/data/data/org.fedorahosted.freeotp/shared_prefs/tokens.xml</b>, che si trova nella directory di archiviazione interna di FreeOTP.</string>
|
||||
<string name="importer_help_freeotp_plus">Seleziona un file di esportazione di FreeOTP+.</string>
|
||||
<string name="importer_warning_title_freeotp2">Compatibilità con FreeOTP 2</string>
|
||||
<string name="importer_warning_message_freeotp2">Ci sono diversi problemi in FreeOTP 2 che possono portare a backup danneggiati. Aegis cercherà di recuperare il maggior numero possibile di voci, ma è possibile che alcune o addirittura tutte non vengano importate.</string>
|
||||
<string name="importer_help_google_authenticator"><b>Sono supportati solo i file di database di Google Authenticator v5.10 e precedenti</b>.\n\nSeleziona una copia di<b>/data/data/com.google.android.apps.authenticator2/databases/databases</b>, che si trova nella cartella di archiviazione interna di Google Authenticator.</string>
|
||||
<string name="importer_help_microsoft_authenticator">Seleziona una copia di <b>/data/data/com.azure.authenticator/databases/PhoneFactor</b>, che si trova nella cartella di archiviazione interna di Microsoft Authenticator.</string>
|
||||
<string name="importer_help_plain_text">Seleziona un file di testo con un URI di Google Authenticator in ogni riga.</string>
|
||||
<string name="importer_help_steam"><b>Steam v3.0 e versioni successive non sono supportate</b>. Seleziona una copia di <b>/data/data/com.valvesoftware.android.steam.community/files/Steamguard-*.json</b>, che si trova nella cartella di archiviazione interna di Steam.</string>
|
||||
<string name="importer_help_stratum">Fornire un file di esportazione di Stratum ottenuto tramite <b>Impostazioni -> Backup -> Backup su file criptato (consigliato)</b>.</string>
|
||||
<string name="importer_help_totp_authenticator">Seleziona un file di esportazione di TOTP Authenticator.</string>
|
||||
<string name="importer_help_winauth">Seleziona un file di esportazione di WinAuth.</string>
|
||||
<string name="import_assign_icons_dialog_title">Assegna icone</string>
|
||||
|
|
2
app/src/main/res/values-iw-rIL-v29/strings.xml
Normal file
2
app/src/main/res/values-iw-rIL-v29/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
|
@ -10,6 +10,7 @@
|
|||
<string name="action_default_icon">שיחזור סמליל ברירת-מחדל</string>
|
||||
<string name="discard">ביטול</string>
|
||||
<string name="save">שמירה</string>
|
||||
<string name="all">הכל</string>
|
||||
<string name="issuer">מנפיק</string>
|
||||
<string name="yandex_pin">קוד (4-16 ספרות)</string>
|
||||
<string name="motp_pin">קוד (4- ספרות)</string>
|
||||
|
@ -29,17 +30,29 @@
|
|||
<string name="pref_section_import_export_title">ייבוא & ייצוא</string>
|
||||
<string name="pref_section_import_export_summary">ייבא גיבויים של Aegis ויישומי אימות נוספים.
|
||||
צור ייצואים ידניים של כספת ה-Aegis שלך.</string>
|
||||
<string name="pref_section_audit_log_title">יומן ביקורת</string>
|
||||
<string name="pref_section_audit_log_summary">מצא רשימה של כל האירועים החשובים שדווחו שקרו בתוך האפליקציה.</string>
|
||||
<string name="pref_section_backups_title">גיבויים</string>
|
||||
<string name="pref_section_backups_summary">קבע גיבויים אוטומטיים למיקום לבחירתך או אפשר השתתפות במערכת הגיבוי של אנדרואיד.</string>
|
||||
<string name="pref_section_icon_packs">ערכות סמלילים</string>
|
||||
<string name="pref_section_icon_packs_summary">נהל וייבא ערכות סמלילים</string>
|
||||
<string name="pref_select_theme_title">ערכת נושא</string>
|
||||
<string name="pref_dynamic_colors_title">צבעים דינמים</string>
|
||||
<string name="pref_dynamic_colors_summary">החל שכבת-על המבוססת על הצבעים של ערכת הנושא של אנדרואיד</string>
|
||||
<string name="pref_view_mode_title">מצב תצוגה</string>
|
||||
<string name="pref_lang_title">שפה</string>
|
||||
<string name="pref_show_icons_title">הצגת סמלים</string>
|
||||
<string name="pref_show_icons_summary">הצגת סמלים לצד כל ערך</string>
|
||||
<string name="pref_code_group_size_title">קיבוץ ספרות קוד</string>
|
||||
<string name="pref_code_group_size_summary">בחר את מספר הספרות לקיבוץ קודים לפיהן</string>
|
||||
<string name="pref_account_name_position_title">הצג את שם החשבון</string>
|
||||
<string name="pref_show_next_code_title">הצג את הקוד הבא</string>
|
||||
<string name="pref_show_next_code_summary">צור והצג את הקוד הבא מבעוד מועד</string>
|
||||
<string name="pref_expiration_state_title">ציין מתי תוקף הקודים עומד לפוג</string>
|
||||
<string name="pref_expiration_state_summary">שנה את צבע הקודים ותן להם להבהב כשהם עומדים לפוג</string>
|
||||
<string name="pref_expiration_state_fallback">שנה את צבע הקודים כאשר תוקפם עומד לפוג</string>
|
||||
<string name="pref_shared_issuer_account_name_title">הצג את שם החשבון רק כאשר יש צורך</string>
|
||||
<string name="pref_shared_issuer_account_name_summary">הצג שמות חשבונות רק בכל פעם שהם חולקים את אותו מנפיק. שמות חשבונות אחרים יוסתרו.</string>
|
||||
<string name="pref_import_file_title">ייבוא מקובץ</string>
|
||||
<string name="pref_import_file_summary">ייבוא טוקנים מקובץ</string>
|
||||
<string name="pref_android_backups_title">גיבויי ענן אנדרואיד</string>
|
||||
|
@ -51,16 +64,23 @@
|
|||
<string name="pref_backups_reminder_summary">הצג תזכורת לגיבוי הכספת שלך למקרה שלא גיבית את השינויים האחרונים שלך.</string>
|
||||
<string name="pref_backups_reminder_dialog_title">השבת תזכורת גיבוי</string>
|
||||
<string name="pref_backups_reminder_dialog_summary">השבתת תזכורת זו פירושה ש-Aegis לא יגיד לך אם יש לך שינויים שעדיין לא מגובים. זה מעמיד אותך בסיכון לאבד גישה לאסימונים שלך. האם אתה בטוח שברצונך להשבית את התזכורת?</string>
|
||||
<string name="pref_backups_versioning_strategy_title">תכנית גיבויים</string>
|
||||
<string name="pref_backups_versioning_strategy_keep_x_versions">שמור מספר גרסאות</string>
|
||||
<string name="pref_backups_versioning_strategy_single_backup">גיבוי יחיד</string>
|
||||
<string name="pref_backups_location_title">מיקום הגיבוי</string>
|
||||
<string name="pref_backups_location_summary">הגיבויים יאוחסנו ב</string>
|
||||
<string name="pref_backup_location_summary">הגיבוי יאוחסן במיקום</string>
|
||||
<string name="pref_backups_trigger_title">הפעלת גיבוי</string>
|
||||
<string name="pref_backups_trigger_summary">הפעלה ידנית של גיבוי</string>
|
||||
<string name="pref_backups_versions_title">מספר הגירסאות שיש לשמור</string>
|
||||
<string name="pref_backups_versions_infinite">\u221E</string>
|
||||
<plurals name="pref_backups_versions_summary">
|
||||
<item quantity="one">שמור %1$d את גירסת הגיבוי</item>
|
||||
<item quantity="two">שמור %1$d גירסאות של הגיבוי</item>
|
||||
<item quantity="many">שמור %1$d את גירסת הגיבוי</item>
|
||||
<item quantity="other">שמור %1$d את גירסת הגיבוי</item>
|
||||
</plurals>
|
||||
<string name="pref_backups_versions_infinite_summary">שמור מספר לא מוגבל של גרסאות גיבוי</string>
|
||||
<string name="pref_import_app_title">ייבוא מיישום</string>
|
||||
<string name="pref_import_app_summary">ייבוא טוקנים מאפליקציה (דורש גישת שורש)</string>
|
||||
<string name="pref_export_title">ייצוא</string>
|
||||
|
@ -98,8 +118,15 @@
|
|||
<string name="pref_encryption_summary">הצפן את הכספת ופתח אותה באמצעות סיסמה או ביומטריה</string>
|
||||
<string name="pref_biometrics_title">נעילה ביומטרית</string>
|
||||
<string name="pref_biometrics_summary">אפשר אימות ביומטרי כדי לפתוח את הכספת</string>
|
||||
<string name="pref_search_behavior_type_name">שם</string>
|
||||
<string name="pref_search_behavior_type_note">הערה</string>
|
||||
<string name="pref_search_behavior_type_groups">קבוצות</string>
|
||||
<string name="pref_set_password_title">שנה סיסמא</string>
|
||||
<string name="pref_set_password_summary">הגדר סיסמה חדשה שתצטרך כדי לפתוח את נעילת הכספת שלך</string>
|
||||
<string name="event_title_backup_created">גיבוי נוצר</string>
|
||||
<string name="audit_log_entry_deleted">(נמחק)</string>
|
||||
<string name="today_at_time">היום בשעה %1$s</string>
|
||||
<string name="day_of_week_at_time">%1$s בשעה %2$s</string>
|
||||
<string name="export_encrypted">הצפנת הכספת</string>
|
||||
<string name="export_help">פעולה זו תייצא את הכספת מהאחסון הפנימי של Aegis. בחר את הפורמט שבו תרצה שהייצוא שלך יהיה:</string>
|
||||
<string name="export_warning_unencrypted">אתה עומד לייצא עותק לא מוצפן של כספת Aegis שלך. <b>זה לא מומלץ</b>.</string>
|
||||
|
@ -137,6 +164,7 @@
|
|||
<string name="set_password_confirm">אנא אשר את הסיסמה</string>
|
||||
<string name="invalid_password">הסיסמה שגויה</string>
|
||||
<string name="invalidated_biometrics">זוהה שינוי בהגדרות האבטחה של המכשיר. עבור אל \"\"הגדרות- > -אבטחה>- > נעילה ביומטרית\"\" כדי להשבית ולהפעיל מחדש את הנעילה הביומטרית.</string>
|
||||
<string name="password_reminder">הזן את הסיסמה שלך. מדי פעם אנו מבקשים ממך לעשות זאת כדי שלא תשכח זאת.</string>
|
||||
<string name="password_reminder_freq_never">אף פעם</string>
|
||||
<string name="password_reminder_freq_weekly">שבועי</string>
|
||||
<string name="password_reminder_freq_biweekly">דו שבועי</string>
|
||||
|
@ -176,6 +204,8 @@
|
|||
<string name="snackbar_authentication_method">בחר שיטת אימות</string>
|
||||
<string name="encrypting_vault">הצפנת הכספת</string>
|
||||
<string name="exporting_vault">ייצוא הכספת</string>
|
||||
<string name="optimizing_icon">מייעל סמל</string>
|
||||
<string name="optimizing_icon_multiple">מייעל סמלים %1$d/%2$d</string>
|
||||
<string name="reading_file">קריאת קובץ</string>
|
||||
<string name="requesting_root_access">בקשת גישה לשורש</string>
|
||||
<string name="analyzing_qr">ניתוח קוד QR</string>
|
||||
|
@ -388,7 +418,6 @@
|
|||
<string name="importer_help_2fas">ספק קובץ גיבוי של 2FAS Authenticator.</string>
|
||||
<string name="importer_help_aegis">ספק קובץ ייצוא/גיבוי של Aegis.</string>
|
||||
<string name="importer_help_authenticator_plus">ספק קובץ ייצוא של Authenticator Plus שהושג דרך <b>הגדרות -> גיבוי & שחזור -> ייצוא כטקסט ו-HTML</b>.</string>
|
||||
<string name="importer_help_authenticator_pro">ספק קובץ ייצוא של Authenticator Pro שהושג דרך <b>הגדרות -> גיבוי -> גבה לקובץ מוצפן (מומלץ)</b>.</string>
|
||||
<string name="importer_help_authy">ספק עותק של <b>/data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml</b>, הממוקם בספריית האחסון הפנימית של Authy.</string>
|
||||
<string name="importer_help_andotp">ספק קובץ יצוא/גיבוי andOTP.</string>
|
||||
<string name="importer_help_bitwarden">ספק קובץ יצוא/גיבוי של Bitwarden. קבצים מוצפנים אינם נתמכים.</string>
|
||||
|
|
2
app/src/main/res/values-ja-rJP-v29/strings.xml
Normal file
2
app/src/main/res/values-ja-rJP-v29/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
|
@ -416,7 +416,6 @@
|
|||
<string name="importer_help_2fas">2FAS Authenticatorのバックアップファイルを提供します。</string>
|
||||
<string name="importer_help_aegis">Aegisのエクスポート/バックアップファイルを提供します。</string>
|
||||
<string name="importer_help_authenticator_plus">Authenticator Plusの<b>Settings -> Backup & Restore -> Export as Text and HTML</b>で取得したエクスポートファイルを提供します。</string>
|
||||
<string name="importer_help_authenticator_pro">Authenticator Pro でファイルをエクスポートするには、<b>設定 -> バックアップ -> 暗号化されたファイルへバックアップ (推奨) </b> と進みます。</string>
|
||||
<string name="importer_help_authy">Authyの内部ストレージディレクトリにある <b>/data/data/com.authy/shared_prefs/com.auth.storage.tokens.authenticator.xml</b>のコピーを提供します。</string>
|
||||
<string name="importer_help_andotp">andOTPのエクスポート/バックアップ ファイルを提供します。</string>
|
||||
<string name="importer_help_bitwarden">Bitwarden のエクスポート/バックアップファイルを提供します。暗号化されたファイルはサポートされていません。</string>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue