mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Compare commits
129 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b98bd740c | ||
|
|
5adeb5cde0 | ||
|
|
b949d5d861 | ||
|
|
b4264a30a4 | ||
|
|
cf799c0f68 | ||
|
|
97f0ca519b | ||
|
|
cf4047b701 | ||
|
|
40608a3eb5 | ||
|
|
99cb50d031 | ||
|
|
b0d0c35241 | ||
|
|
6044c93a4a | ||
|
|
b544b5d54d | ||
|
|
852378e484 | ||
|
|
711a344860 | ||
|
|
72087c7e5c | ||
|
|
f17d211fbd | ||
|
|
ae903ad236 | ||
|
|
7c3a15ce79 | ||
|
|
2230fe66ab | ||
|
|
84a62a32ff | ||
|
|
da8ef9340c | ||
|
|
af068349e4 | ||
|
|
56cb5953dd | ||
|
|
2fc2a9c7c1 | ||
|
|
69e7cdbc47 | ||
|
|
39d9a74a73 | ||
|
|
b609d4e182 | ||
|
|
7212c73481 | ||
|
|
3ee4caa153 | ||
|
|
28e4d929bb | ||
|
|
e8ecf28f7c | ||
|
|
3d5adbfc01 | ||
|
|
72bfc50703 | ||
|
|
a60e2e780d | ||
|
|
9210851765 | ||
|
|
a46251be7b | ||
|
|
e8ec27dc38 | ||
|
|
30dd7c567c | ||
|
|
b196145578 | ||
|
|
ac347db2d1 | ||
|
|
013c437cf7 | ||
|
|
1f600d60e3 | ||
|
|
d5ecaeb331 | ||
|
|
db8b0100de | ||
|
|
5f41177a1f | ||
|
|
0db2b7023e | ||
|
|
a2c2a21dde | ||
|
|
d7a3e7fedd | ||
|
|
5e4ee167fc | ||
|
|
c911b7c511 | ||
|
|
c79d1f1b81 | ||
|
|
daf717becd | ||
|
|
48d4483484 | ||
|
|
c6b0ee27df | ||
|
|
0053726d0b | ||
|
|
1395af88d1 | ||
|
|
2e3ade1b4a | ||
|
|
90c43acfbf | ||
|
|
90b68fd972 | ||
|
|
ef6aeceb20 | ||
|
|
ef8685f0e7 | ||
|
|
3021ed158b | ||
|
|
a57043f496 | ||
|
|
fdfd124fee | ||
|
|
71739de91a | ||
|
|
041b1fbf53 | ||
|
|
3a72b32b4a | ||
|
|
994f174300 | ||
|
|
c0f32254bb | ||
|
|
fd98dbeebe | ||
|
|
69ac6e6698 | ||
|
|
35e224d227 | ||
|
|
2da8552a53 | ||
|
|
a9a5047949 | ||
|
|
17c98f7fea | ||
|
|
c3bc890665 | ||
|
|
7a295c2541 | ||
|
|
01b1b74c6a | ||
|
|
fd25d21c72 | ||
|
|
6b1d8d24dd | ||
|
|
5d002f5128 | ||
|
|
98314c466f | ||
|
|
4f7afd7c97 | ||
|
|
a9e139ff7e | ||
|
|
4ff483a8d2 | ||
|
|
1916b79df1 | ||
|
|
98e15a7717 | ||
|
|
dfd18e3c7f | ||
|
|
8fbbaae05b | ||
|
|
8a60056866 | ||
|
|
e9d20a51a5 | ||
|
|
a28d77ba32 | ||
|
|
d143605a40 | ||
|
|
15972efb4f | ||
|
|
dae5f65c0d | ||
|
|
564b5f10ea | ||
|
|
e6e40f9bd4 | ||
|
|
bd15e36b52 | ||
|
|
43faca3061 | ||
|
|
82af9bada2 | ||
|
|
2befa68c93 | ||
|
|
4034a2bfc4 | ||
|
|
0d93e867cf | ||
|
|
8cac4eb51c | ||
|
|
933d34ff1d | ||
|
|
d34f460b98 | ||
|
|
7632face63 | ||
|
|
1f678fc975 | ||
|
|
082c839639 | ||
|
|
600d548fce | ||
|
|
3035f9b686 | ||
|
|
6eae0f02d3 | ||
|
|
87be2f4b9e | ||
|
|
3b054504a1 | ||
|
|
a88f6b968a | ||
|
|
1fc4f150bf | ||
|
|
1f4e59cbdc | ||
|
|
b5dc8d9adf | ||
|
|
43f7e08548 | ||
|
|
05fc6f87ec | ||
|
|
daae535fa1 | ||
|
|
90c8cb3455 | ||
|
|
daeee10de9 | ||
|
|
6c1c401a71 | ||
|
|
fd7f0fceb2 | ||
|
|
26b8a616be | ||
|
|
d88882f439 | ||
|
|
09dc1d6baa | ||
|
|
f4f5e86979 |
@@ -1,7 +1,6 @@
|
||||
name: Bug Report
|
||||
name: Bug report
|
||||
description: Report a bug.
|
||||
title: ""
|
||||
labels: bug
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
||||
@@ -1,7 +1,6 @@
|
||||
name: Feature request
|
||||
description: Suggest an idea.
|
||||
title: ""
|
||||
labels: feature
|
||||
labels: ["feature"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
16
CHANGELOG
16
CHANGELOG
@@ -1,3 +1,19 @@
|
||||
KeePassDX(4.1.9)
|
||||
* Fix landscape UI #2198 #2200 (@chenxiaolong)
|
||||
* Fix start loop and flash screen #2201
|
||||
* Small fixes
|
||||
|
||||
KeePassDX(4.1.8)
|
||||
* Updated to API 35 minimum SDK 19 #2073 #2138 #2067 #2133 #1687 (Thx @Dev-ClayP)
|
||||
* Remember last read-only state #2099 #2100 (Thx @rmacklin)
|
||||
* Fix merge deletion #1516
|
||||
* Fix space in search #175
|
||||
* Fix deletable recycle bin #2163
|
||||
* Small fixes
|
||||
|
||||
KeePassDX(4.1.7)
|
||||
* Fix CipherDatabase for biometric states #2119
|
||||
|
||||
KeePassDX(4.1.6)
|
||||
* Auto open biometric prompt from database list #2113
|
||||
* Fix Keystore errors #2114 #2115
|
||||
|
||||
@@ -5,14 +5,14 @@ apply plugin: 'kotlin-kapt'
|
||||
|
||||
android {
|
||||
namespace 'com.kunzisoft.keepass'
|
||||
compileSdkVersion 34
|
||||
compileSdkVersion 36
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.kunzisoft.keepass"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 34
|
||||
versionCode = 138
|
||||
versionName = "4.1.6"
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 35
|
||||
versionCode = 143
|
||||
versionName = "4.1.9"
|
||||
multiDexEnabled true
|
||||
|
||||
testApplicationId = "com.kunzisoft.keepass.tests"
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"formatVersion": 1,
|
||||
"database": {
|
||||
"version": 3,
|
||||
"identityHash": "a20aec7cf09664b1102ec659fa51160a",
|
||||
"entities": [
|
||||
{
|
||||
"tableName": "file_database_history",
|
||||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`database_uri` TEXT NOT NULL, `database_alias` TEXT NOT NULL, `keyfile_uri` TEXT, `hardware_key` TEXT, `read_only` INTEGER, `updated` INTEGER NOT NULL, PRIMARY KEY(`database_uri`))",
|
||||
"fields": [
|
||||
{
|
||||
"fieldPath": "databaseUri",
|
||||
"columnName": "database_uri",
|
||||
"affinity": "TEXT",
|
||||
"notNull": true
|
||||
},
|
||||
{
|
||||
"fieldPath": "databaseAlias",
|
||||
"columnName": "database_alias",
|
||||
"affinity": "TEXT",
|
||||
"notNull": true
|
||||
},
|
||||
{
|
||||
"fieldPath": "keyFileUri",
|
||||
"columnName": "keyfile_uri",
|
||||
"affinity": "TEXT",
|
||||
"notNull": false
|
||||
},
|
||||
{
|
||||
"fieldPath": "hardwareKey",
|
||||
"columnName": "hardware_key",
|
||||
"affinity": "TEXT",
|
||||
"notNull": false
|
||||
},
|
||||
{
|
||||
"fieldPath": "readOnly",
|
||||
"columnName": "read_only",
|
||||
"affinity": "INTEGER",
|
||||
"notNull": false
|
||||
},
|
||||
{
|
||||
"fieldPath": "updated",
|
||||
"columnName": "updated",
|
||||
"affinity": "INTEGER",
|
||||
"notNull": true
|
||||
}
|
||||
],
|
||||
"primaryKey": {
|
||||
"autoGenerate": false,
|
||||
"columnNames": [
|
||||
"database_uri"
|
||||
]
|
||||
},
|
||||
"indices": [],
|
||||
"foreignKeys": []
|
||||
},
|
||||
{
|
||||
"tableName": "cipher_database",
|
||||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`database_uri` TEXT NOT NULL, `encrypted_value` TEXT NOT NULL, `specs_parameters` TEXT NOT NULL, PRIMARY KEY(`database_uri`))",
|
||||
"fields": [
|
||||
{
|
||||
"fieldPath": "databaseUri",
|
||||
"columnName": "database_uri",
|
||||
"affinity": "TEXT",
|
||||
"notNull": true
|
||||
},
|
||||
{
|
||||
"fieldPath": "encryptedValue",
|
||||
"columnName": "encrypted_value",
|
||||
"affinity": "TEXT",
|
||||
"notNull": true
|
||||
},
|
||||
{
|
||||
"fieldPath": "specParameters",
|
||||
"columnName": "specs_parameters",
|
||||
"affinity": "TEXT",
|
||||
"notNull": true
|
||||
}
|
||||
],
|
||||
"primaryKey": {
|
||||
"autoGenerate": false,
|
||||
"columnNames": [
|
||||
"database_uri"
|
||||
]
|
||||
},
|
||||
"indices": [],
|
||||
"foreignKeys": []
|
||||
}
|
||||
],
|
||||
"views": [],
|
||||
"setupQueries": [
|
||||
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
|
||||
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'a20aec7cf09664b1102ec659fa51160a')"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -164,7 +164,7 @@
|
||||
android:configChanges="keyboardHidden"
|
||||
android:excludeFromRecents="true"/>
|
||||
<activity
|
||||
android:name="com.kunzisoft.keepass.settings.AdvancedUnlockSettingsActivity" />
|
||||
android:name="com.kunzisoft.keepass.settings.DeviceUnlockSettingsActivity" />
|
||||
<activity
|
||||
android:name="com.kunzisoft.keepass.settings.AutofillSettingsActivity" />
|
||||
<activity
|
||||
@@ -221,7 +221,7 @@
|
||||
android:enabled="true"
|
||||
android:exported="false" />
|
||||
<service
|
||||
android:name="com.kunzisoft.keepass.services.AdvancedUnlockNotificationService"
|
||||
android:name="com.kunzisoft.keepass.services.DeviceUnlockNotificationService"
|
||||
android:foregroundServiceType="specialUse"
|
||||
android:enabled="true"
|
||||
android:exported="false" />
|
||||
|
||||
@@ -358,78 +358,41 @@ class Loupe(imageView: ImageView, container: ViewGroup) : View.OnTouchListener,
|
||||
val imageView = imageViewRef.get() ?: return
|
||||
|
||||
isViewTranslateAnimationRunning = true
|
||||
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
imageView.run {
|
||||
val translationY = if (velY > 0) {
|
||||
originalViewBounds.top + height - top
|
||||
} else {
|
||||
originalViewBounds.top - height - top
|
||||
}
|
||||
animate()
|
||||
.setDuration(dismissAnimationDuration)
|
||||
.setInterpolator(dismissAnimationInterpolator)
|
||||
.translationY(translationY.toFloat())
|
||||
.setUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(imageView, amount)
|
||||
}
|
||||
.setListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
onViewTranslateListener?.onDismiss(imageView)
|
||||
cleanup()
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
ObjectAnimator.ofFloat(imageView, View.TRANSLATION_Y, if (velY > 0) {
|
||||
originalViewBounds.top + imageView.height - imageView.top
|
||||
|
||||
imageView.run {
|
||||
val translationY = if (velY > 0) {
|
||||
originalViewBounds.top + height - top
|
||||
} else {
|
||||
originalViewBounds.top - imageView.height - imageView.top
|
||||
}.toFloat()).apply {
|
||||
duration = dismissAnimationDuration
|
||||
interpolator = dismissAnimationInterpolator
|
||||
addUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(imageView, amount)
|
||||
}
|
||||
addListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
onViewTranslateListener?.onDismiss(imageView)
|
||||
cleanup()
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
start()
|
||||
originalViewBounds.top - height - top
|
||||
}
|
||||
animate()
|
||||
.setDuration(dismissAnimationDuration)
|
||||
.setInterpolator(dismissAnimationInterpolator)
|
||||
.translationY(translationY.toFloat())
|
||||
.setUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(imageView, amount)
|
||||
}
|
||||
.setListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
onViewTranslateListener?.onDismiss(imageView)
|
||||
cleanup()
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -657,137 +620,76 @@ class Loupe(imageView: ImageView, container: ViewGroup) : View.OnTouchListener,
|
||||
|
||||
private fun restoreViewTransform() {
|
||||
val imageView = imageViewRef.get() ?: return
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
imageView.run {
|
||||
animate()
|
||||
.setDuration(restoreAnimationDuration)
|
||||
.setInterpolator(restoreAnimationInterpolator)
|
||||
.translationY((originalViewBounds.top - top).toFloat())
|
||||
.setUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(this, amount)
|
||||
imageView.run {
|
||||
animate()
|
||||
.setDuration(restoreAnimationDuration)
|
||||
.setInterpolator(restoreAnimationInterpolator)
|
||||
.translationY((originalViewBounds.top - top).toFloat())
|
||||
.setUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(this, amount)
|
||||
}
|
||||
.setListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
.setListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
onViewTranslateListener?.onRestore(imageView)
|
||||
}
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
onViewTranslateListener?.onRestore(imageView)
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
ObjectAnimator.ofFloat(imageView, View.TRANSLATION_Y, (originalViewBounds.top - imageView.top).toFloat()).apply {
|
||||
duration = restoreAnimationDuration
|
||||
interpolator = restoreAnimationInterpolator
|
||||
addUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(imageView, amount)
|
||||
}
|
||||
addListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
onViewTranslateListener?.onRestore(imageView)
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
start()
|
||||
}
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun startDragToDismissAnimation() {
|
||||
val imageView = imageViewRef.get() ?: return
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
imageView.run {
|
||||
val translationY = if (y - initialY > 0) {
|
||||
originalViewBounds.top + height - top
|
||||
} else {
|
||||
originalViewBounds.top - height - top
|
||||
}
|
||||
animate()
|
||||
.setDuration(dismissAnimationDuration)
|
||||
.setInterpolator(AccelerateDecelerateInterpolator())
|
||||
.translationY(translationY.toFloat())
|
||||
.setUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(this, amount)
|
||||
|
||||
imageView.run {
|
||||
val translationY = if (y - initialY > 0) {
|
||||
originalViewBounds.top + height - top
|
||||
} else {
|
||||
originalViewBounds.top - height - top
|
||||
}
|
||||
animate()
|
||||
.setDuration(dismissAnimationDuration)
|
||||
.setInterpolator(AccelerateDecelerateInterpolator())
|
||||
.translationY(translationY.toFloat())
|
||||
.setUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(this, amount)
|
||||
}
|
||||
.setListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = true
|
||||
}
|
||||
.setListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = true
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
onViewTranslateListener?.onDismiss(imageView)
|
||||
cleanup()
|
||||
}
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
onViewTranslateListener?.onDismiss(imageView)
|
||||
cleanup()
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
}
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
ObjectAnimator.ofFloat(imageView, View.TRANSLATION_Y, imageView.translationY).apply {
|
||||
duration = dismissAnimationDuration
|
||||
interpolator = AccelerateDecelerateInterpolator()
|
||||
addUpdateListener {
|
||||
val amount = calcTranslationAmount()
|
||||
changeBackgroundAlpha(amount)
|
||||
onViewTranslateListener?.onViewTranslate(imageView, amount)
|
||||
}
|
||||
addListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = true
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
onViewTranslateListener?.onDismiss(imageView)
|
||||
cleanup()
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(p0: Animator) {
|
||||
isViewTranslateAnimationRunning = false
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
start()
|
||||
}
|
||||
override fun onAnimationRepeat(p0: Animator) {
|
||||
// no op
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun processFlingToDismiss(velocityY: Float) {
|
||||
|
||||
@@ -58,7 +58,7 @@ class AboutActivity : StylishActivity() {
|
||||
var version: String
|
||||
var build: String
|
||||
try {
|
||||
version = packageManager.getPackageInfoCompat(packageName).versionName
|
||||
version = packageManager.getPackageInfoCompat(packageName).versionName ?: ""
|
||||
build = BuildConfig.BUILD_VERSION
|
||||
} catch (e: NameNotFoundException) {
|
||||
Log.w(javaClass.simpleName, "Unable to get the app or the build version", e)
|
||||
@@ -78,9 +78,8 @@ class AboutActivity : StylishActivity() {
|
||||
movementMethod = LinkMovementMethod.getInstance()
|
||||
text = HtmlCompat.fromHtml(getString(R.string.html_about_licence, DateTime().year),
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
textDirection = View.TEXT_DIRECTION_ANY_RTL
|
||||
}
|
||||
textDirection = View.TEXT_DIRECTION_ANY_RTL
|
||||
|
||||
}
|
||||
|
||||
findViewById<TextView>(R.id.activity_about_privacy_text).apply {
|
||||
|
||||
@@ -23,7 +23,6 @@ import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
@@ -38,13 +37,10 @@ import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.core.graphics.BlendModeColorFilterCompat
|
||||
import androidx.core.graphics.BlendModeCompat
|
||||
import androidx.core.graphics.ColorUtils
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
@@ -83,11 +79,13 @@ import com.kunzisoft.keepass.view.hideByFading
|
||||
import com.kunzisoft.keepass.view.setTransparentNavigationBar
|
||||
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||
import com.kunzisoft.keepass.viewmodels.EntryViewModel
|
||||
import java.util.EnumSet
|
||||
import java.util.UUID
|
||||
|
||||
class EntryActivity : DatabaseLockActivity() {
|
||||
|
||||
private var footer: ViewGroup? = null
|
||||
private var container: View? = null
|
||||
private var coordinatorLayout: CoordinatorLayout? = null
|
||||
private var collapsingToolbarLayout: CollapsingToolbarLayout? = null
|
||||
private var appBarLayout: AppBarLayout? = null
|
||||
@@ -139,6 +137,7 @@ class EntryActivity : DatabaseLockActivity() {
|
||||
|
||||
// Get views
|
||||
footer = findViewById(R.id.activity_entry_footer)
|
||||
container = findViewById(R.id.activity_entry_container)
|
||||
coordinatorLayout = findViewById(R.id.toolbar_coordinator)
|
||||
collapsingToolbarLayout = findViewById(R.id.toolbar_layout)
|
||||
appBarLayout = findViewById(R.id.app_bar)
|
||||
@@ -154,8 +153,12 @@ class EntryActivity : DatabaseLockActivity() {
|
||||
setTransparentNavigationBar {
|
||||
// To fix margin with API 27
|
||||
ViewCompat.setOnApplyWindowInsetsListener(collapsingToolbarLayout!!, null)
|
||||
coordinatorLayout?.applyWindowInsets(WindowInsetPosition.TOP)
|
||||
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM)
|
||||
container?.applyWindowInsets(EnumSet.of(
|
||||
WindowInsetPosition.TOP_MARGINS,
|
||||
WindowInsetPosition.BOTTOM_MARGINS,
|
||||
WindowInsetPosition.START_MARGINS,
|
||||
WindowInsetPosition.END_MARGINS,
|
||||
))
|
||||
}
|
||||
|
||||
// Empty title
|
||||
|
||||
@@ -100,6 +100,7 @@ import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||
import com.kunzisoft.keepass.view.updateLockPaddingStart
|
||||
import com.kunzisoft.keepass.viewmodels.ColorPickerViewModel
|
||||
import com.kunzisoft.keepass.viewmodels.EntryEditViewModel
|
||||
import java.util.EnumSet
|
||||
import java.util.UUID
|
||||
|
||||
class EntryEditActivity : DatabaseLockActivity(),
|
||||
@@ -180,8 +181,12 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
|
||||
// To apply fit window with transparency
|
||||
setTransparentNavigationBar(applyToStatusBar = true) {
|
||||
container?.applyWindowInsets(WindowInsetPosition.TOP_BOTTOM_IME)
|
||||
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM_IME)
|
||||
container?.applyWindowInsets(EnumSet.of(
|
||||
WindowInsetPosition.TOP_MARGINS,
|
||||
WindowInsetPosition.BOTTOM_MARGINS,
|
||||
WindowInsetPosition.START_MARGINS,
|
||||
WindowInsetPosition.END_MARGINS,
|
||||
))
|
||||
}
|
||||
|
||||
stopService(Intent(this, ClipboardEntryNotificationService::class.java))
|
||||
@@ -604,16 +609,12 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
isVisible = isEnabled
|
||||
}
|
||||
menu?.findItem(R.id.menu_add_attachment)?.apply {
|
||||
// Attachment not compatible below KitKat
|
||||
isEnabled = !mIsTemplate
|
||||
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
|
||||
isVisible = isEnabled
|
||||
}
|
||||
menu?.findItem(R.id.menu_add_otp)?.apply {
|
||||
// OTP not compatible below KitKat
|
||||
isEnabled = mAllowOTP
|
||||
&& !mIsTemplate
|
||||
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
|
||||
isVisible = isEnabled
|
||||
}
|
||||
return super.onPrepareOptionsMenu(menu)
|
||||
|
||||
@@ -70,7 +70,6 @@ import com.kunzisoft.keepass.utils.MagikeyboardUtil
|
||||
import com.kunzisoft.keepass.utils.MenuUtil
|
||||
import com.kunzisoft.keepass.utils.UriUtil.isContributingUser
|
||||
import com.kunzisoft.keepass.utils.UriUtil.openUrl
|
||||
import com.kunzisoft.keepass.utils.allowCreateDocumentByStorageAccessFramework
|
||||
import com.kunzisoft.keepass.utils.getParcelableCompat
|
||||
import com.kunzisoft.keepass.view.asError
|
||||
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||
@@ -263,7 +262,7 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
|
||||
GroupActivity.launch(
|
||||
this@FileDatabaseSelectActivity,
|
||||
database,
|
||||
PreferencesUtil.enableReadOnlyDatabase(this@FileDatabaseSelectActivity)
|
||||
false
|
||||
)
|
||||
}
|
||||
ACTION_DATABASE_LOAD_TASK -> {
|
||||
@@ -330,13 +329,7 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
|
||||
// Show open and create button or special mode
|
||||
when (mSpecialMode) {
|
||||
SpecialMode.DEFAULT -> {
|
||||
if (packageManager.allowCreateDocumentByStorageAccessFramework()) {
|
||||
// There is an activity which can handle this intent.
|
||||
createDatabaseButtonView?.visibility = View.VISIBLE
|
||||
} else{
|
||||
// No Activity found that can handle this intent.
|
||||
createDatabaseButtonView?.visibility = View.GONE
|
||||
}
|
||||
createDatabaseButtonView?.visibility = View.VISIBLE
|
||||
}
|
||||
else -> {
|
||||
// Disable create button if in selection mode or request for autofill
|
||||
|
||||
@@ -48,6 +48,7 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.view.ActionMode
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
@@ -117,6 +118,7 @@ import com.kunzisoft.keepass.view.updateLockPaddingStart
|
||||
import com.kunzisoft.keepass.viewmodels.GroupEditViewModel
|
||||
import com.kunzisoft.keepass.viewmodels.GroupViewModel
|
||||
import org.joda.time.LocalDateTime
|
||||
import java.util.EnumSet
|
||||
|
||||
|
||||
class GroupActivity : DatabaseLockActivity(),
|
||||
@@ -131,6 +133,7 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
private var header: ViewGroup? = null
|
||||
private var footer: ViewGroup? = null
|
||||
private var drawerLayout: DrawerLayout? = null
|
||||
private var constraintLayout: ConstraintLayout? = null
|
||||
private var databaseNavView: NavigationDatabaseView? = null
|
||||
private var coordinatorLayout: CoordinatorLayout? = null
|
||||
private var coordinatorError: CoordinatorLayout? = null
|
||||
@@ -279,6 +282,7 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
header = findViewById(R.id.activity_group_header)
|
||||
footer = findViewById(R.id.activity_group_footer)
|
||||
drawerLayout = findViewById(R.id.drawer_layout)
|
||||
constraintLayout = findViewById(R.id.activity_group_container_view)
|
||||
databaseNavView = findViewById(R.id.database_nav_view)
|
||||
coordinatorLayout = findViewById(R.id.group_coordinator)
|
||||
coordinatorError = findViewById(R.id.error_coordinator)
|
||||
@@ -296,8 +300,19 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
|
||||
// To apply fit window with transparency
|
||||
setTransparentNavigationBar(applyToStatusBar = true) {
|
||||
drawerLayout?.applyWindowInsets(WindowInsetPosition.TOP_BOTTOM_IME)
|
||||
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM_IME)
|
||||
constraintLayout?.applyWindowInsets(EnumSet.of(
|
||||
WindowInsetPosition.TOP_MARGINS,
|
||||
WindowInsetPosition.BOTTOM_MARGINS,
|
||||
WindowInsetPosition.START_MARGINS,
|
||||
WindowInsetPosition.END_MARGINS,
|
||||
))
|
||||
// The background of the drawer is meant to overlap system bars, so use padding
|
||||
databaseNavView?.applyWindowInsets(EnumSet.of(
|
||||
WindowInsetPosition.TOP_PADDING,
|
||||
WindowInsetPosition.BOTTOM_PADDING,
|
||||
// Only on the start side, since the drawer is anchored to one side of the screen
|
||||
WindowInsetPosition.START_PADDING,
|
||||
))
|
||||
}
|
||||
|
||||
lockView?.setOnClickListener {
|
||||
@@ -1373,7 +1388,8 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
}
|
||||
else -> {
|
||||
// Load the previous group
|
||||
loadMainGroup(mPreviousGroupsIds.removeLast())
|
||||
loadMainGroup(mPreviousGroupsIds
|
||||
.removeAt(mPreviousGroupsIds.lastIndex))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ import androidx.biometric.BiometricManager
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import androidx.fragment.app.commit
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
@@ -52,6 +53,7 @@ import com.kunzisoft.keepass.activities.helpers.EntrySelectionHelper
|
||||
import com.kunzisoft.keepass.activities.helpers.ExternalFileHelper
|
||||
import com.kunzisoft.keepass.activities.helpers.SpecialMode
|
||||
import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity
|
||||
import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
|
||||
import com.kunzisoft.keepass.autofill.AutofillComponent
|
||||
import com.kunzisoft.keepass.autofill.AutofillHelper
|
||||
import com.kunzisoft.keepass.biometric.DeviceUnlockFragment
|
||||
@@ -66,6 +68,7 @@ import com.kunzisoft.keepass.hardware.HardwareKey
|
||||
import com.kunzisoft.keepass.model.CipherDecryptDatabase
|
||||
import com.kunzisoft.keepass.model.CipherEncryptDatabase
|
||||
import com.kunzisoft.keepass.model.CredentialStorage
|
||||
import com.kunzisoft.keepass.model.DatabaseFile
|
||||
import com.kunzisoft.keepass.model.RegisterInfo
|
||||
import com.kunzisoft.keepass.model.SearchInfo
|
||||
import com.kunzisoft.keepass.services.DatabaseTaskNotificationService.Companion.ACTION_DATABASE_LOAD_TASK
|
||||
@@ -73,8 +76,8 @@ import com.kunzisoft.keepass.services.DatabaseTaskNotificationService.Companion.
|
||||
import com.kunzisoft.keepass.services.DatabaseTaskNotificationService.Companion.DATABASE_URI_KEY
|
||||
import com.kunzisoft.keepass.services.DatabaseTaskNotificationService.Companion.MAIN_CREDENTIAL_KEY
|
||||
import com.kunzisoft.keepass.services.DatabaseTaskNotificationService.Companion.READ_ONLY_KEY
|
||||
import com.kunzisoft.keepass.settings.AdvancedUnlockSettingsActivity
|
||||
import com.kunzisoft.keepass.settings.AppearanceSettingsActivity
|
||||
import com.kunzisoft.keepass.settings.DeviceUnlockSettingsActivity
|
||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||
import com.kunzisoft.keepass.utils.BACK_PREVIOUS_KEYBOARD_ACTION
|
||||
@@ -97,7 +100,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
private var toolbar: Toolbar? = null
|
||||
private var filenameView: TextView? = null
|
||||
private var logotypeButton: View? = null
|
||||
private var advancedUnlockButton: View? = null
|
||||
private var deviceUnlockButton: View? = null
|
||||
private var mainCredentialView: MainCredentialView? = null
|
||||
private var confirmButtonView: Button? = null
|
||||
private var infoContainerView: ViewGroup? = null
|
||||
@@ -105,7 +108,11 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
private var deviceUnlockFragment: DeviceUnlockFragment? = null
|
||||
|
||||
private val mDatabaseFileViewModel: DatabaseFileViewModel by viewModels()
|
||||
private val mDeviceUnlockViewModel: DeviceUnlockViewModel by viewModels()
|
||||
private val mDeviceUnlockViewModel: DeviceUnlockViewModel? by lazy {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
ViewModelProvider(this)[DeviceUnlockViewModel::class.java]
|
||||
} else null
|
||||
}
|
||||
|
||||
private val mPasswordActivityEducation = PasswordActivityEducation(this)
|
||||
|
||||
@@ -138,7 +145,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
|
||||
filenameView = findViewById(R.id.filename)
|
||||
logotypeButton = findViewById(R.id.activity_password_logotype)
|
||||
advancedUnlockButton = findViewById(R.id.fragment_advanced_unlock_container_view)
|
||||
deviceUnlockButton = findViewById(R.id.fragment_device_unlock_container_view)
|
||||
mainCredentialView = findViewById(R.id.activity_password_credentials)
|
||||
confirmButtonView = findViewById(R.id.activity_password_open_button)
|
||||
infoContainerView = findViewById(R.id.activity_password_info_container)
|
||||
@@ -147,7 +154,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
mReadOnly = if (savedInstanceState != null && savedInstanceState.containsKey(KEY_READ_ONLY)) {
|
||||
savedInstanceState.getBoolean(KEY_READ_ONLY)
|
||||
} else {
|
||||
PreferencesUtil.enableReadOnlyDatabase(this)
|
||||
false
|
||||
}
|
||||
mRememberKeyFile = PreferencesUtil.rememberKeyFileLocations(this)
|
||||
mRememberHardwareKey = PreferencesUtil.rememberHardwareKey(this)
|
||||
@@ -175,7 +182,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
// Listen password checkbox to init advanced unlock and confirmation button
|
||||
mainCredentialView?.onConditionToStoreCredentialChanged = { _, verified ->
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
mDeviceUnlockViewModel.checkConditionToStoreCredential(
|
||||
mDeviceUnlockViewModel?.checkConditionToStoreCredential(
|
||||
condition = verified
|
||||
)
|
||||
}
|
||||
@@ -203,6 +210,13 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
}
|
||||
mForceReadOnly = databaseFileNotExists
|
||||
|
||||
// Restore read-only state from database file if not forced
|
||||
if (!mForceReadOnly) {
|
||||
databaseFile?.readOnly?.let { savedReadOnlyState ->
|
||||
mReadOnly = savedReadOnlyState
|
||||
}
|
||||
}
|
||||
|
||||
invalidateOptionsMenu()
|
||||
|
||||
// Post init uri with KeyFile only if needed
|
||||
@@ -233,29 +247,31 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
mDeviceUnlockViewModel.uiState.collect { uiState ->
|
||||
// New value received
|
||||
uiState.credentialRequiredCipher?.let { cipher ->
|
||||
mDeviceUnlockViewModel.encryptCredential(
|
||||
credential = getCredentialForEncryption(),
|
||||
cipher = cipher
|
||||
)
|
||||
}
|
||||
uiState.cipherEncryptDatabase?.let { cipherEncryptDatabase ->
|
||||
onCredentialEncrypted(cipherEncryptDatabase)
|
||||
mDeviceUnlockViewModel.consumeCredentialEncrypted()
|
||||
}
|
||||
uiState.cipherDecryptDatabase?.let { cipherDecryptDatabase ->
|
||||
onCredentialDecrypted(cipherDecryptDatabase)
|
||||
mDeviceUnlockViewModel.consumeCredentialDecrypted()
|
||||
}
|
||||
uiState.exception?.let { error ->
|
||||
Snackbar.make(
|
||||
coordinatorLayout,
|
||||
deviceUnlockError(error, this@MainCredentialActivity),
|
||||
Snackbar.LENGTH_LONG
|
||||
).asError().show()
|
||||
mDeviceUnlockViewModel.exceptionShown()
|
||||
mDeviceUnlockViewModel?.let { deviceUnlockViewModel ->
|
||||
deviceUnlockViewModel.uiState.collect { uiState ->
|
||||
// New value received
|
||||
uiState.credentialRequiredCipher?.let { cipher ->
|
||||
deviceUnlockViewModel.encryptCredential(
|
||||
credential = getCredentialForEncryption(),
|
||||
cipher = cipher
|
||||
)
|
||||
}
|
||||
uiState.cipherEncryptDatabase?.let { cipherEncryptDatabase ->
|
||||
onCredentialEncrypted(cipherEncryptDatabase)
|
||||
deviceUnlockViewModel.consumeCredentialEncrypted()
|
||||
}
|
||||
uiState.cipherDecryptDatabase?.let { cipherDecryptDatabase ->
|
||||
onCredentialDecrypted(cipherDecryptDatabase)
|
||||
deviceUnlockViewModel.consumeCredentialDecrypted()
|
||||
}
|
||||
uiState.exception?.let { error ->
|
||||
Snackbar.make(
|
||||
coordinatorLayout,
|
||||
deviceUnlockError(error, this@MainCredentialActivity),
|
||||
Snackbar.LENGTH_LONG
|
||||
).asError().show()
|
||||
deviceUnlockViewModel.exceptionShown()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -268,14 +284,14 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
|
||||
// Init Biometric elements only if allowed
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||
&& PreferencesUtil.isAdvancedUnlockEnable(this)) {
|
||||
&& PreferencesUtil.isDeviceUnlockEnable(this)) {
|
||||
deviceUnlockFragment = supportFragmentManager
|
||||
.findFragmentByTag(UNLOCK_FRAGMENT_TAG) as? DeviceUnlockFragment?
|
||||
if (deviceUnlockFragment == null) {
|
||||
deviceUnlockFragment = DeviceUnlockFragment().also {
|
||||
supportFragmentManager.commit {
|
||||
replace(
|
||||
R.id.fragment_advanced_unlock_container_view,
|
||||
R.id.fragment_device_unlock_container_view,
|
||||
it,
|
||||
UNLOCK_FRAGMENT_TAG
|
||||
)
|
||||
@@ -295,10 +311,6 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
mDatabaseFileUri?.let { databaseFileUri ->
|
||||
mDatabaseFileViewModel.loadDatabaseFile(databaseFileUri)
|
||||
}
|
||||
|
||||
mDatabase?.let { database ->
|
||||
launchGroupActivityIfLoaded(database)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDatabaseRetrieved(database: ContextualDatabase?) {
|
||||
@@ -508,7 +520,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
} else {
|
||||
// Init Biometric elements
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
mDeviceUnlockViewModel.connect(databaseFileUri)
|
||||
mDeviceUnlockViewModel?.connect(databaseFileUri)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -652,7 +664,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
try {
|
||||
menu.findItem(R.id.menu_open_file_read_mode_key)
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Unable to find read mode menu")
|
||||
Log.e(TAG, "Unable to find read mode menu", e)
|
||||
}
|
||||
performedNextEducation(menu)
|
||||
},
|
||||
@@ -665,14 +677,14 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
val biometricCanAuthenticate = DeviceUnlockManager.canAuthenticate(this)
|
||||
if ((biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED
|
||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS)
|
||||
&& advancedUnlockButton != null) {
|
||||
&& deviceUnlockButton != null) {
|
||||
mPasswordActivityEducation.checkAndPerformedBiometricEducation(
|
||||
advancedUnlockButton!!,
|
||||
deviceUnlockButton!!,
|
||||
{
|
||||
startActivity(
|
||||
Intent(
|
||||
this,
|
||||
AdvancedUnlockSettingsActivity::class.java
|
||||
DeviceUnlockSettingsActivity::class.java
|
||||
)
|
||||
)
|
||||
},
|
||||
@@ -681,7 +693,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
})
|
||||
}
|
||||
}
|
||||
} catch (ignored: Exception) {}
|
||||
} catch (_: Exception) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,6 +714,12 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
R.id.menu_open_file_read_mode_key -> {
|
||||
mReadOnly = !mReadOnly
|
||||
changeOpenFileReadIcon(item)
|
||||
// Save the read-only state to database
|
||||
mDatabaseFileUri?.let { databaseUri ->
|
||||
FileDatabaseHistoryAction.getInstance(applicationContext).addOrUpdateDatabaseFile(
|
||||
DatabaseFile(databaseUri = databaseUri, readOnly = mReadOnly)
|
||||
)
|
||||
}
|
||||
}
|
||||
else -> MenuUtil.onDefaultMenuOptionsItemSelected(this, item)
|
||||
}
|
||||
@@ -712,7 +730,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
mDeviceUnlockViewModel.disconnect()
|
||||
mDeviceUnlockViewModel?.disconnect()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -176,21 +176,14 @@ class SortDialogFragment : DatabaseDialogFragment() {
|
||||
return bundle
|
||||
}
|
||||
|
||||
fun getInstance(sortNodeEnum: SortNodeEnum,
|
||||
ascending: Boolean,
|
||||
groupsBefore: Boolean): SortDialogFragment {
|
||||
val bundle = buildBundle(sortNodeEnum, ascending, groupsBefore)
|
||||
val fragment = SortDialogFragment()
|
||||
fragment.arguments = bundle
|
||||
return fragment
|
||||
}
|
||||
|
||||
fun getInstance(sortNodeEnum: SortNodeEnum,
|
||||
ascending: Boolean,
|
||||
groupsBefore: Boolean,
|
||||
recycleBinBottom: Boolean): SortDialogFragment {
|
||||
recycleBinBottom: Boolean?): SortDialogFragment {
|
||||
val bundle = buildBundle(sortNodeEnum, ascending, groupsBefore)
|
||||
bundle.putBoolean(SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY, recycleBinBottom)
|
||||
recycleBinBottom?.let {
|
||||
bundle.putBoolean(SORT_RECYCLE_BIN_BOTTOM_BUNDLE_KEY, recycleBinBottom)
|
||||
}
|
||||
val fragment = SortDialogFragment()
|
||||
fragment.arguments = bundle
|
||||
return fragment
|
||||
|
||||
@@ -76,9 +76,6 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen
|
||||
|
||||
private var specialMode: SpecialMode = SpecialMode.DEFAULT
|
||||
|
||||
private var mRecycleBinEnable: Boolean = false
|
||||
private var mRecycleBin: Group? = null
|
||||
|
||||
private var mRecycleViewScrollListener = object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||
super.onScrollStateChanged(recyclerView, newState)
|
||||
@@ -102,21 +99,14 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen
|
||||
R.id.menu_sort -> {
|
||||
context?.let { context ->
|
||||
val sortDialogFragment: SortDialogFragment =
|
||||
if (mRecycleBinEnable) {
|
||||
SortDialogFragment.getInstance(
|
||||
PreferencesUtil.getListSort(context),
|
||||
PreferencesUtil.getAscendingSort(context),
|
||||
PreferencesUtil.getGroupsBeforeSort(context),
|
||||
SortDialogFragment.getInstance(
|
||||
PreferencesUtil.getListSort(context),
|
||||
PreferencesUtil.getAscendingSort(context),
|
||||
PreferencesUtil.getGroupsBeforeSort(context),
|
||||
if (mDatabase?.isRecycleBinEnabled == true) {
|
||||
PreferencesUtil.getRecycleBinBottomSort(context)
|
||||
)
|
||||
} else {
|
||||
SortDialogFragment.getInstance(
|
||||
PreferencesUtil.getListSort(context),
|
||||
PreferencesUtil.getAscendingSort(context),
|
||||
PreferencesUtil.getGroupsBeforeSort(context)
|
||||
)
|
||||
}
|
||||
|
||||
} else null
|
||||
)
|
||||
sortDialogFragment.show(childFragmentManager, "sortDialog")
|
||||
}
|
||||
true
|
||||
@@ -165,9 +155,6 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen
|
||||
}
|
||||
|
||||
override fun onDatabaseRetrieved(database: ContextualDatabase?) {
|
||||
mRecycleBinEnable = database?.isRecycleBinEnabled == true
|
||||
mRecycleBin = database?.recycleBin
|
||||
|
||||
context?.let { context ->
|
||||
database?.let { database ->
|
||||
mAdapter = NodesAdapter(context, database).apply {
|
||||
@@ -312,6 +299,11 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen
|
||||
}
|
||||
}
|
||||
|
||||
private fun containsRecycleBin(nodes: List<Node>): Boolean {
|
||||
return mDatabase?.isRecycleBinEnabled == true
|
||||
&& nodes.any { it == mDatabase?.recycleBin }
|
||||
}
|
||||
|
||||
fun actionNodesCallback(database: ContextualDatabase,
|
||||
nodes: List<Node>,
|
||||
menuListener: NodesActionMenuListener?,
|
||||
@@ -336,8 +328,7 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen
|
||||
// Open and Edit for a single item
|
||||
if (nodes.size == 1) {
|
||||
// Edition
|
||||
if (database.isReadOnly
|
||||
|| (mRecycleBinEnable && nodes[0] == mRecycleBin)) {
|
||||
if (database.isReadOnly || containsRecycleBin(nodes)) {
|
||||
menu?.removeItem(R.id.menu_edit)
|
||||
}
|
||||
} else {
|
||||
@@ -357,8 +348,7 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen
|
||||
}
|
||||
|
||||
// Deletion
|
||||
if (database.isReadOnly
|
||||
|| (mRecycleBinEnable && nodes.any { it == mRecycleBin })) {
|
||||
if (database.isReadOnly || containsRecycleBin(nodes)) {
|
||||
menu?.removeItem(R.id.menu_delete)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -530,9 +530,8 @@ class NodesAdapter (
|
||||
holder?.otpToken?.apply {
|
||||
text = otpElement?.tokenString
|
||||
setTextSize(mTextSizeUnit, mOtpTokenTextDefaultDimension, mPrefSizeMultiplier)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
textDirection = View.TEXT_DIRECTION_LTR
|
||||
}
|
||||
textDirection = View.TEXT_DIRECTION_LTR
|
||||
|
||||
}
|
||||
holder?.otpContainer?.setOnClickListener {
|
||||
otpElement?.token?.let { token ->
|
||||
|
||||
@@ -38,7 +38,6 @@ class App : MultiDexApplication() {
|
||||
ProcessLifecycleOwner.get().lifecycle.addObserver(AppLifecycleObserver)
|
||||
|
||||
Stylish.load(this)
|
||||
PRNGFixes.apply()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,399 +0,0 @@
|
||||
package com.kunzisoft.keepass.app;
|
||||
|
||||
/*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will Google be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, as long as the origin is not misrepresented.
|
||||
*/
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Process;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.Provider;
|
||||
import java.security.SecureRandom;
|
||||
import java.security.SecureRandomSpi;
|
||||
import java.security.Security;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Fixes for the output of the default PRNG having low entropy.
|
||||
*
|
||||
* The fixes need to be applied via {@link #apply()} before any use of Java
|
||||
* Cryptography Architecture primitives. A good place to invoke them is in the
|
||||
* application's {@code onCreate}.
|
||||
*/
|
||||
public final class PRNGFixes {
|
||||
|
||||
private static final byte[] BUILD_FINGERPRINT_AND_DEVICE_SERIAL =
|
||||
getBuildFingerprintAndDeviceSerial();
|
||||
|
||||
/** Hidden constructor to prevent instantiation. */
|
||||
private PRNGFixes() {}
|
||||
|
||||
/**
|
||||
* Applies all fixes.
|
||||
*
|
||||
* @throws SecurityException if a fix is needed but could not be applied.
|
||||
*/
|
||||
public static void apply() {
|
||||
try {
|
||||
if (supportedOnThisDevice()) {
|
||||
applyOpenSSLFix();
|
||||
installLinuxPRNGSecureRandom();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// Do nothing, do the best we can to implement the workaround
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean supportedOnThisDevice() {
|
||||
// Blacklist on samsung devices
|
||||
if (Build.MANUFACTURER.toLowerCase(Locale.ENGLISH).contains("samsung")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (onSELinuxEnforce()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
File urandom = new File("/dev/urandom");
|
||||
|
||||
// Test permissions
|
||||
if ( !(urandom.canRead() && urandom.canWrite()) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Test actually writing to urandom
|
||||
try {
|
||||
FileOutputStream fos = new FileOutputStream(urandom);
|
||||
fos.write(0);
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
private static boolean onSELinuxEnforce() {
|
||||
try {
|
||||
ProcessBuilder builder = new ProcessBuilder("getenforce");
|
||||
builder.redirectErrorStream(true);
|
||||
java.lang.Process process = builder.start();
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
||||
process.waitFor();
|
||||
|
||||
String output = reader.readLine();
|
||||
|
||||
if (output == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return output.toLowerCase(Locale.US).startsWith("enforcing");
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies the fix for OpenSSL PRNG having low entropy. Does nothing if the
|
||||
* fix is not needed.
|
||||
*
|
||||
* @throws SecurityException if the fix is needed but could not be applied.
|
||||
*/
|
||||
private static void applyOpenSSLFix() throws SecurityException {
|
||||
if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN)
|
||||
|| (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2)) {
|
||||
// No need to apply the fix
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// Mix in the device- and invocation-specific seed.
|
||||
Class.forName("org.apache.harmony.xnet.provider.jsse.NativeCrypto")
|
||||
.getMethod("RAND_seed", byte[].class)
|
||||
.invoke(null, generateSeed());
|
||||
|
||||
// Mix output of Linux PRNG into OpenSSL's PRNG
|
||||
int bytesRead = (Integer) Class.forName(
|
||||
"org.apache.harmony.xnet.provider.jsse.NativeCrypto")
|
||||
.getMethod("RAND_load_file", String.class, long.class)
|
||||
.invoke(null, "/dev/urandom", 1024);
|
||||
if (bytesRead != 1024) {
|
||||
throw new IOException(
|
||||
"Unexpected number of bytes read from Linux PRNG: "
|
||||
+ bytesRead);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new SecurityException("Failed to seed OpenSSL PRNG", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Installs a Linux PRNG-backed {@code SecureRandom} implementation as the
|
||||
* default. Does nothing if the implementation is already the default or if
|
||||
* there is not need to install the implementation.
|
||||
*
|
||||
* @throws SecurityException if the fix is needed but could not be applied.
|
||||
*/
|
||||
private static void installLinuxPRNGSecureRandom()
|
||||
throws SecurityException {
|
||||
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {
|
||||
// No need to apply the fix
|
||||
return;
|
||||
}
|
||||
|
||||
// Install a Linux PRNG-based SecureRandom implementation as the
|
||||
// default, if not yet installed.
|
||||
Provider[] secureRandomProviders =
|
||||
Security.getProviders("SecureRandom.SHA1PRNG");
|
||||
if ((secureRandomProviders == null)
|
||||
|| (secureRandomProviders.length < 1)
|
||||
|| (!LinuxPRNGSecureRandomProvider.class.equals(
|
||||
secureRandomProviders[0].getClass()))) {
|
||||
Security.insertProviderAt(new LinuxPRNGSecureRandomProvider(), 1);
|
||||
}
|
||||
|
||||
// Assert that new SecureRandom() and
|
||||
// SecureRandom.getInstance("SHA1PRNG") return a SecureRandom backed
|
||||
// by the Linux PRNG-based SecureRandom implementation.
|
||||
SecureRandom rng1 = new SecureRandom();
|
||||
if (!LinuxPRNGSecureRandomProvider.class.equals(
|
||||
rng1.getProvider().getClass())) {
|
||||
throw new SecurityException(
|
||||
"new SecureRandom() backed by wrong Provider: "
|
||||
+ rng1.getProvider().getClass());
|
||||
}
|
||||
|
||||
SecureRandom rng2;
|
||||
try {
|
||||
rng2 = SecureRandom.getInstance("SHA1PRNG");
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
throw new SecurityException("SHA1PRNG not available", e);
|
||||
}
|
||||
if (!LinuxPRNGSecureRandomProvider.class.equals(
|
||||
rng2.getProvider().getClass())) {
|
||||
throw new SecurityException(
|
||||
"SecureRandom.getInstance(\"SHA1PRNG\") backed by wrong"
|
||||
+ " Provider: " + rng2.getProvider().getClass());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code Provider} of {@code SecureRandom} engines which pass through
|
||||
* all requests to the Linux PRNG.
|
||||
*/
|
||||
private static class LinuxPRNGSecureRandomProvider extends Provider {
|
||||
|
||||
public LinuxPRNGSecureRandomProvider() {
|
||||
super("LinuxPRNG",
|
||||
1.0,
|
||||
"A Linux-specific random number provider that uses"
|
||||
+ " /dev/urandom");
|
||||
// Although /dev/urandom is not a SHA-1 PRNG, some apps
|
||||
// explicitly request a SHA1PRNG SecureRandom and we thus need to
|
||||
// prevent them from getting the default implementation whose output
|
||||
// may have low entropy.
|
||||
put("SecureRandom.SHA1PRNG", LinuxPRNGSecureRandom.class.getName());
|
||||
put("SecureRandom.SHA1PRNG ImplementedIn", "Software");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link SecureRandomSpi} which passes all requests to the Linux PRNG
|
||||
* ({@code /dev/urandom}).
|
||||
*/
|
||||
public static class LinuxPRNGSecureRandom extends SecureRandomSpi {
|
||||
|
||||
/*
|
||||
* IMPLEMENTATION NOTE: Requests to generate bytes and to mix in a seed
|
||||
* are passed through to the Linux PRNG (/dev/urandom). Instances of
|
||||
* this class seed themselves by mixing in the current time, PID, UID,
|
||||
* build fingerprint, and hardware serial number (where available) into
|
||||
* Linux PRNG.
|
||||
*
|
||||
* Concurrency: Read requests to the underlying Linux PRNG are
|
||||
* serialized (on sLock) to ensure that multiple threads do not get
|
||||
* duplicated PRNG output.
|
||||
*/
|
||||
|
||||
private static final File URANDOM_FILE = new File("/dev/urandom");
|
||||
|
||||
|
||||
private static final Object sLock = new Object();
|
||||
|
||||
/**
|
||||
* Input stream for reading from Linux PRNG or {@code null} if not yet
|
||||
* opened.
|
||||
*
|
||||
* @GuardedBy("sLock")
|
||||
*/
|
||||
private static DataInputStream sUrandomIn;
|
||||
|
||||
/**
|
||||
* Output stream for writing to Linux PRNG or {@code null} if not yet
|
||||
* opened.
|
||||
*
|
||||
* @GuardedBy("sLock")
|
||||
*/
|
||||
private static OutputStream sUrandomOut;
|
||||
|
||||
/**
|
||||
* Whether this engine instance has been seeded. This is needed because
|
||||
* each instance needs to seed itself if the client does not explicitly
|
||||
* seed it.
|
||||
*/
|
||||
private boolean mSeeded;
|
||||
|
||||
@Override
|
||||
protected void engineSetSeed(byte[] bytes) {
|
||||
try {
|
||||
OutputStream out;
|
||||
synchronized (sLock) {
|
||||
out = getUrandomOutputStream();
|
||||
}
|
||||
out.write(bytes);
|
||||
out.flush();
|
||||
mSeeded = true;
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException(
|
||||
"Failed to mix seed into " + URANDOM_FILE, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void engineNextBytes(byte[] bytes) {
|
||||
if (!mSeeded) {
|
||||
// Mix in the device- and invocation-specific seed.
|
||||
engineSetSeed(generateSeed());
|
||||
}
|
||||
|
||||
try {
|
||||
DataInputStream in;
|
||||
synchronized (sLock) {
|
||||
in = getUrandomInputStream();
|
||||
}
|
||||
synchronized (in) {
|
||||
in.readFully(bytes);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException(
|
||||
"Failed to read from " + URANDOM_FILE, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected byte[] engineGenerateSeed(int size) {
|
||||
byte[] seed = new byte[size];
|
||||
engineNextBytes(seed);
|
||||
return seed;
|
||||
}
|
||||
|
||||
private DataInputStream getUrandomInputStream() {
|
||||
synchronized (sLock) {
|
||||
if (sUrandomIn == null) {
|
||||
// NOTE: Consider inserting a BufferedInputStream between
|
||||
// DataInputStream and FileInputStream if you need higher
|
||||
// PRNG output performance and can live with future PRNG
|
||||
// output being pulled into this process prematurely.
|
||||
try {
|
||||
sUrandomIn = new DataInputStream(
|
||||
new FileInputStream(URANDOM_FILE));
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException("Failed to open "
|
||||
+ URANDOM_FILE + " for reading", e);
|
||||
}
|
||||
}
|
||||
return sUrandomIn;
|
||||
}
|
||||
}
|
||||
|
||||
private OutputStream getUrandomOutputStream() {
|
||||
synchronized (sLock) {
|
||||
if (sUrandomOut == null) {
|
||||
try {
|
||||
sUrandomOut = new FileOutputStream(URANDOM_FILE);
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException("Failed to open "
|
||||
+ URANDOM_FILE + " for writing", e);
|
||||
}
|
||||
}
|
||||
return sUrandomOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a device- and invocation-specific seed to be mixed into the
|
||||
* Linux PRNG.
|
||||
*/
|
||||
private static byte[] generateSeed() {
|
||||
try {
|
||||
ByteArrayOutputStream seedBuffer = new ByteArrayOutputStream();
|
||||
DataOutputStream seedBufferOut =
|
||||
new DataOutputStream(seedBuffer);
|
||||
seedBufferOut.writeLong(System.currentTimeMillis());
|
||||
seedBufferOut.writeLong(System.nanoTime());
|
||||
seedBufferOut.writeInt(Process.myPid());
|
||||
seedBufferOut.writeInt(Process.myUid());
|
||||
seedBufferOut.write(BUILD_FINGERPRINT_AND_DEVICE_SERIAL);
|
||||
seedBufferOut.close();
|
||||
return seedBuffer.toByteArray();
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException("Failed to generate seed", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the hardware serial number of this device.
|
||||
*
|
||||
* @return serial number or {@code null} if not available.
|
||||
*/
|
||||
private static String getDeviceSerialNumber() {
|
||||
// We're using the Reflection API because Build.SERIAL is only available
|
||||
// since API Level 9 (Gingerbread, Android 2.3).
|
||||
try {
|
||||
return (String) Build.class.getField("SERIAL").get(null);
|
||||
} catch (Exception ignored) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static byte[] getBuildFingerprintAndDeviceSerial() {
|
||||
StringBuilder result = new StringBuilder();
|
||||
String fingerprint = Build.FINGERPRINT;
|
||||
if (fingerprint != null) {
|
||||
result.append(fingerprint);
|
||||
}
|
||||
String serial = getDeviceSerialNumber();
|
||||
if (serial != null) {
|
||||
result.append(serial);
|
||||
}
|
||||
try {
|
||||
return result.toString().getBytes("UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException("UTF-8 encoding not supported");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,10 +26,11 @@ import android.content.Context
|
||||
import androidx.room.AutoMigration
|
||||
|
||||
@Database(
|
||||
version = 2,
|
||||
version = 3,
|
||||
entities = [FileDatabaseHistoryEntity::class, CipherDatabaseEntity::class],
|
||||
autoMigrations = [
|
||||
AutoMigration (from = 1, to = 2)
|
||||
AutoMigration (from = 1, to = 2),
|
||||
AutoMigration (from = 2, to = 3)
|
||||
]
|
||||
)
|
||||
abstract class AppDatabase : RoomDatabase() {
|
||||
|
||||
@@ -28,9 +28,10 @@ import android.os.IBinder
|
||||
import android.util.Base64
|
||||
import android.util.Log
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.net.toUri
|
||||
import com.kunzisoft.keepass.database.element.binary.BinaryData.Companion.BASE64_FLAG
|
||||
import com.kunzisoft.keepass.model.CipherEncryptDatabase
|
||||
import com.kunzisoft.keepass.services.AdvancedUnlockNotificationService
|
||||
import com.kunzisoft.keepass.services.DeviceUnlockNotificationService
|
||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||
import com.kunzisoft.keepass.utils.IOActionTask
|
||||
import com.kunzisoft.keepass.utils.SingletonHolderParameter
|
||||
@@ -43,19 +44,19 @@ class CipherDatabaseAction(context: Context) {
|
||||
AppDatabase.getDatabase(applicationContext).cipherDatabaseDao()
|
||||
|
||||
// Temp DAO to easily remove content if object no longer in memory
|
||||
private var useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext)
|
||||
private var useTempDao = PreferencesUtil.isTempDeviceUnlockEnable(applicationContext)
|
||||
|
||||
private var mBinder: AdvancedUnlockNotificationService.AdvancedUnlockBinder? = null
|
||||
private var mBinder: DeviceUnlockNotificationService.DeviceUnlockBinder? = null
|
||||
private var mServiceConnection: ServiceConnection? = null
|
||||
|
||||
private var mDatabaseListeners = LinkedList<CipherDatabaseListener>()
|
||||
private var mAdvancedUnlockBroadcastReceiver = AdvancedUnlockNotificationService.AdvancedUnlockReceiver {
|
||||
private var mDeviceUnlockBroadcastReceiver = DeviceUnlockNotificationService.DeviceUnlockReceiver {
|
||||
deleteAll()
|
||||
removeAllDataAndDetach()
|
||||
}
|
||||
|
||||
fun reloadPreferences() {
|
||||
useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext)
|
||||
private fun reloadPreferences() {
|
||||
useTempDao = PreferencesUtil.isTempDeviceUnlockEnable(applicationContext)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
@@ -70,15 +71,15 @@ class CipherDatabaseAction(context: Context) {
|
||||
|
||||
@Synchronized
|
||||
private fun attachService(performedAction: () -> Unit) {
|
||||
ContextCompat.registerReceiver(applicationContext, mAdvancedUnlockBroadcastReceiver,
|
||||
ContextCompat.registerReceiver(applicationContext, mDeviceUnlockBroadcastReceiver,
|
||||
IntentFilter().apply {
|
||||
addAction(AdvancedUnlockNotificationService.REMOVE_ADVANCED_UNLOCK_KEY_ACTION)
|
||||
addAction(DeviceUnlockNotificationService.REMOVE_DEVICE_UNLOCK_KEY_ACTION)
|
||||
}, ContextCompat.RECEIVER_EXPORTED
|
||||
)
|
||||
|
||||
mServiceConnection = object : ServiceConnection {
|
||||
override fun onServiceConnected(name: ComponentName?, serviceBinder: IBinder?) {
|
||||
mBinder = (serviceBinder as AdvancedUnlockNotificationService.AdvancedUnlockBinder)
|
||||
mBinder = (serviceBinder as DeviceUnlockNotificationService.DeviceUnlockBinder)
|
||||
performedAction.invoke()
|
||||
}
|
||||
|
||||
@@ -87,7 +88,7 @@ class CipherDatabaseAction(context: Context) {
|
||||
}
|
||||
}
|
||||
try {
|
||||
AdvancedUnlockNotificationService.bindService(applicationContext,
|
||||
DeviceUnlockNotificationService.bindService(applicationContext,
|
||||
mServiceConnection!!,
|
||||
Context.BIND_AUTO_CREATE)
|
||||
} catch (e: Exception) {
|
||||
@@ -99,11 +100,11 @@ class CipherDatabaseAction(context: Context) {
|
||||
@Synchronized
|
||||
private fun detachService() {
|
||||
try {
|
||||
applicationContext.unregisterReceiver(mAdvancedUnlockBroadcastReceiver)
|
||||
applicationContext.unregisterReceiver(mDeviceUnlockBroadcastReceiver)
|
||||
} catch (_: Exception) {}
|
||||
|
||||
mServiceConnection?.let {
|
||||
AdvancedUnlockNotificationService.unbindService(applicationContext, it)
|
||||
DeviceUnlockNotificationService.unbindService(applicationContext, it)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,23 +124,27 @@ class CipherDatabaseAction(context: Context) {
|
||||
private fun onClear() {
|
||||
mBinder = null
|
||||
mServiceConnection = null
|
||||
mDatabaseListeners.forEach {
|
||||
it.onCipherDatabaseCleared()
|
||||
mDatabaseListeners.forEach { listener ->
|
||||
listener.onCipherDatabaseCleared()
|
||||
}
|
||||
}
|
||||
|
||||
interface CipherDatabaseListener {
|
||||
fun onCipherDatabaseRetrieved(databaseUri: Uri, cipherDatabase: CipherEncryptDatabase?)
|
||||
fun onCipherDatabaseAddedOrUpdated(cipherDatabase: CipherEncryptDatabase)
|
||||
fun onCipherDatabaseDeleted(databaseUri: Uri)
|
||||
fun onAllCipherDatabasesDeleted()
|
||||
fun onCipherDatabaseCleared()
|
||||
}
|
||||
|
||||
fun getCipherDatabase(databaseUri: Uri,
|
||||
cipherDatabaseResultListener: (CipherEncryptDatabase?) -> Unit) {
|
||||
cipherDatabaseResultListener: ((CipherEncryptDatabase?) -> Unit)? = null) {
|
||||
if (useTempDao) {
|
||||
serviceActionTask {
|
||||
var cipherDatabase: CipherEncryptDatabase? = null
|
||||
mBinder?.getCipherDatabase(databaseUri)?.let { cipherDatabaseEntity ->
|
||||
cipherDatabase = CipherEncryptDatabase().apply {
|
||||
this.databaseUri = Uri.parse(cipherDatabaseEntity.databaseUri)
|
||||
this.databaseUri = cipherDatabaseEntity.databaseUri.toUri()
|
||||
this.encryptedValue = Base64.decode(
|
||||
cipherDatabaseEntity.encryptedValue,
|
||||
BASE64_FLAG
|
||||
@@ -150,7 +155,11 @@ class CipherDatabaseAction(context: Context) {
|
||||
)
|
||||
}
|
||||
}
|
||||
cipherDatabaseResultListener.invoke(cipherDatabase)
|
||||
cipherDatabaseResultListener?.invoke(cipherDatabase) ?: run {
|
||||
mDatabaseListeners.forEach { listener ->
|
||||
listener.onCipherDatabaseRetrieved(databaseUri, cipherDatabase)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
IOActionTask(
|
||||
@@ -158,7 +167,7 @@ class CipherDatabaseAction(context: Context) {
|
||||
cipherDatabaseDao.getByDatabaseUri(databaseUri.toString())
|
||||
?.let { cipherDatabaseEntity ->
|
||||
CipherEncryptDatabase().apply {
|
||||
this.databaseUri = Uri.parse(cipherDatabaseEntity.databaseUri)
|
||||
this.databaseUri = cipherDatabaseEntity.databaseUri.toUri()
|
||||
this.encryptedValue = Base64.decode(
|
||||
cipherDatabaseEntity.encryptedValue,
|
||||
Base64.NO_WRAP
|
||||
@@ -170,14 +179,18 @@ class CipherDatabaseAction(context: Context) {
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
cipherDatabaseResultListener.invoke(it)
|
||||
{ cipherDatabase ->
|
||||
cipherDatabaseResultListener?.invoke(cipherDatabase) ?: run {
|
||||
mDatabaseListeners.forEach { listener ->
|
||||
listener.onCipherDatabaseRetrieved(databaseUri, cipherDatabase)
|
||||
}
|
||||
}
|
||||
}
|
||||
).execute()
|
||||
}
|
||||
}
|
||||
|
||||
fun containsCipherDatabase(databaseUri: Uri?,
|
||||
private fun containsCipherDatabase(databaseUri: Uri?,
|
||||
contains: (Boolean) -> Unit) {
|
||||
if (databaseUri == null) {
|
||||
contains.invoke(false)
|
||||
@@ -210,7 +223,11 @@ class CipherDatabaseAction(context: Context) {
|
||||
// The only case to create service (not needed to get an info)
|
||||
serviceActionTask(true) {
|
||||
mBinder?.addOrUpdateCipherDatabase(cipherDatabaseEntity)
|
||||
cipherDatabaseResultListener?.invoke()
|
||||
cipherDatabaseResultListener?.invoke() ?: run {
|
||||
mDatabaseListeners.forEach { listener ->
|
||||
listener.onCipherDatabaseAddedOrUpdated(cipherEncryptDatabase)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
IOActionTask(
|
||||
@@ -225,7 +242,11 @@ class CipherDatabaseAction(context: Context) {
|
||||
}
|
||||
},
|
||||
{
|
||||
cipherDatabaseResultListener?.invoke()
|
||||
cipherDatabaseResultListener?.invoke() ?: run {
|
||||
mDatabaseListeners.forEach { listener ->
|
||||
listener.onCipherDatabaseAddedOrUpdated(cipherEncryptDatabase)
|
||||
}
|
||||
}
|
||||
}
|
||||
).execute()
|
||||
}
|
||||
@@ -237,7 +258,11 @@ class CipherDatabaseAction(context: Context) {
|
||||
if (useTempDao) {
|
||||
serviceActionTask {
|
||||
mBinder?.deleteByDatabaseUri(databaseUri)
|
||||
cipherDatabaseResultListener?.invoke()
|
||||
cipherDatabaseResultListener?.invoke() ?: run {
|
||||
mDatabaseListeners.forEach { listener ->
|
||||
listener.onCipherDatabaseDeleted(databaseUri)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
IOActionTask(
|
||||
@@ -245,10 +270,15 @@ class CipherDatabaseAction(context: Context) {
|
||||
cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString())
|
||||
},
|
||||
{
|
||||
cipherDatabaseResultListener?.invoke()
|
||||
cipherDatabaseResultListener?.invoke() ?: run {
|
||||
mDatabaseListeners.forEach { listener ->
|
||||
listener.onCipherDatabaseDeleted(databaseUri)
|
||||
}
|
||||
}
|
||||
}
|
||||
).execute()
|
||||
}
|
||||
reloadPreferences()
|
||||
}
|
||||
|
||||
fun deleteAll() {
|
||||
@@ -263,8 +293,12 @@ class CipherDatabaseAction(context: Context) {
|
||||
cipherDatabaseDao.deleteAll()
|
||||
}
|
||||
).execute()
|
||||
mDatabaseListeners.forEach { listener ->
|
||||
listener.onAllCipherDatabasesDeleted()
|
||||
}
|
||||
// Unbind
|
||||
removeAllDataAndDetach()
|
||||
reloadPreferences()
|
||||
}
|
||||
|
||||
companion object : SingletonHolderParameter<CipherDatabaseAction, Context>(::CipherDatabaseAction) {
|
||||
|
||||
@@ -49,6 +49,7 @@ class FileDatabaseHistoryAction(private val applicationContext: Context) {
|
||||
databaseUri,
|
||||
fileDatabaseHistoryEntity?.keyFileUri?.parseUri(),
|
||||
HardwareKey.getHardwareKeyFromString(fileDatabaseHistoryEntity?.hardwareKey),
|
||||
fileDatabaseHistoryEntity?.readOnly,
|
||||
fileDatabaseHistoryEntity?.databaseUri?.decodeUri(),
|
||||
fileDatabaseInfo.retrieveDatabaseAlias(fileDatabaseHistoryEntity?.databaseAlias
|
||||
?: ""),
|
||||
@@ -99,6 +100,7 @@ class FileDatabaseHistoryAction(private val applicationContext: Context) {
|
||||
fileDatabaseHistoryEntity.databaseUri.parseUri(),
|
||||
fileDatabaseHistoryEntity.keyFileUri?.parseUri(),
|
||||
HardwareKey.getHardwareKeyFromString(fileDatabaseHistoryEntity.hardwareKey),
|
||||
fileDatabaseHistoryEntity.readOnly,
|
||||
fileDatabaseHistoryEntity.databaseUri.decodeUri(),
|
||||
fileDatabaseInfo.retrieveDatabaseAlias(fileDatabaseHistoryEntity.databaseAlias),
|
||||
fileDatabaseInfo.exists,
|
||||
@@ -147,6 +149,8 @@ class FileDatabaseHistoryAction(private val applicationContext: Context) {
|
||||
?: "",
|
||||
databaseFileToAddOrUpdate.keyFileUri?.toString(),
|
||||
databaseFileToAddOrUpdate.hardwareKey?.value,
|
||||
databaseFileToAddOrUpdate.readOnly
|
||||
?: fileDatabaseHistoryRetrieve?.readOnly,
|
||||
System.currentTimeMillis()
|
||||
)
|
||||
|
||||
@@ -168,6 +172,7 @@ class FileDatabaseHistoryAction(private val applicationContext: Context) {
|
||||
fileDatabaseHistory.databaseUri.parseUri(),
|
||||
fileDatabaseHistory.keyFileUri?.parseUri(),
|
||||
HardwareKey.getHardwareKeyFromString(fileDatabaseHistory.hardwareKey),
|
||||
fileDatabaseHistory.readOnly,
|
||||
fileDatabaseHistory.databaseUri.decodeUri(),
|
||||
fileDatabaseInfo.retrieveDatabaseAlias(fileDatabaseHistory.databaseAlias),
|
||||
fileDatabaseInfo.exists,
|
||||
@@ -195,6 +200,7 @@ class FileDatabaseHistoryAction(private val applicationContext: Context) {
|
||||
fileDatabaseHistory.databaseUri.parseUri(),
|
||||
fileDatabaseHistory.keyFileUri?.parseUri(),
|
||||
HardwareKey.getHardwareKeyFromString(fileDatabaseHistory.hardwareKey),
|
||||
fileDatabaseHistory.readOnly,
|
||||
fileDatabaseHistory.databaseUri.decodeUri(),
|
||||
databaseFileToDelete.databaseAlias
|
||||
)
|
||||
|
||||
@@ -38,6 +38,9 @@ data class FileDatabaseHistoryEntity(
|
||||
@ColumnInfo(name = "hardware_key")
|
||||
var hardwareKey: String?,
|
||||
|
||||
@ColumnInfo(name = "read_only")
|
||||
var readOnly: Boolean?,
|
||||
|
||||
@ColumnInfo(name = "updated")
|
||||
val updated: Long
|
||||
) {
|
||||
|
||||
@@ -64,7 +64,7 @@ class DeviceUnlockFragment: Fragment() {
|
||||
private var mBiometricPrompt: BiometricPrompt? = null
|
||||
|
||||
// Only to fix multiple fingerprint menu #332
|
||||
private var mAllowAdvancedUnlockMenu = false
|
||||
private var mAllowDeviceUnlockMenu = false
|
||||
|
||||
private var mDeviceCredentialResultLauncher: ActivityResultLauncher<Intent>? = registerForActivityResult(
|
||||
ActivityResultContracts.StartActivityForResult()
|
||||
@@ -95,8 +95,8 @@ class DeviceUnlockFragment: Fragment() {
|
||||
private val menuProvider: MenuProvider = object: MenuProvider {
|
||||
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
|
||||
// biometric menu
|
||||
if (mAllowAdvancedUnlockMenu)
|
||||
menuInflater.inflate(R.menu.advanced_unlock, menu)
|
||||
if (mAllowDeviceUnlockMenu)
|
||||
menuInflater.inflate(R.menu.device_unlock, menu)
|
||||
}
|
||||
|
||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
|
||||
@@ -111,9 +111,9 @@ class DeviceUnlockFragment: Fragment() {
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
super.onCreateView(inflater, container, savedInstanceState)
|
||||
|
||||
val rootView = inflater.inflate(R.layout.fragment_advanced_unlock, container, false)
|
||||
val rootView = inflater.inflate(R.layout.fragment_device_unlock, container, false)
|
||||
|
||||
mDeviceUnlockView = rootView.findViewById(R.id.advanced_unlock_view)
|
||||
mDeviceUnlockView = rootView.findViewById(R.id.device_unlock_view)
|
||||
|
||||
return rootView
|
||||
}
|
||||
@@ -138,35 +138,34 @@ class DeviceUnlockFragment: Fragment() {
|
||||
// Prompt
|
||||
manageDeviceCredentialPrompt(uiState.cryptoPromptState)
|
||||
// Advanced menu
|
||||
mAllowAdvancedUnlockMenu = uiState.allowAdvancedUnlockMenu
|
||||
mAllowDeviceUnlockMenu = uiState.allowDeviceUnlockMenu
|
||||
activity?.invalidateOptionsMenu()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
mDeviceUnlockViewModel.checkUnlockAvailability()
|
||||
}
|
||||
|
||||
fun cancelBiometricPrompt() {
|
||||
mBiometricPrompt?.cancelAuthentication()
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
mBiometricPrompt?.cancelAuthentication()
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleDeviceCredentialMode(deviceUnlockMode: DeviceUnlockMode) {
|
||||
try {
|
||||
when (deviceUnlockMode) {
|
||||
DeviceUnlockMode.BIOMETRIC_UNAVAILABLE -> setNotAvailableMode()
|
||||
DeviceUnlockMode.BIOMETRIC_SECURITY_UPDATE_REQUIRED -> setSecurityUpdateRequiredMode()
|
||||
DeviceUnlockMode.DEVICE_CREDENTIAL_OR_BIOMETRIC_NOT_CONFIGURED -> setNotConfiguredMode()
|
||||
DeviceUnlockMode.KEY_MANAGER_UNAVAILABLE -> setKeyManagerNotAvailableMode()
|
||||
DeviceUnlockMode.WAIT_CREDENTIAL -> setWaitCredentialMode()
|
||||
DeviceUnlockMode.STORE_CREDENTIAL -> setStoreCredentialMode()
|
||||
DeviceUnlockMode.EXTRACT_CREDENTIAL -> setExtractCredentialMode()
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
try {
|
||||
when (deviceUnlockMode) {
|
||||
DeviceUnlockMode.BIOMETRIC_UNAVAILABLE -> setNotAvailableMode()
|
||||
DeviceUnlockMode.BIOMETRIC_SECURITY_UPDATE_REQUIRED -> setSecurityUpdateRequiredMode()
|
||||
DeviceUnlockMode.DEVICE_CREDENTIAL_OR_BIOMETRIC_NOT_CONFIGURED -> setNotConfiguredMode()
|
||||
DeviceUnlockMode.KEY_MANAGER_UNAVAILABLE -> setKeyManagerNotAvailableMode()
|
||||
DeviceUnlockMode.WAIT_CREDENTIAL -> setWaitCredentialMode()
|
||||
DeviceUnlockMode.STORE_CREDENTIAL -> setStoreCredentialMode()
|
||||
DeviceUnlockMode.EXTRACT_CREDENTIAL -> setExtractCredentialMode()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
mDeviceUnlockViewModel.setException(e)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
mDeviceUnlockViewModel.setException(e)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,51 +188,52 @@ class DeviceUnlockFragment: Fragment() {
|
||||
}
|
||||
|
||||
private fun openPrompt(cryptoPrompt: DeviceUnlockCryptoPrompt) {
|
||||
try {
|
||||
val promptTitle = getString(cryptoPrompt.titleId)
|
||||
val promptDescription = cryptoPrompt.descriptionId?.let { descriptionId ->
|
||||
getString(descriptionId)
|
||||
} ?: ""
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
try {
|
||||
val promptTitle = getString(cryptoPrompt.titleId)
|
||||
val promptDescription = cryptoPrompt.descriptionId?.let { descriptionId ->
|
||||
getString(descriptionId)
|
||||
} ?: ""
|
||||
|
||||
if (cryptoPrompt.isBiometricOperation) {
|
||||
mBiometricPrompt?.authenticate(
|
||||
BiometricPrompt.PromptInfo.Builder().apply {
|
||||
setTitle(promptTitle)
|
||||
if (promptDescription.isNotEmpty())
|
||||
setDescription(promptDescription)
|
||||
setConfirmationRequired(false)
|
||||
if (isDeviceCredentialBiometricOperation(context)) {
|
||||
setAllowedAuthenticators(DEVICE_CREDENTIAL)
|
||||
} else {
|
||||
setNegativeButtonText(getString(android.R.string.cancel))
|
||||
}
|
||||
}.build(),
|
||||
BiometricPrompt.CryptoObject(cryptoPrompt.cipher))
|
||||
} else if (cryptoPrompt.isDeviceCredentialOperation) {
|
||||
context?.let { context ->
|
||||
@Suppress("DEPRECATION")
|
||||
mDeviceCredentialResultLauncher?.launch(
|
||||
ContextCompat.getSystemService(
|
||||
context,
|
||||
KeyguardManager::class.java
|
||||
)?.createConfirmDeviceCredentialIntent(
|
||||
promptTitle,
|
||||
promptDescription
|
||||
)
|
||||
if (cryptoPrompt.isBiometricOperation) {
|
||||
mBiometricPrompt?.authenticate(
|
||||
BiometricPrompt.PromptInfo.Builder().apply {
|
||||
setTitle(promptTitle)
|
||||
if (promptDescription.isNotEmpty())
|
||||
setDescription(promptDescription)
|
||||
setConfirmationRequired(false)
|
||||
if (isDeviceCredentialBiometricOperation(context)) {
|
||||
setAllowedAuthenticators(DEVICE_CREDENTIAL)
|
||||
} else {
|
||||
setNegativeButtonText(getString(android.R.string.cancel))
|
||||
}
|
||||
}.build(),
|
||||
BiometricPrompt.CryptoObject(cryptoPrompt.cipher)
|
||||
)
|
||||
} else if (cryptoPrompt.isDeviceCredentialOperation) {
|
||||
context?.let { context ->
|
||||
@Suppress("DEPRECATION")
|
||||
mDeviceCredentialResultLauncher?.launch(
|
||||
ContextCompat.getSystemService(
|
||||
context,
|
||||
KeyguardManager::class.java
|
||||
)?.createConfirmDeviceCredentialIntent(
|
||||
promptTitle,
|
||||
promptDescription
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Unable to open prompt", e)
|
||||
mDeviceUnlockViewModel.setException(e)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Unable to open prompt", e)
|
||||
mDeviceUnlockViewModel.setException(e)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setNotAvailableMode() {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
showViews(false)
|
||||
mDeviceUnlockView?.setDeviceUnlockButtonViewClickListener(null)
|
||||
}
|
||||
showViews(false)
|
||||
mDeviceUnlockView?.setDeviceUnlockButtonViewClickListener(null)
|
||||
}
|
||||
|
||||
private fun openBiometricSetting() {
|
||||
@@ -259,60 +259,48 @@ class DeviceUnlockFragment: Fragment() {
|
||||
}
|
||||
|
||||
private fun setSecurityUpdateRequiredMode() {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
showViews(true)
|
||||
setAdvancedUnlockedTitleView(R.string.biometric_security_update_required)
|
||||
openBiometricSetting()
|
||||
}
|
||||
showViews(true)
|
||||
setDeviceUnlockedTitleView(R.string.biometric_security_update_required)
|
||||
openBiometricSetting()
|
||||
}
|
||||
|
||||
private fun setNotConfiguredMode() {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
showViews(true)
|
||||
setAdvancedUnlockedTitleView(R.string.configure_biometric)
|
||||
openBiometricSetting()
|
||||
}
|
||||
showViews(true)
|
||||
setDeviceUnlockedTitleView(R.string.configure_biometric)
|
||||
openBiometricSetting()
|
||||
}
|
||||
|
||||
private fun setKeyManagerNotAvailableMode() {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
showViews(true)
|
||||
setAdvancedUnlockedTitleView(R.string.keystore_not_accessible)
|
||||
openBiometricSetting()
|
||||
}
|
||||
showViews(true)
|
||||
setDeviceUnlockedTitleView(R.string.keystore_not_accessible)
|
||||
openBiometricSetting()
|
||||
}
|
||||
|
||||
private fun setWaitCredentialMode() {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
showViews(true)
|
||||
setAdvancedUnlockedTitleView(R.string.unavailable)
|
||||
context?.let { context ->
|
||||
mDeviceUnlockView?.setDeviceUnlockButtonViewClickListener {
|
||||
mDeviceUnlockViewModel.setException(SecurityException(
|
||||
context.getString(R.string.credential_before_click_advanced_unlock_button)
|
||||
))
|
||||
}
|
||||
showViews(true)
|
||||
setDeviceUnlockedTitleView(R.string.unavailable)
|
||||
context?.let { context ->
|
||||
mDeviceUnlockView?.setDeviceUnlockButtonViewClickListener {
|
||||
mDeviceUnlockViewModel.setException(SecurityException(
|
||||
context.getString(R.string.credential_before_click_device_unlock_button)
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setStoreCredentialMode() {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
showViews(true)
|
||||
setAdvancedUnlockedTitleView(R.string.unlock_and_link_biometric)
|
||||
mDeviceUnlockView?.setDeviceUnlockButtonViewClickListener { _ ->
|
||||
mDeviceUnlockViewModel.showPrompt()
|
||||
}
|
||||
showViews(true)
|
||||
setDeviceUnlockedTitleView(R.string.unlock_and_link_biometric)
|
||||
mDeviceUnlockView?.setDeviceUnlockButtonViewClickListener { _ ->
|
||||
mDeviceUnlockViewModel.showPrompt()
|
||||
}
|
||||
}
|
||||
|
||||
private fun setExtractCredentialMode() {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
showViews(true)
|
||||
setAdvancedUnlockedTitleView(R.string.unlock)
|
||||
mDeviceUnlockView?.setDeviceUnlockButtonViewClickListener { _ ->
|
||||
mDeviceUnlockViewModel.showPrompt()
|
||||
}
|
||||
showViews(true)
|
||||
setDeviceUnlockedTitleView(R.string.unlock)
|
||||
mDeviceUnlockView?.setDeviceUnlockButtonViewClickListener { _ ->
|
||||
mDeviceUnlockViewModel.showPrompt()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -321,22 +309,18 @@ class DeviceUnlockFragment: Fragment() {
|
||||
}
|
||||
|
||||
private fun showViews(show: Boolean) {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
if (show) {
|
||||
if (mDeviceUnlockView?.visibility != View.VISIBLE)
|
||||
mDeviceUnlockView?.showByFading()
|
||||
}
|
||||
else {
|
||||
if (mDeviceUnlockView?.visibility == View.VISIBLE)
|
||||
mDeviceUnlockView?.hideByFading()
|
||||
}
|
||||
if (show) {
|
||||
if (mDeviceUnlockView?.visibility != View.VISIBLE)
|
||||
mDeviceUnlockView?.showByFading()
|
||||
}
|
||||
else {
|
||||
if (mDeviceUnlockView?.visibility == View.VISIBLE)
|
||||
mDeviceUnlockView?.hideByFading()
|
||||
}
|
||||
}
|
||||
|
||||
private fun setAdvancedUnlockedTitleView(textId: Int) {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
mDeviceUnlockView?.setTitle(textId)
|
||||
}
|
||||
private fun setDeviceUnlockedTitleView(textId: Int) {
|
||||
mDeviceUnlockView?.setTitle(textId)
|
||||
}
|
||||
|
||||
private fun setAuthenticationError(errorCode: Int, errString: CharSequence) {
|
||||
@@ -358,7 +342,7 @@ class DeviceUnlockFragment: Fragment() {
|
||||
private fun setAuthenticationFailed() {
|
||||
Log.e(TAG, "Biometric authentication failed, biometric not recognized")
|
||||
mDeviceUnlockViewModel.setException(
|
||||
SecurityException(getString(R.string.advanced_unlock_not_recognized))
|
||||
SecurityException(getString(R.string.device_unlock_not_recognized))
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -58,15 +58,15 @@ class DeviceUnlockManager(private var appContext: Context) {
|
||||
if (biometricUnlockEnable || deviceCredentialUnlockEnable) {
|
||||
if (isDeviceSecure(appContext)) {
|
||||
try {
|
||||
this.keyStore = KeyStore.getInstance(ADVANCED_UNLOCK_KEYSTORE)
|
||||
this.keyStore = KeyStore.getInstance(DEVICE_UNLOCK_KEYSTORE)
|
||||
this.keyGenerator = KeyGenerator.getInstance(
|
||||
ADVANCED_UNLOCK_KEY_ALGORITHM,
|
||||
ADVANCED_UNLOCK_KEYSTORE
|
||||
DEVICE_UNLOCK_KEY_ALGORITHM,
|
||||
DEVICE_UNLOCK_KEYSTORE
|
||||
)
|
||||
this.cipher = Cipher.getInstance(
|
||||
ADVANCED_UNLOCK_KEY_ALGORITHM + "/"
|
||||
+ ADVANCED_UNLOCK_BLOCKS_MODES + "/"
|
||||
+ ADVANCED_UNLOCK_ENCRYPTION_PADDING
|
||||
DEVICE_UNLOCK_KEY_ALGORITHM + "/"
|
||||
+ DEVICE_UNLOCK_BLOCKS_MODES + "/"
|
||||
+ DEVICE_UNLOCK_ENCRYPTION_PADDING
|
||||
)
|
||||
if (keyStore == null) {
|
||||
throw SecurityException("Unable to initialize the keystore")
|
||||
@@ -93,15 +93,15 @@ class DeviceUnlockManager(private var appContext: Context) {
|
||||
keyStore?.let { keyStore ->
|
||||
keyStore.load(null)
|
||||
try {
|
||||
if (!keyStore.containsAlias(ADVANCED_UNLOCK_KEYSTORE_KEY)) {
|
||||
if (!keyStore.containsAlias(DEVICE_UNLOCK_KEYSTORE_KEY)) {
|
||||
// Set the alias of the entry in Android KeyStore where the key will appear
|
||||
// and the constrains (purposes) in the constructor of the Builder
|
||||
keyGenerator?.init(
|
||||
KeyGenParameterSpec.Builder(
|
||||
ADVANCED_UNLOCK_KEYSTORE_KEY,
|
||||
DEVICE_UNLOCK_KEYSTORE_KEY,
|
||||
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
|
||||
.setBlockModes(ADVANCED_UNLOCK_BLOCKS_MODES)
|
||||
.setEncryptionPaddings(ADVANCED_UNLOCK_ENCRYPTION_PADDING)
|
||||
.setBlockModes(DEVICE_UNLOCK_BLOCKS_MODES)
|
||||
.setEncryptionPaddings(DEVICE_UNLOCK_ENCRYPTION_PADDING)
|
||||
.apply {
|
||||
// Require the user to authenticate with a fingerprint to authorize every use
|
||||
// of the key, don't use it for device credential because it's the user authentication
|
||||
@@ -122,7 +122,7 @@ class DeviceUnlockManager(private var appContext: Context) {
|
||||
Log.e(TAG, "Unable to create a key in keystore", e)
|
||||
throw e
|
||||
}
|
||||
return keyStore.getKey(ADVANCED_UNLOCK_KEYSTORE_KEY, null) as SecretKey?
|
||||
return keyStore.getKey(DEVICE_UNLOCK_KEYSTORE_KEY, null) as SecretKey?
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Unable to retrieve the key in keystore", e)
|
||||
@@ -149,8 +149,8 @@ class DeviceUnlockManager(private var appContext: Context) {
|
||||
DeviceUnlockCryptoPrompt(
|
||||
type = DeviceUnlockCryptoPromptType.CREDENTIAL_ENCRYPTION,
|
||||
cipher = cipher,
|
||||
titleId = R.string.advanced_unlock_prompt_store_credential_title,
|
||||
descriptionId = R.string.advanced_unlock_prompt_store_credential_message,
|
||||
titleId = R.string.device_unlock_prompt_store_credential_title,
|
||||
descriptionId = R.string.device_unlock_prompt_store_credential_message,
|
||||
isDeviceCredentialOperation = isDeviceCredentialOperation(
|
||||
deviceCredentialUnlockEnable
|
||||
),
|
||||
@@ -217,7 +217,7 @@ class DeviceUnlockManager(private var appContext: Context) {
|
||||
DeviceUnlockCryptoPrompt(
|
||||
type = DeviceUnlockCryptoPromptType.CREDENTIAL_DECRYPTION,
|
||||
cipher = cipher,
|
||||
titleId = R.string.advanced_unlock_prompt_extract_credential_title,
|
||||
titleId = R.string.device_unlock_prompt_extract_credential_title,
|
||||
descriptionId = null,
|
||||
isDeviceCredentialOperation = isDeviceCredentialOperation(
|
||||
deviceCredentialUnlockEnable
|
||||
@@ -270,7 +270,7 @@ class DeviceUnlockManager(private var appContext: Context) {
|
||||
@Synchronized fun deleteKeystoreKey() {
|
||||
try {
|
||||
keyStore?.load(null)
|
||||
keyStore?.deleteEntry(ADVANCED_UNLOCK_KEYSTORE_KEY)
|
||||
keyStore?.deleteEntry(DEVICE_UNLOCK_KEYSTORE_KEY)
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Unable to delete entry key in keystore", e)
|
||||
throw e
|
||||
@@ -281,11 +281,11 @@ class DeviceUnlockManager(private var appContext: Context) {
|
||||
|
||||
private val TAG = DeviceUnlockManager::class.java.name
|
||||
|
||||
private const val ADVANCED_UNLOCK_KEYSTORE = "AndroidKeyStore"
|
||||
private const val ADVANCED_UNLOCK_KEYSTORE_KEY = "com.kunzisoft.keepass.biometric.key"
|
||||
private const val ADVANCED_UNLOCK_KEY_ALGORITHM = KeyProperties.KEY_ALGORITHM_AES
|
||||
private const val ADVANCED_UNLOCK_BLOCKS_MODES = KeyProperties.BLOCK_MODE_CBC
|
||||
private const val ADVANCED_UNLOCK_ENCRYPTION_PADDING = KeyProperties.ENCRYPTION_PADDING_PKCS7
|
||||
private const val DEVICE_UNLOCK_KEYSTORE = "AndroidKeyStore"
|
||||
private const val DEVICE_UNLOCK_KEYSTORE_KEY = "com.kunzisoft.keepass.biometric.key"
|
||||
private const val DEVICE_UNLOCK_KEY_ALGORITHM = KeyProperties.KEY_ALGORITHM_AES
|
||||
private const val DEVICE_UNLOCK_BLOCKS_MODES = KeyProperties.BLOCK_MODE_CBC
|
||||
private const val DEVICE_UNLOCK_ENCRYPTION_PADDING = KeyProperties.ENCRYPTION_PADDING_PKCS7
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
fun canAuthenticate(context: Context): Int {
|
||||
@@ -380,11 +380,11 @@ class DeviceUnlockManager(private var appContext: Context) {
|
||||
}
|
||||
}
|
||||
|
||||
fun deviceUnlockError(error: Exception, context: Context): String {
|
||||
fun deviceUnlockError(error: Throwable, context: Context): String {
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||
&& (error is UnrecoverableKeyException
|
||||
|| error is KeyPermanentlyInvalidatedException)) {
|
||||
context.getString(R.string.advanced_unlock_invalid_key)
|
||||
context.getString(R.string.device_unlock_invalid_key)
|
||||
} else
|
||||
error.cause?.localizedMessage
|
||||
?: error.localizedMessage
|
||||
|
||||
@@ -254,6 +254,7 @@ class DatabaseTaskProvider(
|
||||
}
|
||||
|
||||
private fun initServiceConnection() {
|
||||
stopDialog()
|
||||
if (serviceConnection == null) {
|
||||
serviceConnection = object : ServiceConnection {
|
||||
override fun onBindingDied(name: ComponentName?) {
|
||||
|
||||
@@ -59,9 +59,9 @@ object SearchHelper {
|
||||
&& !searchInfo.containsOnlyNullValues()) {
|
||||
// If search provide results
|
||||
database.createVirtualGroupFromSearchInfo(
|
||||
searchInfo.toString(),
|
||||
searchInfo.isASearchByDomain(),
|
||||
MAX_SEARCH_ENTRY
|
||||
searchInfoString = searchInfo.toString(),
|
||||
searchInfoByDomain = searchInfo.isASearchByDomain(),
|
||||
max = MAX_SEARCH_ENTRY
|
||||
)?.let { searchGroup ->
|
||||
if (searchGroup.numberOfChildEntries > 0) {
|
||||
searchWithoutUI = true
|
||||
|
||||
@@ -89,8 +89,8 @@ class PasswordActivityEducation(activity: Activity)
|
||||
onOuterViewClick: ((TapTargetView?) -> Unit)? = null): Boolean {
|
||||
return checkAndPerformedEducation(isEducationBiometricPerformed(activity),
|
||||
TapTarget.forView(educationView,
|
||||
activity.getString(R.string.education_advanced_unlock_title),
|
||||
activity.getString(R.string.education_advanced_unlock_summary))
|
||||
activity.getString(R.string.education_device_unlock_title),
|
||||
activity.getString(R.string.education_device_unlock_summary))
|
||||
.outerCircleColorInt(getCircleColor())
|
||||
.outerCircleAlpha(getCircleAlpha())
|
||||
.icon(ContextCompat.getDrawable(activity, R.drawable.ic_fingerprint_24dp))
|
||||
|
||||
@@ -15,13 +15,13 @@ import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
|
||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
||||
|
||||
class AdvancedUnlockNotificationService : NotificationService() {
|
||||
class DeviceUnlockNotificationService : NotificationService() {
|
||||
|
||||
private lateinit var mTempCipherDao: ArrayList<CipherDatabaseEntity>
|
||||
|
||||
private var mActionTaskBinder = AdvancedUnlockBinder()
|
||||
private var mActionTaskBinder = DeviceUnlockBinder()
|
||||
|
||||
inner class AdvancedUnlockBinder: Binder() {
|
||||
inner class DeviceUnlockBinder: Binder() {
|
||||
fun getCipherDatabase(databaseUri: Uri): CipherDatabaseEntity? {
|
||||
return mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString()}
|
||||
}
|
||||
@@ -48,11 +48,11 @@ class AdvancedUnlockNotificationService : NotificationService() {
|
||||
override val notificationId: Int = 593
|
||||
|
||||
override fun retrieveChannelId(): String {
|
||||
return CHANNEL_ADVANCED_UNLOCK_ID
|
||||
return CHANNEL_DEVICE_UNLOCK_ID
|
||||
}
|
||||
|
||||
override fun retrieveChannelName(): String {
|
||||
return getString(R.string.advanced_unlock)
|
||||
return getString(R.string.device_unlock)
|
||||
}
|
||||
|
||||
override fun onCreate() {
|
||||
@@ -60,7 +60,7 @@ class AdvancedUnlockNotificationService : NotificationService() {
|
||||
mTempCipherDao = ArrayList()
|
||||
}
|
||||
|
||||
// It's simpler to use pendingIntent to perform REMOVE_ADVANCED_UNLOCK_KEY_ACTION
|
||||
// It's simpler to use pendingIntent to perform REMOVE_DEVICE_UNLOCK_KEY_ACTION
|
||||
// because can be directly broadcast to another module or app
|
||||
@SuppressLint("LaunchActivityFromNotification")
|
||||
override fun onBind(intent: Intent): IBinder {
|
||||
@@ -68,7 +68,7 @@ class AdvancedUnlockNotificationService : NotificationService() {
|
||||
|
||||
val pendingDeleteIntent = PendingIntent.getBroadcast(this,
|
||||
4577,
|
||||
Intent(REMOVE_ADVANCED_UNLOCK_KEY_ACTION),
|
||||
Intent(REMOVE_DEVICE_UNLOCK_KEY_ACTION),
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
PendingIntent.FLAG_IMMUTABLE
|
||||
} else {
|
||||
@@ -81,28 +81,28 @@ class AdvancedUnlockNotificationService : NotificationService() {
|
||||
} else {
|
||||
R.drawable.notification_ic_device_unlock_24dp
|
||||
})
|
||||
setContentTitle(getString(R.string.advanced_unlock))
|
||||
setContentText(getString(R.string.advanced_unlock_tap_delete))
|
||||
setContentTitle(getString(R.string.device_unlock))
|
||||
setContentText(getString(R.string.device_unlock_tap_delete))
|
||||
setContentIntent(pendingDeleteIntent)
|
||||
// Unfortunately swipe is disabled in lollipop+
|
||||
setDeleteIntent(pendingDeleteIntent)
|
||||
}
|
||||
|
||||
val notificationTimeoutMilliSecs = PreferencesUtil.getAdvancedUnlockTimeout(this)
|
||||
val notificationTimeoutMilliSecs = PreferencesUtil.getDeviceUnlockTimeout(this)
|
||||
// Not necessarily a foreground service
|
||||
if (mTimerJob == null && notificationTimeoutMilliSecs != TimeoutHelper.NEVER) {
|
||||
defineTimerJob(
|
||||
notificationBuilder,
|
||||
NotificationServiceType.ADVANCED_UNLOCK,
|
||||
NotificationServiceType.DEVICE_UNLOCK,
|
||||
notificationTimeoutMilliSecs
|
||||
) {
|
||||
sendBroadcast(Intent(REMOVE_ADVANCED_UNLOCK_KEY_ACTION))
|
||||
sendBroadcast(Intent(REMOVE_DEVICE_UNLOCK_KEY_ACTION))
|
||||
}
|
||||
} else {
|
||||
startForegroundCompat(
|
||||
notificationId,
|
||||
notificationBuilder,
|
||||
NotificationServiceType.ADVANCED_UNLOCK
|
||||
NotificationServiceType.DEVICE_UNLOCK
|
||||
)
|
||||
}
|
||||
|
||||
@@ -119,11 +119,11 @@ class AdvancedUnlockNotificationService : NotificationService() {
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
class AdvancedUnlockReceiver(var removeKeyAction: () -> Unit): BroadcastReceiver() {
|
||||
class DeviceUnlockReceiver(var removeKeyAction: () -> Unit): BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
intent.action?.let {
|
||||
when (it) {
|
||||
REMOVE_ADVANCED_UNLOCK_KEY_ACTION -> {
|
||||
REMOVE_DEVICE_UNLOCK_KEY_ACTION -> {
|
||||
removeKeyAction.invoke()
|
||||
}
|
||||
}
|
||||
@@ -132,13 +132,13 @@ class AdvancedUnlockNotificationService : NotificationService() {
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val CHANNEL_ADVANCED_UNLOCK_ID = "com.kunzisoft.keepass.notification.channel.unlock"
|
||||
const val REMOVE_ADVANCED_UNLOCK_KEY_ACTION = "com.kunzisoft.keepass.REMOVE_ADVANCED_UNLOCK_KEY"
|
||||
private const val CHANNEL_DEVICE_UNLOCK_ID = "com.kunzisoft.keepass.notification.channel.unlock"
|
||||
const val REMOVE_DEVICE_UNLOCK_KEY_ACTION = "com.kunzisoft.keepass.REMOVE_DEVICE_UNLOCK_KEY"
|
||||
|
||||
// Only one service connection
|
||||
fun bindService(context: Context, serviceConnection: ServiceConnection, flags: Int) {
|
||||
context.bindService(Intent(context,
|
||||
AdvancedUnlockNotificationService::class.java),
|
||||
DeviceUnlockNotificationService::class.java),
|
||||
serviceConnection,
|
||||
flags)
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_NONE
|
||||
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE
|
||||
import android.os.Build
|
||||
import android.os.IBinder
|
||||
import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.widget.Toast
|
||||
import androidx.core.app.NotificationCompat
|
||||
@@ -105,7 +106,7 @@ abstract class NotificationService : Service() {
|
||||
NotificationServiceType.ATTACHMENT -> FOREGROUND_SERVICE_TYPE_DATA_SYNC
|
||||
NotificationServiceType.CLIPBOARD -> foregroundServiceTimer
|
||||
NotificationServiceType.KEYBOARD -> foregroundServiceTimer
|
||||
NotificationServiceType.ADVANCED_UNLOCK -> foregroundServiceTimer
|
||||
NotificationServiceType.DEVICE_UNLOCK -> foregroundServiceTimer
|
||||
}
|
||||
startForeground(notificationId, builder.build(), foregroundType)
|
||||
} else {
|
||||
@@ -156,11 +157,21 @@ abstract class NotificationService : Service() {
|
||||
mReset = true
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
override fun onTimeout(startId: Int, fgsType: Int) {
|
||||
super.onTimeout(startId, fgsType)
|
||||
Log.e(javaClass::class.simpleName, "The service took too long to execute")
|
||||
cancelNotification()
|
||||
stopSelf()
|
||||
}
|
||||
|
||||
protected fun cancelNotification() {
|
||||
mTimerJob?.cancel()
|
||||
mTimerJob = null
|
||||
notificationManager?.cancel(notificationId)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
cancelNotification()
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
|
||||
@@ -5,5 +5,5 @@ enum class NotificationServiceType {
|
||||
ATTACHMENT,
|
||||
CLIPBOARD,
|
||||
KEYBOARD,
|
||||
ADVANCED_UNLOCK
|
||||
DEVICE_UNLOCK
|
||||
}
|
||||
@@ -23,15 +23,15 @@ import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
|
||||
|
||||
class AdvancedUnlockSettingsActivity : SettingsActivity() {
|
||||
class DeviceUnlockSettingsActivity : SettingsActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
mTimeoutEnable = false
|
||||
setTitle(NestedSettingsFragment.Screen.ADVANCED_UNLOCK)
|
||||
setTitle(NestedSettingsFragment.Screen.DEVICE_UNLOCK)
|
||||
}
|
||||
|
||||
override fun retrieveMainFragment(): Fragment {
|
||||
return NestedSettingsFragment.newInstance(NestedSettingsFragment.Screen.ADVANCED_UNLOCK)
|
||||
return NestedSettingsFragment.newInstance(NestedSettingsFragment.Screen.DEVICE_UNLOCK)
|
||||
}
|
||||
}
|
||||
@@ -84,9 +84,9 @@ class MainPreferenceFragment : PreferenceFragmentCompat() {
|
||||
}
|
||||
}
|
||||
|
||||
findPreference<Preference>(getString(R.string.settings_advanced_unlock_key))?.apply {
|
||||
findPreference<Preference>(getString(R.string.settings_device_unlock_key))?.apply {
|
||||
onPreferenceClickListener = Preference.OnPreferenceClickListener {
|
||||
mCallback?.onNestedPreferenceSelected(NestedSettingsFragment.Screen.ADVANCED_UNLOCK)
|
||||
mCallback?.onNestedPreferenceSelected(NestedSettingsFragment.Screen.DEVICE_UNLOCK)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,8 +66,8 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
Screen.FORM_FILLING -> {
|
||||
onCreateFormFillingPreference(rootKey)
|
||||
}
|
||||
Screen.ADVANCED_UNLOCK -> {
|
||||
onCreateAdvancedUnlockPreferences(rootKey)
|
||||
Screen.DEVICE_UNLOCK -> {
|
||||
onCreateDeviceUnlockPreferences(rootKey)
|
||||
}
|
||||
Screen.APPEARANCE -> {
|
||||
onCreateAppearancePreferences(rootKey)
|
||||
@@ -240,15 +240,15 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun onCreateAdvancedUnlockPreferences(rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.preferences_advanced_unlock, rootKey)
|
||||
private fun onCreateDeviceUnlockPreferences(rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.preferences_device_unlock, rootKey)
|
||||
|
||||
activity?.let { activity ->
|
||||
|
||||
val biometricUnlockEnablePreference: TwoStatePreference? = findPreference(getString(R.string.biometric_unlock_enable_key))
|
||||
val deviceCredentialUnlockEnablePreference: TwoStatePreference? = findPreference(getString(R.string.device_credential_unlock_enable_key))
|
||||
val autoOpenPromptPreference: TwoStatePreference? = findPreference(getString(R.string.biometric_auto_open_prompt_key))
|
||||
val tempAdvancedUnlockPreference: TwoStatePreference? = findPreference(getString(R.string.temp_advanced_unlock_enable_key))
|
||||
val tempDeviceUnlockPreference: TwoStatePreference? = findPreference(getString(R.string.temp_device_unlock_enable_key))
|
||||
|
||||
val biometricUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
DeviceUnlockManager.biometricUnlockSupported(activity)
|
||||
@@ -272,7 +272,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
warningMessage(activity, keystoreWarning = false, deleteKeys = true) {
|
||||
biometricUnlockEnablePreference.isChecked = false
|
||||
autoOpenPromptPreference?.isEnabled = deviceCredentialChecked
|
||||
tempAdvancedUnlockPreference?.isEnabled = deviceCredentialChecked
|
||||
tempDeviceUnlockPreference?.isEnabled = deviceCredentialChecked
|
||||
}
|
||||
} else {
|
||||
if (deviceCredentialChecked) {
|
||||
@@ -286,7 +286,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
warningMessage(activity, keystoreWarning = true, deleteKeys = false) {
|
||||
biometricUnlockEnablePreference.isChecked = true
|
||||
autoOpenPromptPreference?.isEnabled = true
|
||||
tempAdvancedUnlockPreference?.isEnabled = true
|
||||
tempDeviceUnlockPreference?.isEnabled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -319,7 +319,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
warningMessage(activity, keystoreWarning = false, deleteKeys = true) {
|
||||
deviceCredentialUnlockEnablePreference.isChecked = false
|
||||
autoOpenPromptPreference?.isEnabled = biometricChecked
|
||||
tempAdvancedUnlockPreference?.isEnabled = biometricChecked
|
||||
tempDeviceUnlockPreference?.isEnabled = biometricChecked
|
||||
}
|
||||
} else {
|
||||
if (biometricChecked) {
|
||||
@@ -333,7 +333,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
warningMessage(activity, keystoreWarning = true, deleteKeys = false) {
|
||||
deviceCredentialUnlockEnablePreference.isChecked = true
|
||||
autoOpenPromptPreference?.isEnabled = true
|
||||
tempAdvancedUnlockPreference?.isEnabled = true
|
||||
tempDeviceUnlockPreference?.isEnabled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -344,13 +344,13 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
|
||||
autoOpenPromptPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true
|
||||
|| deviceCredentialUnlockEnablePreference?.isChecked == true
|
||||
tempAdvancedUnlockPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true
|
||||
tempDeviceUnlockPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true
|
||||
|| deviceCredentialUnlockEnablePreference?.isChecked == true
|
||||
|
||||
tempAdvancedUnlockPreference?.setOnPreferenceClickListener {
|
||||
tempAdvancedUnlockPreference.isChecked = !tempAdvancedUnlockPreference.isChecked
|
||||
tempDeviceUnlockPreference?.setOnPreferenceClickListener {
|
||||
tempDeviceUnlockPreference.isChecked = !tempDeviceUnlockPreference.isChecked
|
||||
warningMessage(activity, keystoreWarning = false, deleteKeys = true) {
|
||||
tempAdvancedUnlockPreference.isChecked = !tempAdvancedUnlockPreference.isChecked
|
||||
tempDeviceUnlockPreference.isChecked = !tempDeviceUnlockPreference.isChecked
|
||||
}
|
||||
true
|
||||
}
|
||||
@@ -366,8 +366,8 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
findPreference<Preference>(getString(R.string.advanced_unlock_explanation_key))?.setOnPreferenceClickListener {
|
||||
context?.openUrl(R.string.advanced_unlock_explanation_url)
|
||||
findPreference<Preference>(getString(R.string.device_unlock_explanation_key))?.setOnPreferenceClickListener {
|
||||
context?.openUrl(R.string.device_unlock_explanation_url)
|
||||
false
|
||||
}
|
||||
}
|
||||
@@ -378,14 +378,14 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
validate: (()->Unit)? = null) {
|
||||
var message = ""
|
||||
if (keystoreWarning) {
|
||||
message += resources.getString(R.string.advanced_unlock_prompt_store_credential_message)
|
||||
message += "\n\n" + resources.getString(R.string.advanced_unlock_keystore_warning)
|
||||
message += resources.getString(R.string.device_unlock_prompt_store_credential_message)
|
||||
message += "\n\n" + resources.getString(R.string.device_unlock_keystore_warning)
|
||||
}
|
||||
if (keystoreWarning && deleteKeys) {
|
||||
message += "\n\n"
|
||||
}
|
||||
if (deleteKeys) {
|
||||
message += resources.getString(R.string.advanced_unlock_delete_all_key_warning)
|
||||
message += resources.getString(R.string.device_unlock_delete_all_key_warning)
|
||||
}
|
||||
warningAlertDialog = AlertDialog.Builder(activity)
|
||||
.setMessage(message)
|
||||
@@ -509,7 +509,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
when (preference.key) {
|
||||
getString(R.string.app_timeout_key),
|
||||
getString(R.string.clipboard_timeout_key),
|
||||
getString(R.string.temp_advanced_unlock_timeout_key) -> {
|
||||
getString(R.string.temp_device_unlock_timeout_key) -> {
|
||||
dialogFragment = DurationDialogFragmentCompat.newInstance(preference.key)
|
||||
}
|
||||
else -> otherDialogFragment = true
|
||||
|
||||
@@ -30,7 +30,7 @@ import com.kunzisoft.keepass.activities.dialogs.UnderDevelopmentFeatureDialogFra
|
||||
abstract class NestedSettingsFragment : PreferenceFragmentCompat() {
|
||||
|
||||
enum class Screen {
|
||||
APPLICATION, FORM_FILLING, ADVANCED_UNLOCK, APPEARANCE, DATABASE, DATABASE_SECURITY, DATABASE_MASTER_KEY
|
||||
APPLICATION, FORM_FILLING, DEVICE_UNLOCK, APPEARANCE, DATABASE, DATABASE_SECURITY, DATABASE_MASTER_KEY
|
||||
}
|
||||
|
||||
fun getScreen(): Screen {
|
||||
@@ -66,7 +66,7 @@ abstract class NestedSettingsFragment : PreferenceFragmentCompat() {
|
||||
val fragment: NestedSettingsFragment = when (key) {
|
||||
Screen.APPLICATION,
|
||||
Screen.FORM_FILLING,
|
||||
Screen.ADVANCED_UNLOCK,
|
||||
Screen.DEVICE_UNLOCK,
|
||||
Screen.APPEARANCE -> NestedAppSettingsFragment()
|
||||
Screen.DATABASE,
|
||||
Screen.DATABASE_SECURITY,
|
||||
@@ -83,7 +83,7 @@ abstract class NestedSettingsFragment : PreferenceFragmentCompat() {
|
||||
return when (key) {
|
||||
Screen.APPLICATION -> resources.getString(R.string.menu_app_settings)
|
||||
Screen.FORM_FILLING -> resources.getString(R.string.menu_form_filling_settings)
|
||||
Screen.ADVANCED_UNLOCK -> resources.getString(R.string.menu_advanced_unlock_settings)
|
||||
Screen.DEVICE_UNLOCK -> resources.getString(R.string.menu_device_unlock_settings)
|
||||
Screen.APPEARANCE -> resources.getString(R.string.menu_appearance_settings)
|
||||
Screen.DATABASE -> resources.getString(R.string.menu_database_settings)
|
||||
Screen.DATABASE_SECURITY -> resources.getString(R.string.menu_security_settings)
|
||||
|
||||
@@ -460,10 +460,10 @@ object PreferencesUtil {
|
||||
?: TimeoutHelper.DEFAULT_TIMEOUT
|
||||
}
|
||||
|
||||
fun getAdvancedUnlockTimeout(context: Context): Long {
|
||||
fun getDeviceUnlockTimeout(context: Context): Long {
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
return prefs.getString(context.getString(R.string.temp_advanced_unlock_timeout_key),
|
||||
context.getString(R.string.temp_advanced_unlock_timeout_default))?.toLong()
|
||||
return prefs.getString(context.getString(R.string.temp_device_unlock_timeout_key),
|
||||
context.getString(R.string.temp_device_unlock_timeout_default))?.toLong()
|
||||
?: TimeoutHelper.DEFAULT_TIMEOUT
|
||||
}
|
||||
|
||||
@@ -503,7 +503,7 @@ object PreferencesUtil {
|
||||
context.resources.getBoolean(R.bool.enable_screenshot_mode_key_default))
|
||||
}
|
||||
|
||||
fun isAdvancedUnlockEnable(context: Context): Boolean {
|
||||
fun isDeviceUnlockEnable(context: Context): Boolean {
|
||||
return isBiometricUnlockEnable(context) || isDeviceCredentialUnlockEnable(context)
|
||||
}
|
||||
|
||||
@@ -526,13 +526,13 @@ object PreferencesUtil {
|
||||
&& !isBiometricUnlockEnable(context)
|
||||
}
|
||||
|
||||
fun isTempAdvancedUnlockEnable(context: Context): Boolean {
|
||||
fun isTempDeviceUnlockEnable(context: Context): Boolean {
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
return prefs.getBoolean(context.getString(R.string.temp_advanced_unlock_enable_key),
|
||||
context.resources.getBoolean(R.bool.temp_advanced_unlock_enable_default))
|
||||
return prefs.getBoolean(context.getString(R.string.temp_device_unlock_enable_key),
|
||||
context.resources.getBoolean(R.bool.temp_device_unlock_enable_default))
|
||||
}
|
||||
|
||||
fun isAdvancedUnlockPromptAutoOpenEnable(context: Context): Boolean {
|
||||
fun isDeviceUnlockPromptAutoOpenEnable(context: Context): Boolean {
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
return prefs.getBoolean(context.getString(R.string.biometric_auto_open_prompt_key),
|
||||
context.resources.getBoolean(R.bool.biometric_auto_open_prompt_default))
|
||||
@@ -618,12 +618,6 @@ object PreferencesUtil {
|
||||
context.resources.getBoolean(R.bool.allow_no_password_default))
|
||||
}
|
||||
|
||||
fun enableReadOnlyDatabase(context: Context): Boolean {
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
return prefs.getBoolean(context.getString(R.string.enable_read_only_key),
|
||||
context.resources.getBoolean(R.bool.enable_read_only_default))
|
||||
}
|
||||
|
||||
fun deletePasswordAfterConnexionAttempt(context: Context): Boolean {
|
||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
return prefs.getBoolean(context.getString(R.string.delete_entered_password_key),
|
||||
@@ -804,7 +798,6 @@ object PreferencesUtil {
|
||||
when (name) {
|
||||
context.getString(R.string.allow_no_password_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.delete_entered_password_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.enable_read_only_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.enable_auto_save_database_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.enable_keep_screen_on_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.auto_focus_search_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
@@ -821,8 +814,8 @@ object PreferencesUtil {
|
||||
context.getString(R.string.biometric_unlock_enable_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.device_credential_unlock_enable_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.biometric_auto_open_prompt_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.temp_advanced_unlock_enable_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.temp_advanced_unlock_timeout_key) -> editor.putString(name, value.toLong().toString())
|
||||
context.getString(R.string.temp_device_unlock_enable_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.temp_device_unlock_timeout_key) -> editor.putString(name, value.toLong().toString())
|
||||
|
||||
context.getString(R.string.magic_keyboard_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
context.getString(R.string.clipboard_notifications_key) -> editor.putBoolean(name, value.toBoolean())
|
||||
|
||||
@@ -70,8 +70,12 @@ open class SettingsActivity
|
||||
// To apply navigation bar with background color
|
||||
/* TODO Settings nav bar
|
||||
setTransparentNavigationBar {
|
||||
coordinatorLayout?.applyWindowInsets(WindowInsetPosition.TOP)
|
||||
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM)
|
||||
coordinatorLayout?.applyWindowInsets(EnumSet.of(
|
||||
WindowInsetPosition.TOP_MARGINS,
|
||||
WindowInsetPosition.BOTTOM_MARGINS,
|
||||
WindowInsetPosition.START_MARGINS,
|
||||
WindowInsetPosition.END_MARGINS,
|
||||
))
|
||||
}*/
|
||||
|
||||
mExternalFileHelper = ExternalFileHelper(this)
|
||||
|
||||
@@ -65,27 +65,19 @@ object TimeoutHelper {
|
||||
(context.applicationContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager?)?.let { alarmManager ->
|
||||
val triggerTime = System.currentTimeMillis() + timeout
|
||||
Log.d(TAG, "TimeoutHelper start")
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
|
||||
&& !alarmManager.canScheduleExactAlarms()) {
|
||||
alarmManager.set(
|
||||
AlarmManager.RTC,
|
||||
triggerTime,
|
||||
getLockPendingIntent(context)
|
||||
)
|
||||
} else {
|
||||
alarmManager.setExact(
|
||||
AlarmManager.RTC,
|
||||
triggerTime,
|
||||
getLockPendingIntent(context)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
|
||||
&& !alarmManager.canScheduleExactAlarms()) {
|
||||
alarmManager.set(
|
||||
AlarmManager.RTC,
|
||||
triggerTime,
|
||||
getLockPendingIntent(context)
|
||||
)
|
||||
} else {
|
||||
alarmManager.setExact(
|
||||
AlarmManager.RTC,
|
||||
triggerTime,
|
||||
getLockPendingIntent(context)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,27 +77,19 @@ class LockReceiver(private var lockAction: () -> Unit) : BroadcastReceiver() {
|
||||
// Launch the effective action after a small time
|
||||
val first: Long = System.currentTimeMillis() + context.getString(R.string.timeout_screen_off).toLong()
|
||||
(context.getSystemService(ALARM_SERVICE) as AlarmManager?)?.let { alarmManager ->
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
|
||||
&& !alarmManager.canScheduleExactAlarms()) {
|
||||
alarmManager.set(
|
||||
AlarmManager.RTC_WAKEUP,
|
||||
first,
|
||||
lockPendingIntent
|
||||
)
|
||||
} else {
|
||||
alarmManager.setExact(
|
||||
AlarmManager.RTC_WAKEUP,
|
||||
first,
|
||||
lockPendingIntent
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
|
||||
&& !alarmManager.canScheduleExactAlarms()) {
|
||||
alarmManager.set(
|
||||
AlarmManager.RTC_WAKEUP,
|
||||
first,
|
||||
lockPendingIntent
|
||||
)
|
||||
} else {
|
||||
alarmManager.setExact(
|
||||
AlarmManager.RTC_WAKEUP,
|
||||
first,
|
||||
lockPendingIntent
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -67,55 +67,53 @@ object UriUtil {
|
||||
readOnly: Boolean) {
|
||||
try {
|
||||
// try to persist read and write permissions
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
contentResolver?.apply {
|
||||
var readPermissionAllowed = false
|
||||
var writePermissionAllowed = false
|
||||
// Check current permissions allowed
|
||||
persistedUriPermissions.find { uriPermission ->
|
||||
uriPermission.uri == uri
|
||||
}?.let { uriPermission ->
|
||||
Log.d(TAG, "Check URI permission : $uriPermission")
|
||||
if (uriPermission.isReadPermission) {
|
||||
readPermissionAllowed = true
|
||||
}
|
||||
if (uriPermission.isWritePermission) {
|
||||
writePermissionAllowed = true
|
||||
}
|
||||
contentResolver?.apply {
|
||||
var readPermissionAllowed = false
|
||||
var writePermissionAllowed = false
|
||||
// Check current permissions allowed
|
||||
persistedUriPermissions.find { uriPermission ->
|
||||
uriPermission.uri == uri
|
||||
}?.let { uriPermission ->
|
||||
Log.d(TAG, "Check URI permission : $uriPermission")
|
||||
if (uriPermission.isReadPermission) {
|
||||
readPermissionAllowed = true
|
||||
}
|
||||
|
||||
// Release permission
|
||||
if (release) {
|
||||
if (writePermissionAllowed) {
|
||||
Log.d(TAG, "Release write permission : $uri")
|
||||
val removeFlags: Int = Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
releasePersistableUriPermission(uri, removeFlags)
|
||||
}
|
||||
if (readPermissionAllowed) {
|
||||
Log.d(TAG, "Release read permission $uri")
|
||||
val takeFlags: Int = Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
releasePersistableUriPermission(uri, takeFlags)
|
||||
}
|
||||
if (uriPermission.isWritePermission) {
|
||||
writePermissionAllowed = true
|
||||
}
|
||||
}
|
||||
|
||||
// Take missing permission
|
||||
if (!readPermissionAllowed) {
|
||||
Log.d(TAG, "Take read permission $uri")
|
||||
// Release permission
|
||||
if (release) {
|
||||
if (writePermissionAllowed) {
|
||||
Log.d(TAG, "Release write permission : $uri")
|
||||
val removeFlags: Int = Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
releasePersistableUriPermission(uri, removeFlags)
|
||||
}
|
||||
if (readPermissionAllowed) {
|
||||
Log.d(TAG, "Release read permission $uri")
|
||||
val takeFlags: Int = Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
takePersistableUriPermission(uri, takeFlags)
|
||||
releasePersistableUriPermission(uri, takeFlags)
|
||||
}
|
||||
if (readOnly) {
|
||||
if (writePermissionAllowed) {
|
||||
Log.d(TAG, "Release write permission $uri")
|
||||
val removeFlags: Int = Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
releasePersistableUriPermission(uri, removeFlags)
|
||||
}
|
||||
} else {
|
||||
if (!writePermissionAllowed) {
|
||||
Log.d(TAG, "Take write permission $uri")
|
||||
val takeFlags: Int = Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
takePersistableUriPermission(uri, takeFlags)
|
||||
}
|
||||
}
|
||||
|
||||
// Take missing permission
|
||||
if (!readPermissionAllowed) {
|
||||
Log.d(TAG, "Take read permission $uri")
|
||||
val takeFlags: Int = Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
takePersistableUriPermission(uri, takeFlags)
|
||||
}
|
||||
if (readOnly) {
|
||||
if (writePermissionAllowed) {
|
||||
Log.d(TAG, "Release write permission $uri")
|
||||
val removeFlags: Int = Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
releasePersistableUriPermission(uri, removeFlags)
|
||||
}
|
||||
} else {
|
||||
if (!writePermissionAllowed) {
|
||||
Log.d(TAG, "Take write permission $uri")
|
||||
val takeFlags: Int = Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
takePersistableUriPermission(uri, takeFlags)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,42 +138,38 @@ object UriUtil {
|
||||
}
|
||||
|
||||
fun Context.releaseAllUnnecessaryPermissionUris() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
applicationContext?.let { appContext ->
|
||||
val fileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(appContext)
|
||||
fileDatabaseHistoryAction.getDatabaseFileList { databaseFileList ->
|
||||
val listToNotRemove = mutableListOf<Uri>()
|
||||
databaseFileList.forEach {
|
||||
it.databaseUri?.let { databaseUri ->
|
||||
listToNotRemove.add(databaseUri)
|
||||
}
|
||||
it.keyFileUri?.let { keyFileUri ->
|
||||
listToNotRemove.add(keyFileUri)
|
||||
}
|
||||
applicationContext?.let { appContext ->
|
||||
val fileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(appContext)
|
||||
fileDatabaseHistoryAction.getDatabaseFileList { databaseFileList ->
|
||||
val listToNotRemove = mutableListOf<Uri>()
|
||||
databaseFileList.forEach {
|
||||
it.databaseUri?.let { databaseUri ->
|
||||
listToNotRemove.add(databaseUri)
|
||||
}
|
||||
// Remove URI permission for not database files
|
||||
val resolver = appContext.contentResolver
|
||||
resolver.persistedUriPermissions.forEach { uriPermission ->
|
||||
val uri = uriPermission.uri
|
||||
if (!listToNotRemove.contains(uri))
|
||||
resolver.releaseUriPermission(uri)
|
||||
it.keyFileUri?.let { keyFileUri ->
|
||||
listToNotRemove.add(keyFileUri)
|
||||
}
|
||||
}
|
||||
// Remove URI permission for not database files
|
||||
val resolver = appContext.contentResolver
|
||||
resolver.persistedUriPermissions.forEach { uriPermission ->
|
||||
val uri = uriPermission.uri
|
||||
if (!listToNotRemove.contains(uri))
|
||||
resolver.releaseUriPermission(uri)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Intent.getUri(key: String): Uri? {
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
val clipData = this.clipData
|
||||
if (clipData != null) {
|
||||
if (clipData.description.label == key) {
|
||||
if (clipData.itemCount == 1) {
|
||||
val clipItem = clipData.getItemAt(0)
|
||||
if (clipItem != null) {
|
||||
return clipItem.uri
|
||||
}
|
||||
val clipData = this.clipData
|
||||
if (clipData != null) {
|
||||
if (clipData.description.label == key) {
|
||||
if (clipData.itemCount == 1) {
|
||||
val clipItem = clipData.getItemAt(0)
|
||||
if (clipItem != null) {
|
||||
return clipItem.uri
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class DeviceUnlockView @JvmOverloads constructor(context: Context,
|
||||
|
||||
init {
|
||||
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater?
|
||||
inflater?.inflate(R.layout.view_advanced_unlock, this)
|
||||
inflater?.inflate(R.layout.view_device_unlock, this)
|
||||
|
||||
biometricButtonView = findViewById(R.id.biometric_button)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
package com.kunzisoft.keepass.view
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import android.text.Spannable
|
||||
import android.util.AttributeSet
|
||||
import android.util.TypedValue
|
||||
@@ -104,18 +103,14 @@ class PasswordTextEditFieldView @JvmOverloads constructor(context: Context,
|
||||
id = passwordProgressViewId
|
||||
layoutParams = (layoutParams as LayoutParams?)?.also {
|
||||
it.addRule(LEFT_OF, actionImageButtonId)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(START_OF, actionImageButtonId)
|
||||
}
|
||||
it.addRule(START_OF, actionImageButtonId)
|
||||
}
|
||||
}
|
||||
mPasswordEntropyView.apply {
|
||||
id = passwordEntropyViewId
|
||||
layoutParams = (layoutParams as LayoutParams?)?.also {
|
||||
it.addRule(ALIGN_RIGHT, passwordProgressViewId)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(ALIGN_END, passwordProgressViewId)
|
||||
}
|
||||
it.addRule(ALIGN_END, passwordProgressViewId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,13 +123,11 @@ class TemplateEditView @JvmOverloads constructor(context: Context,
|
||||
setMaxChars(templateAttribute.options.getNumberChars())
|
||||
setMaxLines(templateAttribute.options.getNumberLines())
|
||||
setActionClick(templateAttribute, field, this)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
if (field.protectedValue.isProtected) {
|
||||
textDirection = TEXT_DIRECTION_LTR
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_NO
|
||||
}
|
||||
if (field.protectedValue.isProtected) {
|
||||
textDirection = TEXT_DIRECTION_LTR
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_NO
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,9 +63,7 @@ class TemplateView @JvmOverloads constructor(context: Context,
|
||||
// Here the value is often empty
|
||||
|
||||
if (field.protectedValue.isProtected) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
textDirection = TEXT_DIRECTION_LTR
|
||||
}
|
||||
textDirection = TEXT_DIRECTION_LTR
|
||||
if (mFirstTimeAskAllowCopyProtectedFields) {
|
||||
setCopyButtonState(TextFieldView.ButtonState.DEACTIVATE)
|
||||
setCopyButtonClickListener { _, _ ->
|
||||
@@ -179,9 +177,7 @@ class TemplateView @JvmOverloads constructor(context: Context,
|
||||
otpElement.type.name,
|
||||
ProtectedString(false, otpElement.token)))
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
textDirection = TEXT_DIRECTION_LTR
|
||||
}
|
||||
textDirection = TEXT_DIRECTION_LTR
|
||||
mLastOtpTokenView = this
|
||||
mOtpRunnable = Runnable {
|
||||
if (otpElement.shouldRefreshToken()) {
|
||||
|
||||
@@ -51,9 +51,7 @@ open class TextEditFieldView @JvmOverloads constructor(context: Context,
|
||||
imeOptions = EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING
|
||||
importantForAutofill = IMPORTANT_FOR_AUTOFILL_NO
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
|
||||
}
|
||||
importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
|
||||
maxLines = 1
|
||||
}
|
||||
private var actionImageButton = AppCompatImageButton(
|
||||
@@ -70,11 +68,9 @@ open class TextEditFieldView @JvmOverloads constructor(context: Context,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
it.addRule(ALIGN_PARENT_RIGHT)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(ALIGN_PARENT_END)
|
||||
}
|
||||
it.addRule(ALIGN_PARENT_END)
|
||||
}
|
||||
visibility = View.GONE
|
||||
visibility = GONE
|
||||
contentDescription = context.getString(R.string.menu_edit)
|
||||
}
|
||||
|
||||
@@ -91,9 +87,7 @@ open class TextEditFieldView @JvmOverloads constructor(context: Context,
|
||||
id = labelViewId
|
||||
layoutParams = (layoutParams as LayoutParams?)?.also {
|
||||
it.addRule(LEFT_OF, actionImageButtonId)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(START_OF, actionImageButtonId)
|
||||
}
|
||||
it.addRule(START_OF, actionImageButtonId)
|
||||
}
|
||||
}
|
||||
valueView.apply {
|
||||
@@ -192,7 +186,7 @@ open class TextEditFieldView @JvmOverloads constructor(context: Context,
|
||||
actionImageButton.setImageDrawable(ContextCompat.getDrawable(context, it))
|
||||
}
|
||||
actionImageButton.setOnClickListener(onActionClickListener)
|
||||
actionImageButton.visibility = if (onActionClickListener == null) View.GONE else View.VISIBLE
|
||||
actionImageButton.visibility = if (onActionClickListener == null) GONE else VISIBLE
|
||||
}
|
||||
|
||||
override var isFieldVisible: Boolean
|
||||
|
||||
@@ -63,13 +63,12 @@ open class TextFieldView @JvmOverloads constructor(context: Context,
|
||||
4f,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.marginStart = TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP,
|
||||
4f,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
}
|
||||
it.marginStart = TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP,
|
||||
4f,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
|
||||
}
|
||||
}
|
||||
protected val valueView = AppCompatTextView(context).apply {
|
||||
@@ -88,13 +87,11 @@ open class TextFieldView @JvmOverloads constructor(context: Context,
|
||||
8f,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.marginStart = TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP,
|
||||
8f,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
}
|
||||
it.marginStart = TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP,
|
||||
8f,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
}
|
||||
setTextIsSelectable(true)
|
||||
}
|
||||
@@ -128,9 +125,7 @@ open class TextFieldView @JvmOverloads constructor(context: Context,
|
||||
id = copyButtonId
|
||||
layoutParams = (layoutParams as LayoutParams?)?.also {
|
||||
it.addRule(ALIGN_PARENT_RIGHT)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(ALIGN_PARENT_END)
|
||||
}
|
||||
it.addRule(ALIGN_PARENT_END)
|
||||
}
|
||||
}
|
||||
showButton.apply {
|
||||
@@ -138,14 +133,14 @@ open class TextFieldView @JvmOverloads constructor(context: Context,
|
||||
layoutParams = (layoutParams as LayoutParams?)?.also {
|
||||
if (copyButton.isVisible) {
|
||||
it.addRule(LEFT_OF, copyButtonId)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(START_OF, copyButtonId)
|
||||
}
|
||||
|
||||
it.addRule(START_OF, copyButtonId)
|
||||
|
||||
} else {
|
||||
it.addRule(ALIGN_PARENT_RIGHT)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(ALIGN_PARENT_END)
|
||||
}
|
||||
|
||||
it.addRule(ALIGN_PARENT_END)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -153,18 +148,14 @@ open class TextFieldView @JvmOverloads constructor(context: Context,
|
||||
id = labelViewId
|
||||
layoutParams = (layoutParams as LayoutParams?)?.also {
|
||||
it.addRule(LEFT_OF, showButtonId)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(START_OF, showButtonId)
|
||||
}
|
||||
it.addRule(START_OF, showButtonId)
|
||||
}
|
||||
}
|
||||
valueView.apply {
|
||||
id = valueViewId
|
||||
layoutParams = (layoutParams as LayoutParams?)?.also {
|
||||
it.addRule(LEFT_OF, showButtonId)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(START_OF, showButtonId)
|
||||
}
|
||||
it.addRule(START_OF, showButtonId)
|
||||
it.addRule(BELOW, labelViewId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,12 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.*
|
||||
import android.widget.AdapterView
|
||||
import android.widget.BaseAdapter
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.RelativeLayout
|
||||
import android.widget.Spinner
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.appcompat.widget.AppCompatImageButton
|
||||
import androidx.core.content.ContextCompat
|
||||
@@ -51,9 +56,7 @@ class TextSelectFieldView @JvmOverloads constructor(context: Context,
|
||||
imeOptions = EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING
|
||||
importantForAutofill = IMPORTANT_FOR_AUTOFILL_NO
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
|
||||
}
|
||||
importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
|
||||
val drawable = ContextCompat.getDrawable(context, R.drawable.ic_arrow_down_white_24dp)
|
||||
?.apply {
|
||||
mutate().colorFilter = BlendModeColorFilterCompat
|
||||
@@ -65,14 +68,12 @@ class TextSelectFieldView @JvmOverloads constructor(context: Context,
|
||||
drawable,
|
||||
null
|
||||
)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
setCompoundDrawablesRelativeWithIntrinsicBounds(
|
||||
null,
|
||||
null,
|
||||
drawable,
|
||||
null
|
||||
)
|
||||
}
|
||||
setCompoundDrawablesRelativeWithIntrinsicBounds(
|
||||
null,
|
||||
null,
|
||||
drawable,
|
||||
null
|
||||
)
|
||||
isFocusable = false
|
||||
inputType = InputType.TYPE_NULL
|
||||
maxLines = 1
|
||||
@@ -94,9 +95,7 @@ class TextSelectFieldView @JvmOverloads constructor(context: Context,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
it.addRule(ALIGN_PARENT_RIGHT)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it.addRule(ALIGN_PARENT_END)
|
||||
}
|
||||
it.addRule(ALIGN_PARENT_END)
|
||||
}
|
||||
visibility = View.GONE
|
||||
contentDescription = context.getString(R.string.menu_edit)
|
||||
@@ -132,18 +131,14 @@ class TextSelectFieldView @JvmOverloads constructor(context: Context,
|
||||
id = labelViewId
|
||||
layoutParams = (layoutParams as LayoutParams?).also {
|
||||
it?.addRule(LEFT_OF, actionImageButtonId)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it?.addRule(START_OF, actionImageButtonId)
|
||||
}
|
||||
it?.addRule(START_OF, actionImageButtonId)
|
||||
}
|
||||
}
|
||||
valueSpinnerView.apply {
|
||||
id = valueViewId
|
||||
layoutParams = (layoutParams as LayoutParams?).also {
|
||||
it?.addRule(LEFT_OF, actionImageButtonId)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
it?.addRule(START_OF, actionImageButtonId)
|
||||
}
|
||||
it?.addRule(START_OF, actionImageButtonId)
|
||||
it?.addRule(BELOW, labelViewId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ import android.animation.AnimatorSet
|
||||
import android.animation.ValueAnimator
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.graphics.PorterDuff
|
||||
@@ -58,7 +57,6 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.forEach
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.core.view.updatePaddingRelative
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
@@ -66,6 +64,7 @@ import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.helper.getLocalizedMessage
|
||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||
import java.util.EnumSet
|
||||
|
||||
|
||||
/**
|
||||
@@ -234,11 +233,7 @@ fun View.updateLockPaddingStart() {
|
||||
R.dimen.hidden_lock_button_size
|
||||
}
|
||||
).let { lockPadding ->
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
updatePaddingRelative(lockPadding)
|
||||
} else {
|
||||
updatePadding(lockPadding)
|
||||
}
|
||||
updatePaddingRelative(lockPadding)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -308,10 +303,9 @@ fun CollapsingToolbarLayout.changeTitleColor(color: Int) {
|
||||
invalidate()
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
fun Activity.setTransparentNavigationBar(applyToStatusBar: Boolean = false, applyWindowInsets: () -> Unit) {
|
||||
// Only in portrait
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1
|
||||
&& resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
window.navigationBarColor = ContextCompat.getColor(this, R.color.surface_selector)
|
||||
if (applyToStatusBar) {
|
||||
@@ -327,7 +321,7 @@ fun Activity.setTransparentNavigationBar(applyToStatusBar: Boolean = false, appl
|
||||
/**
|
||||
* Apply a margin to a view to fix the window inset
|
||||
*/
|
||||
fun View.applyWindowInsets(position: WindowInsetPosition = WindowInsetPosition.BOTTOM) {
|
||||
fun View.applyWindowInsets(positions: EnumSet<WindowInsetPosition>) {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets ->
|
||||
var consumed = false
|
||||
|
||||
@@ -343,52 +337,78 @@ fun View.applyWindowInsets(position: WindowInsetPosition = WindowInsetPosition.B
|
||||
}
|
||||
}
|
||||
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
when (position) {
|
||||
WindowInsetPosition.TOP -> {
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
topMargin = insets.top
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()
|
||||
or WindowInsetsCompat.Type.displayCutout()
|
||||
or WindowInsetsCompat.Type.ime())
|
||||
|
||||
val isRtl = layoutDirection == View.LAYOUT_DIRECTION_RTL
|
||||
|
||||
val wantTopMargins = positions.contains(WindowInsetPosition.TOP_MARGINS)
|
||||
val wantBottomMargins = positions.contains(WindowInsetPosition.BOTTOM_MARGINS)
|
||||
val wantStartMargins = positions.contains(WindowInsetPosition.START_MARGINS)
|
||||
val wantEndMargins = positions.contains(WindowInsetPosition.END_MARGINS)
|
||||
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams
|
||||
&& (wantTopMargins || wantBottomMargins || wantStartMargins || wantEndMargins)) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
if (wantTopMargins) {
|
||||
topMargin = insets.top
|
||||
}
|
||||
if (wantBottomMargins) {
|
||||
bottomMargin = insets.bottom
|
||||
}
|
||||
if (wantStartMargins) {
|
||||
if (isRtl) {
|
||||
rightMargin = insets.right
|
||||
} else {
|
||||
leftMargin = insets.left
|
||||
}
|
||||
}
|
||||
}
|
||||
WindowInsetPosition.LEGIT_TOP -> {
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
topMargin = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
WindowInsetPosition.BOTTOM -> {
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
bottomMargin = insets.bottom
|
||||
}
|
||||
}
|
||||
}
|
||||
WindowInsetPosition.BOTTOM_IME -> {
|
||||
val imeHeight = windowInsets.getInsets(WindowInsetsCompat.Type.ime()).bottom
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
bottomMargin = if (imeHeight > 1) 0 else insets.bottom
|
||||
}
|
||||
}
|
||||
}
|
||||
WindowInsetPosition.TOP_BOTTOM_IME -> {
|
||||
val imeHeight = windowInsets.getInsets(WindowInsetsCompat.Type.ime()).bottom
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
topMargin = insets.top
|
||||
bottomMargin = if (imeHeight > 1) imeHeight else 0
|
||||
if (wantEndMargins) {
|
||||
if (isRtl) {
|
||||
leftMargin = insets.left
|
||||
} else {
|
||||
rightMargin = insets.right
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val wantTopPadding = positions.contains(WindowInsetPosition.TOP_PADDING)
|
||||
val wantBottomPadding = positions.contains(WindowInsetPosition.BOTTOM_PADDING)
|
||||
val wantStartPadding = positions.contains(WindowInsetPosition.START_PADDING)
|
||||
val wantEndPadding = positions.contains(WindowInsetPosition.END_PADDING)
|
||||
|
||||
if (wantTopPadding || wantBottomPadding || wantStartPadding || wantEndPadding) {
|
||||
val topPadding = if (wantTopPadding) insets.top else 0
|
||||
val bottomPadding = if (wantBottomPadding) insets.bottom else 0
|
||||
var leftPadding = 0
|
||||
var rightPadding = 0
|
||||
|
||||
if (wantStartPadding) {
|
||||
if (isRtl) {
|
||||
rightPadding = insets.right
|
||||
} else {
|
||||
leftPadding = insets.left
|
||||
}
|
||||
}
|
||||
if (wantEndPadding) {
|
||||
if (isRtl) {
|
||||
leftPadding = insets.left
|
||||
} else {
|
||||
rightPadding = insets.right
|
||||
}
|
||||
}
|
||||
|
||||
setPadding(leftPadding, topPadding, rightPadding, bottomPadding)
|
||||
}
|
||||
|
||||
// If any of the children consumed the insets, return an appropriate value
|
||||
if (consumed) WindowInsetsCompat.CONSUMED else windowInsets
|
||||
}
|
||||
}
|
||||
|
||||
enum class WindowInsetPosition {
|
||||
TOP, BOTTOM, LEGIT_TOP, BOTTOM_IME, TOP_BOTTOM_IME
|
||||
TOP_MARGINS, BOTTOM_MARGINS, START_MARGINS, END_MARGINS,
|
||||
TOP_PADDING, BOTTOM_PADDING, START_PADDING, END_PADDING,
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.kunzisoft.keepass.viewmodels
|
||||
import android.app.Application
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.util.Log
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.biometric.BiometricManager
|
||||
import androidx.biometric.BiometricPrompt
|
||||
@@ -19,17 +20,19 @@ import com.kunzisoft.keepass.model.CipherDecryptDatabase
|
||||
import com.kunzisoft.keepass.model.CipherEncryptDatabase
|
||||
import com.kunzisoft.keepass.model.CredentialStorage
|
||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||
import kotlinx.coroutines.CoroutineExceptionHandler
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.crypto.Cipher
|
||||
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.M)
|
||||
class DeviceUnlockViewModel(application: Application): AndroidViewModel(application) {
|
||||
private var cipherDatabaseListener: CipherDatabaseAction.CipherDatabaseListener? = null
|
||||
private var cipherDatabase: CipherEncryptDatabase? = null
|
||||
|
||||
private var isConditionToStoreCredentialVerified: Boolean = false
|
||||
@@ -37,6 +40,8 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
private var deviceUnlockManager: DeviceUnlockManager? = null
|
||||
private var databaseUri: Uri? = null
|
||||
|
||||
private var mCipherJob: Job? = null
|
||||
|
||||
private var deviceUnlockMode = DeviceUnlockMode.BIOMETRIC_UNAVAILABLE
|
||||
var cryptoPrompt: DeviceUnlockCryptoPrompt? = null
|
||||
private set
|
||||
@@ -47,6 +52,40 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
var credentialDatabaseStorage: CredentialStorage = CredentialStorage.DEFAULT
|
||||
|
||||
val cipherDatabaseAction = CipherDatabaseAction.getInstance(getApplication())
|
||||
private var cipherDatabaseListener = object: CipherDatabaseAction.CipherDatabaseListener {
|
||||
override fun onCipherDatabaseRetrieved(
|
||||
databaseUri: Uri,
|
||||
cipherDatabase: CipherEncryptDatabase?
|
||||
) {
|
||||
if (databaseUri == this@DeviceUnlockViewModel.databaseUri) {
|
||||
cipherDatabase?.let {
|
||||
this@DeviceUnlockViewModel.cipherDatabase = it
|
||||
checkUnlockAvailability()
|
||||
} ?: deleteEncryptedDatabaseKey()
|
||||
}
|
||||
}
|
||||
override fun onCipherDatabaseAddedOrUpdated(cipherDatabase: CipherEncryptDatabase) {
|
||||
if (cipherDatabase.databaseUri == this@DeviceUnlockViewModel.databaseUri) {
|
||||
this@DeviceUnlockViewModel.cipherDatabase = cipherDatabase
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
}
|
||||
override fun onCipherDatabaseDeleted(databaseUri: Uri) {
|
||||
if (databaseUri == this@DeviceUnlockViewModel.databaseUri) {
|
||||
this@DeviceUnlockViewModel.cipherDatabase = null
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
}
|
||||
override fun onAllCipherDatabasesDeleted() {
|
||||
this@DeviceUnlockViewModel.cipherDatabase = null
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
override fun onCipherDatabaseCleared() {
|
||||
this@DeviceUnlockViewModel.cipherDatabase = null
|
||||
closeBiometricPrompt()
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
}
|
||||
|
||||
private val _uiState = MutableStateFlow(DeviceUnlockState())
|
||||
val uiState: StateFlow<DeviceUnlockState> = _uiState
|
||||
@@ -58,6 +97,19 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
.launchIn(viewModelScope)
|
||||
cipherDatabaseAction.registerDatabaseListener(cipherDatabaseListener)
|
||||
}
|
||||
|
||||
private fun cancelAndLaunchCipherJob(
|
||||
coroutineExceptionHandler: CoroutineExceptionHandler = CoroutineExceptionHandler { _, e ->
|
||||
setException(e)
|
||||
},
|
||||
block: suspend () -> Unit
|
||||
) {
|
||||
mCipherJob?.cancel()
|
||||
mCipherJob = viewModelScope.launch(coroutineExceptionHandler) {
|
||||
block()
|
||||
}
|
||||
}
|
||||
|
||||
fun checkConditionToStoreCredential(condition: Boolean) {
|
||||
@@ -73,7 +125,7 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
// biometric not supported (by API level or hardware) so keep option hidden
|
||||
// or manually disable
|
||||
val biometricCanAuthenticate = DeviceUnlockManager.canAuthenticate(getApplication())
|
||||
if (!PreferencesUtil.isAdvancedUnlockEnable(getApplication())
|
||||
if (!PreferencesUtil.isDeviceUnlockEnable(getApplication())
|
||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|
||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) {
|
||||
changeMode(DeviceUnlockMode.BIOMETRIC_UNAVAILABLE)
|
||||
@@ -118,18 +170,14 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
private fun changeMode(deviceUnlockMode: DeviceUnlockMode) {
|
||||
this.deviceUnlockMode = deviceUnlockMode
|
||||
when (deviceUnlockMode) {
|
||||
DeviceUnlockMode.STORE_CREDENTIAL -> {
|
||||
initEncryptData()
|
||||
}
|
||||
DeviceUnlockMode.EXTRACT_CREDENTIAL -> {
|
||||
initDecryptData()
|
||||
}
|
||||
DeviceUnlockMode.STORE_CREDENTIAL -> initEncryptData()
|
||||
DeviceUnlockMode.EXTRACT_CREDENTIAL -> initDecryptData()
|
||||
else -> {}
|
||||
}
|
||||
_uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
newDeviceUnlockMode = deviceUnlockMode,
|
||||
allowAdvancedUnlockMenu = cipherDatabase != null
|
||||
allowDeviceUnlockMenu = cipherDatabase != null
|
||||
&& deviceUnlockMode != DeviceUnlockMode.BIOMETRIC_UNAVAILABLE
|
||||
&& deviceUnlockMode != DeviceUnlockMode.KEY_MANAGER_UNAVAILABLE
|
||||
)
|
||||
@@ -138,25 +186,7 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
|
||||
private fun connectDatabase(databaseUri: Uri) {
|
||||
this.databaseUri = databaseUri
|
||||
cipherDatabaseListener = object: CipherDatabaseAction.CipherDatabaseListener {
|
||||
override fun onCipherDatabaseCleared() {
|
||||
cipherDatabase = null
|
||||
closeBiometricPrompt()
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
}
|
||||
cipherDatabaseAction.apply {
|
||||
reloadPreferences()
|
||||
cipherDatabaseListener?.let {
|
||||
registerDatabaseListener(it)
|
||||
}
|
||||
getCipherDatabase(databaseUri) { cipherDatabase ->
|
||||
cipherDatabase?.let {
|
||||
this@DeviceUnlockViewModel.cipherDatabase = it
|
||||
checkUnlockAvailability()
|
||||
} ?: deleteEncryptedDatabaseKey()
|
||||
}
|
||||
}
|
||||
cipherDatabaseAction.getCipherDatabase(databaseUri)
|
||||
}
|
||||
|
||||
private fun showPendingIfNecessary() {
|
||||
@@ -170,17 +200,15 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
private fun disconnectDatabase() {
|
||||
this.databaseUri = null
|
||||
this.cipherDatabase = null
|
||||
cipherDatabaseListener?.let {
|
||||
cipherDatabaseAction.unregisterDatabaseListener(it)
|
||||
}
|
||||
clearPrompt()
|
||||
changeMode(DeviceUnlockMode.BIOMETRIC_UNAVAILABLE)
|
||||
}
|
||||
|
||||
fun connect(databaseUri: Uri?) {
|
||||
Log.d(TAG, "Connect to device unlock")
|
||||
// To get device credential unlock result, only if same database uri
|
||||
if (databaseUri != null
|
||||
&& PreferencesUtil.isAdvancedUnlockEnable(getApplication())) {
|
||||
&& PreferencesUtil.isDeviceUnlockEnable(getApplication())) {
|
||||
if (databaseUri != this.databaseUri) {
|
||||
connectDatabase(databaseUri)
|
||||
}
|
||||
@@ -190,6 +218,7 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
}
|
||||
|
||||
fun disconnect() {
|
||||
Log.d(TAG, "Disconnect from device unlock")
|
||||
showPendingIfNecessary()
|
||||
disconnectDatabase()
|
||||
}
|
||||
@@ -230,7 +259,7 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
credential: ByteArray,
|
||||
cipher: Cipher?
|
||||
) {
|
||||
try {
|
||||
cancelAndLaunchCipherJob {
|
||||
deviceUnlockManager?.encryptData(
|
||||
value = credential,
|
||||
cipher = cipher,
|
||||
@@ -244,49 +273,42 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
this.specParameters = ivSpec
|
||||
}
|
||||
)
|
||||
} ?: setException(UnknownDatabaseLocationException())
|
||||
} ?: throw UnknownDatabaseLocationException()
|
||||
}
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
setException(e)
|
||||
} finally {
|
||||
// Reinit credential storage request
|
||||
_uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
credentialRequiredCipher = null
|
||||
)
|
||||
}
|
||||
}
|
||||
// Reinit credential storage request
|
||||
_uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
credentialRequiredCipher = null
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun decryptCredential(cipher: Cipher?) {
|
||||
// retrieve the encrypted value from preferences
|
||||
databaseUri?.let { databaseUri ->
|
||||
cipherDatabaseAction.getCipherDatabase(databaseUri) { cipherDatabase ->
|
||||
cancelAndLaunchCipherJob {
|
||||
databaseUri?.let { databaseUri ->
|
||||
cipherDatabase?.encryptedValue?.let { encryptedCredential ->
|
||||
try {
|
||||
deviceUnlockManager?.decryptData(
|
||||
encryptedValue = encryptedCredential,
|
||||
cipher = cipher,
|
||||
handleDecryptedResult = { decryptedValue ->
|
||||
// Load database directly with password retrieve
|
||||
onCredentialDecrypted(
|
||||
CipherDecryptDatabase().apply {
|
||||
this.databaseUri = databaseUri
|
||||
this.credentialStorage = credentialDatabaseStorage
|
||||
this.decryptedValue = decryptedValue
|
||||
}
|
||||
)
|
||||
cipherDatabaseAction.resetCipherParameters(databaseUri)
|
||||
}
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
setException(e)
|
||||
}
|
||||
deviceUnlockManager?.decryptData(
|
||||
encryptedValue = encryptedCredential,
|
||||
cipher = cipher,
|
||||
handleDecryptedResult = { decryptedValue ->
|
||||
// Load database directly with password retrieve
|
||||
onCredentialDecrypted(
|
||||
CipherDecryptDatabase().apply {
|
||||
this.databaseUri = databaseUri
|
||||
this.credentialStorage = credentialDatabaseStorage
|
||||
this.decryptedValue = decryptedValue
|
||||
}
|
||||
)
|
||||
cipherDatabaseAction.resetCipherParameters(databaseUri)
|
||||
}
|
||||
)
|
||||
} ?: deleteEncryptedDatabaseKey()
|
||||
} ?: run {
|
||||
throw UnknownDatabaseLocationException()
|
||||
}
|
||||
} ?: run {
|
||||
setException(UnknownDatabaseLocationException())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -328,7 +350,7 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
) {
|
||||
this@DeviceUnlockViewModel.cryptoPrompt = cryptoPrompt
|
||||
if (cryptoPromptShowPending
|
||||
|| (autoOpen && PreferencesUtil.isAdvancedUnlockPromptAutoOpenEnable(getApplication())))
|
||||
|| (autoOpen && PreferencesUtil.isDeviceUnlockPromptAutoOpenEnable(getApplication())))
|
||||
showPrompt()
|
||||
}
|
||||
|
||||
@@ -336,6 +358,9 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
AppLifecycleObserver.lockBackgroundEvent = true
|
||||
isAutoOpenBiometricPromptAllowed = false
|
||||
cryptoPromptShowPending = false
|
||||
if (cryptoPrompt == null) {
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
_uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
cryptoPromptState = DeviceUnlockPromptMode.SHOW
|
||||
@@ -351,7 +376,7 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
}
|
||||
}
|
||||
|
||||
fun setException(value: Exception?) {
|
||||
fun setException(value: Throwable?) {
|
||||
_uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
exception = value
|
||||
@@ -368,42 +393,38 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
}
|
||||
|
||||
private fun initEncryptData() {
|
||||
try {
|
||||
cancelAndLaunchCipherJob {
|
||||
deviceUnlockManager = DeviceUnlockManager(getApplication())
|
||||
deviceUnlockManager?.initEncryptData { cryptoPrompt ->
|
||||
onPromptRequested(cryptoPrompt)
|
||||
} ?: setException(Exception("AdvancedUnlockManager not initialized"))
|
||||
} catch (e: Exception) {
|
||||
setException(e)
|
||||
} ?: throw Exception("Device unlock manager not initialized")
|
||||
}
|
||||
}
|
||||
|
||||
private fun initDecryptData() {
|
||||
try {
|
||||
cancelAndLaunchCipherJob {
|
||||
cipherDatabase?.let { cipherDb ->
|
||||
deviceUnlockManager = DeviceUnlockManager(getApplication())
|
||||
deviceUnlockManager?.initDecryptData(cipherDb.specParameters) { cryptoPrompt ->
|
||||
onPromptRequested(
|
||||
cryptoPrompt,
|
||||
autoOpen = isAutoOpenBiometricPromptAllowed
|
||||
)
|
||||
} ?: setException(Exception("AdvancedUnlockManager not initialized"))
|
||||
} ?: setException(Exception("Cipher database not initialized"))
|
||||
} catch (e: Exception) {
|
||||
setException(e)
|
||||
deviceUnlockManager = DeviceUnlockManager(getApplication())
|
||||
deviceUnlockManager?.initDecryptData(cipherDb.specParameters) { cryptoPrompt ->
|
||||
onPromptRequested(
|
||||
cryptoPrompt,
|
||||
autoOpen = isAutoOpenBiometricPromptAllowed
|
||||
)
|
||||
} ?: throw Exception("Device unlock manager not initialized")
|
||||
} ?: throw Exception("Cipher database not initialized")
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteEncryptedDatabaseKey() {
|
||||
closeBiometricPrompt()
|
||||
databaseUri?.let { databaseUri ->
|
||||
cipherDatabaseAction.deleteByDatabaseUri(databaseUri) {
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
} ?: checkUnlockAvailability()
|
||||
cipherDatabaseAction.deleteByDatabaseUri(databaseUri)
|
||||
} ?: run {
|
||||
checkUnlockAvailability()
|
||||
}
|
||||
_uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
allowAdvancedUnlockMenu = false
|
||||
allowDeviceUnlockMenu = false
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -437,8 +458,13 @@ class DeviceUnlockViewModel(application: Application): AndroidViewModel(applicat
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
cipherDatabaseAction.unregisterDatabaseListener(cipherDatabaseListener)
|
||||
clearPrompt()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG = DeviceUnlockViewModel::class.java.simpleName
|
||||
}
|
||||
}
|
||||
|
||||
enum class DeviceUnlockPromptMode {
|
||||
@@ -447,11 +473,11 @@ enum class DeviceUnlockPromptMode {
|
||||
|
||||
data class DeviceUnlockState(
|
||||
val newDeviceUnlockMode: DeviceUnlockMode = DeviceUnlockMode.BIOMETRIC_UNAVAILABLE,
|
||||
val allowAdvancedUnlockMenu: Boolean = false,
|
||||
val allowDeviceUnlockMenu: Boolean = false,
|
||||
val credentialRequiredCipher: Cipher? = null,
|
||||
val cipherEncryptDatabase: CipherEncryptDatabase? = null,
|
||||
val cipherDecryptDatabase: CipherDecryptDatabase? = null,
|
||||
val cryptoPromptState: DeviceUnlockPromptMode = DeviceUnlockPromptMode.IDLE_CLOSE,
|
||||
val autoOpenPrompt: Boolean = false,
|
||||
val exception: Exception? = null
|
||||
val exception: Throwable? = null
|
||||
)
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.kunzisoft.keepass.view.DeviceUnlockView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/advanced_unlock_view"
|
||||
android:id="@+id/device_unlock_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
@@ -19,10 +19,11 @@
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:fitsSystemWindows="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/activity_entry_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:fitsSystemWindows="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
|
||||
@@ -19,11 +19,12 @@
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:fitsSystemWindows="true"
|
||||
android:id="@+id/icon_picker_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
android:filterTouchesWhenObscured="true">
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/icon_picker_coordinator"
|
||||
|
||||
@@ -19,11 +19,12 @@
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:fitsSystemWindows="true"
|
||||
android:id="@+id/key_generator_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
android:filterTouchesWhenObscured="true">
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/key_generator_coordinator"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:fitsSystemWindows="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
@@ -180,7 +181,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorSurface">
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/fragment_advanced_unlock_container_view"
|
||||
android:id="@+id/fragment_device_unlock_container_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
@@ -196,7 +197,7 @@
|
||||
style="@style/KeepassDXStyle.Button.Primary"
|
||||
app:icon="@drawable/ic_lock_open_white_24dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/fragment_advanced_unlock_container_view"
|
||||
app:layout_constraintStart_toEndOf="@+id/fragment_device_unlock_container_view"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:fitsSystemWindows="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
|
||||
@@ -122,8 +122,7 @@
|
||||
android:inputType="textPassword"
|
||||
android:importantForAccessibility="no"
|
||||
android:importantForAutofill="no"
|
||||
android:hint="@string/otp_secret"
|
||||
tools:targetApi="jelly_bean" />
|
||||
android:hint="@string/otp_secret" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -178,8 +177,7 @@
|
||||
tools:text="30"
|
||||
android:maxLength="3"
|
||||
android:digits="0123456789"
|
||||
android:imeOptions="actionNext"
|
||||
tools:targetApi="jelly_bean" />
|
||||
android:imeOptions="actionNext" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/setup_otp_counter_label"
|
||||
@@ -198,8 +196,7 @@
|
||||
android:importantForAutofill="no"
|
||||
android:hint="@string/otp_counter"
|
||||
tools:text="1"
|
||||
android:imeOptions="actionNext"
|
||||
tools:targetApi="jelly_bean" />
|
||||
android:imeOptions="actionNext" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
@@ -228,8 +225,7 @@
|
||||
tools:text="6"
|
||||
android:maxLength="2"
|
||||
android:digits="0123456789"
|
||||
android:imeOptions="actionNext"
|
||||
tools:targetApi="jelly_bean" />
|
||||
android:imeOptions="actionNext" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -237,4 +233,4 @@
|
||||
</LinearLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</ScrollView>
|
||||
|
||||
@@ -65,7 +65,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_arrow_right_white_24dp"
|
||||
app:tint="?attr/colorOnSurface"
|
||||
android:importantForAccessibility="no"
|
||||
tools:targetApi="jelly_bean" />
|
||||
android:importantForAccessibility="no" />
|
||||
</LinearLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
@@ -17,10 +17,12 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:fitsSystemWindows="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="8dp"
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<string name="education_field_copy_title">انسخ حقل</string>
|
||||
<string name="education_lock_title">اقفل قاعدة البيانات</string>
|
||||
<string name="feedback">أرسل انطباعاتك</string>
|
||||
<string name="about_description">\"KeePassDX\" هو تطبيق أندرويد لمدير كلمات السر كي باس \"KeePass\"</string>
|
||||
<string name="about_description">تطبيق أندرويد لمدير كلمات السر KeePass.</string>
|
||||
<string name="add_entry">أضف مدخل</string>
|
||||
<string name="edit_entry">عدّل مدخل</string>
|
||||
<string name="key_derivation_function">وظيفة اشتقاق المفتاح</string>
|
||||
@@ -184,7 +184,7 @@
|
||||
<string name="path">مسار</string>
|
||||
<string name="database_history">تأريخ</string>
|
||||
<string name="clipboard_notifications_summary">أظهر اشعارات الحافظة لنسخ الحقول عند عرض مدخل</string>
|
||||
<string name="advanced_unlock">فتح الجهاز</string>
|
||||
<string name="device_unlock">فتح الجهاز</string>
|
||||
<string name="biometric_unlock_enable_title">فحص البصمة</string>
|
||||
<string name="biometric_unlock_enable_summary">يتيح لك مسح بياناتك الحيوية لفتح قاعدة البيانات</string>
|
||||
<string name="monospace_font_fields_enable_summary">غير خط الحقول لتوضيح المحارف</string>
|
||||
@@ -213,8 +213,6 @@
|
||||
<string name="keyboard_key_vibrate_title">إهتزاز عند اللمس</string>
|
||||
<string name="keyboard_key_sound_title">صوت عند اللمس</string>
|
||||
<string name="allow_no_password_title">اسمح بدون المفتاح الرئيسي</string>
|
||||
<string name="enable_read_only_title">محمي من التعديل</string>
|
||||
<string name="enable_read_only_summary">افتح قاعدة البيانات في وضع القراءة افتراضيا</string>
|
||||
<string name="enable_education_screens_title">تلميحات تعليمية</string>
|
||||
<string name="reset_education_screens_summary">أعد عرض كل المعلومات التعليمية</string>
|
||||
<string name="reset_education_screens_text">إعادة تعيين الشاشات التلميحات</string>
|
||||
@@ -260,7 +258,7 @@
|
||||
<string name="content_description_update_from_list">حدِّث</string>
|
||||
<string name="content_description_keyboard_close_fields">أغلق الحقول</string>
|
||||
<string name="error_create_database_file">تعذر إنشاء قاعدة بيانات بكلمة السر وملف المفتاح الحاليين.</string>
|
||||
<string name="menu_advanced_unlock_settings">فك قفل الجهاز</string>
|
||||
<string name="menu_device_unlock_settings">فك قفل الجهاز</string>
|
||||
<string name="entry_attachments">مرفقات</string>
|
||||
<string name="entry_history">التاريخ</string>
|
||||
<string name="entry_add_attachment">أضف مرفقًا</string>
|
||||
@@ -334,7 +332,7 @@
|
||||
<string name="data">البيانات</string>
|
||||
<string name="unavailable_feature_hardware">تعذر العثور على ماسح البصمة.</string>
|
||||
<string name="biometric_delete_all_key_summary">احذف كل مفاتيح التعمية المرتبطة بفتح الجهاز</string>
|
||||
<string name="advanced_unlock_explanation_summary">استخدم إلغاء القفل الجهاز لفتح قاعدة البيانات بسهولة</string>
|
||||
<string name="device_unlock_explanation_summary">استخدم إلغاء القفل الجهاز لفتح قاعدة البيانات بسهولة</string>
|
||||
<string name="lock_database_show_button_summary">يعرض زر القَفل في الواجهة</string>
|
||||
<string name="lock_database_show_button_title">أظهر زر القفل</string>
|
||||
<string name="lock_database_back_root_summary">قفل قاعدة البيانات عند النقر على زر الرجوع في الشاشة الرئيسية</string>
|
||||
@@ -343,7 +341,7 @@
|
||||
<string name="database_opened">قاعدة البيانات مفتوحة</string>
|
||||
<string name="autofill_preference_title">إعدادات الملء التلقائي</string>
|
||||
<string name="education_entry_edit_title">عدّل المدخل</string>
|
||||
<string name="education_advanced_unlock_summary">اربط كلمة سر ببياناتك البيومترية الممسوحة ضوئيًا أو بيانات اعتماد جهازك لفتح قفل قاعدة بياناتك بسرعة.</string>
|
||||
<string name="education_device_unlock_summary">اربط كلمة سر ببياناتك البيومترية الممسوحة ضوئيًا أو بيانات اعتماد جهازك لفتح قفل قاعدة بياناتك بسرعة.</string>
|
||||
<string name="education_search_summary">لإيجاد كلمة السر، أدخل العنوان أو اسم المستخدم أو محتوى أحد الحقول.</string>
|
||||
<string name="education_new_node_summary">المدخلات لإدارة معرفاتك الرقمية.
|
||||
\n
|
||||
@@ -463,13 +461,13 @@
|
||||
<string name="error_export_app_properties">خطأ أثناء تصدير إعدادات التطبيق.</string>
|
||||
<string name="warning_database_info_changed">غُيِّرت معلومات قاعدة البيانات من خارج هذا التطبيق.</string>
|
||||
<string name="warning_database_info_changed_options">ادمج البيانات أو استبدل التعديلات الخارجية بحفظ قاعدة البيانات أو أعد تحميلها لجلب آخر التغييرات.</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">اكتب كلمة السر، وأنقر هذا الزر.</string>
|
||||
<string name="credential_before_click_device_unlock_button">اكتب كلمة السر، وأنقر هذا الزر.</string>
|
||||
<string name="device_credential">بيانات الاعتماد للجهاز</string>
|
||||
<string name="advanced_unlock_tap_delete">انقر لحذف مفاتيح فتح الجهاز</string>
|
||||
<string name="device_unlock_tap_delete">انقر لحذف مفاتيح فتح الجهاز</string>
|
||||
<string name="keyboard_auto_go_action_title">إجراء اللمس التلقائي</string>
|
||||
<string name="keyboard_previous_fill_in_title">العودة إلى الوراء</string>
|
||||
<string name="keyboard_previous_lock_title">اقفل قاعدة البيانات</string>
|
||||
<string name="education_advanced_unlock_title">فتح قاعدة بيانات الجهاز</string>
|
||||
<string name="education_device_unlock_title">فتح قاعدة بيانات الجهاز</string>
|
||||
<string name="hint_icon_name">اسم الأيقونة</string>
|
||||
<string name="autofill_manual_selection_title">اختيار يدوي</string>
|
||||
<string name="description_app_properties">خصائص KeePassDX لإدارة إعدادات التطبيقات</string>
|
||||
@@ -506,14 +504,14 @@
|
||||
<string name="autofill_close_database_summary">أغلق قاعدة البيانات بعد الملء التلقائي</string>
|
||||
<string name="autofill_ask_to_save_data_summary">اسأل عن حفظ البيانات عند ملئك لنموذج</string>
|
||||
<string name="templates_group_uuid_title">مجموعة القوالب</string>
|
||||
<string name="advanced_unlock_timeout">انتهت مهلة فتح الجهاز</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">مهلة استخدام فتح الجهاز قبل حذف محتواها</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">أتريد حذف كل مفاتيح التعمية المرتبطة بفتح الجهاز؟</string>
|
||||
<string name="device_unlock_timeout">انتهت مهلة فتح الجهاز</string>
|
||||
<string name="temp_device_unlock_timeout_summary">مهلة استخدام فتح الجهاز قبل حذف محتواها</string>
|
||||
<string name="device_unlock_delete_all_key_warning">أتريد حذف كل مفاتيح التعمية المرتبطة بفتح الجهاز؟</string>
|
||||
<string name="templates">القوالب</string>
|
||||
<string name="templates_group_enable_title">استخدام القوالب</string>
|
||||
<string name="notification">الإشعارات</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">لا تقم بتخزين أي محتوى مشفر لاستخدام إلغاء قفل الجهاز</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">انتهاء صلاحية فتح الحهاز</string>
|
||||
<string name="temp_device_unlock_enable_summary">لا تقم بتخزين أي محتوى مشفر لاستخدام إلغاء قفل الجهاز</string>
|
||||
<string name="temp_device_unlock_timeout_title">انتهاء صلاحية فتح الحهاز</string>
|
||||
<string name="hide_expired_entries_title">أخفِ المدخلات منتهية الصلاحية</string>
|
||||
<string name="content_description_hardware_key_checkbox">خانة إختيار مفتاح العتاد</string>
|
||||
<string name="content_description_passphrase_word_count">عدد عبارات السر</string>
|
||||
@@ -521,10 +519,10 @@
|
||||
<string name="passphrase">عبارة السر</string>
|
||||
<string name="colorize_password_title">لوّن كلمات السر</string>
|
||||
<string name="permission">الإذن</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">تعذر تهيئة موجه إلغاء قفل الجهاز.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">تعذر تهيئة موجه إلغاء قفل الجهاز.</string>
|
||||
<string name="biometric_security_update_required">مطلوب تحديث أمان المقاييس الحيوية.</string>
|
||||
<string name="advanced_unlock_not_recognized">تعذر التعرف على طباعة فتح الجهاز</string>
|
||||
<string name="temp_advanced_unlock_enable_title">فتح جهاز مؤقت</string>
|
||||
<string name="device_unlock_not_recognized">تعذر التعرف على طباعة فتح الجهاز</string>
|
||||
<string name="temp_device_unlock_enable_title">فتح جهاز مؤقت</string>
|
||||
<string name="autofill_inline_suggestions_title">اقتراحات مضمنة</string>
|
||||
<string name="education_setup_OTP_summary">أعِدّ إدارة كلمات السر لمرة واحدة (HOTP / TOTP) لإنشاء رمز مميز مطلوب لاستيثاق الثنائي (2FA).</string>
|
||||
<string name="education_field_copy_summary">يمكن لصق الحقول المنسوخة في أي مكان.
|
||||
@@ -594,7 +592,7 @@
|
||||
<string name="html_text_dev_feature_buy_pro">بشراء الإصدار <strong> pro </strong>،</string>
|
||||
<string name="auto_type">كتابة تلقائيًا</string>
|
||||
<string name="hardware_key">مفتاح العتاد</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">رابط لفتح الجهاز</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">رابط لفتح الجهاز</string>
|
||||
<string name="backspace">فراغ للخلف</string>
|
||||
<string name="enter">دخول</string>
|
||||
<string name="education_sort_summary">اختر كيفية فرز المدخلات والمجموعات.</string>
|
||||
@@ -618,7 +616,7 @@
|
||||
<string name="error_driver_required">مطلوب تعريف لـ%1$s.</string>
|
||||
<string name="error_unable_merge_database_kdb">غير قادر على الدمج مع ملف قاعدة بيانات kdb.</string>
|
||||
<string name="error_location_unknown">موقع قاعدة البيانات غير معروف، لا يمكن تنفيذ إجراء قاعدة البيانات.</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">القياس الحيوي، بيانات اعتماد الجهاز</string>
|
||||
<string name="menu_device_unlock_settings_summary">القياس الحيوي، بيانات اعتماد الجهاز</string>
|
||||
<string name="menu_database_settings_summary">البيانات الوصفية، سلة المحذوفات، القوالب، التاريخ</string>
|
||||
<string name="menu_security_settings_summary">التشفير، وظيفة اشتقاق المفتاح</string>
|
||||
<string name="error_hardware_key_unsupported">مفتاح العتاد غير مدعوم.</string>
|
||||
@@ -635,16 +633,16 @@
|
||||
\nإذا لم تنشط هذا الإذن، فلن تكون قاعدة البيانات المفتوحة في الخلفية مرئية إذا كان هناك تطبيق آخر في المقدمة.</string>
|
||||
<string name="warning_copy_permission">مطلوب إذن الإشعار لاستخدام ميزة إشعار الحافظة.</string>
|
||||
<string name="merge_success">اكتمل الدمج بنجاح</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">ما زلت بحاجة إلى تذكر بيانات الاعتماد الرئيسية في مخزنك إذا كنت تستخدم التعرّف على فتح الجهاز.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">التعرف على فتح الجهاز</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">ما زلت بحاجة إلى تذكر بيانات الاعتماد الرئيسية في مخزنك إذا كنت تستخدم التعرّف على فتح الجهاز.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">التعرف على فتح الجهاز</string>
|
||||
<string name="later">لاحقًا</string>
|
||||
<string name="configure">تضبيط</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">استخراج بيانات اعتماد قاعدة البيانات مع بيانات فتح الجهاز</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">استخراج بيانات اعتماد قاعدة البيانات مع بيانات فتح الجهاز</string>
|
||||
<string name="ask">إسأل</string>
|
||||
<string name="configure_biometric">لم تسجل بيانات اعتماد المقاييس الحيوية أو الجهاز.</string>
|
||||
<string name="show_uuid_title">أظهر \"المعرّف العام المميز\" UUID</string>
|
||||
<string name="unlock_and_link_biometric">رابط فتح الجهاز</string>
|
||||
<string name="advanced_unlock_invalid_key">لا يمكن قراءة مفتاح فتح الجهاز. يرجى حذفه وتكرار إجراء التعرف على الفتح.</string>
|
||||
<string name="device_unlock_invalid_key">لا يمكن قراءة مفتاح فتح الجهاز. يرجى حذفه وتكرار إجراء التعرف على الفتح.</string>
|
||||
<string name="menu_appearance_settings_summary">المظاهر والألوان والسمات</string>
|
||||
<string name="autofill_explanation_summary">تمكين الملء التلقائي لملء النماذج بسرعة في التطبيقات الأخرى</string>
|
||||
<string name="device_credential_unlock_enable_summary">يتيح لك استخدام بيانات اعتماد جهازك لفتح قاعدة البيانات</string>
|
||||
@@ -652,7 +650,7 @@
|
||||
<string name="unlock">فتح</string>
|
||||
<string name="menu_app_settings_summary">البحث، القفل، التاريخ، الخصائص</string>
|
||||
<string name="menu_form_filling_settings_summary">لوحة المفاتيح، الملء التلقائي، الحافظة</string>
|
||||
<string name="advanced_unlock_keystore_warning">ستقوم هذه الميزة بتخزين بيانات الاعتماد المشفرة في KeyStore الآمن بجهازك.
|
||||
<string name="device_unlock_keystore_warning">ستقوم هذه الميزة بتخزين بيانات الاعتماد المشفرة في KeyStore الآمن بجهازك.
|
||||
\n
|
||||
\nاعتمادًا على تطبيق API الأصلي لنظام التشغيل، قد لا يعمل بكامل طاقته.
|
||||
\n
|
||||
|
||||
@@ -129,8 +129,8 @@
|
||||
<string name="copy_field">%1$s nüsxələndi</string>
|
||||
<string name="menu_form_filling_settings">Forum doldurma</string>
|
||||
<string name="menu_form_filling_settings_summary">Klaviatura, avtomatik douldurma, mübadilə buferi</string>
|
||||
<string name="menu_advanced_unlock_settings">Cihaz kilidini aç</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometrik, cihaz şəxsiyyətini təyin edən məlumatlar</string>
|
||||
<string name="menu_device_unlock_settings">Cihaz kilidini aç</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometrik, cihaz şəxsiyyətini təyin edən məlumatlar</string>
|
||||
<string name="menu_security_settings_summary">Şifrələmə, açar yaratma funskiyası</string>
|
||||
<string name="menu_master_key_settings">Ana açar parametrləri</string>
|
||||
<string name="settings">Parametrlər</string>
|
||||
@@ -197,7 +197,7 @@
|
||||
<string name="ask">Soruş</string>
|
||||
<string name="configure">Kofiqurasiya et</string>
|
||||
<string name="keystore_not_accessible">Açar ehtiyyatı düzgün formada başladılmadı.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Cihaz kilidini açma linki</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Cihaz kilidini açma linki</string>
|
||||
<string name="database_history">Tarixçə</string>
|
||||
<string name="warning_database_info_reloaded">Məlumat bazasını yenidən yükləmək lokal olaraq modifikasiya olunmuş faylları siləcəkdir.</string>
|
||||
<string name="warning_database_revoked">Fayla giriş fayl meneceri tərəfindən ləğv edildi, məlumat bazasını bağlayın və onu olduğu yerdən yenidən açın.</string>
|
||||
@@ -209,11 +209,11 @@
|
||||
<string name="configure_biometric">Biometrik və ya cihaz şəxsiyyəti ilə doğrulama məlumatları tapılmadı.</string>
|
||||
<string name="biometric_security_update_required">Biometrik təhlükəsizlik yenilənməsi lazımdır.</string>
|
||||
<string name="unlock_and_link_biometric">Cihaz kilid açma linki</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Cihaz kilidini tanıma</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Cihaz kilidini tanıma</string>
|
||||
<string name="encrypted_value_stored">Şifrələnmiş şifrə ehtiyyata alındı</string>
|
||||
<string name="advanced_unlock_not_recognized">Cihaz kilidini açmaq üçün barmaq izi tanınmadı</string>
|
||||
<string name="device_unlock_not_recognized">Cihaz kilidini açmaq üçün barmaq izi tanınmadı</string>
|
||||
<string name="unavailable">Mövcud deyil</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Şifrəni yazın və sonra bu düyməyə basın.</string>
|
||||
<string name="credential_before_click_device_unlock_button">Şifrəni yazın və sonra bu düyməyə basın.</string>
|
||||
<string name="properties">Xüsusiyyətlər</string>
|
||||
<string name="menu_appearance_settings">Görünüş</string>
|
||||
<string name="menu_appearance_settings_summary">Tema, rəng və atributlar</string>
|
||||
@@ -225,11 +225,11 @@
|
||||
<string name="autofill_sign_in_prompt">KeePassDX ile giriş edin</string>
|
||||
<string name="education_entry_new_field_title">Xüsusi bölmələr əlavə edin</string>
|
||||
<string name="education_add_attachment_title">Qoşma əlavə edin</string>
|
||||
<string name="advanced_unlock_explanation_summary">Məlumat bazasını daha asan açmaq üçün cihazın kilid açma funksiyasından istifadə edin</string>
|
||||
<string name="device_unlock_explanation_summary">Məlumat bazasını daha asan açmaq üçün cihazın kilid açma funksiyasından istifadə edin</string>
|
||||
<string name="device_credential_unlock_enable_summary">Məlumat bazasını açmaq üçün cihaz şəxsiyyət məlumatlarından istifadə etməyə imkan verir</string>
|
||||
<string name="education_add_attachment_summary">Önəmli xarici məlumatları yadda saxlamaq üçün şifrənizə (qeyd) qoşma əlavə edin.</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Müvəqqəti kilid açma</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Cihazın kilid açma müddəti bitdi</string>
|
||||
<string name="temp_device_unlock_enable_title">Müvəqqəti kilid açma</string>
|
||||
<string name="temp_device_unlock_timeout_title">Cihazın kilid açma müddəti bitdi</string>
|
||||
<string name="unavailable_feature_version">Bu cihazda Andoird %1$s versiyası var, lakin %2$svə ya daha sonrakı versiya lazımdır.</string>
|
||||
<string name="path">Yol</string>
|
||||
<string name="unavailable_feature_hardware">Lazımi aparat-təchizat tapılmadı.</string>
|
||||
@@ -255,7 +255,7 @@
|
||||
<string name="device_credential_unlock_enable_title">Cihaz şəxsiyyət məlumatları ilə kilid açma</string>
|
||||
<string name="biometric_auto_open_prompt_title">Avtomatik açma istəyi</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Məlumat bazası ondan istifadə ediləcək şəkildə quraşdırılıbsa, cihaz kilidini avtomatik olaraq tələb et</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Cihaz kilidini açmaq üçün hər hansısa şifrələnmiş məzmunu saxlamayın</string>
|
||||
<string name="temp_device_unlock_enable_summary">Cihaz kilidini açmaq üçün hər hansısa şifrələnmiş məzmunu saxlamayın</string>
|
||||
<string name="biometric_delete_all_key_title">Şifrələnmiş açarları silin</string>
|
||||
<string name="unavailable_feature_text">Bu funksiya işləmədi.</string>
|
||||
<string name="file_name">Fayl adı</string>
|
||||
@@ -341,7 +341,7 @@
|
||||
<string name="clipboard_notifications_summary">Şifrəni göstərərkən sahələri (bölmə) nüsxələmək üçün mübadilə buferi bildirişlərini göstər</string>
|
||||
<string name="clipboard_warning">Əgər mübadilə buferinin avtomatik silinməsi uğursuz olarsa, onun tarixçəsini əllə silin.</string>
|
||||
<string name="html_text_ad_free">Digər bir çox şifrə menecerlerindən fərqli olaraq, bu tətbiq <strong>reklamsız</strong>,<strong>azad lisenziyaya sahibdir</strong> və hansı versiyanı istifadə etdiyinizdən asılı olmayaraq, şəxsi məlumatlarınızı öz serverlərində toplamır.</string>
|
||||
<string name="advanced_unlock_keystore_warning">Bu xüsusiyyət, şifrələnən şəxsiyyəti təsdiq edən məlumatları cihazın təhlükəsiz açar bazasında saxlayacaqdır.\n\nƏməliyyat sisteminin yerli APİ-nin tətbiqindən asılı olaraq, tam olaraq funksional olmaya bilər.\n\nCihazın istehsalçısı və istifadə etdiyiniz ROM-un tərtibatçısı ilə açar bazasının uyğunluğu və təhlükəsizliyini yoxlayın.</string>
|
||||
<string name="device_unlock_keystore_warning">Bu xüsusiyyət, şifrələnən şəxsiyyəti təsdiq edən məlumatları cihazın təhlükəsiz açar bazasında saxlayacaqdır.\n\nƏməliyyat sisteminin yerli APİ-nin tətbiqindən asılı olaraq, tam olaraq funksional olmaya bilər.\n\nCihazın istehsalçısı və istifadə etdiyiniz ROM-un tərtibatçısı ilə açar bazasının uyğunluğu və təhlükəsizliyini yoxlayın.</string>
|
||||
<string name="autofill_inline_suggestions_title">Cümlə daxili təkliflər</string>
|
||||
<string name="autofill_inline_suggestions_summary">Birbaşa uyğun olan klaviaturadan avtomatik doldurma təkliflərini göstərməyə çalış</string>
|
||||
<string name="autofill_manual_selection_title">Əllə seçim</string>
|
||||
@@ -349,7 +349,6 @@
|
||||
<string name="autofill_save_search_info_title">Axtarış məlumatlarını yadda saxla</string>
|
||||
<string name="autofill_inline_suggestions_keyboard">Avtomatik doldurma təklifləri əlavə edildi.</string>
|
||||
<string name="allow_no_password_title">Ana açar olmamasına icazə ver</string>
|
||||
<string name="enable_read_only_summary">Məlumat bazasını standart olaraq yazma-qorumalı (dəyişməz) aç</string>
|
||||
<string name="enable_auto_save_database_title">Məlumat bazasını avtomatik olaraq yadda saxla</string>
|
||||
<string name="reset_education_screens_summary">Bütün təlim məlumatlarını yenidən göstər</string>
|
||||
<string name="reset_education_screens_text">Təlim ipuclarını sıfırlamaq</string>
|
||||
@@ -513,10 +512,10 @@
|
||||
<string name="warning_database_link_revoked">Fayla giriş icazəsi fayl meneceri tərəfindən rədd edildi</string>
|
||||
<string name="warning_database_already_opened">Məlumat bazası artıq açıqdır, yenisi açmaq üçün öncə onu bağlayın</string>
|
||||
<string name="warning_empty_password">Şifrə qoruması olmadan davam edilsinmi?</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Cihazın kilid açma funksiyasından istifadə etsəniz belə, kassanın əsas şəxsiyyət təyin etmə məlumatlarını yenə də xatırlamaq lazımdır.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Cihazın kilid açma funksiyası ilə məlumat bazasının şəxsiyyətini tədiq edən məlumatlarını əldə edin</string>
|
||||
<string name="advanced_unlock_invalid_key">Cihazın kilid açma açarı oxunmadı. Zəhmət olmazsa, onu silin və kilid açma prossesini təkrarlayın.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Cihaz kilid açma istəyini başlatmaq mümkün deyil.</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Cihazın kilid açma funksiyasından istifadə etsəniz belə, kassanın əsas şəxsiyyət təyin etmə məlumatlarını yenə də xatırlamaq lazımdır.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Cihazın kilid açma funksiyası ilə məlumat bazasının şəxsiyyətini tədiq edən məlumatlarını əldə edin</string>
|
||||
<string name="device_unlock_invalid_key">Cihazın kilid açma açarı oxunmadı. Zəhmət olmazsa, onu silin və kilid açma prossesini təkrarlayın.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Cihaz kilid açma istəyini başlatmaq mümkün deyil.</string>
|
||||
<string name="autofill_explanation_summary">Digər tətbiqlərdə formları (anket) daha sürətli doldurmaq üçün avtomatik doldurma funksiyasını aktiv edin</string>
|
||||
<string name="autofill_select_entry">Şifrə seç .…</string>
|
||||
<string name="set_autofill_service_title">Standart avtomatik doldurma xidmətini təyin edin</string>
|
||||
@@ -535,12 +534,12 @@
|
||||
<string name="lock_database_show_button_summary">İstifadəçi interfeysində kilid düyməsini göstərin</string>
|
||||
<string name="content">Məzmun</string>
|
||||
<string name="unlock">Kilidi aç</string>
|
||||
<string name="advanced_unlock">Cihaz kilidini aç</string>
|
||||
<string name="advanced_unlock_tap_delete">Cihaz kilid açma açarlarını silmək üçün toxunun</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Məzmununu silmədən öncə cihazın kilidini açma istifadə müddəti</string>
|
||||
<string name="advanced_unlock_timeout">Cihaz kilidi açma taymout müddəti</string>
|
||||
<string name="device_unlock">Cihaz kilidini aç</string>
|
||||
<string name="device_unlock_tap_delete">Cihaz kilid açma açarlarını silmək üçün toxunun</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Məzmununu silmədən öncə cihazın kilidini açma istifadə müddəti</string>
|
||||
<string name="device_unlock_timeout">Cihaz kilidi açma taymout müddəti</string>
|
||||
<string name="biometric_delete_all_key_summary">Cihaz kilid açma tanıması ilə bağlı bütün şifrəli açarları silin</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Cihaz kilid açma tanıması ilə bağlı bütün şifrəli açarlar silinsinmi?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Cihaz kilid açma tanıması ilə bağlı bütün şifrəli açarlar silinsinmi?</string>
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Məlumat bazasında olan, lakin şifrəyə bağlı olmayan qoşmaları silin</string>
|
||||
<string name="max_history_items_summary">Hər şifrə başına düşən keçmiş məlumatların (fayl) sayını limitləyin</string>
|
||||
<string name="monospace_font_fields_enable_title">Sahə (bölmə) yazı tipi</string>
|
||||
@@ -572,7 +571,6 @@
|
||||
<string name="allow_no_password_summary">Əgər şəxsiyyəti təsdiq edən məlumatlar seçilməyibsə, \"Aç\" düyməsinin sıxılmasına icazə ver</string>
|
||||
<string name="delete_entered_password_title">Şifrəni sil</string>
|
||||
<string name="delete_entered_password_summary">Məlumat bazasına bağlantı cəhdindən sonra daxil edilmiş şifrəni sil</string>
|
||||
<string name="enable_read_only_title">Yazma qorumalı</string>
|
||||
<string name="enable_auto_save_database_summary">Hər önəmli prossesdən sonra məlumat bazasını yadda saxla (\"Modifikasiya edilə bilən\" modda keçərlidir)</string>
|
||||
<string name="enable_keep_screen_on_title">Ekranı açıq saxla</string>
|
||||
<string name="enable_keep_screen_on_summary">Şifrəyə baxarkən və ya redaktə edərkən ekranı açıq saxla</string>
|
||||
@@ -598,8 +596,8 @@
|
||||
<string name="education_select_database_summary">İstifadəyə davam etmək üçün fayl brauzerinizdən əvvəlki məlumat bazası faylını açın.</string>
|
||||
<string name="education_new_node_summary">Şifrələr rəqəmsal şəxsiyyəti təsdiq edən məlumatları idarə etməyinizə kömək edir.\n\nQruplar (~qovluqlar) məlumat bazasındakı şifrələri düzəltdir.</string>
|
||||
<string name="education_search_title">Şifrələrdə axtarış edin</string>
|
||||
<string name="education_advanced_unlock_title">Cihaz maəlumat bazası kilidini açma</string>
|
||||
<string name="education_advanced_unlock_summary">Məlumat bazanızı daha sürətli açmaq üçün şifrənizi skan edilmiş biometriya və ya cihaz şəxsiyyəti təsdiq edən məlumatlarla əlaqələndirin.</string>
|
||||
<string name="education_device_unlock_title">Cihaz maəlumat bazası kilidini açma</string>
|
||||
<string name="education_device_unlock_summary">Məlumat bazanızı daha sürətli açmaq üçün şifrənizi skan edilmiş biometriya və ya cihaz şəxsiyyəti təsdiq edən məlumatlarla əlaqələndirin.</string>
|
||||
<string name="education_entry_edit_summary">Şifrəyə özəl sahələrlə (bölmə) düzəliş edin. Ümumi məlumatlara müxtəlif şifrə sahələri arasında istinad edilə bilər.</string>
|
||||
<string name="education_sort_title">Məlumatları (fayl) sıralayın</string>
|
||||
<string name="education_sort_summary">Şifrə və qrupların necə sıralandığını seçin.</string>
|
||||
@@ -658,4 +656,4 @@
|
||||
<string name="keyboard_previous_lock_summary">Məlumat bazasını kilidlədikdən sonra avtomatik olaraq əvvəlki klaviaturaya geri dön</string>
|
||||
<string name="custom_fields">Özəl sahələr (bölmə)</string>
|
||||
<string name="back_to_previous_keyboard">Əvvəlki klaviaturaya geri dön</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<string name="menu_master_key_settings">Postavke glavnog ključa</string>
|
||||
<string name="menu_security_settings">Bezbednosne postavke</string>
|
||||
<string name="menu_database_settings">Postavke baze podataka</string>
|
||||
<string name="menu_advanced_unlock_settings">Napredno otključavanje</string>
|
||||
<string name="menu_device_unlock_settings">Napredno otključavanje</string>
|
||||
<string name="menu_form_filling_settings">Popunjavanje obrasca</string>
|
||||
<string name="menu_app_settings">Postavke aplikacije</string>
|
||||
<string name="settings">Postavke</string>
|
||||
@@ -196,8 +196,8 @@
|
||||
<string name="biometric_auto_open_prompt_title">Automatski otvori biometrijski upit</string>
|
||||
<string name="biometric_unlock_enable_summary">Omogućava Vam da skenirate svoju biometriju da biste otvorili bazu podataka</string>
|
||||
<string name="biometric_unlock_enable_title">Biometrijsko otključavanje</string>
|
||||
<string name="advanced_unlock_explanation_summary">Koristite napredno otključavanje kako bi ste lakše otvorili bazu podataka</string>
|
||||
<string name="advanced_unlock">Napredno otključavanje</string>
|
||||
<string name="device_unlock_explanation_summary">Koristite napredno otključavanje kako bi ste lakše otvorili bazu podataka</string>
|
||||
<string name="device_unlock">Napredno otključavanje</string>
|
||||
<string name="education_unlock_summary">Unesite lozinku i/ili datoteku ključa da bi ste otključali bazu podataka.
|
||||
\n
|
||||
\nNapravite rezervnu kopiju datoteke baze podataka na bezbednom mestu nakon svake promene.</string>
|
||||
@@ -394,7 +394,7 @@
|
||||
<string name="error_driver_required">Potreban je drajver za %1$s.</string>
|
||||
<string name="menu_app_settings_summary">Pretraga, zaključavanje, istorija, svojstva</string>
|
||||
<string name="menu_form_filling_settings_summary">Tastatura, automatsko popunjavanje, klipbord</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometrija, akreditiv uređaja</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometrija, akreditiv uređaja</string>
|
||||
<string name="menu_database_settings_summary">Metapodaci, korpa za otpatke, šabloni, istorija</string>
|
||||
<string name="menu_security_settings_summary">Šifrovanje, funkcija izvođenja ključa</string>
|
||||
<string name="master_key_settings_summary">Promena, obnova</string>
|
||||
@@ -413,4 +413,4 @@
|
||||
<string name="parallelism">Paralelizam</string>
|
||||
<string name="parallelism_explanation">Stepen paralelizma (tj. broj niti) koji koristi funkcija izvođenja ključa.</string>
|
||||
<string name="saving_database">Čuvanje baze podataka…</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -139,4 +139,4 @@
|
||||
<string name="bank_name">銀行名稱</string>
|
||||
<string name="entry_url">網址</string>
|
||||
<string name="entry_user_name">用戶名</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
667
app/src/main/res/values-be/strings.xml
Normal file
667
app/src/main/res/values-be/strings.xml
Normal file
@@ -0,0 +1,667 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="contact">Кантакт</string>
|
||||
<string name="info">Iнфа</string>
|
||||
<string name="contribution">Унёсак</string>
|
||||
<string name="feedback">Зваротная сувязь</string>
|
||||
<string name="homepage">Хатняя старонка</string>
|
||||
<string name="about_description">Android рэалізацыя мэнэджара пароляў KeePass.</string>
|
||||
<string name="accept">Прыняць</string>
|
||||
<string name="add_entry">Дадаць запіс</string>
|
||||
<string name="edit_entry">Рэдагаваць запіс</string>
|
||||
<string name="add_group">Дадаць групу</string>
|
||||
<string name="master_key">Галоўны ключ</string>
|
||||
<string name="security">Бяспека</string>
|
||||
<string name="encryption">Шыфраванне</string>
|
||||
<string name="encryption_algorithm">Алгарытм шыфравання</string>
|
||||
<string name="key_derivation_function">Функцыя вывядзення ключа</string>
|
||||
<string name="app_timeout">Тайм-аўт</string>
|
||||
<string name="app_timeout_summary">Час бяздзейнасці перад блакаваннем базы дадзеных</string>
|
||||
<string name="application">Праграма</string>
|
||||
<string name="extended_ASCII">Пашыраны ASCII</string>
|
||||
<string name="file_manager_install_description">Каб ствараць, адкрываць і захоўваць файлы базы дадзеных, патрабуецца файлавы мэнэджар, які прымае дзеянні ACTION_CREATE_DOCUMENT і ACTION_OPEN_DOCUMENT.</string>
|
||||
<string name="allow">Дазволіць</string>
|
||||
<string name="clipboard_cleared">Буфер абмену ачышчаны</string>
|
||||
<string name="clipboard_error_title">Памылка буфера абмену</string>
|
||||
<string name="clipboard_error">Некаторыя прылады не дазваляюць праграмам выкарыстоўваць буфер абмену.</string>
|
||||
<string name="clipboard_error_clear">Не ўдалося ачысціць буфер абмену</string>
|
||||
<string name="clipboard_timeout">Тайм-аўт буфера абмену</string>
|
||||
<string name="clipboard_timeout_summary">Працягласць захоўвання ў буферы абмену (калі падтрымліваецца прыладай)</string>
|
||||
<string name="content_description_open_file">Адкрыць файл</string>
|
||||
<string name="content_description_add_node">Дадаць вузел</string>
|
||||
<string name="content_description_add_entry">Дадаць запіс</string>
|
||||
<string name="content_description_add_group">Дадаць групу</string>
|
||||
<string name="content_description_add_item">Дадаць элемент</string>
|
||||
<string name="content_description_file_information">Інфармацыя пра файл</string>
|
||||
<string name="content_description_credentials_information">Інфармацыя пра ўліковыя дадзеныя</string>
|
||||
<string name="content_description_otp_information">Інфармацыя пра аднаразовы пароль</string>
|
||||
<string name="brackets">Дужкі</string>
|
||||
<string name="content_description_background">Фон</string>
|
||||
<string name="content_description_node_children">Даччыныя вузлы</string>
|
||||
<string name="content_description_password_checkbox">Сцяжок пароля</string>
|
||||
<string name="content_description_keyfile_checkbox">Сцяжок файла ключа</string>
|
||||
<string name="content_description_hardware_key_checkbox">Сцяжок апаратнага ключа</string>
|
||||
<string name="content_description_repeat_toggle_password_visibility">Паўтарыць пераключэнне бачнасці пароля</string>
|
||||
<string name="content_description_entry_icon">Значок запісу</string>
|
||||
<string name="content_description_database_color">Колер базы дадзеных</string>
|
||||
<string name="content_description_entry_foreground_color">Колер пярэдняга плану запісу</string>
|
||||
<string name="content_description_entry_background_color">Колер фону запісу</string>
|
||||
<string name="content_description_nav_header">Загаловак навігацыі</string>
|
||||
<string name="navigation_drawer_open">Навігацыйны скрыню адкрыты</string>
|
||||
<string name="navigation_drawer_close">Навігацыйны скрыню зачынены</string>
|
||||
<string name="validate">Праверыць</string>
|
||||
<string name="discard_changes">Адхіліць змены?</string>
|
||||
<string name="discard">Адхіліць</string>
|
||||
<string name="entry_password_generator">Генератар пароляў</string>
|
||||
<string name="content_description_password_length">Даўжыня пароля</string>
|
||||
<string name="content_description_passphrase_word_count">Колькасць слоў парольнай фразы</string>
|
||||
<string name="entry_add_field">Дадаць поле</string>
|
||||
<string name="entry_add_attachment">Дадаць укладанне</string>
|
||||
<string name="content_description_remove_field">Выдаліць поле</string>
|
||||
<string name="content_description_update_from_list">Абнавіць</string>
|
||||
<string name="content_description_remove_from_list">Сцерці</string>
|
||||
<string name="content_description_keyboard_close_fields">Закрыць палі</string>
|
||||
<string name="select_to_copy">Выберыце, каб скапіяваць %1$s у буфер абмену</string>
|
||||
<string name="retrieving_db_key">Атрыманне ключа базы дадзеных…</string>
|
||||
<string name="waiting_challenge_request">Чаканне запыту выкліку…</string>
|
||||
<string name="waiting_challenge_response">Чаканне адказу на выклік…</string>
|
||||
<string name="database">База дадзеных</string>
|
||||
<string name="template_group_name">Шаблоны</string>
|
||||
<string name="decrypting_db">Расшыфроўка змесціва базы дадзеных…</string>
|
||||
<string name="default_checkbox">Выкарыстоўваць як базу дадзеных па змаўчанні</string>
|
||||
<string name="digits">Лічбы</string>
|
||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft з\'яўляецца <strong>праграмай з адкрытым зыходным кодам</strong> і <strong>без рэкламы</strong>. \nПрадастаўляецца «як ёсць», па ліцэнзіі <strong>GPLv3</strong>, без якіх-небудзь гарантый.</string>
|
||||
<string name="html_about_privacy"><strong>Карыстальніцкія дадзеныя не атрымліваюцца</strong>, гэтая праграма не падключаецца да сервераў, працуе толькі лакальна і цалкам паважае прыватнасць карыстальнікаў.</string>
|
||||
<string name="html_about_contribution">Каб <strong>захаваць нашу свабоду</strong>, <strong>выпраўляць памылкі</strong>, <strong>дадаваць функцыі</strong> і <strong>заўсёды быць актыўнымі</strong>, мы разлічваем на ваш <strong>уклад</strong>.</string>
|
||||
<string name="entry_accessed">Доступ</string>
|
||||
<string name="entry_cancel">Адмена</string>
|
||||
<string name="entry_notes">Заўвагі</string>
|
||||
<string name="entry_confpassword">Пацвердзіць пароль</string>
|
||||
<string name="entry_created">Створаны</string>
|
||||
<string name="entry_expires">Тэрмін дзеяння</string>
|
||||
<string name="expired">Скончыўся</string>
|
||||
<string name="entry_UUID">UUID</string>
|
||||
<string name="entry_history">Гісторыя</string>
|
||||
<string name="entry_attachments">Укладанні</string>
|
||||
<string name="entry_keyfile">Файл ключа</string>
|
||||
<string name="hardware_key">Апаратны ключ</string>
|
||||
<string name="entry_modified">Зменены</string>
|
||||
<string name="searchable">Магчымасць пошуку</string>
|
||||
<string name="inherited">Успадкаваць</string>
|
||||
<string name="auto_type">Аўта-ўвод</string>
|
||||
<string name="auto_type_sequence">Паслядоўнасць аўта-ўводу</string>
|
||||
<string name="entry_not_found">Не ўдалося знайсці дадзеныя запісу.</string>
|
||||
<string name="entry_password">Пароль</string>
|
||||
<string name="tags">Тэгі</string>
|
||||
<string name="custom_data">Карыстальніцкія дадзеныя</string>
|
||||
<string name="save">Захаваць</string>
|
||||
<string name="entry_title">Назва</string>
|
||||
<string name="entry_setup_otp">Наладзіць аднаразовы пароль</string>
|
||||
<string name="otp_type">Тып OTP</string>
|
||||
<string name="otp_secret">Сакрэт</string>
|
||||
<string name="otp_period">Перыяд (секунды)</string>
|
||||
<string name="otp_counter">Лічыльнік</string>
|
||||
<string name="otp_digits">Лічбы</string>
|
||||
<string name="search_filters">Фільтры пошуку</string>
|
||||
<string name="otp_algorithm">Алгарытм</string>
|
||||
<string name="current_group">Цяперашняя група</string>
|
||||
<string name="case_sensitive">З улікам рэгістра</string>
|
||||
<string name="regex">Рэгулярны выраз</string>
|
||||
<string name="debit_credit_card">Дэбетавая / Крэдытная карта</string>
|
||||
<string name="holder">Уладальнік</string>
|
||||
<string name="number">Нумар</string>
|
||||
<string name="card_verification_value">CVV</string>
|
||||
<string name="personal_identification_number">PIN</string>
|
||||
<string name="id_card">Пасведчанне асобы</string>
|
||||
<string name="name">Назва</string>
|
||||
<string name="place_of_issue">Месца выдачы</string>
|
||||
<string name="date_of_issue">Дата выдачы</string>
|
||||
<string name="email">Электронная пошта</string>
|
||||
<string name="email_address">Адрас электроннай пошты</string>
|
||||
<string name="wireless">Wi-Fi</string>
|
||||
<string name="ssid">SSID</string>
|
||||
<string name="type">Тып</string>
|
||||
<string name="cryptocurrency">Крыптавалютны кашалёк</string>
|
||||
<string name="token">Токен</string>
|
||||
<string name="public_key">Адкрыты ключ</string>
|
||||
<string name="private_key">Закрыты ключ</string>
|
||||
<string name="seed">Насенне</string>
|
||||
<string name="account">Рахунак</string>
|
||||
<string name="bank">Банк</string>
|
||||
<string name="bank_name">Назва банка</string>
|
||||
<string name="bank_identifier_code">SWIFT / BIC</string>
|
||||
<string name="international_bank_account_number">IBAN</string>
|
||||
<string name="secure_note">Бяспечная нататка</string>
|
||||
<string name="membership">Членства</string>
|
||||
<string name="standard">Стандартны</string>
|
||||
<string name="template">Шаблон</string>
|
||||
<string name="version">Версія</string>
|
||||
<string name="entry_otp">OTP</string>
|
||||
<string name="entry_url">URL</string>
|
||||
<string name="entry_user_name">Імя карыстальніка</string>
|
||||
<string name="error_arc4">Патокавы шыфр Arcfour не падтрымліваецца.</string>
|
||||
<string name="error_can_not_handle_uri">Не ўдалося апрацаваць гэты URI ў KeePassDX.</string>
|
||||
<string name="error_file_not_create">Не ўдалося стварыць файл.</string>
|
||||
<string name="error_invalid_db">Не ўдалося прачытаць базу дадзеных.</string>
|
||||
<string name="error_invalid_path">Пераканайцеся, што шлях правільны.</string>
|
||||
<string name="error_invalid_OTP">Няправільны сакрэт OTP.</string>
|
||||
<string name="error_no_name">Увядзіце імя.</string>
|
||||
<string name="error_word_reserved">Гэтае слова зарэзервавана і не можа быць выкарыстана.</string>
|
||||
<string name="error_nokeyfile">Выберыце файл ключа.</string>
|
||||
<string name="error_no_hardware_key">Выберыце апаратны ключ.</string>
|
||||
<string name="error_out_of_memory">Не хапае памяці для загрузкі ўсёй базы дадзеных.</string>
|
||||
<string name="error_XML_malformed">XML мае няправільны фармат.</string>
|
||||
<string name="error_load_database">Не ўдалося загрузіць базу дадзеных.</string>
|
||||
<string name="error_load_database_KDF_memory">Не ўдалося загрузіць ключ. Паспрабуйце знізіць Выкарыстанне памяці KDF.</string>
|
||||
<string name="error_pass_gen_type">Павінен быць абраны хаця б адзін тып генерацыі пароляў.</string>
|
||||
<string name="error_disallow_no_credentials">Павінен быць усталяваны хаця б адзін набор уліковых дадзеных.</string>
|
||||
<string name="error_pass_match">Паролі не супадаюць.</string>
|
||||
<string name="error_rounds_too_large">Колькасць цыклаў пераўтварэння занадта высокая. Устаноўка 2147483648.</string>
|
||||
<string name="error_string_key">Кожны радок павінен мець назву поля.</string>
|
||||
<string name="error_label_exists">Гэтая метка ўжо існуе.</string>
|
||||
<string name="error_wrong_length">Увядзіце станоўчае цэлае лік у полі Даўжыня.</string>
|
||||
<string name="error_autofill_enable_service">Не ўдалося ўключыць службу аўтазапаўнення.</string>
|
||||
<string name="error_move_group_here">Вы не можаце перамясціць групу сюды.</string>
|
||||
<string name="error_move_entry_here">Вы не можаце перамясціць запіс сюды.</string>
|
||||
<string name="error_copy_entry_here">Вы не можаце скапіяваць запіс сюды.</string>
|
||||
<string name="error_copy_group_here">Вы не можаце скапіяваць групу сюды.</string>
|
||||
<string name="error_create_database">Немагчыма стварыць файл базы дадзеных.</string>
|
||||
<string name="error_create_database_file">Немагчыма стварыць базу дадзеных з гэтым паролем і файлам ключа.</string>
|
||||
<string name="error_save_database">Не ўдалося захаваць базу дадзеных.</string>
|
||||
<string name="error_otp_secret_key">Сакрэтны ключ павінен быць у фармаце Base32.</string>
|
||||
<string name="error_otp_secret_length">Даўжыня сакрэтнага ключа павінна быць не менш за %1$d сімвалаў.</string>
|
||||
<string name="error_otp_counter">Лічыльнік павінен быць паміж %1$d і %2$d.</string>
|
||||
<string name="error_otp_period">Перыяд павінен быць ад %1$d да %2$d секунд.</string>
|
||||
<string name="error_otp_digits">Токен павінен утрымоўваць ад %1$d да %2$d лічбаў.</string>
|
||||
<string name="error_otp_type">Існуючы тып OTP не распазнаецца гэтай формай, яго праверка можа больш не генераваць токен правільна.</string>
|
||||
<string name="error_string_type">Гэты тэкст не супадае з запытаным элементам.</string>
|
||||
<string name="error_registration_read_only">Захаванне новага элемента недапушчальна ў базе дадзеных, адкрытай толькі для чытання.</string>
|
||||
<string name="error_field_name_already_exists">Назва поля ўжо існуе.</string>
|
||||
<string name="error_database_uri_null">Немагчыма атрымаць URI базы дадзеных.</string>
|
||||
<string name="error_rebuild_list">Не ўдалося правільна аднавіць спіс.</string>
|
||||
<string name="error_file_to_big">Файл, які вы спрабуеце загрузіць, занадта вялікі.</string>
|
||||
<string name="error_upload_file">Адбылася памылка пры загрузцы дадзеных файла.</string>
|
||||
<string name="error_duplicate_file">Дадзеныя файла ўжо існуюць.</string>
|
||||
<string name="error_remove_file">Адбылася памылка пры выдаленні дадзеных файла.</string>
|
||||
<string name="error_start_database_action">Адбылася памылка пры выкананні дзеянняў з базай дадзеных.</string>
|
||||
<string name="error_challenge_already_requested">Выклік ужо запытаны.</string>
|
||||
<string name="error_response_already_provided">Адказнае дзеянне ўжо выканана.</string>
|
||||
<string name="error_no_response_from_challenge">Немагчыма атрымаць адказ на выклік.</string>
|
||||
<string name="error_cancel_by_user">Скасавана карыстальнікам.</string>
|
||||
<string name="error_driver_required">Патрабуецца драйвер для %1$s.</string>
|
||||
<string name="error_unable_merge_database_kdb">Немагчыма аб\'яднаць з файламі базы дадзеных kdb.</string>
|
||||
<string name="error_location_unknown">Месцазнаходжанне базы дадзеных невядома, дзеянне з базай дадзеных не можа быць выканана.</string>
|
||||
<string name="error_hardware_key_unsupported">Апаратны ключ не падтрымліваецца.</string>
|
||||
<string name="error_empty_key">Ключ не можа быць пустым.</string>
|
||||
<string name="field_name">Назва поля</string>
|
||||
<string name="field_value">Значэнне поля</string>
|
||||
<string name="file_not_found_content">Не ўдалося знайсці файл. Паспрабуйце зноў адкрыць яго з файлавага мэнэджара.</string>
|
||||
<string name="corrupted_file">Пашкоджаны файл.</string>
|
||||
<string name="file_browser">Файлавы мэнэджар</string>
|
||||
<string name="generate_password">Стварыць пароль</string>
|
||||
<string name="generate_keyfile">Стварыць файл ключа</string>
|
||||
<string name="hint_conf_pass">Пацвердзіць пароль</string>
|
||||
<string name="hint_generated_password">Згенераваны пароль</string>
|
||||
<string name="hint_group_name">Назва групы</string>
|
||||
<string name="hint_icon_name">Назва значка</string>
|
||||
<string name="hint_keyfile">Файл ключа</string>
|
||||
<string name="hint_length">Даўжыня</string>
|
||||
<string name="hint_pass">Пароль</string>
|
||||
<string name="password">Пароль</string>
|
||||
<string name="passphrase">Парольная фраза</string>
|
||||
<string name="invalid_credentials">Не ўдалося прачытаць уліковыя дадзеныя.</string>
|
||||
<string name="invalid_algorithm">Няправільны алгарытм.</string>
|
||||
<string name="invalid_db_same_uuid">%1$s з такім жа UUID %2$s ужо існуе.</string>
|
||||
<string name="invalid_db_sig">Не ўдалося распазнаць фармат базы дадзеных.</string>
|
||||
<string name="keyfile_is_empty">Файл ключа пусты.</string>
|
||||
<string name="length">Даўжыня</string>
|
||||
<string name="nodes">Вузлы</string>
|
||||
<string name="hide_password_title">Схаваць паролі</string>
|
||||
<string name="hide_password_summary">Маскіраваць паролі (***) па змаўчанні</string>
|
||||
<string name="colorize_password_title">Размаляваць паролі</string>
|
||||
<string name="colorize_password_summary">Размаляваць сімвалы пароля па тыпу</string>
|
||||
<string name="list_entries_show_username_title">Паказаць імёны карыстальнікаў</string>
|
||||
<string name="list_entries_show_username_summary">Адлюстроўвае імёны карыстальнікаў у спісах запісаў</string>
|
||||
<string name="list_groups_show_number_entries_title">Паказаць колькасць запісаў</string>
|
||||
<string name="list_groups_show_number_entries_summary">Адлюстроўвае колькасць запісаў у групе</string>
|
||||
<string name="recursive_number_entries_title">Рэкурсіўная колькасць запісаў</string>
|
||||
<string name="recursive_number_entries_summary">Рэкурсіўна падлічвае колькасць запісаў у групе</string>
|
||||
<string name="show_otp_token_title">Паказаць токен OTP</string>
|
||||
<string name="show_otp_token_summary">Адлюстроўвае токены OTP у спісе запісаў</string>
|
||||
<string name="show_uuid_title">Паказаць UUID</string>
|
||||
<string name="show_uuid_summary">Адлюстроўвае UUID, прывязаны да запісу або групы</string>
|
||||
<string name="list_size_title">Памер элементаў спісу</string>
|
||||
<string name="list_size_summary">Памер тэксту ў спісе элементаў</string>
|
||||
<string name="creating_database">Стварэнне базы дадзеных…</string>
|
||||
<string name="loading_database">Загрузка базы дадзеных…</string>
|
||||
<string name="lowercase">Ніжні рэгістр</string>
|
||||
<string name="about">Аб праграме</string>
|
||||
<string name="menu_change_key_settings">Змяніць галоўны ключ</string>
|
||||
<string name="copy_field">Копія %1$s</string>
|
||||
<string name="settings">Налады</string>
|
||||
<string name="menu_app_settings">Налады праграмы</string>
|
||||
<string name="menu_app_settings_summary">Пошук, блакаванне, гісторыя, уласцівасці</string>
|
||||
<string name="menu_form_filling_settings">Запаўненне формы</string>
|
||||
<string name="menu_form_filling_settings_summary">Клавіятура, аўтазапаўненне, буфер абмену</string>
|
||||
<string name="menu_device_unlock_settings">Разблакіроўка прылады</string>
|
||||
<string name="menu_device_unlock_settings_summary">Біяметрыя, уліковыя дадзеныя прылады</string>
|
||||
<string name="menu_database_settings">Налады базы дадзеных</string>
|
||||
<string name="menu_database_settings_summary">Метададзеныя, смеццевая скрыня, шаблоны, гісторыя</string>
|
||||
<string name="menu_security_settings">Налады бяспекі</string>
|
||||
<string name="menu_security_settings_summary">Шыфраванне, функцыя вывядзення ключа</string>
|
||||
<string name="menu_master_key_settings">Налады галоўнага ключа</string>
|
||||
<string name="master_key_settings_summary">Змена, аднаўленне</string>
|
||||
<string name="menu_donate">Ахвяраваць</string>
|
||||
<string name="menu_edit">Рэдагаваць</string>
|
||||
<string name="menu_copy">Капіяваць</string>
|
||||
<string name="menu_move">Перамясціць</string>
|
||||
<string name="menu_paste">Уставіць</string>
|
||||
<string name="menu_delete">Выдаліць</string>
|
||||
<string name="menu_cancel">Адмена</string>
|
||||
<string name="menu_hide_password">Схаваць пароль</string>
|
||||
<string name="menu_lock">Заблакаваць базу дадзеных</string>
|
||||
<string name="menu_save_database">Захаваць дадзеныя</string>
|
||||
<string name="menu_merge_database">Аб\'яднаць дадзеныя</string>
|
||||
<string name="menu_reload_database">Перазагрузіць дадзеныя</string>
|
||||
<string name="menu_merge_from">Аб\'яднаць з…</string>
|
||||
<string name="menu_save_copy_to">Захаваць копію ў…</string>
|
||||
<string name="menu_open">Адкрыць</string>
|
||||
<string name="menu_search">Пошук</string>
|
||||
<string name="menu_showpass">Паказаць пароль</string>
|
||||
<string name="menu_keystore_remove_key">Выдаліць ключ разблакіроўкі прылады</string>
|
||||
<string name="menu_url">Перайсці па URL</string>
|
||||
<string name="menu_file_selection_read_only">Абаронены ад запісу</string>
|
||||
<string name="menu_open_file_read_and_write">З магчымасцю змены</string>
|
||||
<string name="menu_empty_recycle_bin">Ачысціць смеццевую скрыню</string>
|
||||
<string name="menu_restore_entry_history">Аднавіць гісторыю</string>
|
||||
<string name="menu_delete_entry_history">Выдаліць гісторыю</string>
|
||||
<string name="menu_external_icon">Знешні значок</string>
|
||||
<string name="minus">Мінус</string>
|
||||
<string name="never">Ніколі</string>
|
||||
<string name="no_results">Няма вынікаў пошуку</string>
|
||||
<string name="no_url_handler">Усталюйце вэб-браўзер, каб адкрыць гэты URL.</string>
|
||||
<string name="select_database_file">Адкрыць існуючае сховішча</string>
|
||||
<string name="create_keepass_file">Стварыць новае сховішча</string>
|
||||
<string name="auto_focus_search_title">Хуткі пошук</string>
|
||||
<string name="auto_focus_search_summary">Запытаць пошук пры адкрыцці базы дадзеных</string>
|
||||
<string name="subdomain_search_title">Пошук па паддаменах</string>
|
||||
<string name="subdomain_search_summary">Пошук вэб-даменаў з абмежаваннямі паддаменаў</string>
|
||||
<string name="progress_create">Стварэнне новай базы дадзеных…</string>
|
||||
<string name="progress_title">Працую…</string>
|
||||
<string name="protection">Абарона</string>
|
||||
<string name="read_only">Абаронены ад запісу</string>
|
||||
<string name="read_only_warning">У залежнасці ад вашага файлавага мэнэджара, KeePassDX можа не мець дазволу на запіс у сховішча.</string>
|
||||
<string name="contains_duplicate_uuid">База дадзеных змяшчае дублікаты UUID.</string>
|
||||
<string name="contains_duplicate_uuid_procedure">Вырашыць праблему шляхам генерацыі новых UUID для дублікатаў, каб працягнуць?</string>
|
||||
<string name="search_mode">Рэжым пошуку</string>
|
||||
<string name="save_mode">Рэжым захавання</string>
|
||||
<string name="selection_mode">Рэжым выбару</string>
|
||||
<string name="registration_mode">Рэжым рэгістрацыі</string>
|
||||
<string name="remember_database_locations_title">Запамінаць размяшчэнне баз дадзеных</string>
|
||||
<string name="remember_database_locations_summary">Адсочвае, дзе захоўваюцца базы дадзеных</string>
|
||||
<string name="remember_keyfile_locations_title">Запамінаць размяшчэнне файлаў ключоў</string>
|
||||
<string name="remember_keyfile_locations_summary">Адсочвае, дзе захоўваюцца файлы ключоў</string>
|
||||
<string name="remember_hardware_key_title">Запамінаць апаратныя ключы</string>
|
||||
<string name="remember_hardware_key_summary">Адсочвае выкарыстаныя апаратныя ключы</string>
|
||||
<string name="show_recent_files_title">Паказваць апошнія файлы</string>
|
||||
<string name="show_recent_files_summary">Паказваць размяшчэнне нядаўніх баз дадзеных</string>
|
||||
<string name="hide_broken_locations_title">Схаваць зламаныя спасылкі на базы дадзеных</string>
|
||||
<string name="hide_broken_locations_summary">Схаваць зламаныя спасылкі ў спісе нядаўніх баз дадзеных</string>
|
||||
<string name="import_app_properties_title">Імпартаваць налады праграмы</string>
|
||||
<string name="import_app_properties_summary">Выберыце файл для імпарту налад праграмы</string>
|
||||
<string name="export_app_properties_title">Экспартаваць налады праграмы</string>
|
||||
<string name="export_app_properties_summary">Стварыць файл для экспарту налад праграмы</string>
|
||||
<string name="description_app_properties">Уласцівасці KeePassDX для кіравання наладамі праграмы</string>
|
||||
<string name="success_import_app_properties">Налады праграмы імпартаваны</string>
|
||||
<string name="error_import_app_properties">Памылка падчас імпарту налад праграмы.</string>
|
||||
<string name="success_export_app_properties">Налады праграмы экспартаваны</string>
|
||||
<string name="error_export_app_properties">Памылка падчас экспарту налад праграмы.</string>
|
||||
<string name="root">Корань</string>
|
||||
<string name="encryption_explanation">Алгарытм шыфравання базы дадзеных, які выкарыстоўваецца для ўсіх дадзеных</string>
|
||||
<string name="kdf_explanation">Каб стварыць ключ для алгарытму шыфравання, галоўны ключ пераўтворыцца з дапамогай выпадкова саленай функцыі вывядзення ключа.</string>
|
||||
<string name="rounds">Цыклы пераўтварэння</string>
|
||||
<string name="rounds_explanation">Дадатковыя цыклы шыфравання забяспечваюць больш высокую абарону ад нападаў грубай сілы, але могуць моцна запаволіць загрузку і захаванне.</string>
|
||||
<string name="memory_usage">Выкарыстанне памяці</string>
|
||||
<string name="memory_usage_explanation">Аб\'ём памяці, які будзе выкарыстоўвацца функцыяй вывядзення ключа.</string>
|
||||
<string name="parallelism">Паралелізм</string>
|
||||
<string name="parallelism_explanation">Ступень паралелізму (г.зн. колькасць патокаў), выкарыстоўваных функцыяй вывядзення ключа.</string>
|
||||
<string name="saving_database">Захаванне базы дадзеных…</string>
|
||||
<string name="command_execution">Выкананне каманды…</string>
|
||||
<string name="do_not_kill_app">Не зачыняйце праграму…</string>
|
||||
<string name="space">Прабел</string>
|
||||
<string name="filter">Фільтр</string>
|
||||
<string name="sort_menu">Сартаваць</string>
|
||||
<string name="sort_ascending">Спачатку ніжэйшыя ↓</string>
|
||||
<string name="sort_groups_before">Групы спачатку</string>
|
||||
<string name="sort_recycle_bin_bottom">Смеццевая скрыня ўнізе</string>
|
||||
<string name="sort_db">Натуральны парадак</string>
|
||||
<string name="sort_title">Назва</string>
|
||||
<string name="sort_username">Імя карыстальніка</string>
|
||||
<string name="sort_creation_time">Стварэнне</string>
|
||||
<string name="sort_last_modify_time">Змена</string>
|
||||
<string name="sort_last_access_time">Доступ</string>
|
||||
<string name="special">Спецыяльныя</string>
|
||||
<string name="search">Пошук</string>
|
||||
<string name="underline">Падкрэсліванне</string>
|
||||
<string name="unsupported_db_version">Непадтрымліваемая версія базы дадзеных.</string>
|
||||
<string name="uppercase">ВЕРХНІ РЭГІСТР</string>
|
||||
<string name="warning">Папярэджанне</string>
|
||||
<string name="warning_password_encoding">Пазбягайце сімвалаў пароляў па-за межамі фармату кадоўкі тэксту ў файле базы дадзеных (нераспазнаныя сімвалы пераўтвараюцца ў адну і тую ж літару).</string>
|
||||
<string name="warning_database_read_only">Дайце дазвол на запіс у файл, каб захаваць змены ў базе дадзеных</string>
|
||||
<string name="warning_database_link_revoked">Доступ да файла скасаваны файлавым мэнэджарам</string>
|
||||
<string name="warning_database_already_opened">База дадзеных ужо адкрыта, спачатку зачыніце яе, каб адкрыць новую</string>
|
||||
<string name="warning_empty_password">Працягнуць без абароны блакаваннем паролем?</string>
|
||||
<string name="warning_no_encryption_key">Працягнуць без ключа шыфравання?</string>
|
||||
<string name="warning_permanently_delete_nodes">Беззваротна выдаліць выбраныя вузлы?</string>
|
||||
<string name="warning_empty_recycle_bin">Беззваротна выдаліць усе вузлы са смеццевай скрыні?</string>
|
||||
<string name="warning_file_too_big">База дадзеных KeePass павінна ўтрымліваць толькі невялікія службовыя файлы (напрыклад, файлы PGP-ключа).\n\nВаша база дадзеных можа стаць вельмі вялікай і знізіць прадукцыйнасць пасля гэтай загрузкі.</string>
|
||||
<string name="warning_replace_file">Загрузка гэтага файла заменіць існуючы.</string>
|
||||
<string name="warning_sure_add_file">Усё роўна дадаць файл?</string>
|
||||
<string name="warning_remove_unlinked_attachment">Выдаленне незвязаных дадзеных можа паменшыць памер вашай базы дадзеных, але таксама можа выдаліць дадзеныя, якія выкарыстоўваюцца для плагінаў KeePass.</string>
|
||||
<string name="warning_sure_remove_data">Усё роўна выдаліць гэтыя дадзеныя?</string>
|
||||
<string name="warning_empty_keyfile">Не рэкамендуецца дадаваць пусты файл ключа.</string>
|
||||
<string name="warning_large_keyfile">Не рэкамендуецца дадаваць вялікі файл ключа, гэта можа перашкодзіць адкрыццю базы дадзеных.</string>
|
||||
<string name="warning_empty_keyfile_explanation">Змесціва файла ключа ніколі не павінна змяняцца, і ў лепшым выпадку, павінна ўтрымліваць выпадкова згенераваныя дадзеныя.</string>
|
||||
<string name="warning_database_info_changed">Інфармацыя, якая змяшчаецца ў файле базы дадзеных, была зменена па-за межамі праграмы.</string>
|
||||
<string name="warning_database_info_changed_options">Аб\'яднаць дадзеныя, захаваць базу дадзеных з перазапісам знешніх мадыфікацый або перазагрузіць яе з апошнімі зменамі.</string>
|
||||
<string name="warning_database_info_changed_options_read_only">Перазагрузіць базу дадзеных з апошнімі зменамі.</string>
|
||||
<string name="warning_database_info_reloaded">Перазагрузка базы дадзеных выдаліць лакальна змененыя дадзеныя.</string>
|
||||
<string name="warning_database_revoked">Доступ да файла скасаваны файлавым мэнэджарам, зачыніце базу дадзеных і зноў адкрыйце яе з яе месцазнаходжання.</string>
|
||||
<string name="warning_exact_alarm">Вы не дазволілі праграме выкарыстоўваць дакладны таймер. У выніку функцыі, якія патрабуюць таймера, не будуць выкананы з дакладным часам.</string>
|
||||
<string name="warning_keyfile_integrity">Цэласнасць файла не гарантуецца, бо Android можа змяняць яго дадзеныя на хаду. Зменіце пашырэнне файла на .bin для правільнай цэласнасці.</string>
|
||||
<string name="warning_database_notification_permission">Дазвол на апавяшчэнні дазваляе адлюстроўваць статус базы дадзеных і блакаваць яе з дапамогай лёгкадаступнай кнопкі.\n\nКалі вы не актывуеце гэты дазвол, база дадзеных, адкрытая ў фонавым рэжыме, не будзе бачная, калі на пярэднім плане знаходзіцца іншая праграма.</string>
|
||||
<string name="warning_copy_permission">Дазвол на апавяшчэнні неабходны для выкарыстання функцыі апавяшчэння аб буферы абмену.</string>
|
||||
<string name="later">Пазней</string>
|
||||
<string name="ask">Спытаць</string>
|
||||
<string name="merge_success">Аб\'яднанне паспяхова завершана</string>
|
||||
<string name="permission">Дазвол</string>
|
||||
<string name="version_label">Версія %1$s</string>
|
||||
<string name="build_label">Зборка %1$s</string>
|
||||
<string name="configure">Наладзіць</string>
|
||||
<string name="configure_biometric">Біяметрычныя або ўліковыя дадзеныя прылады не зарэгістраваны.</string>
|
||||
<string name="biometric_security_update_required">Патрабуецца абнаўленне біяметрычнай бяспекі.</string>
|
||||
<string name="keystore_not_accessible">Сховішча ключоў неналежным чынам ініцыялізавана.</string>
|
||||
<string name="unlock_and_link_biometric">Спасылка на разблакіроўку прылады</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Спасылка на разблакіроўку прылады</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Вам усё роўна трэба памятаць асноўныя ўліковыя дадзеныя сховішча, калі вы выкарыстоўваеце распазнаванне разблакіроўкі прылады.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Распазнаванне разблакіроўкі прылады</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Выняць уліковыя дадзеныя базы дадзеных з дапамогай дадзеных разблакіроўкі прылады</string>
|
||||
<string name="encrypted_value_stored">Зашыфраваны пароль захаваны</string>
|
||||
<string name="device_unlock_invalid_key">Немагчыма прачытаць ключ разблакіроўкі прылады. Выдаліце яго і паўтарыце працэдуру распазнавання разблакіроўкі.</string>
|
||||
<string name="device_unlock_not_recognized">Не ўдалося распазнаць адбітак разблакіроўкі прылады</string>
|
||||
<string name="unavailable">Недаступна</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Немагчыма ініцыялізаваць запыт разблакіроўкі прылады.</string>
|
||||
<string name="credential_before_click_device_unlock_button">Увядзіце пароль, а затым націсніце гэтую кнопку.</string>
|
||||
<string name="database_history">Гісторыя</string>
|
||||
<string name="properties">Уласцівасці</string>
|
||||
<string name="menu_appearance_settings">Знешні выгляд</string>
|
||||
<string name="menu_appearance_settings_summary">Тэмы, колеры, атрыбуты</string>
|
||||
<string name="biometric">Біяметрычны</string>
|
||||
<string name="device_credential">Уліковыя дадзеныя прылады</string>
|
||||
<string name="general">Агульнае</string>
|
||||
<string name="autofill">Аўтазапаўненне</string>
|
||||
<string name="autofill_service_name">Аўтазапаўненне формы KeePassDX</string>
|
||||
<string name="autofill_sign_in_prompt">Увайсці з дапамогай KeePassDX</string>
|
||||
<string name="autofill_explanation_summary">Уключыце аўтазапаўненне, каб хутка запаўняць формы ў іншых праграмах</string>
|
||||
<string name="autofill_select_entry">Выбраць запіс…</string>
|
||||
<string name="set_autofill_service_title">Усталяваць службу аўтазапаўнення па змаўчанні</string>
|
||||
<string name="autofill_preference_title">Налады аўтазапаўнення</string>
|
||||
<string name="password_size_title">Памер згенераванага пароля</string>
|
||||
<string name="password_size_summary">Усталёўвае памер згенераваных пароляў па змаўчанні</string>
|
||||
<string name="list_password_generator_options_title">Сімвалы пароля</string>
|
||||
<string name="list_password_generator_options_summary">Усталяваць дазволеныя сімвалы генератара пароляў</string>
|
||||
<string name="database_opened">База дадзеных адкрыта</string>
|
||||
<string name="clipboard">Буфер абмену</string>
|
||||
<string name="clipboard_explanation_summary">Капіюйце палі запісу, выкарыстоўваючы буфер абмену вашай прылады</string>
|
||||
<string name="clipboard_notifications_title">Апавяшчэнні буфера абмену</string>
|
||||
<string name="clipboard_notifications_summary">Паказваць апавяшчэнні буфера абмену, каб капіяваць палі пры праглядзе запісу</string>
|
||||
<string name="clipboard_warning">Калі аўтаматычнае выдаленне з буфера абмену не ўдаецца, выдаліце яго гісторыю ўручную.</string>
|
||||
<string name="lock">Блакаванне</string>
|
||||
<string name="lock_database_screen_off_title">Блакаванне экрана</string>
|
||||
<string name="lock_database_screen_off_summary">Блакаваць базу дадзеных праз некалькі секунд пасля выключэння экрана</string>
|
||||
<string name="lock_database_back_root_title">Націснуць «Назад», каб заблакаваць</string>
|
||||
<string name="lock_database_back_root_summary">Блакаваць базу дадзеных, калі карыстальнік націскае кнопку «Назад» на галоўным экране</string>
|
||||
<string name="lock_database_show_button_title">Паказаць кнопку блакавання</string>
|
||||
<string name="lock_database_show_button_summary">Адлюстроўвае кнопку блакавання ў карыстальніцкім інтэрфейсе</string>
|
||||
<string name="content">Змесціва</string>
|
||||
<string name="unlock">Разблакіраваць</string>
|
||||
<string name="device_unlock">Разблакіроўка прылады</string>
|
||||
<string name="device_unlock_tap_delete">Націсніце, каб выдаліць ключы разблакіроўкі прылады</string>
|
||||
<string name="device_unlock_explanation_summary">Выкарыстоўвайце разблакіроўку прылады, каб лягчэй адкрываць базу дадзеных</string>
|
||||
<string name="biometric_unlock_enable_title">Біяметрычная разблакіроўка</string>
|
||||
<string name="biometric_unlock_enable_summary">Дазваляе сканаваць біяметрыю для адкрыцця базы дадзеных</string>
|
||||
<string name="device_credential_unlock_enable_title">Разблакіроўка з дапамогай уліковых дадзеных прылады</string>
|
||||
<string name="device_credential_unlock_enable_summary">Дазваляе выкарыстоўваць уліковыя дадзеныя прылады для адкрыцця базы дадзеных</string>
|
||||
<string name="biometric_auto_open_prompt_title">Запыт на аўтаматычнае адкрыццё</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Аўтаматычна запытваць разблакіроўку прылады, калі база дадзеных наладжана на яе выкарыстанне</string>
|
||||
<string name="temp_device_unlock_enable_title">Часовая разблакіроўка прылады</string>
|
||||
<string name="temp_device_unlock_enable_summary">Не захоўваць зашыфраванае змесціва для выкарыстання разблакіроўкі прылады</string>
|
||||
<string name="temp_device_unlock_timeout_title">Тэрмін дзеяння разблакіроўкі прылады</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Працягласць выкарыстання разблакіроўкі прылады перад выдаленнем яе змесціва</string>
|
||||
<string name="device_unlock_timeout">Тайм-аўт разблакіроўкі прылады</string>
|
||||
<string name="biometric_delete_all_key_title">Выдаліць ключы шыфравання</string>
|
||||
<string name="biometric_delete_all_key_summary">Выдаліць усе ключы шыфравання, звязаныя з распазнаваннем разблакіроўкі прылады</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Выдаліць усе ключы шыфравання, звязаныя з распазнаваннем разблакіроўкі прылады?</string>
|
||||
<string name="device_unlock_keystore_warning">Гэтая функцыя будзе захоўваць зашыфраваныя дадзеныя ўліковых дадзеных у бяспечным Keystore вашай прылады.\n\nУ залежнасці ад рэалізацыі натыўнага API аперацыйнай сістэмы, яна можа быць не цалкам функцыянальнай.\n\nПраверце сумяшчальнасць і бяспеку Keystore з вытворцам вашай прылады і стваральнікам ПЗ, якое вы выкарыстоўваеце.</string>
|
||||
<string name="unavailable_feature_text">Не ўдалося запусціць гэтую функцыю.</string>
|
||||
<string name="unavailable_feature_version">Прылада працуе на Android %1$s, але патрабуецца %2$s або больш позняя версія.</string>
|
||||
<string name="unavailable_feature_hardware">Не ўдалося знайсці адпаведнае апаратнае забеспячэнне.</string>
|
||||
<string name="file_name">Імя файла</string>
|
||||
<string name="path">Шлях</string>
|
||||
<string name="assign_master_key">Прызначыць галоўны ключ</string>
|
||||
<string name="data">Дадзеныя</string>
|
||||
<string name="database_data_compression_title">Сцісканне дадзеных</string>
|
||||
<string name="database_data_compression_summary">Сцісканне дадзеных памяншае памер базы дадзеных</string>
|
||||
<string name="database_data_remove_unlinked_attachments_title">Выдаліць незвязаныя дадзеныя</string>
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Выдаляе ўкладанні, якія змяшчаюцца ў базе дадзеных, але не звязаны з запісам</string>
|
||||
<string name="recycle_bin_title">Выкарыстанне смеццевай скрыні</string>
|
||||
<string name="recycle_bin_summary">Перамяшчае групы і запісы ў групу Смеццевая скрыня перад выдаленнем</string>
|
||||
<string name="recycle_bin_group_title">Група смеццевай скрыні</string>
|
||||
<string name="templates_group_enable_title">Выкарыстанне шаблонаў</string>
|
||||
<string name="templates_group_enable_summary">Выкарыстоўвайце дынамічныя шаблоны для запаўнення палёў запісу</string>
|
||||
<string name="templates_group_uuid_title">Група шаблонаў</string>
|
||||
<string name="max_history_items_title">Максімальная колькасць</string>
|
||||
<string name="max_history_items_summary">Абмежаваць колькасць элементаў гісторыі на запіс</string>
|
||||
<string name="max_history_size_title">Максімальны памер</string>
|
||||
<string name="max_history_size_summary">Абмежаваць памер гісторыі на запіс</string>
|
||||
<string name="settings_database_recommend_changing_master_key_title">Рэкамендаваць абнаўленне</string>
|
||||
<string name="settings_database_recommend_changing_master_key_summary">Рэкамендаваць змену галоўнага ключа (дні)</string>
|
||||
<string name="settings_database_force_changing_master_key_title">Прымусовае абнаўленне</string>
|
||||
<string name="settings_database_force_changing_master_key_summary">Патрабаваць змены галоўнага ключа (дні)</string>
|
||||
<string name="settings_database_force_changing_master_key_next_time_title">Прымусовае абнаўленне наступным разам</string>
|
||||
<string name="settings_database_force_changing_master_key_next_time_summary">Патрабаваць змены галоўнага ключа ў наступны раз (адзін раз)</string>
|
||||
<string name="monospace_font_fields_enable_title">Шрыфт поля</string>
|
||||
<string name="monospace_font_fields_enable_summary">Змяніць шрыфт, які выкарыстоўваецца ў палях, для лепшай бачнасці сімвалаў</string>
|
||||
<string name="allow_copy_password_title">Давер буфера абмену</string>
|
||||
<string name="allow_copy_password_summary">Дазволіць капіяванне пароля запісу і абароненых палёў у буфер абмену</string>
|
||||
<string name="allow_copy_password_warning">Папярэджанне: Буфер абмену выкарыстоўваецца ўсімі праграмамі. Калі капіююцца канфідэнцыйныя дадзеныя, іншае праграмнае забеспячэнне можа аднавіць іх.</string>
|
||||
<string name="enable">Уключыць</string>
|
||||
<string name="disable">Адключыць</string>
|
||||
<string name="notification">Апавяшчэнне</string>
|
||||
<string name="clear_clipboard_notification_title">Ачысціць пры закрыцці</string>
|
||||
<string name="clear_clipboard_notification_summary">Блакаваць базу дадзеных пасля заканчэння тэрміну дзеяння буфера абмену або закрыцця апавяшчэння пасля пачатку выкарыстання</string>
|
||||
<string name="database_name_title">Назва базы дадзеных</string>
|
||||
<string name="database_description_title">Апісанне базы дадзеных</string>
|
||||
<string name="database_default_username_title">Імя карыстальніка па змаўчанні</string>
|
||||
<string name="database_custom_color_title">Карыстальніцкі колер базы дадзеных</string>
|
||||
<string name="database_version_title">Версія базы дадзеных</string>
|
||||
<string name="text_appearance">Тэкст</string>
|
||||
<string name="application_appearance">Інтэрфейс</string>
|
||||
<string name="other">Іншае</string>
|
||||
<string name="compression">Сцісканне</string>
|
||||
<string name="compression_none">Няма</string>
|
||||
<string name="compression_gzip">Gzip</string>
|
||||
<string name="recycle_bin">Смеццевая скрыня</string>
|
||||
<string name="templates">Шаблоны</string>
|
||||
<string name="keyboard">Клавіятура</string>
|
||||
<string name="magic_keyboard_title">Магічная клавіятура</string>
|
||||
<string name="magic_keyboard_explanation_summary">Актываваць карыстальніцкую клавіятуру, якая запаўняе вашыя паролі і ўсе палі ідэнтычнасці</string>
|
||||
<string name="device_keyboard_setting_title">Налады клавіятуры прылады</string>
|
||||
<string name="keyboard_name">Магічная клавіятура</string>
|
||||
<string name="keyboard_label">Магічная клавіятура (KeePassDX)</string>
|
||||
<string name="keyboard_setting_label">Налады магічнай клавіятуры</string>
|
||||
<string name="keyboard_entry_category">Запіс</string>
|
||||
<string name="keyboard_selection_entry_title">Выбар запісу</string>
|
||||
<string name="keyboard_selection_entry_summary">Пры праглядзе запісу ў KeePassDX, запоўніце магічную клавіятуру гэтым запісам</string>
|
||||
<string name="keyboard_notification_entry_title">Інфармацыя аб апавяшчэннях</string>
|
||||
<string name="keyboard_notification_entry_summary">Паказваць апавяшчэнне, калі запіс даступны</string>
|
||||
<string name="keyboard_save_search_info_title">Захаваць агульную інфармацыю</string>
|
||||
<string name="keyboard_save_search_info_summary">Паспрабаваць захаваць агульную інфармацыю пры ручным выбары запісу для палягчэння будучага выкарыстання</string>
|
||||
<string name="keyboard_notification_entry_clear_close_title">Ачысціць пры закрыцці</string>
|
||||
<string name="keyboard_notification_entry_clear_close_summary">Зачыніць базу дадзеных пры закрыцці апавяшчэння</string>
|
||||
<string name="keyboard_entry_timeout_title">Тайм-аўт</string>
|
||||
<string name="keyboard_entry_timeout_summary">Тайм-аўт для ачысткі запісу клавіятуры</string>
|
||||
<string name="keyboard_notification_entry_content_title_text">Запіс</string>
|
||||
<string name="keyboard_notification_entry_content_title">%1$s даступны на магічнай клавіятуры</string>
|
||||
<string name="keyboard_notification_entry_content_text">%1$s</string>
|
||||
<string name="keyboard_appearance_category">Знешні выгляд</string>
|
||||
<string name="keyboard_theme_title">Тэма клавіятуры</string>
|
||||
<string name="keyboard_keys_category">Клавішы</string>
|
||||
<string name="keyboard_auto_go_action_title">Аўтаматычнае дзеянне клавішы</string>
|
||||
<string name="keyboard_auto_go_action_summary">Дзеянне клавішы Go пасля націску на клавішу Поле</string>
|
||||
<string name="keyboard_key_vibrate_title">Вібрацыйныя націскі клавіш</string>
|
||||
<string name="keyboard_key_sound_title">Гукавыя націскі клавіш</string>
|
||||
<string name="keyboard_change">Змяніць клавіятуру</string>
|
||||
<string name="keyboard_previous_database_credentials_title">Экран уліковых дадзеных базы дадзеных</string>
|
||||
<string name="keyboard_previous_database_credentials_summary">Аўтаматычна пераключацца назад на папярэднюю клавіятуру на экране ўліковых дадзеных базы дадзеных</string>
|
||||
<string name="keyboard_previous_search_title">Экран пошуку</string>
|
||||
<string name="keyboard_previous_search_summary">Аўтаматычна пераключацца назад на папярэднюю клавіятуру на экране пошуку</string>
|
||||
<string name="keyboard_previous_fill_in_title">Пераключыцца назад</string>
|
||||
<string name="keyboard_previous_fill_in_summary">Аўтаматычна пераключацца назад на папярэднюю клавіятуру пасля выканання Аўтаматычнага дзеяння клавішы</string>
|
||||
<string name="keyboard_previous_lock_title">Заблакаваць базу дадзеных</string>
|
||||
<string name="keyboard_previous_lock_summary">Аўтаматычна пераключацца назад на папярэднюю клавіятуру пасля блакавання базы дадзеных</string>
|
||||
<string name="custom_fields">Карыстальніцкія палі</string>
|
||||
<string name="back_to_previous_keyboard">Вярнуцца да папярэдняй клавіятуры</string>
|
||||
<string name="select_entry">Выбраць запіс</string>
|
||||
<string name="backspace">Backspace</string>
|
||||
<string name="enter">Enter</string>
|
||||
<string name="autofill_close_database_title">Зачыніць базу дадзеных</string>
|
||||
<string name="autofill_close_database_summary">Зачыніць базу дадзеных пасля выбару аўтазапаўнення</string>
|
||||
<string name="autofill_inline_suggestions_title">Убудаваныя прапановы</string>
|
||||
<string name="autofill_inline_suggestions_summary">Спрабаваць адлюстраваць прапановы аўтазапаўнення непасрэдна з сумяшчальнай клавіятуры</string>
|
||||
<string name="autofill_manual_selection_title">Ручной выбар</string>
|
||||
<string name="autofill_manual_selection_summary">Адлюстраваць опцыю, каб дазволіць карыстальніку выбраць запіс базы дадзеных</string>
|
||||
<string name="autofill_save_search_info_title">Захаваць інфармацыю пошуку</string>
|
||||
<string name="autofill_save_search_info_summary">Спрабаваць захаваць інфармацыю пошуку пры ручным выбары запісу для палягчэння будучага выкарыстання</string>
|
||||
<string name="autofill_ask_to_save_data_title">Спытаць пра захаванне дадзеных</string>
|
||||
<string name="autofill_ask_to_save_data_summary">Спытаць пра захаванне дадзеных пасля завяршэння запаўнення формы</string>
|
||||
<string name="autofill_application_id_blocklist_title">Чорны спіс праграм</string>
|
||||
<string name="autofill_application_id_blocklist_summary">Чорны спіс, які перашкаджае аўтазапаўненню праграм</string>
|
||||
<string name="autofill_web_domain_blocklist_title">Чорны спіс вэб-даменаў</string>
|
||||
<string name="autofill_web_domain_blocklist_summary">Чорны спіс, які перашкаджае аўтазапаўненню вэб-даменаў</string>
|
||||
<string name="autofill_block">Заблакаваць аўтазапаўненне</string>
|
||||
<string name="autofill_block_restart">Перазапусціце праграму, якая змяшчае форму, каб актываваць блакаванне.</string>
|
||||
<string name="autofill_read_only_save">Захаванне дадзеных недапушчальна для базы дадзеных, адкрытай толькі для чытання.</string>
|
||||
<string name="autofill_inline_suggestions_keyboard">Прапановы аўтазапаўнення дададзены.</string>
|
||||
<string name="allow_no_password_title">Дазволіць без галоўнага ключа</string>
|
||||
<string name="allow_no_password_summary">Дазваляе націснуць кнопку Адкрыць, калі не выбраны ўліковыя дадзеныя</string>
|
||||
<string name="delete_entered_password_title">Выдаліць пароль</string>
|
||||
<string name="delete_entered_password_summary">Выдаляе ўведзены пароль пасля спробы падключэння да базы дадзеных</string>
|
||||
<string name="enable_auto_save_database_title">Аўтазахаванне базы дадзеных</string>
|
||||
<string name="enable_auto_save_database_summary">Захоўваць базу дадзеных пасля кожнага важнага дзеяння (у рэжыме З магчымасцю змены)</string>
|
||||
<string name="enable_keep_screen_on_title">Трымаць экран уключаным</string>
|
||||
<string name="enable_keep_screen_on_summary">Трымаць экран уключаным пры праглядзе або рэдагаванні запісу</string>
|
||||
<string name="enable_screenshot_mode_title">Рэжым скрыншота</string>
|
||||
<string name="enable_screenshot_mode_summary">Дазволіць староннім праграмам запісваць або рабіць скрыншоты праграмы</string>
|
||||
<string name="enable_education_screens_title">Навучальныя падказкі</string>
|
||||
<string name="enable_education_screens_summary">Вылучыць элементы, каб даведацца, як працуе праграма</string>
|
||||
<string name="reset_education_screens_title">Скінуць навучальныя падказкі</string>
|
||||
<string name="reset_education_screens_summary">Паказаць усю навучальную інфармацыю зноўку</string>
|
||||
<string name="reset_education_screens_text">Навучальныя падказкі скінуты</string>
|
||||
<string name="education_create_database_title">Стварыце свой файл базы дадзеных</string>
|
||||
<string name="education_create_database_summary">Стварыце свой першы файл кіравання паролямі.</string>
|
||||
<string name="education_select_database_title">Адкрыць існуючую базу дадзеных</string>
|
||||
<string name="education_select_database_summary">Адкрыйце свой папярэдні файл базы дадзеных з файлавага браўзера, каб працягнуць выкарыстоўваць яго.</string>
|
||||
<string name="education_new_node_title">Дадаць элементы ў вашу базу дадзеных</string>
|
||||
<string name="education_new_node_summary">Запісы дапамагаюць кіраваць лічбавымі ідэнтыфікацыйнымі дадзенымі.\n\nГрупы (~тэчкі) арганізуюць запісы ў вашай базе дадзеных.</string>
|
||||
<string name="education_search_title">Пошук па запісах</string>
|
||||
<string name="education_search_summary">Увядзіце назву, імя карыстальніка або змесціва іншых палёў, каб знайсці свае паролі.</string>
|
||||
<string name="education_device_unlock_title">Разблакіроўка базы дадзеных прылады</string>
|
||||
<string name="education_device_unlock_summary">Прывяжыце свой пароль да адсканаванай біяметрыі або ўліковых дадзеных прылады, каб хутка разблакаваць базу дадзеных.</string>
|
||||
<string name="education_entry_edit_title">Рэдагаваць гэты запіс</string>
|
||||
<string name="education_entry_edit_summary">Рэдагуйце свой запіс з дапамогай карыстальніцкіх палёў. Дадзеныя пула могуць спасылацца паміж рознымі палямі запісаў.</string>
|
||||
<string name="education_generate_password_title">Стварыць надзейны пароль</string>
|
||||
<string name="education_generate_password_summary">Стварыце надзейны пароль, каб звязаць яго са сваім запісам, лёгка вызначыце яго ў адпаведнасці з крытэрыямі формы і не забудзьцеся пра бяспечны пароль.</string>
|
||||
<string name="education_validate_entry_title">Праверыць запіс</string>
|
||||
<string name="education_validate_entry_summary">Не забудзьцеся праверыць свой запіс і захаваць базу дадзеных.\n\nКалі актывавана аўтаматычнае блакаванне і вы забыліся, што рабілі змены, вы рызыкуеце страціць свае дадзеныя.</string>
|
||||
<string name="education_entry_new_field_title">Дадаць карыстальніцкія палі</string>
|
||||
<string name="education_entry_new_field_summary">Зарэгіструйце дадатковае поле, дадайце значэнне і пры жаданні абароніце яго.</string>
|
||||
<string name="education_add_attachment_title">Дадаць укладанне</string>
|
||||
<string name="education_add_attachment_summary">Загрузіце ўкладанне ў свой запіс, каб захаваць важныя знешнія дадзеныя.</string>
|
||||
<string name="education_setup_OTP_title">Наладзіць OTP</string>
|
||||
<string name="education_setup_OTP_summary">Наладзьце кіраванне аднаразовым паролем (HOTP / TOTP) для стварэння токена, які запытваецца для двухфактарнай аўтэнтыфікацыі (2FA).</string>
|
||||
<string name="education_unlock_title">Разблакаваць вашу базу дадзеных</string>
|
||||
<string name="education_unlock_summary">Увядзіце пароль і/або файл ключа, каб разблакаваць базу дадзеных.\n\nСтварыце рэзервовую копію файла базы дадзеных у бяспечным месцы пасля кожнай змены.</string>
|
||||
<string name="education_read_only_title">Абараніць вашу базу дадзеных ад запісу</string>
|
||||
<string name="education_read_only_summary">Змяніць рэжым адкрыцця для сеансу.\n\n\"Абаронены ад запісу\"- прадухіляе ненаўмысныя змены ў базе дадзеных.\n\"Мадыкафаны\"- дазваляе вам дадаваць, выдаляць або змяняць усе элементы, як пажадаеце.</string>
|
||||
<string name="education_field_copy_title">Скапіяваць поле</string>
|
||||
<string name="education_field_copy_summary">Скапіяваныя палі можна ўставіць у любым месцы.\n\nВыкарыстоўвайце метад запаўнення формы, які вам больш падабаецца.</string>
|
||||
<string name="education_lock_title">Заблакаваць базу дадзеных</string>
|
||||
<string name="education_lock_summary">Хутка заблакаваць базу дадзеных, вы можаце наладзіць праграму, каб яна блакавалася праз некаторы час і калі экран выключаецца.</string>
|
||||
<string name="education_sort_title">Сартаванне элементаў</string>
|
||||
<string name="education_sort_summary">Выберыце, як сартаваць запісы і групы.</string>
|
||||
<string name="education_donation_title">Удзельнічаць</string>
|
||||
<string name="education_donation_summary">Дапамажыце павысіць стабільнасць, бяспеку і дадаць больш функцый.</string>
|
||||
<string name="html_text_ad_free">У адрозненне ад многіх праграм для кіравання паролямі, гэтая <strong>без рэкламы</strong>, <strong>копілефтнае свабоднае праграмнае забеспячэнне</strong> і не збірае персанальныя дадзеныя на сваіх серверах, незалежна ад версіі, якой вы карыстаецеся.</string>
|
||||
<string name="html_text_buy_pro">Купляючы pro-версію, вы атрымаеце доступ да гэтага <strong>візуальнага стылю</strong> і асабліва дапаможаце <strong>рэалізацыі грамадскіх праектаў.</strong></string>
|
||||
<string name="html_text_feature_generosity">Гэты <strong>візуальны стыль</strong> даступны дзякуючы вашай шчодрасці.</string>
|
||||
<string name="html_text_donation"><strong>Унёсшы ўклад</strong> у праект <i>(матэрыяльна, кодам, перакладам)</i>, вы дапаможаце яму працягваць жыць і развівацца, а таксама будзеце мець права на працэдуру разблакіроўкі <strong>тэмы</strong>.</string>
|
||||
<string name="html_text_dev_feature">Гэтая функцыя <strong>знаходзіцца ў стадыі распрацоўкі</strong> і патрабуе вашага <strong>ўкладу</strong>, каб неўзабаве стаць даступнай.</string>
|
||||
<string name="html_text_dev_feature_buy_pro">Купляючы <strong>pro-версію</strong>,</string>
|
||||
<string name="html_text_dev_feature_contibute"><strong>Унёсшы ўклад</strong>,</string>
|
||||
<string name="html_text_dev_feature_encourage">вы заахвочваеце распрацоўшчыкаў ствараць <strong>новыя функцыі</strong> і <strong>выпраўляць памылкі</strong> ў адпаведнасці з вашымі заўвагамі.</string>
|
||||
<string name="html_text_dev_feature_thanks">Вялікі дзякуй за ваш уклад.</string>
|
||||
<string name="html_text_dev_feature_work_hard">Мы прыкладаем усе намаганні, каб хутка выпусціць гэтую функцыю.</string>
|
||||
<string name="html_text_dev_feature_upgrade">Не забудзьцеся абнаўляць праграму, усталёўваючы новыя версіі.</string>
|
||||
<string name="download">Спампаваць</string>
|
||||
<string name="contribute">Унесці ўклад</string>
|
||||
<string name="download_attachment">Спампаваць %1$s</string>
|
||||
<string name="upload_attachment">Загрузіць %1$s</string>
|
||||
<string name="download_initialization">Ініцыялізацыя…</string>
|
||||
<string name="download_progression">Выконваецца: %1$d%%</string>
|
||||
<string name="download_finalization">Завяршэнне…</string>
|
||||
<string name="download_complete">Гатова!</string>
|
||||
<string name="download_canceled">Скасавана!</string>
|
||||
<string name="unit_byte">Б</string>
|
||||
<string name="unit_kibibyte">КіБ</string>
|
||||
<string name="unit_mebibyte">МіБ</string>
|
||||
<string name="unit_gibibyte">ГіБ</string>
|
||||
<string name="entropy">Энтрапія: %1$s біт</string>
|
||||
<string name="entropy_high">Энтрапія: Высокая</string>
|
||||
<string name="entropy_calculate">Энтрапія: Разлік…</string>
|
||||
<string name="at_least_one_char">Хаця б адзін сімвал з кожнай</string>
|
||||
<string name="exclude_ambiguous_chars">Выключыць неадназначныя сімвалы</string>
|
||||
<string name="consider_chars_filter">Разглядаць сімвалы</string>
|
||||
<string name="word_separator">Падзяляльнік слоў</string>
|
||||
<string name="ignore_chars_filter">Ігнараваць сімвалы</string>
|
||||
<string name="lower_case">ніжні рэгістр</string>
|
||||
<string name="upper_case">ВЕРХНІ РЭГІСТР</string>
|
||||
<string name="title_case">Рэгістр загалоўкаў</string>
|
||||
<string name="character_count">Колькасць сімвалаў: %1$d</string>
|
||||
<string name="screenshot_mode_banner_text">Рэжым скрыншота</string>
|
||||
<string name="style_choose_title">Тэма праграмы</string>
|
||||
<string name="style_choose_summary">Тэма, якая выкарыстоўваецца ў праграме</string>
|
||||
<string name="style_name_forest">Лес</string>
|
||||
<string name="style_name_divine">Боскі</string>
|
||||
<string name="style_name_classic">Класічны</string>
|
||||
<string name="style_name_simple">Просты</string>
|
||||
<string name="style_name_moon">Месяц</string>
|
||||
<string name="style_name_sun">Сонца</string>
|
||||
<string name="style_name_reply">Адказ</string>
|
||||
<string name="style_name_kunzite">Кунцыт</string>
|
||||
<string name="style_name_follow_system">Па сістэме</string>
|
||||
<string name="style_brightness_title">Яркасць тэмы</string>
|
||||
<string name="style_brightness_summary">Выбраць светлыя або цёмныя тэмы</string>
|
||||
<string name="style_name_light">Светлая</string>
|
||||
<string name="style_name_dark">Цёмная</string>
|
||||
<string name="icon_section_standard">Стандартны</string>
|
||||
<string name="icon_section_custom">Карыстальніцкі</string>
|
||||
<string name="icon_pack_choose_title">Пакет значкоў</string>
|
||||
<string name="icon_pack_choose_summary">Пакет значкоў, які выкарыстоўваецца ў праграме</string>
|
||||
<string name="show_entry_colors_title">Колеры запісаў</string>
|
||||
<string name="show_entry_colors_summary">Адлюстроўвае колеры пярэдняга плану і фону для запісу</string>
|
||||
<string name="hide_expired_entries_title">Схаваць запісы з мінулым тэрмінам дзеяння</string>
|
||||
<string name="hide_expired_entries_summary">Запісы з мінулым тэрмінам дзеяння не паказваюцца</string>
|
||||
<string name="hide_templates_title">Схаваць шаблоны</string>
|
||||
<string name="hide_templates_summary">Шаблоны не паказваюцца</string>
|
||||
</resources>
|
||||
@@ -22,7 +22,7 @@
|
||||
<string name="clipboard_timeout_summary">Продължителност на съхранение в клипборда (ако се поддържа от вашето устройство)</string>
|
||||
<string name="clipboard_error">Някои устройства не позволяват на приложенията да използват клипборда.</string>
|
||||
<string name="entry_title">Заглавие</string>
|
||||
<string name="about_description">Версия за Андроид на приложението за управление на пароли KeePass</string>
|
||||
<string name="about_description">Разработка за Андроид на приложението за управление на пароли KeePass.</string>
|
||||
<string name="save">Запазване</string>
|
||||
<string name="entry_confpassword">Потвърждаване на парола</string>
|
||||
<string name="key_derivation_function">Функция за извличане на ключ</string>
|
||||
@@ -83,7 +83,7 @@
|
||||
<string name="error_nokeyfile">Избиране на файл с ключ.</string>
|
||||
<string name="entry_keyfile">Файл с ключ</string>
|
||||
<string name="error_no_hardware_key">Изберете хардуерен ключ.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Въпреки че използвате разпознаване на отключването на устройството ще трябва да запомните главната парола на хранилището.</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Въпреки че използвате разпознаване на отключването на устройството ще трябва да запомните главната парола на хранилището.</string>
|
||||
<string name="create_keepass_file">Ново хранилище</string>
|
||||
<string name="recycle_bin">Кошче</string>
|
||||
<string name="default_checkbox">Използване като хранилище по подразбиране</string>
|
||||
@@ -187,7 +187,7 @@
|
||||
<string name="cryptocurrency">Портфейл за криптовалута</string>
|
||||
<string name="token">Код за достъп</string>
|
||||
<string name="menu_change_key_settings">Промяна на главната парола</string>
|
||||
<string name="menu_advanced_unlock_settings">Отключване на устройството</string>
|
||||
<string name="menu_device_unlock_settings">Отключване на устройството</string>
|
||||
<string name="menu_security_settings">Настройки за сигурност</string>
|
||||
<string name="menu_donate">Даряване</string>
|
||||
<string name="menu_edit">Променяне</string>
|
||||
@@ -236,7 +236,7 @@
|
||||
<string name="download_initialization">Подготвяне…</string>
|
||||
<string name="content_description_entry_background_color">Цвят на фона на запис</string>
|
||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft е приложение с <strong>отворен код</strong> и <strong>без реклами</strong>. \nРазпространява се под лиценза <strong>GPLv3</strong> без каквато и да е гаранция.</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Биометрия, удостоверяване</string>
|
||||
<string name="menu_device_unlock_settings_summary">Биометрия, удостоверяване</string>
|
||||
<string name="menu_security_settings_summary">Шифроване, функция за извличане на ключ</string>
|
||||
<string name="menu_master_key_settings">Настройки на главната парола</string>
|
||||
<string name="file_browser">Управление на файлове</string>
|
||||
@@ -251,8 +251,8 @@
|
||||
<string name="database_custom_color_title">Цвят на хранилището по избор</string>
|
||||
<string name="keyboard_theme_title">Тема на клавиатурата</string>
|
||||
<string name="keyboard_auto_go_action_title">Автоматично действие на клавиш</string>
|
||||
<string name="education_advanced_unlock_title">Отключвайте хранилището заедно с устройството</string>
|
||||
<string name="education_advanced_unlock_summary">Свържете паролата със сканиране на биометрични данни или удостоверяване на устройството, за да отключвате бързо хранилищата.</string>
|
||||
<string name="education_device_unlock_title">Отключвайте хранилището заедно с устройството</string>
|
||||
<string name="education_device_unlock_summary">Свържете паролата със сканиране на биометрични данни или удостоверяване на устройството, за да отключвате бързо хранилищата.</string>
|
||||
<string name="education_entry_new_field_summary">Създайте допълнително поле, добавете стойност и при необходимост я защитете.</string>
|
||||
<string name="education_unlock_title">Отключете хранилището</string>
|
||||
<string name="education_sort_title">Сортиране на записи</string>
|
||||
@@ -292,7 +292,7 @@
|
||||
<string name="password_size_title">Дължина на създаваните пароли</string>
|
||||
<string name="lock_database_back_root_title">Заключване при „Назад“</string>
|
||||
<string name="content">Съдържание</string>
|
||||
<string name="advanced_unlock">Отключване на устройството</string>
|
||||
<string name="device_unlock">Отключване на устройството</string>
|
||||
<string name="settings_database_recommend_changing_master_key_title">Препоръчителна смяна</string>
|
||||
<string name="settings_database_recommend_changing_master_key_summary">Препоръчване на смяна на главната парола (в дни)</string>
|
||||
<string name="settings_database_force_changing_master_key_title">Принудителна смяна</string>
|
||||
@@ -352,7 +352,6 @@
|
||||
<string name="keyboard_setting_label">Настройки на Magikeyboard</string>
|
||||
<string name="keyboard_selection_entry_title">Избор на записи</string>
|
||||
<string name="allow_no_password_title">Разрешаване без главна парола</string>
|
||||
<string name="enable_read_only_title">Само за четене</string>
|
||||
<string name="keyboard_notification_entry_content_text">%1$s</string>
|
||||
<string name="keyboard_notification_entry_content_title">Записът %1$s е достъпен в Magikeyboard</string>
|
||||
<string name="keyboard_notification_entry_content_title_text">Запис</string>
|
||||
@@ -402,7 +401,6 @@
|
||||
<string name="lock_database_show_button_title">Бутон за заключване</string>
|
||||
<string name="autofill_explanation_summary">Включете услугата за попълване на формуляри в други приложения</string>
|
||||
<string name="properties">Свойства</string>
|
||||
<string name="enable_read_only_summary">По подразбиране отваря хранилището само за четене</string>
|
||||
<string name="education_validate_entry_summary">Не забравяйте да потвърдите записа и да го запазите в хранилището.
|
||||
\n
|
||||
\nАко се задейства автоматичното заключване, а сте направили промени, рискувате загуба на данни.</string>
|
||||
@@ -521,32 +519,32 @@
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Премахва от хранилището прикачени файлове без връзка със запис</string>
|
||||
<string name="warning_empty_keyfile_explanation">Съдържанието на файла с ключ не трябва да бъде променяно и най-добре е да съдържа случайна стойност.</string>
|
||||
<string name="warning_database_info_changed_options">Обединете данните, презапишете външните промени или презаредете хранилището с последните промени.</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Време на живот на съдържанието, което се използва за отключване</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Да бъдат ли премахнати всички ключове за шифроване, свързани с разпознаването на отключване на устройството?</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Време на живот на съдържанието, което се използва за отключване</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Да бъдат ли премахнати всички ключове за шифроване, свързани с разпознаването на отключване на устройството?</string>
|
||||
<string name="biometric_delete_all_key_summary">Премахване на всички ключове за шифроване, свързани с разпознаването на отключване на устройството</string>
|
||||
<string name="unavailable_feature_text">Тази възможност не може да бъде използвана.</string>
|
||||
<string name="unavailable_feature_version">Устройството разполага с Андроид %1$s, но е необходим %2$s или по-нов.</string>
|
||||
<string name="templates_group_enable_title">Използване на шаблони</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Разпознаване на отключване на устройството</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Въведете паролата и докоснете бутона.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Разпознаване на отключване на устройството</string>
|
||||
<string name="credential_before_click_device_unlock_button">Въведете паролата и докоснете бутона.</string>
|
||||
<string name="lock_database_screen_off_summary">Заключва хранилището нколко секунди след изключване на екрана</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">За да се възползвате от отключване на устройството не пазете шифровано съдържание</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Време на действие</string>
|
||||
<string name="advanced_unlock_timeout">Времетраене на отключването на устройството</string>
|
||||
<string name="temp_device_unlock_enable_summary">За да се възползвате от отключване на устройството не пазете шифровано съдържание</string>
|
||||
<string name="temp_device_unlock_timeout_title">Време на действие</string>
|
||||
<string name="device_unlock_timeout">Времетраене на отключването на устройството</string>
|
||||
<string name="recycle_bin_title">Използване на кошчето</string>
|
||||
<string name="recycle_bin_summary">Премества групите и записите в групата „Кошче“ вместо да ги премахва директно</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Отключване с устройството</string>
|
||||
<string name="advanced_unlock_not_recognized">Не може да бъде разпознато кога устройството е отключено</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Заявката за отключване не може да бъде подготвена.</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Отключване с устройството</string>
|
||||
<string name="device_unlock_not_recognized">Не може да бъде разпознато кога устройството е отключено</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Заявката за отключване не може да бъде подготвена.</string>
|
||||
<string name="password_size_summary">Подразбирана дължина на създаваните пароли</string>
|
||||
<string name="advanced_unlock_tap_delete">Докоснете, за да премахнете ключовете за отключване на устройството</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Временно отключване на устройството</string>
|
||||
<string name="advanced_unlock_explanation_summary">За по-лесно отключване на хранилището използвайте отключване на устройството</string>
|
||||
<string name="device_unlock_tap_delete">Докоснете, за да премахнете ключовете за отключване на устройството</string>
|
||||
<string name="temp_device_unlock_enable_title">Временно отключване на устройството</string>
|
||||
<string name="device_unlock_explanation_summary">За по-лесно отключване на хранилището използвайте отключване на устройството</string>
|
||||
<string name="recycle_bin_group_title">Група „Кошче“</string>
|
||||
<string name="templates_group_uuid_title">Група „Шаблони“</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Извличане на главната парола на хранилището при отключване на устройството</string>
|
||||
<string name="advanced_unlock_invalid_key">Ключът за отключване на устройството не може да бъде прочетен. Премахнете го и повторете процедурата по разпознаване.</string>
|
||||
<string name="advanced_unlock_keystore_warning">Това свойство на приложението ще пази шифровани данни за достъп в защитеното хранилище за ключове на устройството.
|
||||
<string name="device_unlock_prompt_extract_credential_message">Извличане на главната парола на хранилището при отключване на устройството</string>
|
||||
<string name="device_unlock_invalid_key">Ключът за отключване на устройството не може да бъде прочетен. Премахнете го и повторете процедурата по разпознаване.</string>
|
||||
<string name="device_unlock_keystore_warning">Това свойство на приложението ще пази шифровани данни за достъп в защитеното хранилище за ключове на устройството.
|
||||
\n
|
||||
\nВ зависимост реализацията на ППИ на операционната система то може да не е пълнофункционално.
|
||||
\n
|
||||
|
||||
@@ -90,4 +90,4 @@
|
||||
<string name="underline">নিম্নরেখা</string>
|
||||
<string name="sort_last_access_time">প্রবেশ</string>
|
||||
<string name="search">অনুসন্ধান</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
<string name="loading_database">ডাটাবেস লোড হচ্ছে…</string>
|
||||
<string name="copy_field">%1$s এর কপি</string>
|
||||
<string name="menu_form_filling_settings">ফরম পূরণ</string>
|
||||
<string name="menu_advanced_unlock_settings">উন্নত আনলকিং</string>
|
||||
<string name="menu_device_unlock_settings">উন্নত আনলকিং</string>
|
||||
<string name="menu_database_settings">ডাটাবেস সেটিংস</string>
|
||||
<string name="menu_security_settings">নিরাপত্তা বিন্যাস</string>
|
||||
<string name="menu_master_key_settings">মাস্টার কী সেটিংস</string>
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
<string name="menu_copy">Copiar</string>
|
||||
<string name="menu_master_key_settings">Paràmetres de la contrasenya mestra</string>
|
||||
<string name="menu_security_settings">Paràmetres de seguretat</string>
|
||||
<string name="menu_advanced_unlock_settings">Desblocatge de dispositiu</string>
|
||||
<string name="menu_device_unlock_settings">Desblocatge de dispositiu</string>
|
||||
<string name="menu_form_filling_settings">Emplenat de formularis</string>
|
||||
<string name="copy_field">Còpia de %1$s</string>
|
||||
<string name="creating_database">Es crea la base de dades…</string>
|
||||
@@ -362,7 +362,7 @@
|
||||
<string name="html_about_privacy"><strong>No s\'agafa cap dada d\'usuari</strong>, aquesta aplicació no connecta a cap servidor, només treballa localment i respecta la privacitat dels usuaris en la seva totalitat.</string>
|
||||
<string name="notification">Notificació</string>
|
||||
<string name="content_description_entry_foreground_color">Color de primer pla d\'entrada</string>
|
||||
<string name="advanced_unlock">Desbloqueja dispositiu</string>
|
||||
<string name="device_unlock">Desbloqueja dispositiu</string>
|
||||
<string name="template">Plantilla</string>
|
||||
<string name="title_case">Primera Majúscula</string>
|
||||
<string name="navigation_drawer_open">El calaix de navegació està obert</string>
|
||||
@@ -414,7 +414,7 @@
|
||||
<string name="compression">Compressió</string>
|
||||
<string name="id_card">Targeta d\'identificació</string>
|
||||
<string name="error_hardware_key_unsupported">Clau física no suportada.</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometria, credencial de dispositiu</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometria, credencial de dispositiu</string>
|
||||
<string name="standard">Estàndard</string>
|
||||
<string name="error_XML_malformed">XML mal format.</string>
|
||||
<string name="remember_hardware_key_summary">Recorda les claus físiques que s\'han usat</string>
|
||||
@@ -456,7 +456,7 @@
|
||||
<string name="error_upload_file">S\'ha produït un error en pujar les dades del fitxer.</string>
|
||||
<string name="error_duplicate_file">Les dades del fitxer ja existeixen.</string>
|
||||
<string name="hint_icon_name">Nom de la icona</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Us haureu de recordar de la credencial principal de la caixa forta en el cas que feu servir el reconeixement del dispositiu pel desbloqueig.</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Us haureu de recordar de la credencial principal de la caixa forta en el cas que feu servir el reconeixement del dispositiu pel desbloqueig.</string>
|
||||
<string name="secure_note">Nota segura</string>
|
||||
<string name="error_file_to_big">El fitxer que esteu intentant pujar és massa gros.</string>
|
||||
<string name="error_challenge_already_requested">El desafiament ja s\'ha sol·licitat.</string>
|
||||
@@ -471,15 +471,13 @@
|
||||
<string name="menu_database_settings_summary">Metadades, paperera de reciclatge, plantilles, historial</string>
|
||||
<string name="encryption_explanation">Algorisme de xifratge de la base de dades utilitzat per a totes les dades</string>
|
||||
<string name="delete_entered_password_summary">Suprimeix la contrasenya introduïda després d\'un intent de connexió a una base de dades</string>
|
||||
<string name="enable_read_only_title">Protegit contra l\'escriptura</string>
|
||||
<string name="enable_read_only_summary">Obre la base de dades en mode només de lectura per defecte</string>
|
||||
<string name="enable_screenshot_mode_summary">Permet que les aplicacions de tercers gravin o facin captures de pantalla de l\'aplicació</string>
|
||||
<string name="enable_education_screens_summary">Ressalta els elements per saber com funciona l\'aplicació</string>
|
||||
<string name="reset_education_screens_title">Reinicia els consells educatius</string>
|
||||
<string name="enable_education_screens_title">Consells educatius</string>
|
||||
<string name="education_new_node_title">Afegeix elements a la base de dades</string>
|
||||
<string name="education_search_summary">Introduïu el títol, el nom d\'usuari o el contingut d\'altres camps per recuperar les contrasenyes.</string>
|
||||
<string name="education_advanced_unlock_title">Desbloqueig de la base de dades dels dispositius</string>
|
||||
<string name="education_device_unlock_title">Desbloqueig de la base de dades dels dispositius</string>
|
||||
<string name="autofill_save_search_info_title">Desa la informació de cerca</string>
|
||||
<string name="education_entry_edit_summary">Editeu l\'entrada amb camps personalitzats. Les dades del fons es poden referenciar entre diferents camps d\'entrada.</string>
|
||||
<string name="education_generate_password_title">Crea una contrasenya forta</string>
|
||||
@@ -504,10 +502,10 @@
|
||||
<string name="autofill_inline_suggestions_summary">Intenta mostrar els suggeriments d\'emplenament automàtic directament des d\'un teclat compatible</string>
|
||||
<string name="warning_database_already_opened">Ja hi ha oberta una base de dades, tanqueu-la primer abans d\'obrir-ne una de nova</string>
|
||||
<string name="build_label">Construeix 2%1$s</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Reconeixement de desbloqueig del dispositiu</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Reconeixement de desbloqueig del dispositiu</string>
|
||||
<string name="clipboard_explanation_summary">Copia els camps d\'entrada utilitzant el porta-retalls del dispositiu</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Desbloqueig temporal del dispositiu</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">No emmagatzemeu cap contingut xifrat per utilitzar el desbloqueig del dispositiu</string>
|
||||
<string name="temp_device_unlock_enable_title">Desbloqueig temporal del dispositiu</string>
|
||||
<string name="temp_device_unlock_enable_summary">No emmagatzemeu cap contingut xifrat per utilitzar el desbloqueig del dispositiu</string>
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Elimina els adjunts continguts a la base de dades però no vinculats a una entrada</string>
|
||||
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
|
||||
<string name="keyboard_selection_entry_title">Selecció d\'entrada</string>
|
||||
@@ -525,13 +523,13 @@
|
||||
<string name="warning_database_read_only">Concedeix accés d\'escriptura al fitxer per a desar els canvis a la base de dades</string>
|
||||
<string name="warning_database_info_changed_options">Fusiona les dades, sobreescriu les modificacions externes desant la base de dades o torna-la a carregar amb els últims canvis.</string>
|
||||
<string name="warning_database_info_reloaded">En tornar a carregar la base de dades se suprimiran les dades modificades localment.</string>
|
||||
<string name="advanced_unlock_invalid_key">No es pot llegir la clau de desbloqueig del dispositiu. Si us plau, suprimiu-la i repetiu el procediment de reconeixement de desbloqueig.</string>
|
||||
<string name="advanced_unlock_not_recognized">No s\'ha pogut reconèixer l\'empremta digital per desbloquejar el dispositiu</string>
|
||||
<string name="device_unlock_invalid_key">No es pot llegir la clau de desbloqueig del dispositiu. Si us plau, suprimiu-la i repetiu el procediment de reconeixement de desbloqueig.</string>
|
||||
<string name="device_unlock_not_recognized">No s\'ha pogut reconèixer l\'empremta digital per desbloquejar el dispositiu</string>
|
||||
<string name="autofill_select_entry">Selecciona una entrada…</string>
|
||||
<string name="advanced_unlock_tap_delete">Toca per suprimir les claus de desbloqueig del dispositiu</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Venciment del desbloqueig del dispositiu</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Durada de l\'ús del desbloqueig del dispositiu abans de suprimir el seu contingut</string>
|
||||
<string name="advanced_unlock_timeout">Temps d\'espera per desbloquejar el dispositiu</string>
|
||||
<string name="device_unlock_tap_delete">Toca per suprimir les claus de desbloqueig del dispositiu</string>
|
||||
<string name="temp_device_unlock_timeout_title">Venciment del desbloqueig del dispositiu</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Durada de l\'ús del desbloqueig del dispositiu abans de suprimir el seu contingut</string>
|
||||
<string name="device_unlock_timeout">Temps d\'espera per desbloquejar el dispositiu</string>
|
||||
<string name="database_custom_color_title">Color personalitzat de la base de dades</string>
|
||||
<string name="database_version_title">Versió de la base de dades</string>
|
||||
<string name="text_appearance">Text</string>
|
||||
@@ -564,19 +562,19 @@
|
||||
<string name="download_attachment">Baixa %1$s</string>
|
||||
<string name="download_progression">En curs: %1$d%%</string>
|
||||
<string name="download_complete">S\'ha completat!</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Extreu la credencial de la base de dades amb les dades de desbloqueig del dispositiu</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Extreu la credencial de la base de dades amb les dades de desbloqueig del dispositiu</string>
|
||||
<string name="keyboard">Teclat</string>
|
||||
<string name="magic_keyboard_title">Magikeyboard</string>
|
||||
<string name="custom_fields">Camps personalitzats</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Enllaç al desbloqueig del dispositiu</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Enllaç al desbloqueig del dispositiu</string>
|
||||
<string name="education_entry_edit_title">Edita l\'entrada</string>
|
||||
<string name="filter">Filtra</string>
|
||||
<string name="keyboard_auto_go_action_title">Acció de la tecla automàtica</string>
|
||||
<string name="configure_biometric">No hi ha cap credencial biomètrica ni de dispositiu inscrita.</string>
|
||||
<string name="advanced_unlock_explanation_summary">Utilitza el desbloqueig del dispositiu per obrir una base de dades més fàcilment</string>
|
||||
<string name="device_unlock_explanation_summary">Utilitza el desbloqueig del dispositiu per obrir una base de dades més fàcilment</string>
|
||||
<string name="device_credential_unlock_enable_summary">Us permet utilitzar la credencial del dispositiu per obrir la base de dades</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Sol·licita automàticament el desbloqueig del dispositiu si la base de dades està configurada per utilitzar-lo</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Voleu suprimir totes les claus de xifratge relacionades amb el reconeixement de desbloqueig del dispositiu?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Voleu suprimir totes les claus de xifratge relacionades amb el reconeixement de desbloqueig del dispositiu?</string>
|
||||
<string name="biometric_unlock_enable_title">Desbloqueig biomètric</string>
|
||||
<string name="biometric_unlock_enable_summary">Us permet escanejar la vostra biomètrica per obrir la base de dades</string>
|
||||
<string name="autofill_application_id_blocklist_title">Llista de bloqueig d\'aplicacions</string>
|
||||
@@ -614,8 +612,8 @@
|
||||
<string name="biometric_security_update_required">Cal actualitzar la seguretat biomètrica.</string>
|
||||
<string name="unlock_and_link_biometric">Enllaç de desbloqueig del dispositiu</string>
|
||||
<string name="unavailable">No disponible</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">No s\'ha pogut inicialitzar l\'indicador de desbloqueig del dispositiu.</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Escriviu la contrasenya i, a continuació, feu clic en aquest botó.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">No s\'ha pogut inicialitzar l\'indicador de desbloqueig del dispositiu.</string>
|
||||
<string name="credential_before_click_device_unlock_button">Escriviu la contrasenya i, a continuació, feu clic en aquest botó.</string>
|
||||
<string name="menu_appearance_settings_summary">Temes, colors, atributs</string>
|
||||
<string name="clipboard_notifications_summary">Mostra les notificacions del porta-retalls per a copiar camps en visualitzar una entrada</string>
|
||||
<string name="content">Contingut</string>
|
||||
@@ -651,7 +649,7 @@
|
||||
<string name="reset_education_screens_text">Reinicialitza els consells educatius</string>
|
||||
<string name="education_select_database_title">Obre una base de dades existent</string>
|
||||
<string name="education_select_database_summary">Obriu el fitxer anterior de la base de dades des del navegador de fitxers per a continuar utilitzant-lo.</string>
|
||||
<string name="education_advanced_unlock_summary">Enllaça la contrasenya a una credencial biomètrica escanejada o de dispositiu per desbloquejar ràpidament la base de dades.</string>
|
||||
<string name="education_device_unlock_summary">Enllaça la contrasenya a una credencial biomètrica escanejada o de dispositiu per desbloquejar ràpidament la base de dades.</string>
|
||||
<string name="education_validate_entry_title">Valida l\'entrada</string>
|
||||
<string name="education_entry_new_field_title">Afegeix camps personalitzats</string>
|
||||
<string name="education_add_attachment_title">Afegeix un adjunt</string>
|
||||
@@ -673,7 +671,7 @@
|
||||
<string name="warning_large_keyfile">No es recomana afegir un fitxer de claus gran, això pot impedir que s\'obri la base de dades.</string>
|
||||
<string name="education_lock_summary">Bloqueja la base de dades ràpidament, pots configurar l\'aplicació per bloquejar-la al cap d\'un temps, i quan la pantalla s\'apagui.</string>
|
||||
<string name="recursive_number_entries_title">Nombre recursiu d\'entrades</string>
|
||||
<string name="advanced_unlock_keystore_warning">Aquesta característica emmagatzemarà dades de credencials encriptades a l\'espai segur KeyStore del vostre dispositiu.\n\nDepenent de la implementació nativa de l\'API del sistema operatiu, pot no ser completament funcional.\n\nComprova la compatibilitat i seguretat de KeyStore amb el fabricant del teu dispositiu i el creador de la ROM que estàs utilitzant.</string>
|
||||
<string name="device_unlock_keystore_warning">Aquesta característica emmagatzemarà dades de credencials encriptades a l\'espai segur KeyStore del vostre dispositiu.\n\nDepenent de la implementació nativa de l\'API del sistema operatiu, pot no ser completament funcional.\n\nComprova la compatibilitat i seguretat de KeyStore amb el fabricant del teu dispositiu i el creador de la ROM que estàs utilitzant.</string>
|
||||
<string name="kdf_explanation">Per a generar la clau per a l\'algorisme d\'encriptació, la clau mestra es transforma utilitzant una funció de derivació de clau sal aleatòria.</string>
|
||||
<string name="education_validate_entry_summary">Recordeu validar la vostra entrada i desar la vostra base de dades.\n\nSi s\'activa un bloqueig automàtic i t\'oblides que estaves fent una modificació, t\'arrisques a perdre les teves dades.</string>
|
||||
<string name="education_read_only_summary">Canvieu el mode inaugural per a la sessió. \n \n\"Escriu-emparat\" impedeix canvis involuntaris a la base de dades. \n\"Modificable\" us permet afegir, eliminar o modificar tots els elements com vulgueu.</string>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
Czech translation by Jan Vaněk
|
||||
--><resources>
|
||||
<string name="homepage">Domovská stránka</string>
|
||||
<string name="about_description">Implementace správce hesel KeePass pro Android</string>
|
||||
<string name="about_description">Implementace správce hesel KeePass pro Android.</string>
|
||||
<string name="accept">Přijmout</string>
|
||||
<string name="add_entry">Přidat záznam</string>
|
||||
<string name="add_group">Přidat skupinu</string>
|
||||
@@ -194,7 +194,7 @@
|
||||
<string name="lock">Zamknout</string>
|
||||
<string name="lock_database_screen_off_title">Zámek obrazovky</string>
|
||||
<string name="lock_database_screen_off_summary">Několik vteřin po zhasnutí obrazovky uzamknout databázi</string>
|
||||
<string name="advanced_unlock">Odemykání zařízení</string>
|
||||
<string name="device_unlock">Odemykání zařízení</string>
|
||||
<string name="biometric_unlock_enable_title">Biometrické odemknutí</string>
|
||||
<string name="biometric_unlock_enable_summary">Nechá otevřít databázi snímáním biometrického údaje</string>
|
||||
<string name="biometric_delete_all_key_title">Smazat šifrovací klíče</string>
|
||||
@@ -224,8 +224,6 @@
|
||||
<string name="magic_keyboard_explanation_summary">Aktivovat vlastní klávesnici, která snadno vyplní hesla a další položky identity</string>
|
||||
<string name="allow_no_password_title">Umožnit bez hlavního klíče</string>
|
||||
<string name="allow_no_password_summary">Povolit klepnutí na \"Otevřít\", i když není vybráno žádné heslo</string>
|
||||
<string name="enable_read_only_title">Chráněno před zápisem</string>
|
||||
<string name="enable_read_only_summary">Ve výchozím stavu otevřít databázi pouze pro čtení</string>
|
||||
<string name="enable_education_screens_title">Vzdělávací nápovědy</string>
|
||||
<string name="enable_education_screens_summary">Zvýraznit prvky k pochopení práce s aplikací</string>
|
||||
<string name="reset_education_screens_title">Nastavit vzdělávací nápovědy do výchozího stavu</string>
|
||||
@@ -333,7 +331,7 @@
|
||||
<string name="content_description_update_from_list">Aktualizovat</string>
|
||||
<string name="content_description_keyboard_close_fields">Zavřít kolonky</string>
|
||||
<string name="error_create_database_file">Nepodařilo se vytvořit databázi s tímto heslem a souborem klíče.</string>
|
||||
<string name="menu_advanced_unlock_settings">Odemknutí zařízení</string>
|
||||
<string name="menu_device_unlock_settings">Odemknutí zařízení</string>
|
||||
<string name="biometric">Biometrika</string>
|
||||
<string name="biometric_auto_open_prompt_title">Automaticky otevřít pobídku</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Automaticky žádat odemykání zařízení, je-li databáze nastavena k jejímu použití</string>
|
||||
@@ -365,7 +363,7 @@
|
||||
<string name="contains_duplicate_uuid_procedure">Opravit chybu založením nového UUID pro duplikáty a pokračovat\?</string>
|
||||
<string name="database_opened">Databáze otevřena</string>
|
||||
<string name="clipboard_explanation_summary">Kopírovat kolonky záznamů pomocí schránky Vašeho zařízení</string>
|
||||
<string name="advanced_unlock_explanation_summary">Pro snadnější otevření databáze použít odemykání zařízení</string>
|
||||
<string name="device_unlock_explanation_summary">Pro snadnější otevření databáze použít odemykání zařízení</string>
|
||||
<string name="database_data_compression_title">Komprese dat</string>
|
||||
<string name="database_data_compression_summary">Komprese dat snižuje velikost databáze</string>
|
||||
<string name="max_history_items_title">Maximální počet</string>
|
||||
@@ -493,27 +491,27 @@
|
||||
<string name="select_entry">Vybrat záznam</string>
|
||||
<string name="back_to_previous_keyboard">Zpět na předchozí klávesnici</string>
|
||||
<string name="custom_fields">Vlastní kolonky</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Odstranit všechny šifrovací klíče související s rozpoznáním odemykání zařízení\?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Odstranit všechny šifrovací klíče související s rozpoznáním odemykání zařízení\?</string>
|
||||
<string name="device_credential_unlock_enable_summary">Dovolí pro otevření databáze použít heslo Vašeho zařízení</string>
|
||||
<string name="device_credential_unlock_enable_title">Odemknutí heslem zařízení</string>
|
||||
<string name="device_credential">Heslo zařízení</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Zadejte heslo a pak klepněte na toto tlačítko.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Nepodařilo se inicializovat nabídku pro odemykání zařízení.</string>
|
||||
<string name="advanced_unlock_not_recognized">Otisk pro odemykání zařízení nebyl rozpoznán</string>
|
||||
<string name="advanced_unlock_invalid_key">Nepodařilo se načíst klíč odemykání zařízení. Odstraňte ho a opakujte proces rozpoznání odemknutí.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Načíst údaj z databáze pomocí dat odemykání zařízení</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Rozpoznání odemykání zařízení</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Pokud použijete rozpoznání odemykání zařízení, musíte si i nadále pamatovat hlavní heslo trezoru.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Propojit s odemykáním zařízení</string>
|
||||
<string name="credential_before_click_device_unlock_button">Zadejte heslo a pak klepněte na toto tlačítko.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Nepodařilo se inicializovat nabídku pro odemykání zařízení.</string>
|
||||
<string name="device_unlock_not_recognized">Otisk pro odemykání zařízení nebyl rozpoznán</string>
|
||||
<string name="device_unlock_invalid_key">Nepodařilo se načíst klíč odemykání zařízení. Odstraňte ho a opakujte proces rozpoznání odemknutí.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Načíst údaj z databáze pomocí dat odemykání zařízení</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Rozpoznání odemykání zařízení</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Pokud použijete rozpoznání odemykání zařízení, musíte si i nadále pamatovat hlavní heslo trezoru.</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Propojit s odemykáním zařízení</string>
|
||||
<string name="menu_keystore_remove_key">Smazat klíč odemknutí zařízení</string>
|
||||
<string name="education_advanced_unlock_title">Odemykání databáze zařízením</string>
|
||||
<string name="advanced_unlock_timeout">Časový limit odemykání zařízení</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Trvání použití odemykání zařízení, než bude obsah smazán</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Za účelem odemykání zařízení neukládat žádný šifrovaný obsah</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Dočasné odemykání zařízení</string>
|
||||
<string name="advanced_unlock_tap_delete">Klepněte pro odstranění klíčů odemykání zařízení</string>
|
||||
<string name="education_advanced_unlock_summary">Abyste rychle odemknuli databázi, propojte své heslo s naskenovanou biometrikou nebo údaji zámku zařízení.</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Vypršení odemykání zařízení</string>
|
||||
<string name="education_device_unlock_title">Odemykání databáze zařízením</string>
|
||||
<string name="device_unlock_timeout">Časový limit odemykání zařízení</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Trvání použití odemykání zařízení, než bude obsah smazán</string>
|
||||
<string name="temp_device_unlock_enable_summary">Za účelem odemykání zařízení neukládat žádný šifrovaný obsah</string>
|
||||
<string name="temp_device_unlock_enable_title">Dočasné odemykání zařízení</string>
|
||||
<string name="device_unlock_tap_delete">Klepněte pro odstranění klíčů odemykání zařízení</string>
|
||||
<string name="education_device_unlock_summary">Abyste rychle odemknuli databázi, propojte své heslo s naskenovanou biometrikou nebo údaji zámku zařízení.</string>
|
||||
<string name="temp_device_unlock_timeout_title">Vypršení odemykání zařízení</string>
|
||||
<string name="content">Obsah</string>
|
||||
<string name="error_rebuild_list">Seznam nelze řádně sestavit.</string>
|
||||
<string name="error_database_uri_null">URI databáze nelze načíst.</string>
|
||||
@@ -624,7 +622,7 @@
|
||||
<string name="colorize_password_title">Zabarvit hesla</string>
|
||||
<string name="colorize_password_summary">Zabarvit znaky hesla podle typu</string>
|
||||
<string name="warning_database_already_opened">Databáze je již otevřená, zavřete ji, než otevřete jinou</string>
|
||||
<string name="advanced_unlock_keystore_warning">Tato funkce uloží přihlašovací údaje v bezpečném úložišti klíčů Vašeho zařízení.
|
||||
<string name="device_unlock_keystore_warning">Tato funkce uloží přihlašovací údaje v bezpečném úložišti klíčů Vašeho zařízení.
|
||||
\n
|
||||
\nV závislosti na implementaci nativního API operačního systému nemusí být plně funkční.
|
||||
\n
|
||||
@@ -671,7 +669,7 @@
|
||||
<string name="info">Informace</string>
|
||||
<string name="menu_app_settings_summary">Vyhledávání, uzamčení, historie, vlastnosti</string>
|
||||
<string name="menu_form_filling_settings_summary">Klávesnice, automatické vyplnění, schránka</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometrie, údaje zařízení</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometrie, údaje zařízení</string>
|
||||
<string name="menu_database_settings_summary">Metadata, koš, šablony, historie</string>
|
||||
<string name="menu_security_settings_summary">Šifrování, funkce derivace klíče</string>
|
||||
<string name="master_key_settings_summary">Změna, obnovení</string>
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
<string name="lock">Lås</string>
|
||||
<string name="lock_database_screen_off_title">Skærmlås</string>
|
||||
<string name="lock_database_screen_off_summary">Lås databasen få sekunder efter at skærmen slukkes</string>
|
||||
<string name="advanced_unlock">Enhedsoplåsning</string>
|
||||
<string name="device_unlock">Enhedsoplåsning</string>
|
||||
<string name="biometric_unlock_enable_title">Biometrisk oplåsning</string>
|
||||
<string name="biometric_unlock_enable_summary">Giver mulighed for at scanne dine biometriske data for at åbne databasen</string>
|
||||
<string name="biometric_delete_all_key_title">Slet krypteringsnøgler</string>
|
||||
@@ -223,8 +223,6 @@
|
||||
<string name="magic_keyboard_explanation_summary">Aktiver et brugerdefineret tastatur, der udfylder adgangskoder og alle identitetsfelter</string>
|
||||
<string name="allow_no_password_title">Tillad ingen hovednøgle</string>
|
||||
<string name="allow_no_password_summary">Tillader at trykke på knappen \"Åbn\", hvis der ikke er valgt nogen legitimationsoplysninger</string>
|
||||
<string name="enable_read_only_title">Skrivebeskyttet</string>
|
||||
<string name="enable_read_only_summary">Åbn som standard databasen skrivebeskyttet</string>
|
||||
<string name="enable_education_screens_title">Praktiske tips</string>
|
||||
<string name="enable_education_screens_summary">Fremhæv elementer for at lære, hvordan appen fungerer</string>
|
||||
<string name="reset_education_screens_title">Nulstil praktiske tips</string>
|
||||
@@ -333,7 +331,7 @@
|
||||
<string name="content_description_update_from_list">Opdater</string>
|
||||
<string name="content_description_keyboard_close_fields">Luk felter</string>
|
||||
<string name="error_create_database_file">Kan ikke oprette database med denne adgangskode og nøglefil.</string>
|
||||
<string name="menu_advanced_unlock_settings">Oplåsning af enhed</string>
|
||||
<string name="menu_device_unlock_settings">Oplåsning af enhed</string>
|
||||
<string name="biometric">Biometrisk</string>
|
||||
<string name="biometric_auto_open_prompt_title">Prompt til automatisk åbning</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Anmod automatisk om oplåsning af enheden, hvis databasen er konfigureret til at bruge den</string>
|
||||
@@ -365,7 +363,7 @@
|
||||
<string name="contains_duplicate_uuid_procedure">Løs problemet ved at generere nye UUID\'er for dubletter og fortsætte\?</string>
|
||||
<string name="database_opened">Database åbnet</string>
|
||||
<string name="clipboard_explanation_summary">Kopier indtastningsfelter ved hjælp af enhedens udklipsholder</string>
|
||||
<string name="advanced_unlock_explanation_summary">Brug enhedsoplåsning til at åbne en database nemmere</string>
|
||||
<string name="device_unlock_explanation_summary">Brug enhedsoplåsning til at åbne en database nemmere</string>
|
||||
<string name="database_data_compression_title">Datakomprimering</string>
|
||||
<string name="database_data_compression_summary">Datakomprimering reducerer databasens størrelse</string>
|
||||
<string name="max_history_items_title">Maksimalt antal</string>
|
||||
@@ -497,20 +495,20 @@
|
||||
<string name="unit_kibibyte">KiB</string>
|
||||
<string name="unit_byte">B</string>
|
||||
<string name="download_canceled">Annulleret!</string>
|
||||
<string name="education_advanced_unlock_title">Database-oplåsning</string>
|
||||
<string name="education_device_unlock_title">Database-oplåsning</string>
|
||||
<string name="autofill_inline_suggestions_keyboard">Forslag til autofyld tilføjet.</string>
|
||||
<string name="select_entry">Vælg post</string>
|
||||
<string name="back_to_previous_keyboard">Tilbage til forrige tastatur</string>
|
||||
<string name="custom_fields">Brugerdefinerede felter</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Seletealle krypteringsnøgler relateret til enhedsoplåsningsgenkendelse?</string>
|
||||
<string name="advanced_unlock_tap_delete">Tryk for at slette enhedens oplåsningsnøgler</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Seletealle krypteringsnøgler relateret til enhedsoplåsningsgenkendelse?</string>
|
||||
<string name="device_unlock_tap_delete">Tryk for at slette enhedens oplåsningsnøgler</string>
|
||||
<string name="content">Indhold</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Indtast adgangskoden, og klik derefter på denne knap.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Kunne ikke initialisere oplåsningsprompt.</string>
|
||||
<string name="advanced_unlock_not_recognized">Kunne ikke genkende aftryk til oplåsning</string>
|
||||
<string name="advanced_unlock_invalid_key">Oplåsningsnøgle kan ikke læses. Slet den og gentag proceduren for genkendelse af oplåsning.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Enhedsoplåsningsgenkendelse</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Link til enhedsoplåsning</string>
|
||||
<string name="credential_before_click_device_unlock_button">Indtast adgangskoden, og klik derefter på denne knap.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Kunne ikke initialisere oplåsningsprompt.</string>
|
||||
<string name="device_unlock_not_recognized">Kunne ikke genkende aftryk til oplåsning</string>
|
||||
<string name="device_unlock_invalid_key">Oplåsningsnøgle kan ikke læses. Slet den og gentag proceduren for genkendelse af oplåsning.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Enhedsoplåsningsgenkendelse</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Link til enhedsoplåsning</string>
|
||||
<string name="warning_database_info_changed_options">Flet data, overskriv de eksterne ændringer ved at gemme databasen eller genindlæs den med de seneste ændringer.</string>
|
||||
<string name="warning_database_info_changed">Oplysningerne i databasefilen er blevet ændret uden for appen.</string>
|
||||
<string name="menu_keystore_remove_key">Slet enheds oplåsningsnøgle</string>
|
||||
@@ -521,24 +519,24 @@
|
||||
<string name="error_rebuild_list">Listen kan ikke genopbygges korrekt.</string>
|
||||
<string name="error_database_uri_null">Database-URI kan ikke hentes.</string>
|
||||
<string name="content_description_otp_information">Oplysninger om engangsadgangskode</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Udtræk databases legitimationsoplysninger med enheds oplåsningdata</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Du skal stadig huske din boks primære legitimationsoplysning, hvis du bruger oplåsningsgenkendelse på enheden.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Udtræk databases legitimationsoplysninger med enheds oplåsningdata</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Du skal stadig huske din boks primære legitimationsoplysning, hvis du bruger oplåsningsgenkendelse på enheden.</string>
|
||||
<string name="warning_database_revoked">Adgang til filen tilbagekaldt af filhåndteringsprogrammet, luk databasen og genåbn den fra dens placering.</string>
|
||||
<string name="error_start_database_action">Der opstod en fejl under udførelsen af en handling på databasen.</string>
|
||||
<string name="error_remove_file">Der opstod en fejl under fjernelsen af fildata.</string>
|
||||
<string name="error_otp_type">Den existerende OTP-type kunne ikke genkendes. Det kan være, at dens validering ikke længere genererer token korrekt.</string>
|
||||
<string name="education_advanced_unlock_summary">Sammenkæd din adgangskode med din scannede biometriske data eller enhedens legitimationsoplysninger for hurtigt at låse din database op.</string>
|
||||
<string name="education_device_unlock_summary">Sammenkæd din adgangskode med din scannede biometriske data eller enhedens legitimationsoplysninger for hurtigt at låse din database op.</string>
|
||||
<string name="enter">Enter</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Varigheden af oplåsning, før indholdet slettes</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Varigheden af oplåsning, før indholdet slettes</string>
|
||||
<string name="device_credential_unlock_enable_summary">Giver dig mulighed for at bruge dine enhedsoplysninger til at åbne databasen</string>
|
||||
<string name="device_credential_unlock_enable_title">Oplåsning via enhedsoplysninger</string>
|
||||
<string name="autofill_inline_suggestions_summary">Forsøg at vise forslag til automatisk udfyldning direkte fra et kompatibelt tastatur</string>
|
||||
<string name="autofill_inline_suggestions_title">Indbyggede forslag</string>
|
||||
<string name="backspace">Tilbagetast</string>
|
||||
<string name="advanced_unlock_timeout">Tidsudløb for oplåsning</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Udløb af oplåsning af enhed</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Gem ikke krypteret indhold for at bruge enhedsoplåsning</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Midlertidig oplåsning af enhed</string>
|
||||
<string name="device_unlock_timeout">Tidsudløb for oplåsning</string>
|
||||
<string name="temp_device_unlock_timeout_title">Udløb af oplåsning af enhed</string>
|
||||
<string name="temp_device_unlock_enable_summary">Gem ikke krypteret indhold for at bruge enhedsoplåsning</string>
|
||||
<string name="temp_device_unlock_enable_title">Midlertidig oplåsning af enhed</string>
|
||||
<string name="device_credential">Enhedens legitimation</string>
|
||||
<string name="properties">Egenskaber</string>
|
||||
<string name="error_export_app_properties">Fejl under eksport af app-indstillinger.</string>
|
||||
@@ -642,7 +640,7 @@
|
||||
<string name="show_otp_token_summary">Viser OTP-tokens på listen over poster</string>
|
||||
<string name="show_entry_colors_summary">Viser forgrund- og baggrundsfarver for en post</string>
|
||||
<string name="templates_group_enable_summary">Brug dynamiske skabeloner til at udfylde felterne i en post</string>
|
||||
<string name="advanced_unlock_keystore_warning">Denne funktion gemmer krypterede legitimationsdata i den sikre KeyStore på din enhed.
|
||||
<string name="device_unlock_keystore_warning">Denne funktion gemmer krypterede legitimationsdata i den sikre KeyStore på din enhed.
|
||||
\n
|
||||
\nAfhængigt af operativsystemets indbyggede API-implementering er funktionen muligvis ikke fuldt funktionsdygtig.
|
||||
\nKontroller kompatibiliteten og sikkerheden af KeyStore med producenten af din enhed og skaberen af den ROM, du bruger.</string>
|
||||
@@ -673,7 +671,7 @@
|
||||
<string name="menu_form_filling_settings_summary">Tastatur, autofyld, udklipsholder</string>
|
||||
<string name="configure">Konfigurér</string>
|
||||
<string name="menu_security_settings_summary">Kryptering, Nøgleafledningsfunktion</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometri, enhedens legitimation</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometri, enhedens legitimation</string>
|
||||
<string name="warning_database_notification_permission">Meddelelsestilladelsen giver dig mulighed for at vise status for databasen og låse den med en let tilgængelig knap.
|
||||
\n
|
||||
\nHvis du ikke aktiverer denne tilladelse, vil den database, der er åben i baggrunden, ikke være synlig, hvis et andet program er i forgrunden.</string>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<string name="contribution">Beiträge</string>
|
||||
<string name="feedback">Feedback</string>
|
||||
<string name="homepage">Webseite</string>
|
||||
<string name="about_description">Android-Implementierung des Passwortmanagers KeePass</string>
|
||||
<string name="about_description">Android-Implementierung des Passwortmanagers KeePass.</string>
|
||||
<string name="accept">Akzeptieren</string>
|
||||
<string name="add_entry">Eintrag hinzufügen</string>
|
||||
<string name="add_group">Gruppe hinzufügen</string>
|
||||
@@ -163,7 +163,7 @@
|
||||
<string name="file_name">Dateiname</string>
|
||||
<string name="unavailable_feature_text">Diese Funktion konnte nicht gestartet werden.</string>
|
||||
<string name="biometric_unlock_enable_summary">Ermöglicht das Scannen biometrischer Merkmale, um die Datenbank zu öffnen</string>
|
||||
<string name="advanced_unlock">Gerät entsperren</string>
|
||||
<string name="device_unlock">Gerät entsperren</string>
|
||||
<string name="biometric_unlock_enable_title">Biometrisches Entsperren</string>
|
||||
<string name="lock">Sperren</string>
|
||||
<string name="list_password_generator_options_summary">Erlaubte Zeichen für Passwortgenerator festlegen</string>
|
||||
@@ -277,9 +277,7 @@
|
||||
<string name="enable_education_screens_summary">Bedienelemente hervorheben, um die Funktionsweise der App zu lernen</string>
|
||||
<string name="menu_open_file_read_and_write">Änderbar</string>
|
||||
<string name="menu_file_selection_read_only">Schreibgeschützt</string>
|
||||
<string name="enable_read_only_title">Schreibgeschützt</string>
|
||||
<string name="education_read_only_title">Datenbank-Schreibschutz aktivieren</string>
|
||||
<string name="enable_read_only_summary">Datenbank standardmäßig schreibgeschützt öffnen</string>
|
||||
<string name="education_read_only_summary">Den Öffnungsmodus für die Sitzung ändern. \n \n„Schreibgeschützt“ verhindert unbeabsichtigte Änderungen an der Datenbank. \nMit „Änderbar“ lässt sich jedes Element frei bearbeiten, hinzufügen oder löschen.</string>
|
||||
<string name="edit_entry">Eintrag bearbeiten</string>
|
||||
<string name="error_load_database">Die Datenbank konnte nicht geladen werden.</string>
|
||||
@@ -347,7 +345,7 @@
|
||||
<string name="content_description_update_from_list">Aktualisieren</string>
|
||||
<string name="content_description_keyboard_close_fields">Felder schließen</string>
|
||||
<string name="error_create_database_file">Die Datenbank kann mit diesem Passwort und dieser Schlüsseldatei nicht erstellt werden.</string>
|
||||
<string name="menu_advanced_unlock_settings">Geräteentsperrung</string>
|
||||
<string name="menu_device_unlock_settings">Geräteentsperrung</string>
|
||||
<string name="biometric">Biometrisch</string>
|
||||
<string name="enable">Aktivieren</string>
|
||||
<string name="disable">Deaktivieren</string>
|
||||
@@ -382,7 +380,7 @@
|
||||
<string name="contains_duplicate_uuid_procedure">Problem lösen, indem neue UUIDs für Duplikate generiert werden, um fortzufahren?</string>
|
||||
<string name="database_opened">Datenbank geöffnet</string>
|
||||
<string name="clipboard_explanation_summary">Eintragsfelder mit der Zwischenablage des Geräts kopieren</string>
|
||||
<string name="advanced_unlock_explanation_summary">Geräteentsperrung verwenden, um eine Datenbank einfacher zu öffnen</string>
|
||||
<string name="device_unlock_explanation_summary">Geräteentsperrung verwenden, um eine Datenbank einfacher zu öffnen</string>
|
||||
<string name="database_data_compression_title">Datenkomprimierung</string>
|
||||
<string name="database_data_compression_summary">Datenkomprimierung reduziert die Datenbankgröße</string>
|
||||
<string name="max_history_items_title">Maximale Anzahl</string>
|
||||
@@ -502,33 +500,33 @@
|
||||
<string name="keyboard_save_search_info_title">Geteilte Informationen speichern</string>
|
||||
<string name="warning_empty_recycle_bin">Alle Knoten unwiderruflich aus dem Papierkorb löschen\?</string>
|
||||
<string name="error_field_name_already_exists">Der Feldname existiert bereits.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Du musst dich weiterhin an deinen Hauptschlüssel erinnern, wenn du die Geräteentsperrung verwendest.</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Du musst dich weiterhin an deinen Hauptschlüssel erinnern, wenn du die Geräteentsperrung verwendest.</string>
|
||||
<string name="menu_keystore_remove_key">Schlüssel für Geräteentsperrung löschen</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Verknüpfung mit Geräteentsperrung</string>
|
||||
<string name="education_advanced_unlock_summary">Eigenes Passwort mit Biometrie- oder Geräteanmeldedaten verknüpfen, um die Datenbank schnell zu entsperren.</string>
|
||||
<string name="education_advanced_unlock_title">Geräteentsperrung der Datenbank</string>
|
||||
<string name="advanced_unlock_timeout">Zeitlimit für Geräteentsperrung</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Dauer der Geräteentsperrung, bis sie zurückgesetzt wird</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Ablauf der Geräteentsperrung</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Bei Nutzung der Geräteentsperrung keine verschlüsselten Inhalte speichern</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Zeitlich begrenzte Geräteentsperrung</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Verknüpfung mit Geräteentsperrung</string>
|
||||
<string name="education_device_unlock_summary">Eigenes Passwort mit Biometrie- oder Geräteanmeldedaten verknüpfen, um die Datenbank schnell zu entsperren.</string>
|
||||
<string name="education_device_unlock_title">Geräteentsperrung der Datenbank</string>
|
||||
<string name="device_unlock_timeout">Zeitlimit für Geräteentsperrung</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Dauer der Geräteentsperrung, bis sie zurückgesetzt wird</string>
|
||||
<string name="temp_device_unlock_timeout_title">Ablauf der Geräteentsperrung</string>
|
||||
<string name="temp_device_unlock_enable_summary">Bei Nutzung der Geräteentsperrung keine verschlüsselten Inhalte speichern</string>
|
||||
<string name="temp_device_unlock_enable_title">Zeitlich begrenzte Geräteentsperrung</string>
|
||||
<string name="device_credential_unlock_enable_summary">Ermöglicht das Öffnen der Datenbank mit deinen Geräteanmeldedaten</string>
|
||||
<string name="advanced_unlock_tap_delete">Drücken, um alle Geräteentsperrschlüssel zu löschen</string>
|
||||
<string name="device_unlock_tap_delete">Drücken, um alle Geräteentsperrschlüssel zu löschen</string>
|
||||
<string name="content">Inhalt</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Datenbank mit Geräteentsperrdaten öffnen</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Datenbank mit Geräteentsperrdaten öffnen</string>
|
||||
<string name="enter">Eingabetaste</string>
|
||||
<string name="backspace">Rücktaste</string>
|
||||
<string name="select_entry">Eintrag auswählen</string>
|
||||
<string name="back_to_previous_keyboard">Zurück zur vorherigen Tastatur</string>
|
||||
<string name="custom_fields">Benutzerdefinierte Felder</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Alle zur Geräteentsperrung zugehörigen Verschlüsselungsschlüssel löschen\?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Alle zur Geräteentsperrung zugehörigen Verschlüsselungsschlüssel löschen\?</string>
|
||||
<string name="device_credential_unlock_enable_title">Entsperrung mit Geräteanmeldedaten</string>
|
||||
<string name="device_credential">Geräteanmeldedaten</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Passwort eingeben und dann diese Taste drücken.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Geräteentsperrungsabfrage konnte nicht gestartet werden.</string>
|
||||
<string name="advanced_unlock_not_recognized">Fingerabdruck für Geräteentsperrung wurde nicht erkannt</string>
|
||||
<string name="advanced_unlock_invalid_key">Der Geräteentsperrschlüssel ist nicht lesbar. Bitte diesen löschen und den Vorgang zur Entsperr-Erkennung wiederholen.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Datenbankanmeldedaten aus Geräteentsperrdaten gewinnen</string>
|
||||
<string name="credential_before_click_device_unlock_button">Passwort eingeben und dann diese Taste drücken.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Geräteentsperrungsabfrage konnte nicht gestartet werden.</string>
|
||||
<string name="device_unlock_not_recognized">Fingerabdruck für Geräteentsperrung wurde nicht erkannt</string>
|
||||
<string name="device_unlock_invalid_key">Der Geräteentsperrschlüssel ist nicht lesbar. Bitte diesen löschen und den Vorgang zur Entsperr-Erkennung wiederholen.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Datenbankanmeldedaten aus Geräteentsperrdaten gewinnen</string>
|
||||
<string name="error_rebuild_list">Die Liste kann nicht ordnungsgemäß neu erstellt werden.</string>
|
||||
<string name="error_database_uri_null">Datenbank-URI kann nicht abgerufen werden.</string>
|
||||
<string name="menu_reload_database">Daten neu laden</string>
|
||||
@@ -629,7 +627,7 @@
|
||||
<string name="navigation_drawer_open">Navigationsleiste öffnen</string>
|
||||
<string name="expired">Abgelaufen</string>
|
||||
<string name="warning_database_already_opened">Eine Datenbank ist bereits geöffnet. Schließe sie, um eine neue zu öffnen</string>
|
||||
<string name="advanced_unlock_keystore_warning">Diese Funktion speichert verschlüsselte Anmeldedaten im sicheren Schlüsselspeicher dieses Geräts.
|
||||
<string name="device_unlock_keystore_warning">Diese Funktion speichert verschlüsselte Anmeldedaten im sicheren Schlüsselspeicher dieses Geräts.
|
||||
\n
|
||||
\nJe nach der internen API-Implementierung des Betriebssystems kann sie eingeschränkt sein.
|
||||
\n
|
||||
@@ -677,7 +675,7 @@
|
||||
<string name="html_about_privacy"><strong>Es werden keine Benutzerdaten ausgelesen</strong>, diese Anwendung stellt keine Verbindung zu einem Server her, arbeitet nur lokal und respektiert vollständig die Privatsphäre der Benutzer.</string>
|
||||
<string name="merge_success">Zusammenführung erfolgreich abgeschlossen</string>
|
||||
<string name="menu_form_filling_settings_summary">Tastatur, automatisches Ausfüllen, Zwischenablage</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometrie, Geräteanmeldedaten</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometrie, Geräteanmeldedaten</string>
|
||||
<string name="menu_database_settings_summary">Metadaten, Papierkorb, Vorlagen, Verlauf</string>
|
||||
<string name="menu_app_settings_summary">Suche, Sperre, Verlauf, Eigenschaften</string>
|
||||
<string name="menu_security_settings_summary">Verschlüsselung, Schlüsselableitungsfunktion</string>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
--><resources>
|
||||
<string name="feedback">Σχόλια</string>
|
||||
<string name="homepage">Αρχική Σελίδα</string>
|
||||
<string name="about_description">Το KeePassDX είναι μία εφαρμογή Android του διαχειριστή κωδικών KeePass</string>
|
||||
<string name="about_description">Υλοποίηση του διαχειριστή κωδικών πρόσβασης KeePass για Android.</string>
|
||||
<string name="accept">Αποδοχή</string>
|
||||
<string name="add_entry">Προσθήκη καταχώρησης</string>
|
||||
<string name="add_group">Προσθήκη ομάδας</string>
|
||||
@@ -259,8 +259,6 @@
|
||||
<string name="enable_education_screens_summary">Επισήμανση στοιχείων για να μάθετε πώς λειτουργεί η εφαρμογή</string>
|
||||
<string name="menu_file_selection_read_only">Προστασία εγγραφής</string>
|
||||
<string name="menu_open_file_read_and_write">Τροποποιήσιμο</string>
|
||||
<string name="enable_read_only_title">Προστασία Εγγραφής</string>
|
||||
<string name="enable_read_only_summary">Ανοίξτε τη βάση δεδομένων μόνο για ανάγνωση από προεπιλογή</string>
|
||||
<string name="education_read_only_title">Προστασία Εγγραφής της βάσης δεδομένων σας</string>
|
||||
<string name="education_read_only_summary">Αλλάξτε τη λειτουργία ανοίγματος για το session.
|
||||
\n
|
||||
@@ -325,11 +323,11 @@
|
||||
<string name="content_description_update_from_list">Ενημέρωση</string>
|
||||
<string name="content_description_keyboard_close_fields">Κλείσιμο πεδίων</string>
|
||||
<string name="error_create_database_file">Δεν είναι δυνατή η δημιουργία βάσης δεδομένων με αυτόν τον κωδικό πρόσβασης και το αρχείο κλειδί.</string>
|
||||
<string name="menu_advanced_unlock_settings">Ξεκλείδωμα συσκευής</string>
|
||||
<string name="menu_device_unlock_settings">Ξεκλείδωμα συσκευής</string>
|
||||
<string name="unavailable">Μη διαθέσιμο</string>
|
||||
<string name="menu_appearance_settings">Εμφάνιση</string>
|
||||
<string name="biometric">Βιομετρία</string>
|
||||
<string name="advanced_unlock">Ξεκλείδωμα συσκευής</string>
|
||||
<string name="device_unlock">Ξεκλείδωμα συσκευής</string>
|
||||
<string name="biometric_unlock_enable_title">Βιομετρικό ξεκλείδωμα</string>
|
||||
<string name="biometric_unlock_enable_summary">Σας επιτρέπει να σαρώσετε το βιομετρικό σας για να ανοίξετε τη βάση δεδομένων</string>
|
||||
<string name="biometric_auto_open_prompt_title">Αυτόματο άνοιγμα προτροπής</string>
|
||||
@@ -366,7 +364,7 @@
|
||||
<string name="autofill_explanation_summary">Ενεργοποιήστε την αυτόματη συμπλήρωση για να συμπληρώσετε γρήγορα φόρμες σε άλλες εφαρμογές</string>
|
||||
<string name="database_opened">Η Βάση Δεδομένων άνοιξε</string>
|
||||
<string name="clipboard_explanation_summary">Αντιγράψτε τα πεδία εισαγωγής χρησιμοποιώντας το πρόχειρο της συσκευής σας</string>
|
||||
<string name="advanced_unlock_explanation_summary">Χρησιμοποιήστε το ξεκλείδωμα συσκευής για να ανοίξετε μια βάση δεδομένων πιο εύκολα</string>
|
||||
<string name="device_unlock_explanation_summary">Χρησιμοποιήστε το ξεκλείδωμα συσκευής για να ανοίξετε μια βάση δεδομένων πιο εύκολα</string>
|
||||
<string name="database_data_compression_title">Συμπίεση Δεδομένων</string>
|
||||
<string name="database_data_compression_summary">Η συμπίεση δεδομένων μειώνει το μέγεθος της βάσης δεδομένων</string>
|
||||
<string name="max_history_items_title">Μέγιστος αριθμός</string>
|
||||
@@ -487,32 +485,32 @@
|
||||
<string name="search_mode">Λειτουργία αναζήτησης</string>
|
||||
<string name="error_registration_read_only">Η αποθήκευση ενός νέου αντικειμένου δεν επιτρέπεται σε μια βάση δεδομένων μόνο για ανάγνωση.</string>
|
||||
<string name="error_field_name_already_exists">Το όνομα πεδίου υπάρχει ήδη.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Σύνδεσμος για ξεκλείδωμα συσκευής</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Θα πρέπει ακόμα να θυμάστε τα κύρια διαπιστευτήρια της κρύπτης εάν χρησιμοποιείτε την αναγνώριση ξεκλειδώματος συσκευής.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Αναγνώριση ξεκλειδώματος συσκευής</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Σύνδεσμος για ξεκλείδωμα συσκευής</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Θα πρέπει ακόμα να θυμάστε τα κύρια διαπιστευτήρια της κρύπτης εάν χρησιμοποιείτε την αναγνώριση ξεκλειδώματος συσκευής.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Αναγνώριση ξεκλειδώματος συσκευής</string>
|
||||
<string name="menu_keystore_remove_key">Διαγραφή κλειδιού ξεκλειδώματος συσκευής</string>
|
||||
<string name="enter">Enter</string>
|
||||
<string name="backspace">Backspace</string>
|
||||
<string name="select_entry">Επιλέξτε καταχώριση</string>
|
||||
<string name="back_to_previous_keyboard">Επιστροφή στο προηγούμενο πληκτρολόγιο</string>
|
||||
<string name="custom_fields">Προσαρμοσμένα πεδία</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Διαγραφή όλων των κλειδιών κρυπτογράφησης που σχετίζονται με την αναγνώριση ξεκλειδώματος συσκευής;</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Διαγραφή όλων των κλειδιών κρυπτογράφησης που σχετίζονται με την αναγνώριση ξεκλειδώματος συσκευής;</string>
|
||||
<string name="device_credential_unlock_enable_summary">Σας επιτρέπει να χρησιμοποιήσετε τα διαπιστευτήρια της συσκευής σας για να ανοίξετε τη βάση δεδομένων</string>
|
||||
<string name="device_credential_unlock_enable_title">Ξεκλείδωμα διαπιστευτηρίων συσκευής</string>
|
||||
<string name="device_credential">Διαπιστευτήρια συσκευής</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Πληκτρολογήστε τον κωδικό πρόσβασης, και στη συνέχεια κάντε κλικ αυτό το κουμπί.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Δεν είναι δυνατή η προετοιμασία της προτροπής ξεκλειδώματος συσκευής.</string>
|
||||
<string name="advanced_unlock_not_recognized">Δεν ήταν δυνατή η αναγνώριση αποτυπώματος ξεκλειδώματος συσκευής</string>
|
||||
<string name="advanced_unlock_invalid_key">Δεν είναι δυνατή η ανάγνωση του κλειδιού ξεκλειδώματος της συσκευής. Διαγράψτε το και επαναλάβετε τη διαδικασία αναγνώρισης ξεκλειδώματος.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Εξαγωγή διαπιστευτηρίων βάσης δεδομένων με δεδομένα ξεκλειδώματος συσκευής</string>
|
||||
<string name="education_advanced_unlock_summary">Συνδέστε τον κωδικό πρόσβασής σας με το σαρωμένο βιομετρικό ή τα διαπιστευτήρια της συσκευής σας για να ξεκλειδώσετε γρήγορα τη βάση δεδομένων σας.</string>
|
||||
<string name="education_advanced_unlock_title">Ξεκλείδωμα βάσης δεδομένων συσκευής</string>
|
||||
<string name="advanced_unlock_timeout">Χρονικό όριο ξεκλειδώματος συσκευής</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Προσωρινό ξεκλείδωμα συσκευής</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Μην αποθηκεύετε κρυπτογραφημένο περιεχόμενο για να χρησιμοποιήσετε το ξεκλείδωμα της συσκευής</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Διάρκεια χρήσης ξεκλειδώματος συσκευής πριν από τη διαγραφή του περιεχομένου της</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Λήξη ξεκλειδώματος συσκευής</string>
|
||||
<string name="advanced_unlock_tap_delete">Πατήστε για να διαγράψετε τα κλειδιά ξεκλειδώματος της συσκευής</string>
|
||||
<string name="credential_before_click_device_unlock_button">Πληκτρολογήστε τον κωδικό πρόσβασης, και στη συνέχεια κάντε κλικ αυτό το κουμπί.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Δεν είναι δυνατή η προετοιμασία της προτροπής ξεκλειδώματος συσκευής.</string>
|
||||
<string name="device_unlock_not_recognized">Δεν ήταν δυνατή η αναγνώριση αποτυπώματος ξεκλειδώματος συσκευής</string>
|
||||
<string name="device_unlock_invalid_key">Δεν είναι δυνατή η ανάγνωση του κλειδιού ξεκλειδώματος της συσκευής. Διαγράψτε το και επαναλάβετε τη διαδικασία αναγνώρισης ξεκλειδώματος.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Εξαγωγή διαπιστευτηρίων βάσης δεδομένων με δεδομένα ξεκλειδώματος συσκευής</string>
|
||||
<string name="education_device_unlock_summary">Συνδέστε τον κωδικό πρόσβασής σας με το σαρωμένο βιομετρικό ή τα διαπιστευτήρια της συσκευής σας για να ξεκλειδώσετε γρήγορα τη βάση δεδομένων σας.</string>
|
||||
<string name="education_device_unlock_title">Ξεκλείδωμα βάσης δεδομένων συσκευής</string>
|
||||
<string name="device_unlock_timeout">Χρονικό όριο ξεκλειδώματος συσκευής</string>
|
||||
<string name="temp_device_unlock_enable_title">Προσωρινό ξεκλείδωμα συσκευής</string>
|
||||
<string name="temp_device_unlock_enable_summary">Μην αποθηκεύετε κρυπτογραφημένο περιεχόμενο για να χρησιμοποιήσετε το ξεκλείδωμα της συσκευής</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Διάρκεια χρήσης ξεκλειδώματος συσκευής πριν από τη διαγραφή του περιεχομένου της</string>
|
||||
<string name="temp_device_unlock_timeout_title">Λήξη ξεκλειδώματος συσκευής</string>
|
||||
<string name="device_unlock_tap_delete">Πατήστε για να διαγράψετε τα κλειδιά ξεκλειδώματος της συσκευής</string>
|
||||
<string name="content">Περιεχόμενα</string>
|
||||
<string name="error_rebuild_list">Δεν είναι δυνατή η σωστή αναδημιουργία της λίστας.</string>
|
||||
<string name="error_database_uri_null">Δεν είναι δυνατή η ανάκτηση του URI βάσης δεδομένων.</string>
|
||||
@@ -620,7 +618,7 @@
|
||||
<string name="menu_save_copy_to">Αποθήκευση αντιγράφου στο …</string>
|
||||
<string name="expired">Ληγμένο</string>
|
||||
<string name="warning_database_already_opened">Μια βάση δεδομένων είναι ήδη ανοιχτή, κλείστε την πρώτα για να ανοίξετε τη νέα</string>
|
||||
<string name="advanced_unlock_keystore_warning">Αυτή η δυνατότητα θα αποθηκεύσει κρυπτογραφημένα δεδομένα διαπιστευτηρίων στο ασφαλές KeyStore της συσκευής σας.
|
||||
<string name="device_unlock_keystore_warning">Αυτή η δυνατότητα θα αποθηκεύσει κρυπτογραφημένα δεδομένα διαπιστευτηρίων στο ασφαλές KeyStore της συσκευής σας.
|
||||
\n
|
||||
\nΑνάλογα με την εγγενή υλοποίηση API του λειτουργικού συστήματος, ενδέχεται να μην είναι πλήρως λειτουργικό.
|
||||
\n
|
||||
@@ -670,7 +668,7 @@
|
||||
<string name="info">Πληροφορίες</string>
|
||||
<string name="menu_app_settings_summary">Αναζήτηση, κλείδωμα, ιστορικό, ιδιότητες</string>
|
||||
<string name="menu_form_filling_settings_summary">Πληκτρολόγιο, αυτόματη συμπλήρωση, πρόχειρο</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Βιομετρία, διαπιστευτήριο συσκευής</string>
|
||||
<string name="menu_device_unlock_settings_summary">Βιομετρία, διαπιστευτήριο συσκευής</string>
|
||||
<string name="menu_database_settings_summary">Μεταδεδομένα, κάδος ανακύκλωσης, πρότυπα, ιστορικό</string>
|
||||
<string name="menu_security_settings_summary">Κρυπτογράφηση, λειτουργία παραγωγής κλειδιού</string>
|
||||
<string name="master_key_settings_summary">Αλλαγή, ανανέωση</string>
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<string name="colorize_password_summary">Colourise password characters by type</string>
|
||||
<string name="content_description_entry_background_color">Entry background colour</string>
|
||||
<string name="invalid_db_sig">Could not recognise the database format.</string>
|
||||
<string name="advanced_unlock_not_recognized">Could not recognise device unlock print</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Unable to initialise device unlock prompt.</string>
|
||||
<string name="device_unlock_not_recognized">Could not recognise device unlock print</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Unable to initialise device unlock prompt.</string>
|
||||
<string name="download_initialization">Initialising…</string>
|
||||
<string name="download_finalization">Finalising…</string>
|
||||
<string name="download_canceled">Cancelled!</string>
|
||||
|
||||
@@ -153,4 +153,4 @@
|
||||
<string name="file_manager_install_description">Por krei, malfermi kaj konservi datumbazaj dosieroj necesiĝas dosier-manipulilo, kiu akceptas intenco-agojn ACTION_CREATE_DOCUMENT kaj ACTION_OPEN_DOCUMENT.</string>
|
||||
<string name="app_timeout_summary">Periodo de malaktiveco antaŭ ŝlosado de datumbazo</string>
|
||||
<string name="extended_ASCII">Etendita ASCII</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
--><resources>
|
||||
<string name="feedback">Comentarios</string>
|
||||
<string name="homepage">Página de inicio</string>
|
||||
<string name="about_description">Implementación para Android del gestor de contraseñas KeePass</string>
|
||||
<string name="about_description">Implementación para Android del gestor de contraseñas KeePass.</string>
|
||||
<string name="accept">Aceptar</string>
|
||||
<string name="add_entry">Añadir apunte</string>
|
||||
<string name="add_group">Añadir grupo</string>
|
||||
@@ -183,7 +183,7 @@
|
||||
<string name="lock">Bloquear</string>
|
||||
<string name="lock_database_screen_off_title">Bloqueo de pantalla</string>
|
||||
<string name="lock_database_screen_off_summary">Bloquear la base de datos después de unos segundos cuando la pantalla esté apagada</string>
|
||||
<string name="advanced_unlock">Desbloqueo del dispositivo</string>
|
||||
<string name="device_unlock">Desbloqueo del dispositivo</string>
|
||||
<string name="biometric_unlock_enable_title">Desbloqueo biométrico</string>
|
||||
<string name="biometric_unlock_enable_summary">Le permite analizar sus datos biométricos para abrir la base de datos</string>
|
||||
<string name="biometric_delete_all_key_title">Eliminar claves de cifrado</string>
|
||||
@@ -271,8 +271,6 @@
|
||||
<string name="allow_no_password_summary">Permite pulsar el botón \"Abrir\" si no son seleccionadas las credenciales</string>
|
||||
<string name="enable_education_screens_title">Consejos educativos</string>
|
||||
<string name="enable_education_screens_summary">Destaca los elementos para aprender cómo funciona la aplicación</string>
|
||||
<string name="enable_read_only_title">Protegida contra escritura</string>
|
||||
<string name="enable_read_only_summary">Abre la base de datos como solo lectura por defecto</string>
|
||||
<string name="education_read_only_title">Proteja la base de datos contra escritura</string>
|
||||
<string name="keyboard_name">Magikeyboard</string>
|
||||
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
|
||||
@@ -324,7 +322,7 @@
|
||||
<string name="content_description_update_from_list">Actualizar</string>
|
||||
<string name="content_description_keyboard_close_fields">Cerrar campos</string>
|
||||
<string name="error_create_database_file">No se puede crear la base de datos con esta contraseña y este cerrojo.</string>
|
||||
<string name="menu_advanced_unlock_settings">Desbloqueo de dispositivos</string>
|
||||
<string name="menu_device_unlock_settings">Desbloqueo de dispositivos</string>
|
||||
<string name="biometric">Biometría</string>
|
||||
<string name="biometric_auto_open_prompt_title">Abrir solicitud automáticamente</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Solicita auto-desbloqueo del dispositivo si la base de datos está configurada para utilizarlo</string>
|
||||
@@ -372,7 +370,7 @@
|
||||
<string name="settings_database_force_changing_master_key_summary">Requiere cambiar la clave maestra (días)</string>
|
||||
<string name="settings_database_force_changing_master_key_title">Forzar renovación</string>
|
||||
<string name="max_history_size_title">Tamaño máximo</string>
|
||||
<string name="advanced_unlock_explanation_summary">Utiliza el desbloqueo del dispositivo avanzado para abrir una base de datos más fácilmente</string>
|
||||
<string name="device_unlock_explanation_summary">Utiliza el desbloqueo del dispositivo avanzado para abrir una base de datos más fácilmente</string>
|
||||
<string name="lock_database_show_button_summary">Muestra el botón de bloqueo en la interfaz de usuario</string>
|
||||
<string name="lock_database_show_button_title">Mostrar botón de bloqueo</string>
|
||||
<string name="autofill_preference_title">Configuración de autocompletado</string>
|
||||
@@ -430,26 +428,26 @@
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Elimina los adjuntos contenidos en la base de datos pero no vinculados a un apunte</string>
|
||||
<string name="database_data_remove_unlinked_attachments_title">Eliminar datos no vinculados</string>
|
||||
<string name="data">Datos</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">¿Borrar todas las claves de cifrado relacionadas con el reconocimiento de desbloqueo avanzado?</string>
|
||||
<string name="advanced_unlock_timeout">Tiempo de espera de desbloqueo del dispositivo</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Duración del uso del desbloqueo del dispositivo antes de borrar su contenido</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Caducidad del desbloqueo del dispositivo</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">No almacenar ningún contenido cifrado para usar el desbloqueo avanzado</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Desbloqueo temporal de los dispositivos</string>
|
||||
<string name="device_unlock_delete_all_key_warning">¿Borrar todas las claves de cifrado relacionadas con el reconocimiento de desbloqueo avanzado?</string>
|
||||
<string name="device_unlock_timeout">Tiempo de espera de desbloqueo del dispositivo</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Duración del uso del desbloqueo del dispositivo antes de borrar su contenido</string>
|
||||
<string name="temp_device_unlock_timeout_title">Caducidad del desbloqueo del dispositivo</string>
|
||||
<string name="temp_device_unlock_enable_summary">No almacenar ningún contenido cifrado para usar el desbloqueo avanzado</string>
|
||||
<string name="temp_device_unlock_enable_title">Desbloqueo temporal de los dispositivos</string>
|
||||
<string name="device_credential_unlock_enable_summary">Le permite usar la credenciales de su dispositivo para abrir la base de datos</string>
|
||||
<string name="device_credential_unlock_enable_title">Desbloqueo de credenciales del dispositivo</string>
|
||||
<string name="advanced_unlock_tap_delete">Pulsa para eliminar las teclas de desbloqueo avanzado</string>
|
||||
<string name="device_unlock_tap_delete">Pulsa para eliminar las teclas de desbloqueo avanzado</string>
|
||||
<string name="content">Contenido</string>
|
||||
<string name="clipboard_explanation_summary">Copia los campos del apunte usando el portapapeles de su dispositivo</string>
|
||||
<string name="device_credential">Credenciales del dispositivo</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Teclee la contraseña y luego pulse sobre este botón.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">No se puede inicializar el aviso de desbloqueo avanzado.</string>
|
||||
<string name="advanced_unlock_not_recognized">No se ha podido reconocer la impresión de desbloqueo avanzado</string>
|
||||
<string name="advanced_unlock_invalid_key">No se puede leer la clave de desbloqueo del dispositivo. Por favor, bórrala y repite el procedimiento de reconocimiento del desbloqueo.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Extraer la credencial de la base de datos con los datos de desbloqueo del dispositivo</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Reconocimiento de desbloqueo del dispositivo</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Aún debes recordar la credencial principal de tu caja fuerte si usas el reconocimiento para el desbloqueo del dispositivo.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Enlace para el desbloqueo del dispositivo</string>
|
||||
<string name="credential_before_click_device_unlock_button">Teclee la contraseña y luego pulse sobre este botón.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">No se puede inicializar el aviso de desbloqueo avanzado.</string>
|
||||
<string name="device_unlock_not_recognized">No se ha podido reconocer la impresión de desbloqueo avanzado</string>
|
||||
<string name="device_unlock_invalid_key">No se puede leer la clave de desbloqueo del dispositivo. Por favor, bórrala y repite el procedimiento de reconocimiento del desbloqueo.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Extraer la credencial de la base de datos con los datos de desbloqueo del dispositivo</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Reconocimiento de desbloqueo del dispositivo</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Aún debes recordar la credencial principal de tu caja fuerte si usas el reconocimiento para el desbloqueo del dispositivo.</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Enlace para el desbloqueo del dispositivo</string>
|
||||
<string name="keystore_not_accessible">El almacén de claves no está debidamente inicializado.</string>
|
||||
<string name="biometric_security_update_required">Se requiere actualización de seguridad biométrica.</string>
|
||||
<string name="configure_biometric">No se ha inscrito ninguna credencial biométrica o del dispositivo.</string>
|
||||
@@ -474,8 +472,8 @@
|
||||
<string name="upload_attachment">Subir %1$s</string>
|
||||
<string name="education_setup_OTP_summary">Configura la gestión de contraseñas de un solo uso (HOTP / TOTP) para generar un testigo solicitado para la autenticación de dos factores (2FA).</string>
|
||||
<string name="education_setup_OTP_title">Establecer contraseña de un solo uso</string>
|
||||
<string name="education_advanced_unlock_summary">Vincule su contraseña con su credencial biométrica o del dispositivo escaneada para desbloquear rápidamente su base de datos.</string>
|
||||
<string name="education_advanced_unlock_title">Desbloqueo de la base de datos de los dispositivos</string>
|
||||
<string name="education_device_unlock_summary">Vincule su contraseña con su credencial biométrica o del dispositivo escaneada para desbloquear rápidamente su base de datos.</string>
|
||||
<string name="education_device_unlock_title">Desbloqueo de la base de datos de los dispositivos</string>
|
||||
<string name="autofill_read_only_save">No se permite guardar datos en una base de datos abierta como de solo lectura.</string>
|
||||
<string name="autofill_block_restart">Reinicia la aplicación que contiene el formulario para activar el bloqueo.</string>
|
||||
<string name="autofill_web_domain_blocklist_summary">Lista de dominios web en los que se impide el autocompletado</string>
|
||||
@@ -617,7 +615,7 @@
|
||||
<string name="consider_chars_filter">Considerar caracteres</string>
|
||||
<string name="entropy_calculate">Entropía: Calcular…</string>
|
||||
<string name="word_separator">Separador</string>
|
||||
<string name="advanced_unlock_keystore_warning">Esta función almacenará datos de credenciales cifrados en el almacén de claves seguro del dispositivo.
|
||||
<string name="device_unlock_keystore_warning">Esta función almacenará datos de credenciales cifrados en el almacén de claves seguro del dispositivo.
|
||||
\n
|
||||
\nDependiendo de la implementación de la API nativa del sistema operativo, puede que no sea totalmente funcional.
|
||||
\n
|
||||
@@ -661,7 +659,7 @@
|
||||
<string name="menu_app_settings_summary">Buscar, bloquear, historial, propiedades</string>
|
||||
<string name="menu_form_filling_settings_summary">Teclado, autocompletar, portapapeles</string>
|
||||
<string name="menu_database_settings_summary">Metadatos, papelera de reciclaje, plantillas, historial</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometría, credencial del dispositivo</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometría, credencial del dispositivo</string>
|
||||
<string name="menu_security_settings_summary">Cifrado, función de derivación de las claves</string>
|
||||
<string name="master_key_settings_summary">Cambio, renovación</string>
|
||||
<string name="warning_database_notification_permission">El permiso de notificación te permite mostrar el estado de la base de datos y bloquearla con un botón de fácil acceso.\n\nSi no activas este permiso, la base de datos abierta en segundo plano no será visible si hay otra aplicación en primer plano.</string>
|
||||
@@ -693,4 +691,5 @@
|
||||
<string name="generate_keyfile">Generar archivo de claves</string>
|
||||
<string name="recursive_number_entries_title">Número recursivo de entradas</string>
|
||||
<string name="hide_templates_summary">Las plantillas no se muestran</string>
|
||||
<string name="error_otp_secret_length">La clave secreta debe tener al menos %1$d caracteres.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="homepage">Meie veebisait</string>
|
||||
<string name="about_description">KeePassi salasõnahalduri Androidi variant</string>
|
||||
<string name="about_description">KeePassi salasõnahalduri variant Androidile.</string>
|
||||
<string name="contact">Meie kontaktid</string>
|
||||
<string name="info">Teave</string>
|
||||
<string name="accept">Nõustu</string>
|
||||
@@ -84,7 +84,7 @@
|
||||
<string name="content_description_hardware_key_checkbox">Füüsilise võtme märkruut</string>
|
||||
<string name="content_description_credentials_information">Mandaatide info</string>
|
||||
<string name="content_description_nav_header">Navigatsiooni päis</string>
|
||||
<string name="retrieving_db_key">Laadime andmebaasi võtme…</string>
|
||||
<string name="retrieving_db_key">Laadin andmebaasi võtit…</string>
|
||||
<string name="content_description_passphrase_word_count">Sõnu salafraasis</string>
|
||||
<string name="default_checkbox">Kasuta vaikeandmebaasina</string>
|
||||
<string name="entry_accessed">Viimati kasutatud</string>
|
||||
@@ -128,7 +128,7 @@
|
||||
<string name="error_nokeyfile">Vali võtmefail.</string>
|
||||
<string name="error_pass_match">Salasõnad ei klapi.</string>
|
||||
<string name="error_create_database">Andmebaasifaili loomine ei õnnestunud.</string>
|
||||
<string name="entry_url">URL</string>
|
||||
<string name="entry_url">Võrguaadress</string>
|
||||
<string name="error_file_not_create">Faili loomine ei õnnestunud.</string>
|
||||
<string name="entry_otp">Ühekordne salasõna</string>
|
||||
<string name="clipboard_timeout_summary">Lõikelauale kopeeritud andmete hoidmise aeg (kui sinu seade sellist võimalust toetab)</string>
|
||||
@@ -245,7 +245,7 @@
|
||||
<string name="list_size_title">Loendite suurus</string>
|
||||
<string name="list_size_summary">Teksti suurus loendites</string>
|
||||
<string name="creating_database">Loome salasõnade andmebaasi…</string>
|
||||
<string name="loading_database">Laadime salasõnade andmebaasi…</string>
|
||||
<string name="loading_database">Laadin salasõnade andmebaasi…</string>
|
||||
<string name="lowercase">väiketähed</string>
|
||||
<string name="about">Rakenduse teave</string>
|
||||
<string name="menu_change_key_settings">Muuda peavõtit</string>
|
||||
@@ -255,8 +255,8 @@
|
||||
<string name="menu_app_settings_summary">Otsing, lukustus, ajalugu, omadused</string>
|
||||
<string name="menu_form_filling_settings">Vormide täitmine</string>
|
||||
<string name="menu_form_filling_settings_summary">Klahvistik, automaattäide, lõikelaud</string>
|
||||
<string name="menu_advanced_unlock_settings">Seadme lukustuse eemaldamine</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biomeetriline, nutiseadme reeglitega</string>
|
||||
<string name="menu_device_unlock_settings">Seadme lukustuse eemaldamine</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biomeetriline, nutiseadme reeglitega</string>
|
||||
<string name="menu_database_settings">Andmebaasi seadistused</string>
|
||||
<string name="menu_database_settings_summary">Metateave, prügikast, mallid, ajalugu</string>
|
||||
<string name="menu_security_settings">Turvalisuse seadistused</string>
|
||||
@@ -314,7 +314,7 @@
|
||||
<string name="sort_last_access_time">Viimati kasutamise aja alusel</string>
|
||||
<string name="version_label">Versioon: %1$s</string>
|
||||
<string name="configure">Seadista</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Sa pead igal juhul oma salasõnalaeka salasõna meeles pidama - seda ka siis, kui kasutad muid seadmes leiduvaid lukustuse eemaldamise võimalusi.</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Sa pead igal juhul oma salasõnalaeka salasõna meeles pidama - seda ka siis, kui kasutad muid seadmes leiduvaid lukustuse eemaldamise võimalusi.</string>
|
||||
<string name="file_name">Failinimi</string>
|
||||
<string name="path">Asukoht</string>
|
||||
<string name="assign_master_key">Seadista peavõti</string>
|
||||
@@ -440,8 +440,8 @@
|
||||
<string name="merge_success">Mestimine õnnestus</string>
|
||||
<string name="biometric_security_update_required">Vajalik on biomeetrilise turvalisuse uuendus.</string>
|
||||
<string name="encrypted_value_stored">Krüptitud salasõna on salvestatud</string>
|
||||
<string name="advanced_unlock_not_recognized">Ei õnnestunud tuvastada lukustuse eemaldamiseks vajalikku tunnust</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Seadme lukustuse eemaldamise päringu käivitamine ei õnnestu.</string>
|
||||
<string name="device_unlock_not_recognized">Ei õnnestunud tuvastada lukustuse eemaldamiseks vajalikku tunnust</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Seadme lukustuse eemaldamise päringu käivitamine ei õnnestu.</string>
|
||||
<string name="biometric">Biomeetriline</string>
|
||||
<string name="device_credential">Seadme autentimine</string>
|
||||
<string name="autofill">Automaattäide</string>
|
||||
@@ -465,7 +465,7 @@
|
||||
<string name="warning_database_info_changed_options">Sa võid kas andmed mestida, kirjutada välised muudatused üle või laadida viimased välised muudatused.</string>
|
||||
<string name="unlock_and_link_biometric">Seadme lukustuse eemaldamise link</string>
|
||||
<string name="later">Hiljem</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Sisesta salasõna ja siis klõpsi seda nuppu.</string>
|
||||
<string name="credential_before_click_device_unlock_button">Sisesta salasõna ja siis klõpsi seda nuppu.</string>
|
||||
<string name="html_text_dev_feature_work_hard">Me näeme hoolega vaeva, et see funktsionaalsus leiduks üsna pea mõnes rakenduse järgmises versioonis.</string>
|
||||
<string name="list_password_generator_options_title">Tähemärgid salasõnas</string>
|
||||
<string name="allow_copy_password_warning">Hoiatus: süsteemiülene lõikelaud on kõikide rakenduste kasutuses. Kui sa kopeerid sinna delikaatseid andmeid, siis muu tarkvara võib seda seal näha. Kui sa kasutad KDE Connecti või muud lõikelaua jagamise teenust, siis sõltuvalt seadistustest võivad need delikaatsed andmed olla nähtavad ka muudes seadmetes.</string>
|
||||
@@ -531,7 +531,6 @@
|
||||
<string name="autofill_inline_suggestions_keyboard">Automaattäite soovitused on lisatud.</string>
|
||||
<string name="autofill_read_only_save">Kui andmebaas on avatud ainult lugemiseks, siis andmete salvestamine pole võimalik.</string>
|
||||
<string name="delete_entered_password_summary">Kustutab salasõna, mis oli kasutusel andmebaasiga ühenduse loomise ajal</string>
|
||||
<string name="enable_read_only_summary">Vaikimisi ava andmebaas vaid lugemiseks</string>
|
||||
<string name="enable_screenshot_mode_summary">Luba teistel rakendusel teha sellest rakendusest ekraanitõmmist või salvestada tema ekraanivaadet</string>
|
||||
<string name="autofill_close_database_title">Sulge andmebaas</string>
|
||||
<string name="autofill_close_database_summary">Peale automaattäite kasutamist sulega andmebaas</string>
|
||||
@@ -547,7 +546,6 @@
|
||||
<string name="allow_no_password_title">Ära kasuta peavõtit</string>
|
||||
<string name="allow_no_password_summary">Kui kasutajanimi või salasõna pole valitud, siis võimaldab klõpsida „Ava“ nuppu</string>
|
||||
<string name="delete_entered_password_title">Kustuta salasõna</string>
|
||||
<string name="enable_read_only_title">Kirjutuskaitstud</string>
|
||||
<string name="enable_screenshot_mode_title">Ekraanitõmmiste lubamine</string>
|
||||
<string name="enable_education_screens_title">Koolitusvihjed</string>
|
||||
<string name="enable_education_screens_summary">Õppimaks, kuidas rakendus toimib, tõsta esile kasutajaliidese elemente</string>
|
||||
@@ -563,23 +561,23 @@
|
||||
<string name="education_new_node_summary">Sinu digitaalsed identiteedid on vormistatud kirjetena.\n\nÜlevaatlikkuse mõttes saad neid rühmitada gruppidena (kaustadena).</string>
|
||||
<string name="education_create_database_summary">Loo oma esimene andmebaasifail, mis on mõeldud salasõnade halduseks.</string>
|
||||
<string name="education_select_database_summary">Ava varemloodud andmebaasifail, mis on mõeldud salasõnade halduseks.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Link seadme lukustuse eemaldamisele</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Link seadme lukustuse eemaldamisele</string>
|
||||
<string name="unlock">Eemalda lukustus</string>
|
||||
<string name="advanced_unlock_tap_delete">Seadme lukustuse eemaldamise võtmete kustutamiseks klõpsi</string>
|
||||
<string name="advanced_unlock_explanation_summary">Andmebaasi mugavamaks avamiseks kasuta nutiseadme lukustuse eemaldamise võimalusi</string>
|
||||
<string name="device_unlock_tap_delete">Seadme lukustuse eemaldamise võtmete kustutamiseks klõpsi</string>
|
||||
<string name="device_unlock_explanation_summary">Andmebaasi mugavamaks avamiseks kasuta nutiseadme lukustuse eemaldamise võimalusi</string>
|
||||
<string name="device_credential_unlock_enable_title">Lukustuse eemaldamine nutiseadme autentimisega</string>
|
||||
<string name="biometric_unlock_enable_title">Biomeetriline lukustuse eemaldamine</string>
|
||||
<string name="biometric_unlock_enable_summary">Saad andmebaasi avamiseks kasutada nutiseadme biomeetrilise autentimise võimalusi</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Seadme lukustuse eemaldamise aegumine</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Lukustuse eemaldamise kestus enne kui tema sisu kustutatakse</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Ära salvesta mitte mingit krüptitud sisu nutiseadme lukustuse eemaldamiseks</string>
|
||||
<string name="advanced_unlock_timeout">Seadme lukustuse eemaldamise ajalõpp</string>
|
||||
<string name="temp_device_unlock_timeout_title">Seadme lukustuse eemaldamise aegumine</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Lukustuse eemaldamise kestus enne kui tema sisu kustutatakse</string>
|
||||
<string name="temp_device_unlock_enable_summary">Ära salvesta mitte mingit krüptitud sisu nutiseadme lukustuse eemaldamiseks</string>
|
||||
<string name="device_unlock_timeout">Seadme lukustuse eemaldamise ajalõpp</string>
|
||||
<string name="device_credential_unlock_enable_summary">Saad andmebaasi avamiseks kasutada nutiseadme tavaautentimise võimalusi</string>
|
||||
<string name="biometric_auto_open_prompt_title">Ava viip automaatselt</string>
|
||||
<string name="biometric_delete_all_key_summary">Kustuta kõik krüptovõtmed, mis on kasutusel nutiseadme-põhise autentimise alusel andmebaasi lukustuse eemaldamisega</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Kas kustutame kõik krüptovõtmed, mis on kasutusel nutiseadme-põhise autentimise alusel andmebaasi lukustuse eemaldamisega?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Kas kustutame kõik krüptovõtmed, mis on kasutusel nutiseadme-põhise autentimise alusel andmebaasi lukustuse eemaldamisega?</string>
|
||||
<string name="biometric_delete_all_key_title">Kustuta krüptovõtmed</string>
|
||||
<string name="education_advanced_unlock_title">Nutiseadme-põhine andmebaasi lukustuse eemaldamine</string>
|
||||
<string name="education_device_unlock_title">Nutiseadme-põhine andmebaasi lukustuse eemaldamine</string>
|
||||
<string name="education_new_node_title">Lisa kirjeid andmebaasi</string>
|
||||
<string name="education_search_title">Otsi kirjete seast</string>
|
||||
<string name="education_search_summary">Vajaliku salasõna otsimiseks kasuta pealkirja, kasutajanime või muid kirje välju.</string>
|
||||
@@ -588,7 +586,7 @@
|
||||
<string name="education_sort_summary">Vali kirjete ja gruppide järjestamise viis.</string>
|
||||
<string name="education_donation_title">Osale</string>
|
||||
<string name="education_donation_summary">Aita parandada rakenduse töökindlust ja turvalisust ning lisada uusi funktsionaalsuseid.</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Seadme lukustuse ajutine eemaldamine</string>
|
||||
<string name="temp_device_unlock_enable_title">Seadme lukustuse ajutine eemaldamine</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Kui andmebaas on seadistatud kasutama nutiseadme-põhist lukustuse eemaldamist, siis ava autentimisvaade automaatselt</string>
|
||||
<string name="education_field_copy_title">Välja kopeerimine</string>
|
||||
<string name="education_field_copy_summary">Kopeeritud väljade sisu saad asetada kõikjale.\n\nVäljade täitmiseks kasuta meetodist, mis sulle sobib. Ära unusta kopeeritud saalsõna lõikelaualt kustutada.</string>
|
||||
@@ -602,10 +600,10 @@
|
||||
<string name="keystore_not_accessible">Võtmehoidla pole korrektselt valmendatud.</string>
|
||||
<string name="special">Eriteave</string>
|
||||
<string name="warning_remove_unlinked_attachment">Linkimata andmete eemaldamine võib vähendada andmebaasi suurust, aga samaga võivad kaduda ka andmed, mida kasutavad KeePassi lisamoodulid.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Seadmekohane lukustuse eemaldamine</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Ava andmebaas kasutades nutiseadme-põhist autentimist</string>
|
||||
<string name="advanced_unlock_invalid_key">Seadme lukustuse eemaldamise võtit ei õnnestu lugeda. Palun kustuta ta ja korda lukustuse eemaldamist tuvastamise alusel.</string>
|
||||
<string name="advanced_unlock">Nutiseadme-põhine lukustuse eemaldamine</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Seadmekohane lukustuse eemaldamine</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Ava andmebaas kasutades nutiseadme-põhist autentimist</string>
|
||||
<string name="device_unlock_invalid_key">Seadme lukustuse eemaldamise võtit ei õnnestu lugeda. Palun kustuta ta ja korda lukustuse eemaldamist tuvastamise alusel.</string>
|
||||
<string name="device_unlock">Nutiseadme-põhine lukustuse eemaldamine</string>
|
||||
<string name="magic_keyboard_title">Maagiklahvistik</string>
|
||||
<string name="device_keyboard_setting_title">Nutiseadme klahvistiku seadistused</string>
|
||||
<string name="keyboard_entry_category">Sisestus</string>
|
||||
@@ -643,7 +641,7 @@
|
||||
<string name="custom_fields">Kohandatud väljad</string>
|
||||
<string name="keyboard_previous_lock_title">Andmebaasi lukustamine</string>
|
||||
<string name="keyboard_previous_lock_summary">Peale andmebaasi lukustamist lülita automaatselt tagasi eelmisele klahvistikule</string>
|
||||
<string name="education_advanced_unlock_summary">Andmebaasi lukustuse kiireks eemaldamiseks seo oma andmebaasi salasõna nutiseadme biomeetrilise või tavatuvastusega.</string>
|
||||
<string name="education_device_unlock_summary">Andmebaasi lukustuse kiireks eemaldamiseks seo oma andmebaasi salasõna nutiseadme biomeetrilise või tavatuvastusega.</string>
|
||||
<string name="education_entry_edit_title">Kirje muutmine</string>
|
||||
<string name="education_entry_edit_summary">Võid kirjele lisada omaloodud välju ning ka neid omavahel siduda.</string>
|
||||
<string name="education_generate_password_summary">Sisestusvormil leiduvate eelmistuste alusel saad antud kirje jaoks luua tugeva salasõna ning seda andmebaasis hoides tagad, et korralik salasõna ei unune.</string>
|
||||
@@ -662,7 +660,7 @@
|
||||
<string name="education_validate_entry_summary">Ära unusta kirje sisu kontrollida ja salvestada.\n\nKui automaatne lukustus käivitub ja sa unustad, et muutmine oli pooleli, siis võid kaotada oma muudatused.</string>
|
||||
<string name="html_text_ad_free">Erinevalt paljudest teistest salasõnahalduritest, on meie oma <strong>reklaamivaba</strong> ja <strong>avatud lähtekoodiga vaba tarkvara</strong>, mis ei kogu kasutajate isiklikke andmeid oma serveritesse ja seda kõikide versioonide puhul.</string>
|
||||
<string name="html_text_donation"><strong>Aidates kaasa</strong> selle projekti tegevusele <i>(rahaliselt, koodi kirjutades või tõlkides)</i>, aitad kogu ettevõtmisel areneda ning soovi korral võid kasutada ka <strong>seda kujundust</strong>.</string>
|
||||
<string name="advanced_unlock_keystore_warning">See funktsionaalsus salvestab krüptitud salasõnad ja kasutajanimed sinu nutiseadme turvalises võtmehoidlas.\n\nSõltuvalt sinu nutiseadme operatsioonisüstemi konkreetsest implementatsioonist, ei pruugi see lahendus siiski täismahus toimida.\n\nPalun kontrolli oma seadme võtmehoidla (KeyStore) ühilduvust ja turvalisust tootjalt ja/või tarkvara loojalt.</string>
|
||||
<string name="device_unlock_keystore_warning">See funktsionaalsus salvestab krüptitud salasõnad ja kasutajanimed sinu nutiseadme turvalises võtmehoidlas.\n\nSõltuvalt sinu nutiseadme operatsioonisüstemi konkreetsest implementatsioonist, ei pruugi see lahendus siiski täismahus toimida.\n\nPalun kontrolli oma seadme võtmehoidla (KeyStore) ühilduvust ja turvalisust tootjalt ja/või tarkvara loojalt.</string>
|
||||
<string name="keyboard_previous_fill_in_summary">Peale tegevust „Automaatne võtmetoiming“ lülita automaatselt tagasi eelmisele klahvistikule</string>
|
||||
<string name="education_read_only_summary">Saad juhtida sessioonil kasutatavat avamisviisi.\n\n„Kirjutuskaitstud“ tagab, et juhuslike muudatustega ei läheks andmeid kaotsi.\n„Muudetav“ võimaldab sul lisada, kustutada või muuta kõiki andmebaasi kirjeid.</string>
|
||||
<string name="error_otp_secret_length">Salavõti peab olema vähemalt %1$d tähemärki pikk.</string>
|
||||
|
||||
@@ -397,7 +397,6 @@
|
||||
<string name="memory_usage_explanation">Gakoaren eratorpen funtzioak erabiliko duen memoria kopurua.</string>
|
||||
<string name="autofill_ask_to_save_data_summary">Datuak gordetzeko eskatu formulario bat betetzean</string>
|
||||
<string name="education_select_database_summary">Ireki zure aurreko datu-base fitxategia zure fitxategi kudeatzailetik erabiltzen jarraitzeko.</string>
|
||||
<string name="enable_read_only_title">Idazketaren aurka babestuta</string>
|
||||
<string name="autofill_application_id_blocklist_title">Aplikazioen blokeo zerrenda</string>
|
||||
<string name="keyboard_previous_fill_in_title">Tekla automatikoaren akzioa</string>
|
||||
<string name="keyboard_previous_database_credentials_summary">Aldatu automatikoki aurreko teklatura datu-basearen kredentzialen pantailan</string>
|
||||
@@ -423,7 +422,7 @@
|
||||
<string name="menu_security_settings">Segurtasun ezarpenak</string>
|
||||
<string name="menu_cancel">Deuseztu</string>
|
||||
<string name="menu_paste">Itsatsi</string>
|
||||
<string name="menu_advanced_unlock_settings">Gailu blokeatzailea</string>
|
||||
<string name="menu_device_unlock_settings">Gailu blokeatzailea</string>
|
||||
<string name="list_groups_show_number_entries_summary">Talde bateko sarrera kopurua erakusten du</string>
|
||||
<string name="invalid_db_same_uuid">%1$sk %2$sren UUID bera du.</string>
|
||||
<string name="sort_ascending">Baxuena lehenbizi↓</string>
|
||||
@@ -478,7 +477,6 @@
|
||||
<string name="kdf_explanation">Zifraketa algoritmorako gakoa sortzeko, gako nagusia itxuraldatu egiten da eratorpen funtzio eta ausazko gatz baten bidez.</string>
|
||||
<string name="keyboard_previous_search_title">Bilaketa pantaila</string>
|
||||
<string name="autofill_manual_selection_summary">Erabiltzaileari datu-baseko sarrera hautatzeko aukera erakutsi</string>
|
||||
<string name="enable_read_only_summary">Lehenetsi irakurketa soilerako datu-basea irekitzea</string>
|
||||
<string name="reset_education_screens_title">Berrezarri hezkuntza-pistak</string>
|
||||
<string name="education_new_node_summary">Sarrerek zure identitate digitalak administratzen laguntzen dute.
|
||||
\n
|
||||
@@ -486,32 +484,32 @@
|
||||
<string name="warning_keyfile_integrity">Ezin da fitxategiaren hasha bermatu Androidek aldaketak egin ditzakeelako sortu ahala. Aldatu fitxategiaren luzapena .binera integritate zuzen baterako.</string>
|
||||
<string name="warning_database_info_changed_options">Fusionatu datuak, gain idatzi kanpo aldaketak datu-basean gordez edo birkargatu azken aldaketekin.</string>
|
||||
<string name="warning_exact_alarm">Ez diozu aplikazioari alarma zehatz bat erabiltzen utzi, Hori dela eta, tenporizadore bat behar dituzten ezaugarriak ez dira ordu zehatz batean egingo.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Zure kutxa gotorraren pasahitz-nagusia gogoratu behar duzu naiz eta desblokeo aurreratuko ezagutzea erabili arren.</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Zure kutxa gotorraren pasahitz-nagusia gogoratu behar duzu naiz eta desblokeo aurreratuko ezagutzea erabili arren.</string>
|
||||
<string name="encrypted_value_stored">Zifratutako pasahitza gordeta</string>
|
||||
<string name="unavailable">Datu-base honek ez du biltegiratuta kredentzialik.</string>
|
||||
<string name="menu_appearance_settings">Itxura</string>
|
||||
<string name="autofill_sign_in_prompt">KeePassDXekin erregistratu</string>
|
||||
<string name="autofill_explanation_summary">Gaitu betetze automatikoa beste aplikazioetako formularioak errez betetzeko</string>
|
||||
<string name="advanced_unlock">Gailua desblokeatu</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Ezabatu ezagutze desblokeo aurreratuaren zifraketa gako guztiak\?</string>
|
||||
<string name="device_unlock">Gailua desblokeatu</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Ezabatu ezagutze desblokeo aurreratuaren zifraketa gako guztiak\?</string>
|
||||
<string name="path">Bidea</string>
|
||||
<string name="keyboard_auto_go_action_summary">\"Aurrera\" teklaren akzioa \"Eremu\" tekla zapaltzean</string>
|
||||
<string name="education_entry_edit_summary">Editatu zure sarrera eremu pertsonalizatuekin. Taldeko datuak sarrera eremu ezberdinen artean erreferentzia daitezke.</string>
|
||||
<string name="education_entry_new_field_title">Gehitu eremu pertsonalizatuak</string>
|
||||
<string name="education_advanced_unlock_summary">Lotu zure pasahitza zure eskaneatutako biometriara edo gailuaren kredentzialetara datu-basea azkar desblokeatzeko.</string>
|
||||
<string name="education_device_unlock_summary">Lotu zure pasahitza zure eskaneatutako biometriara edo gailuaren kredentzialetara datu-basea azkar desblokeatzeko.</string>
|
||||
<string name="education_entry_edit_title">Sarrera editatu</string>
|
||||
<string name="hide_expired_entries_title">Ezkutatu iraungitako sarrerak</string>
|
||||
<string name="permission">Baimena</string>
|
||||
<string name="build_label">Konpilazio bertsioa%1$s</string>
|
||||
<string name="database_history">Historiala</string>
|
||||
<string name="advanced_unlock_tap_delete">Ukitu gailua desblokeatzeko gakoak ezabatzeko</string>
|
||||
<string name="device_unlock_tap_delete">Ukitu gailua desblokeatzeko gakoak ezabatzeko</string>
|
||||
<string name="file_name">Fitxategiaren izena</string>
|
||||
<string name="recycle_bin_group_title">Zakarrontziaren taldea</string>
|
||||
<string name="assign_master_key">Esleitu gako nagusia</string>
|
||||
<string name="icon_pack_choose_summary">Aplikazioak erabilitako ikono paketea</string>
|
||||
<string name="advanced_unlock_invalid_key">Ezin da irakurri desblokeatze gakoa. Mesedez ezabatu ezatu eta errepikatu desblokeatze prozedura.</string>
|
||||
<string name="device_unlock_invalid_key">Ezin da irakurri desblokeatze gakoa. Mesedez ezabatu ezatu eta errepikatu desblokeatze prozedura.</string>
|
||||
<string name="device_credential_unlock_enable_title">Gailuaren kredentzialen desblokeoa</string>
|
||||
<string name="advanced_unlock_keystore_warning">Ezaugarri honek zifratutako kredentzialen informazioa zure gailuaren KeyStorean gordeko ditu.
|
||||
<string name="device_unlock_keystore_warning">Ezaugarri honek zifratutako kredentzialen informazioa zure gailuaren KeyStorean gordeko ditu.
|
||||
\n
|
||||
\nSistema eragilearen APIaren inplementazioaren arabera, posible litzake guztiz ondo ez funtzionatzea.
|
||||
\nBegiratu KeyStorearen bateragarritasuna eta segurtasuna zure gailuaren fabrikatzailearekin eta erabiltzen ari zaren ROMaren sortzailearekin.</string>
|
||||
@@ -529,8 +527,8 @@
|
||||
<string name="show_entry_colors_title">Sarrerako koloreak</string>
|
||||
<string name="show_entry_colors_summary">Erakutsi sarreraren aurreko eta atzeko planoen koloreak</string>
|
||||
<string name="hide_expired_entries_summary">Iraungitako sarrerak ez dira erakusten</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Gailuaren desblokeo ezagutza</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Atera datu-baseko kredentzialak desblokeo datuekin</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Gailuaren desblokeo ezagutza</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Atera datu-baseko kredentzialak desblokeo datuekin</string>
|
||||
<string name="education_setup_OTP_summary">Ezarri erabilera bakarreko pasahitzen kudeaketa (HOTP/TOTP) bi faktoreko autentifikazioak (2FA) eskatzen duen tokena sortzeko.</string>
|
||||
<string name="education_read_only_summary">Aldatu saioaren irekiera modua.
|
||||
\n
|
||||
@@ -539,9 +537,9 @@
|
||||
<string name="education_donation_summary">Parte hartu egonkortasuna, segurtasuna eta ezaugarri gehiago gehitzeko.</string>
|
||||
<string name="html_text_ad_free">Pasahitzak kudeatzeko aplikazio asko ez bezala, hau <strong> iragarkirik gabekoa</strong> eta <strong> copyleft software libreako</strong> da eta ez du datu pertsonalik biltzen zerbitzarietan, aplikazioaren edozein bertsiotan.</string>
|
||||
<string name="html_text_dev_feature">Ezaugarri hau <strong>garapen prozesuan </strong> dago eta zure <strong> ekarpena</strong> behar du ahalik eta lehen eskuragarri egoteko.</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Idatzi pasahitza eta klikatu botoi hau.</string>
|
||||
<string name="credential_before_click_device_unlock_button">Idatzi pasahitza eta klikatu botoi hau.</string>
|
||||
<string name="properties">Propietateak</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Desblokeatze aurreratua erabiltzeko denbora bere edukia ezabatu aurretik</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Desblokeatze aurreratua erabiltzeko denbora bere edukia ezabatu aurretik</string>
|
||||
<string name="warning_empty_keyfile_explanation">Fitxategi-gakoko edukia ez litzake inoiz aldatu beharko, eta kasu hoberenetan, ausaz sortutako datuak eduki beharko lituzke.</string>
|
||||
<string name="warning_empty_recycle_bin">Ezabatu betirako nodo guztiak zakarrontzitik\?</string>
|
||||
<string name="warning_database_info_changed">Zure datu-base fitxategiko informazioa aplikaziotik kanpo aldatu da.</string>
|
||||
@@ -552,9 +550,9 @@
|
||||
<string name="warning_database_already_opened">Dagoeneko datu-base bat irekita dago, itxi ezazu beste bat ireki ahal izateko</string>
|
||||
<string name="warning_permanently_delete_nodes">Ezabatu betiko hautatutako nodoak\?</string>
|
||||
<string name="warning_sure_add_file">Gehitu fitxategia edonola ere\?</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Ez gorde zifratutako edukirik gailu desblokeatzea erabiltzeko</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Gailu desblokeatzearen iraungitzea</string>
|
||||
<string name="advanced_unlock_timeout">Gailu desblokeatzea erabiltzeko denbora muga</string>
|
||||
<string name="temp_device_unlock_enable_summary">Ez gorde zifratutako edukirik gailu desblokeatzea erabiltzeko</string>
|
||||
<string name="temp_device_unlock_timeout_title">Gailu desblokeatzearen iraungitzea</string>
|
||||
<string name="device_unlock_timeout">Gailu desblokeatzea erabiltzeko denbora muga</string>
|
||||
<string name="lock">Blokeatu</string>
|
||||
<string name="html_text_donation">Gure askatasuna mantentzeko eta beti aktibo egoteko, aintzat dugu zure <strong>ekarpena.</strong></string>
|
||||
<string name="education_read_only_title">Babestu zure datu-basea idazketen aurka</string>
|
||||
@@ -575,11 +573,11 @@
|
||||
<string name="warning_database_read_only">Eman idazketa baimena datu-basean aldaketak gordetzeko</string>
|
||||
<string name="warning_password_encoding">Saihestu kodetze formatutik kanpoko karaktereak datu-baseko pasahitz fitxategietan (ezagutzen ez diren karaktereak letra berarengatik ordezten dira).</string>
|
||||
<string name="warning_database_revoked">Fitxategirako atzipena baliogabetu du fitxategi kudeatzaileak, itxi datu-basea eta berriro ireki ezazu bere lokalizaziotik.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Gailuaren desblokeorako esteka</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Ezin izan da hasieratu gailuaren desblokeatze menua.</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Gailuaren desblokeorako esteka</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Ezin izan da hasieratu gailuaren desblokeatze menua.</string>
|
||||
<string name="set_autofill_service_title">Lehenetsi betetze automatiko zerbitzua</string>
|
||||
<string name="content">Edukia</string>
|
||||
<string name="education_advanced_unlock_title">Datu-basearen desblokeatze automatikoa</string>
|
||||
<string name="education_device_unlock_title">Datu-basearen desblokeatze automatikoa</string>
|
||||
<string name="screenshot_mode_banner_text">Pantaila-argazki modua</string>
|
||||
<string name="list_password_generator_options_summary">Ezarri pasahitza sortzeko onartutako karaktereak</string>
|
||||
<string name="list_password_generator_options_title">Pasahitzerako karaktereak</string>
|
||||
@@ -593,12 +591,12 @@
|
||||
<string name="lock_database_back_root_summary">Blokeatu datu-basea erabiltzaileak atzera botoia sakatzen duenean hasierako pantailan</string>
|
||||
<string name="lock_database_show_button_title">Erakutsi blokeatzeko botoia</string>
|
||||
<string name="lock_database_show_button_summary">Blokeatzeko botoia erakusten du interfazean</string>
|
||||
<string name="advanced_unlock_explanation_summary">Erabili gailu desblokeatzea datu-base bat errazago irekitzeko</string>
|
||||
<string name="device_unlock_explanation_summary">Erabili gailu desblokeatzea datu-base bat errazago irekitzeko</string>
|
||||
<string name="biometric_unlock_enable_title">Desblokeo biometrikoa</string>
|
||||
<string name="biometric_unlock_enable_summary">Zure datu biometrikoak eskaneatzen uzten dizu datu-basea irekitzeko</string>
|
||||
<string name="device_credential_unlock_enable_summary">Zure gailuaren kredentzialak datu-basea irekitzeko erabiltzen uzten dizu</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Automatikoki eskatu gailu desblokeatzea datu-basea horrela erabiltzeko prestatu bada</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Denboraz mugatutako gailu desblokeatze</string>
|
||||
<string name="temp_device_unlock_enable_title">Denboraz mugatutako gailu desblokeatze</string>
|
||||
<string name="biometric_delete_all_key_title">Ezabatu zifraketa gakoak</string>
|
||||
<string name="biometric_delete_all_key_summary">Ezabatu gailu desblokeoari lotutako zifraketa gako guztiak</string>
|
||||
<string name="unavailable_feature_text">Ezin izan da ezaugarri hau hasieratu.</string>
|
||||
@@ -618,7 +616,7 @@
|
||||
<string name="education_unlock_title">Desblokeatu zure datu-basea</string>
|
||||
<string name="autofill_preference_title">Betetze automatikoaren ezarpenak</string>
|
||||
<string name="biometric_security_update_required">Segurtasun biometrikoko eguneraketa behar da.</string>
|
||||
<string name="advanced_unlock_not_recognized">Ezin izan da errekonozitu desblokeatze aztarna</string>
|
||||
<string name="device_unlock_not_recognized">Ezin izan da errekonozitu desblokeatze aztarna</string>
|
||||
<string name="biometric">Biometria</string>
|
||||
<string name="device_credential">Gailuaren kredentzialak</string>
|
||||
<string name="general">Orokor</string>
|
||||
@@ -670,7 +668,7 @@
|
||||
<string name="info">Info</string>
|
||||
<string name="menu_app_settings_summary">Bilatu, blokeoatu, historiala,ezaugarriak</string>
|
||||
<string name="menu_form_filling_settings_summary">Teklatua,beteze automatikoa,arbela</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometria, gailuaren egiztagiria</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometria, gailuaren egiztagiria</string>
|
||||
<string name="menu_database_settings_summary">Metadatuak, zakarrontzia, txantilioiak, historiala</string>
|
||||
<string name="menu_security_settings_summary">Zifraketa, gakoen deribazio funtzioa</string>
|
||||
<string name="master_key_settings_summary">Aldaketa,berriztapena</string>
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
<string name="menu_master_key_settings">تنظیمات کلید اصلی</string>
|
||||
<string name="menu_security_settings">تنظیمات امنیتی</string>
|
||||
<string name="menu_database_settings">تنظیمات پایگاه داده</string>
|
||||
<string name="menu_advanced_unlock_settings">باز کردن قفل پیشرفته</string>
|
||||
<string name="menu_device_unlock_settings">باز کردن قفل پیشرفته</string>
|
||||
<string name="menu_form_filling_settings">پر کردن فرم</string>
|
||||
<string name="menu_app_settings">تنظیمات برنامه</string>
|
||||
<string name="settings">تنظیمات</string>
|
||||
@@ -246,8 +246,8 @@
|
||||
<string name="keyboard_previous_database_credentials_title">صفحه اعتبار نامه پایگاه داده</string>
|
||||
<string name="biometric_security_update_required">به روز رسانی امنیتی بیومتریک مورد نیاز است.</string>
|
||||
<string name="configure_biometric">هیچ بیومتریک یا اعتبار دستگاه ثبت نشده است.</string>
|
||||
<string name="advanced_unlock_tap_delete">برای حذف کلیدهای پیشرفته باز کردن قفل ضربه بزنید</string>
|
||||
<string name="advanced_unlock">باز کردن قفل پیشرفته</string>
|
||||
<string name="device_unlock_tap_delete">برای حذف کلیدهای پیشرفته باز کردن قفل ضربه بزنید</string>
|
||||
<string name="device_unlock">باز کردن قفل پیشرفته</string>
|
||||
<string name="content">محتوا</string>
|
||||
<string name="warning_database_revoked">دسترسی به پرونده توسط مدیر فایل لغو شده ، پایگاه داده را ببندید و مجدداً از محل آن باز کنید.</string>
|
||||
<string name="warning_database_info_changed_options">با ذخیره کردن پایگاه داده ، تغییرات خارجی را بازنویسی کنید یا با جدیدترین تغییرات آن را بارگیری کنید.</string>
|
||||
@@ -318,4 +318,4 @@
|
||||
<string name="template_group_name">الگو ها</string>
|
||||
<string name="content_description_otp_information">اطلاعات رمز یکبار مصرف</string>
|
||||
<string name="content_description_credentials_information">اطلاعات اعتبار نامه</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
<string name="menu_copy">Kopioi</string>
|
||||
<string name="menu_master_key_settings">Pääavainasetukset</string>
|
||||
<string name="menu_security_settings">Turvallisuusasetukset</string>
|
||||
<string name="menu_advanced_unlock_settings">Edistynyt lukituksen avaaminen</string>
|
||||
<string name="menu_device_unlock_settings">Edistynyt lukituksen avaaminen</string>
|
||||
<string name="menu_form_filling_settings">Lomakkeen täyttö</string>
|
||||
<string name="copy_field">Kopio %1$s:sta</string>
|
||||
<string name="creating_database">Luodaan tietokantaa…</string>
|
||||
@@ -412,7 +412,7 @@
|
||||
<string name="warning_empty_keyfile">Tyhjän avaintiedoston lisääminen ei ole suositeltavaa.</string>
|
||||
<string name="menu_app_settings_summary">Haku, lukitus, historia, oninaisuudet</string>
|
||||
<string name="menu_form_filling_settings_summary">Näppäimistö, automaattinen täyttö, leikepöytä</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometria, laitevaltuutus</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometria, laitevaltuutus</string>
|
||||
<string name="menu_database_settings_summary">Metadata, roskakori, pohjat, historia</string>
|
||||
<string name="menu_security_settings_summary">Salaus, avaimen johtamisfunktio</string>
|
||||
<string name="master_key_settings_summary">Muutos, uudistus</string>
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
<string name="content_description_update_from_list">I-update</string>
|
||||
<string name="content_description_keyboard_close_fields">Isara ang mga field</string>
|
||||
<string name="select_to_copy">Piliin para kopyahin ang %1$s sa clipboard</string>
|
||||
<string name="html_about_licence">KeePassDX © %1$d Ang Kunzisoft ay <strong>open source</strong> at <strong>walang advertising</strong>. \nIbinigay ito nang as is, sa ilalim <strong>GPLv3</strong> na lisensya, nang walang anumang warranty.</string>
|
||||
<string name="html_about_licence">Ang KeePassDX © Kunzisoft ay open source at walang kasamang patalastas.\nIbinibigay ito nang buo sa ilalim ng lisensiyang GPLv3, nang walang anumang garantiya.</string>
|
||||
<string name="html_about_privacy"><strong>Walang user data ay kinukuha</strong>, ang aplikasyon na ito ay hindi kumokonekta sa anumang server, gumanagana ng lokal at ganap na ginagalang ang pagkapribado ng mga gumagamit.</string>
|
||||
<string name="html_about_contribution">Para <strong>panatilihin ang aming kalayaan</strong>, <strong>ayusin ang mga bug</strong>, <strong>magdagdag ng mga feature</strong> at <strong>maging palaging aktibo</strong>, umaasa kami sa iyong <strong>kontribusyon</strong>.</string>
|
||||
<string name="entry_accessed">Na-access</string>
|
||||
@@ -243,8 +243,8 @@
|
||||
<string name="menu_app_settings_summary">Paghahanap, lock, history, mga property</string>
|
||||
<string name="menu_form_filling_settings">Pagpuno ng form</string>
|
||||
<string name="menu_form_filling_settings_summary">Keyboard, pag-autofill, clipboard</string>
|
||||
<string name="menu_advanced_unlock_settings">Pag-unlock gamit ang device</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometry, kredensyal ng device</string>
|
||||
<string name="menu_device_unlock_settings">Pag-unlock gamit ang device</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometry, kredensyal ng device</string>
|
||||
<string name="menu_database_settings">Mga setting ng database</string>
|
||||
<string name="menu_database_settings_summary">Metadata, recycle bin, mga template, history</string>
|
||||
<string name="menu_security_settings">Mga setting ng seguridad</string>
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
<string name="lock">Verrouiller</string>
|
||||
<string name="lock_database_screen_off_title">Verrouillage d’écran</string>
|
||||
<string name="lock_database_screen_off_summary">Verrouille la base de données après quelques secondes une fois l’écran éteint</string>
|
||||
<string name="advanced_unlock">Déverrouillage avancé</string>
|
||||
<string name="device_unlock">Déverrouillage avancé</string>
|
||||
<string name="biometric_unlock_enable_title">Déverrouillage biométrique</string>
|
||||
<string name="biometric_unlock_enable_summary">Permet de numériser votre empreinte biométrique pour ouvrir la base de données</string>
|
||||
<string name="biometric_delete_all_key_title">Supprimer les clés de chiffrement</string>
|
||||
@@ -283,8 +283,6 @@
|
||||
<string name="allow_no_password_summary">Autorise l’appui du bouton \"Ouvrir\" si aucun identifiant n’est sélectionné</string>
|
||||
<string name="menu_file_selection_read_only">Protéger en écriture</string>
|
||||
<string name="menu_open_file_read_and_write">Modifiable</string>
|
||||
<string name="enable_read_only_title">Protéger en écriture</string>
|
||||
<string name="enable_read_only_summary">Ouvre la base de données en lecture seule par défaut</string>
|
||||
<string name="education_read_only_title">Protégez en écriture votre base de données</string>
|
||||
<string name="education_read_only_summary">Changez le mode d’ouverture pour la session.
|
||||
\n
|
||||
@@ -353,7 +351,7 @@
|
||||
<string name="content_description_update_from_list">Mise à jour</string>
|
||||
<string name="content_description_keyboard_close_fields">Fermer les champs</string>
|
||||
<string name="error_create_database_file">Impossible de créer une base de données avec ce mot de passe et ce fichier clé.</string>
|
||||
<string name="menu_advanced_unlock_settings">Déverrouillage de l\'appareil</string>
|
||||
<string name="menu_device_unlock_settings">Déverrouillage de l\'appareil</string>
|
||||
<string name="enable">Activer</string>
|
||||
<string name="disable">Désactiver</string>
|
||||
<string name="biometric">Biométrie</string>
|
||||
@@ -389,7 +387,7 @@
|
||||
<string name="contains_duplicate_uuid_procedure">Résoudre le problème en générant de nouveaux UUID pour les doublons et continuer \?</string>
|
||||
<string name="database_opened">Base de données ouverte</string>
|
||||
<string name="clipboard_explanation_summary">Copier les champs d’une entrée à l’aide du presse-papier de votre appareil</string>
|
||||
<string name="advanced_unlock_explanation_summary">Utiliser le déverrouillage de l\'appareil pour ouvrir plus facilement une base de données</string>
|
||||
<string name="device_unlock_explanation_summary">Utiliser le déverrouillage de l\'appareil pour ouvrir plus facilement une base de données</string>
|
||||
<string name="database_data_compression_title">Compression de données</string>
|
||||
<string name="database_data_compression_summary">La compression des données réduit la taille de la base de données</string>
|
||||
<string name="max_history_items_title">Nombre maximum</string>
|
||||
@@ -503,32 +501,32 @@
|
||||
<string name="search_mode">Mode recherche</string>
|
||||
<string name="error_registration_read_only">L’enregistrement d’un nouvel élément n’est pas autorisé dans une base de données en lecture seule.</string>
|
||||
<string name="error_field_name_already_exists">Le nom du champ existe déjà.</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Supprimer toutes les clés de chiffrement liées à la reconnaissance de déverrouillage de l\'appareil \?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Supprimer toutes les clés de chiffrement liées à la reconnaissance de déverrouillage de l\'appareil \?</string>
|
||||
<string name="device_credential_unlock_enable_summary">Vous permet d\'utiliser les informations d\'identification de votre appareil pour ouvrir la base de données</string>
|
||||
<string name="device_credential_unlock_enable_title">Déverrouillage par identifiants de l\'appareil</string>
|
||||
<string name="device_credential">Identifiant de l\'appareil</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Tapez le mot de passe, puis cliquez sur ce bouton.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Impossible d\'initialiser l\'invite de déverrouillage avancé.</string>
|
||||
<string name="advanced_unlock_not_recognized">Impossible de reconnaître l\'empreinte de déverrouillage de l\'appareil</string>
|
||||
<string name="advanced_unlock_invalid_key">Impossible de lire la clé de déverrouillage de l\'appareil. Veuillez la supprimer et répéter la procédure de reconnaissance de déverrouillage.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Extraire les identifiants de la base de données avec des données de déverrouillage de l\'appareil</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Reconnaissance du déverrouillage de l\'appareil</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Vous devez toujours vous souvenir de l\'identifiant principal du coffre-fort si vous utilisez le déverrouillage de l\'appareil.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Liaison vers le déverrouillage de l\'appareil</string>
|
||||
<string name="credential_before_click_device_unlock_button">Tapez le mot de passe, puis cliquez sur ce bouton.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Impossible d\'initialiser l\'invite de déverrouillage avancé.</string>
|
||||
<string name="device_unlock_not_recognized">Impossible de reconnaître l\'empreinte de déverrouillage de l\'appareil</string>
|
||||
<string name="device_unlock_invalid_key">Impossible de lire la clé de déverrouillage de l\'appareil. Veuillez la supprimer et répéter la procédure de reconnaissance de déverrouillage.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Extraire les identifiants de la base de données avec des données de déverrouillage de l\'appareil</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Reconnaissance du déverrouillage de l\'appareil</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Vous devez toujours vous souvenir de l\'identifiant principal du coffre-fort si vous utilisez le déverrouillage de l\'appareil.</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Liaison vers le déverrouillage de l\'appareil</string>
|
||||
<string name="menu_keystore_remove_key">Supprimer la clé de déverrouillage avancée</string>
|
||||
<string name="enter">Entrer</string>
|
||||
<string name="backspace">Retour arrière</string>
|
||||
<string name="select_entry">Sélection d\'une entrée</string>
|
||||
<string name="back_to_previous_keyboard">Retour au clavier précédent</string>
|
||||
<string name="custom_fields">Champs customisés</string>
|
||||
<string name="education_advanced_unlock_summary">Lier votre mot de passe à vos informations d\'identification biométriques ou de périphérique scannées pour déverrouiller rapidement votre base de données.</string>
|
||||
<string name="education_advanced_unlock_title">Déverrouillage avancé de la base de données</string>
|
||||
<string name="advanced_unlock_timeout">Délai du déverrouillage de l\'appareil</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Durée d\'utilisation du déverrouillage de l\'appareil avant de supprimer son contenu</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Expiration du déverrouillage de l\'appareil</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Ne stocker aucun contenu crypté pour utiliser le déverrouillage de l\'appareil</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Déverrouillage de l\'appareil temporaire</string>
|
||||
<string name="advanced_unlock_tap_delete">Appuyez pour supprimer les clés de déverrouillage de l\'appareil</string>
|
||||
<string name="education_device_unlock_summary">Lier votre mot de passe à vos informations d\'identification biométriques ou de périphérique scannées pour déverrouiller rapidement votre base de données.</string>
|
||||
<string name="education_device_unlock_title">Déverrouillage avancé de la base de données</string>
|
||||
<string name="device_unlock_timeout">Délai du déverrouillage de l\'appareil</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Durée d\'utilisation du déverrouillage de l\'appareil avant de supprimer son contenu</string>
|
||||
<string name="temp_device_unlock_timeout_title">Expiration du déverrouillage de l\'appareil</string>
|
||||
<string name="temp_device_unlock_enable_summary">Ne stocker aucun contenu crypté pour utiliser le déverrouillage de l\'appareil</string>
|
||||
<string name="temp_device_unlock_enable_title">Déverrouillage de l\'appareil temporaire</string>
|
||||
<string name="device_unlock_tap_delete">Appuyez pour supprimer les clés de déverrouillage de l\'appareil</string>
|
||||
<string name="content">Contenu</string>
|
||||
<string name="error_rebuild_list">Impossible de reconstruire correctement la liste.</string>
|
||||
<string name="error_database_uri_null">L\'URI de la base de données ne peut pas être récupéré.</string>
|
||||
@@ -635,7 +633,7 @@
|
||||
<string name="case_sensitive">Sensible à la casse</string>
|
||||
<string name="expired">Expiré</string>
|
||||
<string name="warning_database_already_opened">Une base de données est déjà ouverte, fermez-la d\'abord pour ouvrir la nouvelle base</string>
|
||||
<string name="advanced_unlock_keystore_warning">Cette fonction permet de stocker des données d\'identification chiffrées dans le KeyStore sécurisé de votre appareil.
|
||||
<string name="device_unlock_keystore_warning">Cette fonction permet de stocker des données d\'identification chiffrées dans le KeyStore sécurisé de votre appareil.
|
||||
\n
|
||||
\nSelon l\'implémentation de l\'API native du système d\'exploitation, il se peut qu\'elle ne soit pas entièrement fonctionnelle.
|
||||
\n
|
||||
@@ -686,7 +684,7 @@
|
||||
<string name="menu_app_settings_summary">Recherche, verrouillage, historique, propriétés</string>
|
||||
<string name="menu_form_filling_settings_summary">Clavier, remplissage automatique, presse-papiers</string>
|
||||
<string name="master_key_settings_summary">Changement, renouvellement</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biométrie, identifiant de l\'appareil</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biométrie, identifiant de l\'appareil</string>
|
||||
<string name="unlock_and_link_biometric">Liaison avec déverouillage de l\'appareil</string>
|
||||
<string name="unlock">Déverrouiller</string>
|
||||
<string name="configure">Configurer</string>
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
<string name="password">Contrasinal</string>
|
||||
<string name="invalid_algorithm">Algoritmo errado.</string>
|
||||
<string name="invalid_db_same_uuid">%1$s co mesmo UUID %2$s xa existe.</string>
|
||||
<string name="menu_advanced_unlock_settings">Desbloqueo avanzado</string>
|
||||
<string name="menu_device_unlock_settings">Desbloqueo avanzado</string>
|
||||
<string name="error_otp_secret_key">A clave secreta debe estar en formato Base32.</string>
|
||||
<string name="hint_length">Lonxitude</string>
|
||||
<string name="menu_change_key_settings">Cambiar clave mestra</string>
|
||||
@@ -367,9 +367,9 @@
|
||||
<string name="content">Contido</string>
|
||||
<string name="permission">Permiso</string>
|
||||
<string name="autofill_preference_title">Configuracións de autocompletado</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Recoñecemento de desbloqueo avanzado</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Recoñecemento de desbloqueo avanzado</string>
|
||||
<string name="biometric_security_update_required">É necesaria unha actualización da seguranza biométrica.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Abrir a base de datos co recoñecemento de desbloqueo avanzado</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Abrir a base de datos co recoñecemento de desbloqueo avanzado</string>
|
||||
<string name="biometric">Biométrico</string>
|
||||
<string name="autofill_explanation_summary">Habilite o servizo para autocompletar rapidamente os formularios de outras aplicacións</string>
|
||||
<string name="clipboard_notifications_title">Notificacións do portapapeis</string>
|
||||
@@ -377,7 +377,7 @@
|
||||
<string name="lock_database_back_root_summary">Bloquear a base de datos cando o usuario faga click no botón de volver á pantalla principal</string>
|
||||
<string name="lock_database_show_button_title">Mostrar botón de bloqueo</string>
|
||||
<string name="clipboard_notifications_summary">Mostrar notificacións do portapapeis ao visualizar unha entrada</string>
|
||||
<string name="advanced_unlock_tap_delete">Tocar para borrar as claves de desbloqueo avanzado</string>
|
||||
<string name="device_unlock_tap_delete">Tocar para borrar as claves de desbloqueo avanzado</string>
|
||||
<string name="device_credential_unlock_enable_summary">Permitelle usar as credenciais do dispositivo para abrir a base de datos</string>
|
||||
<string name="device_credential_unlock_enable_title">Desbloqueo coas credenciais do dispositivo</string>
|
||||
<string name="lock_database_screen_off_summary">Bloquear a base de datos após uns segundos da pantalla apagar</string>
|
||||
@@ -395,16 +395,16 @@
|
||||
<string name="build_label">Compilación %1$s</string>
|
||||
<string name="configure_biometric">Non hai rexistro de ningún credencial biométrico ou de dispositivo.</string>
|
||||
<string name="keystore_not_accessible">O almacén de claves non foi iniciado correctamente.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Extraer a credencial da base de datos cos datos de desbloqueo avanzado</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Extraer a credencial da base de datos cos datos de desbloqueo avanzado</string>
|
||||
<string name="unavailable">Esta base de datos non ten credenciais almacenadas aínda.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Non foi posíbel inciar o desbloqueo avanzado.</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Escriba o contrasinal, e logo faga click neste botón.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Non foi posíbel inciar o desbloqueo avanzado.</string>
|
||||
<string name="credential_before_click_device_unlock_button">Escriba o contrasinal, e logo faga click neste botón.</string>
|
||||
<string name="properties">Propiedades</string>
|
||||
<string name="menu_appearance_settings">Aparencia</string>
|
||||
<string name="device_credential">Credenciais do dispositivo</string>
|
||||
<string name="general">Xeral</string>
|
||||
<string name="autofill">Autocompletado</string>
|
||||
<string name="advanced_unlock_explanation_summary">Usar o desbloqueo avanzado para abrir a base de datos dun xeito máis sinxelo</string>
|
||||
<string name="device_unlock_explanation_summary">Usar o desbloqueo avanzado para abrir a base de datos dun xeito máis sinxelo</string>
|
||||
<string name="autofill_sign_in_prompt">Inciar sesión con KeePassDX</string>
|
||||
<string name="autofill_select_entry">Seleccione entrada…</string>
|
||||
<string name="password_size_title">Tamaño do contrasinal xerado</string>
|
||||
@@ -419,20 +419,20 @@
|
||||
<string name="lock_database_screen_off_title">Bloqueo de pantalla</string>
|
||||
<string name="lock_database_back_root_title">Presione \'Atrás\' para bloquear</string>
|
||||
<string name="lock_database_show_button_summary">Mostrar o botón de bloqueo na interface do usuario</string>
|
||||
<string name="advanced_unlock">Desbloqueo avanzado</string>
|
||||
<string name="device_unlock">Desbloqueo avanzado</string>
|
||||
<string name="biometric_unlock_enable_title">Desbloqueo biométrico</string>
|
||||
<string name="biometric_unlock_enable_summary">Permite o escaneo dos datos biomérifos para abrir a base de datos</string>
|
||||
<string name="advanced_unlock_invalid_key">Non foi posíbel ler a clave de desbloqueo avanzado. Por favor, bórrea e repita o procedemento de recoñecemento do desbloqueo.</string>
|
||||
<string name="device_unlock_invalid_key">Non foi posíbel ler a clave de desbloqueo avanzado. Por favor, bórrea e repita o procedemento de recoñecemento do desbloqueo.</string>
|
||||
<string name="encrypted_value_stored">Contrasinal cifrado almacenado</string>
|
||||
<string name="advanced_unlock_not_recognized">Non foi posíbel recoñecer a pegada do desbloqueo avanzado</string>
|
||||
<string name="device_unlock_not_recognized">Non foi posíbel recoñecer a pegada do desbloqueo avanzado</string>
|
||||
<string name="autofill_service_name">Servizo de autocompletado do KeePassDX</string>
|
||||
<string name="database_history">Historial</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Aínda precisa lembrar a súa credencial principal se usar o recoñecemento de desbloqueo avanzado.</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Desbloqueo avanzado temporal</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Aínda precisa lembrar a súa credencial principal se usar o recoñecemento de desbloqueo avanzado.</string>
|
||||
<string name="temp_device_unlock_enable_title">Desbloqueo avanzado temporal</string>
|
||||
<string name="file_name">Nome do arquivo</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Duración do desbloqueo avanzado</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Duración do uso do desbloqueo avanzado antes de borrar os seus contidos</string>
|
||||
<string name="advanced_unlock_timeout">Tempo límite de desbloqueo avanzado</string>
|
||||
<string name="temp_device_unlock_timeout_title">Duración do desbloqueo avanzado</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Duración do uso do desbloqueo avanzado antes de borrar os seus contidos</string>
|
||||
<string name="device_unlock_timeout">Tempo límite de desbloqueo avanzado</string>
|
||||
<string name="biometric_delete_all_key_summary">Borrar todas as claves de cifrado relacionadas co desbloqueo de recoñecemento avanzado</string>
|
||||
<string name="assign_master_key">Asignar unha clave mestra</string>
|
||||
<string name="data">Datos</string>
|
||||
@@ -442,9 +442,9 @@
|
||||
<string name="unavailable_feature_text">Non foi posíbel iniciar esta funcionalidade.</string>
|
||||
<string name="database_data_compression_title">Compresión de datos</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Pedir automaticamente o desbloqueo avanzado se a base de datos estiver configurada para o seu uso</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Non almacenar ningún contido cifrado para o desbloqueo avanzado</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Borrar todas as claves de cifrado relacionadas co desbloqueo de recoñecemento avanzado\?</string>
|
||||
<string name="advanced_unlock_keystore_warning">Esta funcionalidade almacenará os datos de credenciais cifrados na KeyStore do seu dispositivo.
|
||||
<string name="temp_device_unlock_enable_summary">Non almacenar ningún contido cifrado para o desbloqueo avanzado</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Borrar todas as claves de cifrado relacionadas co desbloqueo de recoñecemento avanzado\?</string>
|
||||
<string name="device_unlock_keystore_warning">Esta funcionalidade almacenará os datos de credenciais cifrados na KeyStore do seu dispositivo.
|
||||
\n
|
||||
\nDependendo da implementación da API nativa do seu sistema operativo, pode non ser completamente funcional.
|
||||
\nRevise a compatibilidade e seguranza da KeyStore co fabricante do seu dispositivo e co creador da ROM que está a usar.</string>
|
||||
@@ -551,12 +551,11 @@
|
||||
<string name="autofill_ask_to_save_data_summary">Pedir para gardar datos cando terminar de autocompletar un formulario</string>
|
||||
<string name="delete_entered_password_summary">Borrar o contrasinal introducido após un intento de conexión a unha base de datos</string>
|
||||
<string name="reset_education_screens_title">Restabelecer suxestións educativas</string>
|
||||
<string name="education_advanced_unlock_title">Desbloqueo avanzado da base de datos</string>
|
||||
<string name="education_advanced_unlock_summary">Ligue o seu contrasinal á súa credencial biométrica ou credenciais do dispositivo para desbloquear rapidamente a súa base de datos.</string>
|
||||
<string name="education_device_unlock_title">Desbloqueo avanzado da base de datos</string>
|
||||
<string name="education_device_unlock_summary">Ligue o seu contrasinal á súa credencial biométrica ou credenciais do dispositivo para desbloquear rapidamente a súa base de datos.</string>
|
||||
<string name="enable_auto_save_database_title">Gardar base de datos automaticamente</string>
|
||||
<string name="enable_keep_screen_on_title">Manter a pantalla acesa</string>
|
||||
<string name="allow_no_password_summary">Permitir pulsar o botón \"Abrir\" se non seleccionar ningunha credencial</string>
|
||||
<string name="enable_read_only_title">Só lectura</string>
|
||||
<string name="enable_education_screens_summary">Destacar elementos para saber como funciona a aplicación</string>
|
||||
<string name="reset_education_screens_text">Suxestións educativas restabelecidas</string>
|
||||
<string name="education_create_database_title">Crear o teu arquivo de base de datos</string>
|
||||
@@ -593,7 +592,6 @@
|
||||
<string name="education_entry_new_field_title">Engadir campos personalizados</string>
|
||||
<string name="menu_form_filling_settings">Completado de formularios</string>
|
||||
<string name="keyboard_notification_entry_content_title">%1$s dispoñíbel no Magikeyboard</string>
|
||||
<string name="enable_read_only_summary">Abrir a base de datos en modo de só lectura por defecto</string>
|
||||
<string name="education_setup_OTP_summary">Configure a xestión do contrasinal dun só uso (HOTP / TOTP) para xerar un token solicitado para a autenticación de dous factores (2FA).</string>
|
||||
<string name="education_unlock_title">Desbloquee a súa base de datos</string>
|
||||
<string name="delete_entered_password_title">Eliminar contrasinal</string>
|
||||
|
||||
@@ -167,4 +167,4 @@
|
||||
<string name="error_upload_file">फ़ाइल डेटा को अपलोड करते समय एक त्रुटि हुई।</string>
|
||||
<string name="error_duplicate_file">फ़ाइल डेटा पहले से उपलब्ध है।</string>
|
||||
<string name="info">जानकारी</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||
--><resources>
|
||||
<string name="about_description">Android implementacija KeePass upravljača lozinki</string>
|
||||
<string name="about_description">Android implementacija KeePass upravljača lozinki.</string>
|
||||
<string name="accept">Prihvati</string>
|
||||
<string name="add_entry">Dodaj unos</string>
|
||||
<string name="edit_entry">Uredi unos</string>
|
||||
@@ -118,7 +118,7 @@
|
||||
<string name="settings">Postavke</string>
|
||||
<string name="menu_app_settings">Postavke aplikacije</string>
|
||||
<string name="menu_form_filling_settings">Ispunjavanje obrasca</string>
|
||||
<string name="menu_advanced_unlock_settings">Otključavanje uređaja</string>
|
||||
<string name="menu_device_unlock_settings">Otključavanje uređaja</string>
|
||||
<string name="menu_database_settings">Postavke baze podataka</string>
|
||||
<string name="menu_security_settings">Postavke sigurnosti</string>
|
||||
<string name="menu_master_key_settings">Postavke glavnog ključa</string>
|
||||
@@ -187,8 +187,8 @@
|
||||
<string name="clipboard_warning">Ako automatsko brisanje međuspremnika ne uspije, izbriši njegovu povijest ručno.</string>
|
||||
<string name="lock_database_screen_off_summary">Zaključaj bazu podataka nakon par sekundi kad se ekran ugasi</string>
|
||||
<string name="lock_database_back_root_title">Pritisni \'Natrag\' za zaključavanje</string>
|
||||
<string name="advanced_unlock">Otključavanje uređaja</string>
|
||||
<string name="advanced_unlock_explanation_summary">Koristi otključavanje uređaja za jednostavnije otvaranje baze podataka</string>
|
||||
<string name="device_unlock">Otključaj uređaj</string>
|
||||
<string name="device_unlock_explanation_summary">Koristi otključavanje uređaja za jednostavnije otvaranje baze podataka</string>
|
||||
<string name="biometric_unlock_enable_title">Biometrijsko otključavanje</string>
|
||||
<string name="biometric_unlock_enable_summary">Otvaranje baze podataka skeniranjem biometrike</string>
|
||||
<string name="biometric_delete_all_key_title">Izbriši ključeve šifriranja</string>
|
||||
@@ -310,8 +310,6 @@
|
||||
<string name="allow_no_password_summary">Dozvoljava dodir gumba „Otvori”, ako nisu odabrani nikoji podaci za prijavu</string>
|
||||
<string name="delete_entered_password_title">Izbriši lozinku</string>
|
||||
<string name="delete_entered_password_summary">Briše upisanu lozinku nakon pokušaja povezivanja s bazom podataka</string>
|
||||
<string name="enable_read_only_title">Zaštićeno od pisanja</string>
|
||||
<string name="enable_read_only_summary">Standardno otvori bazu podataka u zaštićenom stanju</string>
|
||||
<string name="enable_auto_save_database_title">Automatski spremi bazu podataka</string>
|
||||
<string name="enable_auto_save_database_summary">Automatski spremi bazu podataka nakon svake važne radnje (samo u modusu „Promjenjivo”)</string>
|
||||
<string name="enable_education_screens_title">Edukativne poruke</string>
|
||||
@@ -384,8 +382,8 @@
|
||||
<string name="education_entry_new_field_title">Dodaj prilagođena polja</string>
|
||||
<string name="education_lock_summary">Zaključaj bazu podataka brzo, aplikaciju možeš postaviti tako da bazu nakon nekog vremena zaključa i kad se ekran isključi.</string>
|
||||
<string name="show_recent_files_summary">Prikaži mjesto nedavnih baza podataka</string>
|
||||
<string name="education_advanced_unlock_summary">Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom ili podacima za prijavu uređaja.</string>
|
||||
<string name="html_text_donation">Kako bismo zadržali našu slobodu i uvijek bili aktivni, računamo na tvoj<strong>doprinos.</strong></string>
|
||||
<string name="education_device_unlock_summary">Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom ili podacima za prijavu uređaja.</string>
|
||||
<string name="html_text_donation"><strong>Doprinosom</strong> projektu <i>(novčano, kodom, prijevodom)</i> pomažeš mu da živi i napreduje, a također stječeš pravo na postupak otključavanja <strong>tema</strong>.</string>
|
||||
<string name="kdf_explanation">Za stvaranje ključa za algoritam šifriranja, glavni ključ se transformira pomoću funkcije za generiranje ključeva koja sadrži slučajnu komponentu.</string>
|
||||
<string name="lock_database_back_root_summary">Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na glavnom ekranu</string>
|
||||
<string name="hide_broken_locations_title">Sakrij pokvarene poveznice baze podataka</string>
|
||||
@@ -483,16 +481,16 @@
|
||||
<string name="save_mode">Modus spremanja</string>
|
||||
<string name="search_mode">Modus pretrage</string>
|
||||
<string name="error_field_name_already_exists">Ime polja već postoji.</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Izbrisati sve ključeve šifriranja povezane s prepoznavanjem otključavanja uređaja\?</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Upiši lozinku, zatim pritisni ovaj gumb.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Prepoznavanje otključavanja uređaja</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Ako koristiš prepoznavanje otključavanja uređaja morat ćeš i dalje znati tvoj glavni podatak za prijavu za trezor.</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Izbrisati sve ključeve šifriranja povezane s prepoznavanjem otključavanja uređaja\?</string>
|
||||
<string name="credential_before_click_device_unlock_button">Upiši lozinku, zatim pritisni ovaj gumb.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Prepoznavanje otključavanja uređaja</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Ako koristiš prepoznavanje otključavanja uređaja morat ćeš i dalje znati tvoj glavni podatak za prijavu za trezor.</string>
|
||||
<string name="menu_keystore_remove_key">Izbriši ključ za otključavanje uređaja</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Poveznica za otključavanje uređaja</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Nije moguće pokrenuti prozor za otključavanje uređaja.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Izdvoji podatake za prijavu na bazu podataka pomoću podataka za otključavanje uređaja</string>
|
||||
<string name="advanced_unlock_not_recognized">Nije bilo moguće prepoznati ispis za otključavanje uređaja</string>
|
||||
<string name="advanced_unlock_invalid_key">Nije moguće pročitati ključ za otključavanje uređaja. Izbriši ga i ponovi postupak prepoznavanja otključavanja.</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Poveznica za otključavanje uređaja</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Nije moguće pokrenuti prozor za otključavanje uređaja.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Izdvoji podatake za prijavu na bazu podataka pomoću podataka za otključavanje uređaja</string>
|
||||
<string name="device_unlock_not_recognized">Nije bilo moguće prepoznati ispis za otključavanje uređaja</string>
|
||||
<string name="device_unlock_invalid_key">Nije moguće pročitati ključ za otključavanje uređaja. Izbriši ga i ponovi postupak prepoznavanja otključavanja.</string>
|
||||
<string name="enter">Tipka Enter</string>
|
||||
<string name="backspace">Tipka Backspace</string>
|
||||
<string name="select_entry">Odaberi unos</string>
|
||||
@@ -501,14 +499,14 @@
|
||||
<string name="device_credential_unlock_enable_summary">Omogućuje otvaranje baze podataka pomoću podataka za prijavu</string>
|
||||
<string name="device_credential_unlock_enable_title">Otključavanje s podacima za prijavu uređaja</string>
|
||||
<string name="device_credential">Podaci za prijavu uređaja</string>
|
||||
<string name="advanced_unlock_tap_delete">Dodirni za brisanje ključeva za otključavanje uređaja</string>
|
||||
<string name="education_advanced_unlock_title">Otključavanje uređaja baze podataka</string>
|
||||
<string name="advanced_unlock_timeout">Vremensko ograničenje otključavanja uređaja</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Trajanje korištenja otključavanja uređaja prije brisanja njegovog sadržaja</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Istek otključavanja uređaja</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Nemoj spremati šifrirani sadržaj za otključavanje uređaja</string>
|
||||
<string name="device_unlock_tap_delete">Dodirni za brisanje ključeva za otključavanje uređaja</string>
|
||||
<string name="education_device_unlock_title">Otključavanje uređaja baze podataka</string>
|
||||
<string name="device_unlock_timeout">Vremensko ograničenje otključavanja uređaja</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Trajanje korištenja otključavanja uređaja prije brisanja njegovog sadržaja</string>
|
||||
<string name="temp_device_unlock_timeout_title">Istek otključavanja uređaja</string>
|
||||
<string name="temp_device_unlock_enable_summary">Nemoj spremati šifrirani sadržaj za otključavanje uređaja</string>
|
||||
<string name="content">Sadržaj</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Privremeno otključavanje uređaja</string>
|
||||
<string name="temp_device_unlock_enable_title">Privremeno otključavanje uređaja</string>
|
||||
<string name="error_rebuild_list">Nije moguće ispravno obnoviti popis.</string>
|
||||
<string name="error_database_uri_null">URI baze podataka nije moguće dobiti.</string>
|
||||
<string name="autofill_inline_suggestions_title">Umetnuti prijedlozi</string>
|
||||
@@ -613,7 +611,7 @@
|
||||
<string name="menu_save_copy_to">Spremi kopiju u …</string>
|
||||
<string name="navigation_drawer_open">Ploča navigacije otvorena</string>
|
||||
<string name="navigation_drawer_close">Ploča navigacije zatvorena</string>
|
||||
<string name="advanced_unlock_keystore_warning">Ova će funckija spremiti šifrirane podatke za prijavu u sigurni KeyStore tvog uređaja.
|
||||
<string name="device_unlock_keystore_warning">Ova će funckija spremiti šifrirane podatke za prijavu u sigurni KeyStore tvog uređaja.
|
||||
\n
|
||||
\nOvisno o izvornoj API implementaciji operacijskog sustava, funcionalsnost možda neće biti potpuna.
|
||||
\n
|
||||
@@ -676,7 +674,7 @@
|
||||
<string name="unlock_and_link_biometric">Poveznica za otključavanje uređaja</string>
|
||||
<string name="menu_appearance_settings_summary">Teme, boje, atributi</string>
|
||||
<string name="unlock">Otključaj</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometrija, podatak za prijavu uređaja</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometrija, podatak za prijavu uređaja</string>
|
||||
<string name="info">Informacije</string>
|
||||
<string name="master_key_settings_summary">Promjena, obnova</string>
|
||||
<string name="education_validate_entry_title">Potvrdi unos</string>
|
||||
@@ -700,4 +698,7 @@
|
||||
<string name="recursive_number_entries_summary">Rekurzivno izračunava broj unosa u grupi</string>
|
||||
<string name="hide_templates_title">Sakrij predloške</string>
|
||||
<string name="hide_templates_summary">Predlošci se ne prikazuju</string>
|
||||
<string name="error_otp_secret_length">Tajni ključ mora sadržati barem %1$d znakova.</string>
|
||||
<string name="generate_keyfile">Generiraj datoteku ključeva</string>
|
||||
<string name="warning_large_keyfile">Ne preporučuje se dodavanje velike datoteke ključeva, jer to može spriječiti otvaranje baze podataka.</string>
|
||||
</resources>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
--><resources>
|
||||
<string name="feedback">Visszajelzés</string>
|
||||
<string name="homepage">Honlap</string>
|
||||
<string name="about_description">A KeePass jelszókezelő androidos megvalósítása</string>
|
||||
<string name="about_description">A KeePass jelszókezelő androidos megvalósítása.</string>
|
||||
<string name="accept">Elfogadás</string>
|
||||
<string name="add_entry">Bejegyzés hozzáadása</string>
|
||||
<string name="add_group">Csoport hozzáadása</string>
|
||||
@@ -198,7 +198,7 @@
|
||||
<string name="lock">Zárolás</string>
|
||||
<string name="lock_database_screen_off_title">Képernyőzár</string>
|
||||
<string name="lock_database_screen_off_summary">Az adatbázis zárolása néhány másodperc után, ha a képernyő kikapcsol</string>
|
||||
<string name="advanced_unlock">Eszközfeloldás</string>
|
||||
<string name="device_unlock">Eszközfeloldás</string>
|
||||
<string name="biometric_unlock_enable_title">Ujjlenyomat-alapú feloldás</string>
|
||||
<string name="biometric_unlock_enable_summary">Lehetővé teszi, hogy leolvassa az ujjlenyomatát az adatbázis megnyitásához</string>
|
||||
<string name="biometric_delete_all_key_title">Titkosítási kulcsok törlése</string>
|
||||
@@ -245,8 +245,6 @@
|
||||
<string name="keyboard_key_sound_title">Hang gombnyomáskor</string>
|
||||
<string name="allow_no_password_title">Mesterkulcs elhagyásának engedélyezése</string>
|
||||
<string name="allow_no_password_summary">A „Megnyitás” gomb engedélyezése, ha nincsenek hitelesítő adatok kiválasztva</string>
|
||||
<string name="enable_read_only_title">Írásvédett</string>
|
||||
<string name="enable_read_only_summary">Az adatbázis megnyitása alapértelmezetten írásvédett módban</string>
|
||||
<string name="enable_education_screens_title">Oktatóképernyők</string>
|
||||
<string name="enable_education_screens_summary">Elemek kiemelése, hogy megtudja hogyan működik az alkalmazás</string>
|
||||
<string name="reset_education_screens_title">Oktatóképernyők visszaállítása</string>
|
||||
@@ -382,7 +380,7 @@
|
||||
<string name="max_history_items_title">Maximális szám</string>
|
||||
<string name="database_data_compression_summary">Az adattömörítés csökkenti az adatbázis méretét</string>
|
||||
<string name="database_data_compression_title">Adattömörítés</string>
|
||||
<string name="advanced_unlock_explanation_summary">Eszközfeloldás használata az adatbázis könnyebb megnyitásához</string>
|
||||
<string name="device_unlock_explanation_summary">Eszközfeloldás használata az adatbázis könnyebb megnyitásához</string>
|
||||
<string name="clipboard_explanation_summary">A bejegyzésmezők másolása az eszköz vágólapjának használatával</string>
|
||||
<string name="database_opened">Adatbázis megnyitva</string>
|
||||
<string name="contains_duplicate_uuid_procedure">Megoldja a problémát azzal, hogy új UUID-t állít elő az ismétlődések számára\?</string>
|
||||
@@ -412,7 +410,7 @@
|
||||
<string name="biometric_auto_open_prompt_summary">Az eszközfeloldás automatikus kérése, ha az adatbázis úgy van beállítva, hogy használja</string>
|
||||
<string name="biometric_auto_open_prompt_title">Automatikus megnyitási képernyő</string>
|
||||
<string name="biometric">Ujjlenyomat</string>
|
||||
<string name="menu_advanced_unlock_settings">Eszköz feloldása</string>
|
||||
<string name="menu_device_unlock_settings">Eszköz feloldása</string>
|
||||
<string name="content_description_keyboard_close_fields">Mezők bezárása</string>
|
||||
<string name="content_description_update_from_list">Frissítés</string>
|
||||
<string name="list_groups_show_number_entries_summary">A csoportban szereplő bejegyzések számának megjelenítése</string>
|
||||
@@ -521,31 +519,31 @@
|
||||
<string name="hint_icon_name">Ikon neve</string>
|
||||
<string name="autofill_select_entry">Válasszon bejegyzést…</string>
|
||||
<string name="warning_database_info_changed_options">Adatok egyesítése, majd a külső módosítások felülírása az adatbázis mentésével, vagy újratöltés a legfrissebb változtatásokkal.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Hivatkozás az eszköz feloldásához</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Továbbra is meg kell jegyeznie a széf fő jelszavát, ha az eszköz feloldásfelismerését használja.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Adatbázis hitelesítő adatainak kinyerése az eszköz adatfeloldásával</string>
|
||||
<string name="advanced_unlock_invalid_key">Az eszközfeloldási kulcs nem olvasható. Törölje, és ismételje meg a feloldásfelismerési folyamatot.</string>
|
||||
<string name="advanced_unlock_not_recognized">Az eszközfeloldási ujjlenyomat nem ismerhető fel</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Az eszközfeloldási képernyő előkészítése sikertelen.</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Hivatkozás az eszköz feloldásához</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Továbbra is meg kell jegyeznie a széf fő jelszavát, ha az eszköz feloldásfelismerését használja.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Adatbázis hitelesítő adatainak kinyerése az eszköz adatfeloldásával</string>
|
||||
<string name="device_unlock_invalid_key">Az eszközfeloldási kulcs nem olvasható. Törölje, és ismételje meg a feloldásfelismerési folyamatot.</string>
|
||||
<string name="device_unlock_not_recognized">Az eszközfeloldási ujjlenyomat nem ismerhető fel</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Az eszközfeloldási képernyő előkészítése sikertelen.</string>
|
||||
<string name="properties">Tulajdonságok</string>
|
||||
<string name="device_credential">Eszköz hitelesítő adatai</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Ne tároljon semmilyen titkosított tartalmat az eszközfeloldás használatához</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Eszközfeloldás lejárati ideje</string>
|
||||
<string name="temp_device_unlock_enable_summary">Ne tároljon semmilyen titkosított tartalmat az eszközfeloldás használatához</string>
|
||||
<string name="temp_device_unlock_timeout_title">Eszközfeloldás lejárati ideje</string>
|
||||
<string name="warning_database_revoked">A fájl elérését visszavonta a fájlkezelő, zárja be az adatbázist és nyissa meg újra a helyéről.</string>
|
||||
<string name="warning_exact_alarm">Nem engedélyezte az alkalmazásnak, hogy pontos riasztást használjon. Ezért az időzítőt használó funkciók nem a pontos időt fogják használni.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Eszköz feloldásfelismerése</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Írja be a jelszót, majd kattintson erre a gombra.</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Ideiglenes eszközfeloldás</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Eszköz feloldásfelismerése</string>
|
||||
<string name="credential_before_click_device_unlock_button">Írja be a jelszót, majd kattintson erre a gombra.</string>
|
||||
<string name="temp_device_unlock_enable_title">Ideiglenes eszközfeloldás</string>
|
||||
<string name="permission">Engedély</string>
|
||||
<string name="content">Tartalom</string>
|
||||
<string name="advanced_unlock_tap_delete">Koppintson az eszközfeloldási kulcsok törléséhez</string>
|
||||
<string name="device_unlock_tap_delete">Koppintson az eszközfeloldási kulcsok törléséhez</string>
|
||||
<string name="device_credential_unlock_enable_title">Eszköz hitelesítő adataival történő feloldás</string>
|
||||
<string name="device_credential_unlock_enable_summary">Lehetővé teszi, hogy az eszköz hitelesítő adataival nyissa meg az adatbázist</string>
|
||||
<string name="autofill_application_id_blocklist_title">Letiltott alkalmazások</string>
|
||||
<string name="menu_merge_database">Adatok egyesítése</string>
|
||||
<string name="autofill_close_database_title">Adatbázis bezárása</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Az eszközfeloldás használata ideje, mielőtt a tartalma törölve lesz</string>
|
||||
<string name="advanced_unlock_timeout">Eszközfeloldás időtúllépése</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Az eszközfeloldás használata ideje, mielőtt a tartalma törölve lesz</string>
|
||||
<string name="device_unlock_timeout">Eszközfeloldás időtúllépése</string>
|
||||
<string name="templates_group_enable_title">Sablonok használata</string>
|
||||
<string name="templates_group_enable_summary">Dinamikus sablonok használata a bejegyzés mezőinek kitöltéséhez</string>
|
||||
<string name="templates_group_uuid_title">Sabloncsoport</string>
|
||||
@@ -579,7 +577,7 @@
|
||||
<string name="style_brightness_title">Téma fényereje</string>
|
||||
<string name="show_uuid_summary">Megjeleníti a bejegyzéshez vagy csoporthoz tartozó UUID-t</string>
|
||||
<string name="show_otp_token_title">OTP token megjelenítése</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Törli az összes, az eszközfeloldás-felismeréshez tartozó titkosítási kulcsot\?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Törli az összes, az eszközfeloldás-felismeréshez tartozó titkosítási kulcsot\?</string>
|
||||
<string name="keyboard_save_search_info_summary">A könnyebb jövőbeli használat érdekében próbálja menteni a megosztott információkat a kézi bejegyzéskiválasztásnál</string>
|
||||
<string name="custom_fields">Egyéni mezők</string>
|
||||
<string name="back_to_previous_keyboard">Vissza az előző billentyűzethez</string>
|
||||
@@ -590,8 +588,8 @@
|
||||
<string name="autofill_application_id_blocklist_summary">Tiltólista, amely megakadályozza az alkalmazások automatikus kitöltését</string>
|
||||
<string name="autofill_web_domain_blocklist_title">Letiltott webes domainek</string>
|
||||
<string name="autofill_ask_to_save_data_title">Adatok mentésének kérése</string>
|
||||
<string name="education_advanced_unlock_title">Eszközadatbázis feloldása</string>
|
||||
<string name="education_advanced_unlock_summary">A jelszó összekötése a leolvasott biometrikus adatokkal vagy eszköz-hitelesítőadatokkal, hogy gyorsan feloldhassa az adatbázist.</string>
|
||||
<string name="education_device_unlock_title">Eszközadatbázis feloldása</string>
|
||||
<string name="education_device_unlock_summary">A jelszó összekötése a leolvasott biometrikus adatokkal vagy eszköz-hitelesítőadatokkal, hogy gyorsan feloldhassa az adatbázist.</string>
|
||||
<string name="show_otp_token_summary">Megjeleníti az OTP tokeneket a bejegyzések között</string>
|
||||
<string name="education_add_attachment_title">Melléklet hozzáadása</string>
|
||||
<string name="keyboard_previous_database_credentials_summary">Automatikus visszaváltás az előző billentyűzetre az adatbázis-hitelesítőadatok képernyőn</string>
|
||||
@@ -656,7 +654,7 @@
|
||||
<string name="wireless">Wi-Fi</string>
|
||||
<string name="error_hardware_key_unsupported">A hardverkulcs nem támogatott.</string>
|
||||
<string name="colorize_password_title">Jelszavak színezése</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometrikus adatok, eszköz-hitelesítőadatok</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometrikus adatok, eszköz-hitelesítőadatok</string>
|
||||
<string name="error_XML_malformed">Hibásan formázott XML.</string>
|
||||
<string name="remember_hardware_key_summary">Követi a használt hardverkulcsokat</string>
|
||||
<string name="warning_database_already_opened">Egy adatbázis már nyitva van, előbb zárja be, hogy újat nyisson meg</string>
|
||||
@@ -666,7 +664,7 @@
|
||||
<string name="warning_database_notification_permission">Az értesítési engedély lehetővé teszi az adatbázis állapotának megjelenítését, és az egyszerű ikonnal történő zárolást.
|
||||
\n
|
||||
\nHa nem aktiválja az engedélyt, akkor a háttérben nyitott adatbázis nem lesz látható, ha egy másik alkalmazás van előtérben.</string>
|
||||
<string name="advanced_unlock_keystore_warning">A funkció eltárolja a titkosított hitelesítőadatokat az eszköz biztonságos kulcstárában.
|
||||
<string name="device_unlock_keystore_warning">A funkció eltárolja a titkosított hitelesítőadatokat az eszköz biztonságos kulcstárában.
|
||||
\n
|
||||
\nAz operációs rendszer natív API megvalósításától függően lehet, hogy nem lesz teljes értékű.
|
||||
\n
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<string name="menu_security_settings">Pengaturan Keamanan</string>
|
||||
<string name="menu_app_settings">Pengaturan Aplikasi</string>
|
||||
<string name="menu_database_settings">Pengaturan Basis Data</string>
|
||||
<string name="menu_advanced_unlock_settings">Membuka kunci perangkat</string>
|
||||
<string name="menu_device_unlock_settings">Membuka kunci perangkat</string>
|
||||
<string name="menu_form_filling_settings">Pengisian Formulir</string>
|
||||
<string name="settings">Pengaturan</string>
|
||||
<string name="copy_field">Salinan dari %1$s</string>
|
||||
@@ -170,7 +170,7 @@
|
||||
<string name="edit_entry">Rubah Entri</string>
|
||||
<string name="add_entry">Tambahkan Entri</string>
|
||||
<string name="accept">Terima</string>
|
||||
<string name="about_description">Implementasi Android dari pengelola kata sandi KeePass</string>
|
||||
<string name="about_description">Implementasi Android dari pengelola kata sandi KeePass.</string>
|
||||
<string name="homepage">Beranda</string>
|
||||
<string name="feedback">Umpan Balik</string>
|
||||
<string name="contribution">Kontribusi</string>
|
||||
@@ -237,7 +237,7 @@
|
||||
<string name="compression">Kompresi</string>
|
||||
<string name="other">Lainnya</string>
|
||||
<string name="application_appearance">Tampilan</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Tautan ke pembukaan kunci perangkat</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Tautan ke pembukaan kunci perangkat</string>
|
||||
<string name="keystore_not_accessible">Keystore tidak diinisialisasi dengan benar.</string>
|
||||
<string name="biometric_security_update_required">Pembaruan keamanan biometrik diperlukan.</string>
|
||||
<string name="configure_biometric">Tidak ada kredensial biometrik atau perangkat yang terdaftar.</string>
|
||||
@@ -248,8 +248,8 @@
|
||||
\n
|
||||
\nBasis data Anda mungkin menjadi sangat besar dan mengurangi kinerja dengan unggahan ini.</string>
|
||||
<string name="warning_empty_recycle_bin">Hapus permanen semua node dari keranjang sampah\?</string>
|
||||
<string name="advanced_unlock_tap_delete">Ketuk untuk menghapus tombol pembuka kunci perangkat</string>
|
||||
<string name="advanced_unlock">Buka kunci perangkat</string>
|
||||
<string name="device_unlock_tap_delete">Ketuk untuk menghapus tombol pembuka kunci perangkat</string>
|
||||
<string name="device_unlock">Buka kunci perangkat</string>
|
||||
<string name="content">Konten</string>
|
||||
<string name="lock_database_show_button_summary">Tampilkan tombol kunci di antarmuka pengguna</string>
|
||||
<string name="lock_database_show_button_title">Tampilkan tombol kunci</string>
|
||||
@@ -390,8 +390,8 @@
|
||||
<string name="education_field_copy_title">Salin bidang</string>
|
||||
<string name="education_setup_OTP_title">Atur OTP</string>
|
||||
<string name="education_donation_title">Partisipasi</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Pengenalan pembuka kunci perangkat</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Anda masih perlu mengingat kredensial utama vault Anda jika Anda menggunakan pengenalan kunci perangkat.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Pengenalan pembuka kunci perangkat</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Anda masih perlu mengingat kredensial utama vault Anda jika Anda menggunakan pengenalan kunci perangkat.</string>
|
||||
<string name="warning_database_revoked">Akses ke berkas dicabut oleh pengelola berkas, tutup basis data dan buka kembali dari lokasi tempatnya.</string>
|
||||
<string name="warning_database_info_changed_options">Gabungkan data, timpa perubahan dengan cara menyimpan basis data atau muat ulang dengan perubahan terbaru.</string>
|
||||
<string name="warning_database_info_changed">Informasi yang tersimpan di berkas basis data Anda sudah diubah di luar aplikasi.</string>
|
||||
@@ -414,13 +414,13 @@
|
||||
<string name="device_credential_unlock_enable_title">Membuka kredensial perangkat</string>
|
||||
<string name="biometric_unlock_enable_summary">Memperbolehkan Anda memindai biometrik Anda untuk membuka basis data</string>
|
||||
<string name="biometric_unlock_enable_title">Membuka kunci biometrik</string>
|
||||
<string name="advanced_unlock_explanation_summary">Gunakan buka kunci perangkat untuk membuka basis data dengan lebih mudah</string>
|
||||
<string name="device_unlock_explanation_summary">Gunakan buka kunci perangkat untuk membuka basis data dengan lebih mudah</string>
|
||||
<string name="unavailable">Tidak tersedia</string>
|
||||
<string name="advanced_unlock_not_recognized">Tidak dapat mengenali cetakan buka kunci perangkat</string>
|
||||
<string name="advanced_unlock_invalid_key">Tidak dapat membaca kunci pembuka perangkat. Harap hapus dan ulangi prosedur pengenalan buka kunci.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Ekstrak kredensial basis data dengan pembuka kunci data perangkat</string>
|
||||
<string name="device_unlock_not_recognized">Tidak dapat mengenali cetakan buka kunci perangkat</string>
|
||||
<string name="device_unlock_invalid_key">Tidak dapat membaca kunci pembuka perangkat. Harap hapus dan ulangi prosedur pengenalan buka kunci.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Ekstrak kredensial basis data dengan pembuka kunci data perangkat</string>
|
||||
<string name="error_word_reserved">Kata ini telah dipakai dan tidak bisa digunakan.</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Ketik kata sandi, lalu klik tombol ini.</string>
|
||||
<string name="credential_before_click_device_unlock_button">Ketik kata sandi, lalu klik tombol ini.</string>
|
||||
<string name="autofill_service_name">Isi formulir KeePassDX otomatis</string>
|
||||
<string name="autofill_preference_title">Pengaturan isi otomatis</string>
|
||||
<string name="set_autofill_service_title">Setel layanan isi otomatis secara default</string>
|
||||
@@ -462,11 +462,11 @@
|
||||
<string name="holder">Penyangga</string>
|
||||
<string name="autofill_select_entry">Pilih entri…</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Secara otomatis meminta buka kunci perangkat jika basis data diatur menggunakan itu</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Buka kunci perangkat sementara</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Jangan simpan konten terenkripsi apa pun untuk menggunakan buka kunci perangkat</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Durasi penggunaan buka kunci perangkat sebelum menghapus konten tersebut</string>
|
||||
<string name="advanced_unlock_timeout">Batas waktu membuka kunci perangkat</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Hapus semua kunci enkripsi yang terkait pengenalan buka kunci perangkat\?</string>
|
||||
<string name="temp_device_unlock_enable_title">Buka kunci perangkat sementara</string>
|
||||
<string name="temp_device_unlock_enable_summary">Jangan simpan konten terenkripsi apa pun untuk menggunakan buka kunci perangkat</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Durasi penggunaan buka kunci perangkat sebelum menghapus konten tersebut</string>
|
||||
<string name="device_unlock_timeout">Batas waktu membuka kunci perangkat</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Hapus semua kunci enkripsi yang terkait pengenalan buka kunci perangkat\?</string>
|
||||
<string name="templates_group_enable_title">Penggunaan templat</string>
|
||||
<string name="biometric_delete_all_key_summary">Hapus semua kunci enkripsi yang terkait pengenalan buka kunci perangkat</string>
|
||||
<string name="max_history_items_summary">Batasi jumlah item riwayat per entri</string>
|
||||
@@ -480,7 +480,7 @@
|
||||
<string name="max_history_size_summary">Batasi ukuran riwayat per entri</string>
|
||||
<string name="max_history_size_title">Ukuran maksimum</string>
|
||||
<string name="biometric_delete_all_key_title">Hapus kunci enkripsi</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Kedaluwarsa pembuka kunci perangkat</string>
|
||||
<string name="temp_device_unlock_timeout_title">Kedaluwarsa pembuka kunci perangkat</string>
|
||||
<string name="templates_group_enable_summary">Gunakan templat dinamis untuk mengisi bidang entri</string>
|
||||
<string name="education_read_only_summary">Ubah mode pembuka untuk sesi.
|
||||
\n
|
||||
@@ -515,7 +515,7 @@
|
||||
<string name="education_donation_summary">Bantu meningkatkan stabilitas, keamanan, dan menambahkan lebih banyak fitur.</string>
|
||||
<string name="html_text_ad_free">Tidak seperti banyak aplikasi pengelola kata sandi, ini <strong>bebas iklan</strong>, <strong>perangkat lunak libre copyleft</strong>, dan tidak mengumpulkan data pribadi di peladennya, tidak peduli versi apa yang Anda gunakan.</string>
|
||||
<string name="html_text_feature_generosity"><strong>Gaya visual</strong> ini tersedia berkat kemurahan hati Anda.</string>
|
||||
<string name="html_text_donation">Dengan <strong>berkontribusi<strong> kepada proyek <i>(dalam bentuk uang, kode, penerjemahan)<i>, Anda akan membantu proyek tersebut supaya terus hidup dan berkembang, dan Anda juga akan memenuhi syarat untuk prosedur pembukaan kunci <strong>tema<strong>.</string>
|
||||
<string name="html_text_donation">Dengan <strong>berkontribusi</strong> kepada proyek <i>(dalam bentuk uang, kode, penerjemahan)</i>, Anda akan membantu proyek tersebut supaya terus hidup dan berkembang, dan Anda juga akan memenuhi syarat untuk prosedur pembukaan kunci <strong>tema</strong>.</string>
|
||||
<string name="html_text_dev_feature">Fitur ini <strong>sedang dalam pengembangan</strong> dan memerlukan <strong>kontribusi</strong> Anda untuk bisa tersedia segera.</string>
|
||||
<string name="show_otp_token_title">Tampilkan Token OTP</string>
|
||||
<string name="text_appearance">Teks</string>
|
||||
@@ -554,7 +554,6 @@
|
||||
<string name="allow_no_password_title">Izinkan tidak ada kunci utama</string>
|
||||
<string name="allow_no_password_summary">Memungkinkan mengetuk tombol \"Buka\" jika tidak ada kredensial yang dipilih</string>
|
||||
<string name="delete_entered_password_summary">Menghapus kata sandi yang dimasukkan setelah upaya koneksi ke basis data</string>
|
||||
<string name="enable_read_only_summary">Buka basis data baca-saja secara baku</string>
|
||||
<string name="enable_keep_screen_on_title">Biarkan layar nyala</string>
|
||||
<string name="enable_education_screens_summary">Sorot elemen untuk mempelajari cara kerja aplikasi</string>
|
||||
<string name="education_create_database_summary">Buat file pengelola kata sandi pertama Anda.</string>
|
||||
@@ -562,8 +561,8 @@
|
||||
\n
|
||||
\nGrup (~folder) mengatur entri dalam basis data Anda.</string>
|
||||
<string name="education_search_summary">Masukkan judul, nama pengguna atau konten bidang lain untuk mengambil kata sandi Anda.</string>
|
||||
<string name="education_advanced_unlock_title">Pembukaan kunci basis data perangkat</string>
|
||||
<string name="education_advanced_unlock_summary">Tautkan kata sandi Anda ke kredensial biometrik atau perangkat yang dipindai untuk membuka kunci basis data Anda dengan cepat.</string>
|
||||
<string name="education_device_unlock_title">Pembukaan kunci basis data perangkat</string>
|
||||
<string name="education_device_unlock_summary">Tautkan kata sandi Anda ke kredensial biometrik atau perangkat yang dipindai untuk membuka kunci basis data Anda dengan cepat.</string>
|
||||
<string name="education_entry_new_field_title">Tambahkan bidang kustom</string>
|
||||
<string name="education_entry_new_field_summary">Daftarkan bidang tambahan, tambahkan nilai, dan lindungi secara opsional.</string>
|
||||
<string name="education_setup_OTP_summary">Siapkan pengelola kata sandi satu kali (HOTP / TOTP) untuk menghasilkan token yang diminta untuk otentikasi dua faktor (2FA).</string>
|
||||
@@ -582,7 +581,7 @@
|
||||
<string name="upper_case">HURUF BESAR</string>
|
||||
<string name="title_case">Huruf Judul</string>
|
||||
<string name="character_count">Jumlah karakter: %1$d</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Tidak dapat menginisialisasi perintah buka kunci perangkat.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Tidak dapat menginisialisasi perintah buka kunci perangkat.</string>
|
||||
<string name="monospace_font_fields_enable_title">Bidang tipe huruf</string>
|
||||
<string name="keyboard_save_search_info_title">Simpan info terbagi</string>
|
||||
<string name="keyboard_previous_fill_in_title">Ganti kembali</string>
|
||||
@@ -611,14 +610,13 @@
|
||||
<string name="enable_auto_save_database_summary">Simpan basis data setelah setiap tindakan penting (dalam mode \"Bisa dimodifikasi\")</string>
|
||||
<string name="custom_data">Data kustom</string>
|
||||
<string name="warning_database_already_opened">Sebuah basis data sudah dibuka, tutup terlebih dahulu untuk membuka yang baru</string>
|
||||
<string name="advanced_unlock_keystore_warning">Fitur ini akan menyimpan data kredensial terenkripsi di KeyStore perangkat Anda yang aman.
|
||||
<string name="device_unlock_keystore_warning">Fitur ini akan menyimpan data kredensial terenkripsi di KeyStore perangkat Anda yang aman.
|
||||
\n
|
||||
\nBergantung pada implementasi API asli dari sistem operasi, mungkin tidak berfungsi penuh.
|
||||
\n
|
||||
\nPeriksa kompatibilitas dan keamanan KeyStore dengan produsen perangkat Anda dan pembuat ROM yang Anda gunakan.</string>
|
||||
<string name="education_read_only_title">Lindungi basis data Anda dari penulisan</string>
|
||||
<string name="keyboard_save_search_info_summary">Coba simpan informasi terbagi ketika membuat sebuah pilihan entri manual untuk penggunaan mudah di waktu mendatang</string>
|
||||
<string name="enable_read_only_title">Terlindungi-tulis</string>
|
||||
<string name="enable_keep_screen_on_summary">Jaga layar tetap menyala saat melihat atau menyunting sebuah entri</string>
|
||||
<string name="content_description_hardware_key_checkbox">Kotak centang kunci perangkat keras</string>
|
||||
<string name="waiting_challenge_request">Menunggu untuk permintaan tantangan…</string>
|
||||
@@ -648,7 +646,7 @@
|
||||
<string name="info">Info</string>
|
||||
<string name="menu_app_settings_summary">Cari, kunci, riwayat, properti</string>
|
||||
<string name="menu_form_filling_settings_summary">Papan ketik, isi otomatis, papan klip</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometri, kredensial perangkat</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometri, kredensial perangkat</string>
|
||||
<string name="menu_database_settings_summary">Metadata, tempat sampah, templat, riwayat</string>
|
||||
<string name="menu_security_settings_summary">Enkripsi, fungsi derivasi kunci</string>
|
||||
<string name="master_key_settings_summary">Perubahan, pembaruan</string>
|
||||
@@ -685,4 +683,5 @@
|
||||
<string name="recursive_number_entries_title">Jumlah entri rekursif</string>
|
||||
<string name="warning_large_keyfile">Tidak disarankan menambahkan berkas kunci yang besar, ini dapat mencegah pembukaan basis data.</string>
|
||||
<string name="hide_templates_title">Sembunyikan templat</string>
|
||||
</resources>
|
||||
<string name="error_otp_secret_length">Kunci rahasia minimal harus %1$d karakter.</string>
|
||||
</resources>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
--><resources>
|
||||
<string name="feedback">Commenti</string>
|
||||
<string name="homepage">Pagina web</string>
|
||||
<string name="about_description">Implementazione Android del gestore password KeePass</string>
|
||||
<string name="about_description">Implementazione Android del gestore password KeePass.</string>
|
||||
<string name="accept">Accetto</string>
|
||||
<string name="add_entry">Aggiungi elemento</string>
|
||||
<string name="add_group">Aggiungi gruppo</string>
|
||||
@@ -192,7 +192,7 @@
|
||||
<string name="lock">Blocca</string>
|
||||
<string name="lock_database_screen_off_title">Blocco schermo</string>
|
||||
<string name="lock_database_screen_off_summary">Blocca il database dopo alcuni secondi quando lo schermo è spento</string>
|
||||
<string name="advanced_unlock">Sblocco con dispositivo</string>
|
||||
<string name="device_unlock">Sblocco con dispositivo</string>
|
||||
<string name="biometric_unlock_enable_title">Scansione biometrica</string>
|
||||
<string name="biometric_unlock_enable_summary">Consente la scansione biometrica per aprire il database</string>
|
||||
<string name="biometric_delete_all_key_title">Elimina chiavi di cifratura</string>
|
||||
@@ -222,8 +222,6 @@
|
||||
<string name="magic_keyboard_explanation_summary">Attiva una tastiera personale che inserisce le tue password e i campi di identità</string>
|
||||
<string name="allow_no_password_title">Non consentire chiavi principali</string>
|
||||
<string name="allow_no_password_summary">Permetti di toccare il pulsante \"Apri\" se non sono selezionate credenziali</string>
|
||||
<string name="enable_read_only_title">Protetto da scrittura</string>
|
||||
<string name="enable_read_only_summary">Apri il database in sola lettura in modo predefinito</string>
|
||||
<string name="enable_education_screens_title">Suggerimenti educativi</string>
|
||||
<string name="enable_education_screens_summary">Evidenzia gli elementi per imparare come funziona l\'app</string>
|
||||
<string name="reset_education_screens_title">Ripristina i suggerimenti educativi</string>
|
||||
@@ -339,7 +337,7 @@
|
||||
<string name="content_description_background">Sfondo</string>
|
||||
<string name="entry_UUID">Identificativo univoco universale</string>
|
||||
<string name="error_create_database_file">Impossibile creare un database con questa password e file chiave.</string>
|
||||
<string name="menu_advanced_unlock_settings">Sblocco con dispositivo</string>
|
||||
<string name="menu_device_unlock_settings">Sblocco con dispositivo</string>
|
||||
<string name="entry_history">Cronologia</string>
|
||||
<string name="entry_setup_otp">Imposta password usa e getta</string>
|
||||
<string name="otp_type">Tipo di OTP</string>
|
||||
@@ -399,7 +397,7 @@
|
||||
<string name="database_data_compression_summary">La compressione dei dati riduce le dimensioni del database</string>
|
||||
<string name="database_data_compression_title">Compressione dati</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Richiedi automaticamente lo sblocco con dispositivo se il database è impostato per usarlo</string>
|
||||
<string name="advanced_unlock_explanation_summary">Utilizza lo sblocco con dispositivo per aprire un database più facilmente</string>
|
||||
<string name="device_unlock_explanation_summary">Utilizza lo sblocco con dispositivo per aprire un database più facilmente</string>
|
||||
<string name="clipboard_explanation_summary">Copia i campi di immissione utilizzando gli appunti del tuo dispositivo</string>
|
||||
<string name="database_opened">Database aperto</string>
|
||||
<string name="biometric">Biometrico</string>
|
||||
@@ -490,32 +488,32 @@
|
||||
<string name="error_field_name_already_exists">Il nome del campo esiste già.</string>
|
||||
<string name="error_registration_read_only">Il salvataggio di un nuovo elemento non è consentito in un database di sola lettura.</string>
|
||||
<string name="configure_biometric">Nessuna credenziale biometrica o del dispositivo è registrata.</string>
|
||||
<string name="education_advanced_unlock_summary">Collega la password alla tua autenticazione biometrica (o del dispositivo) per sbloccare velocemente il database.</string>
|
||||
<string name="education_advanced_unlock_title">Sblocco del database con dispositivo</string>
|
||||
<string name="education_device_unlock_summary">Collega la password alla tua autenticazione biometrica (o del dispositivo) per sbloccare velocemente il database.</string>
|
||||
<string name="education_device_unlock_title">Sblocco del database con dispositivo</string>
|
||||
<string name="enter">Invio</string>
|
||||
<string name="backspace">Backspace</string>
|
||||
<string name="select_entry">Seleziona voce</string>
|
||||
<string name="back_to_previous_keyboard">Torna alla tasitera precedente</string>
|
||||
<string name="custom_fields">Campi personalizzati</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Vuoi eliminare tutte le chiavi di crittografia relative allo sblocco con dispositivo\?</string>
|
||||
<string name="advanced_unlock_timeout">Scadenza dello sblocco con dispositivo</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Non salvare alcun contenuto cifrato per usare lo sblocco con dispositivo</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Validità dell\'uso dello sblocco con dispositivo prima di eliminarne il contenuto</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Scadenza dello sblocco con dispositivo</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Sblocco con dispositivo temporaneo</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Vuoi eliminare tutte le chiavi di crittografia relative allo sblocco con dispositivo\?</string>
|
||||
<string name="device_unlock_timeout">Scadenza dello sblocco con dispositivo</string>
|
||||
<string name="temp_device_unlock_enable_summary">Non salvare alcun contenuto cifrato per usare lo sblocco con dispositivo</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Validità dell\'uso dello sblocco con dispositivo prima di eliminarne il contenuto</string>
|
||||
<string name="temp_device_unlock_timeout_title">Scadenza dello sblocco con dispositivo</string>
|
||||
<string name="temp_device_unlock_enable_title">Sblocco con dispositivo temporaneo</string>
|
||||
<string name="device_credential_unlock_enable_summary">Permette di usare le credenziali del dispositivo per sbloccare il database</string>
|
||||
<string name="device_credential_unlock_enable_title">Sblocco con credenziali del dispositivo</string>
|
||||
<string name="advanced_unlock_tap_delete">Tocca per eliminare le chiavi di sblocco con dispositivo</string>
|
||||
<string name="device_unlock_tap_delete">Tocca per eliminare le chiavi di sblocco con dispositivo</string>
|
||||
<string name="content">Contenuto</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Impossibile inizializzare la richiesta di sblocco con dispositivo.</string>
|
||||
<string name="advanced_unlock_not_recognized">Non è stato possibile riconoscere l\'impronta di sblocco del dispositivo</string>
|
||||
<string name="advanced_unlock_invalid_key">Non è possibile leggere la chiave di sblocco del dispositivo. Eliminala e ripeti la procedura di riconoscimento dello sblocco.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Estrai le credenziali del database con i dati dello sblocco con dispositivo</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Dovrai comunque ricordare la password principale della cassaforte anche se usi lo sblocco con dispositivo.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Collegamento allo sblocco con dispositivo</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Impossibile inizializzare la richiesta di sblocco con dispositivo.</string>
|
||||
<string name="device_unlock_not_recognized">Non è stato possibile riconoscere l\'impronta di sblocco del dispositivo</string>
|
||||
<string name="device_unlock_invalid_key">Non è possibile leggere la chiave di sblocco del dispositivo. Eliminala e ripeti la procedura di riconoscimento dello sblocco.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Estrai le credenziali del database con i dati dello sblocco con dispositivo</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Dovrai comunque ricordare la password principale della cassaforte anche se usi lo sblocco con dispositivo.</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Collegamento allo sblocco con dispositivo</string>
|
||||
<string name="device_credential">Credenziali del dispositivo</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Inserisci la password, poi clicca questo pulsante.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Riconoscimento sblocco con dispositivo</string>
|
||||
<string name="credential_before_click_device_unlock_button">Inserisci la password, poi clicca questo pulsante.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Riconoscimento sblocco con dispositivo</string>
|
||||
<string name="menu_keystore_remove_key">Elimina chiave di sblocco del dispositivo</string>
|
||||
<string name="error_rebuild_list">Non è possibile ricostruire la lista correttamente.</string>
|
||||
<string name="error_database_uri_null">Non è stato recuperato l\'indirizzo del database.</string>
|
||||
@@ -627,7 +625,7 @@
|
||||
<string name="colorize_password_summary">Colora i tipi di carattere della password</string>
|
||||
<string name="warning_database_already_opened">Un database è già aperto, chiudilo prima di aprirne un altro</string>
|
||||
<string name="auto_type_sequence">Sequenza di autodigitazione</string>
|
||||
<string name="advanced_unlock_keystore_warning">Questa funzione memorizzerà le informazioni cifrate di accesso nel KeyStore protetto del dispositivo.
|
||||
<string name="device_unlock_keystore_warning">Questa funzione memorizzerà le informazioni cifrate di accesso nel KeyStore protetto del dispositivo.
|
||||
\n
|
||||
\nA seconda di come è stata implementata l\'API nativa del sistema operativo, potrebbe non essere pienamente funzionante.
|
||||
\n
|
||||
@@ -673,7 +671,7 @@
|
||||
<string name="info">Info</string>
|
||||
<string name="menu_app_settings_summary">Ricerca, blocco, cronologia, proprietà</string>
|
||||
<string name="menu_form_filling_settings_summary">Tastiera, riempimento automatico, appunti</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometria, credenziali del dispositivo</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometria, credenziali del dispositivo</string>
|
||||
<string name="menu_database_settings_summary">Metadati, cestino, modelli, cronologia</string>
|
||||
<string name="menu_security_settings_summary">Crittografia, funzione di derivazione della chiave</string>
|
||||
<string name="master_key_settings_summary">Cambio, rinnovo</string>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
--><resources>
|
||||
<string name="feedback">משוב</string>
|
||||
<string name="homepage">דף הבית</string>
|
||||
<string name="about_description">מימוש אנדרואיד של מנהל הסיסמאות KeePass</string>
|
||||
<string name="about_description">מימוש אנדרואיד של מנהל הסיסמאות KeePass.</string>
|
||||
<string name="accept">קבל</string>
|
||||
<string name="add_entry">הוסף ערך</string>
|
||||
<string name="add_group">הוסף קבוצה</string>
|
||||
@@ -276,7 +276,7 @@
|
||||
<string name="content_description_repeat_toggle_password_visibility">חזור על החלפת נראות הסיסמה</string>
|
||||
<string name="entry_add_field">הוסף שדה</string>
|
||||
<string name="menu_form_filling_settings">מילוי טפסים</string>
|
||||
<string name="menu_advanced_unlock_settings">ביטול נעילת מכשיר</string>
|
||||
<string name="menu_device_unlock_settings">ביטול נעילת מכשיר</string>
|
||||
<string name="menu_save_database">שמור נתונים</string>
|
||||
<string name="menu_merge_database">מזג נתונים</string>
|
||||
<string name="list_groups_show_number_entries_title">הצג את מספר הרשומות</string>
|
||||
@@ -334,7 +334,6 @@
|
||||
<string name="allow_copy_password_warning">אזהרה: לוח ההעתקה משותף לכל היישומים. אם מידע רגיש יועתק, תוכנות אחרות עשויות לשחזר אותו.</string>
|
||||
<string name="disable">השבת</string>
|
||||
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
|
||||
<string name="enable_read_only_title">מוגן מפני כתיבה</string>
|
||||
<string name="keyboard_notification_entry_clear_close_title">נקה בסגירה</string>
|
||||
<string name="keyboard_notification_entry_content_title_text">רשומה</string>
|
||||
<string name="keyboard_notification_entry_content_title">%1$s זמין ב־Magikeyboard</string>
|
||||
@@ -354,7 +353,7 @@
|
||||
<string name="clipboard_notifications_title">התראות לוח העתקה</string>
|
||||
<string name="clipboard_explanation_summary">העתק שדות רשומה בעזרת לוח ההעתקה של המכשיר שלך</string>
|
||||
<string name="max_history_size_summary">הגבל את גודל ההיסטוריה לכל רשומה</string>
|
||||
<string name="advanced_unlock">בטל נעילת מכשיר</string>
|
||||
<string name="device_unlock">בטל נעילת מכשיר</string>
|
||||
<string name="database_version_title">גרסת מסד הנתונים</string>
|
||||
<string name="education_select_database_summary">פתח את קובץ מסד הנתונים הקודם שלך מסייר הקבצים שלך כדי להמשיך להשתמש בו.</string>
|
||||
<string name="education_new_node_title">הוסף פריטים למסד הנתונים שלך</string>
|
||||
@@ -371,7 +370,7 @@
|
||||
<string name="contribute">תרומה</string>
|
||||
<string name="memory_usage_explanation">כמות הזיכרון שיש להשתמש בו על ידי פונקציית גזירת המפתח.</string>
|
||||
<string name="education_create_database_title">צור את קובץ מסד הנתונים שלך</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">ביומטרי, אישור מכשיר</string>
|
||||
<string name="menu_device_unlock_settings_summary">ביומטרי, אישור מכשיר</string>
|
||||
<string name="menu_database_settings_summary">מטא-נתונים, סל מחזור, תבניות, היסטוריה</string>
|
||||
<string name="sort_last_access_time">גישה</string>
|
||||
<string name="autofill_service_name">מילוי טפסים אוטומטי של KeePassDX</string>
|
||||
@@ -426,7 +425,7 @@
|
||||
<string name="lock_database_back_root_summary">נעל את מסד הנתונים כאשר המשתמש לוחץ על כפתור החזרה במסך הראשי</string>
|
||||
<string name="biometric_unlock_enable_title">ביטול נעילה ביומטרית</string>
|
||||
<string name="biometric_unlock_enable_summary">מאפשר לך לסרוק את האמצעי הביומטרי שלך כדי לפתוח את מסד הנתונים</string>
|
||||
<string name="advanced_unlock_explanation_summary">השתמש בביטול נעילת המכשיר כדי לפתוח את מסד הנתונים ביתר קלות</string>
|
||||
<string name="device_unlock_explanation_summary">השתמש בביטול נעילת המכשיר כדי לפתוח את מסד הנתונים ביתר קלות</string>
|
||||
<string name="biometric_delete_all_key_title">מחק מפתחות הצפנה</string>
|
||||
<string name="biometric_delete_all_key_summary">מחק את כל מפתחות ההצפנה הקשורים לזיהוי ביטול נעילת המכשיר</string>
|
||||
<string name="unavailable_feature_text">לא היה ניתן להתחיל תכונה זו.</string>
|
||||
@@ -469,7 +468,6 @@
|
||||
<string name="keyboard_auto_go_action_title">פעולת מקש אוטומטית</string>
|
||||
<string name="allow_no_password_title">אפשר עבודה ללא מפתח ראשי</string>
|
||||
<string name="allow_no_password_summary">מאפשר הקשה על הכפתור \"פתח\" אם לא נבחרו אישורים</string>
|
||||
<string name="enable_read_only_summary">פתח את מסד הנתונים לקריאה בלבד כברירת מחדל</string>
|
||||
<string name="delete_entered_password_title">מחק סיסמה</string>
|
||||
<string name="delete_entered_password_summary">מוחק את הסיסמה שהוזנה לאחר ניסיון התחברות למסד נתונים</string>
|
||||
<string name="reset_education_screens_summary">הראה שוב את כל המידע הלימודי</string>
|
||||
@@ -502,7 +500,7 @@
|
||||
<string name="warning_database_read_only">הענק גישת כתיבה לקובץ כדי לשמור שינויי מסד נתונים</string>
|
||||
<string name="warning_database_link_revoked">בוטלה הגישה לקובץ על ידי מנהל הקבצים</string>
|
||||
<string name="warning_database_info_changed">המידע שבתוך קובץ מסד הנתונים שלך השתנה מחוץ ליישום זה.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">אתה עדיין צריך לזכור את אישור הכספת הראשי שלך אם אתה משתמש בזיהוי ביטול נעילת המכשיר.</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">אתה עדיין צריך לזכור את אישור הכספת הראשי שלך אם אתה משתמש בזיהוי ביטול נעילת המכשיר.</string>
|
||||
<string name="keyboard_previous_lock_title">נעל מסד נתונים</string>
|
||||
<string name="keyboard_save_search_info_title">שמור מידע משותף</string>
|
||||
<string name="upload_attachment">העלה %1$s</string>
|
||||
@@ -524,10 +522,10 @@
|
||||
<string name="hide_broken_locations_summary">הסתר קישורים שבורים ברשימת מסדי הנתונים האחרונים</string>
|
||||
<string name="autofill_preference_title">הגדרות מילוי אוטומטי</string>
|
||||
<string name="autofill_application_id_blocklist_summary">רשימת חסימה שמונעת מילוי אוטומטי של יישומים</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">קשר לביטול נעילת המכשיר</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">קשר לביטול נעילת המכשיר</string>
|
||||
<string name="autofill_ask_to_save_data_summary">בקש שמירת נתונים כאשר מילוי טופס הושלם</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">לא ניתן לאתחל את הנחיית ביטול נעילת מכשיר.</string>
|
||||
<string name="advanced_unlock_timeout">פסק זמן של ביטול נעילת מכשיר</string>
|
||||
<string name="device_unlock_prompt_not_initialized">לא ניתן לאתחל את הנחיית ביטול נעילת מכשיר.</string>
|
||||
<string name="device_unlock_timeout">פסק זמן של ביטול נעילת מכשיר</string>
|
||||
<string name="unit_kibibyte">KiB</string>
|
||||
<string name="unit_mebibyte">MiB</string>
|
||||
<string name="filter">מסנן</string>
|
||||
@@ -535,15 +533,15 @@
|
||||
<string name="warning_empty_keyfile">זה לא מומלץ להוסיף קובץ מפתח ריק.</string>
|
||||
<string name="warning_empty_keyfile_explanation">תוכן קובץ המפתח לעולם לא אמור להשתנות, ועדיף שיכיל נתונים שיוצרו רנדומלית.</string>
|
||||
<string name="warning_empty_recycle_bin">למחוק לצמיתות את כל הצמתים מסל המחזור?</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">זיהוי ביטול נעילת מכשיר</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">חלץ אישור מסד נתונים עם נתוני ביטול נעילת מכשיר</string>
|
||||
<string name="advanced_unlock_invalid_key">לא ניתן לקרוא את מפתח ביטול נעילת המכשיר. נא למחוק אותו ולחזור על התהליך לזיהוי ביטול נעילה.</string>
|
||||
<string name="advanced_unlock_not_recognized">לא היה ניתן לזהות טביעת ביטול נעילת מכשיר</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">הקלד את הסיסמה, ואז לחץ על הכפתור הזה.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">זיהוי ביטול נעילת מכשיר</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">חלץ אישור מסד נתונים עם נתוני ביטול נעילת מכשיר</string>
|
||||
<string name="device_unlock_invalid_key">לא ניתן לקרוא את מפתח ביטול נעילת המכשיר. נא למחוק אותו ולחזור על התהליך לזיהוי ביטול נעילה.</string>
|
||||
<string name="device_unlock_not_recognized">לא היה ניתן לזהות טביעת ביטול נעילת מכשיר</string>
|
||||
<string name="credential_before_click_device_unlock_button">הקלד את הסיסמה, ואז לחץ על הכפתור הזה.</string>
|
||||
<string name="lock_database_show_button_title">הצג כפתור נעילה</string>
|
||||
<string name="lock_database_show_button_summary">הצג את כפתור הנעילה בממשק המשתמש</string>
|
||||
<string name="advanced_unlock_tap_delete">הקש כדי למחוק מפתחות של ביטול נעילת מכשיר</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">למחוק את כל מפתחות ההצפנה הקשורים לזיהוי ביטול נעילת מכשיר?</string>
|
||||
<string name="device_unlock_tap_delete">הקש כדי למחוק מפתחות של ביטול נעילת מכשיר</string>
|
||||
<string name="device_unlock_delete_all_key_warning">למחוק את כל מפתחות ההצפנה הקשורים לזיהוי ביטול נעילת מכשיר?</string>
|
||||
<string name="database_data_remove_unlinked_attachments_title">הסר נתונים לא מקושרים</string>
|
||||
<string name="database_data_remove_unlinked_attachments_summary">מסיר צרופות המוכלות במסד הנתונים אך לא מקושרים לאף רשומה</string>
|
||||
<string name="keyboard_change">החלף מקלדת</string>
|
||||
@@ -664,7 +662,7 @@
|
||||
<string name="education_read_only_summary">שנה מצב פתיחה עבור ההפעלה.\n\n\"מוגן מפני כתיבה\" מונע שינויים לא מכוונים למסד הנתונים.\n\"ניתן לשינוי\" מאפשר לך להוסיף, למחוק, או לשנות את כל הרכיבים כפי רצונך.</string>
|
||||
<string name="warning_password_encoding">הימנע מתווי סיסמה מחוץ לפורמט קידוד טקסט בקובץ מסד נתונים (תווים לא מזוהים מומרים לאותה האות).</string>
|
||||
<string name="warning_large_keyfile">זה לא מומלץ להוסיף קובץ מפתח גדול, זה עלול למנוע את פתיחת מסד הנתונים.</string>
|
||||
<string name="temp_advanced_unlock_enable_title">ביטול נעילת מכשיר זמני</string>
|
||||
<string name="temp_device_unlock_enable_title">ביטול נעילת מכשיר זמני</string>
|
||||
<string name="autofill_inline_suggestions_summary">נסה להציג הצעות למילוי אוטומטי ישירות ממקלדת נתמכת</string>
|
||||
<string name="education_entry_edit_summary">ערוך את הרשומה שלך עם שדות מותאמים אישית. ניתן להפנות לנתוני מאגר בין שדות רשומות שונות.</string>
|
||||
<string name="warning_keyfile_integrity">הגיבוב של הקובץ אינו מובטח בגלל שאנדרואיד יכול לשנות את הנתונים שלו תוך כדי תנועה. שנה את הרחבת הקובץ ל-bin. עבור שלמות נכונה.</string>
|
||||
@@ -672,16 +670,16 @@
|
||||
<string name="device_credential_unlock_enable_title">ביטול נעילה בעזרת אישור מכשיר</string>
|
||||
<string name="device_credential_unlock_enable_summary">מאפשר לך להשתמש באישור המכשיר שלך כדי לפתוח את מסד הנתונים</string>
|
||||
<string name="biometric_auto_open_prompt_title">פתח הנחיה אוטומטית</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">אל תאחסן תוכן מוצפן כדי להשתמש בביטול נעילת מכשיר</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">תפוגת ביטול נעילת מכשיר</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">משך השימוש בביטול נעילת מכשיר לפני מחיקת התוכן שלו</string>
|
||||
<string name="advanced_unlock_keystore_warning">תכונה זו תאחסן נתוני אישור מוצפנים במאגר המפתחות של המכשיר שלך.\n\nבהתאם ליישום ה-API המקורי של מערכת ההפעלה, זה עשוי להיות לא פונקציונלי לחלוטין.\n\nבדוק את התאימות והאבטחה של מאגר המפתחות עם היצרן של המכשיר שלך והיוצר של ה-ROM בו אתה משתמש.</string>
|
||||
<string name="temp_device_unlock_enable_summary">אל תאחסן תוכן מוצפן כדי להשתמש בביטול נעילת מכשיר</string>
|
||||
<string name="temp_device_unlock_timeout_title">תפוגת ביטול נעילת מכשיר</string>
|
||||
<string name="temp_device_unlock_timeout_summary">משך השימוש בביטול נעילת מכשיר לפני מחיקת התוכן שלו</string>
|
||||
<string name="device_unlock_keystore_warning">תכונה זו תאחסן נתוני אישור מוצפנים במאגר המפתחות של המכשיר שלך.\n\nבהתאם ליישום ה-API המקורי של מערכת ההפעלה, זה עשוי להיות לא פונקציונלי לחלוטין.\n\nבדוק את התאימות והאבטחה של מאגר המפתחות עם היצרן של המכשיר שלך והיוצר של ה-ROM בו אתה משתמש.</string>
|
||||
<string name="clear_clipboard_notification_summary">נעל את מסד הנתונים כאשר משך זמן לוח ההעתקה פג או ההתראה נסגרה לאחר שהתחלת להשתמש בו</string>
|
||||
<string name="magic_keyboard_explanation_summary">הפעל מקלדת מותאמת אישית המאכלסת את הסיסמאות שלך ואת כל שדות הזהות</string>
|
||||
<string name="keyboard_auto_go_action_summary">פעולת מקש \"עבור\" לאחר לחיצה על מקש \"שדה\"</string>
|
||||
<string name="autofill_save_search_info_summary">נסה לשמור מידע חיפוש כשעושים בחירת ערך ידנית בשביל שימושים עתידיים קלים יותר</string>
|
||||
<string name="education_advanced_unlock_title">ביטול נעילת מסד נתונים בעזרת מכשיר</string>
|
||||
<string name="education_advanced_unlock_summary">קשר את הסיסמה שלך לאמצעי הביומטרי הסרוק שלך או לאישור מכשיר כדי לפתוח במהירות את מסד הנתונים שלך.</string>
|
||||
<string name="education_device_unlock_title">ביטול נעילת מסד נתונים בעזרת מכשיר</string>
|
||||
<string name="education_device_unlock_summary">קשר את הסיסמה שלך לאמצעי הביומטרי הסרוק שלך או לאישור מכשיר כדי לפתוח במהירות את מסד הנתונים שלך.</string>
|
||||
<string name="education_generate_password_summary">צור סיסמה חזקה לשיוך עם הרשומה שלך, הגדר אותה בקלות בהתאם לקריטריונים של הטופס ואל תשכח לעשות את הסיסמה מאובטחת.</string>
|
||||
<string name="education_validate_entry_title">אמת את הרשומה</string>
|
||||
<string name="education_validate_entry_summary">זכור לאמת את הרשומה שלך ולשמור את מסד הנתונים שלך.\n\nאם נעילה אוטומטית מופעלת ואתה שוכח שעשית שינוי, אתה מסתכן באיבוד הנתונים שלך.</string>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<string name="contribution">貢献</string>
|
||||
<string name="feedback">フィードバック</string>
|
||||
<string name="homepage">ホームページ</string>
|
||||
<string name="about_description">KeePass パスワード マネージャーの Android 実装</string>
|
||||
<string name="about_description">KeePassパスワードマネージャーのAndroid実装版。</string>
|
||||
<string name="accept">承認</string>
|
||||
<string name="add_entry">エントリーを追加</string>
|
||||
<string name="edit_entry">エントリーを編集</string>
|
||||
@@ -167,7 +167,7 @@
|
||||
<string name="settings">設定</string>
|
||||
<string name="menu_app_settings">アプリの設定</string>
|
||||
<string name="menu_form_filling_settings">フォームの入力</string>
|
||||
<string name="menu_advanced_unlock_settings">デバイスのロック解除</string>
|
||||
<string name="menu_device_unlock_settings">デバイスのロック解除</string>
|
||||
<string name="menu_database_settings">データベースの設定</string>
|
||||
<string name="menu_security_settings">セキュリティの設定</string>
|
||||
<string name="menu_master_key_settings">マスターキーの設定</string>
|
||||
@@ -295,8 +295,8 @@
|
||||
<string name="lock_database_back_root_summary">ユーザーがルート画面上で戻るボタンをタップしたとき、データベースをロックします</string>
|
||||
<string name="lock_database_show_button_title">ロックボタンを表示</string>
|
||||
<string name="lock_database_show_button_summary">ユーザー インターフェースにロックボタンを表示します</string>
|
||||
<string name="advanced_unlock">デバイスのロック解除</string>
|
||||
<string name="advanced_unlock_explanation_summary">デバイスのロック解除を使用してデータベースをより簡単に開きます</string>
|
||||
<string name="device_unlock">デバイスのロック解除</string>
|
||||
<string name="device_unlock_explanation_summary">デバイスのロック解除を使用してデータベースをより簡単に開きます</string>
|
||||
<string name="biometric_unlock_enable_title">生体認証によるロック解除</string>
|
||||
<string name="biometric_unlock_enable_summary">生体情報をスキャンしてデータベースを開くことができるようにします</string>
|
||||
<string name="biometric_auto_open_prompt_title">プロンプトを自動で開く</string>
|
||||
@@ -400,8 +400,6 @@
|
||||
<string name="allow_no_password_summary">認証情報が選択されていない場合でも、[開く] ボタンのタップを許可します</string>
|
||||
<string name="delete_entered_password_title">パスワードの削除</string>
|
||||
<string name="delete_entered_password_summary">入力されたパスワードをデータベースへの接続試行後に削除します</string>
|
||||
<string name="enable_read_only_title">書き込み禁止</string>
|
||||
<string name="enable_read_only_summary">デフォルトでデータベースを読み取り専用として開きます</string>
|
||||
<string name="enable_auto_save_database_title">データベースの自動保存</string>
|
||||
<string name="enable_auto_save_database_summary">重要なアクションを起こすたびにデータベースを保存します( [変更可能] モードのとき)</string>
|
||||
<string name="enable_education_screens_title">教育的なヒント</string>
|
||||
@@ -445,7 +443,7 @@
|
||||
<string name="html_text_ad_free">多くのパスワード管理アプリとは異なり、このアプリは<strong>広告なし</strong>かつ<strong>コピーレフトの自由ソフトウェア</strong>です。どのバージョンを使っても、サーバー上で個人情報が収集されることはありません。</string>
|
||||
<string name="html_text_buy_pro">Pro バージョンを購入すると、この<strong>ビジュアル スタイル</strong>にアクセスできるようになり、また<strong>コミュニティ プロジェクトの実現</strong>を特に支援できます。</string>
|
||||
<string name="html_text_feature_generosity">この<strong>ビジュアル スタイル</strong>はあなたの厚意により利用可能となります。</string>
|
||||
<string name="html_text_donation"><strong>プロジェクトに貢献</strong>することによって(お金、コード、翻訳など)、プロジェクトは継続して成長することができ、さらに<strong>テーマ</strong>のアンロック手続きにも参加できるようになります。</string>
|
||||
<string name="html_text_donation"><strong>プロジェクトに貢献</strong>することによって <i>(お金、コード、翻訳など)</i>、プロジェクトは継続して成長することができ、さらに<strong>テーマ</strong>のアンロック手続きにも参加できるようになります。</string>
|
||||
<string name="html_text_dev_feature">この機能は<strong>開発中</strong>であり、早期に提供するにはあなたの<strong>貢献</strong>が必要です。</string>
|
||||
<string name="html_text_dev_feature_buy_pro"><strong>pro</strong> バージョンを購入することによる、</string>
|
||||
<string name="html_text_dev_feature_contibute"><strong>貢献</strong>による、</string>
|
||||
@@ -480,31 +478,31 @@
|
||||
<string name="search_mode">検索モード</string>
|
||||
<string name="error_field_name_already_exists">フィールド名はすでに存在します。</string>
|
||||
<string name="menu_keystore_remove_key">デバイスのロック解除キーを削除する</string>
|
||||
<string name="advanced_unlock_not_recognized">デバイスのロック解除を認識できませんでした</string>
|
||||
<string name="device_unlock_not_recognized">デバイスのロック解除を認識できませんでした</string>
|
||||
<string name="enter">エンター</string>
|
||||
<string name="backspace">バックスペース</string>
|
||||
<string name="back_to_previous_keyboard">前のキーボードに戻る</string>
|
||||
<string name="custom_fields">カスタム フィールド</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">デバイスのロック解除認識に関連するすべての暗号化キーを削除しますか?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">デバイスのロック解除認識に関連するすべての暗号化キーを削除しますか?</string>
|
||||
<string name="device_credential_unlock_enable_summary">デバイス認証情報を使用してデータベースを開くことができるようにします</string>
|
||||
<string name="device_credential_unlock_enable_title">デバイス認証情報によるロック解除</string>
|
||||
<string name="device_credential">デバイス認証情報</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">パスワードを入力し、このボタンをタップします。</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">デバイスのロック解除プロンプトを初期化できません。</string>
|
||||
<string name="advanced_unlock_invalid_key">デバイスのロック解除キーを読み取ることができません。削除して、ロック解除認識手順を繰り返してください。</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">デバイスのロック解除データを使用してデータベースの資格情報を抽出する</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">デバイスのロック解除認識</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">デバイスのロック解除認識を使用する場合でも、保管庫のメイン資格情報を覚えておく必要があります。</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">デバイスのロック解除のリンク</string>
|
||||
<string name="credential_before_click_device_unlock_button">パスワードを入力し、このボタンをタップします。</string>
|
||||
<string name="device_unlock_prompt_not_initialized">デバイスのロック解除プロンプトを初期化できません。</string>
|
||||
<string name="device_unlock_invalid_key">デバイスのロック解除キーを読み取ることができません。削除して、ロック解除認識手順を繰り返してください。</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">デバイスのロック解除データを使用してデータベースの資格情報を抽出する</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">デバイスのロック解除認識</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">デバイスのロック解除認識を使用する場合でも、保管庫のメイン資格情報を覚えておく必要があります。</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">デバイスのロック解除のリンク</string>
|
||||
<string name="select_entry">エントリーを選択</string>
|
||||
<string name="education_advanced_unlock_summary">スキャンした生体情報またはデバイス認証情報にパスワードをリンクして、データベースのロックをすばやく解除します。</string>
|
||||
<string name="education_advanced_unlock_title">デバイスデータベースのロック解除</string>
|
||||
<string name="advanced_unlock_timeout">デバイスのロック解除タイムアウト</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">デバイスのロック解除使用後、コンテンツが削除されるまでの期間</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">デバイスのロック解除の有効期限</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">デバイスのロック解除を使用するために暗号化されたコンテンツを保存しないでください</string>
|
||||
<string name="temp_advanced_unlock_enable_title">一時的なデバイスロック解除</string>
|
||||
<string name="advanced_unlock_tap_delete">タップしてデバイスのロック解除キーを削除します</string>
|
||||
<string name="education_device_unlock_summary">スキャンした生体情報またはデバイス認証情報にパスワードをリンクして、データベースのロックをすばやく解除します。</string>
|
||||
<string name="education_device_unlock_title">デバイスデータベースのロック解除</string>
|
||||
<string name="device_unlock_timeout">デバイスのロック解除タイムアウト</string>
|
||||
<string name="temp_device_unlock_timeout_summary">デバイスのロック解除使用後、コンテンツが削除されるまでの期間</string>
|
||||
<string name="temp_device_unlock_timeout_title">デバイスのロック解除の有効期限</string>
|
||||
<string name="temp_device_unlock_enable_summary">デバイスのロック解除を使用するために暗号化されたコンテンツを保存しないでください</string>
|
||||
<string name="temp_device_unlock_enable_title">一時的なデバイスロック解除</string>
|
||||
<string name="device_unlock_tap_delete">タップしてデバイスのロック解除キーを削除します</string>
|
||||
<string name="content">コンテンツ</string>
|
||||
<string name="error_database_uri_null">データベースの URI が取得できません。</string>
|
||||
<string name="autofill_inline_suggestions_keyboard">自動入力候補が追加されました。</string>
|
||||
@@ -615,7 +613,7 @@
|
||||
<string name="character_count">文字数:%1$d</string>
|
||||
<string name="entropy_high">エントロピー:高</string>
|
||||
<string name="warning_database_already_opened">データベースがすでに開いているため、まず閉じてから新しく開き直してください</string>
|
||||
<string name="advanced_unlock_keystore_warning">この機能により、暗号化された認証情報がデバイスの安全なキーストアに保存されます。
|
||||
<string name="device_unlock_keystore_warning">この機能により、暗号化された認証情報がデバイスの安全なキーストアに保存されます。
|
||||
\n
|
||||
\nオペレーティング システムのネイティブ API 実装によっては、完全に機能しない場合があります。
|
||||
\n
|
||||
@@ -662,7 +660,7 @@
|
||||
<string name="error_response_already_provided">回答はすでに提供されています。</string>
|
||||
<string name="error_no_response_from_challenge">チャレンジからの応答を取得できません。</string>
|
||||
<string name="error_unable_merge_database_kdb">kdbデータベースファイルとのマージはできません。</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">生体認証、デバイス認証</string>
|
||||
<string name="menu_device_unlock_settings_summary">生体認証、デバイス認証</string>
|
||||
<string name="menu_database_settings_summary">メタデータ、ごみ箱、テンプレート、履歴</string>
|
||||
<string name="menu_security_settings_summary">暗号化、鍵導出関数</string>
|
||||
<string name="master_key_settings_summary">変更、更新</string>
|
||||
|
||||
@@ -27,4 +27,4 @@
|
||||
<string name="homepage">Ngarep</string>
|
||||
<string name="contribution">Urun Rembuk</string>
|
||||
<string name="contact">Nomer Hape</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
<string name="show_otp_token_title">OTP 토큰을 표시</string>
|
||||
<string name="list_groups_show_number_entries_summary">그룹에 속한 항목수를 표시</string>
|
||||
<string name="menu_external_icon">외부 아이콘</string>
|
||||
<string name="menu_advanced_unlock_settings">고급 잠금 해제</string>
|
||||
<string name="menu_device_unlock_settings">고급 잠금 해제</string>
|
||||
<string name="search_mode">검색 모드</string>
|
||||
<string name="rounds_explanation">추가적인 암호화 차수를 설정함으로써 무차별 대입 공격(brute force attack)에 대한 방어를 강화할 수 있습니다. 대신 읽기/저장시 느려질 수 있습니다.</string>
|
||||
<string name="do_not_kill_app">앱을 강제 종료하지 마세요.</string>
|
||||
@@ -365,7 +365,7 @@
|
||||
<string name="properties">속성</string>
|
||||
<string name="menu_appearance_settings_summary">테마, 색상, 속성</string>
|
||||
<string name="autofill">자동 입력</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">비밀번호 입력 후 이 버튼을 눌러주세요</string>
|
||||
<string name="credential_before_click_device_unlock_button">비밀번호 입력 후 이 버튼을 눌러주세요</string>
|
||||
<string name="unavailable">사용할 수 없습니다</string>
|
||||
<string name="database_history">기록</string>
|
||||
<string name="type">유형</string>
|
||||
@@ -387,7 +387,7 @@
|
||||
<string name="autofill_preference_title">자동 완성 설정</string>
|
||||
<string name="set_autofill_service_title">기본 자동완성 서비스 설정</string>
|
||||
<string name="lock_database_screen_off_title">화면 꺼짐 시 잠금</string>
|
||||
<string name="advanced_unlock_explanation_summary">기기 잠금 방식을 사용하여 데이터베이스를 더 쉽게 여세요</string>
|
||||
<string name="device_unlock_explanation_summary">기기 잠금 방식을 사용하여 데이터베이스를 더 쉽게 여세요</string>
|
||||
<string name="biometric_unlock_enable_title">생체 인식 잠금 해제</string>
|
||||
<string name="biometric_unlock_enable_summary">생체 인식을 사용하여 데이터베이스를 열수 있습니다</string>
|
||||
<string name="biometric_delete_all_key_title">암호화 키 삭제</string>
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
<string name="creating_database">Kuriama duomenų bazė…</string>
|
||||
<string name="copy_field">%1$s kopija</string>
|
||||
<string name="menu_form_filling_settings">Formų pildymas</string>
|
||||
<string name="menu_advanced_unlock_settings">Įrenginio atrakinimas</string>
|
||||
<string name="menu_device_unlock_settings">Įrenginio atrakinimas</string>
|
||||
<string name="menu_security_settings">Saugumo nustatymai</string>
|
||||
<string name="read_only_warning">Priklausomai nuo jūsų failų tvarkyklės, KeePassDX gali būti neleidžiama rašyti į jūsų saugyklą.</string>
|
||||
<string name="remember_hardware_key_title">Prisiminti aparatinės įrangos raktus</string>
|
||||
@@ -350,7 +350,7 @@
|
||||
<string name="recycle_bin_group_title">Šiukšliadėžės grupė</string>
|
||||
<string name="menu_master_key_settings">Pagrindinio rakto nustatymai</string>
|
||||
<string name="permission">Leidimas</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Įveskite slaptažodį ir spustelėkite šį mygtuką.</string>
|
||||
<string name="credential_before_click_device_unlock_button">Įveskite slaptažodį ir spustelėkite šį mygtuką.</string>
|
||||
<string name="warning_sure_add_file">Ar vis tiek įkelti failą?</string>
|
||||
<string name="file_name">Failo pavadinimas</string>
|
||||
<string name="hint_icon_name">Ikonos pavadinimas</string>
|
||||
@@ -370,7 +370,7 @@
|
||||
<string name="autofill_explanation_summary">Įgalinkite automatinį pildymą, kad galėtumėte greitai užpildyti formas kitose programose</string>
|
||||
<string name="lock_database_back_root_title">Paspauskite \"Atgal\", kad užrakintumėte</string>
|
||||
<string name="lock_database_show_button_summary">Naudotojo sąsajoje rodomas užrakto mygtukas</string>
|
||||
<string name="advanced_unlock">Įrenginio atrakinimas</string>
|
||||
<string name="device_unlock">Įrenginio atrakinimas</string>
|
||||
<string name="info">Informacija</string>
|
||||
<string name="error_challenge_already_requested">Iššūkis jau prašytas.</string>
|
||||
<string name="error_unable_merge_database_kdb">Neįmanoma apjungti su duomenų baze V1.</string>
|
||||
@@ -394,7 +394,7 @@
|
||||
<string name="merge_success">Apjungimas sėkmingai įvykdytas</string>
|
||||
<string name="configure">Konfigūruoti</string>
|
||||
<string name="biometric_security_update_required">Reikalingas biometrinių duomenų saugumo atnaujinimas.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Jei naudojate įrenginio atrakinimo atpažinimą, vis tiek turite prisiminti pagrindinį saugyklos raktą</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Jei naudojate įrenginio atrakinimo atpažinimą, vis tiek turite prisiminti pagrindinį saugyklos raktą</string>
|
||||
<string name="database_history">Istorija</string>
|
||||
<string name="properties">Nustatymai</string>
|
||||
<string name="menu_appearance_settings_summary">Temos, spalvos, atributai</string>
|
||||
@@ -431,7 +431,7 @@
|
||||
<string name="lock_database_screen_off_summary">Užrakinti saugyklą po kelių sekundžių nuo ekranas išjungimo</string>
|
||||
<string name="biometric_unlock_enable_summary">Leidžia nuskaityti biometrinius duomenis tam, kad atverti saugyklą</string>
|
||||
<string name="recycle_bin_title">Šiukšliadėžės naudojimas</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Įrenginio atrakinimo atpažinimas</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Įrenginio atrakinimo atpažinimas</string>
|
||||
<string name="lock_database_show_button_title">Rodyti užrakto mygtuką</string>
|
||||
<string name="content">Turinys</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
<string name="education_donation_title">പങ്കെടുക്കുക</string>
|
||||
<string name="uppercase">വലിയക്ഷരം</string>
|
||||
<string name="text_appearance">വാചകം</string>
|
||||
<string name="advanced_unlock">വിപുലമായ അൺലോക്ക്</string>
|
||||
<string name="device_unlock">വിപുലമായ അൺലോക്ക്</string>
|
||||
<string name="compression_none">ഒന്നുമില്ല</string>
|
||||
<string name="style_choose_summary">അപ്ലിക്കേഷനിൽ ഉപയോഗിക്കുന്ന തീം</string>
|
||||
<string name="disable">പ്രവർത്തനരഹിതമാക്കുക</string>
|
||||
@@ -263,7 +263,7 @@
|
||||
<string name="menu_paste">പേസ്റ്റ്</string>
|
||||
<string name="keyboard_key_sound_title">കേൾക്കാവുന്ന കീപ്രസ്സ്</string>
|
||||
<string name="download_initialization">സമാരംഭിക്കുന്നു. . .</string>
|
||||
<string name="menu_advanced_unlock_settings">വിപുലമായ അൺലോക്ക്</string>
|
||||
<string name="menu_device_unlock_settings">വിപുലമായ അൺലോക്ക്</string>
|
||||
<string name="allow_no_password_title">മാസ്റ്റർ കീകളൊന്നും അനുവദിക്കരുത്</string>
|
||||
<string name="device_keyboard_setting_title">ഉപകരണ കീബോർഡ് ക്രമീകരണങ്ങൾ</string>
|
||||
<string name="menu_empty_recycle_bin">റീസൈക്കിൾ ബിൻ ശൂന്യമാക്കുക</string>
|
||||
@@ -334,7 +334,7 @@
|
||||
<string name="database_data_compression_title">ഡാറ്റ കംപ്രഷൻ</string>
|
||||
<string name="unavailable_feature_hardware">അനുബന്ധ ഹാർഡ്വെയർ കണ്ടെത്താൻ കഴിഞ്ഞില്ല.</string>
|
||||
<string name="biometric_unlock_enable_title">ബയോമെട്രിക് അൺലോക്കിംഗ്</string>
|
||||
<string name="advanced_unlock_explanation_summary">ഒരു ഡാറ്റാബേസ് കൂടുതൽ എളുപ്പത്തിൽ തുറക്കാൻ വിപുലമായ അൺലോക്കിംഗ് ഉപയോഗിക്കുക</string>
|
||||
<string name="device_unlock_explanation_summary">ഒരു ഡാറ്റാബേസ് കൂടുതൽ എളുപ്പത്തിൽ തുറക്കാൻ വിപുലമായ അൺലോക്കിംഗ് ഉപയോഗിക്കുക</string>
|
||||
<string name="lock_database_show_button_summary">ഉപയോക്തൃ ഇന്റർഫേസിൽ ലോക്ക് ബട്ടൺ പ്രദർശിപ്പിക്കുക</string>
|
||||
<string name="clipboard_explanation_summary">നിങ്ങളുടെ ഉപകരണത്തിന്റെ ക്ലിപ്പ്ബോർഡ് ഉപയോഗിച്ച് എൻട്രി ഫീൽഡുകൾ പകർത്തുക</string>
|
||||
<string name="list_password_generator_options_title">പാസ്വേഡ് പ്രതീകങ്ങൾ</string>
|
||||
@@ -377,7 +377,7 @@
|
||||
<string name="registration_mode">രജിസ്ട്രേഷൻ മോഡ്</string>
|
||||
<string name="search_mode">തിരയൽ മോഡ്</string>
|
||||
<string name="error_registration_read_only">read-only ഡാറ്റാബേസിൽ പുതിയ ഒരു ഇനം സംരക്ഷിക്കാൻ കഴിയില്ല.</string>
|
||||
<string name="education_advanced_unlock_title">വിപുലമായ ഡാറ്റാബേസ് അൺലോക്ക്</string>
|
||||
<string name="education_device_unlock_title">വിപുലമായ ഡാറ്റാബേസ് അൺലോക്ക്</string>
|
||||
<string name="select_entry">എൻട്രി തിരഞ്ഞെടുക്കുക</string>
|
||||
<string name="custom_fields">ഇഷ്ടാനുസൃത ഫീൽഡുകൾ</string>
|
||||
<string name="keyboard_keys_category">കീകൾ</string>
|
||||
@@ -405,4 +405,4 @@
|
||||
<string name="card_verification_value">സിവിവി</string>
|
||||
<string name="number">നമ്പർ</string>
|
||||
<string name="debit_credit_card">ടെബിറ്റ്/ ക്രെഡിറ്റ് കാർഡ്</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
<string name="master_key">राणी चावी</string>
|
||||
<string name="add_group">गट जोडा</string>
|
||||
<string name="security">सुरक्षा</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -44,4 +44,4 @@
|
||||
<string name="content_description_password_checkbox">Password စစ်ဆေးရန်</string>
|
||||
<string name="content_description_hardware_key_checkbox">ဟက်ဝဲလ် ကီး စစ်ဆေးရန်</string>
|
||||
<string name="content_description_entry_foreground_color">ပစ္စည်း ရှေ့မျက်နှာစာ အရောင်</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
--><resources>
|
||||
<string name="feedback">Tilbakemelding</string>
|
||||
<string name="homepage">Hjemmeside</string>
|
||||
<string name="about_description">Android-implementasjon av KeePass-passordsbehandleren</string>
|
||||
<string name="about_description">Android-implementasjon av KeePass-passordsbehandleren.</string>
|
||||
<string name="accept">Godta</string>
|
||||
<string name="add_entry">Legg til oppføring</string>
|
||||
<string name="edit_entry">Rediger oppføring</string>
|
||||
@@ -90,7 +90,7 @@
|
||||
<string name="hint_length">Lengde</string>
|
||||
<string name="hint_pass">Passord</string>
|
||||
<string name="password">Passord</string>
|
||||
<string name="invalid_credentials">Kunne ikke lese legitimasjonen.</string>
|
||||
<string name="invalid_credentials">Kunne ikke lese autentiseringsopplysningene.</string>
|
||||
<string name="invalid_algorithm">Ugyldig algoritme.</string>
|
||||
<string name="invalid_db_sig">Fremmed databaseformat.</string>
|
||||
<string name="keyfile_is_empty">Nøkkelfilen er tom.</string>
|
||||
@@ -168,7 +168,7 @@
|
||||
<string name="warning_no_encryption_key">Ønsker du å fortsette uten en krypteringsnøkkel\?</string>
|
||||
<string name="version_label">Versjon %1$s</string>
|
||||
<string name="encrypted_value_stored">Kryptert passord lagret</string>
|
||||
<string name="unavailable">Denne databasen har ikke et passord enda.</string>
|
||||
<string name="unavailable">Utilgjengelig</string>
|
||||
<string name="database_history">Historikk</string>
|
||||
<string name="menu_appearance_settings">Utseende</string>
|
||||
<string name="general">Generelt</string>
|
||||
@@ -188,7 +188,7 @@
|
||||
<string name="lock">Lås</string>
|
||||
<string name="lock_database_screen_off_title">Skjermlås</string>
|
||||
<string name="lock_database_screen_off_summary">Lås databasen etter noen sekunder når skjermen er av</string>
|
||||
<string name="advanced_unlock">Lås opp enheten</string>
|
||||
<string name="device_unlock">Lås opp enheten</string>
|
||||
<string name="biometric_unlock_enable_title">Skanner etter fingeravtrykk</string>
|
||||
<string name="biometric_unlock_enable_summary">Lar deg bruke biometri for å åpne databasen</string>
|
||||
<string name="biometric_delete_all_key_title">Slett krypteringsnøkler</string>
|
||||
@@ -200,8 +200,8 @@
|
||||
<string name="path">Sti</string>
|
||||
<string name="assign_master_key">Tildel en hovednøkkel</string>
|
||||
<string name="create_keepass_file">Opprett nytt hvelv</string>
|
||||
<string name="recycle_bin_title">Papirkurv bruk</string>
|
||||
<string name="recycle_bin_summary">Flytter grupper og oppføringer til \"Papirkurv\"-gruppen før sletting</string>
|
||||
<string name="recycle_bin_title">Papirkurvbruk</string>
|
||||
<string name="recycle_bin_summary">Flytter grupper og oppføringer til «Papirkurv»-gruppen før sletting</string>
|
||||
<string name="monospace_font_fields_enable_title">Felt-skrift</string>
|
||||
<string name="monospace_font_fields_enable_summary">Endre skriften brukt i felter for bedre tegngjengivelse</string>
|
||||
<string name="allow_copy_password_title">Kopi av passord</string>
|
||||
@@ -218,8 +218,6 @@
|
||||
<string name="magic_keyboard_explanation_summary">Aktiver et egendefinert tastatur som fyller inn passordene og alle identitetsfelter</string>
|
||||
<string name="allow_no_password_title">Tillat ingen hovednøkkel</string>
|
||||
<string name="allow_no_password_summary">Tillater å trykke på \"Åpne\"-knappen hvis ingen legitimasjon er valgt</string>
|
||||
<string name="enable_read_only_title">Skrivebeskyttet</string>
|
||||
<string name="enable_read_only_summary">Åpne databasen skrivebeskyttet som standard</string>
|
||||
<string name="enable_education_screens_title">Lærerike tips</string>
|
||||
<string name="enable_education_screens_summary">Fremhev elementer for å finne ut hvordan appen fungerer</string>
|
||||
<string name="reset_education_screens_title">Tilbakestill lærerike tips</string>
|
||||
@@ -246,14 +244,9 @@
|
||||
\n
|
||||
\nHusk å lagre en kopi av din .kdbx-fil på et trygt sted etter hver endring.</string>
|
||||
<string name="education_read_only_title">Skrivebeskytt databasen din</string>
|
||||
<string name="education_read_only_summary">Endre åpningsmodus for økten.
|
||||
\n
|
||||
\nI skrivebeskyttet modus, kan du forhindre utilsiktede endringer i databasen.
|
||||
\n
|
||||
\nI skrivemodus, kan du legge til, slette eller endre alle elementene.</string>
|
||||
<string name="education_read_only_summary">Endre åpningsmodus for sesjonen. \n \n«Skrivebeskyttet» hindrer utilsiktede endringer i databasen. \n«Modifiserbar» lar deg endre, slette eller modifisere alle elementene etter eget ønske.</string>
|
||||
<string name="education_field_copy_title">Kopier et felt</string>
|
||||
<string name="education_field_copy_summary">Kopier et felt for å lime det inn der du ønsker.
|
||||
\nBruk den skjemautfyllingsmetoden du foretrekker.</string>
|
||||
<string name="education_field_copy_summary">Kopierte felt kan limes inn hvorsomhelst.\n\nBruk den utfyllingsmetoden du foretrekker.</string>
|
||||
<string name="education_lock_title">Lås databasen</string>
|
||||
<string name="education_lock_summary">Lås din database raskt. Du kan sette opp programmet slik at det låser den etter en stund, og når skjermen slår seg av.</string>
|
||||
<string name="education_sort_title">Sorter elementer</string>
|
||||
@@ -263,7 +256,7 @@
|
||||
<string name="html_text_ad_free">I motsetning til mange passordadministrasjons-apper er denne <strong>annonsefri</strong>, <strong>copylefted libre-programvare</strong> og samler ikke inn personlige data på serverne, uansett hvilken versjon du bruker.</string>
|
||||
<string name="html_text_buy_pro">Ved kjøp av pro-versjonen, vil du få tilgang til denne <strong>visuelle funksjonen</strong> og du vil bidra med støtte til <strong> realisering av fellesskaps prosjekter.</strong></string>
|
||||
<string name="html_text_feature_generosity">Denne <strong>visuelle stilen</strong> er tilgjengelig takket være din generøsitet.</string>
|
||||
<string name="html_text_donation">For å beholde vår frihet og alltid være aktive, stoler vi på dine <strong>bidrag.</strong></string>
|
||||
<string name="html_text_donation">Ved å <strong>bidra</strong> til prosjektet <i>(med penger, kode eller oversettelser)</i>, bidrar du til å holde prosjektet gående og trivende, og du vil også kunne få mulighet til å låse opp <strong>drakter</strong>.</string>
|
||||
<string name="html_text_dev_feature">Denne funksjonen er <strong>under utvikling</strong> og krever <strong>bidrag</strong> for å bli tilgjengelig snart.</string>
|
||||
<string name="html_text_dev_feature_buy_pro">Ved å kjøpe <strong>pro</strong>-versjonen,</string>
|
||||
<string name="html_text_dev_feature_contibute">Ved å <strong>bidra</strong>,</string>
|
||||
@@ -325,7 +318,7 @@
|
||||
<string name="content_description_update_from_list">Oppdater</string>
|
||||
<string name="content_description_keyboard_close_fields">Lukk felt</string>
|
||||
<string name="error_create_database_file">Kan ikke opprette database med dette passordet og nøkkelfilen.</string>
|
||||
<string name="menu_advanced_unlock_settings">Enhetsopplåsing</string>
|
||||
<string name="menu_device_unlock_settings">Enhetsopplåsing</string>
|
||||
<string name="enable">Aktiver</string>
|
||||
<string name="disable">Skru av</string>
|
||||
<string name="content_description_entry_icon">Oppføringsikon</string>
|
||||
@@ -334,7 +327,7 @@
|
||||
<string name="entry_history">Historikk</string>
|
||||
<string name="entry_setup_otp">Sett opp engangspassord</string>
|
||||
<string name="otp_type">OTP-type</string>
|
||||
<string name="otp_secret">Hemmelig</string>
|
||||
<string name="otp_secret">Hemmelighet</string>
|
||||
<string name="otp_period">Periode (sekunder)</string>
|
||||
<string name="otp_counter">Teller</string>
|
||||
<string name="otp_digits">Siffer</string>
|
||||
@@ -345,7 +338,7 @@
|
||||
<string name="error_otp_period">Periode må være mellom %1$d og %2$d sekunder.</string>
|
||||
<string name="database_opened">Database åpnet</string>
|
||||
<string name="menu_save_database">Lagre data</string>
|
||||
<string name="content_description_password_checkbox">Passord avkrysningsrute</string>
|
||||
<string name="content_description_password_checkbox">Passordsavkryssningsboks</string>
|
||||
<string name="content_description_keyfile_checkbox">Avkrysningsrute for nøkkelfil</string>
|
||||
<string name="biometric">Biometrisk</string>
|
||||
<string name="error_disallow_no_credentials">Minst én identitetsdetalj må angis.</string>
|
||||
@@ -355,7 +348,7 @@
|
||||
<string name="invalid_db_same_uuid">%1$s med samme UUID %2$s finnes allerede.</string>
|
||||
<string name="creating_database">Oppretter database…</string>
|
||||
<string name="menu_security_settings">Sikkerhetsinnstillinger</string>
|
||||
<string name="menu_master_key_settings">Hovednøkkel innstillinger</string>
|
||||
<string name="menu_master_key_settings">Innstillinger for hovednøkkel</string>
|
||||
<string name="contains_duplicate_uuid">Databasen inneholder dupliserte UUID-er.</string>
|
||||
<string name="database_data_compression_title">Datakomprimering</string>
|
||||
<string name="database_data_compression_summary">Datakomprimering reduserer databasens størrelse</string>
|
||||
@@ -411,8 +404,8 @@
|
||||
<string name="save_mode">Lagringsmodus</string>
|
||||
<string name="search_mode">Søkemodus</string>
|
||||
<string name="error_field_name_already_exists">Feltnavnet finnes allerede.</string>
|
||||
<string name="content_description_add_item">Legg til element</string>
|
||||
<string name="education_advanced_unlock_title">Opplåsing av enhetsdatabase</string>
|
||||
<string name="content_description_add_item">Legg til ny</string>
|
||||
<string name="education_device_unlock_title">Opplåsing av enhetsdatabase</string>
|
||||
<string name="unit_byte">B</string>
|
||||
<string name="show_uuid_summary">Viser UUID-en som er tilknyttet en oppføring eller en gruppe</string>
|
||||
<string name="show_uuid_title">Vis UUID</string>
|
||||
@@ -427,7 +420,7 @@
|
||||
<string name="back_to_previous_keyboard">Tilbake til forrige tastatur</string>
|
||||
<string name="custom_fields">Egendefinerte felter</string>
|
||||
<string name="content">Innhold</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Slette alle krypteringsnøkler relatert til enhetsopplåsing?</string>
|
||||
<string name="device_unlock_delete_all_key_warning">Slette alle krypteringsnøkler relatert til enhetsopplåsing?</string>
|
||||
<string name="keyboard_change">Bytt tastatur</string>
|
||||
<string name="keyboard_previous_lock_title">Lås databasen</string>
|
||||
<string name="keyboard_previous_lock_summary">Bytt automatisk tilbake til forrige tastatur etter å ha låst databasen</string>
|
||||
@@ -437,7 +430,7 @@
|
||||
<string name="autofill_block_restart">Start appen på nytt som inneholder skjemaet for å aktivere blokkeringen.</string>
|
||||
<string name="autofill_read_only_save">Datalagring er ikke tillatt for en database som er skrivebeskyttet.</string>
|
||||
<string name="autofill_inline_suggestions_keyboard">Forslag til autofyll er lagt til.</string>
|
||||
<string name="education_advanced_unlock_summary">Koble passordet ditt til den skannede biometriske eller enhetslegitimasjonen for å raskt låse opp databasen din.</string>
|
||||
<string name="education_device_unlock_summary">Koble passordet ditt til den skannede biometriske eller enhetslegitimasjonen for å raskt låse opp databasen din.</string>
|
||||
<string name="education_setup_OTP_title">Sett opp OTP</string>
|
||||
<string name="download_canceled">Avbrutt!</string>
|
||||
<string name="error_string_type">Denne teksten samsvarer ikke med det valgte elementet.</string>
|
||||
@@ -445,20 +438,20 @@
|
||||
<string name="content_description_repeat_toggle_password_visibility">Gjenta for å skifte passordsynlighet</string>
|
||||
<string name="icon_section_custom">Egendefinert</string>
|
||||
<string name="icon_section_standard">Forvalg</string>
|
||||
<string name="style_brightness_summary">Velg et lyst eller mørkt tema</string>
|
||||
<string name="style_brightness_summary">Velg en lys eller mørk drakt</string>
|
||||
<string name="style_brightness_title">Draktlysstyrke</string>
|
||||
<string name="backspace">Rettetast</string>
|
||||
<string name="keyboard_save_search_info_title">Lagre delt info</string>
|
||||
<string name="device_keyboard_setting_title">Innstillinger for enhetens tastatur</string>
|
||||
<string name="notification">Merknad</string>
|
||||
<string name="data">Data</string>
|
||||
<string name="advanced_unlock_tap_delete">Trykk for å slette enhetens opplåsingsnøkler</string>
|
||||
<string name="device_unlock_tap_delete">Trykk for å slette enhetens opplåsingsnøkler</string>
|
||||
<string name="clipboard_explanation_summary">Kopier inntastingsfelter ved bruk av utklippstavlen på din enhet</string>
|
||||
<string name="autofill_preference_title">Autofyllings-innstillinger</string>
|
||||
<string name="warning_sure_remove_data">Fjern denne dataen uansett\?</string>
|
||||
<string name="warning_permanently_delete_nodes">Slett valgte noder for godt\?</string>
|
||||
<string name="templates_group_uuid_title">Malgruppe</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Lenke til opplåsing av enheten</string>
|
||||
<string name="device_unlock_prompt_store_credential_title">Lenke til opplåsing av enheten</string>
|
||||
<string name="warning_empty_recycle_bin">Slett alle noder fra papirkurven for godt\?</string>
|
||||
<string name="export_app_properties_title">Eksporter appinnstillinger</string>
|
||||
<string name="import_app_properties_title">Importer appinnstillinger</string>
|
||||
@@ -520,31 +513,31 @@
|
||||
<string name="secure_note">Sikkehetsnotis</string>
|
||||
<string name="standard">Standard</string>
|
||||
<string name="bank_identifier_code">SWIFT/BIC</string>
|
||||
<string name="error_registration_read_only">Å lagre et nytt element tillates ikke i skrivebeskyttet database.</string>
|
||||
<string name="error_registration_read_only">Å lagre et nytt element tillates ikke i en skrivebeskyttet database.</string>
|
||||
<string name="error_database_uri_null">Database-URI kan ikke innhentes.</string>
|
||||
<string name="error_rebuild_list">Kunne ikke gjenoppbygge listen på riktig måte.</string>
|
||||
<string name="error_upload_file">En feil inntraff under opplasting av fildataen.</string>
|
||||
<string name="error_remove_file">En feil inntraff under fjerning av fildataen.</string>
|
||||
<string name="properties">Egenskaper</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Gjenkjenning av enhetslås</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Pakk ut database-identitetsdetalj med enhetens opplåsningsdata</string>
|
||||
<string name="advanced_unlock_invalid_key">Kan ikke lese enhetens opplåsningsnøkkel. Slett den og gjenta gjenkjenning av opplåsningsprosedyre.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Kan ikke igangsette forespørsel om opplåsing av enheten.</string>
|
||||
<string name="device_unlock_prompt_extract_credential_title">Gjenkjenning av enhetslås</string>
|
||||
<string name="device_unlock_prompt_extract_credential_message">Pakk ut database-identitetsdetalj med enhetens opplåsningsdata</string>
|
||||
<string name="device_unlock_invalid_key">Kan ikke lese enhetens opplåsningsnøkkel. Slett den og gjenta gjenkjenning av opplåsningsprosedyre.</string>
|
||||
<string name="device_unlock_prompt_not_initialized">Kan ikke igangsette forespørsel om opplåsing av enheten.</string>
|
||||
<string name="permission">Tilgang</string>
|
||||
<string name="biometric_security_update_required">Biometrisk sikkerhetsoppdatering kreves.</string>
|
||||
<string name="warning_exact_alarm">Du har ikke tillat programmet å bruke en eksakt alarm. Som resultat vil funksjoner som krever et tidsur ikke gjøres til eksakt tid.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Du må fortsatt huske hovedlegitimasjonen for hvelvet selv om du bruker enhetens opplåsingsgjenkjenning.</string>
|
||||
<string name="advanced_unlock_not_recognized">Kunne ikke gjenkjenne enhetens oppåsningsmetode</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Skriv inn passordet, og klikk deretter på denne knappen.</string>
|
||||
<string name="device_unlock_prompt_store_credential_message">Du må fortsatt huske hovedlegitimasjonen for hvelvet selv om du bruker enhetens opplåsingsgjenkjenning.</string>
|
||||
<string name="device_unlock_not_recognized">Kunne ikke gjenkjenne enhetens oppåsningsmetode</string>
|
||||
<string name="credential_before_click_device_unlock_button">Skriv inn passordet, og klikk deretter på denne knappen.</string>
|
||||
<string name="device_credential">Enhets-identitetsdetalj</string>
|
||||
<string name="autofill_select_entry">Velg oppføring …</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Midlertidig enhets opplåsing</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Utløpsdato for opplåsing av enhet</string>
|
||||
<string name="temp_device_unlock_enable_title">Midlertidig enhets opplåsing</string>
|
||||
<string name="temp_device_unlock_timeout_title">Utløpsdato for opplåsing av enhet</string>
|
||||
<string name="device_credential_unlock_enable_summary">Lar deg bruke din enhets-identitetsdetalj for å åpne databasen</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Varigheten av enhetens opplåsingsbruk før innholdet blir slettet</string>
|
||||
<string name="advanced_unlock_explanation_summary">Bruk enhetsopplåsing for å åpne en database enklere</string>
|
||||
<string name="temp_device_unlock_timeout_summary">Varigheten av enhetens opplåsingsbruk før innholdet blir slettet</string>
|
||||
<string name="device_unlock_explanation_summary">Bruk enhetsopplåsing for å åpne en database enklere</string>
|
||||
<string name="device_credential_unlock_enable_title">Opplåsing av enhetslegitimasjon</string>
|
||||
<string name="advanced_unlock_timeout">Tidsavbrudd for opplåsing av enheten</string>
|
||||
<string name="device_unlock_timeout">Tidsavbrudd for opplåsing av enheten</string>
|
||||
<string name="templates_group_enable_title">Mal-bruk</string>
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Fjerner vedlegg som er å finne i databasen, men som ikke er lenket til en oppføring</string>
|
||||
<string name="keyboard_save_search_info_summary">Prøv å lagre delt informasjon når du foretar en manuell oppføring for enklere fremtidig bruk</string>
|
||||
@@ -573,7 +566,7 @@
|
||||
<string name="subdomain_search_title">Underdomenesøk</string>
|
||||
<string name="error_otp_type">Eksisterende OTP-type gjenkjennes ikke av dette skjemaet og valideringen kan derfor ikke lenger generere tokenet.</string>
|
||||
<string name="error_start_database_action">En feil inntraff under utføring av en databasehandling.</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Ikke lagre noe kryptert innhold for å bruke enhets opplåsing</string>
|
||||
<string name="temp_device_unlock_enable_summary">Ikke lagre noe kryptert innhold for å bruke enhets opplåsing</string>
|
||||
<string name="subdomain_search_summary">Søk i vev-domener med underdomene-begrensninger</string>
|
||||
<string name="max_history_items_summary">Begrens antall historikkelementer per oppføring</string>
|
||||
<string name="show_otp_token_summary">Viser OTP-symboler i listen over oppføringer</string>
|
||||
@@ -604,7 +597,7 @@
|
||||
<string name="unlock_and_link_biometric">Enhetsopplåsningskobling</string>
|
||||
<string name="unlock">Lås opp</string>
|
||||
<string name="keyboard_previous_search_summary">Bytt automatisk tilbake til forrige tastatur på søkeskjermen</string>
|
||||
<string name="advanced_unlock_keystore_warning">Denne funksjonen vil lagre krypterte legitimasjonsdata i den sikre KeyStore på enheten din.
|
||||
<string name="device_unlock_keystore_warning">Denne funksjonen vil lagre krypterte legitimasjonsdata i den sikre KeyStore på enheten din.
|
||||
\n
|
||||
\nAvhengig av den opprinnelige API-implementeringen av operativsystemet, kan det hende at den ikke fungerer fullt ut.
|
||||
\n
|
||||
@@ -617,7 +610,7 @@
|
||||
<string name="expired">Utløpt</string>
|
||||
<string name="hardware_key">Maskinvarenøkkel</string>
|
||||
<string name="error_no_hardware_key">Velg en maskinvarenøkkel.</string>
|
||||
<string name="error_unable_merge_database_kdb">Kan ikke slå sammen fra en V1 database.</string>
|
||||
<string name="error_unable_merge_database_kdb">Kan ikke slå sammen med en kdb-databasefil.</string>
|
||||
<string name="error_location_unknown">Databaseplasseringen er ukjent, databasehandlingen kan ikke utføres.</string>
|
||||
<string name="remember_hardware_key_summary">Holder styr på maskinvarenøklene som brukes</string>
|
||||
<string name="exclude_ambiguous_chars">Ekskluder tvetydige tegn</string>
|
||||
@@ -656,7 +649,7 @@
|
||||
<string name="passphrase">Passfrase</string>
|
||||
<string name="menu_app_settings_summary">Søk, lås, historikk, egenskaper</string>
|
||||
<string name="menu_form_filling_settings_summary">Tastatur, autofyll, utklippstavle</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometri, enhetslegitimasjon</string>
|
||||
<string name="menu_device_unlock_settings_summary">Biometri, enhetslegitimasjon</string>
|
||||
<string name="menu_database_settings_summary">Metadata, papirkurv, maler, historikk</string>
|
||||
<string name="menu_security_settings_summary">Kryptering, nøkkelavledningsfunksjon</string>
|
||||
<string name="master_key_settings_summary">Endring, fornyelse</string>
|
||||
@@ -670,7 +663,7 @@
|
||||
<string name="ask">Spør</string>
|
||||
<string name="merge_success">Sammenslåingen er fullført</string>
|
||||
<string name="configure">Konfigurer</string>
|
||||
<string name="menu_appearance_settings_summary">Temaer, farger, attributter</string>
|
||||
<string name="menu_appearance_settings_summary">Drakter, farger, attributter</string>
|
||||
<string name="enable_screenshot_mode_title">Skjermbilde-modus</string>
|
||||
<string name="consider_chars_filter">Vurder karakterer</string>
|
||||
<string name="entropy_calculate">Entropi: Beregn…</string>
|
||||
@@ -685,7 +678,7 @@
|
||||
<string name="entropy_high">Entropi: Høy</string>
|
||||
<string name="lower_case">små bokstaver</string>
|
||||
<string name="upper_case">STORE BOKSTAVER</string>
|
||||
<string name="style_name_divine">Divine</string>
|
||||
<string name="style_name_divine">Gudommelig</string>
|
||||
<string name="style_name_classic">Classic</string>
|
||||
<string name="style_name_simple">Enkel</string>
|
||||
<string name="style_name_moon">Moon</string>
|
||||
@@ -695,4 +688,12 @@
|
||||
<string name="style_name_follow_system">Følg systemet</string>
|
||||
<string name="style_name_light">Lyst</string>
|
||||
<string name="style_name_dark">Mørkt</string>
|
||||
<string name="error_otp_secret_length">Den hemmelige nøkkelen må være minst %1$d tegn.</string>
|
||||
<string name="generate_keyfile">Generer nøkkelfil</string>
|
||||
<string name="nodes">Noder</string>
|
||||
<string name="recursive_number_entries_title">Rekursivt antall oppføringer</string>
|
||||
<string name="recursive_number_entries_summary">Regner ut antallet oppføringer i en gruppe rekursivt</string>
|
||||
<string name="warning_large_keyfile">Det anbefales ikke å legge til en stor nøkkelfil, siden dette kan hindre databasen i å åpnes.</string>
|
||||
<string name="hide_templates_title">Skjul maler</string>
|
||||
<string name="hide_templates_summary">Maler vises ikke</string>
|
||||
</resources>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user