mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f49485e161 | ||
|
|
f3f268742f | ||
|
|
8b867f78fe | ||
|
|
d6a43fd8e5 | ||
|
|
9887b8142d | ||
|
|
4d92d6dc2b | ||
|
|
d8cd84ed9e | ||
|
|
6bc740e881 | ||
|
|
db348cc368 | ||
|
|
6ebf59d7ff | ||
|
|
d35e31d128 | ||
|
|
b9b6d3d2cb | ||
|
|
728b111ac9 | ||
|
|
9e5ce589ae | ||
|
|
f486150a0f | ||
|
|
075ee815f0 | ||
|
|
d321283b13 | ||
|
|
8be382fa7e | ||
|
|
13002f96f1 | ||
|
|
008ded4a5c | ||
|
|
d476574d05 | ||
|
|
371b3813d4 | ||
|
|
fe08d034bb | ||
|
|
18f4714410 | ||
|
|
1b6c416893 | ||
|
|
6153a28b4b | ||
|
|
9574cf16fb | ||
|
|
d309a67416 | ||
|
|
fb865af088 | ||
|
|
c1e7039357 | ||
|
|
0fd3b37641 | ||
|
|
cea91f7b2f | ||
|
|
3959896832 | ||
|
|
d55dccdeb1 | ||
|
|
c46c286b51 | ||
|
|
aa15d261f3 | ||
|
|
00a32463c7 | ||
|
|
dd60ff8b74 | ||
|
|
4588611cbf | ||
|
|
1460c1364a | ||
|
|
37f38fe988 | ||
|
|
cf025b9135 | ||
|
|
283ff7a280 | ||
|
|
e668f016b4 | ||
|
|
256c2c955a | ||
|
|
d560c3e8de | ||
|
|
4f8e8e6669 | ||
|
|
7cdc2e0915 | ||
|
|
74b236b317 | ||
|
|
89ffeaf03b | ||
|
|
8b779a0fca | ||
|
|
4b71dc8445 |
15
CHANGELOG
15
CHANGELOG
@@ -1,3 +1,18 @@
|
|||||||
|
KeePassDX(2.10.4)
|
||||||
|
* Hot fix to increase the opening speed of database #1028
|
||||||
|
|
||||||
|
KeePassDX(2.10.3)
|
||||||
|
* Improve Magikeyboard options description #1022 #1023 (Thx @djibux)
|
||||||
|
* Fix database opened without notification (database is now closed when screen is killed in background #1025)
|
||||||
|
* Fix biometric prompt #1018
|
||||||
|
|
||||||
|
KeePassDX(2.10.2)
|
||||||
|
* Fix search fields references #987
|
||||||
|
* Fix Auto-Types with same key #997
|
||||||
|
|
||||||
|
KeePassDX(2.10.1)
|
||||||
|
* Fix parcelable with custom data #986
|
||||||
|
|
||||||
KeePassDX(2.10.0)
|
KeePassDX(2.10.0)
|
||||||
* Manage new database format 4.1 #956
|
* Manage new database format 4.1 #956
|
||||||
* Fix show button consistency #980
|
* Fix show button consistency #980
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ android {
|
|||||||
applicationId "com.kunzisoft.keepass"
|
applicationId "com.kunzisoft.keepass"
|
||||||
minSdkVersion 15
|
minSdkVersion 15
|
||||||
targetSdkVersion 30
|
targetSdkVersion 30
|
||||||
versionCode = 76
|
versionCode = 82
|
||||||
versionName = "2.10.0"
|
versionName = "2.10.4"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
|
||||||
testApplicationId = "com.kunzisoft.keepass.tests"
|
testApplicationId = "com.kunzisoft.keepass.tests"
|
||||||
|
|||||||
@@ -462,6 +462,11 @@ open class PasswordActivity : SpecialModeActivity(), AdvancedUnlockFragment.Buil
|
|||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
mProgressDatabaseTaskProvider?.unregisterProgressTask()
|
mProgressDatabaseTaskProvider?.unregisterProgressTask()
|
||||||
|
|
||||||
|
// To prevent biometric prompt to appearing outside of the app
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
advancedUnlockFragment?.disconnect(hideViews = false, closePrompt = true)
|
||||||
|
}
|
||||||
|
|
||||||
// Reinit locking activity UI variable
|
// Reinit locking activity UI variable
|
||||||
LockingActivity.LOCKING_ACTIVITY_UI_VISIBLE_DURING_LOCK = null
|
LockingActivity.LOCKING_ACTIVITY_UI_VISIBLE_DURING_LOCK = null
|
||||||
mAllowAutoOpenBiometricPrompt = true
|
mAllowAutoOpenBiometricPrompt = true
|
||||||
@@ -708,7 +713,7 @@ open class PasswordActivity : SpecialModeActivity(), AdvancedUnlockFragment.Buil
|
|||||||
when (resultCode) {
|
when (resultCode) {
|
||||||
LockingActivity.RESULT_EXIT_LOCK -> {
|
LockingActivity.RESULT_EXIT_LOCK -> {
|
||||||
clearCredentialsViews()
|
clearCredentialsViews()
|
||||||
Database.getInstance().clearAndClose(UriUtil.getBinaryDir(this))
|
Database.getInstance().clearAndClose(this)
|
||||||
}
|
}
|
||||||
Activity.RESULT_CANCELED -> {
|
Activity.RESULT_CANCELED -> {
|
||||||
clearCredentialsViews()
|
clearCredentialsViews()
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ package com.kunzisoft.keepass.app
|
|||||||
import androidx.multidex.MultiDexApplication
|
import androidx.multidex.MultiDexApplication
|
||||||
import com.kunzisoft.keepass.activities.stylish.Stylish
|
import com.kunzisoft.keepass.activities.stylish.Stylish
|
||||||
import com.kunzisoft.keepass.database.element.Database
|
import com.kunzisoft.keepass.database.element.Database
|
||||||
import com.kunzisoft.keepass.utils.UriUtil
|
|
||||||
|
|
||||||
class App : MultiDexApplication() {
|
class App : MultiDexApplication() {
|
||||||
|
|
||||||
@@ -34,7 +33,7 @@ class App : MultiDexApplication() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onTerminate() {
|
override fun onTerminate() {
|
||||||
Database.getInstance().clearAndClose(UriUtil.getBinaryDir(this))
|
Database.getInstance().clearAndClose(this)
|
||||||
super.onTerminate()
|
super.onTerminate()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
|
|||||||
import com.kunzisoft.keepass.database.element.Database
|
import com.kunzisoft.keepass.database.element.Database
|
||||||
import com.kunzisoft.keepass.model.MainCredential
|
import com.kunzisoft.keepass.model.MainCredential
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
import com.kunzisoft.keepass.utils.UriUtil
|
|
||||||
|
|
||||||
class CreateDatabaseRunnable(context: Context,
|
class CreateDatabaseRunnable(context: Context,
|
||||||
private val mDatabase: Database,
|
private val mDatabase: Database,
|
||||||
@@ -44,7 +43,7 @@ class CreateDatabaseRunnable(context: Context,
|
|||||||
createData(mDatabaseUri, databaseName, rootName)
|
createData(mDatabaseUri, databaseName, rootName)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
mDatabase.clearAndClose(UriUtil.getBinaryDir(context))
|
mDatabase.clearAndClose(context)
|
||||||
setError(e)
|
setError(e)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ import com.kunzisoft.keepass.app.database.CipherDatabaseAction
|
|||||||
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
|
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
|
||||||
import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
|
import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
|
||||||
import com.kunzisoft.keepass.database.element.Database
|
import com.kunzisoft.keepass.database.element.Database
|
||||||
import com.kunzisoft.keepass.database.element.binary.LoadedKey
|
|
||||||
import com.kunzisoft.keepass.database.element.binary.BinaryData
|
import com.kunzisoft.keepass.database.element.binary.BinaryData
|
||||||
|
import com.kunzisoft.keepass.database.element.binary.LoadedKey
|
||||||
import com.kunzisoft.keepass.database.exception.LoadDatabaseException
|
import com.kunzisoft.keepass.database.exception.LoadDatabaseException
|
||||||
import com.kunzisoft.keepass.model.MainCredential
|
import com.kunzisoft.keepass.model.MainCredential
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
@@ -47,7 +47,7 @@ class LoadDatabaseRunnable(private val context: Context,
|
|||||||
|
|
||||||
override fun onStartRun() {
|
override fun onStartRun() {
|
||||||
// Clear before we load
|
// Clear before we load
|
||||||
mDatabase.clearAndClose(UriUtil.getBinaryDir(context))
|
mDatabase.clearAndClose(context)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActionRun() {
|
override fun onActionRun() {
|
||||||
@@ -85,7 +85,7 @@ class LoadDatabaseRunnable(private val context: Context,
|
|||||||
// Register the current time to init the lock timer
|
// Register the current time to init the lock timer
|
||||||
PreferencesUtil.saveCurrentTime(context)
|
PreferencesUtil.saveCurrentTime(context)
|
||||||
} else {
|
} else {
|
||||||
mDatabase.clearAndClose(UriUtil.getBinaryDir(context))
|
mDatabase.clearAndClose(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import android.content.*
|
|||||||
import android.content.Context.BIND_ABOVE_CLIENT
|
import android.content.Context.BIND_ABOVE_CLIENT
|
||||||
import android.content.Context.BIND_NOT_FOREGROUND
|
import android.content.Context.BIND_NOT_FOREGROUND
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
@@ -255,7 +256,6 @@ class ProgressDatabaseTaskProvider(private val activity: FragmentActivity) {
|
|||||||
|
|
||||||
private fun start(bundle: Bundle? = null, actionTask: String) {
|
private fun start(bundle: Bundle? = null, actionTask: String) {
|
||||||
try {
|
try {
|
||||||
activity.stopService(intentDatabaseTask)
|
|
||||||
if (bundle != null)
|
if (bundle != null)
|
||||||
intentDatabaseTask.putExtras(bundle)
|
intentDatabaseTask.putExtras(bundle)
|
||||||
intentDatabaseTask.action = actionTask
|
intentDatabaseTask.action = actionTask
|
||||||
@@ -286,6 +286,11 @@ class ProgressDatabaseTaskProvider(private val activity: FragmentActivity) {
|
|||||||
readOnly: Boolean,
|
readOnly: Boolean,
|
||||||
cipherEntity: CipherDatabaseEntity?,
|
cipherEntity: CipherDatabaseEntity?,
|
||||||
fixDuplicateUuid: Boolean) {
|
fixDuplicateUuid: Boolean) {
|
||||||
|
try {
|
||||||
|
activity.stopService(intentDatabaseTask)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG, "Unable to stop the service", e)
|
||||||
|
}
|
||||||
start(Bundle().apply {
|
start(Bundle().apply {
|
||||||
putParcelable(DatabaseTaskNotificationService.DATABASE_URI_KEY, databaseUri)
|
putParcelable(DatabaseTaskNotificationService.DATABASE_URI_KEY, databaseUri)
|
||||||
putParcelable(DatabaseTaskNotificationService.MAIN_CREDENTIAL_KEY, mainCredential)
|
putParcelable(DatabaseTaskNotificationService.MAIN_CREDENTIAL_KEY, mainCredential)
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ package com.kunzisoft.keepass.database.action
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.kunzisoft.keepass.database.element.Database
|
import com.kunzisoft.keepass.database.element.Database
|
||||||
import com.kunzisoft.keepass.database.element.binary.LoadedKey
|
|
||||||
import com.kunzisoft.keepass.database.element.binary.BinaryData
|
import com.kunzisoft.keepass.database.element.binary.BinaryData
|
||||||
|
import com.kunzisoft.keepass.database.element.binary.LoadedKey
|
||||||
import com.kunzisoft.keepass.database.exception.LoadDatabaseException
|
import com.kunzisoft.keepass.database.exception.LoadDatabaseException
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
import com.kunzisoft.keepass.tasks.ActionRunnable
|
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||||
@@ -62,7 +62,7 @@ class ReloadDatabaseRunnable(private val context: Context,
|
|||||||
PreferencesUtil.saveCurrentTime(context)
|
PreferencesUtil.saveCurrentTime(context)
|
||||||
} else {
|
} else {
|
||||||
tempCipherKey = null
|
tempCipherKey = null
|
||||||
mDatabase.clearAndClose(UriUtil.getBinaryDir(context))
|
mDatabase.clearAndClose(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ class EntryCursorKDBX : EntryCursorUUID<EntryKDBX>() {
|
|||||||
entry.expires
|
entry.expires
|
||||||
))
|
))
|
||||||
|
|
||||||
for (element in entry.customFields.entries) {
|
entry.doForEachDecodedCustomField { key, value ->
|
||||||
extraFieldCursor.addExtraField(entryId, element.key, element.value)
|
extraFieldCursor.addExtraField(entryId, key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
entryId++
|
entryId++
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class ExtraFieldCursor : MatrixCursor(arrayOf(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun populateExtraFieldInEntry(pwEntry: EntryKDBX) {
|
fun populateExtraFieldInEntry(pwEntry: EntryKDBX) {
|
||||||
pwEntry.putExtraField(getString(getColumnIndex(COLUMN_LABEL)),
|
pwEntry.putField(getString(getColumnIndex(COLUMN_LABEL)),
|
||||||
ProtectedString(getInt(getColumnIndex(COLUMN_PROTECTION)) > 0,
|
ProtectedString(getInt(getColumnIndex(COLUMN_PROTECTION)) > 0,
|
||||||
getString(getColumnIndex(COLUMN_VALUE))))
|
getString(getColumnIndex(COLUMN_VALUE))))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class CustomData : Parcelable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor(parcel: Parcel) {
|
constructor(parcel: Parcel) {
|
||||||
ParcelableUtil.readStringParcelableMap(parcel, CustomData::class.java)
|
ParcelableUtil.readStringParcelableMap(parcel, CustomDataItem::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun get(key: String): CustomDataItem? {
|
fun get(key: String): CustomDataItem? {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
package com.kunzisoft.keepass.database.element
|
package com.kunzisoft.keepass.database.element
|
||||||
|
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
@@ -668,8 +669,8 @@ class Database {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun clearAndClose(filesDirectory: File? = null) {
|
fun clearAndClose(context: Context? = null) {
|
||||||
clear(filesDirectory)
|
clear(context?.let { UriUtil.getBinaryDir(context) })
|
||||||
this.mDatabaseKDB = null
|
this.mDatabaseKDB = null
|
||||||
this.mDatabaseKDBX = null
|
this.mDatabaseKDBX = null
|
||||||
this.fileUri = null
|
this.fileUri = null
|
||||||
|
|||||||
@@ -283,8 +283,8 @@ class Entry : Node, EntryVersionedInterface<Group> {
|
|||||||
fun getExtraFields(): List<Field> {
|
fun getExtraFields(): List<Field> {
|
||||||
val extraFields = ArrayList<Field>()
|
val extraFields = ArrayList<Field>()
|
||||||
entryKDBX?.let {
|
entryKDBX?.let {
|
||||||
for (field in it.customFields) {
|
it.doForEachDecodedCustomField { key, value ->
|
||||||
extraFields.add(Field(field.key, field.value))
|
extraFields.add(Field(key, value))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return extraFields
|
return extraFields
|
||||||
@@ -294,7 +294,7 @@ class Entry : Node, EntryVersionedInterface<Group> {
|
|||||||
* Update or add an extra field to the list (standard or custom)
|
* Update or add an extra field to the list (standard or custom)
|
||||||
*/
|
*/
|
||||||
fun putExtraField(field: Field) {
|
fun putExtraField(field: Field) {
|
||||||
entryKDBX?.putExtraField(field.name, field.protectedValue)
|
entryKDBX?.putField(field.name, field.protectedValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addExtraFields(fields: List<Field>) {
|
private fun addExtraFields(fields: List<Field>) {
|
||||||
@@ -310,7 +310,7 @@ class Entry : Node, EntryVersionedInterface<Group> {
|
|||||||
fun getOtpElement(): OtpElement? {
|
fun getOtpElement(): OtpElement? {
|
||||||
entryKDBX?.let {
|
entryKDBX?.let {
|
||||||
return OtpEntryFields.parseFields { key ->
|
return OtpEntryFields.parseFields { key ->
|
||||||
it.customFields[key]?.toString()
|
it.getField(key)?.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
|
|||||||
@@ -332,9 +332,40 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
|
|||||||
return this.iconsManager.getIcon(iconUuid)
|
return this.iconsManager.getIcon(iconUuid)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* To perform a search in entry custom data
|
* Search methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
fun getEntryByTitle(title: String, recursionLevel: Int): EntryKDBX? {
|
||||||
|
return this.entryIndexes.values.find { entry ->
|
||||||
|
entry.decodeTitleKey(recursionLevel).equals(title, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getEntryByUsername(username: String, recursionLevel: Int): EntryKDBX? {
|
||||||
|
return this.entryIndexes.values.find { entry ->
|
||||||
|
entry.decodeUsernameKey(recursionLevel).equals(username, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getEntryByURL(url: String, recursionLevel: Int): EntryKDBX? {
|
||||||
|
return this.entryIndexes.values.find { entry ->
|
||||||
|
entry.decodeUrlKey(recursionLevel).equals(url, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getEntryByPassword(password: String, recursionLevel: Int): EntryKDBX? {
|
||||||
|
return this.entryIndexes.values.find { entry ->
|
||||||
|
entry.decodePasswordKey(recursionLevel).equals(password, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getEntryByNotes(notes: String, recursionLevel: Int): EntryKDBX? {
|
||||||
|
return this.entryIndexes.values.find { entry ->
|
||||||
|
entry.decodeNotesKey(recursionLevel).equals(notes, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun getEntryByCustomData(customDataValue: String): EntryKDBX? {
|
fun getEntryByCustomData(customDataValue: String): EntryKDBX? {
|
||||||
return entryIndexes.values.find { entry ->
|
return entryIndexes.values.find { entry ->
|
||||||
entry.customData.containsItemWithValue(customDataValue)
|
entry.customData.containsItemWithValue(customDataValue)
|
||||||
|
|||||||
@@ -271,26 +271,6 @@ abstract class DatabaseVersioned<
|
|||||||
return this.entryIndexes[id]
|
return this.entryIndexes[id]
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEntryByTitle(title: String): Entry? {
|
|
||||||
return this.entryIndexes.values.find { entry -> entry.title.equals(title, true) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getEntryByUsername(username: String): Entry? {
|
|
||||||
return this.entryIndexes.values.find { entry -> entry.username.equals(username, true) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getEntryByURL(url: String): Entry? {
|
|
||||||
return this.entryIndexes.values.find { entry -> entry.url.equals(url, true) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getEntryByPassword(password: String): Entry? {
|
|
||||||
return this.entryIndexes.values.find { entry -> entry.password.equals(password, true) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getEntryByNotes(notes: String): Entry? {
|
|
||||||
return this.entryIndexes.values.find { entry -> entry.notes.equals(notes, true) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun addEntryIndex(entry: Entry) {
|
fun addEntryIndex(entry: Entry) {
|
||||||
val entryId = entry.nodeId
|
val entryId = entry.nodeId
|
||||||
if (entryIndexes.containsKey(entryId)) {
|
if (entryIndexes.containsKey(entryId)) {
|
||||||
|
|||||||
@@ -21,8 +21,6 @@ package com.kunzisoft.keepass.database.element.entry
|
|||||||
|
|
||||||
import android.os.Parcel
|
import android.os.Parcel
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
|
|
||||||
import com.kunzisoft.keepass.utils.ParcelableUtil
|
|
||||||
import com.kunzisoft.keepass.utils.UnsignedInt
|
import com.kunzisoft.keepass.utils.UnsignedInt
|
||||||
|
|
||||||
class AutoType : Parcelable {
|
class AutoType : Parcelable {
|
||||||
@@ -30,7 +28,7 @@ class AutoType : Parcelable {
|
|||||||
var enabled = true
|
var enabled = true
|
||||||
var obfuscationOptions = OBF_OPT_NONE
|
var obfuscationOptions = OBF_OPT_NONE
|
||||||
var defaultSequence = ""
|
var defaultSequence = ""
|
||||||
private var windowSeqPairs = LinkedHashMap<String, String>()
|
private var windowSeqPairs = ArrayList<AutoTypeItem>()
|
||||||
|
|
||||||
constructor()
|
constructor()
|
||||||
|
|
||||||
@@ -38,16 +36,15 @@ class AutoType : Parcelable {
|
|||||||
this.enabled = autoType.enabled
|
this.enabled = autoType.enabled
|
||||||
this.obfuscationOptions = autoType.obfuscationOptions
|
this.obfuscationOptions = autoType.obfuscationOptions
|
||||||
this.defaultSequence = autoType.defaultSequence
|
this.defaultSequence = autoType.defaultSequence
|
||||||
for ((key, value) in autoType.windowSeqPairs) {
|
this.windowSeqPairs.clear()
|
||||||
this.windowSeqPairs[key] = value
|
this.windowSeqPairs.addAll(autoType.windowSeqPairs)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(parcel: Parcel) {
|
constructor(parcel: Parcel) {
|
||||||
this.enabled = parcel.readByte().toInt() != 0
|
this.enabled = parcel.readByte().toInt() != 0
|
||||||
this.obfuscationOptions = UnsignedInt(parcel.readInt())
|
this.obfuscationOptions = UnsignedInt(parcel.readInt())
|
||||||
this.defaultSequence = parcel.readString() ?: defaultSequence
|
this.defaultSequence = parcel.readString() ?: defaultSequence
|
||||||
this.windowSeqPairs = ParcelableUtil.readStringParcelableMap(parcel)
|
parcel.readTypedList(this.windowSeqPairs, AutoTypeItem.CREATOR)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun describeContents(): Int {
|
override fun describeContents(): Int {
|
||||||
@@ -58,15 +55,43 @@ class AutoType : Parcelable {
|
|||||||
dest.writeByte((if (enabled) 1 else 0).toByte())
|
dest.writeByte((if (enabled) 1 else 0).toByte())
|
||||||
dest.writeInt(obfuscationOptions.toKotlinInt())
|
dest.writeInt(obfuscationOptions.toKotlinInt())
|
||||||
dest.writeString(defaultSequence)
|
dest.writeString(defaultSequence)
|
||||||
ParcelableUtil.writeStringParcelableMap(dest, windowSeqPairs)
|
dest.writeTypedList(windowSeqPairs)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun put(key: String, value: String) {
|
fun add(key: String, value: String) {
|
||||||
windowSeqPairs[key] = value
|
windowSeqPairs.add(AutoTypeItem(key, value))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun entrySet(): Set<MutableMap.MutableEntry<String, String>> {
|
fun doForEachAutoTypeItem(action: (key: String, value: String) -> Unit) {
|
||||||
return windowSeqPairs.entries
|
windowSeqPairs.forEach {
|
||||||
|
action.invoke(it.key, it.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private data class AutoTypeItem(var key: String, var value: String): Parcelable {
|
||||||
|
constructor(parcel: Parcel) : this(
|
||||||
|
parcel.readString() ?: "",
|
||||||
|
parcel.readString() ?: "") {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun writeToParcel(parcel: Parcel, flags: Int) {
|
||||||
|
parcel.writeString(key)
|
||||||
|
parcel.writeString(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun describeContents(): Int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object CREATOR : Parcelable.Creator<AutoTypeItem> {
|
||||||
|
override fun createFromParcel(parcel: Parcel): AutoTypeItem {
|
||||||
|
return AutoTypeItem(parcel)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun newArray(size: Int): Array<AutoTypeItem?> {
|
||||||
|
return arrayOfNulls(size)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ class EntryKDBX : EntryVersioned<UUID, UUID, GroupKDBX, EntryKDBX>, NodeKDBXInte
|
|||||||
size += getAttachmentsSize(attachmentPool)
|
size += getAttachmentsSize(attachmentPool)
|
||||||
|
|
||||||
size += autoType.defaultSequence.length.toLong()
|
size += autoType.defaultSequence.length.toLong()
|
||||||
for ((key, value) in autoType.entrySet()) {
|
autoType.doForEachAutoTypeItem { key, value ->
|
||||||
size += key.length.toLong()
|
size += key.length.toLong()
|
||||||
size += value.length.toLong()
|
size += value.length.toLong()
|
||||||
}
|
}
|
||||||
@@ -265,25 +265,32 @@ class EntryKDBX : EntryVersioned<UUID, UUID, GroupKDBX, EntryKDBX>, NodeKDBXInte
|
|||||||
|| key == STR_NOTES)
|
|| key == STR_NOTES)
|
||||||
}
|
}
|
||||||
|
|
||||||
var customFields = LinkedHashMap<String, ProtectedString>()
|
fun doForEachDecodedCustomField(action: (key: String, value: ProtectedString) -> Unit) {
|
||||||
get() {
|
val iterator = fields.entries.iterator()
|
||||||
field.clear()
|
while (iterator.hasNext()) {
|
||||||
for ((key, value) in fields) {
|
val mapEntry = iterator.next()
|
||||||
if (!isStandardField(key)) {
|
if (!isStandardField(mapEntry.key)) {
|
||||||
field[key] = ProtectedString(value.isProtected, decodeRefKey(mDecodeRef, key, 0))
|
action.invoke(mapEntry.key,
|
||||||
}
|
ProtectedString(mapEntry.value.isProtected,
|
||||||
|
decodeRefKey(mDecodeRef, mapEntry.key, 0)
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
return field
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getField(key: String): ProtectedString? {
|
||||||
|
return fields[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
fun putField(label: String, value: ProtectedString) {
|
||||||
|
fields[label] = value
|
||||||
|
}
|
||||||
|
|
||||||
fun removeAllFields() {
|
fun removeAllFields() {
|
||||||
fields.clear()
|
fields.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun putExtraField(label: String, value: ProtectedString) {
|
|
||||||
fields[label] = value
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* It's a list because history labels can be defined multiple times
|
* It's a list because history labels can be defined multiple times
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -19,16 +19,17 @@
|
|||||||
*/
|
*/
|
||||||
package com.kunzisoft.keepass.database.element.entry
|
package com.kunzisoft.keepass.database.element.entry
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
import com.kunzisoft.keepass.database.element.database.DatabaseKDBX
|
import com.kunzisoft.keepass.database.element.database.DatabaseKDBX
|
||||||
import com.kunzisoft.keepass.database.element.node.NodeIdUUID
|
import com.kunzisoft.keepass.database.element.node.NodeIdUUID
|
||||||
import com.kunzisoft.keepass.utils.UuidUtil
|
import com.kunzisoft.keepass.utils.UuidUtil
|
||||||
import java.util.*
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
class FieldReferencesEngine(private val mDatabase: DatabaseKDBX) {
|
class FieldReferencesEngine(private val mDatabase: DatabaseKDBX) {
|
||||||
|
|
||||||
// Key : <WantedField>@<SearchIn>:<Text>
|
// Key : <WantedField>@<SearchIn>:<Text>
|
||||||
// Value : content
|
// Value : content
|
||||||
private var refsCache: MutableMap<String, String?> = HashMap()
|
private var refsCache = ConcurrentHashMap<String, String?>()
|
||||||
|
|
||||||
fun clear() {
|
fun clear() {
|
||||||
refsCache.clear()
|
refsCache.clear()
|
||||||
@@ -53,52 +54,56 @@ class FieldReferencesEngine(private val mDatabase: DatabaseKDBX) {
|
|||||||
&& numberInlineRef <= MAX_INLINE_REF) {
|
&& numberInlineRef <= MAX_INLINE_REF) {
|
||||||
numberInlineRef++
|
numberInlineRef++
|
||||||
|
|
||||||
textValue = fillReferencesUsingCache(textValue)
|
try {
|
||||||
|
|
||||||
val start = textValue.indexOf(STR_REF_START, offset, true)
|
|
||||||
if (start < 0) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
val end = textValue.indexOf(STR_REF_END, offset, true)
|
|
||||||
if (end <= start) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
val reference = textValue.substring(start + STR_REF_START.length, end)
|
|
||||||
val fullReference = "$STR_REF_START$reference$STR_REF_END"
|
|
||||||
|
|
||||||
if (!refsCache.containsKey(fullReference)) {
|
|
||||||
val result = findReferenceTarget(reference)
|
|
||||||
val entryFound = result.entry
|
|
||||||
val newRecursionLevel = recursionLevel + 1
|
|
||||||
val data: String? = when (result.wanted) {
|
|
||||||
'T' -> entryFound?.decodeTitleKey(newRecursionLevel)
|
|
||||||
'U' -> entryFound?.decodeUsernameKey(newRecursionLevel)
|
|
||||||
'A' -> entryFound?.decodeUrlKey(newRecursionLevel)
|
|
||||||
'P' -> entryFound?.decodePasswordKey(newRecursionLevel)
|
|
||||||
'N' -> entryFound?.decodeNotesKey(newRecursionLevel)
|
|
||||||
'I' -> UuidUtil.toHexString(entryFound?.nodeId?.id)
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
refsCache[fullReference] = data
|
|
||||||
textValue = fillReferencesUsingCache(textValue)
|
textValue = fillReferencesUsingCache(textValue)
|
||||||
}
|
|
||||||
|
|
||||||
offset = end
|
val start = textValue.indexOf(STR_REF_START, offset, true)
|
||||||
|
if (start < 0) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
val end = textValue.indexOf(STR_REF_END, offset, true)
|
||||||
|
if (end <= start) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
val reference = textValue.substring(start + STR_REF_START.length, end)
|
||||||
|
val fullReference = "$STR_REF_START$reference$STR_REF_END"
|
||||||
|
|
||||||
|
if (!refsCache.containsKey(fullReference)) {
|
||||||
|
val newRecursionLevel = recursionLevel + 1
|
||||||
|
val result = findReferenceTarget(reference, newRecursionLevel)
|
||||||
|
val entryFound = result.entry
|
||||||
|
val data: String? = when (result.wanted) {
|
||||||
|
'T' -> entryFound?.decodeTitleKey(newRecursionLevel)
|
||||||
|
'U' -> entryFound?.decodeUsernameKey(newRecursionLevel)
|
||||||
|
'A' -> entryFound?.decodeUrlKey(newRecursionLevel)
|
||||||
|
'P' -> entryFound?.decodePasswordKey(newRecursionLevel)
|
||||||
|
'N' -> entryFound?.decodeNotesKey(newRecursionLevel)
|
||||||
|
'I' -> UuidUtil.toHexString(entryFound?.nodeId?.id)
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
refsCache[fullReference] = data
|
||||||
|
textValue = fillReferencesUsingCache(textValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = end
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG, "Error when fill placeholders by reference", e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return textValue
|
return textValue
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fillReferencesUsingCache(text: String): String {
|
private fun fillReferencesUsingCache(text: String): String {
|
||||||
var newText = text
|
var newText = text
|
||||||
for ((key, value) in refsCache) {
|
refsCache.keys.forEach { key ->
|
||||||
// Replace by key if value not found
|
// Replace by key if value not found
|
||||||
newText = newText.replace(key, value ?: key, true)
|
newText = newText.replace(key, refsCache[key] ?: key, true)
|
||||||
}
|
}
|
||||||
return newText
|
return newText
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findReferenceTarget(reference: String): TargetResult {
|
private fun findReferenceTarget(reference: String, recursionLevel: Int): TargetResult {
|
||||||
|
|
||||||
val targetResult = TargetResult(null, 'J')
|
val targetResult = TargetResult(null, 'J')
|
||||||
|
|
||||||
@@ -116,11 +121,11 @@ class FieldReferencesEngine(private val mDatabase: DatabaseKDBX) {
|
|||||||
val searchIn = Character.toUpperCase(reference[2])
|
val searchIn = Character.toUpperCase(reference[2])
|
||||||
val searchQuery = reference.substring(4)
|
val searchQuery = reference.substring(4)
|
||||||
targetResult.entry = when (searchIn) {
|
targetResult.entry = when (searchIn) {
|
||||||
'T' -> mDatabase.getEntryByTitle(searchQuery)
|
'T' -> mDatabase.getEntryByTitle(searchQuery, recursionLevel)
|
||||||
'U' -> mDatabase.getEntryByUsername(searchQuery)
|
'U' -> mDatabase.getEntryByUsername(searchQuery, recursionLevel)
|
||||||
'A' -> mDatabase.getEntryByURL(searchQuery)
|
'A' -> mDatabase.getEntryByURL(searchQuery, recursionLevel)
|
||||||
'P' -> mDatabase.getEntryByPassword(searchQuery)
|
'P' -> mDatabase.getEntryByPassword(searchQuery, recursionLevel)
|
||||||
'N' -> mDatabase.getEntryByNotes(searchQuery)
|
'N' -> mDatabase.getEntryByNotes(searchQuery, recursionLevel)
|
||||||
'I' -> {
|
'I' -> {
|
||||||
UuidUtil.fromHexString(searchQuery)?.let { uuid ->
|
UuidUtil.fromHexString(searchQuery)?.let { uuid ->
|
||||||
mDatabase.getEntryById(NodeIdUUID(uuid))
|
mDatabase.getEntryById(NodeIdUUID(uuid))
|
||||||
@@ -139,5 +144,7 @@ class FieldReferencesEngine(private val mDatabase: DatabaseKDBX) {
|
|||||||
private const val MAX_INLINE_REF = 10
|
private const val MAX_INLINE_REF = 10
|
||||||
private const val STR_REF_START = "{REF:"
|
private const val STR_REF_START = "{REF:"
|
||||||
private const val STR_REF_END = "}"
|
private const val STR_REF_END = "}"
|
||||||
|
|
||||||
|
private val TAG = FieldReferencesEngine::class.java.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -807,7 +807,7 @@ class DatabaseInputKDBX(cacheDirectory: File,
|
|||||||
return KdbContext.Entry
|
return KdbContext.Entry
|
||||||
} else if (ctx == KdbContext.EntryString && name.equals(DatabaseKDBXXML.ElemString, ignoreCase = true)) {
|
} else if (ctx == KdbContext.EntryString && name.equals(DatabaseKDBXXML.ElemString, ignoreCase = true)) {
|
||||||
if (ctxStringName != null && ctxStringValue != null)
|
if (ctxStringName != null && ctxStringValue != null)
|
||||||
ctxEntry?.putExtraField(ctxStringName!!, ctxStringValue!!)
|
ctxEntry?.putField(ctxStringName!!, ctxStringValue!!)
|
||||||
ctxStringName = null
|
ctxStringName = null
|
||||||
ctxStringValue = null
|
ctxStringValue = null
|
||||||
|
|
||||||
@@ -824,7 +824,7 @@ class DatabaseInputKDBX(cacheDirectory: File,
|
|||||||
return KdbContext.Entry
|
return KdbContext.Entry
|
||||||
} else if (ctx == KdbContext.EntryAutoTypeItem && name.equals(DatabaseKDBXXML.ElemAutoTypeItem, ignoreCase = true)) {
|
} else if (ctx == KdbContext.EntryAutoTypeItem && name.equals(DatabaseKDBXXML.ElemAutoTypeItem, ignoreCase = true)) {
|
||||||
if (ctxATName != null && ctxATSeq != null)
|
if (ctxATName != null && ctxATSeq != null)
|
||||||
ctxEntry?.autoType?.put(ctxATName!!, ctxATSeq!!)
|
ctxEntry?.autoType?.add(ctxATName!!, ctxATSeq!!)
|
||||||
ctxATName = null
|
ctxATName = null
|
||||||
ctxATSeq = null
|
ctxATSeq = null
|
||||||
|
|
||||||
|
|||||||
@@ -530,7 +530,7 @@ class DatabaseOutputKDBX(private val mDatabaseKDBX: DatabaseKDBX,
|
|||||||
writeString(DatabaseKDBXXML.ElemAutoTypeDefaultSeq, autoType.defaultSequence, true)
|
writeString(DatabaseKDBXXML.ElemAutoTypeDefaultSeq, autoType.defaultSequence, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
for ((key, value) in autoType.entrySet()) {
|
autoType.doForEachAutoTypeItem { key, value ->
|
||||||
xml.startTag(null, DatabaseKDBXXML.ElemAutoTypeItem)
|
xml.startTag(null, DatabaseKDBXXML.ElemAutoTypeItem)
|
||||||
|
|
||||||
xml.startTag(null, DatabaseKDBXXML.ElemWindow)
|
xml.startTag(null, DatabaseKDBXXML.ElemWindow)
|
||||||
|
|||||||
@@ -19,7 +19,9 @@
|
|||||||
*/
|
*/
|
||||||
package com.kunzisoft.keepass.services
|
package com.kunzisoft.keepass.services
|
||||||
|
|
||||||
|
import android.app.ActivityManager
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.*
|
import android.os.*
|
||||||
@@ -44,10 +46,7 @@ import com.kunzisoft.keepass.model.SnapFileDatabaseInfo
|
|||||||
import com.kunzisoft.keepass.tasks.ActionRunnable
|
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||||
import com.kunzisoft.keepass.tasks.ProgressTaskUpdater
|
import com.kunzisoft.keepass.tasks.ProgressTaskUpdater
|
||||||
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
||||||
import com.kunzisoft.keepass.utils.DATABASE_START_TASK_ACTION
|
import com.kunzisoft.keepass.utils.*
|
||||||
import com.kunzisoft.keepass.utils.DATABASE_STOP_TASK_ACTION
|
|
||||||
import com.kunzisoft.keepass.utils.LOCK_ACTION
|
|
||||||
import com.kunzisoft.keepass.utils.closeDatabase
|
|
||||||
import com.kunzisoft.keepass.viewmodels.FileDatabaseInfo
|
import com.kunzisoft.keepass.viewmodels.FileDatabaseInfo
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -280,8 +279,10 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
|
|||||||
stopSelf()
|
stopSelf()
|
||||||
} else {
|
} else {
|
||||||
// Restart the service to open lock notification
|
// Restart the service to open lock notification
|
||||||
startService(Intent(applicationContext,
|
try {
|
||||||
DatabaseTaskNotificationService::class.java))
|
startService(Intent(applicationContext,
|
||||||
|
DatabaseTaskNotificationService::class.java))
|
||||||
|
} catch (e: IllegalStateException) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -838,6 +839,12 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
super.onDestroy()
|
||||||
|
if (mDatabase.loaded)
|
||||||
|
actionOnLock()
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
private val TAG = DatabaseTaskNotificationService::class.java.name
|
private val TAG = DatabaseTaskNotificationService::class.java.name
|
||||||
|
|||||||
@@ -138,5 +138,5 @@ fun Context.closeDatabase() {
|
|||||||
cancelAll()
|
cancelAll()
|
||||||
}
|
}
|
||||||
// Clear data
|
// Clear data
|
||||||
Database.getInstance().clearAndClose(UriUtil.getBinaryDir(this))
|
Database.getInstance().clearAndClose(this)
|
||||||
}
|
}
|
||||||
@@ -42,8 +42,12 @@ object ParcelableUtil {
|
|||||||
val size = parcel.readInt()
|
val size = parcel.readInt()
|
||||||
val map = HashMap<K, V>(size)
|
val map = HashMap<K, V>(size)
|
||||||
for (i in 0 until size) {
|
for (i in 0 until size) {
|
||||||
val key: K? = kClass.cast(parcel.readParcelable(kClass.classLoader))
|
val key: K? = try {
|
||||||
val value: V? = vClass.cast(parcel.readParcelable(vClass.classLoader))
|
parcel.readParcelable(kClass.classLoader)
|
||||||
|
} catch (e: Exception) { null }
|
||||||
|
val value: V? = try {
|
||||||
|
parcel.readParcelable(vClass.classLoader)
|
||||||
|
} catch (e: Exception) { null }
|
||||||
if (key != null && value != null)
|
if (key != null && value != null)
|
||||||
map[key] = value
|
map[key] = value
|
||||||
}
|
}
|
||||||
@@ -76,7 +80,9 @@ object ParcelableUtil {
|
|||||||
val map = LinkedHashMap<String, V>(size)
|
val map = LinkedHashMap<String, V>(size)
|
||||||
for (i in 0 until size) {
|
for (i in 0 until size) {
|
||||||
val key: String? = parcel.readString()
|
val key: String? = parcel.readString()
|
||||||
val value: V? = vClass.cast(parcel.readParcelable(vClass.classLoader))
|
val value: V? = try {
|
||||||
|
parcel.readParcelable(vClass.classLoader)
|
||||||
|
} catch (e: Exception) { null }
|
||||||
if (key != null && value != null)
|
if (key != null && value != null)
|
||||||
map[key] = value
|
map[key] = value
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
--><resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
--><resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||||
<string name="homepage">الصفحة الرئيسية</string>
|
<string name="homepage">الصفحة الرئيسة</string>
|
||||||
<string name="accept">قبول</string>
|
<string name="accept">قبول</string>
|
||||||
<string name="add_group">إضافة مجموعة</string>
|
<string name="add_group">إضافة مجموعة</string>
|
||||||
<string name="encryption">التعمية</string>
|
<string name="encryption">التعمية</string>
|
||||||
@@ -106,8 +106,8 @@
|
|||||||
<string name="education_entry_new_field_title">إضافة حقول مخصصة</string>
|
<string name="education_entry_new_field_title">إضافة حقول مخصصة</string>
|
||||||
<string name="education_field_copy_title">نسخ حقل</string>
|
<string name="education_field_copy_title">نسخ حقل</string>
|
||||||
<string name="education_lock_title">تأمين قاعدة البيانات</string>
|
<string name="education_lock_title">تأمين قاعدة البيانات</string>
|
||||||
<string name="feedback">الأصداء</string>
|
<string name="feedback">التغذية الراجعة</string>
|
||||||
<string name="about_description">تنفيذ أندرويد لمدير كلمات السر «كيباس»</string>
|
<string name="about_description">التنفيذ لمُدير كلمات المرور «كي باس» على نظام أندرويد</string>
|
||||||
<string name="add_entry">إضافة مدخلة</string>
|
<string name="add_entry">إضافة مدخلة</string>
|
||||||
<string name="edit_entry">تحرير مدخلة</string>
|
<string name="edit_entry">تحرير مدخلة</string>
|
||||||
<string name="key_derivation_function">وظيفة اشتقاق المفتاح</string>
|
<string name="key_derivation_function">وظيفة اشتقاق المفتاح</string>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
<string name="add_entry">Afegeix entrada</string>
|
<string name="add_entry">Afegeix entrada</string>
|
||||||
<string name="add_group">Afegeix grup</string>
|
<string name="add_group">Afegeix grup</string>
|
||||||
<string name="encryption_algorithm">Algoritme de xifrat</string>
|
<string name="encryption_algorithm">Algoritme de xifrat</string>
|
||||||
<string name="app_timeout">Temps d\'espera de l\'aplicació</string>
|
<string name="app_timeout">Temps d\'espera esgotat</string>
|
||||||
<string name="app_timeout_summary">Temps d\'inactivitat abans de blocar la base de dades</string>
|
<string name="app_timeout_summary">Temps d\'inactivitat abans de blocar la base de dades</string>
|
||||||
<string name="application">Aplicació</string>
|
<string name="application">Aplicació</string>
|
||||||
<string name="menu_app_settings">Configuració de l\'aplicació</string>
|
<string name="menu_app_settings">Configuració de l\'aplicació</string>
|
||||||
@@ -289,4 +289,6 @@
|
|||||||
<string name="error_otp_type">L\'OTP existent no està reconegut per aquest formulari, la seva validació ja no pot generar correctament el token.</string>
|
<string name="error_otp_type">L\'OTP existent no està reconegut per aquest formulari, la seva validació ja no pot generar correctament el token.</string>
|
||||||
<string name="error_create_database_file">No s\'ha pogut crear una base de dades amb aquesta contrasenya i arxiu de clau.</string>
|
<string name="error_create_database_file">No s\'ha pogut crear una base de dades amb aquesta contrasenya i arxiu de clau.</string>
|
||||||
<string name="error_autofill_enable_service">No s\'ha pogut habilitar el servei d\'autocompletat.</string>
|
<string name="error_autofill_enable_service">No s\'ha pogut habilitar el servei d\'autocompletat.</string>
|
||||||
|
<string name="content_description_node_children">Nodes fill</string>
|
||||||
|
<string name="key_derivation_function">Funció de derivació de clau</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -223,7 +223,7 @@
|
|||||||
<string name="application_appearance">Brugerflade</string>
|
<string name="application_appearance">Brugerflade</string>
|
||||||
<string name="other">Øvrige</string>
|
<string name="other">Øvrige</string>
|
||||||
<string name="keyboard">Tastatur</string>
|
<string name="keyboard">Tastatur</string>
|
||||||
<string name="magic_keyboard_title">Magikeyboard</string>
|
<string name="magic_keyboard_title">Magi keyboard</string>
|
||||||
<string name="magic_keyboard_explanation_summary">Aktiver et brugerdefineret tastatur, der udfylder adgangskoder og alle identitetsfelter</string>
|
<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_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="allow_no_password_summary">Tillader at trykke på knappen \"Åbn\", hvis der ikke er valgt nogen legitimationsoplysninger</string>
|
||||||
@@ -283,8 +283,8 @@
|
|||||||
<string name="style_choose_summary">Tema, der bruges i programmet</string>
|
<string name="style_choose_summary">Tema, der bruges i programmet</string>
|
||||||
<string name="icon_pack_choose_title">Ikonpakke</string>
|
<string name="icon_pack_choose_title">Ikonpakke</string>
|
||||||
<string name="icon_pack_choose_summary">Ikonpakke, der anvendes</string>
|
<string name="icon_pack_choose_summary">Ikonpakke, der anvendes</string>
|
||||||
<string name="keyboard_name">Magikeyboard</string>
|
<string name="keyboard_name">Magi keyboard</string>
|
||||||
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
|
<string name="keyboard_label">Magi keyboard (KeePassDX)</string>
|
||||||
<string name="keyboard_setting_label">Magikeyboard indstillinger</string>
|
<string name="keyboard_setting_label">Magikeyboard indstillinger</string>
|
||||||
<string name="keyboard_entry_category">Post</string>
|
<string name="keyboard_entry_category">Post</string>
|
||||||
<string name="keyboard_entry_timeout_title">Udløbstid</string>
|
<string name="keyboard_entry_timeout_title">Udløbstid</string>
|
||||||
@@ -300,7 +300,7 @@
|
|||||||
<string name="keyboard_keys_category">Taster</string>
|
<string name="keyboard_keys_category">Taster</string>
|
||||||
<string name="keyboard_key_vibrate_title">Vibrerende tastetryk</string>
|
<string name="keyboard_key_vibrate_title">Vibrerende tastetryk</string>
|
||||||
<string name="keyboard_key_sound_title">Hørbare tastetryk</string>
|
<string name="keyboard_key_sound_title">Hørbare tastetryk</string>
|
||||||
<string name="build_label">Build %1$s</string>
|
<string name="build_label">Byg %1$s</string>
|
||||||
<string name="keyboard_entry_timeout_summary">Tidsudløb for at rydde indtastning</string>
|
<string name="keyboard_entry_timeout_summary">Tidsudløb for at rydde indtastning</string>
|
||||||
<string name="entry_notes">Noter</string>
|
<string name="entry_notes">Noter</string>
|
||||||
<string name="selection_mode">Valgstilstand</string>
|
<string name="selection_mode">Valgstilstand</string>
|
||||||
@@ -426,7 +426,7 @@
|
|||||||
<string name="hide_broken_locations_title">Skjule brudte databaselinks</string>
|
<string name="hide_broken_locations_title">Skjule brudte databaselinks</string>
|
||||||
<string name="hide_broken_locations_summary">Skjul brudte links på listen over seneste databaser</string>
|
<string name="hide_broken_locations_summary">Skjul brudte links på listen over seneste databaser</string>
|
||||||
<string name="warning_database_read_only">Giv fil skriveadgang for at gemme databasændringer</string>
|
<string name="warning_database_read_only">Giv fil skriveadgang for at gemme databasændringer</string>
|
||||||
<string name="education_setup_OTP_summary">Opsætning af engangs-adgangskode-styring (HOTP / TOTP) for at generere et token anmodet af tofaktor-autentisering (2FA).</string>
|
<string name="education_setup_OTP_summary">Sæt op engangs-adgangskode-styring (HOTP / TOTP) for at generere et token anmodet af tofaktor-autentisering (2FA).</string>
|
||||||
<string name="education_setup_OTP_title">Opsætning af OTP</string>
|
<string name="education_setup_OTP_title">Opsætning af OTP</string>
|
||||||
<string name="error_create_database">Databasefilen kunne ikke oprettes.</string>
|
<string name="error_create_database">Databasefilen kunne ikke oprettes.</string>
|
||||||
<string name="entry_add_attachment">Tilføj vedhæng</string>
|
<string name="entry_add_attachment">Tilføj vedhæng</string>
|
||||||
@@ -537,7 +537,7 @@
|
|||||||
<string name="error_start_database_action">Der opstod en fejl under udførelsen af en handling på databasen.</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 med at fjerne fildata.</string>
|
<string name="error_remove_file">Der opstod en fejl med at fjerne fildata.</string>
|
||||||
<string name="error_otp_type">Den existerende OTP type kunne ikke genkendes, den kan være tiden er udløbet for at lave dette token.</string>
|
<string name="error_otp_type">Den existerende OTP type kunne ikke genkendes, den kan være tiden er udløbet for at lave dette token.</string>
|
||||||
<string name="education_advanced_unlock_summary">Sammenkæd din adgangskode, med din scannede biometriske oplysninger eller enheds legitimationsoplysninger for, hurtigt at låse din database op.</string>
|
<string name="education_advanced_unlock_summary">Sammenkæd din adgangskode, med din scannede biometriske oplysninger eller enheds legitimationsoplysninger for hurtigt oplåsning af din database.</string>
|
||||||
<string name="enter">Enter</string>
|
<string name="enter">Enter</string>
|
||||||
<string name="temp_advanced_unlock_timeout_summary">Varigheden af avanceret oplåsning, før indholdet slettes</string>
|
<string name="temp_advanced_unlock_timeout_summary">Varigheden af avanceret oplåsning, før indholdet slettes</string>
|
||||||
<string name="device_credential_unlock_enable_summary">Giver dig mulighed for at bruge dine enhedsoplysninger for at åbne databasen</string>
|
<string name="device_credential_unlock_enable_summary">Giver dig mulighed for at bruge dine enhedsoplysninger for at åbne databasen</string>
|
||||||
@@ -561,4 +561,6 @@
|
|||||||
<string name="export_app_properties_title">Eksporter app-egenskaber</string>
|
<string name="export_app_properties_title">Eksporter app-egenskaber</string>
|
||||||
<string name="import_app_properties_summary">Vælg en fil for at importere app-egenskaber</string>
|
<string name="import_app_properties_summary">Vælg en fil for at importere app-egenskaber</string>
|
||||||
<string name="import_app_properties_title">Importer appegenskaber</string>
|
<string name="import_app_properties_title">Importer appegenskaber</string>
|
||||||
|
<string name="error_move_group_here">Du kan flytte en gruppe her.</string>
|
||||||
|
<string name="error_word_reserved">Dette ord er reseveret og kan ikke bruges.</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
<string name="error_invalid_db">Datenbank nicht lesbar.</string>
|
<string name="error_invalid_db">Datenbank nicht lesbar.</string>
|
||||||
<string name="error_invalid_path">Sicherstellen, dass der Pfad korrekt ist.</string>
|
<string name="error_invalid_path">Sicherstellen, dass der Pfad korrekt ist.</string>
|
||||||
<string name="error_no_name">Namen eingeben.</string>
|
<string name="error_no_name">Namen eingeben.</string>
|
||||||
<string name="error_nokeyfile">Schlüsseldatei wählen.</string>
|
<string name="error_nokeyfile">Schlüsseldatei auswählen.</string>
|
||||||
<string name="error_out_of_memory">Zu wenig Speicherplatz, um die ganze Datenbank zu laden.</string>
|
<string name="error_out_of_memory">Zu wenig Speicherplatz, um die ganze Datenbank zu laden.</string>
|
||||||
<string name="error_pass_gen_type">Mindestens eine Art der Passwortgenerierung muss ausgewählt sein.</string>
|
<string name="error_pass_gen_type">Mindestens eine Art der Passwortgenerierung muss ausgewählt sein.</string>
|
||||||
<string name="error_pass_match">Die Passwörter stimmen nicht überein.</string>
|
<string name="error_pass_match">Die Passwörter stimmen nicht überein.</string>
|
||||||
@@ -283,7 +283,7 @@
|
|||||||
<string name="enable_read_only_title">Schreibgeschützt</string>
|
<string name="enable_read_only_title">Schreibgeschützt</string>
|
||||||
<string name="education_read_only_title">Schreibschutz der Datenbank aktivieren</string>
|
<string name="education_read_only_title">Schreibschutz der Datenbank aktivieren</string>
|
||||||
<string name="enable_read_only_summary">Datenbank standardmäßig schreibgeschützt öffnen</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.
|
<string name="education_read_only_summary">Den Modus bei Eröffnung der Sitzung ändern.
|
||||||
\n
|
\n
|
||||||
\n„Schreibgeschützt“ verhindert unbeabsichtigte Änderungen an der Datenbank.
|
\n„Schreibgeschützt“ verhindert unbeabsichtigte Änderungen an der Datenbank.
|
||||||
\nMit „Änderbar“ können Sie alle Elemente nach Belieben hinzufügen, löschen oder ändern.</string>
|
\nMit „Änderbar“ können Sie alle Elemente nach Belieben hinzufügen, löschen oder ändern.</string>
|
||||||
@@ -454,7 +454,7 @@
|
|||||||
<string name="keyboard_search_share_title">Gemeinsame Infos durchsuchen</string>
|
<string name="keyboard_search_share_title">Gemeinsame Infos durchsuchen</string>
|
||||||
<string name="autofill_block_restart">Starten Sie die Anwendung, die das Formular enthält, neu, um die Sperrung zu aktivieren.</string>
|
<string name="autofill_block_restart">Starten Sie die Anwendung, die das Formular enthält, neu, um die Sperrung zu aktivieren.</string>
|
||||||
<string name="autofill_block">Automatisches Ausfüllen sperren</string>
|
<string name="autofill_block">Automatisches Ausfüllen sperren</string>
|
||||||
<string name="autofill_web_domain_blocklist_summary">Liste der Domains, auf denen ein automatisches Ausfüllen unterlassen wird</string>
|
<string name="autofill_web_domain_blocklist_summary">Liste der Domains, auf denen ein automatisches Ausfüllen verhindert wird</string>
|
||||||
<string name="autofill_web_domain_blocklist_title">Liste gesperrter Web-Domains</string>
|
<string name="autofill_web_domain_blocklist_title">Liste gesperrter Web-Domains</string>
|
||||||
<string name="autofill_application_id_blocklist_summary">Liste der Apps, in denen ein automatisches Ausfüllen verhindert wird</string>
|
<string name="autofill_application_id_blocklist_summary">Liste der Apps, in denen ein automatisches Ausfüllen verhindert wird</string>
|
||||||
<string name="autofill_application_id_blocklist_title">Liste gesperrter Anwendungen</string>
|
<string name="autofill_application_id_blocklist_title">Liste gesperrter Anwendungen</string>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<string name="add_entry">Añadir entrada</string>
|
<string name="add_entry">Añadir entrada</string>
|
||||||
<string name="add_group">Añadir grupo</string>
|
<string name="add_group">Añadir grupo</string>
|
||||||
<string name="encryption_algorithm">Algoritmo de cifrado</string>
|
<string name="encryption_algorithm">Algoritmo de cifrado</string>
|
||||||
<string name="app_timeout">Tiempo de espera de la aplicación excedido</string>
|
<string name="app_timeout">Tiempo de espera excedido</string>
|
||||||
<string name="app_timeout_summary">Inactividad antes del bloqueo de aplicación</string>
|
<string name="app_timeout_summary">Inactividad antes del bloqueo de aplicación</string>
|
||||||
<string name="application">Aplicación</string>
|
<string name="application">Aplicación</string>
|
||||||
<string name="menu_app_settings">Configuración de la aplicación</string>
|
<string name="menu_app_settings">Configuración de la aplicación</string>
|
||||||
@@ -436,7 +436,7 @@
|
|||||||
<string name="database_opened">Base de datos abierta</string>
|
<string name="database_opened">Base de datos abierta</string>
|
||||||
<string name="education_add_attachment_title">Adjuntar</string>
|
<string name="education_add_attachment_title">Adjuntar</string>
|
||||||
<string name="education_add_attachment_summary">Cargue un archivo adjunto a la entrada para guardar datos externos importantes.</string>
|
<string name="education_add_attachment_summary">Cargue un archivo adjunto a la entrada para guardar datos externos importantes.</string>
|
||||||
<string name="hide_expired_entries_summary">Las entradas caducadas no se muestran</string>
|
<string name="hide_expired_entries_summary">Las entradas caducadas no se están mostrando</string>
|
||||||
<string name="warning_remove_unlinked_attachment">La eliminación de datos no vinculados puede disminuir el tamaño de su base de datos, pero también puede eliminar los datos usados por los complementos de KeePass.</string>
|
<string name="warning_remove_unlinked_attachment">La eliminación de datos no vinculados puede disminuir el tamaño de su base de datos, pero también puede eliminar los datos usados por los complementos de KeePass.</string>
|
||||||
<string name="warning_file_too_big">Se supone que una base de datos KeePass contiene solo pequeños archivos de utilidad (como archivos de clave PGP).
|
<string name="warning_file_too_big">Se supone que una base de datos KeePass contiene solo pequeños archivos de utilidad (como archivos de clave PGP).
|
||||||
\n
|
\n
|
||||||
@@ -492,7 +492,7 @@
|
|||||||
<string name="hide_expired_entries_title">Ocultar las entradas expiradas</string>
|
<string name="hide_expired_entries_title">Ocultar las entradas expiradas</string>
|
||||||
<string name="keyboard_search_share_title">Buscar información compartida</string>
|
<string name="keyboard_search_share_title">Buscar información compartida</string>
|
||||||
<string name="upload_attachment">Subir %1$s</string>
|
<string name="upload_attachment">Subir %1$s</string>
|
||||||
<string name="education_setup_OTP_summary">Configurar la gestión de contraseñas de una sola vez (HOTP / TOTP) para generar un token solicitado para la autenticación de dos factores (2FA).</string>
|
<string name="education_setup_OTP_summary">Configurar la gestión de contraseñas de un solo uso (HOTP / TOTP) para generar un token solicitado para la autenticación de dos factores (2FA).</string>
|
||||||
<string name="education_setup_OTP_title">Establecer la contaseña de un solo uso</string>
|
<string name="education_setup_OTP_title">Establecer la contaseñ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_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 avanzado de la base de datos</string>
|
<string name="education_advanced_unlock_title">Desbloqueo avanzado de la base de datos</string>
|
||||||
@@ -542,6 +542,26 @@
|
|||||||
<string name="menu_reload_database">Recargar la base de datos</string>
|
<string name="menu_reload_database">Recargar la base de datos</string>
|
||||||
<string name="error_otp_type">El tipo de OTP existente no es reconocido por este formulario, su validación ya no puede generar correctamente el token.</string>
|
<string name="error_otp_type">El tipo de OTP existente no es reconocido por este formulario, su validación ya no puede generar correctamente el token.</string>
|
||||||
<string name="download_canceled">¡Cancelado!</string>
|
<string name="download_canceled">¡Cancelado!</string>
|
||||||
<string name="error_duplicate_file">Los datos de archivo ya existen.</string>
|
<string name="error_duplicate_file">Los datos del archivo ya existen.</string>
|
||||||
<string name="error_upload_file">Ha habido un error al subir el archivo de datos.</string>
|
<string name="error_upload_file">Error al subir datos del archivo.</string>
|
||||||
|
<string name="description_app_properties">Propiedades de KeePassDX para gestionar la configuración de la aplicación</string>
|
||||||
|
<string name="content_description_otp_information">Información de contraseña de un solo uso</string>
|
||||||
|
<string name="icon_section_custom">Personalizado</string>
|
||||||
|
<string name="icon_section_standard">Estándar</string>
|
||||||
|
<string name="style_brightness_summary">Seleccionar temas oscuros o claros</string>
|
||||||
|
<string name="style_brightness_title">Brillo del tema</string>
|
||||||
|
<string name="properties">Propiedades</string>
|
||||||
|
<string name="error_import_app_properties">Error al importar las propiedades de la aplicación</string>
|
||||||
|
<string name="error_export_app_properties">Error al exportar las propiedades de la aplicación</string>
|
||||||
|
<string name="success_export_app_properties">Propiedades de la aplicación exportadas</string>
|
||||||
|
<string name="success_import_app_properties">Propiedades de la aplicación importadas</string>
|
||||||
|
<string name="export_app_properties_summary">Cree un archivo para exportar las propiedades de la aplicación</string>
|
||||||
|
<string name="export_app_properties_title">Exportar propiedades de la aplicación</string>
|
||||||
|
<string name="import_app_properties_summary">Seleccione un archivo para importar las propiedades de la aplicación</string>
|
||||||
|
<string name="import_app_properties_title">Importar propiedades de la aplicación</string>
|
||||||
|
<string name="error_start_database_action">Ocurrió un error al realizar una acción en la base de datos.</string>
|
||||||
|
<string name="error_remove_file">Ocurrió un error al eliminar los datos del archivo.</string>
|
||||||
|
<string name="error_file_to_big">El archivo que está tratando de cargar es demasiado grande.</string>
|
||||||
|
<string name="error_move_group_here">No puede mover un grupo aquí.</string>
|
||||||
|
<string name="error_word_reserved">Esta palabra está reservada y no se puede usar.</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -73,9 +73,9 @@
|
|||||||
<string name="error_out_of_memory">Mémoire insuffisante pour charger l’intégralité de votre base de données.</string>
|
<string name="error_out_of_memory">Mémoire insuffisante pour charger l’intégralité de votre base de données.</string>
|
||||||
<string name="error_pass_gen_type">Au moins un type de génération de mots de passe doit être sélectionné.</string>
|
<string name="error_pass_gen_type">Au moins un type de génération de mots de passe doit être sélectionné.</string>
|
||||||
<string name="error_pass_match">Les mots de passe ne correspondent pas.</string>
|
<string name="error_pass_match">Les mots de passe ne correspondent pas.</string>
|
||||||
<string name="error_rounds_too_large">« Tours de transformation » trop grand. Définition à 2147483648.</string>
|
<string name="error_rounds_too_large">\"Tours de transformation\" trop grand. Définition à 2147483648.</string>
|
||||||
<string name="error_string_key">Chaque chaîne doit avoir un nom de champ.</string>
|
<string name="error_string_key">Chaque chaîne doit avoir un nom de champ.</string>
|
||||||
<string name="error_wrong_length">Veuillez saisir un entier positif dans le champ « Longueur ».</string>
|
<string name="error_wrong_length">Veuillez saisir un entier positif dans le champ \"Longueur\".</string>
|
||||||
<string name="error_autofill_enable_service">Impossible d’activer le service de remplissage automatique.</string>
|
<string name="error_autofill_enable_service">Impossible d’activer le service de remplissage automatique.</string>
|
||||||
<string name="field_name">Nom du champ</string>
|
<string name="field_name">Nom du champ</string>
|
||||||
<string name="field_value">Valeur du champ</string>
|
<string name="field_value">Valeur du champ</string>
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
<string name="no_url_handler">Installer un navigateur Web pour ouvrir cette URL.</string>
|
<string name="no_url_handler">Installer un navigateur Web pour ouvrir cette URL.</string>
|
||||||
<string name="select_database_file">Ouvrir une base de données existante</string>
|
<string name="select_database_file">Ouvrir une base de données existante</string>
|
||||||
<string name="omit_backup_search_title">Ne pas rechercher dans les entrées sauvegardées</string>
|
<string name="omit_backup_search_title">Ne pas rechercher dans les entrées sauvegardées</string>
|
||||||
<string name="omit_backup_search_summary">Omet les groupes « Sauvegarde » et « Corbeille » des résultats de recherche</string>
|
<string name="omit_backup_search_summary">Omet les groupes \"Sauvegarde\" et \"Corbeille\" des résultats de recherche</string>
|
||||||
<string name="progress_create">Création d’une nouvelle base de données…</string>
|
<string name="progress_create">Création d’une nouvelle base de données…</string>
|
||||||
<string name="progress_title">Traitement en cours…</string>
|
<string name="progress_title">Traitement en cours…</string>
|
||||||
<string name="protection">Protection</string>
|
<string name="protection">Protection</string>
|
||||||
@@ -157,8 +157,8 @@
|
|||||||
<string name="uppercase">Majuscules</string>
|
<string name="uppercase">Majuscules</string>
|
||||||
<string name="warning">Alerte</string>
|
<string name="warning">Alerte</string>
|
||||||
<string name="warning_password_encoding">Éviter les caractères en dehors du format de codage de caractères du fichier de base de données (les caractères non reconnus sont convertis en une même lettre).</string>
|
<string name="warning_password_encoding">Éviter les caractères en dehors du format de codage de caractères du fichier de base de données (les caractères non reconnus sont convertis en une même lettre).</string>
|
||||||
<string name="warning_empty_password">Continuer sans protection de déverrouillage par mot de passe \?</string>
|
<string name="warning_empty_password">Continuer sans protection de déverrouillage par mot de passe \?</string>
|
||||||
<string name="warning_no_encryption_key">Continuer sans clé de chiffrement \?</string>
|
<string name="warning_no_encryption_key">Continuer sans clé de chiffrement \?</string>
|
||||||
<string name="version_label">Version %1$s</string>
|
<string name="version_label">Version %1$s</string>
|
||||||
<string name="configure_biometric">Aucune information d’identification biométrique ou de périphérique n’est enregistrée.</string>
|
<string name="configure_biometric">Aucune information d’identification biométrique ou de périphérique n’est enregistrée.</string>
|
||||||
<string name="encrypted_value_stored">Mot de passe chiffré stocké</string>
|
<string name="encrypted_value_stored">Mot de passe chiffré stocké</string>
|
||||||
@@ -195,7 +195,7 @@
|
|||||||
<string name="assign_master_key">Affecter une clé principale</string>
|
<string name="assign_master_key">Affecter une clé principale</string>
|
||||||
<string name="create_keepass_file">Créer une nouvelle base de données</string>
|
<string name="create_keepass_file">Créer une nouvelle base de données</string>
|
||||||
<string name="recycle_bin_title">Utilisation de la corbeille</string>
|
<string name="recycle_bin_title">Utilisation de la corbeille</string>
|
||||||
<string name="recycle_bin_summary">Déplace les groupes et les entrées dans le groupe « Corbeille » avant leur suppression</string>
|
<string name="recycle_bin_summary">Déplace les groupes et les entrées dans le groupe \"Corbeille\" avant leur suppression</string>
|
||||||
<string name="monospace_font_fields_enable_title">Fonte de caractères des champs</string>
|
<string name="monospace_font_fields_enable_title">Fonte de caractères des champs</string>
|
||||||
<string name="monospace_font_fields_enable_summary">Change la fonte utilisée dans les champs pour une meilleure visibilité des caractères</string>
|
<string name="monospace_font_fields_enable_summary">Change la fonte utilisée dans les champs pour une meilleure visibilité des caractères</string>
|
||||||
<string name="allow_copy_password_title">Faire confiance au presse-papier</string>
|
<string name="allow_copy_password_title">Faire confiance au presse-papier</string>
|
||||||
@@ -280,7 +280,7 @@
|
|||||||
<string name="menu_paste">Coller</string>
|
<string name="menu_paste">Coller</string>
|
||||||
<string name="menu_cancel">Annuler</string>
|
<string name="menu_cancel">Annuler</string>
|
||||||
<string name="allow_no_password_title">Autoriser l’absence de clé principale</string>
|
<string name="allow_no_password_title">Autoriser l’absence de clé principale</string>
|
||||||
<string name="allow_no_password_summary">Autorise l’appui du bouton « Ouvrir » si aucun identifiant n’est sélectionné</string>
|
<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_file_selection_read_only">Protéger en écriture</string>
|
||||||
<string name="menu_open_file_read_and_write">Modifiable</string>
|
<string name="menu_open_file_read_and_write">Modifiable</string>
|
||||||
<string name="enable_read_only_title">Protégé en écriture</string>
|
<string name="enable_read_only_title">Protégé en écriture</string>
|
||||||
@@ -288,8 +288,8 @@
|
|||||||
<string name="education_read_only_title">Protégez en écriture votre base de données</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.
|
<string name="education_read_only_summary">Changez le mode d’ouverture pour la session.
|
||||||
\n
|
\n
|
||||||
\n« Protégé en écriture » empêche les modifications involontaires de la base de données.
|
\n\"Protégé en écriture\" empêche les modifications involontaires de la base de données.
|
||||||
\n« Modifiable » vous permet d’ajouter, de supprimer ou de modifier tous les éléments comme vous le souhaitez.</string>
|
\n\"Modifiable\" vous permet d’ajouter, de supprimer ou de modifier tous les éléments comme vous le souhaitez.</string>
|
||||||
<string name="edit_entry">Modifier l’entrée</string>
|
<string name="edit_entry">Modifier l’entrée</string>
|
||||||
<string name="error_load_database">Impossible de charger votre base de données.</string>
|
<string name="error_load_database">Impossible de charger votre base de données.</string>
|
||||||
<string name="error_load_database_KDF_memory">Impossible de charger la clé. Veuillez essayer de diminuer l’utilisation mémoire de la fonction de dérivation de clé.</string>
|
<string name="error_load_database_KDF_memory">Impossible de charger la clé. Veuillez essayer de diminuer l’utilisation mémoire de la fonction de dérivation de clé.</string>
|
||||||
@@ -301,7 +301,7 @@
|
|||||||
<string name="keyboard_setting_label">Paramètres Magiclavier</string>
|
<string name="keyboard_setting_label">Paramètres Magiclavier</string>
|
||||||
<string name="keyboard_entry_category">Entrée</string>
|
<string name="keyboard_entry_category">Entrée</string>
|
||||||
<string name="keyboard_entry_timeout_title">Délai d’expiration</string>
|
<string name="keyboard_entry_timeout_title">Délai d’expiration</string>
|
||||||
<string name="keyboard_entry_timeout_summary">Délai d’expiration pour effacer l’entrée au clavier</string>
|
<string name="keyboard_entry_timeout_summary">Délai d’expiration pour effacer l’entrée disponible dans le clavier</string>
|
||||||
<string name="keyboard_notification_entry_title">Informations de notification</string>
|
<string name="keyboard_notification_entry_title">Informations de notification</string>
|
||||||
<string name="keyboard_notification_entry_summary">Affiche une notification lorsqu’une entrée est disponible</string>
|
<string name="keyboard_notification_entry_summary">Affiche une notification lorsqu’une entrée est disponible</string>
|
||||||
<string name="keyboard_notification_entry_content_title_text">Entrée</string>
|
<string name="keyboard_notification_entry_content_title_text">Entrée</string>
|
||||||
@@ -312,22 +312,22 @@
|
|||||||
<string name="keyboard_appearance_category">Apparence</string>
|
<string name="keyboard_appearance_category">Apparence</string>
|
||||||
<string name="keyboard_theme_title">Thème du clavier</string>
|
<string name="keyboard_theme_title">Thème du clavier</string>
|
||||||
<string name="keyboard_keys_category">Touches</string>
|
<string name="keyboard_keys_category">Touches</string>
|
||||||
<string name="keyboard_key_vibrate_title">Touches vibrantes</string>
|
<string name="keyboard_key_vibrate_title">Vibration des touches</string>
|
||||||
<string name="keyboard_key_sound_title">Appui clavier audible</string>
|
<string name="keyboard_key_sound_title">Son de pression des touches</string>
|
||||||
<string name="keyboard_change">Changement de clavier</string>
|
<string name="keyboard_change">Changement de clavier</string>
|
||||||
<string name="keyboard_previous_database_credentials_title">Écran des identifications de la base de données</string>
|
<string name="keyboard_previous_database_credentials_title">Écran d\'authentification de la base de données</string>
|
||||||
<string name="keyboard_previous_database_credentials_summary">Revenir automatiquement au clavier précédent sur l’écran des identifications de la base de données</string>
|
<string name="keyboard_previous_database_credentials_summary">Revenir automatiquement au clavier précédent sur l’écran d\'authentification de la base de données</string>
|
||||||
<string name="keyboard_previous_fill_in_title">Action de touche automatique</string>
|
<string name="keyboard_previous_fill_in_title">Action de touche automatique</string>
|
||||||
<string name="keyboard_previous_fill_in_summary">Revenir automatiquement au clavier précédent après avoir exécuté « Action de touche automatique »</string>
|
<string name="keyboard_previous_fill_in_summary">Revenir automatiquement au clavier précédent après avoir exécuté \"Action de touche automatique\"</string>
|
||||||
<string name="selection_mode">Mode sélection</string>
|
<string name="selection_mode">Mode sélection</string>
|
||||||
<string name="do_not_kill_app">Veuillez ne pas tuer l’application…</string>
|
<string name="do_not_kill_app">Veuillez ne pas tuer l’application…</string>
|
||||||
<string name="lock_database_back_root_title">Appuyer sur « Retour » pour verrouiller</string>
|
<string name="lock_database_back_root_title">Appuyer sur \"Retour\" pour verrouiller</string>
|
||||||
<string name="lock_database_back_root_summary">Verrouille la base de données lorsque l’utilisateur clique sur le bouton retour de l’écran racine</string>
|
<string name="lock_database_back_root_summary">Verrouille la base de données lorsque l’utilisateur clique sur le bouton retour de l’écran racine</string>
|
||||||
<string name="clear_clipboard_notification_title">Suppression à la fermeture</string>
|
<string name="clear_clipboard_notification_title">Suppression à la fermeture</string>
|
||||||
<string name="clear_clipboard_notification_summary">Verrouille la base de données lorsque la durée du presse-papier expire ou que la notification est fermée après avoir commencé à l’utiliser</string>
|
<string name="clear_clipboard_notification_summary">Verrouille la base de données lorsque la durée du presse-papier expire ou que la notification est fermée après avoir commencé à l’utiliser</string>
|
||||||
<string name="recycle_bin">Corbeille</string>
|
<string name="recycle_bin">Corbeille</string>
|
||||||
<string name="keyboard_selection_entry_title">Sélection de l’entrée</string>
|
<string name="keyboard_selection_entry_title">Sélection de l’entrée</string>
|
||||||
<string name="keyboard_selection_entry_summary">Affiche les champs de saisie dans le Magiclavier lors de l’affichage d’une entrée</string>
|
<string name="keyboard_selection_entry_summary">Lors de la sélection d\'une entrée dans KeePassDX, rendre cette entrée disponible dans le Magiclavier</string>
|
||||||
<string name="delete_entered_password_title">Supprimer le mot de passe</string>
|
<string name="delete_entered_password_title">Supprimer le mot de passe</string>
|
||||||
<string name="delete_entered_password_summary">Supprime le mot de passe saisi après une tentative de connexion à une base de données</string>
|
<string name="delete_entered_password_summary">Supprime le mot de passe saisi après une tentative de connexion à une base de données</string>
|
||||||
<string name="content_description_open_file">Ouvrir le fichier</string>
|
<string name="content_description_open_file">Ouvrir le fichier</string>
|
||||||
@@ -382,7 +382,7 @@
|
|||||||
<string name="menu_security_settings">Paramètres de sécurité</string>
|
<string name="menu_security_settings">Paramètres de sécurité</string>
|
||||||
<string name="menu_master_key_settings">Paramètres de la clé maîtresse</string>
|
<string name="menu_master_key_settings">Paramètres de la clé maîtresse</string>
|
||||||
<string name="contains_duplicate_uuid">La base de données contient des doublons d’UUID.</string>
|
<string name="contains_duplicate_uuid">La base de données contient des doublons d’UUID.</string>
|
||||||
<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="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="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="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 avancé pour ouvrir plus facilement une base de données</string>
|
<string name="advanced_unlock_explanation_summary">Utiliser le déverrouillage avancé pour ouvrir plus facilement une base de données</string>
|
||||||
@@ -408,21 +408,21 @@
|
|||||||
<string name="menu_save_database">Enregistrer la base de données</string>
|
<string name="menu_save_database">Enregistrer la base de données</string>
|
||||||
<string name="menu_empty_recycle_bin">Vider la corbeille</string>
|
<string name="menu_empty_recycle_bin">Vider la corbeille</string>
|
||||||
<string name="command_execution">Exécution de la commande…</string>
|
<string name="command_execution">Exécution de la commande…</string>
|
||||||
<string name="warning_permanently_delete_nodes">Supprimer définitivement les nœuds sélectionnés \?</string>
|
<string name="warning_permanently_delete_nodes">Supprimer définitivement les nœuds sélectionnés \?</string>
|
||||||
<string name="keystore_not_accessible">Le magasin de clés n’est pas correctement initialisé.</string>
|
<string name="keystore_not_accessible">Le magasin de clés n’est pas correctement initialisé.</string>
|
||||||
<string name="recycle_bin_group_title">Groupe de la corbeille</string>
|
<string name="recycle_bin_group_title">Groupe de la corbeille</string>
|
||||||
<string name="enable_auto_save_database_title">Enregistrement automatique de la base de données</string>
|
<string name="enable_auto_save_database_title">Enregistrement automatique de la base de données</string>
|
||||||
<string name="enable_auto_save_database_summary">Enregistre la base de données après chaque action importante (en mode « Modifiable »)</string>
|
<string name="enable_auto_save_database_summary">Enregistre la base de données après chaque action importante (en mode \"Modifiable\")</string>
|
||||||
<string name="entry_attachments">Attachements</string>
|
<string name="entry_attachments">Attachements</string>
|
||||||
<string name="menu_restore_entry_history">Restaurer l’historique</string>
|
<string name="menu_restore_entry_history">Restaurer l’historique</string>
|
||||||
<string name="menu_delete_entry_history">Effacer l’historique</string>
|
<string name="menu_delete_entry_history">Effacer l’historique</string>
|
||||||
<string name="keyboard_auto_go_action_title">Action de touche automatique</string>
|
<string name="keyboard_auto_go_action_title">Action de touche automatique</string>
|
||||||
<string name="keyboard_auto_go_action_summary">Action de la touche « Go » après avoir appuyé sur une touche « Champ »</string>
|
<string name="keyboard_auto_go_action_summary">Effectuer l\'action de la touche \"Go\" automatiquement après avoir appuyé sur une touche \"Champ\" du clavier</string>
|
||||||
<string name="download_attachment">Téléchargement %1$s</string>
|
<string name="download_attachment">Téléchargement %1$s</string>
|
||||||
<string name="download_initialization">Initialisation…</string>
|
<string name="download_initialization">Initialisation…</string>
|
||||||
<string name="download_progression">En cours : %1$d%%</string>
|
<string name="download_progression">En cours : %1$d%%</string>
|
||||||
<string name="download_finalization">Finalisation…</string>
|
<string name="download_finalization">Finalisation…</string>
|
||||||
<string name="download_complete">Terminé !</string>
|
<string name="download_complete">Terminé !</string>
|
||||||
<string name="hide_expired_entries_title">Masquer les entrées expirées</string>
|
<string name="hide_expired_entries_title">Masquer les entrées expirées</string>
|
||||||
<string name="hide_expired_entries_summary">Les entrées expirées ne sont pas affichées</string>
|
<string name="hide_expired_entries_summary">Les entrées expirées ne sont pas affichées</string>
|
||||||
<string name="contact">Contact</string>
|
<string name="contact">Contact</string>
|
||||||
@@ -444,7 +444,7 @@
|
|||||||
<string name="error_create_database">Impossible de créer le fichier de base de données.</string>
|
<string name="error_create_database">Impossible de créer le fichier de base de données.</string>
|
||||||
<string name="entry_add_attachment">Ajouter une pièce jointe</string>
|
<string name="entry_add_attachment">Ajouter une pièce jointe</string>
|
||||||
<string name="discard">Abandonner</string>
|
<string name="discard">Abandonner</string>
|
||||||
<string name="discard_changes">Abandonner les modifications \?</string>
|
<string name="discard_changes">Abandonner les modifications \?</string>
|
||||||
<string name="validate">Valider</string>
|
<string name="validate">Valider</string>
|
||||||
<string name="autofill_auto_search_summary">Suggérer automatiquement des résultats de recherche à partir du domaine Web ou de l’identifiant de l’application</string>
|
<string name="autofill_auto_search_summary">Suggérer automatiquement des résultats de recherche à partir du domaine Web ou de l’identifiant de l’application</string>
|
||||||
<string name="autofill_auto_search_title">Recherche automatique</string>
|
<string name="autofill_auto_search_title">Recherche automatique</string>
|
||||||
@@ -459,7 +459,7 @@
|
|||||||
<string name="autofill_web_domain_blocklist_title">Liste de blocage de domaine Web</string>
|
<string name="autofill_web_domain_blocklist_title">Liste de blocage de domaine Web</string>
|
||||||
<string name="autofill_application_id_blocklist_summary">Liste de blocage qui empêche le remplissage automatique des applications</string>
|
<string name="autofill_application_id_blocklist_summary">Liste de blocage qui empêche le remplissage automatique des applications</string>
|
||||||
<string name="autofill_application_id_blocklist_title">Liste de blocage d’application</string>
|
<string name="autofill_application_id_blocklist_title">Liste de blocage d’application</string>
|
||||||
<string name="keyboard_search_share_summary">Recherche automatiquement les informations partagées pour remplir le clavier</string>
|
<string name="keyboard_search_share_summary">Lorsqu\'une adresse web est partagée avec KeePassDX, filtrer automatiquement les entrées contenant le domaine</string>
|
||||||
<string name="keyboard_search_share_title">Rechercher les informations partagées</string>
|
<string name="keyboard_search_share_title">Rechercher les informations partagées</string>
|
||||||
<string name="filter">Filtre</string>
|
<string name="filter">Filtre</string>
|
||||||
<string name="subdomain_search_summary">Recherche des domaines Web avec des contraintes de sous-domaines</string>
|
<string name="subdomain_search_summary">Recherche des domaines Web avec des contraintes de sous-domaines</string>
|
||||||
@@ -469,7 +469,7 @@
|
|||||||
<string name="upload_attachment">Téléverser %1$s</string>
|
<string name="upload_attachment">Téléverser %1$s</string>
|
||||||
<string name="education_add_attachment_summary">Téléverse une pièce-jointe à votre entrée pour enregistrer d’importantes données externes.</string>
|
<string name="education_add_attachment_summary">Téléverse une pièce-jointe à votre entrée pour enregistrer d’importantes données externes.</string>
|
||||||
<string name="education_add_attachment_title">Ajouter une pièce-jointe</string>
|
<string name="education_add_attachment_title">Ajouter une pièce-jointe</string>
|
||||||
<string name="warning_sure_add_file">Ajouter quand même le fichier \?</string>
|
<string name="warning_sure_add_file">Ajouter quand même le fichier \?</string>
|
||||||
<string name="warning_replace_file">Téléverser ce fichier va remplacer celui en place.</string>
|
<string name="warning_replace_file">Téléverser ce fichier va remplacer celui en place.</string>
|
||||||
<string name="warning_file_too_big">Une base de données KeePass est seulement censée contenir de petits fichiers utilitaires (tels que les fichiers clé PGP).
|
<string name="warning_file_too_big">Une base de données KeePass est seulement censée contenir de petits fichiers utilitaires (tels que les fichiers clé PGP).
|
||||||
\n
|
\n
|
||||||
@@ -493,7 +493,7 @@
|
|||||||
<string name="autofill_close_database_title">Fermer la base de données</string>
|
<string name="autofill_close_database_title">Fermer la base de données</string>
|
||||||
<string name="keyboard_previous_lock_summary">Revient automatiquement au clavier précédent après le verrouillage de la base de données</string>
|
<string name="keyboard_previous_lock_summary">Revient automatiquement au clavier précédent après le verrouillage de la base de données</string>
|
||||||
<string name="keyboard_previous_lock_title">Verrouiller la base de données</string>
|
<string name="keyboard_previous_lock_title">Verrouiller la base de données</string>
|
||||||
<string name="keyboard_save_search_info_summary">Essayer d’enregistrer les informations partagées lors de la sélection manuelle d’une entrée</string>
|
<string name="keyboard_save_search_info_summary">Essayer d’enregistrer l\'association entre une adresse web partagée à KeePassDX et l\'entrée sélectionnée manuellement</string>
|
||||||
<string name="keyboard_save_search_info_title">Enregistrer les infos partagées</string>
|
<string name="keyboard_save_search_info_title">Enregistrer les infos partagées</string>
|
||||||
<string name="notification">Notification</string>
|
<string name="notification">Notification</string>
|
||||||
<string name="biometric_security_update_required">Mise à jour de sécurité biométrique requise.</string>
|
<string name="biometric_security_update_required">Mise à jour de sécurité biométrique requise.</string>
|
||||||
@@ -536,7 +536,7 @@
|
|||||||
<string name="error_rebuild_list">Impossible de reconstruire correctement la liste.</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>
|
<string name="error_database_uri_null">L\'URI de la base de données ne peut pas être récupéré.</string>
|
||||||
<string name="autofill_inline_suggestions_keyboard">Suggestions de remplissage automatique ajoutées.</string>
|
<string name="autofill_inline_suggestions_keyboard">Suggestions de remplissage automatique ajoutées.</string>
|
||||||
<string name="autofill_inline_suggestions_summary">Tente d\'afficher des suggestions de remplissage automatique directement à partir d\'un clavier compatible</string>
|
<string name="autofill_inline_suggestions_summary">Tente d\'afficher des suggestions de remplissage automatique dans la barre de suggestions des claviers compatibles</string>
|
||||||
<string name="autofill_inline_suggestions_title">Suggestions en ligne</string>
|
<string name="autofill_inline_suggestions_title">Suggestions en ligne</string>
|
||||||
<string name="warning_database_info_changed_options">Écraser les modifications externes en sauvegardant la base de données ou recharger-la avec les dernières modifications.</string>
|
<string name="warning_database_info_changed_options">Écraser les modifications externes en sauvegardant la base de données ou recharger-la avec les dernières modifications.</string>
|
||||||
<string name="warning_database_revoked">Accès au dossier révoqué par le gestionnaire de fichiers, fermer la base de données et la rouvrir à partir de son emplacement.</string>
|
<string name="warning_database_revoked">Accès au dossier révoqué par le gestionnaire de fichiers, fermer la base de données et la rouvrir à partir de son emplacement.</string>
|
||||||
@@ -547,7 +547,7 @@
|
|||||||
<string name="unit_kibibyte">Kibioctets</string>
|
<string name="unit_kibibyte">Kibioctets</string>
|
||||||
<string name="unit_byte">Octets</string>
|
<string name="unit_byte">Octets</string>
|
||||||
<string name="error_otp_type">Le type OTP existant n\'est pas reconnu par ce formulaire, sa validation peut ne plus générer correctement le jeton.</string>
|
<string name="error_otp_type">Le type OTP existant n\'est pas reconnu par ce formulaire, sa validation peut ne plus générer correctement le jeton.</string>
|
||||||
<string name="download_canceled">Annulé !</string>
|
<string name="download_canceled">Annulé !</string>
|
||||||
<string name="icon_section_custom">Customisé</string>
|
<string name="icon_section_custom">Customisé</string>
|
||||||
<string name="icon_section_standard">Standard</string>
|
<string name="icon_section_standard">Standard</string>
|
||||||
<string name="style_brightness_summary">Sélectionnez des thèmes clairs ou foncés</string>
|
<string name="style_brightness_summary">Sélectionnez des thèmes clairs ou foncés</string>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
-->
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<string name="feedback">प्रतिक्रिया</string>
|
<string name="feedback">प्प्रतिपुष्टिा</string>
|
||||||
<string name="homepage">होमपेज</string>
|
<string name="homepage">होमपेज</string>
|
||||||
<string name="about_description">एंड्रॉयड पर आधारित KeePass पासवर्ड मैनेजर</string>
|
<string name="about_description">एंड्रॉयड पर आधारित KeePass पासवर्ड मैनेजर</string>
|
||||||
<string name="accept">स्वीकार</string>
|
<string name="accept">स्वीकार</string>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
<string name="extended_ASCII">विस्तारित ASCII</string>
|
<string name="extended_ASCII">विस्तारित ASCII</string>
|
||||||
<string name="allow">अनुमति दें</string>
|
<string name="allow">अनुमति दें</string>
|
||||||
<string name="clipboard_cleared">क्लिपबोर्ड साफ कर दिया</string>
|
<string name="clipboard_cleared">क्लिपबोर्ड साफ कर दिया</string>
|
||||||
<string name="clipboard_error_title">क्लिपबोर्ड त्रुटि</string>
|
<string name="clipboard_error_title">क्लिपबोर्ड एरर</string>
|
||||||
<string name="clipboard_error">सैमसंग के कुछ एंड्रॉइड फोन क्लिपबोर्ड का उपयोग नहीं करने देंगे।</string>
|
<string name="clipboard_error">सैमसंग के कुछ एंड्रॉइड फोन क्लिपबोर्ड का उपयोग नहीं करने देंगे।</string>
|
||||||
<string name="clipboard_error_clear">क्लिपबोर्ड को साफ़ नहीं किया जा सका</string>
|
<string name="clipboard_error_clear">क्लिपबोर्ड को साफ़ नहीं किया जा सका</string>
|
||||||
<string name="clipboard_timeout">क्लिपबोर्ड टाइमआउट</string>
|
<string name="clipboard_timeout">क्लिपबोर्ड टाइमआउट</string>
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
<string name="otp_counter">काउंटर</string>
|
<string name="otp_counter">काउंटर</string>
|
||||||
<string name="otp_digits">अंक</string>
|
<string name="otp_digits">अंक</string>
|
||||||
<string name="otp_algorithm">एल्गोरिथ्म</string>
|
<string name="otp_algorithm">एल्गोरिथ्म</string>
|
||||||
<string name="entry_otp">OTP</string>
|
<string name="entry_otp">ओटीप</string>
|
||||||
<string name="error_invalid_OTP">अमान्य ओटीपी गुप्त।</string>
|
<string name="error_invalid_OTP">अमान्य ओटीपी गुप्त।</string>
|
||||||
<string name="error_disallow_no_credentials">कम से कम एक क्रेडेंशियल सेट किया जाना चाहिए।</string>
|
<string name="error_disallow_no_credentials">कम से कम एक क्रेडेंशियल सेट किया जाना चाहिए।</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -160,7 +160,7 @@
|
|||||||
<string name="extended_ASCII">ASCII Diperluas</string>
|
<string name="extended_ASCII">ASCII Diperluas</string>
|
||||||
<string name="brackets">Tanda Kurung</string>
|
<string name="brackets">Tanda Kurung</string>
|
||||||
<string name="application">Aplikasi</string>
|
<string name="application">Aplikasi</string>
|
||||||
<string name="app_timeout">Batas Waktu Aplikasi</string>
|
<string name="app_timeout">Waktu habis</string>
|
||||||
<string name="key_derivation_function">Fungsi Derivasi Kunci</string>
|
<string name="key_derivation_function">Fungsi Derivasi Kunci</string>
|
||||||
<string name="encryption_algorithm">Algoritma Enkripsi</string>
|
<string name="encryption_algorithm">Algoritma Enkripsi</string>
|
||||||
<string name="encryption">Enkripsi</string>
|
<string name="encryption">Enkripsi</string>
|
||||||
@@ -384,4 +384,18 @@
|
|||||||
<string name="error_upload_file">Timbul galat saat mengunggah data berkas.</string>
|
<string name="error_upload_file">Timbul galat saat mengunggah data berkas.</string>
|
||||||
<string name="error_file_to_big">File yang Anda unggah terlalu besar.</string>
|
<string name="error_file_to_big">File yang Anda unggah terlalu besar.</string>
|
||||||
<string name="content_description_otp_information">Info sandi satu kali</string>
|
<string name="content_description_otp_information">Info sandi satu kali</string>
|
||||||
|
<string name="education_select_database_title">Buka basisdata yang sudah ada</string>
|
||||||
|
<string name="enable_auto_save_database_title">Simpan otomatis basisdata</string>
|
||||||
|
<string name="education_new_node_title">Tambah item ke basisdata anda</string>
|
||||||
|
<string name="education_entry_edit_title">Sunting entri</string>
|
||||||
|
<string name="education_create_database_title">Buat berkas basisdata anda</string>
|
||||||
|
<string name="delete_entered_password_title">Hapus kata sandi</string>
|
||||||
|
<string name="education_sort_title">Pengurutan item</string>
|
||||||
|
<string name="html_text_dev_feature_thanks">Terima kasih banyak atas kontribusinya.</string>
|
||||||
|
<string name="html_text_dev_feature_contibute">Dengan <strong>berkontribusi</strong>,</string>
|
||||||
|
<string name="education_lock_title">Kunci basisdata</string>
|
||||||
|
<string name="education_unlock_title">Buka basisdata anda</string>
|
||||||
|
<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>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -177,7 +177,7 @@
|
|||||||
<string name="field_name">Nome do campo</string>
|
<string name="field_name">Nome do campo</string>
|
||||||
<string name="error_autofill_enable_service">Não pôde ser ativado o serviço de preenchimento automático.</string>
|
<string name="error_autofill_enable_service">Não pôde ser ativado o serviço de preenchimento automático.</string>
|
||||||
<string name="error_wrong_length">Digite um número inteiro positivo no campo \"Tamanho\".</string>
|
<string name="error_wrong_length">Digite um número inteiro positivo no campo \"Tamanho\".</string>
|
||||||
<string name="error_string_key">Um nome do campo é necessário para cada string.</string>
|
<string name="error_string_key">Um nome do campo é necessário para cada cadeia.</string>
|
||||||
<string name="error_rounds_too_large">\"Número de rodadas\" é muito grande. Modificado para 2147483648.</string>
|
<string name="error_rounds_too_large">\"Número de rodadas\" é muito grande. Modificado para 2147483648.</string>
|
||||||
<string name="error_pass_match">As palavras-passe não coincidem.</string>
|
<string name="error_pass_match">As palavras-passe não coincidem.</string>
|
||||||
<string name="error_pass_gen_type">Pelo menos um tipo de geração de palavra-chave deve ser selecionado.</string>
|
<string name="error_pass_gen_type">Pelo menos um tipo de geração de palavra-chave deve ser selecionado.</string>
|
||||||
@@ -255,7 +255,7 @@
|
|||||||
<string name="auto_focus_search_summary">Solicitar uma pesquisa quando abrir a base de dados</string>
|
<string name="auto_focus_search_summary">Solicitar uma pesquisa quando abrir a base de dados</string>
|
||||||
<string name="auto_focus_search_title">Pesquisa rápida</string>
|
<string name="auto_focus_search_title">Pesquisa rápida</string>
|
||||||
<string name="omit_backup_search_summary">Omite os grupos \"Backup\" e \"Cesto da reciclagem\" dos resultados da busca</string>
|
<string name="omit_backup_search_summary">Omite os grupos \"Backup\" e \"Cesto da reciclagem\" dos resultados da busca</string>
|
||||||
<string name="omit_backup_search_title">Não procurar por entradas no backup ou na lixeira</string>
|
<string name="omit_backup_search_title">Não procurar por entradas no backup ou no lixo</string>
|
||||||
<string name="about">Sobre</string>
|
<string name="about">Sobre</string>
|
||||||
<string name="hide_password_summary">Mascarar palavras-passe (***) por predefinição</string>
|
<string name="hide_password_summary">Mascarar palavras-passe (***) por predefinição</string>
|
||||||
<string name="hide_password_title">Esconder palavras-passe</string>
|
<string name="hide_password_title">Esconder palavras-passe</string>
|
||||||
@@ -452,7 +452,7 @@
|
|||||||
<string name="add_group">Adicionar grupo</string>
|
<string name="add_group">Adicionar grupo</string>
|
||||||
<string name="add_entry">Adicionar entrada</string>
|
<string name="add_entry">Adicionar entrada</string>
|
||||||
<string name="accept">Aceitar</string>
|
<string name="accept">Aceitar</string>
|
||||||
<string name="device_credential">Credencial do dispositivo</string>
|
<string name="device_credential">Credencial do aparelho</string>
|
||||||
<string name="advanced_unlock_prompt_not_initialized">Incapaz de inicializar o desbloqueio antecipado.</string>
|
<string name="advanced_unlock_prompt_not_initialized">Incapaz de inicializar o desbloqueio antecipado.</string>
|
||||||
<string name="advanced_unlock_scanning_error">Erro de desbloqueio avançado: %1$s</string>
|
<string name="advanced_unlock_scanning_error">Erro de desbloqueio avançado: %1$s</string>
|
||||||
<string name="advanced_unlock_not_recognized">Não conseguia reconhecer impressão de desbloqueio avançado</string>
|
<string name="advanced_unlock_not_recognized">Não conseguia reconhecer impressão de desbloqueio avançado</string>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
<string name="clipboard_error_clear">Не удалось очистить буфер обмена</string>
|
<string name="clipboard_error_clear">Не удалось очистить буфер обмена</string>
|
||||||
<string name="clipboard_timeout">Задержка очистки буфера обмена</string>
|
<string name="clipboard_timeout">Задержка очистки буфера обмена</string>
|
||||||
<string name="clipboard_timeout_summary">Продолжительность хранения в буфере обмена (если поддерживается устройством)</string>
|
<string name="clipboard_timeout_summary">Продолжительность хранения в буфере обмена (если поддерживается устройством)</string>
|
||||||
<string name="select_to_copy">Выберите %1$s для копирования в буфер обмена</string>
|
<string name="select_to_copy">Нажатие скопирует «%1$s» в буфер</string>
|
||||||
<string name="retrieving_db_key">Получение ключа базы…</string>
|
<string name="retrieving_db_key">Получение ключа базы…</string>
|
||||||
<string name="database">База</string>
|
<string name="database">База</string>
|
||||||
<string name="decrypting_db">Расшифровка базы…</string>
|
<string name="decrypting_db">Расшифровка базы…</string>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<string name="save">Сохранить</string>
|
<string name="save">Сохранить</string>
|
||||||
<string name="entry_title">Название</string>
|
<string name="entry_title">Название</string>
|
||||||
<string name="entry_url">Ссылка</string>
|
<string name="entry_url">Ссылка</string>
|
||||||
<string name="entry_user_name">Имя пользователя</string>
|
<string name="entry_user_name">Пользователь</string>
|
||||||
<string name="error_arc4">Потоковый шифр Arcfour не поддерживается.</string>
|
<string name="error_arc4">Потоковый шифр Arcfour не поддерживается.</string>
|
||||||
<string name="error_can_not_handle_uri">Невозможно обработать указанный URI в KeePassDX.</string>
|
<string name="error_can_not_handle_uri">Невозможно обработать указанный URI в KeePassDX.</string>
|
||||||
<string name="error_file_not_create">Невозможно создать файл</string>
|
<string name="error_file_not_create">Невозможно создать файл</string>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
<string name="app_timeout">延时</string>
|
<string name="app_timeout">延时</string>
|
||||||
<string name="app_timeout_summary">在锁定数据库前处于非活动状态的时长</string>
|
<string name="app_timeout_summary">在锁定数据库前处于非活动状态的时长</string>
|
||||||
<string name="application">应用</string>
|
<string name="application">应用</string>
|
||||||
<string name="menu_app_settings">程序设置</string>
|
<string name="menu_app_settings">应用设置</string>
|
||||||
<string name="brackets">括号</string>
|
<string name="brackets">括号</string>
|
||||||
<string name="file_manager_install_description">需要一款接受意图操作 ACTION_CREATE_DOCUMENT 和 ACTION_OPEN_DOCUMENT 的文件管理器来创建、打开和保存数据库文件。</string>
|
<string name="file_manager_install_description">需要一款接受意图操作 ACTION_CREATE_DOCUMENT 和 ACTION_OPEN_DOCUMENT 的文件管理器来创建、打开和保存数据库文件。</string>
|
||||||
<string name="clipboard_cleared">剪贴板已清空</string>
|
<string name="clipboard_cleared">剪贴板已清空</string>
|
||||||
@@ -46,14 +46,14 @@
|
|||||||
<string name="entry_cancel">取消</string>
|
<string name="entry_cancel">取消</string>
|
||||||
<string name="entry_notes">备注</string>
|
<string name="entry_notes">备注</string>
|
||||||
<string name="entry_confpassword">确认密码</string>
|
<string name="entry_confpassword">确认密码</string>
|
||||||
<string name="entry_created">新建时间</string>
|
<string name="entry_created">创建时间</string>
|
||||||
<string name="entry_expires">过期时间</string>
|
<string name="entry_expires">过期时间</string>
|
||||||
<string name="entry_keyfile">密钥文件</string>
|
<string name="entry_keyfile">密钥文件</string>
|
||||||
<string name="entry_modified">修改时间</string>
|
<string name="entry_modified">修改时间</string>
|
||||||
<string name="entry_password">密码</string>
|
<string name="entry_password">密码</string>
|
||||||
<string name="save">保存</string>
|
<string name="save">保存</string>
|
||||||
<string name="entry_title">名称</string>
|
<string name="entry_title">名称</string>
|
||||||
<string name="entry_url">链接</string>
|
<string name="entry_url">网址</string>
|
||||||
<string name="entry_user_name">用户名</string>
|
<string name="entry_user_name">用户名</string>
|
||||||
<string name="error_arc4">不支持Arcfour流式加密。</string>
|
<string name="error_arc4">不支持Arcfour流式加密。</string>
|
||||||
<string name="error_can_not_handle_uri">无法在KeePassDX中处理此URI。</string>
|
<string name="error_can_not_handle_uri">无法在KeePassDX中处理此URI。</string>
|
||||||
@@ -96,11 +96,11 @@
|
|||||||
<string name="menu_lock">锁定数据库</string>
|
<string name="menu_lock">锁定数据库</string>
|
||||||
<string name="menu_open">打开</string>
|
<string name="menu_open">打开</string>
|
||||||
<string name="menu_search">搜索</string>
|
<string name="menu_search">搜索</string>
|
||||||
<string name="menu_url">打开链接</string>
|
<string name="menu_url">打开网址</string>
|
||||||
<string name="minus">减号</string>
|
<string name="minus">减号</string>
|
||||||
<string name="never">从不</string>
|
<string name="never">从不</string>
|
||||||
<string name="no_results">没有搜索结果</string>
|
<string name="no_results">没有搜索结果</string>
|
||||||
<string name="no_url_handler">需要安装网络浏览器才能打开这个URL。</string>
|
<string name="no_url_handler">需要安装网络浏览器才能打开这个网址。</string>
|
||||||
<string name="progress_create">正在新建数据库…</string>
|
<string name="progress_create">正在新建数据库…</string>
|
||||||
<string name="progress_title">正在处理…</string>
|
<string name="progress_title">正在处理…</string>
|
||||||
<string name="content_description_remove_from_list">移除</string>
|
<string name="content_description_remove_from_list">移除</string>
|
||||||
@@ -128,14 +128,14 @@
|
|||||||
<string name="extended_ASCII">ASCII拓展区字符</string>
|
<string name="extended_ASCII">ASCII拓展区字符</string>
|
||||||
<string name="allow">允许</string>
|
<string name="allow">允许</string>
|
||||||
<string name="clipboard_error_title">剪切板错误</string>
|
<string name="clipboard_error_title">剪切板错误</string>
|
||||||
<string name="clipboard_error">一些设备不允许程序使用剪切板。</string>
|
<string name="clipboard_error">某些设备不允许应用程序使用剪贴板。</string>
|
||||||
<string name="clipboard_error_clear">无法清空剪切板</string>
|
<string name="clipboard_error_clear">无法清空剪切板</string>
|
||||||
<string name="style_choose_title">主题</string>
|
<string name="style_choose_title">主题</string>
|
||||||
<string name="icon_pack_choose_title">图标包</string>
|
<string name="icon_pack_choose_title">图标包</string>
|
||||||
<string name="icon_pack_choose_summary">程序中使用的图标包</string>
|
<string name="icon_pack_choose_summary">程序中使用的图标包</string>
|
||||||
<string name="edit_entry">编辑条目</string>
|
<string name="edit_entry">编辑条目</string>
|
||||||
<string name="key_derivation_function">密钥推导函数</string>
|
<string name="key_derivation_function">密钥推导函数</string>
|
||||||
<string name="entry_not_found">找不到条目。</string>
|
<string name="entry_not_found">找不到条目数据。</string>
|
||||||
<string name="error_load_database">无法加载数据库。</string>
|
<string name="error_load_database">无法加载数据库。</string>
|
||||||
<string name="error_load_database_KDF_memory">无法加载密钥。尝试降低KDF的“内存使用”值。</string>
|
<string name="error_load_database_KDF_memory">无法加载密钥。尝试降低KDF的“内存使用”值。</string>
|
||||||
<string name="error_autofill_enable_service">无法启用自动填充服务。</string>
|
<string name="error_autofill_enable_service">无法启用自动填充服务。</string>
|
||||||
@@ -153,10 +153,10 @@
|
|||||||
<string name="menu_file_selection_read_only">只读</string>
|
<string name="menu_file_selection_read_only">只读</string>
|
||||||
<string name="menu_open_file_read_and_write">可修改</string>
|
<string name="menu_open_file_read_and_write">可修改</string>
|
||||||
<string name="omit_backup_search_title">搜索时忽略备份条目</string>
|
<string name="omit_backup_search_title">搜索时忽略备份条目</string>
|
||||||
<string name="omit_backup_search_summary">搜索时忽略“备份”与“回收站”群组</string>
|
<string name="omit_backup_search_summary">从搜索结果中忽略“备份”和“回收站”群组</string>
|
||||||
<string name="protection">保护</string>
|
<string name="protection">保护</string>
|
||||||
<string name="read_only">只读</string>
|
<string name="read_only">只读</string>
|
||||||
<string name="read_only_warning">KeePassDX需要写入权限以修改数据库。</string>
|
<string name="read_only_warning">根据您的文件管理器,KeePassDX 可能不允许在您的存储中写入数据。</string>
|
||||||
<string name="show_recent_files_title">最近文件历史</string>
|
<string name="show_recent_files_title">最近文件历史</string>
|
||||||
<string name="show_recent_files_summary">记住最近使用的文件名</string>
|
<string name="show_recent_files_summary">记住最近使用的文件名</string>
|
||||||
<string name="encryption_explanation">加密所有数据时采用的算法。</string>
|
<string name="encryption_explanation">加密所有数据时采用的算法。</string>
|
||||||
@@ -178,8 +178,8 @@
|
|||||||
<string name="menu_appearance_settings">外观</string>
|
<string name="menu_appearance_settings">外观</string>
|
||||||
<string name="general">常规</string>
|
<string name="general">常规</string>
|
||||||
<string name="autofill">自动填充</string>
|
<string name="autofill">自动填充</string>
|
||||||
<string name="autofill_service_name">使用KeePassDX自动填充</string>
|
<string name="autofill_service_name">KeePassDX 自动填充</string>
|
||||||
<string name="autofill_sign_in_prompt">使用KeePassDX密码登录</string>
|
<string name="autofill_sign_in_prompt">使用 KeePassDX 登录</string>
|
||||||
<string name="clipboard">剪贴板</string>
|
<string name="clipboard">剪贴板</string>
|
||||||
<string name="clipboard_notifications_title">剪贴板通知</string>
|
<string name="clipboard_notifications_title">剪贴板通知</string>
|
||||||
<string name="lock">锁定</string>
|
<string name="lock">锁定</string>
|
||||||
@@ -317,7 +317,7 @@
|
|||||||
<string name="keyboard_selection_entry_title">条目选择</string>
|
<string name="keyboard_selection_entry_title">条目选择</string>
|
||||||
<string name="keyboard_selection_entry_summary">在查看条目时,在专用键盘中显示输入字段</string>
|
<string name="keyboard_selection_entry_summary">在查看条目时,在专用键盘中显示输入字段</string>
|
||||||
<string name="delete_entered_password_title">删除密码</string>
|
<string name="delete_entered_password_title">删除密码</string>
|
||||||
<string name="delete_entered_password_summary">在连接数据库尝试后删除输入的密码</string>
|
<string name="delete_entered_password_summary">在尝试连接数据库后删除输入的密码</string>
|
||||||
<string name="content_description_open_file">打开文件</string>
|
<string name="content_description_open_file">打开文件</string>
|
||||||
<string name="content_description_node_children">子节点</string>
|
<string name="content_description_node_children">子节点</string>
|
||||||
<string name="content_description_add_node">增加节点</string>
|
<string name="content_description_add_node">增加节点</string>
|
||||||
@@ -334,7 +334,7 @@
|
|||||||
<string name="content_description_remove_field">删除字段</string>
|
<string name="content_description_remove_field">删除字段</string>
|
||||||
<string name="entry_UUID">UUID</string>
|
<string name="entry_UUID">UUID</string>
|
||||||
<string name="error_move_entry_here">无法移动条目到此处。</string>
|
<string name="error_move_entry_here">无法移动条目到此处。</string>
|
||||||
<string name="error_copy_entry_here">无法复制条目到此处。</string>
|
<string name="error_copy_entry_here">您不能在此处复制条目。</string>
|
||||||
<string name="list_groups_show_number_entries_title">显示条目数量</string>
|
<string name="list_groups_show_number_entries_title">显示条目数量</string>
|
||||||
<string name="list_groups_show_number_entries_summary">显示群组中的条目数</string>
|
<string name="list_groups_show_number_entries_summary">显示群组中的条目数</string>
|
||||||
<string name="content_description_background">背景</string>
|
<string name="content_description_background">背景</string>
|
||||||
@@ -350,17 +350,17 @@
|
|||||||
<string name="master_key">主密钥</string>
|
<string name="master_key">主密钥</string>
|
||||||
<string name="security">安全</string>
|
<string name="security">安全</string>
|
||||||
<string name="entry_history">历史</string>
|
<string name="entry_history">历史</string>
|
||||||
<string name="entry_setup_otp">设置一次性密码</string>
|
<string name="entry_setup_otp">设置 OTP</string>
|
||||||
<string name="otp_type">一次性密码类型</string>
|
<string name="otp_type">OTP 类型</string>
|
||||||
<string name="otp_secret">密钥</string>
|
<string name="otp_secret">密钥</string>
|
||||||
<string name="otp_period">时长(秒)</string>
|
<string name="otp_period">时长(秒)</string>
|
||||||
<string name="otp_counter">计数器</string>
|
<string name="otp_counter">计数器</string>
|
||||||
<string name="otp_digits">数字位数</string>
|
<string name="otp_digits">数字位数</string>
|
||||||
<string name="otp_algorithm">算法</string>
|
<string name="otp_algorithm">算法</string>
|
||||||
<string name="entry_otp">一次性密码</string>
|
<string name="entry_otp">OTP</string>
|
||||||
<string name="error_invalid_OTP">错误的一次性密码密钥。</string>
|
<string name="error_invalid_OTP">错误的一次性密码密钥。</string>
|
||||||
<string name="error_disallow_no_credentials">至少需要设置一个凭据。</string>
|
<string name="error_disallow_no_credentials">至少需要设置一个凭据。</string>
|
||||||
<string name="error_copy_group_here">这里不能复制组。</string>
|
<string name="error_copy_group_here">您无法在此处复制群组。</string>
|
||||||
<string name="error_otp_secret_key">密钥必须是BASE32格式。</string>
|
<string name="error_otp_secret_key">密钥必须是BASE32格式。</string>
|
||||||
<string name="error_otp_counter">计数器必须在%1$d和%2$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_period">时长必须在%1$d秒到%2$d秒之间。</string>
|
||||||
@@ -369,11 +369,11 @@
|
|||||||
<string name="creating_database">新建数据库…</string>
|
<string name="creating_database">新建数据库…</string>
|
||||||
<string name="menu_security_settings">安全设置</string>
|
<string name="menu_security_settings">安全设置</string>
|
||||||
<string name="menu_master_key_settings">主密钥设置</string>
|
<string name="menu_master_key_settings">主密钥设置</string>
|
||||||
<string name="contains_duplicate_uuid">数据库包含重复UUID。</string>
|
<string name="contains_duplicate_uuid">该数据库包含重复的 UUID。</string>
|
||||||
<string name="contains_duplicate_uuid_procedure">通过为重复项生成新的UUID以解决问题?</string>
|
<string name="contains_duplicate_uuid_procedure">通过为重复项生成新的 UUID 以解决问题?</string>
|
||||||
<string name="database_opened">数据库开启</string>
|
<string name="database_opened">数据库开启</string>
|
||||||
<string name="clipboard_explanation_summary">使用设备的剪贴板来复制输入字段</string>
|
<string name="clipboard_explanation_summary">使用设备的剪贴板来复制输入字段</string>
|
||||||
<string name="advanced_unlock_explanation_summary">使用高级解锁轻松打开数据库</string>
|
<string name="advanced_unlock_explanation_summary">使用高级解锁以便快速解锁数据库</string>
|
||||||
<string name="database_data_compression_title">数据压缩</string>
|
<string name="database_data_compression_title">数据压缩</string>
|
||||||
<string name="database_data_compression_summary">数据压缩减少了数据库的大小</string>
|
<string name="database_data_compression_summary">数据压缩减少了数据库的大小</string>
|
||||||
<string name="max_history_items_title">最大数量</string>
|
<string name="max_history_items_title">最大数量</string>
|
||||||
@@ -432,7 +432,7 @@
|
|||||||
<string name="entry_add_attachment">添加附件</string>
|
<string name="entry_add_attachment">添加附件</string>
|
||||||
<string name="discard_changes">放弃更改?</string>
|
<string name="discard_changes">放弃更改?</string>
|
||||||
<string name="validate">验证</string>
|
<string name="validate">验证</string>
|
||||||
<string name="autofill_auto_search_summary">自动推荐从网站域名或应用程序中搜索的结果</string>
|
<string name="autofill_auto_search_summary">自动建议匹配的网址域名或应用程序 ID 的搜索结果</string>
|
||||||
<string name="autofill_auto_search_title">自动搜索</string>
|
<string name="autofill_auto_search_title">自动搜索</string>
|
||||||
<string name="lock_database_show_button_summary">在用户界面中显示锁定数据库按钮</string>
|
<string name="lock_database_show_button_summary">在用户界面中显示锁定数据库按钮</string>
|
||||||
<string name="lock_database_show_button_title">显示锁定数据库按钮</string>
|
<string name="lock_database_show_button_title">显示锁定数据库按钮</string>
|
||||||
@@ -444,11 +444,11 @@
|
|||||||
<string name="autofill_block_restart">重新启动包含该表单的应用程序以激活拦截。</string>
|
<string name="autofill_block_restart">重新启动包含该表单的应用程序以激活拦截。</string>
|
||||||
<string name="autofill_block">阻止自动填充</string>
|
<string name="autofill_block">阻止自动填充</string>
|
||||||
<string name="autofill_web_domain_blocklist_summary">禁止在下列域名中自动填充凭证</string>
|
<string name="autofill_web_domain_blocklist_summary">禁止在下列域名中自动填充凭证</string>
|
||||||
<string name="autofill_web_domain_blocklist_title">Web域名黑名单</string>
|
<string name="autofill_web_domain_blocklist_title">网址域名黑名单</string>
|
||||||
<string name="autofill_application_id_blocklist_summary">禁止应用程序自动填充的黑名单</string>
|
<string name="autofill_application_id_blocklist_summary">禁止应用程序自动填充的黑名单</string>
|
||||||
<string name="autofill_application_id_blocklist_title">应用拦截列表</string>
|
<string name="autofill_application_id_blocklist_title">应用拦截列表</string>
|
||||||
<string name="filter">过滤器</string>
|
<string name="filter">过滤器</string>
|
||||||
<string name="subdomain_search_summary">搜索带有子域约束的web域</string>
|
<string name="subdomain_search_summary">搜索带有子域约束的网址域名</string>
|
||||||
<string name="subdomain_search_title">子域搜索</string>
|
<string name="subdomain_search_title">子域搜索</string>
|
||||||
<string name="error_string_type">文本和请求的条目不匹配.</string>
|
<string name="error_string_type">文本和请求的条目不匹配.</string>
|
||||||
<string name="content_description_add_item">添加条目</string>
|
<string name="content_description_add_item">添加条目</string>
|
||||||
@@ -508,8 +508,8 @@
|
|||||||
<string name="advanced_unlock_prompt_extract_credential_title">用高级解锁识别打开数据库</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_message">警告:即使您使用高级解锁识别,您仍然需要记住您的主密码。</string>
|
||||||
<string name="advanced_unlock_prompt_store_credential_title">高级解锁识别</string>
|
<string name="advanced_unlock_prompt_store_credential_title">高级解锁识别</string>
|
||||||
<string name="open_advanced_unlock_prompt_store_credential">打开高级解锁提示来存储凭证</string>
|
<string name="open_advanced_unlock_prompt_store_credential">点击以打开高级解锁提示来存储凭证</string>
|
||||||
<string name="open_advanced_unlock_prompt_unlock_database">打开高级解锁提示来解锁数据库</string>
|
<string name="open_advanced_unlock_prompt_unlock_database">点击以使用高级识别解锁</string>
|
||||||
<string name="menu_keystore_remove_key">删除高级解锁密钥</string>
|
<string name="menu_keystore_remove_key">删除高级解锁密钥</string>
|
||||||
<string name="enter">输入</string>
|
<string name="enter">输入</string>
|
||||||
<string name="backspace">退格键</string>
|
<string name="backspace">退格键</string>
|
||||||
@@ -550,15 +550,15 @@
|
|||||||
<string name="error_remove_file">删除文件数据时发生了一个错误。</string>
|
<string name="error_remove_file">删除文件数据时发生了一个错误。</string>
|
||||||
<string name="error_duplicate_file">文件数据已存在。</string>
|
<string name="error_duplicate_file">文件数据已存在。</string>
|
||||||
<string name="properties">属性</string>
|
<string name="properties">属性</string>
|
||||||
<string name="error_export_app_properties">应用属性导出期间出错</string>
|
<string name="error_export_app_properties">导出应用配置时出错</string>
|
||||||
<string name="success_export_app_properties">已导出应用属性</string>
|
<string name="success_export_app_properties">已导出应用配置</string>
|
||||||
<string name="error_import_app_properties">导入应用属性期间出错</string>
|
<string name="error_import_app_properties">导入应用配置时出错</string>
|
||||||
<string name="success_import_app_properties">已导入应用属性</string>
|
<string name="success_import_app_properties">已导入应用配置</string>
|
||||||
<string name="description_app_properties">管理应用设置的 KeePassDX 属性</string>
|
<string name="description_app_properties">管理应用设置的 KeePassDX 配置</string>
|
||||||
<string name="export_app_properties_summary">创建一个文件来导出应用属性</string>
|
<string name="export_app_properties_summary">创建一个文件以导出应用配置</string>
|
||||||
<string name="export_app_properties_title">导出应用属性</string>
|
<string name="export_app_properties_title">导出配置</string>
|
||||||
<string name="import_app_properties_summary">选择一个文件来导入应用属性</string>
|
<string name="import_app_properties_summary">选择一个文件以导入应用配置</string>
|
||||||
<string name="import_app_properties_title">导入应用属性</string>
|
<string name="import_app_properties_title">导入配置</string>
|
||||||
<string name="error_start_database_action">对数据库执行操作时发生了一个错误。</string>
|
<string name="error_start_database_action">对数据库执行操作时发生了一个错误。</string>
|
||||||
<string name="error_move_group_here">你不能把一个组移动到此处。</string>
|
<string name="error_move_group_here">你不能把一个组移动到此处。</string>
|
||||||
<string name="error_word_reserved">这个单词是保留的,不能使用。</string>
|
<string name="error_word_reserved">这个单词是保留的,不能使用。</string>
|
||||||
|
|||||||
@@ -413,13 +413,13 @@
|
|||||||
<string name="keyboard_setting_label">Magikeyboard settings</string>
|
<string name="keyboard_setting_label">Magikeyboard settings</string>
|
||||||
<string name="keyboard_entry_category">Entry</string>
|
<string name="keyboard_entry_category">Entry</string>
|
||||||
<string name="keyboard_selection_entry_title">Entry selection</string>
|
<string name="keyboard_selection_entry_title">Entry selection</string>
|
||||||
<string name="keyboard_selection_entry_summary">Show input fields in Magikeyboard when viewing an entry</string>
|
<string name="keyboard_selection_entry_summary">When viewing an entry in KeePassDX, populate Magikeyboard with that entry</string>
|
||||||
<string name="keyboard_notification_entry_title">Notification info</string>
|
<string name="keyboard_notification_entry_title">Notification info</string>
|
||||||
<string name="keyboard_notification_entry_summary">Show a notification when an entry is available</string>
|
<string name="keyboard_notification_entry_summary">Show a notification when an entry is available</string>
|
||||||
<string name="keyboard_search_share_title">Search shared info</string>
|
<string name="keyboard_search_share_title">Search shared info</string>
|
||||||
<string name="keyboard_search_share_summary">Automatically search for shared information to populate the keyboard</string>
|
<string name="keyboard_search_share_summary">When sharing a URL to KeePassDX, filter the entries using that URL domain</string>
|
||||||
<string name="keyboard_save_search_info_title">Save shared info</string>
|
<string name="keyboard_save_search_info_title">Save shared info</string>
|
||||||
<string name="keyboard_save_search_info_summary">Try to save shared information when making a manual entry selection</string>
|
<string name="keyboard_save_search_info_summary">After sharing a URL to KeePassDX, when an entry is selected, try to remember that entry for further uses</string>
|
||||||
<string name="keyboard_notification_entry_clear_close_title">Clear at closing</string>
|
<string name="keyboard_notification_entry_clear_close_title">Clear at closing</string>
|
||||||
<string name="keyboard_notification_entry_clear_close_summary">Close the database when closing the notification</string>
|
<string name="keyboard_notification_entry_clear_close_summary">Close the database when closing the notification</string>
|
||||||
<string name="keyboard_entry_timeout_title">Timeout</string>
|
<string name="keyboard_entry_timeout_title">Timeout</string>
|
||||||
|
|||||||
1
fastlane/metadata/android/en-US/changelogs/77.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/77.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* Fix parcelable with custom data #986
|
||||||
2
fastlane/metadata/android/en-US/changelogs/80.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/80.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
* Fix search fields references #987
|
||||||
|
* Fix Auto-Types with same key #997
|
||||||
3
fastlane/metadata/android/en-US/changelogs/81.txt
Normal file
3
fastlane/metadata/android/en-US/changelogs/81.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
* Improve Magikeyboard options description #1022 #1023 (Thx @djibux)
|
||||||
|
* Fix database opened without notification (database is now closed when screen is killed in background #1025)
|
||||||
|
* Fix biometric prompt #1018
|
||||||
1
fastlane/metadata/android/en-US/changelogs/82.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/82.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* Hot fix to increase the opening speed of database #1028
|
||||||
1
fastlane/metadata/android/fr-FR/changelogs/77.txt
Normal file
1
fastlane/metadata/android/fr-FR/changelogs/77.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* Correction des parcelable avec données customisées #986
|
||||||
2
fastlane/metadata/android/fr-FR/changelogs/80.txt
Normal file
2
fastlane/metadata/android/fr-FR/changelogs/80.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
* Correction de la recherche des références de champs #987
|
||||||
|
* Correction des Auto-Types avec la même clé #997
|
||||||
3
fastlane/metadata/android/fr-FR/changelogs/81.txt
Normal file
3
fastlane/metadata/android/fr-FR/changelogs/81.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
* Amélioration de la description des options de Magikeyboard #1022 #1023 (Thx @djibux)
|
||||||
|
* Correction de l'ouverture de la base de données sans notification (la base est maintenant fermée lorsque l'écran est tuée en arrière-plan #1025)
|
||||||
|
* Correction de l'invite biométrique #1018
|
||||||
1
fastlane/metadata/android/fr-FR/changelogs/82.txt
Normal file
1
fastlane/metadata/android/fr-FR/changelogs/82.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* Correction pour augmenter la vitesse d'ouverture de la base de données #1028
|
||||||
Reference in New Issue
Block a user