Compare commits
57 Commits
4.0.0beta0
...
4.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6723ecd4e | ||
|
|
838c8f48d3 | ||
|
|
65229fae1f | ||
|
|
f25ea89160 | ||
|
|
18401d5d1e | ||
|
|
1f2cf08108 | ||
|
|
74e86badba | ||
|
|
31444a823e | ||
|
|
068933f0fb | ||
|
|
f496711280 | ||
|
|
657d2420d6 | ||
|
|
2467721265 | ||
|
|
d37fbb9992 | ||
|
|
19b8b54dae | ||
|
|
84328caf3c | ||
|
|
a0bdfc973a | ||
|
|
1f91854490 | ||
|
|
1380325b66 | ||
|
|
d244eef62e | ||
|
|
8fb8d9ed37 | ||
|
|
8ce63cb5c5 | ||
|
|
9ecf2ae942 | ||
|
|
544f7003f6 | ||
|
|
6d633c9986 | ||
|
|
1e77a42c93 | ||
|
|
d1f2641e40 | ||
|
|
4b8ae154cc | ||
|
|
0c1aacdf83 | ||
|
|
5f34df3549 | ||
|
|
f2e6aa1abb | ||
|
|
866731df81 | ||
|
|
5d931e09d5 | ||
|
|
fe17c21c01 | ||
|
|
085941019e | ||
|
|
24b3758545 | ||
|
|
9083f99325 | ||
|
|
2189be9267 | ||
|
|
43218eede1 | ||
|
|
d1a176d27d | ||
|
|
cf51af91bf | ||
|
|
02ff1188b2 | ||
|
|
0fac9b6864 | ||
|
|
b550830c30 | ||
|
|
6f485dd298 | ||
|
|
b0dfde62c7 | ||
|
|
686dae0af6 | ||
|
|
ee3eabe8c8 | ||
|
|
521c8aa6a9 | ||
|
|
66207d599f | ||
|
|
e0029e0c3f | ||
|
|
3683b64721 | ||
|
|
8d4a0971f9 | ||
|
|
d212fa180b | ||
|
|
bc4ea2ec2a | ||
|
|
5d8c80fc1e | ||
|
|
a02714ff6e | ||
|
|
4bd952e223 |
11
CHANGELOG
@@ -1,11 +1,16 @@
|
||||
KeePassDX(4.0.1)
|
||||
* Fix back lock #1635 #1629 #1634
|
||||
* Fix lock button in settings #1630
|
||||
* Improve theme translation #1631
|
||||
|
||||
KeePassDX(4.0.0)
|
||||
* New UX/UI with Material 3 #1183 #1529 #1428 #1441 #1607
|
||||
* Material You theme (follow system colors) #1469
|
||||
* Refactoring inner code #1371
|
||||
* Migration to API 33
|
||||
# Cut, copy and delete from search #891 #1308 #1263
|
||||
* Fix behaviors #1351
|
||||
* Fix bugs #1589 #1584 #1545 #1563 #1371
|
||||
* Cut, copy and delete from search #891 #1308 #1263
|
||||
* Fix behaviors #1351 #874 #1327
|
||||
* Fix bugs #1589 #1584 #1545 #1563 #1371 #1609
|
||||
|
||||
KeePassDX(3.5.1)
|
||||
* Fix action dialog with YubiKey challenge-response #1506
|
||||
|
||||
@@ -105,7 +105,7 @@ GEM
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
fastlane-plugin-versioning_android (0.1.0)
|
||||
fastlane-plugin-versioning_android (0.1.1)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.46.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
|
||||
@@ -12,8 +12,8 @@ android {
|
||||
applicationId "com.kunzisoft.keepass"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 33
|
||||
versionCode = 122
|
||||
versionName = "4.0.0_beta02"
|
||||
versionCode = 124
|
||||
versionName = "4.0.1"
|
||||
multiDexEnabled true
|
||||
|
||||
testApplicationId = "com.kunzisoft.keepass.tests"
|
||||
|
||||
@@ -7,10 +7,6 @@
|
||||
<group
|
||||
android:translateX="-12"
|
||||
android:translateY="-12">
|
||||
<path
|
||||
android:fillColor="#ffa726"
|
||||
android:strokeWidth="1.99999297"
|
||||
android:pathData="M36,36 L36,40.2422 L67.7578,72 L72,72 L72,67.7578 L40.2422,36 Z" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeWidth="1.99999297"
|
||||
15
app/src/free/res/drawable/ic_app_lock_white_24dp.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="84"
|
||||
android:viewportHeight="84">
|
||||
<group
|
||||
android:translateX="-12"
|
||||
android:translateY="-12">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeWidth="1.99999297"
|
||||
android:pathData="M36,36 L36,40.2422 L67.7578,72 L72,72 L72,67.7578 L40.2422,36 Z" />
|
||||
</group>
|
||||
</vector>
|
||||
@@ -7,10 +7,6 @@
|
||||
<group
|
||||
android:translateX="-12"
|
||||
android:translateY="-12">
|
||||
<path
|
||||
android:fillColor="#ffa726"
|
||||
android:strokeWidth="1.99999297"
|
||||
android:pathData="M36,36 L36,40.2422 L67.7578,72 L72,72 L72,67.7578 L40.2422,36 Z" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeWidth="1.99999297"
|
||||
15
app/src/libre/res/drawable/ic_app_lock_white_24dp.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="84"
|
||||
android:viewportHeight="84">
|
||||
<group
|
||||
android:translateX="-12"
|
||||
android:translateY="-12">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeWidth="1.99999297"
|
||||
android:pathData="M36,36 L36,40.2422 L67.7578,72 L72,72 L72,67.7578 L40.2422,36 Z" />
|
||||
</group>
|
||||
</vector>
|
||||
@@ -145,7 +145,7 @@
|
||||
android:configChanges="keyboardHidden" />
|
||||
<activity
|
||||
android:name="com.kunzisoft.keepass.activities.EntryEditActivity"
|
||||
android:windowSoftInputMode="adjustResize" />
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<!-- About and Settings -->
|
||||
<activity
|
||||
android:name="com.kunzisoft.keepass.activities.AboutActivity"
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
@@ -30,15 +31,20 @@ import android.util.Log
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.core.graphics.BlendModeColorFilterCompat
|
||||
import androidx.core.graphics.BlendModeCompat
|
||||
import androidx.core.graphics.ColorUtils
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
@@ -69,15 +75,19 @@ import com.kunzisoft.keepass.tasks.AttachmentFileBinderManager
|
||||
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
||||
import com.kunzisoft.keepass.utils.UuidUtil
|
||||
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
|
||||
import com.kunzisoft.keepass.view.WindowInsetPosition
|
||||
import com.kunzisoft.keepass.view.applyWindowInsets
|
||||
import com.kunzisoft.keepass.view.changeControlColor
|
||||
import com.kunzisoft.keepass.view.changeTitleColor
|
||||
import com.kunzisoft.keepass.view.hideByFading
|
||||
import com.kunzisoft.keepass.view.setTransparentNavigationBar
|
||||
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||
import com.kunzisoft.keepass.viewmodels.EntryViewModel
|
||||
import java.util.UUID
|
||||
|
||||
class EntryActivity : DatabaseLockActivity() {
|
||||
|
||||
private var footer: ViewGroup? = null
|
||||
private var coordinatorLayout: CoordinatorLayout? = null
|
||||
private var collapsingToolbarLayout: CollapsingToolbarLayout? = null
|
||||
private var appBarLayout: AppBarLayout? = null
|
||||
@@ -128,6 +138,7 @@ class EntryActivity : DatabaseLockActivity() {
|
||||
supportActionBar?.setDisplayShowHomeEnabled(true)
|
||||
|
||||
// Get views
|
||||
footer = findViewById(R.id.activity_entry_footer)
|
||||
coordinatorLayout = findViewById(R.id.toolbar_coordinator)
|
||||
collapsingToolbarLayout = findViewById(R.id.toolbar_layout)
|
||||
appBarLayout = findViewById(R.id.app_bar)
|
||||
@@ -139,6 +150,14 @@ class EntryActivity : DatabaseLockActivity() {
|
||||
lockView = findViewById(R.id.lock_button)
|
||||
loadingView = findViewById(R.id.loading)
|
||||
|
||||
// To apply fit window with transparency
|
||||
setTransparentNavigationBar {
|
||||
// To fix margin with API 27
|
||||
ViewCompat.setOnApplyWindowInsetsListener(collapsingToolbarLayout!!, null)
|
||||
coordinatorLayout?.applyWindowInsets(WindowInsetPosition.TOP)
|
||||
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM)
|
||||
}
|
||||
|
||||
// Empty title
|
||||
collapsingToolbarLayout?.title = " "
|
||||
toolbar?.title = " "
|
||||
|
||||
@@ -30,6 +30,7 @@ import android.util.Log
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.AdapterView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.Spinner
|
||||
@@ -89,8 +90,11 @@ import com.kunzisoft.keepass.timeout.TimeoutHelper
|
||||
import com.kunzisoft.keepass.utils.UriUtil.getDocumentFile
|
||||
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
|
||||
import com.kunzisoft.keepass.view.ToolbarAction
|
||||
import com.kunzisoft.keepass.view.WindowInsetPosition
|
||||
import com.kunzisoft.keepass.view.applyWindowInsets
|
||||
import com.kunzisoft.keepass.view.asError
|
||||
import com.kunzisoft.keepass.view.hideByFading
|
||||
import com.kunzisoft.keepass.view.setTransparentNavigationBar
|
||||
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||
import com.kunzisoft.keepass.view.updateLockPaddingLeft
|
||||
import com.kunzisoft.keepass.viewmodels.ColorPickerViewModel
|
||||
@@ -104,6 +108,8 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
ReplaceFileDialogFragment.ActionChooseListener {
|
||||
|
||||
// Views
|
||||
private var footer: ViewGroup? = null
|
||||
private var container: ViewGroup? = null
|
||||
private var coordinatorLayout: CoordinatorLayout? = null
|
||||
private var scrollView: NestedScrollView? = null
|
||||
private var templateSelectorSpinner: Spinner? = null
|
||||
@@ -156,10 +162,8 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
|
||||
// Bottom Bar
|
||||
entryEditAddToolBar = findViewById(R.id.entry_edit_bottom_bar)
|
||||
setSupportActionBar(entryEditAddToolBar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
supportActionBar?.setDisplayShowHomeEnabled(true)
|
||||
supportActionBar?.setDisplayShowTitleEnabled(false)
|
||||
footer = findViewById(R.id.activity_entry_edit_footer)
|
||||
container = findViewById(R.id.activity_entry_edit_container)
|
||||
coordinatorLayout = findViewById(R.id.entry_edit_coordinator_layout)
|
||||
scrollView = findViewById(R.id.entry_edit_scroll)
|
||||
scrollView?.scrollBarStyle = View.SCROLLBARS_INSIDE_INSET
|
||||
@@ -168,6 +172,17 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
validateButton = findViewById(R.id.entry_edit_validate)
|
||||
loadingView = findViewById(R.id.loading)
|
||||
|
||||
setSupportActionBar(entryEditAddToolBar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
supportActionBar?.setDisplayShowHomeEnabled(true)
|
||||
supportActionBar?.setDisplayShowTitleEnabled(false)
|
||||
|
||||
// To apply fit window with transparency
|
||||
setTransparentNavigationBar(applyToStatusBar = true) {
|
||||
container?.applyWindowInsets(WindowInsetPosition.TOP)
|
||||
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM)
|
||||
}
|
||||
|
||||
stopService(Intent(this, ClipboardEntryNotificationService::class.java))
|
||||
stopService(Intent(this, KeyboardEntryNotificationService::class.java))
|
||||
|
||||
@@ -691,16 +706,16 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
return true
|
||||
}
|
||||
android.R.id.home -> {
|
||||
onBackPressed()
|
||||
onDatabaseBackPressed()
|
||||
}
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
override fun onDatabaseBackPressed() {
|
||||
onApprovedBackPressed {
|
||||
super@EntryEditActivity.onBackPressed()
|
||||
super@EntryEditActivity.onDatabaseBackPressed()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ import android.util.Log
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
@@ -105,7 +106,10 @@ import com.kunzisoft.keepass.view.AddNodeButtonView
|
||||
import com.kunzisoft.keepass.view.NavigationDatabaseView
|
||||
import com.kunzisoft.keepass.view.SearchFiltersView
|
||||
import com.kunzisoft.keepass.view.ToolbarAction
|
||||
import com.kunzisoft.keepass.view.WindowInsetPosition
|
||||
import com.kunzisoft.keepass.view.applyWindowInsets
|
||||
import com.kunzisoft.keepass.view.hideByFading
|
||||
import com.kunzisoft.keepass.view.setTransparentNavigationBar
|
||||
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||
import com.kunzisoft.keepass.view.updateLockPaddingLeft
|
||||
import com.kunzisoft.keepass.viewmodels.GroupEditViewModel
|
||||
@@ -121,6 +125,8 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
MainCredentialDialogFragment.AskMainCredentialDialogListener {
|
||||
|
||||
// Views
|
||||
private var header: ViewGroup? = null
|
||||
private var footer: ViewGroup? = null
|
||||
private var drawerLayout: DrawerLayout? = null
|
||||
private var databaseNavView: NavigationDatabaseView? = null
|
||||
private var coordinatorLayout: CoordinatorLayout? = null
|
||||
@@ -267,6 +273,8 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
setContentView(layoutInflater.inflate(R.layout.activity_group, null))
|
||||
|
||||
// Initialize views
|
||||
header = findViewById(R.id.activity_group_header)
|
||||
footer = findViewById(R.id.activity_group_footer)
|
||||
drawerLayout = findViewById(R.id.drawer_layout)
|
||||
databaseNavView = findViewById(R.id.database_nav_view)
|
||||
coordinatorLayout = findViewById(R.id.group_coordinator)
|
||||
@@ -283,6 +291,13 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
lockView = findViewById(R.id.lock_button)
|
||||
loadingView = findViewById(R.id.loading)
|
||||
|
||||
// To apply fit window with transparency
|
||||
setTransparentNavigationBar {
|
||||
header?.applyWindowInsets(WindowInsetPosition.TOP)
|
||||
coordinatorLayout?.applyWindowInsets(WindowInsetPosition.LEGIT_TOP)
|
||||
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM)
|
||||
}
|
||||
|
||||
lockView?.setOnClickListener {
|
||||
lockAndExit()
|
||||
}
|
||||
@@ -1339,7 +1354,7 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
override fun onDatabaseBackPressed() {
|
||||
if (mGroupFragment?.nodeActionSelectionMode == true) {
|
||||
finishNodeAction()
|
||||
} else {
|
||||
|
||||
@@ -239,7 +239,7 @@ class IconPickerActivity : DatabaseLockActivity() {
|
||||
if (mCustomIconsSelectionMode) {
|
||||
iconPickerViewModel.deselectAllCustomIcons()
|
||||
} else {
|
||||
onBackPressed()
|
||||
onDatabaseBackPressed()
|
||||
}
|
||||
}
|
||||
R.id.menu_edit -> {
|
||||
@@ -329,9 +329,9 @@ class IconPickerActivity : DatabaseLockActivity() {
|
||||
})
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
override fun onDatabaseBackPressed() {
|
||||
setResult()
|
||||
super.onBackPressed()
|
||||
super.onDatabaseBackPressed()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -96,7 +96,7 @@ class KeyGeneratorActivity : DatabaseLockActivity() {
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
android.R.id.home -> {
|
||||
onBackPressed()
|
||||
onDatabaseBackPressed()
|
||||
}
|
||||
R.id.menu_generate -> {
|
||||
keyGeneratorViewModel.requireKeyGeneration()
|
||||
@@ -106,9 +106,9 @@ class KeyGeneratorActivity : DatabaseLockActivity() {
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
override fun onDatabaseBackPressed() {
|
||||
setResult(Activity.RESULT_CANCELED, Intent())
|
||||
super.onBackPressed()
|
||||
super.onDatabaseBackPressed()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -463,14 +463,14 @@ abstract class DatabaseLockActivity : DatabaseModeActivity(),
|
||||
mDatabase?.loaded ?: false)
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
override fun onDatabaseBackPressed() {
|
||||
if (mTimeoutEnable) {
|
||||
TimeoutHelper.checkTimeAndLockIfTimeoutOrResetTimeout(this,
|
||||
mDatabase?.loaded == true) {
|
||||
super.onBackPressed()
|
||||
super.onDatabaseBackPressed()
|
||||
}
|
||||
} else {
|
||||
super.onBackPressed()
|
||||
super.onDatabaseBackPressed()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.kunzisoft.keepass.activities.legacy
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.activities.helpers.EntrySelectionHelper
|
||||
import com.kunzisoft.keepass.activities.helpers.SpecialMode
|
||||
@@ -22,18 +23,20 @@ abstract class DatabaseModeActivity : DatabaseActivity() {
|
||||
|
||||
private var mToolbarSpecial: ToolbarSpecial? = null
|
||||
|
||||
override fun onBackPressed() {
|
||||
open fun onDatabaseBackPressed() {
|
||||
if (mSpecialMode != SpecialMode.DEFAULT)
|
||||
onCancelSpecialMode()
|
||||
else
|
||||
super.onBackPressed()
|
||||
onRegularBackPressed()
|
||||
}
|
||||
|
||||
/**
|
||||
* To call the regular onBackPressed() method in special mode
|
||||
*/
|
||||
protected fun onRegularBackPressed() {
|
||||
super.onBackPressed()
|
||||
// Do not call onBackPressedDispatcher.onBackPressed() to avoid loop
|
||||
// Calling onBackPressed() is now deprecated, directly finish the activity
|
||||
finish()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,7 +75,7 @@ abstract class DatabaseModeActivity : DatabaseActivity() {
|
||||
open fun onCancelSpecialMode() {
|
||||
if (isIntentSender()) {
|
||||
// To get the app caller, only for IntentSender
|
||||
super.onBackPressed()
|
||||
onRegularBackPressed()
|
||||
} else {
|
||||
EntrySelectionHelper.removeModesFromIntent(intent)
|
||||
EntrySelectionHelper.removeInfoFromIntent(intent)
|
||||
@@ -85,7 +88,7 @@ abstract class DatabaseModeActivity : DatabaseActivity() {
|
||||
protected fun backToTheAppCaller() {
|
||||
if (isIntentSender()) {
|
||||
// To get the app caller, only for IntentSender
|
||||
super.onBackPressed()
|
||||
onRegularBackPressed()
|
||||
} else {
|
||||
backToTheMainAppAndFinish()
|
||||
}
|
||||
@@ -100,6 +103,12 @@ abstract class DatabaseModeActivity : DatabaseActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
onDatabaseBackPressed()
|
||||
}
|
||||
})
|
||||
|
||||
mSpecialMode = EntrySelectionHelper.retrieveSpecialModeFromIntent(intent)
|
||||
mTypeMode = EntrySelectionHelper.retrieveTypeModeFromIntent(intent)
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ class BreadcrumbAdapter(val context: Context)
|
||||
PreferencesUtil.showExpiredEntries(context)
|
||||
)
|
||||
)
|
||||
text = group.numberOfChildEntries.toString()
|
||||
text = group.recursiveNumberOfChildEntries.toString()
|
||||
visibility = View.VISIBLE
|
||||
} else {
|
||||
visibility = View.GONE
|
||||
|
||||
@@ -197,6 +197,7 @@ class NodesAdapter (
|
||||
&& oldItem.containsAttachment() == newItem.containsAttachment()
|
||||
} else if (oldItem is Group && newItem is Group) {
|
||||
typeContentTheSame = oldItem.numberOfChildEntries == newItem.numberOfChildEntries
|
||||
&& oldItem.recursiveNumberOfChildEntries == newItem.recursiveNumberOfChildEntries
|
||||
&& oldItem.notes == newItem.notes
|
||||
}
|
||||
return typeContentTheSame
|
||||
@@ -472,7 +473,7 @@ class NodesAdapter (
|
||||
if (mShowNumberEntries) {
|
||||
holder.numberChildren?.apply {
|
||||
text = (subNode as Group)
|
||||
.numberOfChildEntries
|
||||
.recursiveNumberOfChildEntries
|
||||
.toString()
|
||||
setTextSize(mTextSizeUnit, mNumberChildrenTextDefaultDimension, mPrefSizeMultiplier)
|
||||
visibility = View.VISIBLE
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.kunzisoft.keepass.autofill
|
||||
|
||||
import android.app.assist.AssistStructure
|
||||
import android.view.inputmethod.InlineSuggestionsRequest
|
||||
|
||||
data class AutofillComponent(val assistStructure: AssistStructure,
|
||||
val compatInlineSuggestionsRequest: CompatInlineSuggestionsRequest?)
|
||||
@@ -29,9 +29,12 @@ import android.graphics.BlendMode
|
||||
import android.graphics.drawable.Icon
|
||||
import android.os.Build
|
||||
import android.service.autofill.Dataset
|
||||
import android.service.autofill.Field
|
||||
import android.service.autofill.FillResponse
|
||||
import android.service.autofill.InlinePresentation
|
||||
import android.service.autofill.Presentations
|
||||
import android.util.Log
|
||||
import android.view.autofill.AutofillId
|
||||
import android.view.autofill.AutofillManager
|
||||
import android.view.autofill.AutofillValue
|
||||
import android.widget.RemoteViews
|
||||
@@ -93,36 +96,82 @@ object AutofillHelper {
|
||||
database: ContextualDatabase,
|
||||
remoteViewsText: String,
|
||||
remoteViewsIcon: IconImage? = null): RemoteViews {
|
||||
val presentation = RemoteViews(context.packageName, R.layout.item_autofill_entry)
|
||||
presentation.setTextViewText(R.id.autofill_entry_text, remoteViewsText)
|
||||
val remoteViews = RemoteViews(context.packageName, R.layout.item_autofill_entry)
|
||||
remoteViews.setTextViewText(R.id.autofill_entry_text, remoteViewsText)
|
||||
if (remoteViewsIcon != null) {
|
||||
try {
|
||||
database.iconDrawableFactory.getBitmapFromIcon(context,
|
||||
remoteViewsIcon, ContextCompat.getColor(context, R.color.green))?.let { bitmap ->
|
||||
presentation.setImageViewBitmap(R.id.autofill_entry_icon, bitmap)
|
||||
remoteViews.setImageViewBitmap(R.id.autofill_entry_icon, bitmap)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(RemoteViews::class.java.name, "Unable to assign icon in remote view", e)
|
||||
}
|
||||
}
|
||||
return presentation
|
||||
return remoteViews
|
||||
}
|
||||
|
||||
private fun buildDataset(context: Context,
|
||||
private fun Dataset.Builder.addValueToDatasetBuilder(
|
||||
id: AutofillId,
|
||||
autofillValue: AutofillValue?
|
||||
): Dataset.Builder {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
setField(
|
||||
id, autofillValue?.let {
|
||||
Field.Builder()
|
||||
.setValue(it)
|
||||
.build()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
setValue(id, autofillValue)
|
||||
}
|
||||
Log.d(TAG, "Set Autofill value $autofillValue for id $id")
|
||||
return this
|
||||
}
|
||||
|
||||
private fun buildDatasetForEntry(context: Context,
|
||||
database: ContextualDatabase,
|
||||
entryInfo: EntryInfo,
|
||||
struct: StructureParser.Result,
|
||||
additionalBuild: ((build: Dataset.Builder) -> Unit)? = null): Dataset? {
|
||||
val title = makeEntryTitle(entryInfo)
|
||||
val views = newRemoteViews(context, database, title, entryInfo.icon)
|
||||
val builder = Dataset.Builder(views)
|
||||
builder.setId(entryInfo.id.toString())
|
||||
inlinePresentation: InlinePresentation?): Dataset {
|
||||
val remoteViews: RemoteViews = newRemoteViews(context, database, makeEntryTitle(entryInfo), entryInfo.icon)
|
||||
|
||||
val datasetBuilder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
Dataset.Builder(Presentations.Builder()
|
||||
.apply {
|
||||
inlinePresentation?.let {
|
||||
setInlinePresentation(inlinePresentation)
|
||||
}
|
||||
}
|
||||
.setDialogPresentation(remoteViews)
|
||||
.setMenuPresentation(remoteViews)
|
||||
.build())
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
Dataset.Builder(remoteViews).apply {
|
||||
inlinePresentation?.let {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
setInlinePresentation(inlinePresentation)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
datasetBuilder.setId(entryInfo.id.toString())
|
||||
|
||||
struct.usernameId?.let { usernameId ->
|
||||
builder.setValue(usernameId, AutofillValue.forText(entryInfo.username))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
usernameId,
|
||||
AutofillValue.forText(entryInfo.username)
|
||||
)
|
||||
}
|
||||
struct.passwordId?.let { passwordId ->
|
||||
builder.setValue(passwordId, AutofillValue.forText(entryInfo.password))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
passwordId,
|
||||
AutofillValue.forText(entryInfo.password)
|
||||
)
|
||||
}
|
||||
|
||||
if (entryInfo.expires) {
|
||||
@@ -135,9 +184,15 @@ object AutofillHelper {
|
||||
struct.creditCardExpirationDateId?.let {
|
||||
if (struct.isWebView) {
|
||||
// set date string as defined in https://html.spec.whatwg.org
|
||||
builder.setValue(it, AutofillValue.forText("$year\u002D$monthString"))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forText("$year\u002D$monthString")
|
||||
)
|
||||
} else {
|
||||
builder.setValue(it, AutofillValue.forDate(entryInfo.expiryTime.date.time))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forDate(entryInfo.expiryTime.date.time)
|
||||
)
|
||||
}
|
||||
}
|
||||
struct.creditCardExpirationYearId?.let {
|
||||
@@ -151,34 +206,58 @@ object AutofillHelper {
|
||||
}
|
||||
if (yearIndex != -1) {
|
||||
autofillValue = AutofillValue.forList(yearIndex)
|
||||
builder.setValue(it, autofillValue)
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
autofillValue
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (autofillValue == null) {
|
||||
builder.setValue(it, AutofillValue.forText(year.toString()))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forText(year.toString())
|
||||
)
|
||||
}
|
||||
}
|
||||
struct.creditCardExpirationMonthId?.let {
|
||||
if (struct.isWebView) {
|
||||
builder.setValue(it, AutofillValue.forText(monthString))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forText(monthString)
|
||||
)
|
||||
} else {
|
||||
if (struct.creditCardExpirationMonthOptions != null) {
|
||||
// index starts at 0
|
||||
builder.setValue(it, AutofillValue.forList(month - 1))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forList(month - 1)
|
||||
)
|
||||
} else {
|
||||
builder.setValue(it, AutofillValue.forText(monthString))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forText(monthString)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
struct.creditCardExpirationDayId?.let {
|
||||
if (struct.isWebView) {
|
||||
builder.setValue(it, AutofillValue.forText(dayString))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forText(dayString)
|
||||
)
|
||||
} else {
|
||||
if (struct.creditCardExpirationDayOptions != null) {
|
||||
builder.setValue(it, AutofillValue.forList(day - 1))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forList(day - 1)
|
||||
)
|
||||
} else {
|
||||
builder.setValue(it, AutofillValue.forText(dayString))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
it,
|
||||
AutofillValue.forText(dayString)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -186,29 +265,32 @@ object AutofillHelper {
|
||||
for (field in entryInfo.customFields) {
|
||||
if (field.name == TemplateField.LABEL_HOLDER) {
|
||||
struct.creditCardHolderId?.let { ccNameId ->
|
||||
builder.setValue(ccNameId, AutofillValue.forText(field.protectedValue.stringValue))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
ccNameId,
|
||||
AutofillValue.forText(field.protectedValue.stringValue)
|
||||
)
|
||||
}
|
||||
}
|
||||
if (field.name == TemplateField.LABEL_NUMBER) {
|
||||
struct.creditCardNumberId?.let { ccnId ->
|
||||
builder.setValue(ccnId, AutofillValue.forText(field.protectedValue.stringValue))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
ccnId,
|
||||
AutofillValue.forText(field.protectedValue.stringValue)
|
||||
)
|
||||
}
|
||||
}
|
||||
if (field.name == TemplateField.LABEL_CVV) {
|
||||
struct.cardVerificationValueId?.let { cvvId ->
|
||||
builder.setValue(cvvId, AutofillValue.forText(field.protectedValue.stringValue))
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
cvvId,
|
||||
AutofillValue.forText(field.protectedValue.stringValue)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
additionalBuild?.invoke(builder)
|
||||
|
||||
return try {
|
||||
builder.build()
|
||||
} catch (e: Exception) {
|
||||
// at least one value must be set
|
||||
null
|
||||
}
|
||||
val dataset = datasetBuilder.build()
|
||||
Log.d(TAG, "Autofill Dataset $dataset created")
|
||||
return dataset
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -228,8 +310,8 @@ object AutofillHelper {
|
||||
return null
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
@SuppressLint("RestrictedApi")
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
private fun buildInlinePresentationForEntry(context: Context,
|
||||
database: ContextualDatabase,
|
||||
compatInlineSuggestionsRequest: CompatInlineSuggestionsRequest,
|
||||
@@ -335,25 +417,33 @@ object AutofillHelper {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
entriesInfo.forEachIndexed { _, entry ->
|
||||
if (numberInlineSuggestions > 0
|
||||
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
||||
try {
|
||||
// Build inline presentation for compatible keyboard
|
||||
var inlinePresentation: InlinePresentation? = null
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
||||
&& numberInlineSuggestions > 0
|
||||
&& compatInlineSuggestionsRequest != null) {
|
||||
responseBuilder.addDataset(buildDataset(context, database, entry, parseResult) { builder ->
|
||||
buildInlinePresentationForEntry(context, database,
|
||||
compatInlineSuggestionsRequest, numberInlineSuggestions--, entry
|
||||
)?.let { inlinePresentation ->
|
||||
builder.setInlinePresentation(inlinePresentation)
|
||||
inlinePresentation = buildInlinePresentationForEntry(
|
||||
context,
|
||||
database,
|
||||
compatInlineSuggestionsRequest,
|
||||
numberInlineSuggestions--,
|
||||
entry
|
||||
)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
responseBuilder.addDataset(buildDataset(context, database, entry, parseResult))
|
||||
// Create dataset for each entry
|
||||
responseBuilder.addDataset(
|
||||
buildDatasetForEntry(context, database, entry, parseResult, inlinePresentation)
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Unable to add dataset")
|
||||
}
|
||||
}
|
||||
|
||||
// Add a new dataset for manual selection
|
||||
if (PreferencesUtil.isAutofillManualSelectionEnable(context)) {
|
||||
val searchInfo = SearchInfo().apply {
|
||||
applicationId = parseResult.applicationId
|
||||
@@ -365,29 +455,50 @@ object AutofillHelper {
|
||||
val pendingIntent = AutofillLauncherActivity.getPendingIntentForSelection(context,
|
||||
searchInfo, compatInlineSuggestionsRequest)
|
||||
|
||||
parseResult.allAutofillIds().let { autofillIds ->
|
||||
autofillIds.forEach { id ->
|
||||
val builder = Dataset.Builder(manualSelectionView)
|
||||
|
||||
var inlinePresentation: InlinePresentation? = null
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
compatInlineSuggestionsRequest?.inlineSuggestionsRequest?.let { inlineSuggestionsRequest ->
|
||||
val inlinePresentationSpec = inlineSuggestionsRequest.inlinePresentationSpecs[0]
|
||||
val inlinePresentation = buildInlinePresentationForManualSelection(context, inlinePresentationSpec, pendingIntent)
|
||||
inlinePresentation = buildInlinePresentationForManualSelection(context, inlinePresentationSpec, pendingIntent)
|
||||
}
|
||||
}
|
||||
|
||||
val datasetBuilder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
Dataset.Builder(Presentations.Builder()
|
||||
.apply {
|
||||
inlinePresentation?.let {
|
||||
builder.setInlinePresentation(it)
|
||||
setInlinePresentation(it)
|
||||
}
|
||||
}
|
||||
.setDialogPresentation(manualSelectionView)
|
||||
.setMenuPresentation(manualSelectionView)
|
||||
.build())
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
Dataset.Builder(manualSelectionView).apply {
|
||||
inlinePresentation?.let {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
setInlinePresentation(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
builder.setValue(id, null)
|
||||
builder.setAuthentication(pendingIntent.intentSender)
|
||||
responseBuilder.addDataset(builder.build())
|
||||
}
|
||||
|
||||
parseResult.allAutofillIds().let { autofillIds ->
|
||||
autofillIds.forEach { id ->
|
||||
datasetBuilder.addValueToDatasetBuilder(id, null)
|
||||
datasetBuilder.setAuthentication(pendingIntent.intentSender)
|
||||
}
|
||||
val dataset = datasetBuilder.build()
|
||||
Log.d(TAG, "Autofill Dataset for manual selection $dataset created")
|
||||
responseBuilder.addDataset(dataset)
|
||||
}
|
||||
}
|
||||
|
||||
return try {
|
||||
responseBuilder.build()
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Unable to create Autofill response", e)
|
||||
null
|
||||
}
|
||||
}
|
||||
@@ -424,7 +535,7 @@ object AutofillHelper {
|
||||
buildResponse(activity, database, entriesInfo, result, null)
|
||||
}
|
||||
val mReplyIntent = Intent()
|
||||
Log.d(activity.javaClass.name, "Successed Autofill auth.")
|
||||
Log.d(activity.javaClass.name, "Success Autofill auth.")
|
||||
mReplyIntent.putExtra(
|
||||
AutofillManager.EXTRA_AUTHENTICATION_RESULT,
|
||||
response)
|
||||
@@ -479,4 +590,6 @@ object AutofillHelper {
|
||||
EntrySelectionHelper.addSearchInfoInIntent(intent, searchInfo)
|
||||
activityResultLauncher?.launch(intent)
|
||||
}
|
||||
|
||||
private val TAG = AutofillHelper::class.java.name
|
||||
}
|
||||
|
||||
@@ -45,7 +45,6 @@ import com.kunzisoft.keepass.settings.AutofillSettingsActivity
|
||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||
import com.kunzisoft.keepass.utils.WebDomain
|
||||
import org.joda.time.DateTime
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
@@ -57,7 +56,6 @@ class KeeAutofillService : AutofillService() {
|
||||
private var webDomainBlocklist: Set<String>? = null
|
||||
private var askToSaveData: Boolean = false
|
||||
private var autofillInlineSuggestionsEnabled: Boolean = false
|
||||
private var mLock = AtomicBoolean()
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
@@ -90,9 +88,12 @@ class KeeAutofillService : AutofillService() {
|
||||
|
||||
cancellationSignal.setOnCancelListener { Log.w(TAG, "Cancel autofill.") }
|
||||
|
||||
// Lock
|
||||
if (!mLock.get()) {
|
||||
mLock.set(true)
|
||||
if (request.flags and FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST != 0) {
|
||||
Log.d(TAG, "Autofill requested in compatibility mode")
|
||||
} else {
|
||||
Log.d(TAG, "Autofill requested in native mode")
|
||||
}
|
||||
|
||||
// Check user's settings for authenticating Responses and Datasets.
|
||||
val latestStructure = request.fillContexts.last().structure
|
||||
StructureParser(latestStructure).parse()?.let { parseResult ->
|
||||
@@ -122,7 +123,6 @@ class KeeAutofillService : AutofillService() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun launchSelection(database: ContextualDatabase?,
|
||||
searchInfo: SearchInfo,
|
||||
@@ -157,6 +157,7 @@ class KeeAutofillService : AutofillService() {
|
||||
searchInfo: SearchInfo,
|
||||
inlineSuggestionsRequest: CompatInlineSuggestionsRequest?,
|
||||
callback: FillCallback) {
|
||||
var success = false
|
||||
parseResult.allAutofillIds().let { autofillIds ->
|
||||
if (autofillIds.isNotEmpty()) {
|
||||
// If the entire Autofill Response is authenticated, AuthActivity is used
|
||||
@@ -279,17 +280,36 @@ class KeeAutofillService : AutofillService() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build response
|
||||
responseBuilder.setAuthentication(autofillIds, intentSender, remoteViewsUnlock, inlinePresentation)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
responseBuilder.setAuthentication(
|
||||
autofillIds,
|
||||
intentSender,
|
||||
Presentations.Builder().apply {
|
||||
inlinePresentation?.let {
|
||||
setInlinePresentation(it)
|
||||
}
|
||||
}.setDialogPresentation(remoteViewsUnlock).build()
|
||||
)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
responseBuilder.setAuthentication(autofillIds, intentSender, remoteViewsUnlock, inlinePresentation)
|
||||
}
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
responseBuilder.setAuthentication(autofillIds, intentSender, remoteViewsUnlock)
|
||||
}
|
||||
success = true
|
||||
callback.onSuccess(responseBuilder.build())
|
||||
}
|
||||
}
|
||||
if (!success)
|
||||
callback.onFailure("Unable to get Autofill ids for UI selection")
|
||||
}
|
||||
|
||||
override fun onSaveRequest(request: SaveRequest, callback: SaveCallback) {
|
||||
var success = false
|
||||
if (askToSaveData) {
|
||||
val latestStructure = request.fillContexts.last().structure
|
||||
StructureParser(latestStructure).parse(true)?.let { parseResult ->
|
||||
@@ -333,14 +353,16 @@ class KeeAutofillService : AutofillService() {
|
||||
// registerInfo))
|
||||
//} else {
|
||||
AutofillLauncherActivity.launchForRegistration(this, registerInfo)
|
||||
success = true
|
||||
callback.onSuccess()
|
||||
//}
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!success) {
|
||||
callback.onFailure("Saving form values is not allowed")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onConnected() {
|
||||
Log.d(TAG, "onConnected")
|
||||
@@ -348,7 +370,6 @@ class KeeAutofillService : AutofillService() {
|
||||
}
|
||||
|
||||
override fun onDisconnected() {
|
||||
mLock.set(false)
|
||||
Log.d(TAG, "onDisconnected")
|
||||
}
|
||||
|
||||
|
||||
@@ -19,35 +19,16 @@
|
||||
*/
|
||||
package com.kunzisoft.keepass.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity
|
||||
|
||||
class AutofillSettingsActivity : DatabaseModeActivity() {
|
||||
class AutofillSettingsActivity : ExternalSettingsActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setContentView(R.layout.activity_toolbar)
|
||||
val toolbar = findViewById<Toolbar>(R.id.toolbar)
|
||||
toolbar.setTitle(R.string.autofill_preference_title)
|
||||
setSupportActionBar(toolbar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
supportFragmentManager.beginTransaction()
|
||||
.replace(R.id.fragment_container, AutofillSettingsFragment())
|
||||
.commit()
|
||||
}
|
||||
override fun retrieveTitle(): Int {
|
||||
return R.string.autofill_preference_title
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
android.R.id.home -> onBackPressed()
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item)
|
||||
override fun retrievePreferenceFragment(): PreferenceFragmentCompat {
|
||||
return AutofillSettingsFragment()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.kunzisoft.keepass.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity
|
||||
|
||||
abstract class ExternalSettingsActivity : DatabaseModeActivity() {
|
||||
|
||||
private var lockView: FloatingActionButton? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setContentView(R.layout.activity_toolbar)
|
||||
val toolbar = findViewById<Toolbar>(R.id.toolbar)
|
||||
toolbar.setTitle(retrieveTitle())
|
||||
setSupportActionBar(toolbar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
|
||||
lockView = findViewById(R.id.lock_button)
|
||||
lockView?.hide()
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
supportFragmentManager.beginTransaction()
|
||||
.replace(R.id.fragment_container, retrievePreferenceFragment())
|
||||
.commit()
|
||||
}
|
||||
}
|
||||
|
||||
@StringRes
|
||||
abstract fun retrieveTitle(): Int
|
||||
|
||||
abstract fun retrievePreferenceFragment(): PreferenceFragmentCompat
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
android.R.id.home -> onDatabaseBackPressed()
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
}
|
||||
@@ -19,37 +19,17 @@
|
||||
*/
|
||||
package com.kunzisoft.keepass.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import android.view.MenuItem
|
||||
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity
|
||||
|
||||
class MagikeyboardSettingsActivity : DatabaseModeActivity() {
|
||||
class MagikeyboardSettingsActivity : ExternalSettingsActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setContentView(R.layout.activity_toolbar)
|
||||
val toolbar = findViewById<Toolbar>(R.id.toolbar)
|
||||
toolbar.setTitle(R.string.keyboard_setting_label)
|
||||
setSupportActionBar(toolbar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
supportFragmentManager.beginTransaction()
|
||||
.replace(R.id.fragment_container, MagikeyboardSettingsFragment())
|
||||
.commit()
|
||||
}
|
||||
override fun retrieveTitle(): Int {
|
||||
return R.string.keyboard_setting_label
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
android.R.id.home -> onBackPressed()
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item)
|
||||
override fun retrievePreferenceFragment(): PreferenceFragmentCompat {
|
||||
return MagikeyboardSettingsFragment()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -120,17 +120,20 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
activity?.let { activity ->
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
val autoFillEnablePreference: TwoStatePreference? = findPreference(getString(R.string.settings_autofill_enable_key))
|
||||
val autofillManager = activity.getSystemService(AutofillManager::class.java)
|
||||
if (autofillManager != null && autofillManager.hasEnabledAutofillServices())
|
||||
activity.getSystemService(AutofillManager::class.java)?.let { autofillManager ->
|
||||
if (autofillManager.hasEnabledAutofillServices())
|
||||
autoFillEnablePreference?.isChecked = autofillManager.hasEnabledAutofillServices()
|
||||
autoFillEnablePreference?.onPreferenceClickListener = object : Preference.OnPreferenceClickListener {
|
||||
|
||||
autoFillEnablePreference?.onPreferenceClickListener =
|
||||
object : Preference.OnPreferenceClickListener {
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
override fun onPreferenceClick(preference: Preference): Boolean {
|
||||
if ((preference as TwoStatePreference).isChecked) {
|
||||
try {
|
||||
enableService()
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
val error = getString(R.string.error_autofill_enable_service)
|
||||
val error =
|
||||
getString(R.string.error_autofill_enable_service)
|
||||
preference.isChecked = false
|
||||
Log.d(javaClass.name, error, e)
|
||||
Toast.makeText(context, error, Toast.LENGTH_SHORT).show()
|
||||
@@ -144,7 +147,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
private fun disableService() {
|
||||
if (autofillManager != null && autofillManager.hasEnabledAutofillServices()) {
|
||||
if (autofillManager.hasEnabledAutofillServices()) {
|
||||
autofillManager.disableAutofillServices()
|
||||
} else {
|
||||
Log.d(javaClass.name, "Autofill service already disabled.")
|
||||
@@ -154,9 +157,11 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
@Throws(ActivityNotFoundException::class)
|
||||
private fun enableService() {
|
||||
if (autofillManager != null && !autofillManager.hasEnabledAutofillServices()) {
|
||||
val intent = Intent(Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE)
|
||||
intent.data = Uri.parse("package:com.kunzisoft.keepass.autofill.KeeAutofillService")
|
||||
if (!autofillManager.hasEnabledAutofillServices()) {
|
||||
val intent =
|
||||
Intent(Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE)
|
||||
intent.data =
|
||||
Uri.parse("package:com.kunzisoft.keepass.autofill.KeeAutofillService")
|
||||
Log.d(javaClass.name, "Autofill enable service: intent=$intent")
|
||||
startActivity(intent)
|
||||
} else {
|
||||
@@ -164,6 +169,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
findPreference<Preference>(getString(R.string.autofill_key))?.isVisible = false
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
@@ -54,6 +55,7 @@ open class SettingsActivity
|
||||
private var coordinatorLayout: CoordinatorLayout? = null
|
||||
private var toolbar: Toolbar? = null
|
||||
private var lockView: FloatingActionButton? = null
|
||||
private var footer: TextView? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -62,10 +64,19 @@ open class SettingsActivity
|
||||
|
||||
coordinatorLayout = findViewById(R.id.toolbar_coordinator)
|
||||
toolbar = findViewById(R.id.toolbar)
|
||||
lockView = findViewById(R.id.lock_button)
|
||||
footer = findViewById(R.id.screenshot_mode_banner)
|
||||
|
||||
// To apply navigation bar with background color
|
||||
/* TODO Settings nav bar
|
||||
setTransparentNavigationBar {
|
||||
coordinatorLayout?.applyWindowInsets(WindowInsetPosition.TOP)
|
||||
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM)
|
||||
}*/
|
||||
|
||||
mExternalFileHelper = ExternalFileHelper(this)
|
||||
mExternalFileHelper?.buildOpenDocument { selectedFileUri ->
|
||||
// Import app properties result
|
||||
// Import app settings result
|
||||
try {
|
||||
selectedFileUri?.let { uri ->
|
||||
val appProperties = Properties()
|
||||
@@ -80,11 +91,11 @@ open class SettingsActivity
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Toast.makeText(this, R.string.error_import_app_properties, Toast.LENGTH_LONG).show()
|
||||
Log.e(TAG, "Unable to import app properties", e)
|
||||
Log.e(TAG, "Unable to import app settings", e)
|
||||
}
|
||||
}
|
||||
mExternalFileHelper?.buildCreateDocument { createdFileUri ->
|
||||
// Export app properties result
|
||||
// Export app settings result
|
||||
try {
|
||||
createdFileUri?.let { uri ->
|
||||
contentResolver?.openOutputStream(uri)?.use { outputStream ->
|
||||
@@ -96,7 +107,7 @@ open class SettingsActivity
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Toast.makeText(this, R.string.error_export_app_properties, Toast.LENGTH_LONG).show()
|
||||
Log.e(DatabaseLockActivity.TAG, "Unable to export app properties", e)
|
||||
Log.e(DatabaseLockActivity.TAG, "Unable to export app settings", e)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +118,6 @@ open class SettingsActivity
|
||||
setSupportActionBar(toolbar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
|
||||
lockView = findViewById(R.id.lock_button)
|
||||
lockView?.setOnClickListener {
|
||||
lockAndExit()
|
||||
}
|
||||
@@ -166,7 +176,7 @@ open class SettingsActivity
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
android.R.id.home -> onBackPressed()
|
||||
android.R.id.home -> onDatabaseBackPressed()
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item)
|
||||
@@ -200,10 +210,10 @@ open class SettingsActivity
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
override fun onDatabaseBackPressed() {
|
||||
// this if statement is necessary to navigate through nested and main fragments
|
||||
if (supportFragmentManager.backStackEntryCount == 0) {
|
||||
super.onBackPressed()
|
||||
super.onDatabaseBackPressed()
|
||||
} else {
|
||||
supportFragmentManager.popBackStack()
|
||||
}
|
||||
|
||||
@@ -22,9 +22,16 @@ package com.kunzisoft.keepass.view
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorSet
|
||||
import android.animation.ValueAnimator
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.graphics.*
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.graphics.PorterDuff
|
||||
import android.graphics.PorterDuffColorFilter
|
||||
import android.graphics.Typeface
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Build
|
||||
import android.text.Selection
|
||||
import android.text.Spannable
|
||||
import android.text.SpannableString
|
||||
@@ -43,8 +50,14 @@ import androidx.appcompat.view.menu.ActionMenuItemView
|
||||
import androidx.appcompat.widget.ActionMenuView
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.graphics.drawable.DrawableCompat
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.forEach
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.core.view.updatePadding
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
@@ -287,3 +300,68 @@ fun CollapsingToolbarLayout.changeTitleColor(color: Int) {
|
||||
setExpandedTitleColor(color)
|
||||
invalidate()
|
||||
}
|
||||
|
||||
fun Activity.setTransparentNavigationBar(applyToStatusBar: Boolean = false, applyWindowInsets: () -> Unit) {
|
||||
// Only in portrait
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1
|
||||
&& resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
this.window.navigationBarColor = ContextCompat.getColor(this, R.color.surface_selector)
|
||||
if (applyToStatusBar) {
|
||||
this.window.statusBarColor = ContextCompat.getColor(this, R.color.surface_selector)
|
||||
}
|
||||
applyWindowInsets.invoke()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply a margin to a view to fix the window inset
|
||||
*/
|
||||
fun View.applyWindowInsets(position: WindowInsetPosition = WindowInsetPosition.BOTTOM) {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets ->
|
||||
var consumed = false
|
||||
|
||||
// To fix listener in API 27
|
||||
if (view is ViewGroup) {
|
||||
view.forEach { child ->
|
||||
// Dispatch the insets to the child
|
||||
val childResult = ViewCompat.dispatchApplyWindowInsets(child, windowInsets)
|
||||
// If the child consumed the insets, record it
|
||||
if (childResult.isConsumed) {
|
||||
consumed = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
when (position) {
|
||||
WindowInsetPosition.TOP -> {
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
topMargin = insets.top
|
||||
}
|
||||
}
|
||||
}
|
||||
WindowInsetPosition.LEGIT_TOP -> {
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
topMargin = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
WindowInsetPosition.BOTTOM -> {
|
||||
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
|
||||
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
bottomMargin = insets.bottom
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// If any of the children consumed the insets, return an appropriate value
|
||||
if (consumed) WindowInsetsCompat.CONSUMED else windowInsets
|
||||
}
|
||||
}
|
||||
|
||||
enum class WindowInsetPosition {
|
||||
TOP, BOTTOM, LEGIT_TOP
|
||||
}
|
||||
|
||||
4
app/src/main/res/color/surface_selector.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<item android:alpha="0.60" android:color="?attr/colorSurface"/>
|
||||
</selector>
|
||||
@@ -8,7 +8,7 @@
|
||||
<item android:state_selected="true">
|
||||
<shape>
|
||||
<corners android:radius="25dp" />
|
||||
<solid android:color="?attr/colorSecondaryContainer"/>
|
||||
<solid android:color="?attr/colorSecondary"/>
|
||||
</shape>
|
||||
</item>
|
||||
<item android:state_selected="false">
|
||||
|
||||
@@ -22,15 +22,12 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
android:fitsSystemWindows="true">
|
||||
android:filterTouchesWhenObscured="true">
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/toolbar_coordinator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/app_bar"
|
||||
@@ -96,7 +93,8 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="48dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/history_container"
|
||||
@@ -138,14 +136,26 @@
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/activity_entry_footer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/entry_content_tab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:minWidth="180dp"
|
||||
android:background="@drawable/background_item_selection"
|
||||
android:backgroundTint="?attr/colorSurfaceContainerLow"
|
||||
android:backgroundTint="@color/surface_selector"
|
||||
android:layout_marginBottom="12dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"
|
||||
app:tabMode="fixed"
|
||||
tools:targetApi="lollipop">
|
||||
|
||||
@@ -163,24 +173,25 @@
|
||||
|
||||
</com.google.android.material.tabs.TabLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<include
|
||||
layout="@layout/view_button_lock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner" />
|
||||
|
||||
<include layout="@layout/view_screenshot_mode_banner" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/loading"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true" />
|
||||
</FrameLayout>
|
||||
android:indeterminate="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<include
|
||||
layout="@layout/view_button_lock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|bottom" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<include layout="@layout/view_screenshot_mode_banner" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -30,26 +30,25 @@
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/entry_edit_coordinator_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/entry_edit_bottom_bar">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/activity_entry_edit_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.kunzisoft.keepass.view.ToolbarSpecial
|
||||
android:id="@+id/special_mode_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/entry_edit_scroll"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/special_mode_view"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:scrollbarStyle="insideOverlay"
|
||||
android:scrollbars="none"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
@@ -57,7 +56,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="@dimen/card_view_margin_vertical"
|
||||
android:paddingBottom="@dimen/card_view_margin_vertical">
|
||||
android:paddingBottom="128dp">
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
android:id="@+id/entry_edit_template_selector"
|
||||
android:layout_width="match_parent"
|
||||
@@ -75,8 +74,16 @@
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/activity_entry_edit_footer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
|
||||
<com.kunzisoft.keepass.view.ToolbarAction
|
||||
android:id="@+id/entry_edit_bottom_bar"
|
||||
android:layout_width="match_parent"
|
||||
@@ -93,7 +100,8 @@
|
||||
android:src="@drawable/ic_check_white_24dp"
|
||||
app:fabCustomSize="@dimen/button_small_size"
|
||||
app:layout_constraintTop_toTopOf="@+id/entry_edit_bottom_bar"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/entry_edit_bottom_bar"
|
||||
android:layout_marginBottom="6dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
@@ -104,18 +112,19 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"/>
|
||||
|
||||
<include layout="@layout/view_screenshot_mode_banner" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/loading"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true"
|
||||
app:layout_anchor="@+id/entry_scroll"
|
||||
app:layout_anchorGravity="top|center"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<include layout="@layout/view_screenshot_mode_banner" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
android:shadowDy="2"
|
||||
android:shadowRadius="2"
|
||||
android:paddingTop="?attr/actionBarSize"
|
||||
android:textColor="@color/green_light"
|
||||
android:textColor="?attr/colorPrimaryContainer"
|
||||
android:gravity="center"
|
||||
android:text="@string/app_name_part1"/>
|
||||
<TextView
|
||||
@@ -89,7 +89,7 @@
|
||||
android:shadowDy="2"
|
||||
android:shadowRadius="2"
|
||||
android:paddingTop="?attr/actionBarSize"
|
||||
android:textColor="@color/orange"
|
||||
android:textColor="?attr/colorSecondary"
|
||||
android:gravity="center"
|
||||
android:text="@string/app_name_part2"/>
|
||||
<TextView
|
||||
@@ -107,7 +107,7 @@
|
||||
android:shadowDy="2"
|
||||
android:shadowRadius="2"
|
||||
android:paddingTop="?attr/actionBarSize"
|
||||
android:textColor="@color/green_lightest"
|
||||
android:textColor="?attr/colorSecondaryContainer"
|
||||
android:gravity="center"
|
||||
android:text="@string/app_name_part3"/>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/activity_group_header"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
<com.kunzisoft.keepass.view.ToolbarSpecial
|
||||
android:id="@+id/special_mode_view"
|
||||
android:layout_width="match_parent"
|
||||
@@ -49,7 +54,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:singleLine="true"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
tools:text="Database"
|
||||
style="@style/KeepassDXStyle.Title.OnSurface" />
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
@@ -61,7 +67,7 @@
|
||||
android:layout_marginLeft="48dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/special_mode_view"
|
||||
app:layout_constraintBottom_toTopOf="@+id/group_coordinator">
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
<ImageView
|
||||
android:id="@+id/database_color"
|
||||
android:layout_width="12dp"
|
||||
@@ -79,19 +85,19 @@
|
||||
android:src="@drawable/ic_modified_white_12dp"
|
||||
android:contentDescription="@string/save"/>
|
||||
</FrameLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/group_coordinator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/toolbar_action"
|
||||
app:layout_constraintTop_toBottomOf="@+id/toolbar">
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/activity_group_header">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/app_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -123,15 +129,14 @@
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
android:background="?android:attr/windowBackground"
|
||||
android:layout_below="@+id/toolbar" />
|
||||
|
||||
<com.kunzisoft.keepass.view.AddNodeButtonView
|
||||
android:id="@+id/add_node_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_anchor="@+id/nodes_list_fragment_container"
|
||||
app:layout_anchorGravity="end|bottom" />
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/activity_group_footer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
|
||||
<com.kunzisoft.keepass.view.ToolbarAction
|
||||
android:id="@+id/toolbar_action"
|
||||
android:layout_width="match_parent"
|
||||
@@ -139,32 +144,42 @@
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner" />
|
||||
|
||||
<FrameLayout
|
||||
<com.kunzisoft.keepass.view.AddNodeButtonView
|
||||
android:id="@+id/add_node_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_anchor="@+id/nodes_list_fragment_container"
|
||||
app:layout_anchorGravity="end|bottom" />
|
||||
|
||||
<include
|
||||
layout="@layout/view_button_lock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<include layout="@layout/view_screenshot_mode_banner" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/error_coordinator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"/>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/loading"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true" />
|
||||
</FrameLayout>
|
||||
|
||||
<include
|
||||
layout="@layout/view_button_lock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner" />
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/error_coordinator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/toolbar"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"/>
|
||||
|
||||
<include layout="@layout/view_screenshot_mode_banner" />
|
||||
android:indeterminate="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.kunzisoft.keepass.view.NavigationDatabaseView
|
||||
@@ -172,7 +187,6 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
style="@style/Widget.Material3.NavigationView"
|
||||
android:fitsSystemWindows="true" />
|
||||
style="@style/Widget.Material3.NavigationView" />
|
||||
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
|
||||
@@ -67,9 +67,19 @@
|
||||
android:layout_margin="12dp"
|
||||
android:contentDescription="@string/about"
|
||||
android:elevation="4dp"
|
||||
android:src="@drawable/ic_app_white_24dp"
|
||||
android:src="@drawable/ic_app_lock_white_24dp"
|
||||
app:tint="?attr/colorSecondary"
|
||||
android:background="@drawable/background_image"
|
||||
android:backgroundTint="@color/green"/>
|
||||
app:backgroundTint="?attr/colorPrimaryContainer"/>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="12dp"
|
||||
android:contentDescription="@string/about"
|
||||
android:elevation="4dp"
|
||||
android:src="@drawable/ic_app_key_white_24dp"
|
||||
app:tint="?attr/colorOnPrimaryContainer"/>
|
||||
</FrameLayout>
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
|
||||
@@ -18,12 +18,11 @@
|
||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
android:background="?android:attr/windowBackground"
|
||||
android:fitsSystemWindows="true">
|
||||
android:background="?android:attr/windowBackground">
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/toolbar_coordinator"
|
||||
@@ -32,28 +31,31 @@
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner" >
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<include
|
||||
android:id="@+id/toolbar"
|
||||
layout="@layout/toolbar_default" />
|
||||
<include layout="@layout/toolbar_default"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fragment_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</LinearLayout>
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/toolbar"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<include
|
||||
layout="@layout/view_button_lock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|bottom" />
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner" />
|
||||
|
||||
<include layout="@layout/view_screenshot_mode_banner"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
<include layout="@layout/view_screenshot_mode_banner" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
android:scrollbarStyle="insideOverlay"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="64dp"
|
||||
android:paddingBottom="120dp"
|
||||
android:clipToPadding="false" />
|
||||
<LinearLayout
|
||||
android:id="@+id/not_found_container"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
app:useCompatPadding="true"
|
||||
android:layout_marginStart="-6dp"
|
||||
android:layout_marginLeft="-6dp"
|
||||
android:layout_marginBottom="-10dp"
|
||||
android:layout_marginBottom="-7dp"
|
||||
android:contentDescription="@string/lock"
|
||||
android:layout_gravity="bottom"
|
||||
android:visibility="visible"
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
android:minHeight="48dp"
|
||||
android:hint="@string/password"
|
||||
android:inputType="textPassword"
|
||||
android:importantForAutofill="yes"
|
||||
android:importantForAutofill="no"
|
||||
android:focusable="true"
|
||||
android:focusableInTouchMode="true"
|
||||
android:autofillHints="password"
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
android:id="@+id/screenshot_mode_banner"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/grey"
|
||||
android:background="?attr/colorSecondary"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="8dp"
|
||||
android:text="@string/screenshot_mode_banner_text"
|
||||
android:textColor="@color/white"
|
||||
android:textColor="?attr/colorOnSecondary"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<string name="homepage">الصفحة الرئيسة</string>
|
||||
<string name="accept">قبول</string>
|
||||
<string name="add_group">إضافة مجموعة</string>
|
||||
<string name="encryption">التعميّة</string>
|
||||
<string name="encryption_algorithm">خوارزمية التعميّة</string>
|
||||
<string name="encryption">التشفير</string>
|
||||
<string name="encryption_algorithm">خوارزمية التشفير</string>
|
||||
<string name="application">التطبيق</string>
|
||||
<string name="brackets">الأقواس</string>
|
||||
<string name="extended_ASCII">تمديد ASCII</string>
|
||||
@@ -30,7 +30,7 @@
|
||||
<string name="clipboard_error_title">خطأ في الحافظة</string>
|
||||
<string name="clipboard_error_clear">تعذَّر مسح الحافظة</string>
|
||||
<string name="database">قاعدة البيانات</string>
|
||||
<string name="decrypting_db">يفك تعمية محتوى قاعدة البيانات…</string>
|
||||
<string name="decrypting_db">يفك تشفير محتوى قاعدة البيانات…</string>
|
||||
<string name="digits">أرقام</string>
|
||||
<string name="entry_cancel">إلغاء</string>
|
||||
<string name="entry_notes">ملاحظات</string>
|
||||
@@ -80,7 +80,7 @@
|
||||
<string name="progress_create">إنشاء قاعدة بيانات جديدة …</string>
|
||||
<string name="protection">الحماية</string>
|
||||
<string name="read_only">محمي من التعديل</string>
|
||||
<string name="content_description_remove_from_list">حذف</string>
|
||||
<string name="content_description_remove_from_list">إزالة</string>
|
||||
<string name="root">الجذر</string>
|
||||
<string name="memory_usage">استخدام الذاكرة</string>
|
||||
<string name="parallelism">التَّوازِي</string>
|
||||
@@ -155,15 +155,15 @@
|
||||
<string name="menu_url">الانتقال الى الرابط</string>
|
||||
<string name="menu_file_selection_read_only">محمي من التعديل</string>
|
||||
<string name="menu_open_file_read_and_write">قابل للتعديل</string>
|
||||
<string name="select_database_file">فتح قاعدة بيانات موجودة</string>
|
||||
<string name="create_keepass_file">انشاء قاعدة بيانات</string>
|
||||
<string name="select_database_file">فتح مخزن موجود</string>
|
||||
<string name="create_keepass_file">انشاء مخزن جديد</string>
|
||||
<string name="progress_title">قيد العمل…</string>
|
||||
<string name="read_only_warning">KeePassDX يحتاج صلاحية الكتابة من اجل تعديل قاعدة البيانات.</string>
|
||||
<string name="encryption_explanation">خوارزمية تشفير جميع البيانات.</string>
|
||||
<string name="encryption_explanation">خوارزمية تشفير جميع البيانات</string>
|
||||
<string name="unsupported_db_version">قاعدة بيانات غير مدعومة.</string>
|
||||
<string name="build_label">بناء %1$s</string>
|
||||
<string name="encrypted_value_stored">تم حفظ كلمة السر المشفرة</string>
|
||||
<string name="unavailable">قاعدة البيانات لا تمتلك بيانات اعتماد.</string>
|
||||
<string name="unavailable">غير متوفر</string>
|
||||
<string name="menu_appearance_settings">المظهر</string>
|
||||
<string name="general">عام</string>
|
||||
<string name="autofill">ملأ تلقائي</string>
|
||||
@@ -177,7 +177,7 @@
|
||||
<string name="clipboard_notifications_title">اشعارات الحافظة</string>
|
||||
<string name="clipboard_warning">اذا فشل الحذف التلقائي من الحافظة ,احذف تأريخه يدويا.</string>
|
||||
<string name="lock_database_screen_off_title">قفل الشاشة</string>
|
||||
<string name="lock_database_screen_off_summary">اقفل قاعدة البيانات عند انغلاق الشاشة</string>
|
||||
<string name="lock_database_screen_off_summary">اقفل قاعدة البيانات بعد بضع ثوانٍ بمجرد إيقاف تشغيل الشاشة</string>
|
||||
<string name="biometric_delete_all_key_title">حذف مفاتيح التشفير</string>
|
||||
<string name="unavailable_feature_text">لا يمكن بدأ هذه الميزة .</string>
|
||||
<string name="unavailable_feature_version">هذا الجهاز يعمل بأندرويد %1$s لكن يحتاج نسخة %2$s على الأقل.</string>
|
||||
@@ -185,9 +185,9 @@
|
||||
<string name="path">مسار</string>
|
||||
<string name="database_history">تأريخ</string>
|
||||
<string name="clipboard_notifications_summary">أظهر اشعارات الحافظة لنسخ الحقول عند عرض مدخل</string>
|
||||
<string name="advanced_unlock">البصمة</string>
|
||||
<string name="advanced_unlock">فتح الجهاز</string>
|
||||
<string name="biometric_unlock_enable_title">فحص البصمة</string>
|
||||
<string name="biometric_unlock_enable_summary">يسمح بفحص البصمة لفتح قاعدة البيانات</string>
|
||||
<string name="biometric_unlock_enable_summary">يتيح لك مسح بياناتك الحيوية لفتح قاعدة البيانات</string>
|
||||
<string name="monospace_font_fields_enable_summary">غير خط الحقول لتوضيح المحارف</string>
|
||||
<string name="allow_copy_password_title">الوثوق بالحافظة</string>
|
||||
<string name="allow_copy_password_summary">اسمح بنسخ كلمة السر والحقول المحمية إلى للحافظة</string>
|
||||
@@ -213,10 +213,10 @@
|
||||
<string name="keyboard_keys_category">مفاتيح</string>
|
||||
<string name="keyboard_key_vibrate_title">إهتزاز عند اللمس</string>
|
||||
<string name="keyboard_key_sound_title">صوت عند اللمس</string>
|
||||
<string name="allow_no_password_title">"إسمح بالفتح دون كلمة سر "</string>
|
||||
<string name="allow_no_password_title">إسمح بدون المفتاح الرئيسي</string>
|
||||
<string name="enable_read_only_title">محمي من التعديل</string>
|
||||
<string name="enable_read_only_summary">افتح قاعدة البيانات في وضع القراءة افتراضيا</string>
|
||||
<string name="enable_education_screens_title">شاشات تعليمية</string>
|
||||
<string name="enable_education_screens_title">تلميحات تعليمية</string>
|
||||
<string name="reset_education_screens_summary">أعد عرض كل المعلومات التعليمية</string>
|
||||
<string name="reset_education_screens_text">إعادة تعيين الشاشات التلميحات</string>
|
||||
<string name="education_create_database_title">أنشئ قاعدة بيانات</string>
|
||||
@@ -233,7 +233,7 @@
|
||||
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
|
||||
<string name="keyboard_notification_entry_content_title">%1$s متوفر على Magikeyboard</string>
|
||||
<string name="keyboard_notification_entry_content_text">%1$s</string>
|
||||
<string name="reset_education_screens_title">إعادة تعيين الشاشات التعليمية</string>
|
||||
<string name="reset_education_screens_title">إعادة تعيين التلميحات التعليمية</string>
|
||||
<string name="education_search_title">البحث من خلال الإدخالات</string>
|
||||
<string name="content_description_open_file">افتح الملف</string>
|
||||
<string name="content_description_add_entry">إضافة مدخلة</string>
|
||||
@@ -261,7 +261,7 @@
|
||||
<string name="content_description_update_from_list">تحديث</string>
|
||||
<string name="content_description_keyboard_close_fields">أغلق الحقول</string>
|
||||
<string name="error_create_database_file">لا يمكن انشاء قاعدة بيانات بكلمة السر وملف المفتاح الحاليين.</string>
|
||||
<string name="menu_advanced_unlock_settings">فك القفل المتقدم</string>
|
||||
<string name="menu_advanced_unlock_settings">فك قفل الجهاز</string>
|
||||
<string name="entry_attachments">مرفقات</string>
|
||||
<string name="entry_history">السجل</string>
|
||||
<string name="entry_add_attachment">أضف مرفقا</string>
|
||||
@@ -334,8 +334,8 @@
|
||||
<string name="database_data_compression_title">ضغط البيانات</string>
|
||||
<string name="data">البيانات</string>
|
||||
<string name="unavailable_feature_hardware">تعذر العثور على ماسح البصمة.</string>
|
||||
<string name="biometric_delete_all_key_summary">احذف كل مفاتيح التعمية المرتبطة بفك القفل المتقدم</string>
|
||||
<string name="advanced_unlock_explanation_summary">استخدم إلغاء القفل المتقدم لفتح قاعدة البيانات بسهولة</string>
|
||||
<string name="biometric_delete_all_key_summary">احذف كل مفاتيح التشفير المرتبطة بفتح الجهاز</string>
|
||||
<string name="advanced_unlock_explanation_summary">استخدم إلغاء القفل الجهاز لفتح قاعدة البيانات بسهولة</string>
|
||||
<string name="lock_database_show_button_summary">يعرض زر القَفل في الواجهة</string>
|
||||
<string name="lock_database_show_button_title">اعرض زر القَفل</string>
|
||||
<string name="lock_database_back_root_summary">قفل قاعدة البيانات عند النقر على زر الرجوع في الشاشة الرئيسية</string>
|
||||
@@ -359,10 +359,10 @@
|
||||
<string name="autofill_application_id_blocklist_title">قائمة التطبيقات المحظورة</string>
|
||||
<string name="content_description_repeat_toggle_password_visibility">بدِّل ظهور كلمة السر</string>
|
||||
<string name="hide_expired_entries_summary">لن تعرض المدخلات منتهية الصلاحية</string>
|
||||
<string name="education_read_only_summary">غيِّر وضع الجلسة.
|
||||
<string name="education_read_only_summary">تغيير وضع الافتتاح للجلسة.
|
||||
\n
|
||||
\n\"محمي من التعديل\" يمنع أي تغيير في قاعدة البيانات.
|
||||
\n\"قابل للتعديل\" يتيح لك إضافة أو حذف أو تعديل جميع العناصر.</string>
|
||||
\nيمنع \"محمي ضد الكتابة\" التغييرات غير المقصودة في قاعدة البيانات.
|
||||
\n\"قابل للتعديل\" يتيح لك إضافة أو حذف أو تعديل جميع العناصر كما تريد.</string>
|
||||
<string name="education_read_only_title">احمي قاعدة البيانات من التعديل</string>
|
||||
<string name="education_unlock_title">افتح قاعدة البيانات</string>
|
||||
<string name="education_add_attachment_summary">أضف مرفقا للمدخلة لحفظ بيانات اضافية.</string>
|
||||
@@ -373,7 +373,7 @@
|
||||
<string name="keyboard_selection_entry_title">اختيار المدخلة</string>
|
||||
<string name="device_keyboard_setting_title">إعدادات لوحة مفاتيح الجهاز</string>
|
||||
<string name="magic_keyboard_explanation_summary">نشِّط لوحة مفاتيح مخصصة لملأ كلمة السر وحقول معرّفك</string>
|
||||
<string name="biometric_auto_open_prompt_summary">اطلب فك القفل المتقدم ان كانت قاعدة البيانات معدّة لذلك</string>
|
||||
<string name="biometric_auto_open_prompt_summary">اطلب إلغاء قفل الجهاز تلقائيًا إذا كانت قاعدة البيانات معدّة لذلك</string>
|
||||
<string name="biometric_auto_open_prompt_title">افتح المحث تلقائيا</string>
|
||||
<string name="keystore_not_accessible">لم يُهيأ مخزن المفاتيح بشكل صحيح.</string>
|
||||
<string name="warning_remove_unlinked_attachment">حذف البيانات سيقلل من حجم قاعدة البيانات لكن احذر أن تكون إحدى هذه البيانات ملحقة لكي-باس.</string>
|
||||
@@ -428,7 +428,7 @@
|
||||
<string name="membership">العضوية</string>
|
||||
<string name="name">الاسم</string>
|
||||
<string name="email">البريد الإلكتروني</string>
|
||||
<string name="email_address">البريد الإلكتروني</string>
|
||||
<string name="email_address">عنوان البريد الإلكتروني</string>
|
||||
<string name="ssid">SSID</string>
|
||||
<string name="debit_credit_card">بطاقة السحب الفوري / الإئتمان</string>
|
||||
<string name="error_registration_read_only">لا يمكن حفظ عنصر في قاعدة بيانات مفتوحة للقراءة فقط</string>
|
||||
@@ -454,8 +454,8 @@
|
||||
<string name="seed">البذرة</string>
|
||||
<string name="error_database_uri_null">يتعذر استرداد مسار قاعدة البيانات.</string>
|
||||
<string name="error_rebuild_list">يتعذر إعادة بناء القائمة بشكل صحيح.</string>
|
||||
<string name="menu_keystore_remove_key">احذف رمز فك القفل المتقدم</string>
|
||||
<string name="menu_form_filling_settings">تعبئة الحقول</string>
|
||||
<string name="menu_keystore_remove_key">احذف رمز فك القفل الجهاز</string>
|
||||
<string name="menu_form_filling_settings">ملء النموذج</string>
|
||||
<string name="menu_reload_database">أعد تحميل البيانات</string>
|
||||
<string name="menu_external_icon">أيقونة خارجية</string>
|
||||
<string name="registration_mode">وضع التسجيل</string>
|
||||
@@ -469,11 +469,11 @@
|
||||
<string name="warning_database_info_changed_options">ادمج البيانات أو استبدل التعديلات الخارجية بحفظ قاعدة البيانات أو أعد تحميلها لجلب آخر التغييرات.</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">اكتب كلمة السر، وأنقر هذا الزر.</string>
|
||||
<string name="device_credential">بيانات الاعتماد للجهاز</string>
|
||||
<string name="advanced_unlock_tap_delete">انفر لحذف مفاتيح فك القفل المتقدم</string>
|
||||
<string name="advanced_unlock_tap_delete">انقر لحذف مفاتيح فتح الجهاز</string>
|
||||
<string name="keyboard_auto_go_action_title">إجراء اللمس التلقائي</string>
|
||||
<string name="keyboard_previous_fill_in_title">إجراء لمس تلقائي</string>
|
||||
<string name="keyboard_previous_fill_in_title">العودة إلى الوراء</string>
|
||||
<string name="keyboard_previous_lock_title">اقفل قاعدة البيانات</string>
|
||||
<string name="education_advanced_unlock_title">فك القفل المتقدم لقاعدة البيانات</string>
|
||||
<string name="education_advanced_unlock_title">فتح قاعدة بيانات الجهاز</string>
|
||||
<string name="hint_icon_name">اسم الأيقونة</string>
|
||||
<string name="autofill_manual_selection_title">اختيار يدوي</string>
|
||||
<string name="description_app_properties">خصائص KeePassDX لإدارة إعدادات التطبيقات</string>
|
||||
@@ -483,7 +483,7 @@
|
||||
<string name="content_description_database_color">لون قاعدة البيانات</string>
|
||||
<string name="menu_merge_from">ادمج من…</string>
|
||||
<string name="show_uuid_summary">يعرض \"المعرف العام\" المرتبط بمُدخل او بمجموعة</string>
|
||||
<string name="expired">انتهت المهلة</string>
|
||||
<string name="expired">انتهت</string>
|
||||
<string name="tags">الوسوم</string>
|
||||
<string name="menu_merge_database">ادمج البيانات</string>
|
||||
<string name="current_group">المجموعة الحالية</string>
|
||||
@@ -497,11 +497,11 @@
|
||||
<string name="custom_data">بيانات مخصصة</string>
|
||||
<string name="case_sensitive">حساسة لحالة الأحرف</string>
|
||||
<string name="regex">تعابير نمطية</string>
|
||||
<string name="enable_keep_screen_on_title">أبق الشاشة شغّالة</string>
|
||||
<string name="enable_keep_screen_on_title">أبقِ الشاشة شغّالة</string>
|
||||
<string name="enable_education_screens_summary">أبرز العناصر لتعلم طريقة عمل التطبيق</string>
|
||||
<string name="autofill_read_only_save">غير مسموح حفظ البيانات في قاعدة بيانات مفتوحة للقراءة فقط.</string>
|
||||
<string name="autofill_inline_suggestions_keyboard">أُضيف اقتراح ملء تلقائي.</string>
|
||||
<string name="keyboard_previous_database_credentials_summary">ارجع للوحة المفاتيح السابقة تلقائيًا في شاشة بيانات اعتماد قاعدة البيانات.</string>
|
||||
<string name="keyboard_previous_database_credentials_summary">الرجوع للوحة المفاتيح السابقة تلقائيًا في شاشة بيانات اعتماد قاعدة البيانات</string>
|
||||
<string name="autofill_manual_selection_summary">اعرض خيارًا يسمح للمستخدم باختيار مدخلة من قاعدة البيانات</string>
|
||||
<string name="keyboard_previous_search_title">شاشة البحث</string>
|
||||
<string name="keyboard_previous_search_summary">ارجع للوحة المفاتيح السابقة تلقائيًا في شاشة البحث</string>
|
||||
@@ -510,16 +510,177 @@
|
||||
<string name="autofill_close_database_summary">أغلق قاعدة البيانات بعد الملء التلقائي</string>
|
||||
<string name="autofill_ask_to_save_data_summary">اسأل عن حفظ البيانات عند ملئك لنموذج</string>
|
||||
<string name="templates_group_uuid_title">مجموعة القوالب</string>
|
||||
<string name="advanced_unlock_timeout">انتهت مهلة فك القفل المتقدم</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">مهلة استخدام فك القفل المتقدم قبل حذف محتواها</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">أتريد حذف كل مفاتيح التعمية المرتبطة بفك القفل المتقدم؟</string>
|
||||
<string name="advanced_unlock_timeout">انتهت مهلة فتح الجهاز</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">مهلة استخدام فتح الجهاز قبل حذف محتواها</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">أتريد حذف كل مفاتيح التشفير المرتبطة بفتح الجهاز؟</string>
|
||||
<string name="templates">القوالب</string>
|
||||
<string name="templates_group_enable_title">استخدام القوالب</string>
|
||||
<string name="notification">الإشعارات</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">لا تستخدم أي محتوى معمى لاستخدام فك القفل المتقدم</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">انتهاء صلاحية فك القفل المتقدم</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">لا تقم بتخزين أي محتوى مشفر لاستخدام إلغاء قفل الجهاز</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">انتهاء صلاحية فتح الحهاز</string>
|
||||
<string name="hide_expired_entries_title">إخفاء الإدخالات منتهية الصلاحية</string>
|
||||
<string name="content_description_hardware_key_checkbox">خانة إختيار مفتاح الجهاز</string>
|
||||
<string name="content_description_passphrase_word_count">عدد عبارات المرور</string>
|
||||
<string name="content_description_entry_background_color">لون خلفية المدخل</string>
|
||||
<string name="passphrase">عبارة المرور</string>
|
||||
<string name="colorize_password_title">تلوين كلمات المرور</string>
|
||||
<string name="permission">الإذن</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">تعذر تهيئة موجه إلغاء قفل الجهاز.</string>
|
||||
<string name="biometric_security_update_required">مطلوب تحديث أمان المقاييس الحيوية.</string>
|
||||
<string name="advanced_unlock_not_recognized">تعذر التعرف على طباعة فتح الجهاز</string>
|
||||
<string name="temp_advanced_unlock_enable_title">فتح جهاز مؤقت</string>
|
||||
<string name="autofill_inline_suggestions_title">اقتراحات مضمنة</string>
|
||||
<string name="education_setup_OTP_summary">قم بإعداد إدارة كلمات المرور لمرة واحدة (HOTP / TOTP) لإنشاء رمز مميز مطلوب للمصادقة الثنائية (2FA).</string>
|
||||
<string name="education_field_copy_summary">يمكن لصق الحقول المنسوخة في أي مكان.
|
||||
\n
|
||||
\nاستخدم طريقة ملء النموذج التي تفضلها.</string>
|
||||
<string name="html_text_dev_feature_work_hard">نحن نعمل بجد لإصدار هذه الميزة بسرعة.</string>
|
||||
<string name="autofill_inline_suggestions_summary">حاول عرض اقتراحات الملء التلقائي مباشرة من لوحة مفاتيح متوافقة</string>
|
||||
<string name="delete_entered_password_summary">يحذف كلمة المرور التي تم إدخالها بعد محاولة الاتصال بقاعدة البيانات</string>
|
||||
<string name="education_lock_summary">اقفل قاعدةبياناتك بسرعة، يمكنك إعداد التطبيق لقفلها بعد فترة، وعند إيقاف تشغيل الشاشة.</string>
|
||||
<string name="education_sort_title">فرز العنصر</string>
|
||||
<string name="contribute">ساهِم</string>
|
||||
<string name="upload_attachment">رفع %1$s</string>
|
||||
<string name="download_canceled">ألغيت!</string>
|
||||
<string name="unit_kibibyte">كيلو بايت</string>
|
||||
<string name="unit_mebibyte">ميغا بايت</string>
|
||||
<string name="unit_gibibyte">جيجابت</string>
|
||||
<string name="entropy">إنتروبيا: %1$s بت</string>
|
||||
<string name="entropy_high">الانتروبيا: مرتفع</string>
|
||||
<string name="entropy_calculate">الانتروبيا: احسب…</string>
|
||||
<string name="exclude_ambiguous_chars">استبعاد الأحرف الغامضة</string>
|
||||
<string name="consider_chars_filter">ضع في اعتبارك الأحرف</string>
|
||||
<string name="ignore_chars_filter">تجاهل الأحرف</string>
|
||||
<string name="style_choose_title">سمة التطبيق</string>
|
||||
<string name="lower_case">أحرف صغيرة</string>
|
||||
<string name="upper_case">الأحرف الكبيرة</string>
|
||||
<string name="title_case">حالة العنوان</string>
|
||||
<string name="character_count">عدد الأحرف: %1$d</string>
|
||||
<string name="style_choose_summary">السمة المستخدمة في التطبيق</string>
|
||||
<string name="show_entry_colors_summary">يعرض ألوان المقدمة والخلفية لإدخال</string>
|
||||
<string name="icon_pack_choose_summary">حزمة الأيقونات المستخدمة في التطبيق</string>
|
||||
<string name="show_entry_colors_title">ألوان الدخول</string>
|
||||
<string name="device_credential_unlock_enable_title">فتح بيانات اعتماد الجهاز</string>
|
||||
<string name="autofill_block_restart">أعد تشغيل التطبيق الذي يحتوي على النموذج لتنشيط الحظر.</string>
|
||||
<string name="education_donation_title">مشاركة</string>
|
||||
<string name="education_donation_summary">ساعد في زيادة الاستقرار والأمان وفي إضافة المزيد من الميزات.</string>
|
||||
<string name="html_text_dev_feature">هذه الميزة <strong> قيد التطوير</strong> وتتطلب <strong> مساهمتك</strong> لتكون متاحة قريبًا.</string>
|
||||
<string name="html_text_dev_feature_contibute">من خلال <strong> المساهمة</strong> ،</string>
|
||||
<string name="download_finalization">جارِ الانتهاء…</string>
|
||||
<string name="download_complete">مكتمل!</string>
|
||||
<string name="unit_byte">B</string>
|
||||
<string name="icon_section_custom">مُخصص</string>
|
||||
<string name="content_description_entry_foreground_color">لون مقدمة الدخول</string>
|
||||
<string name="keyboard_previous_fill_in_summary">العودة تلقائيًا إلى لوحة المفاتيح السابقة بعد تنفيذ \"إجراء المفتاح التلقائي\"</string>
|
||||
<string name="download_attachment">تثبيت %1$s</string>
|
||||
<string name="html_about_privacy"><strong> لا يتم استرداد أي بيانات مستخدم</strong>، هذا التطبيق لا يتصل بأي خادم، ويعمل محليًا فقط ويحترم خصوصية المستخدمين تمامًا.</string>
|
||||
<string name="error_cancel_by_user">ألغى المستخدم.</string>
|
||||
<string name="show_otp_token_title">إظهار رمز \"الاقتران لمرة واحدة\" OTP</string>
|
||||
<string name="show_otp_token_summary">إظهار رموز\"الاقتران لمرة واحدة\" في قائمة المدخلات</string>
|
||||
<string name="warning_database_already_opened">قاعدة البيانات مفتوحة بالفعل، أغلقها أولاً لفتح قاعدة البيانات الجديدة</string>
|
||||
<string name="warning_database_info_reloaded">ستؤدي إعادة تحميل قاعدة البيانات إلى حذف البيانات المعدلة محليًا.</string>
|
||||
<string name="templates_group_enable_summary">استخدم القوالب الديناميكية لملء حقول الإدخال</string>
|
||||
<string name="keyboard_auto_go_action_summary">إجراء مفتاح \"Go\" بعد الضغط على مفتاح \"Field\"</string>
|
||||
<string name="allow_no_password_summary">يسمح بالنقر فوق الزر \"فتح\" إذا لم يتم تحديد بيانات اعتماد</string>
|
||||
<string name="education_generate_password_summary">أنشئ كلمة مرور قوية لربطها بإدخالك، وحددها بسهولة وفقًا لمعايير النموذج ولا تنس كلمة المرور الآمنة.</string>
|
||||
<string name="education_setup_OTP_title">قم بإعداد OTP</string>
|
||||
<string name="style_brightness_title">سطوع السمة</string>
|
||||
<string name="word_separator">الفاصل</string>
|
||||
<string name="screenshot_mode_banner_text">وضع لقطة الشاشة</string>
|
||||
<string name="style_brightness_summary">اختيار سمة فاتحة او داكنة</string>
|
||||
<string name="icon_section_standard">قياسي</string>
|
||||
<string name="wireless">واي فاي Wi-Fi</string>
|
||||
<string name="icon_pack_choose_title">حزمة أيقونات</string>
|
||||
<string name="content_description_nav_header">رأس التنقل</string>
|
||||
<string name="inherited">موروث</string>
|
||||
<string name="auto_type_sequence">تسلسل الكتابة تلقائيًا</string>
|
||||
<string name="kdf_explanation">لإنشاء مفتاح خوارزمية التشفير، يتحول المفتاح الرئيسي باستخدام وظيفة اشتقاق مفتاح مملح عشوائيًا.</string>
|
||||
<string name="html_text_dev_feature_buy_pro">بشراء الإصدار <strong> pro </strong>،</string>
|
||||
<string name="auto_type">كتابة تلقائيًا</string>
|
||||
<string name="hardware_key">مفتاح الجهاز</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">رابط لفتح الجهاز</string>
|
||||
<string name="backspace">فراغ للخلف</string>
|
||||
<string name="enter">دخول</string>
|
||||
<string name="education_sort_summary">اختر كيفية فرز الإدخالات والمجموعات.</string>
|
||||
<string name="html_text_feature_generosity">هذا <strong> النمط المرئي</strong> متاح بفضل كرمك.</string>
|
||||
<string name="info">المعلومات</string>
|
||||
<string name="waiting_challenge_response">في انتظار استجابة التحدي…</string>
|
||||
<string name="bank_identifier_code">SWIFT / BIC</string>
|
||||
<string name="international_bank_account_number">IBAN</string>
|
||||
<string name="error_no_hardware_key">حدد مفتاح الجهاز.</string>
|
||||
<string name="colorize_password_summary">تلوين أحرف كلمة المرور حسب النوع</string>
|
||||
<string name="enable_keep_screen_on_summary">استمر في تشغيل الشاشة عند مشاهدة إدخال أو تعديله</string>
|
||||
<string name="enable_screenshot_mode_title">وضع لقطة الشاشة</string>
|
||||
<string name="navigation_drawer_open">درج التنقل مفتوح</string>
|
||||
<string name="waiting_challenge_request">في انتظار طلب التحدي…</string>
|
||||
<string name="navigation_drawer_close">درج التنقل مقفول</string>
|
||||
<string name="error_XML_malformed">XML تالف.</string>
|
||||
<string name="error_otp_type">لم يتم التعرف على نوع OTP الحالي من خلال هذا النموذج، وقد لا يؤدي التحقق من صحته إلى إنشاء الرمز المميز بشكل صحيح.</string>
|
||||
<string name="error_challenge_already_requested">التحدي مطلوب بالفعل</string>
|
||||
<string name="error_response_already_provided">تقدم الرد بالفعل.</string>
|
||||
<string name="error_no_response_from_challenge">غير قادر على الحصول على رد من التحدي.</string>
|
||||
<string name="error_driver_required">مطلوب تعريف لـ%1$s.</string>
|
||||
<string name="error_unable_merge_database_kdb">تعذر الدمج من قاعدة بيانات V1.</string>
|
||||
<string name="error_location_unknown">موقع قاعدة البيانات غير معروف، لا يمكن تنفيذ إجراء قاعدة البيانات.</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">القياس الحيوي، بيانات اعتماد الجهاز</string>
|
||||
<string name="menu_database_settings_summary">البيانات الوصفية، سلة المحذوفات، القوالب، التاريخ</string>
|
||||
<string name="menu_security_settings_summary">التشفير، وظيفة اشتقاق المفتاح</string>
|
||||
<string name="error_hardware_key_unsupported">مفتاح الجهاز غير مدعوم.</string>
|
||||
<string name="master_key_settings_summary">التغيير والتجديد</string>
|
||||
<string name="error_empty_key">لا يمكن أن يكون المفتاح فارغًا.</string>
|
||||
<string name="corrupted_file">ملف تالف.</string>
|
||||
<string name="warning_keyfile_integrity">لا يتم ضمان تجزئة الملف لأن Android يمكنه تغيير بياناته بسرعة. قم بتغيير امتداد الملف إلى bin. من أجل التكامل الصحيح.</string>
|
||||
<string name="invalid_db_same_uuid">%1$s بنفس UUID %2$s موجود بالفعل.</string>
|
||||
<string name="remember_hardware_key_title">تذكر مفاتيح الأجهزة</string>
|
||||
<string name="warning_exact_alarm">لم تسمح للتطبيق باستخدام منبه دقيق. نتيجة لذلك، لن يتم تنفيذ الميزات التي تتطلب مؤقتًا في وقت محدد.</string>
|
||||
<string name="remember_hardware_key_summary">يتتبع مفاتيح الأجهزة المستخدمة</string>
|
||||
<string name="warning_database_notification_permission">يسمح لك إذن الإشعار بعرض حالة قاعدة البيانات وقفلها باستخدام زر يسهل الوصول إليه.
|
||||
\n
|
||||
\nإذا لم تنشط هذا الإذن، فلن تكون قاعدة البيانات المفتوحة في الخلفية مرئية إذا كان هناك تطبيق آخر في المقدمة.</string>
|
||||
<string name="warning_copy_permission">مطلوب إذن الإشعار لاستخدام ميزة إشعار الحافظة.</string>
|
||||
<string name="merge_success">اكتمل الدمج بنجاح</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">ما زلت بحاجة إلى تذكر بيانات الاعتماد الرئيسية في مخزنك إذا كنت تستخدم التعرف على فتح الجهاز.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">التعرف على فتح الجهاز</string>
|
||||
<string name="later">لاحقًا</string>
|
||||
<string name="configure">تضبيط</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">استخراج بيانات اعتماد قاعدة البيانات مع بيانات فتح الجهاز</string>
|
||||
<string name="ask">إسأل</string>
|
||||
<string name="configure_biometric">لم تسجل بيانات اعتماد المقاييس الحيوية أو الجهاز.</string>
|
||||
<string name="show_uuid_title">إظهار \"المعرف العام المميز\" UUID</string>
|
||||
<string name="unlock_and_link_biometric">رابط فتح الجهاز</string>
|
||||
<string name="advanced_unlock_invalid_key">لا يمكن قراءة مفتاح فتح الجهاز. يرجى حذفه وتكرار إجراء التعرف على الفتح.</string>
|
||||
<string name="advanced_unlock_scanning_error">خطأ في فتح الجهاز: %1$s</string>
|
||||
<string name="menu_appearance_settings_summary">المظاهر والألوان والسمات</string>
|
||||
<string name="autofill_explanation_summary">تمكين الملء التلقائي لملء النماذج بسرعة في التطبيقات الأخرى</string>
|
||||
<string name="device_credential_unlock_enable_summary">يتيح لك استخدام بيانات اعتماد جهازك لفتح قاعدة البيانات</string>
|
||||
<string name="autofill_service_name">KeePassDX نموذج الملء التلقائي</string>
|
||||
<string name="unlock">فتح</string>
|
||||
<string name="menu_app_settings_summary">البحث، القفل، التاريخ، الخصائص</string>
|
||||
<string name="menu_form_filling_settings_summary">لوحة المفاتيح، الملء التلقائي، الحافظة</string>
|
||||
<string name="advanced_unlock_keystore_warning">ستقوم هذه الميزة بتخزين بيانات الاعتماد المشفرة في KeyStore الآمن بجهازك.
|
||||
\n
|
||||
\nاعتمادًا على تطبيق API الأصلي لنظام التشغيل، قد لا يعمل بكامل طاقته.
|
||||
\nتحقق من توافق وأمن KeyStore مع الشركة المصنعة لجهازك ومنشئ ROM الذي تستخدمه.</string>
|
||||
<string name="keyboard_selection_entry_summary">عند عرض إدخال في KeePassDX، عبئ Magikeyboard بهذا الإدخال</string>
|
||||
<string name="enable_screenshot_mode_summary">اسمح لتطبيقات الطرف الثالث بتسجيل أو التقاط لقطات شاشة للتطبيق</string>
|
||||
<string name="keyboard_save_search_info_summary">حاول حفظ المعلومات المشتركة عند إجراء اختيار إدخال يدوي لاستخدامات مستقبلية أسهل</string>
|
||||
<string name="education_entry_edit_summary">تحرير الإدخال الخاص بك مع الحقول المخصصة. يمكن الرجوع إلى بيانات التجمع بين حقول الإدخال المختلفة.</string>
|
||||
<string name="education_validate_entry_title">تحقق من صحة الإدخال</string>
|
||||
<string name="education_validate_entry_summary">تذكر التحقق من صحة الإدخال الخاص بك وحفظ قاعدة البيانات الخاصة بك.
|
||||
\n
|
||||
\nإذا تم تنشيط القفل التلقائي ونسيت أنك تجري تعديلاً، فإنك تخاطر بفقدان بياناتك.</string>
|
||||
<string name="education_entry_new_field_summary">قم بتسجيل حقل إضافي، أضف قيمة وقم بحمايته بشكل اختياري.</string>
|
||||
<string name="education_unlock_summary">أدخل كلمة المرور و/أو ملف المفتاح لفتح قاعدة بياناتك.
|
||||
\n
|
||||
\nقم بعمل نسخة احتياطية من ملف قاعدة البيانات في مكان آمن بعد كل تغيير.</string>
|
||||
<string name="html_text_dev_feature_thanks">شكرا جزيلا لمساهمتك.</string>
|
||||
<string name="at_least_one_char">على الأقل حرف واحد من كل منهما</string>
|
||||
<string name="html_text_dev_feature_upgrade">تذكر أن تحافظ على تحديث تطبيقك عن طريق تثبيت إصدارات جديدة.</string>
|
||||
<string name="download">تثبيت</string>
|
||||
<string name="html_text_ad_free">على عكس العديد من تطبيقات إدارة كلمات المرور ، فإن هذا التطبيق <strong>بدون إعلانات</strong>، و <strong>برنامج حر متروك الحقوق</strong> ولا يجمع البيانات الشخصية على خوادمه، بغض النظر عن الإصدار الذي تستخدمه.</string>
|
||||
<string name="download_initialization">جارِ التهيئة…</string>
|
||||
<string name="download_progression">قيد التقدم: %1$d%%</string>
|
||||
<string name="html_text_buy_pro">بشراء الإصدار الاحترافي، ستتمتع بإمكانية الوصول إلى هذا <strong> النمط المرئي</strong> وستساعد بشكل خاص في <strong> تنفيذ مشروعات المجتمع. </strong></string>
|
||||
<string name="html_text_donation">من أجل الحفاظ على حريتنا ولكي نكون نشيطين دائمًا، فإننا نعتمد على <strong> مساهمتك.</strong></string>
|
||||
<string name="html_text_dev_feature_encourage">أنت تشجع المطورين على إنشاء <strong> ميزات جديدة</strong> و <strong> إصلاح الخلل</strong> وفقًا لملاحظاتك.</string>
|
||||
</resources>
|
||||
@@ -1,12 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="feedback">Обратна връзка</string>
|
||||
<string name="encryption_algorithm">Алгоритъм за криптиране</string>
|
||||
<string name="encryption">Криптиране</string>
|
||||
<string name="encryption_algorithm">Алгоритъм за шифроване</string>
|
||||
<string name="encryption">Шифроване</string>
|
||||
<string name="security">Сигурност</string>
|
||||
<string name="master_key">Главен ключ</string>
|
||||
<string name="add_group">Добави група</string>
|
||||
<string name="edit_entry">Редактирай</string>
|
||||
<string name="add_entry">Добави</string>
|
||||
<string name="accept">Приемам</string>
|
||||
<string name="add_group">Нова група</string>
|
||||
<string name="edit_entry">Редактиране на запис</string>
|
||||
<string name="add_entry">Добавяне на запис</string>
|
||||
<string name="accept">Приемане</string>
|
||||
<string name="biometric_delete_all_key_title">Изтриване на шифроващите ключове</string>
|
||||
<string name="digits">Цифри</string>
|
||||
<string name="contact">За контакт</string>
|
||||
<string name="app_timeout">Време за изчакване</string>
|
||||
<string name="application">Приложение</string>
|
||||
<string name="brackets">Скоби</string>
|
||||
<string name="about">Относно</string>
|
||||
<string name="info">Информация</string>
|
||||
<string name="clipboard_cleared">Клипбордът е изчистен</string>
|
||||
<string name="content_description_add_group">Нова група</string>
|
||||
</resources>
|
||||
@@ -42,7 +42,7 @@
|
||||
<string name="decrypting_db">Dešifruji obsah databáze…</string>
|
||||
<string name="default_checkbox">Použít jako výchozí databázi</string>
|
||||
<string name="digits">Číslice</string>
|
||||
<string name="select_database_file">Otevřít existující databázi</string>
|
||||
<string name="select_database_file">Otevřít existující trezor</string>
|
||||
<string name="entry_accessed">Poslední přístup</string>
|
||||
<string name="entry_cancel">Zrušit</string>
|
||||
<string name="entry_notes">Poznámky</string>
|
||||
@@ -174,7 +174,7 @@
|
||||
<string name="warning_empty_password">Pokračovat bez ochrany heslem\?</string>
|
||||
<string name="warning_no_encryption_key">Pokračovat bez šifrovacího klíče\?</string>
|
||||
<string name="encrypted_value_stored">Šifrované heslo uloženo</string>
|
||||
<string name="unavailable">Tato databáze zatím nemá uložené heslo.</string>
|
||||
<string name="unavailable">Nedostupné</string>
|
||||
<string name="database_history">Historie</string>
|
||||
<string name="menu_appearance_settings">Vzhled</string>
|
||||
<string name="general">Obecné</string>
|
||||
@@ -194,18 +194,18 @@
|
||||
<string name="lock">Zamknout</string>
|
||||
<string name="lock_database_screen_off_title">Zámek obrazovky</string>
|
||||
<string name="lock_database_screen_off_summary">Několik vteřin po zhasnutí obrazovky uzamknout databázi</string>
|
||||
<string name="advanced_unlock">Rozšířené odemknutí</string>
|
||||
<string name="advanced_unlock">Odemykání zařízení</string>
|
||||
<string name="biometric_unlock_enable_title">Biometrické odemknutí</string>
|
||||
<string name="biometric_unlock_enable_summary">Nechá otevřít databázi snímáním biometrického údaje</string>
|
||||
<string name="biometric_delete_all_key_title">Smazat šifrovací klíče</string>
|
||||
<string name="biometric_delete_all_key_summary">Smazat všechny šifrovací klíče související s rozpoznáním rozšířeného odemknutí</string>
|
||||
<string name="biometric_delete_all_key_summary">Odstranit všechny šifrovací klíče související s rozpoznáním odemykání zařízení</string>
|
||||
<string name="unavailable_feature_text">Tuto funkci se nedaří spustit.</string>
|
||||
<string name="unavailable_feature_version">V zařízení je instalován Android %1$s, ale potřebná je verze %2$s a novější.</string>
|
||||
<string name="unavailable_feature_hardware">Odpovídající hardware nebyl rozpoznán.</string>
|
||||
<string name="file_name">Název souboru</string>
|
||||
<string name="path">Cesta</string>
|
||||
<string name="assign_master_key">Přiřadit hlavní klíč</string>
|
||||
<string name="create_keepass_file">Založit novou databázi</string>
|
||||
<string name="create_keepass_file">Vytvořit nový trezor</string>
|
||||
<string name="recycle_bin_title">Využití koše</string>
|
||||
<string name="recycle_bin_summary">Před smazáním přesune vybrané položky do skupiny s názvem \"Koš\"</string>
|
||||
<string name="monospace_font_fields_enable_title">Písmo kolonek</string>
|
||||
@@ -245,7 +245,7 @@
|
||||
<string name="education_entry_edit_summary">Přidejte ke svému záznamu vlastní kolonky. Společná data mohou být sdílena mezi různými kolonkami záznamu odkazem.</string>
|
||||
<string name="education_generate_password_title">Vytvořit silné heslo</string>
|
||||
<string name="education_generate_password_summary">Nechte si vytvořit odolné heslo pro svůj záznam, definujte je podle kritérií formuláře, a nezapomeňte na bezpečné heslo.</string>
|
||||
<string name="education_entry_new_field_title">Přidat vlastní kolonky</string>
|
||||
<string name="education_entry_new_field_title">Přidat vlastní pole</string>
|
||||
<string name="education_entry_new_field_summary">Registrovat další kolonku, zadat hodnotu a volitelně ji ochránit.</string>
|
||||
<string name="education_unlock_title">Odemknout databázi</string>
|
||||
<string name="education_read_only_title">Ochraňte svou databázi před zápisem</string>
|
||||
@@ -336,7 +336,7 @@
|
||||
<string name="menu_advanced_unlock_settings">Odemknutí zařízení</string>
|
||||
<string name="biometric">Biometrika</string>
|
||||
<string name="biometric_auto_open_prompt_title">Automaticky otevřít pobídku</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Automaticky žádat rozšířené odemknutí, je-li databáze nastavena k jejímu použití</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Automaticky žádat odemykání zařízení, je-li databáze nastavena k jejímu použití</string>
|
||||
<string name="enable">Zapnout</string>
|
||||
<string name="disable">Vypnout</string>
|
||||
<string name="master_key">Hlavní klíč</string>
|
||||
@@ -365,7 +365,7 @@
|
||||
<string name="contains_duplicate_uuid_procedure">Opravit chybu založením nového UUID pro duplikáty a pokračovat\?</string>
|
||||
<string name="database_opened">Databáze otevřena</string>
|
||||
<string name="clipboard_explanation_summary">Kopírovat kolonky záznamů pomocí schránky Vašeho zařízení</string>
|
||||
<string name="advanced_unlock_explanation_summary">K snadnějšímu otevření databáze použijte rozšířené odemknutí</string>
|
||||
<string name="advanced_unlock_explanation_summary">Pro snadnější otevření databáze použít odemykání zařízení</string>
|
||||
<string name="database_data_compression_title">Komprese dat</string>
|
||||
<string name="database_data_compression_summary">Komprese dat snižuje velikost databáze</string>
|
||||
<string name="max_history_items_title">Maximální počet</string>
|
||||
@@ -446,7 +446,7 @@
|
||||
<string name="error_string_type">Tento text se s požadovanou položkou neshoduje.</string>
|
||||
<string name="content_description_add_item">Přidat položku</string>
|
||||
<string name="keyboard_previous_fill_in_summary">Automaticky přepnout na předchozí klávesnici po provedení \"Akce auto-klávesy\"</string>
|
||||
<string name="keyboard_previous_fill_in_title">Akce auto-klávesy</string>
|
||||
<string name="keyboard_previous_fill_in_title">Přepnout zpět</string>
|
||||
<string name="keyboard_previous_database_credentials_summary">Automaticky přepnout zpět na předchozí klávesnici na obrazovce ověřovacích údajů databáze</string>
|
||||
<string name="keyboard_previous_database_credentials_title">Obrazovka ověřovacích údajů databáze</string>
|
||||
<string name="keyboard_change">Přepnout klávesnici</string>
|
||||
@@ -493,28 +493,28 @@
|
||||
<string name="select_entry">Vybrat záznam</string>
|
||||
<string name="back_to_previous_keyboard">Zpět na předchozí klávesnici</string>
|
||||
<string name="custom_fields">Vlastní kolonky</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Smazat všechny šifrovací klíče související s rozpoznáním rozšířeného odemknutí\?</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Odstranit všechny šifrovací klíče související s rozpoznáním odemykání zařízení\?</string>
|
||||
<string name="device_credential_unlock_enable_summary">Dovolí pro otevření databáze použít heslo Vašeho zařízení</string>
|
||||
<string name="device_credential_unlock_enable_title">Odemknutí heslem zařízení</string>
|
||||
<string name="device_credential">Heslo zařízení</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Zadejte heslo a pak klepněte na toto tlačítko.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Nelze inicializovat pobídku pro rozšířené odemknutí.</string>
|
||||
<string name="advanced_unlock_scanning_error">Chyba při rozšířeném odemknutí: %1$s</string>
|
||||
<string name="advanced_unlock_not_recognized">Otisk pro rozšířené odemknutí nebyl rozpoznán</string>
|
||||
<string name="advanced_unlock_invalid_key">Nedaří se načíst klíč rozšířeného odemknutí. Prosím, smažte ho a opakujte proces rozpoznání odemknutí.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Načíst důvěrný údaj pomocí dat rozšířeného odemknutí</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Otevřít pomocí rozšířeného odemykání</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Pokud použijete rozpoznání rozšířeného odemknutí, musíte si i nadále pamatovat hlavní heslo.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Rozpoznání rozšířeného odemknutí</string>
|
||||
<string name="menu_keystore_remove_key">Smazat klíč rozšířeného odemknutí</string>
|
||||
<string name="education_advanced_unlock_title">Rozšířené odemknutí databáze</string>
|
||||
<string name="advanced_unlock_timeout">Časový limit rozšířeného odemknutí</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Trvání použití rozšířeného odemknutí než bude obsah téhož smazán</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Za účelem rozšířeného odemknutí neukládat žádný šifrovaný obsah</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Přechodné rozšířené odemknutí</string>
|
||||
<string name="advanced_unlock_tap_delete">Pro odstranění klíčů rozšířeného odemknutí klepnout</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Nepodařilo se inicializovat nabídku pro odemykání zařízení.</string>
|
||||
<string name="advanced_unlock_scanning_error">Chyba při odemykání zařízení: %1$s</string>
|
||||
<string name="advanced_unlock_not_recognized">Otisk pro odemykání zařízení nebyl rozpoznán</string>
|
||||
<string name="advanced_unlock_invalid_key">Nepodařilo se načíst klíč odemykání zařízení. Odstraňte ho a opakujte proces rozpoznání odemknutí.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Načíst údaj z databáze pomocí dat odemykání zařízení</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Rozpoznání odemykání zařízení</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Pokud použijete rozpoznání odemykání zařízení, musíte si i nadále pamatovat hlavní heslo trezoru.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Propojit s odemykáním zařízení</string>
|
||||
<string name="menu_keystore_remove_key">Smazat klíč odemknutí zařízení</string>
|
||||
<string name="education_advanced_unlock_title">Odemykání databáze zařízením</string>
|
||||
<string name="advanced_unlock_timeout">Časový limit odemykání zařízení</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Trvání použití odemykání zařízení, než bude obsah smazán</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Za účelem odemykání zařízení neukládat žádný šifrovaný obsah</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Dočasné odemykání zařízení</string>
|
||||
<string name="advanced_unlock_tap_delete">Klepněte pro odstranění klíčů odemykání zařízení</string>
|
||||
<string name="education_advanced_unlock_summary">Abyste rychle odemknuli databázi, propojte své heslo s naskenovanou biometrikou nebo údaji zámku zařízení.</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Vypršení rozšířeného odemknutí</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Vypršení odemykání zařízení</string>
|
||||
<string name="content">Obsah</string>
|
||||
<string name="error_rebuild_list">Seznam nelze řádně sestavit.</string>
|
||||
<string name="error_database_uri_null">URI databáze nelze načíst.</string>
|
||||
@@ -615,13 +615,13 @@
|
||||
<string name="show_entry_colors_summary">Zobrazí barvy popředí a pozadí záznamu</string>
|
||||
<string name="show_entry_colors_title">Barvy záznamu</string>
|
||||
<string name="regex">Běžný výraz</string>
|
||||
<string name="enable_keep_screen_on_summary">Při prohlížení záznamu držet obrazovku zapnutou</string>
|
||||
<string name="enable_keep_screen_on_summary">Při prohlížení nebo úpravě záznamu ponechat obrazovku zapnutou</string>
|
||||
<string name="navigation_drawer_open">Otevření navigačního panelu</string>
|
||||
<string name="navigation_drawer_close">Zavření navigačního panelu</string>
|
||||
<string name="inherited">Převzít</string>
|
||||
<string name="auto_type_sequence">Posloupnost automatického vyplňování</string>
|
||||
<string name="content_description_passphrase_word_count">Počet slov hesla</string>
|
||||
<string name="passphrase">Heslo</string>
|
||||
<string name="passphrase">Heslová fráze</string>
|
||||
<string name="colorize_password_title">Zabarvit hesla</string>
|
||||
<string name="colorize_password_summary">Zabarvit znaky hesla podle typu</string>
|
||||
<string name="warning_database_already_opened">Databáze je již otevřená, zavřete ji, než otevřete jinou</string>
|
||||
@@ -667,8 +667,26 @@
|
||||
<string name="corrupted_file">Poškozený soubor.</string>
|
||||
<string name="remember_hardware_key_title">Pamatovat si hardwarové klíče</string>
|
||||
<string name="remember_hardware_key_summary">Udržuje znalost o použitých hardwarových klíčích</string>
|
||||
<string name="merge_success">Sloučení bylo úspěšně dokončeno</string>
|
||||
<string name="merge_success">Sloučení úspěšně dokončeno</string>
|
||||
<string name="info">Informace</string>
|
||||
<string name="menu_app_settings_summary">Vyhledávání, uzamčení, historie, vlastnosti</string>
|
||||
<string name="menu_form_filling_settings_summary">Klávesnice, automatické vyplnění, schránka</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometrie, údaje zařízení</string>
|
||||
<string name="menu_database_settings_summary">Metadata, koš, šablony, historie</string>
|
||||
<string name="menu_security_settings_summary">Šifrování, funkce derivace klíče</string>
|
||||
<string name="master_key_settings_summary">Změna, obnovení</string>
|
||||
<string name="warning_database_notification_permission">Oprávnění k oznámením umožňuje zobrazit stav databáze a uzamknout ji snadno přístupným tlačítkem.
|
||||
\n
|
||||
\nPokud toto oprávnění neaktivujete, nebude databáze otevřená na pozadí viditelná, pokud je v popředí jiná aplikace.</string>
|
||||
<string name="warning_copy_permission">Oprávnění k oznámením je potřeba pro použití funkce oznámení o schránce.</string>
|
||||
<string name="later">Později</string>
|
||||
<string name="ask">Zeptat se</string>
|
||||
<string name="configure">Nastavit</string>
|
||||
<string name="unlock_and_link_biometric">Propojení s odemykáním zařízení</string>
|
||||
<string name="menu_appearance_settings_summary">Motivy, barvy, atributy</string>
|
||||
<string name="unlock">Odemknout</string>
|
||||
<string name="education_validate_entry_title">Ověřit vstup</string>
|
||||
<string name="education_validate_entry_summary">Nezapomeňte ověřit svůj vstup a uložit databázi.
|
||||
\n
|
||||
\nPokud je aktivované automatické uzamčení a zapomenete, že jste něco upravili, riskujete ztrátu dat.</string>
|
||||
</resources>
|
||||
@@ -224,9 +224,9 @@
|
||||
<string name="reset_education_screens_summary">Alle Hilfsinfos nochmal anzeigen</string>
|
||||
<string name="reset_education_screens_text">Hilfeanzeige zurückgesetzt</string>
|
||||
<string name="education_create_database_title">Datenbankdatei erstellen</string>
|
||||
<string name="education_create_database_summary">Die erste Datei zur Passwortverwaltung erstellen.</string>
|
||||
<string name="education_create_database_summary">Erstellt eine erste Datei zur Passwortverwaltung.</string>
|
||||
<string name="education_select_database_title">Existierende Datenbank öffnen</string>
|
||||
<string name="education_select_database_summary">Eine frühere Datenbankdatei mit dem Dateimanager öffnen, um sie weiter zu verwenden.</string>
|
||||
<string name="education_select_database_summary">Öffnet über den Dateimanager eine früher erstellte Datenbankdatei, um sie weiter zu verwenden.</string>
|
||||
<string name="education_new_node_title">Datenbankelemente hinzufügen</string>
|
||||
<string name="education_new_node_summary">Einträge helfen dabei digitale Konten zu verwalten.
|
||||
\n
|
||||
@@ -236,7 +236,7 @@
|
||||
<string name="education_entry_edit_title">Eintrag bearbeiten</string>
|
||||
<string name="education_entry_edit_summary">Dem Eintrag eigene Felder hinzufügen. Die Felder können mit Querverweisen aus anderen Einträgen ergänzt werden.</string>
|
||||
<string name="education_generate_password_title">Ein starkes Passwort erstellen</string>
|
||||
<string name="education_generate_password_summary">Ein starkes Passwort generieren, um es mit dem Eintrag zu verknüpfen; es den Anforderungen des Formulars anpassen und die Passwortsicherheit nicht vergessen.</string>
|
||||
<string name="education_generate_password_summary">Lassen Sie ein starkes Passwort erstellen, das mit Ihrem Eintrag verbunden wird, legen Sie es einfach anhand von Formularkriterien fest und vergessen Sie nicht Ihr Passwort zu sichern.</string>
|
||||
<string name="education_entry_new_field_title">Eigene Felder hinzufügen</string>
|
||||
<string name="education_entry_new_field_summary">Ein zusätzliches Feld einfügen, einen Wert hinzufügen und diesen optional schützen.</string>
|
||||
<string name="education_unlock_title">Datenbank entsperren</string>
|
||||
@@ -427,17 +427,15 @@
|
||||
<string name="hide_expired_entries_summary">Abgelaufene Einträge werden nicht angezeigt</string>
|
||||
<string name="style_choose_title">App-Design</string>
|
||||
<string name="style_choose_summary">In der App verwendetes Design</string>
|
||||
<string-array name="list_style_names">
|
||||
<item>Wald</item>
|
||||
<item>Göttlich</item>
|
||||
<item>Klassisch</item>
|
||||
<item>Einfach</item>
|
||||
<item>Mond</item>
|
||||
<item>Sonne</item>
|
||||
<item>Antwort</item>
|
||||
<item>Kunzite</item>
|
||||
<item>System verfolgen</item>
|
||||
</string-array>
|
||||
<string name="style_name_forest">Wald</string>
|
||||
<string name="style_name_divine">Göttlich</string>
|
||||
<string name="style_name_classic">Klassisch</string>
|
||||
<string name="style_name_simple">Einfach</string>
|
||||
<string name="style_name_moon">Mond</string>
|
||||
<string name="style_name_sun">Sonne</string>
|
||||
<string name="style_name_reply">Antwort</string>
|
||||
<string name="style_name_kunzite">Kunzite</string>
|
||||
<string name="style_name_follow_system">System verfolgen</string>
|
||||
<string name="warning_database_read_only">Schreibrechte gewähren, um Datenbankänderungen zu speichern</string>
|
||||
<string name="education_setup_OTP_summary">Einmal-Passwortverwaltung (HOTP/TOTP) einrichten, um Token für Zwei-Faktor-Authentifizierung (2FA) zu generieren.</string>
|
||||
<string name="education_setup_OTP_title">OTP einrichten</string>
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<string name="digits">Dígitos</string>
|
||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft es de <strong>código abierto</strong> y <strong>sin publicidad</strong>.
|
||||
\nSe proporciona tal cual, bajo licencia <strong>GPLv3</strong>, sin ninguna garantía.</string>
|
||||
<string name="select_database_file">Abrir base de datos existente</string>
|
||||
<string name="select_database_file">Abrir la cámara acorazada existente</string>
|
||||
<string name="entry_accessed">Accedido</string>
|
||||
<string name="entry_cancel">Cancelar</string>
|
||||
<string name="entry_notes">Notas</string>
|
||||
@@ -91,11 +91,11 @@
|
||||
<string name="menu_change_key_settings">Cambiar contraseña maestra</string>
|
||||
<string name="settings">Configuración</string>
|
||||
<string name="menu_database_settings">Configuración de base de datos</string>
|
||||
<string name="menu_delete">Eliminar</string>
|
||||
<string name="menu_delete">Borrar</string>
|
||||
<string name="menu_donate">Donar</string>
|
||||
<string name="menu_edit">Editar</string>
|
||||
<string name="menu_hide_password">Ocultar contraseña</string>
|
||||
<string name="menu_lock">Bloquear base de datos</string>
|
||||
<string name="menu_lock">Bloquear la base de datos</string>
|
||||
<string name="menu_open">Abrir</string>
|
||||
<string name="menu_search">Buscar</string>
|
||||
<string name="menu_showpass">Mostrar contraseña</string>
|
||||
@@ -106,7 +106,7 @@
|
||||
<string name="no_url_handler">Instale un navegador web para abrir esta URL.</string>
|
||||
<string name="progress_create">Creando nueva base de datos…</string>
|
||||
<string name="progress_title">Trabajando…</string>
|
||||
<string name="content_description_remove_from_list">Eliminar</string>
|
||||
<string name="content_description_remove_from_list">Quitar</string>
|
||||
<string name="root">Raíz</string>
|
||||
<string name="rounds">Rondas de transformación</string>
|
||||
<string name="rounds_explanation">Un alto número de pasadas de cifrado proporciona protección adicional contra ataques de fuerza bruta, pero puede ralentizar mucho el cargado y el guardado.</string>
|
||||
@@ -169,7 +169,7 @@
|
||||
<string name="encrypted_value_stored">Contraseña cifrada almacenada</string>
|
||||
<string name="database_history">Historial</string>
|
||||
<string name="autofill_explanation_summary">Habilite el servicio para completar formularios fácilmente desde otras aplicaciones</string>
|
||||
<string name="unavailable">Esta base de datos aún no tiene credenciales almacenadas.</string>
|
||||
<string name="unavailable">No disponible</string>
|
||||
<string name="menu_appearance_settings">Apariencia</string>
|
||||
<string name="general">General</string>
|
||||
<string name="autofill">Autocompletado</string>
|
||||
@@ -186,18 +186,18 @@
|
||||
<string name="lock">Bloquear</string>
|
||||
<string name="lock_database_screen_off_title">Bloqueo de pantalla</string>
|
||||
<string name="lock_database_screen_off_summary">Bloquear la base de datos después de unos segundos cuando la pantalla esté apagada</string>
|
||||
<string name="advanced_unlock">Desbloqueo avanzado</string>
|
||||
<string name="advanced_unlock">Desbloqueo del dispositivo</string>
|
||||
<string name="biometric_unlock_enable_title">Desbloqueo biométrico</string>
|
||||
<string name="biometric_unlock_enable_summary">Le permite escanear sus datos biométricos para abrir la base de datos</string>
|
||||
<string name="biometric_delete_all_key_title">Eliminar claves de cifrado</string>
|
||||
<string name="biometric_delete_all_key_summary">Eliminar todas las claves de cifrado relacionadas con el reconocimiento de desbloqueo avanzado</string>
|
||||
<string name="biometric_delete_all_key_summary">Borrar todas las claves de cifrado relacionadas con el reconocimiento de desbloqueo del dispositivo</string>
|
||||
<string name="unavailable_feature_text">No se pudo iniciar esta funcionalidad.</string>
|
||||
<string name="unavailable_feature_version">El dispositivo funciona con Android %1$s, pero necesita %2$s o posterior.</string>
|
||||
<string name="unavailable_feature_hardware">No se pudo encontrar el hardware correspondiente.</string>
|
||||
<string name="file_name">Nombre del archivo</string>
|
||||
<string name="path">Ruta</string>
|
||||
<string name="assign_master_key">Asignar una clave maestra</string>
|
||||
<string name="create_keepass_file">Crear nueva base de datos</string>
|
||||
<string name="create_keepass_file">Crear una nueva cámara acorazada</string>
|
||||
<string name="recycle_bin_title">Uso de la papelera de reciclaje</string>
|
||||
<string name="recycle_bin_summary">Mueve los grupos y las entradas al grupo \"Papelera de reciclaje\" antes de eliminarlos</string>
|
||||
<string name="monospace_font_fields_enable_title">Tipografía del campo</string>
|
||||
@@ -237,7 +237,7 @@
|
||||
<string name="education_field_copy_summary">Los campos copiados pueden pegarse en cualquier sitio.
|
||||
\n
|
||||
\nUtilice el método de relleno de formularios que prefiera.</string>
|
||||
<string name="education_lock_title">Bloquear base de datos</string>
|
||||
<string name="education_lock_title">Bloquear la base de datos</string>
|
||||
<string name="education_lock_summary">Bloquee su base de datos rápidamente, puede parametrizar la aplicación para bloquearla después de un tiempo o cuando la pantalla se apague.</string>
|
||||
<string name="education_sort_title">Ordenar elementos</string>
|
||||
<string name="education_sort_summary">Ordenar registros y grupos de acuerdo a parámetros específicos.</string>
|
||||
@@ -331,10 +331,10 @@
|
||||
<string name="content_description_update_from_list">Actualizar</string>
|
||||
<string name="content_description_keyboard_close_fields">Cerrar campos</string>
|
||||
<string name="error_create_database_file">No se puede crear la base de datos con esta contraseña y este archivo clave.</string>
|
||||
<string name="menu_advanced_unlock_settings">Desbloqueo avanzado</string>
|
||||
<string name="menu_advanced_unlock_settings">Desbloqueo de dispositivos</string>
|
||||
<string name="biometric">Biometría</string>
|
||||
<string name="biometric_auto_open_prompt_title">Abrir petición automáticamente</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Solicitar automáticamente el desbloqueo avanzado si la base de datos está configurada para utilizarlo</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Solicitar automáticamente el desbloqueo del dispositivo si la base de datos está configurada para utilizarlo</string>
|
||||
<string name="enable">Activar</string>
|
||||
<string name="disable">Desactivar</string>
|
||||
<string name="education_read_only_summary">Cambiar el modo de apertura de la sesión.
|
||||
@@ -382,7 +382,7 @@
|
||||
<string name="settings_database_force_changing_master_key_summary">Requerir un cambio de la contraseña maestra (días)</string>
|
||||
<string name="settings_database_force_changing_master_key_title">Forzar renovación</string>
|
||||
<string name="max_history_size_title">Tamaño máximo</string>
|
||||
<string name="advanced_unlock_explanation_summary">Usar el desbloqueo avanzado para abrir una base de datos más fácilmente</string>
|
||||
<string name="advanced_unlock_explanation_summary">Utiliza el desbloqueo de dispositivos para abrir una base de datos más fácilmente</string>
|
||||
<string name="lock_database_show_button_summary">Muestra el botón de bloqueo en la interfaz</string>
|
||||
<string name="lock_database_show_button_title">Mostrar botón de bloqueo</string>
|
||||
<string name="autofill_preference_title">Configuración de autocompletado</string>
|
||||
@@ -442,27 +442,27 @@
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Elimina los archivos adjuntos contenidos en la base de datos pero no vinculados a una entrada</string>
|
||||
<string name="database_data_remove_unlinked_attachments_title">Eliminar los datos no vinculados</string>
|
||||
<string name="data">Datos</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">¿Borrar todas las claves de encriptación relacionadas con el reconocimiento de desbloqueo avanzado\?</string>
|
||||
<string name="advanced_unlock_timeout">Tiempo límite de desbloqueo avanzado</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Duración del uso de desbloqueo avanzado antes de borrar su contenido</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Expiración de desbloqueo avanzado</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">No almacenar ningún contenido encriptado para utilizar el desbloqueo avanzado</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Desbloqueo avanzado temporal</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">¿Borrar todas las claves de cifrado relacionadas con el reconocimiento del desbloqueo del dispositivo\?</string>
|
||||
<string name="advanced_unlock_timeout">Tiempo de espera de desbloqueo del dispositivo</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Duración del uso del desbloqueo del dispositivo antes de borrar su contenido</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Caducidad del desbloqueo del dispositivo</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">No almacenes ningún contenido cifrado para utilizar el desbloqueo del dispositivo</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Desbloqueo temporal de los dispositivos</string>
|
||||
<string name="device_credential_unlock_enable_summary">Le permite usar la credenciales de su dispositivo para abrir la base de datos</string>
|
||||
<string name="device_credential_unlock_enable_title">Desbloqueo de las credenciales del dispositivo</string>
|
||||
<string name="advanced_unlock_tap_delete">Toque para eliminar las teclas de desbloqueo avanzadas</string>
|
||||
<string name="advanced_unlock_tap_delete">Pulsa para eliminar las claves de desbloqueo del dispositivo</string>
|
||||
<string name="content">Contenido</string>
|
||||
<string name="clipboard_explanation_summary">Copiar los campos de entrada usando el portapapeles de su dispositivo</string>
|
||||
<string name="device_credential">Credenciales del dispositivo</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Introduzca la contraseña y luego haga clic en este botón.</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">No se pudo inicializar el indicador de desbloqueo avanzado.</string>
|
||||
<string name="advanced_unlock_scanning_error">Error de desbloqueo avanzado: %1$s</string>
|
||||
<string name="advanced_unlock_not_recognized">No se pudo reconocer la impresión de desbloqueo avanzado</string>
|
||||
<string name="advanced_unlock_invalid_key">No se puede leer la clave de desbloqueo avanzada. Por favor, bórrela y repita el procedimiento de reconocimiento del desbloqueo.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Extraer la credencial de la base de datos con datos de desbloqueo avanzado</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Abrir la base de datos con reconocimiento de desbloqueo avanzado</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Aún debe recordar su contraseña maestra si emplea el reconocimiento de desbloqueo avanzado.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Reconocimiento de desbloqueo avanzado</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">No se ha podido inicializar el aviso de desbloqueo del dispositivo.</string>
|
||||
<string name="advanced_unlock_scanning_error">Error de desbloqueo del dispositivo: %1$s</string>
|
||||
<string name="advanced_unlock_not_recognized">No se reconoció la huella digital para desbloquear el dispositivo</string>
|
||||
<string name="advanced_unlock_invalid_key">No se puede leer la clave de desbloqueo del dispositivo. Por favor, bórrala y repite el procedimiento de reconocimiento del desbloqueo.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Extraer la credencial de la base de datos con los datos de desbloqueo del dispositivo</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Reconocimiento de desbloqueo de los dispositivos</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Aún debes recordar la credencial principal de tu cámara acorazada si usas el reconocimiento para el desbloqueo del dispositivo.</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_title">Enlace para el desbloqueo del dispositivo</string>
|
||||
<string name="keystore_not_accessible">El almacén de claves no está debidamente inicializado.</string>
|
||||
<string name="biometric_security_update_required">Se requiere una actualización de la seguridad biométrica.</string>
|
||||
<string name="configure_biometric">No se ha inscrito ninguna credencial biométrica o del dispositivo.</string>
|
||||
@@ -472,7 +472,7 @@
|
||||
<string name="save_mode">Modo de guardado</string>
|
||||
<string name="search_mode">Modo de búsqueda</string>
|
||||
<string name="contains_duplicate_uuid_procedure">¿Resolver el problema generando nuevos UUID para que los duplicados continúen\?</string>
|
||||
<string name="menu_keystore_remove_key">Eliminar clave de desbloqueo avanzado</string>
|
||||
<string name="menu_keystore_remove_key">Borrar la clave de desbloqueo del dispositivo</string>
|
||||
<string name="error_field_name_already_exists">El nombre del campo ya existe.</string>
|
||||
<string name="error_registration_read_only">Guardar un nuevo elemento no está permitido en una base de datos de sólo lectura</string>
|
||||
<string name="settings_database_recommend_changing_master_key_title">Recomendar la renovación</string>
|
||||
@@ -488,7 +488,7 @@
|
||||
<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 contraseña de un solo uso</string>
|
||||
<string name="education_advanced_unlock_summary">Vincule su contraseña con su credencial biométrica o del dispositivo escaneada para desbloquear rápidamente su base de datos.</string>
|
||||
<string name="education_advanced_unlock_title">Desbloqueo avanzado de la base de datos</string>
|
||||
<string name="education_advanced_unlock_title">Desbloqueo de la base de datos de los dispositivos</string>
|
||||
<string name="autofill_read_only_save">No se permite guardar datos en una base de datos abierta como de sólo lectura.</string>
|
||||
<string name="autofill_block_restart">Reiniciar la aplicación que contiene el formulario para activar el bloqueo.</string>
|
||||
<string name="autofill_web_domain_blocklist_summary">Lista de bloqueo que impide el llenado automático de los dominios web</string>
|
||||
@@ -509,7 +509,7 @@
|
||||
<string name="keyboard_previous_lock_summary">Cambiar automáticamente al teclado anterior después de bloquear la base de datos</string>
|
||||
<string name="keyboard_previous_lock_title">Bloquear la base de datos</string>
|
||||
<string name="keyboard_previous_fill_in_summary">Cambiar automáticamente al teclado anterior después de ejecutar \"Acción de la tecla automática\"</string>
|
||||
<string name="keyboard_previous_fill_in_title">Acción de la tecla automática</string>
|
||||
<string name="keyboard_previous_fill_in_title">Volver atrás</string>
|
||||
<string name="keyboard_previous_database_credentials_summary">Cambiar automáticamente al teclado anterior en la pantalla de credenciales de la base de datos</string>
|
||||
<string name="keyboard_previous_database_credentials_title">Pantalla de credenciales de la base de datos</string>
|
||||
<string name="keyboard_auto_go_action_title">Acción de la tecla automática</string>
|
||||
@@ -604,7 +604,7 @@
|
||||
<string name="warning_database_info_reloaded">La recarga de la base de datos borrará los datos modificados localmente.</string>
|
||||
<string name="warning_keyfile_integrity">El hash del archivo no está garantizado porque Android puede cambiar sus datos sobre la marcha. Cambia la extensión del archivo a .bin para una correcta integridad.</string>
|
||||
<string name="enable_keep_screen_on_title">Mantener la pantalla encendida</string>
|
||||
<string name="enable_keep_screen_on_summary">Mantenga la pantalla encendida cuando vea la entrada</string>
|
||||
<string name="enable_keep_screen_on_summary">Mantén la pantalla encendida cuando veas o edites una entrada</string>
|
||||
<string name="enable_screenshot_mode_title">Modo captura de pantalla</string>
|
||||
<string name="enable_screenshot_mode_summary">Permitir que otras aplicaciones graben o tomen capturas de pantalla de la aplicación</string>
|
||||
<string name="show_entry_colors_summary">Muestra los colores de primer y segundo plano de una entrada</string>
|
||||
@@ -669,4 +669,25 @@
|
||||
<string name="waiting_challenge_request">Esperando solicitud de desafío…</string>
|
||||
<string name="waiting_challenge_response">Esperando respuesta al desafío…</string>
|
||||
<string name="merge_success">Fusión finalizada con éxito</string>
|
||||
<string name="info">Información</string>
|
||||
<string name="menu_app_settings_summary">Buscar, bloquear, historial, propiedades</string>
|
||||
<string name="menu_form_filling_settings_summary">Teclado, autocompletar, portapapeles</string>
|
||||
<string name="menu_database_settings_summary">Metadatos, papelera de reciclaje, plantillas, historial</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometría, credencial del dispositivo</string>
|
||||
<string name="menu_security_settings_summary">Cifrado, función de derivación de las claves</string>
|
||||
<string name="master_key_settings_summary">Cambio, renovación</string>
|
||||
<string name="warning_database_notification_permission">El permiso de notificación te permite mostrar el estado de la base de datos y bloquearla con un botón de fácil acceso.
|
||||
\n
|
||||
\nSi no activas este permiso, la base de datos abierta en segundo plano no será visible si hay otra aplicación en primer plano.</string>
|
||||
<string name="warning_copy_permission">El permiso de notificación es necesario para utilizar la función de notificaciones para el portapapeles.</string>
|
||||
<string name="later">Más tarde</string>
|
||||
<string name="ask">Preguntar</string>
|
||||
<string name="configure">Configurar</string>
|
||||
<string name="unlock_and_link_biometric">Enlace de desbloqueo del dispositivo</string>
|
||||
<string name="menu_appearance_settings_summary">Temas, colores, atributos</string>
|
||||
<string name="unlock">Desbloquear</string>
|
||||
<string name="education_validate_entry_title">Validar la entrada</string>
|
||||
<string name="education_validate_entry_summary">No olvides validar tu entrada y guardar tu base de datos.
|
||||
\n
|
||||
\nSi se activa un bloqueo automático y olvidas que estabas haciendo una modificación, corres el riesgo de perder tus datos.</string>
|
||||
</resources>
|
||||
@@ -159,7 +159,7 @@
|
||||
<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="database_history">Historique</string>
|
||||
<string name="unavailable">Cette base de données n’a pas encore stocké d’identifiants.</string>
|
||||
<string name="unavailable">Indisponible</string>
|
||||
<string name="menu_appearance_settings">Apparence</string>
|
||||
<string name="general">Général</string>
|
||||
<string name="autofill">Remplissage automatique</string>
|
||||
@@ -262,17 +262,17 @@
|
||||
</string-array>
|
||||
<string name="style_choose_title">Thème de l’application</string>
|
||||
<string name="style_choose_summary">Thème utilisé dans l’application</string>
|
||||
<string-array name="list_style_names">
|
||||
<item>Forêt</item>
|
||||
<item>Divin</item>
|
||||
<item>Classique</item>
|
||||
<item>Simple</item>
|
||||
<item>Lune</item>
|
||||
<item>Soleil</item>
|
||||
<item>Réponse</item>
|
||||
<item>Kunzite</item>
|
||||
<item>Suivre le système</item>
|
||||
</string-array>
|
||||
<string name="style_name_forest">Forêt</string>
|
||||
<string name="style_name_divine">Divin</string>
|
||||
<string name="style_name_classic">Classique</string>
|
||||
<string name="style_name_simple">Simple</string>
|
||||
<string name="style_name_moon">Lune</string>
|
||||
<string name="style_name_sun">Soleil</string>
|
||||
<string name="style_name_reply">Réponse</string>
|
||||
<string name="style_name_kunzite">Kunzite</string>
|
||||
<string name="style_name_follow_system">Suivre le système</string>
|
||||
<string name="style_name_light">Lumière</string>
|
||||
<string name="style_name_dark">Ombre</string>
|
||||
<string name="icon_pack_choose_title">Collection d’icônes</string>
|
||||
<string name="icon_pack_choose_summary">Collection d’icônes utilisées dans l’application</string>
|
||||
<string name="menu_copy">Copier</string>
|
||||
@@ -403,7 +403,7 @@
|
||||
<string name="settings_database_force_changing_master_key_next_time_title">Forcer le renouvellement la prochaine fois</string>
|
||||
<string name="settings_database_force_changing_master_key_next_time_summary">Nécessite de changer la clé principale la prochaine fois (une seule fois)</string>
|
||||
<string name="database_default_username_title">Nom d’utilisateur par défaut</string>
|
||||
<string name="database_custom_color_title">Couleur de la base de données</string>
|
||||
<string name="database_custom_color_title">Couleur customisée de la base de données</string>
|
||||
<string name="compression">Compression</string>
|
||||
<string name="compression_none">Aucune</string>
|
||||
<string name="compression_gzip">Gzip</string>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<string name="menu_showpass">Tampilkan Kata Sandi</string>
|
||||
<string name="menu_search">Cari</string>
|
||||
<string name="menu_open">Buka</string>
|
||||
<string name="menu_save_database">Simpan Database</string>
|
||||
<string name="menu_lock">Basisdata Terkunci</string>
|
||||
<string name="menu_save_database">Simpan data</string>
|
||||
<string name="menu_lock">Basis Data Terkunci</string>
|
||||
<string name="menu_hide_password">Sembunyikan Kata Sandi</string>
|
||||
<string name="menu_cancel">Batal</string>
|
||||
<string name="menu_delete">Hapus</string>
|
||||
@@ -25,7 +25,7 @@
|
||||
<string name="menu_master_key_settings">Pengaturan Kunci Utama</string>
|
||||
<string name="menu_security_settings">Pengaturan Keamanan</string>
|
||||
<string name="menu_app_settings">Pengaturan Aplikasi</string>
|
||||
<string name="menu_database_settings">Pengaturan Basisdata</string>
|
||||
<string name="menu_database_settings">Pengaturan Basis Data</string>
|
||||
<string name="menu_advanced_unlock_settings">Membuka kunci perangkat</string>
|
||||
<string name="menu_form_filling_settings">Pengisian Formulir</string>
|
||||
<string name="settings">Pengaturan</string>
|
||||
@@ -68,7 +68,7 @@
|
||||
<string name="error_otp_secret_key">Kunci rahasia harus dalam format Base32.</string>
|
||||
<string name="error_save_database">Tidak dapat menyimpan basis data.</string>
|
||||
<string name="error_create_database_file">Tidak bisa membuat basis data dengan kata sandi dan file kunci ini.</string>
|
||||
<string name="error_create_database">Tidak bisa membuat berkas database.</string>
|
||||
<string name="error_create_database">Tidak bisa membuat berkas basis data.</string>
|
||||
<string name="error_copy_group_here">Anda tidak bisa menyalin grup di sini.</string>
|
||||
<string name="error_copy_entry_here">Anda tidak dapat menyalin entri di sini.</string>
|
||||
<string name="error_move_entry_here">Anda tidak dapat memindahkan sebuah entri ke sini.</string>
|
||||
@@ -93,7 +93,7 @@
|
||||
<string name="entry_add_attachment">Tambahkan Lampiran</string>
|
||||
<string name="digits">Dijit</string>
|
||||
<string name="app_timeout_summary">Waktu idle sebelum mengunci basis data</string>
|
||||
<string name="file_manager_install_description">Manajer file yang menerima ACTION_CREATE_DOCUMENT ACTION_OPEN_DOCUMENT izin diperlukan untuk membuat, membuka, dan menyimpan file database.</string>
|
||||
<string name="file_manager_install_description">Manajer file yang menerima ACTION_CREATE_DOCUMENT ACTION_OPEN_DOCUMENT izin diperlukan untuk membuat, membuka, dan menyimpan file basis data.</string>
|
||||
<string name="otp_type">Jenis OTP</string>
|
||||
<string name="entry_setup_otp">Penyiapan Sandi Sekali Pakai (OTP)</string>
|
||||
<string name="error_can_not_handle_uri">Tidak bisa menangani URI ini di KeePassDX.</string>
|
||||
@@ -175,7 +175,7 @@
|
||||
<string name="feedback">Umpan Balik</string>
|
||||
<string name="contribution">Kontribusi</string>
|
||||
<string name="contact">Kontak</string>
|
||||
<string name="auto_focus_search_summary">Minta pencarian saat membuka database</string>
|
||||
<string name="auto_focus_search_summary">Minta pencarian saat membuka basis data</string>
|
||||
<string name="auto_focus_search_title">Pencarian cepat</string>
|
||||
<string name="create_keepass_file">Membuat brankas baru</string>
|
||||
<string name="select_database_file">Buka brankas yang ada</string>
|
||||
@@ -190,11 +190,11 @@
|
||||
<string name="show_recent_files_title">Tampilkan file sebelumnya</string>
|
||||
<string name="remember_keyfile_locations_summary">Melacak di mana file kunci disimpan</string>
|
||||
<string name="remember_keyfile_locations_title">Ingat lokasi file kunci</string>
|
||||
<string name="remember_database_locations_summary">Melacak di mana database disimpan</string>
|
||||
<string name="remember_database_locations_summary">Melacak di mana basis data disimpan</string>
|
||||
<string name="remember_database_locations_title">Ingat lokasi basis data</string>
|
||||
<string name="selection_mode">Mode seleksi</string>
|
||||
<string name="contains_duplicate_uuid_procedure">Selesaikan masalah dengan menghasilkan UUID baru, lanjutkan\?</string>
|
||||
<string name="contains_duplicate_uuid">Basisdata berisi UUIDs duplikat.</string>
|
||||
<string name="contains_duplicate_uuid">Basis data berisi UUID yang terduplikat.</string>
|
||||
<string name="read_only_warning">Tergantung pada manajer file Anda, KeePassDX mungkin tidak diizinkan untuk menulis di penyimpanan Anda.</string>
|
||||
<string name="read_only">Terlindung dari penulisan</string>
|
||||
<string name="protection">Perlindungan</string>
|
||||
@@ -219,7 +219,7 @@
|
||||
<string name="warning_empty_keyfile">Tidak disarankan menambah keyfile kosong.</string>
|
||||
<string name="warning_sure_remove_data">Hapus data ini\?</string>
|
||||
<string name="warning">Peringatan</string>
|
||||
<string name="unsupported_db_version">Versi database tidak di dukung.</string>
|
||||
<string name="unsupported_db_version">Versi basis data tidak didukung.</string>
|
||||
<string name="search">Cari</string>
|
||||
<string name="sort_last_access_time">Akses</string>
|
||||
<string name="sort_last_modify_time">Modifikasi</string>
|
||||
@@ -241,19 +241,19 @@
|
||||
<string name="keystore_not_accessible">Keystore tidak diinisialisasi dengan benar.</string>
|
||||
<string name="biometric_security_update_required">Pembaruan keamanan biometrik diperlukan.</string>
|
||||
<string name="configure_biometric">Tidak ada kredensial biometrik atau perangkat yang terdaftar.</string>
|
||||
<string name="warning_remove_unlinked_attachment">Menghapus data yang tidak tertaut dapat mengurangi ukuran database Anda, tetapi juga dapat menghapus data yang digunakan untuk plugin KeePass.</string>
|
||||
<string name="warning_remove_unlinked_attachment">Menghapus data yang tidak tertaut dapat mengurangi ukuran basis data Anda, tetapi juga dapat menghapus data yang digunakan untuk plugin KeePass.</string>
|
||||
<string name="warning_sure_add_file">Tetap tambahkan berkas\?</string>
|
||||
<string name="warning_replace_file">Mengunggah berkas ini akan menggantikan berkas yang ada.</string>
|
||||
<string name="warning_file_too_big">Database KeePass seharusnya hanya berisi file utilitas kecil (seperti file kunci PGP).
|
||||
<string name="warning_file_too_big">Basis data KeePass seharusnya hanya berisi file utilitas kecil (seperti file kunci PGP).
|
||||
\n
|
||||
\nDatabase Anda mungkin menjadi sangat besar dan mengurangi kinerja dengan unggahan ini.</string>
|
||||
\nBasis data Anda mungkin menjadi sangat besar dan mengurangi kinerja dengan unggahan ini.</string>
|
||||
<string name="warning_empty_recycle_bin">Hapus permanen semua node dari keranjang sampah\?</string>
|
||||
<string name="advanced_unlock_tap_delete">Ketuk untuk menghapus tombol pembuka kunci lanjutan</string>
|
||||
<string name="advanced_unlock">Buka kunci lanjutan</string>
|
||||
<string name="advanced_unlock_tap_delete">Ketuk untuk menghapus tombol pembuka kunci perangkat</string>
|
||||
<string name="advanced_unlock">Buka kunci perangkat</string>
|
||||
<string name="content">Konten</string>
|
||||
<string name="lock_database_show_button_summary">Tampilkan tombol kunci di antarmuka pengguna</string>
|
||||
<string name="lock_database_show_button_title">Tampilkan tombol kunci</string>
|
||||
<string name="lock_database_back_root_summary">Kunci database saat pengguna mengklik tombol kembali di layar root</string>
|
||||
<string name="lock_database_back_root_summary">Kunci basis data saat pengguna mengklik tombol kembali di layar root</string>
|
||||
<string name="lock_database_back_root_title">Tekan \'Kembali\' untuk mengunci</string>
|
||||
<string name="lock_database_screen_off_summary">Kunci basis data setelah beberapa detik ketika layar mati</string>
|
||||
<string name="lock_database_screen_off_title">Kunci layar</string>
|
||||
@@ -263,14 +263,14 @@
|
||||
<string name="clipboard_notifications_title">Pemberitahuan papan klip</string>
|
||||
<string name="clipboard_explanation_summary">Salin kolom entri menggunakan papan klip perangkat Anda</string>
|
||||
<string name="clipboard">Papan klip</string>
|
||||
<string name="database_opened">Database dibuka</string>
|
||||
<string name="database_opened">Basis data dibuka</string>
|
||||
<string name="list_password_generator_options_summary">Atur karakter pembuat kata sandi yang diperbolehkan</string>
|
||||
<string name="list_password_generator_options_title">Karakter kata sandi</string>
|
||||
<string name="password_size_summary">Setel ukuran default kata sandi yang dihasilkan</string>
|
||||
<string name="password_size_title">Ukuran kata sandi yang dihasilkan</string>
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Menghapus lampiran yang terdapat dalam database tetapi tidak ditautkan ke entri</string>
|
||||
<string name="database_data_remove_unlinked_attachments_summary">Menghapus lampiran yang terdapat dalam basis data tetapi tidak ditautkan ke entri</string>
|
||||
<string name="database_data_remove_unlinked_attachments_title">Hapus data yang tidak tertaut</string>
|
||||
<string name="database_data_compression_summary">Kompresi data mengurangi ukuran database</string>
|
||||
<string name="database_data_compression_summary">Kompresi data mengurangi ukuran basis data</string>
|
||||
<string name="database_data_compression_title">Kompresi data</string>
|
||||
<string name="data">Data</string>
|
||||
<string name="assign_master_key">Tetapkan kunci master</string>
|
||||
@@ -296,7 +296,7 @@
|
||||
<string name="unit_kibibyte">KiB</string>
|
||||
<string name="unit_byte">B</string>
|
||||
<string name="show_uuid_summary">Tampilkan UUID yang ditautkan ke entri atau grup</string>
|
||||
<string name="warning_password_encoding">Hindari karakter kata sandi di luar format pengkodean teks dalam file database (karakter yang tidak dikenal dikonversi ke huruf yang sama).</string>
|
||||
<string name="warning_password_encoding">Hindari karakter kata sandi di luar format pengkodean teks dalam file basis data (karakter yang tidak dikenal dikonversi ke huruf yang sama).</string>
|
||||
<string name="uppercase">Huruf besar</string>
|
||||
<string name="sort_creation_time">Penciptaan</string>
|
||||
<string name="sort_ascending">Terendah pertama ↓</string>
|
||||
@@ -311,9 +311,9 @@
|
||||
<string name="search_mode">Mode pencarian</string>
|
||||
<string name="menu_keystore_remove_key">Menghapus kunci buka kunci perangkat</string>
|
||||
<string name="menu_reload_database">Muat ulang data</string>
|
||||
<string name="error_database_uri_null">URI database tidak dapat diambil.</string>
|
||||
<string name="error_database_uri_null">URI basis data tidak dapat diambil.</string>
|
||||
<string name="error_field_name_already_exists">Nama bidang sudah ada.</string>
|
||||
<string name="error_registration_read_only">Menyimpan item baru tidak diperbolehkan dalam database read-only</string>
|
||||
<string name="error_registration_read_only">Menyimpan item baru tidak diperbolehkan dalam basis data hanya-baca</string>
|
||||
<string name="error_otp_type">Tipe OTP yang ada tidak dikenali oleh formulir ini, validasinya mungkin tidak lagi menghasilkan token dengan benar.</string>
|
||||
<string name="content_description_credentials_information">Info kredensial</string>
|
||||
<string name="autofill_inline_suggestions_keyboard">Saran pengisian otomatis ditambahkan.</string>
|
||||
@@ -328,17 +328,17 @@
|
||||
<string name="autofill_save_search_info_summary">Cobalah untuk menyimpan informasi pencarian saat membuat pilihan entri manual untuk penggunaan mudah di waktu mendatang</string>
|
||||
<string name="autofill_save_search_info_title">Simpan info pencarian</string>
|
||||
<string name="autofill_inline_suggestions_title">Saran sebaris</string>
|
||||
<string name="autofill_close_database_summary">Menutup database setelah pilihan isi-auto</string>
|
||||
<string name="autofill_close_database_title">Tutup database</string>
|
||||
<string name="autofill_close_database_summary">Tutup basis data setelah pengisian otomatis pada pilihan</string>
|
||||
<string name="autofill_close_database_title">Tutup basis data</string>
|
||||
<string name="enter">Enter</string>
|
||||
<string name="backspace">Hapus</string>
|
||||
<string name="select_entry">Pilih entri</string>
|
||||
<string name="back_to_previous_keyboard">Kembali ke papan tik sebelumnya</string>
|
||||
<string name="custom_fields">Bidang kustom</string>
|
||||
<string name="keyboard_previous_lock_title">Kunci database</string>
|
||||
<string name="keyboard_previous_lock_title">Kunci basis data</string>
|
||||
<string name="keyboard_auto_go_action_title">Aksi tombol otomatis</string>
|
||||
<string name="keyboard_keys_category">Tombol</string>
|
||||
<string name="keyboard_previous_database_credentials_title">Layar kredensial database</string>
|
||||
<string name="keyboard_previous_database_credentials_title">Layar kredensial basis data</string>
|
||||
<string name="keyboard_change">Ganti papan tik</string>
|
||||
<string name="keyboard_key_sound_title">Tombol terdengar</string>
|
||||
<string name="keyboard_key_vibrate_title">Getar saat menekan tombol</string>
|
||||
@@ -350,7 +350,7 @@
|
||||
<string name="keyboard_notification_entry_content_title_text">Entri</string>
|
||||
<string name="keyboard_entry_timeout_summary">Waktu habis untuk menghapus entri papan tik</string>
|
||||
<string name="keyboard_entry_timeout_title">Waktu habis</string>
|
||||
<string name="keyboard_notification_entry_clear_close_summary">Tutup database saat menutup notifikasi</string>
|
||||
<string name="keyboard_notification_entry_clear_close_summary">Tutup basis data saat menutup notifikasi</string>
|
||||
<string name="keyboard_notification_entry_clear_close_title">Bersihkan saat menutup</string>
|
||||
<string name="keyboard_notification_entry_summary">Tampilkan notifikasi ketika entri tersedia</string>
|
||||
<string name="keyboard_notification_entry_title">Info notifikasi</string>
|
||||
@@ -390,10 +390,10 @@
|
||||
<string name="education_field_copy_title">Salin bidang</string>
|
||||
<string name="education_setup_OTP_title">Atur OTP</string>
|
||||
<string name="education_donation_title">Partisipasi</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Buka basis data dengan pengenalan pembuka kunci tingkat lanjut</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Anda tetap harus mengingat kata sandi utama Anda jika Anda menggunakan pengenalan pembukaan kunci tingkat lanjut.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_title">Pengenalan pembuka kunci perangkat</string>
|
||||
<string name="advanced_unlock_prompt_store_credential_message">Anda masih perlu mengingat kredensial utama vault Anda jika Anda menggunakan pengenalan kunci perangkat.</string>
|
||||
<string name="warning_database_revoked">Akses ke berkas dicabut oleh pengelola berkas, tutup basis data dan buka kembali dari lokasi tempatnya.</string>
|
||||
<string name="warning_database_info_changed_options">Gabungkan data, timpa perubahan dengan cara menyimpan database atau muat ulang dengan perubahan terbaru.</string>
|
||||
<string name="warning_database_info_changed_options">Gabungkan data, timpa perubahan dengan cara menyimpan basis data atau muat ulang dengan perubahan terbaru.</string>
|
||||
<string name="warning_database_info_changed">Informasi yang tersimpan di berkas basis data Anda sudah diubah di luar aplikasi.</string>
|
||||
<string name="warning_no_encryption_key">Lanjut tanpa kunci enkripsi\?</string>
|
||||
<string name="warning_empty_password">Lanjut tanpa proteksi buka kunci dengan kata sandi\?</string>
|
||||
@@ -414,11 +414,11 @@
|
||||
<string name="device_credential_unlock_enable_title">Membuka kredensial perangkat</string>
|
||||
<string name="biometric_unlock_enable_summary">Memperbolehkan Anda memindai biometrik Anda untuk membuka basis data</string>
|
||||
<string name="biometric_unlock_enable_title">Membuka kunci biometrik</string>
|
||||
<string name="advanced_unlock_explanation_summary">Gunakan buka kunci lanjutan untuk membuka database dengan lebih mudah</string>
|
||||
<string name="unavailable">Basis data ini belum menyimpan kredensial.</string>
|
||||
<string name="advanced_unlock_not_recognized">Tidak dapat mengenali cetakan buka kunci lanjutan</string>
|
||||
<string name="advanced_unlock_invalid_key">Tidak dapat membaca kunci pembuka lanjutan. Harap hapus dan ulangi prosedur pengenalan buka kunci.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Ekstrak kredensial basis data dengan pembuka kunci data lanjutan</string>
|
||||
<string name="advanced_unlock_explanation_summary">Gunakan buka kunci perangkat untuk membuka basis data dengan lebih mudah</string>
|
||||
<string name="unavailable">Tidak tersedia</string>
|
||||
<string name="advanced_unlock_not_recognized">Tidak dapat mengenali cetakan buka kunci perangkat</string>
|
||||
<string name="advanced_unlock_invalid_key">Tidak dapat membaca kunci pembuka perangkat. Harap hapus dan ulangi prosedur pengenalan buka kunci.</string>
|
||||
<string name="advanced_unlock_prompt_extract_credential_message">Ekstrak kredensial basis data dengan pembuka kunci data perangkat</string>
|
||||
<string name="error_word_reserved">Kata ini telah dipakai dan tidak bisa digunakan.</string>
|
||||
<string name="credential_before_click_advanced_unlock_button">Ketik kata sandi, lalu klik tombol ini.</string>
|
||||
<string name="autofill_service_name">Isi formulir KeePassDX otomatis</string>
|
||||
@@ -461,14 +461,14 @@
|
||||
<string name="menu_external_icon">Ikon eksternal</string>
|
||||
<string name="holder">Penyangga</string>
|
||||
<string name="autofill_select_entry">Pilih entri…</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Secara otomatis meminta buka kunci lanjutan jika basis data diatur menggunakan itu</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Buka kunci lanjutan sementara</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Jangan simpan konten terenkripsi apa pun untuk menggunakan buka kunci lanjutan</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Durasi penggunaan buka kunci lanjutan sebelum menghapus konten tersebut</string>
|
||||
<string name="advanced_unlock_timeout">Batas waktu membuka kunci lanjutan</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Hapus semua kunci enkripsi yang terkait pengenalan buka kunci lanjutan\?</string>
|
||||
<string name="biometric_auto_open_prompt_summary">Secara otomatis meminta buka kunci perangkat jika basis data diatur menggunakan itu</string>
|
||||
<string name="temp_advanced_unlock_enable_title">Buka kunci perangkat sementara</string>
|
||||
<string name="temp_advanced_unlock_enable_summary">Jangan simpan konten terenkripsi apa pun untuk menggunakan buka kunci perangkat</string>
|
||||
<string name="temp_advanced_unlock_timeout_summary">Durasi penggunaan buka kunci perangkat sebelum menghapus konten tersebut</string>
|
||||
<string name="advanced_unlock_timeout">Batas waktu membuka kunci perangkat</string>
|
||||
<string name="advanced_unlock_delete_all_key_warning">Hapus semua kunci enkripsi yang terkait pengenalan buka kunci perangkat\?</string>
|
||||
<string name="templates_group_enable_title">Penggunaan templat</string>
|
||||
<string name="biometric_delete_all_key_summary">Hapus semua kunci enkripsi yang terkait pengenalan buka kunci lanjutan</string>
|
||||
<string name="biometric_delete_all_key_summary">Hapus semua kunci enkripsi yang terkait pengenalan buka kunci perangkat</string>
|
||||
<string name="max_history_items_summary">Batasi jumlah item riwayat per entri</string>
|
||||
<string name="template_group_name">Templat</string>
|
||||
<string name="date_of_issue">Tanggal diterbitkan</string>
|
||||
@@ -480,7 +480,7 @@
|
||||
<string name="max_history_size_summary">Batasi ukuran riwayat per entri</string>
|
||||
<string name="max_history_size_title">Ukuran maksimum</string>
|
||||
<string name="biometric_delete_all_key_title">Hapus kunci enkripsi</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Kedaluwarsa pembuka kunci lanjutan</string>
|
||||
<string name="temp_advanced_unlock_timeout_title">Kedaluwarsa pembuka kunci perangkat</string>
|
||||
<string name="templates_group_enable_summary">Gunakan templat dinamis untuk mengisi bidang entri</string>
|
||||
<string name="education_read_only_summary">Ubah mode pembuka untuk sesi.
|
||||
\n
|
||||
@@ -526,7 +526,7 @@
|
||||
<string name="html_text_dev_feature_buy_pro">Dengan membeli versi <strong>pro</strong>,</string>
|
||||
<string name="content_description_database_color">Warna basis data</string>
|
||||
<string name="menu_merge_database">Gabung data</string>
|
||||
<string name="warning_database_info_reloaded">Memuat ulang database akan menghapus data yang diubah secara lokal.</string>
|
||||
<string name="warning_database_info_reloaded">Memuat ulang basis data akan menghapus data yang diubah secara lokal.</string>
|
||||
<string name="warning_keyfile_integrity">Hash file tidak dijamin karena Android dapat mengubah datanya dengan cepat. Ubah ekstensi file menjadi .bin untuk integritas yang benar.</string>
|
||||
<string name="content_description_entry_foreground_color">Warna latar depan entri</string>
|
||||
<string name="content_description_entry_background_color">Warna latar belakang entri</string>
|
||||
@@ -562,7 +562,7 @@
|
||||
\n
|
||||
\nGrup (~folder) mengatur entri dalam basis data Anda.</string>
|
||||
<string name="education_search_summary">Masukkan judul, nama pengguna atau konten bidang lain untuk mengambil kata sandi Anda.</string>
|
||||
<string name="education_advanced_unlock_title">Pembukaan kunci basis data tingkat lanjut</string>
|
||||
<string name="education_advanced_unlock_title">Pembukaan kunci basis data perangkat</string>
|
||||
<string name="education_advanced_unlock_summary">Tautkan kata sandi Anda ke kredensial biometrik atau perangkat yang dipindai untuk membuka kunci basis data Anda dengan cepat.</string>
|
||||
<string name="education_entry_new_field_title">Tambahkan bidang kustom</string>
|
||||
<string name="education_entry_new_field_summary">Daftarkan bidang tambahan, tambahkan nilai, dan lindungi secara opsional.</string>
|
||||
@@ -582,11 +582,11 @@
|
||||
<string name="upper_case">HURUF BESAR</string>
|
||||
<string name="title_case">Huruf Judul</string>
|
||||
<string name="character_count">Jumlah karakter: %1$d</string>
|
||||
<string name="advanced_unlock_scanning_error">Terjadi kesalahan buka kunci lanjutan: %1$s</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Tidak dapat menginisialisasi prompt buka kunci tingkat lanjut.</string>
|
||||
<string name="advanced_unlock_scanning_error">Terjadi kesalahan buka kunci perangkat: %1$s</string>
|
||||
<string name="advanced_unlock_prompt_not_initialized">Tidak dapat menginisialisasi perintah buka kunci perangkat.</string>
|
||||
<string name="monospace_font_fields_enable_title">Bidang tipe huruf</string>
|
||||
<string name="keyboard_save_search_info_title">Simpan info terbagi</string>
|
||||
<string name="keyboard_previous_fill_in_title">Tindakan tombol otomatis</string>
|
||||
<string name="keyboard_previous_fill_in_title">Ganti kembali</string>
|
||||
<string name="keyboard_previous_lock_summary">Secara otomatis beralih kembali ke keyboard sebelumnya setelah mengunci basis data</string>
|
||||
<string name="autofill_inline_suggestions_summary">Coba tampilkan saran pengisian otomatis langsung dari keyboard yang kompatibel</string>
|
||||
<string name="enable_education_screens_title">Petunjuk pendidikan</string>
|
||||
@@ -616,10 +616,10 @@
|
||||
\n
|
||||
\nBergantung pada implementasi API asli dari sistem operasi, mungkin tidak berfungsi penuh.
|
||||
\nPeriksa kompatibilitas dan keamanan KeyStore dengan produsen perangkat Anda dan pembuat ROM yang Anda gunakan.</string>
|
||||
<string name="education_read_only_title">Lindungi database Anda dari penulisan</string>
|
||||
<string name="education_read_only_title">Lindungi basis data Anda dari penulisan</string>
|
||||
<string name="keyboard_save_search_info_summary">Coba simpan informasi terbagi ketika membuat sebuah pilihan entri manual untuk penggunaan mudah di waktu mendatang</string>
|
||||
<string name="enable_read_only_title">Terlindungi-tulis</string>
|
||||
<string name="enable_keep_screen_on_summary">Jaga layar tetap menyala saat melihat entri</string>
|
||||
<string name="enable_keep_screen_on_summary">Jaga layar tetap menyala saat melihat atau menyunting sebuah entri</string>
|
||||
<string name="content_description_hardware_key_checkbox">Kotak centang kunci perangkat keras</string>
|
||||
<string name="waiting_challenge_request">Menunggu untuk permintaan tantangan…</string>
|
||||
<string name="waiting_challenge_response">Menunggu untuk tanggapan tantangan…</string>
|
||||
@@ -652,7 +652,7 @@
|
||||
<string name="menu_database_settings_summary">Metadata, tempat sampah, templat, riwayat</string>
|
||||
<string name="menu_security_settings_summary">Enkripsi, fungsi derivasi kunci</string>
|
||||
<string name="master_key_settings_summary">Perubahan, pembaruan</string>
|
||||
<string name="warning_database_notification_permission">Izin notifikasi memungkinkan Anda untuk menampilkan status database dan menguncinya dengan tombol yang mudah diakses.
|
||||
<string name="warning_database_notification_permission">Izin notifikasi memungkinkan Anda untuk menampilkan status basis data dan menguncinya dengan tombol yang mudah diakses.
|
||||
\n
|
||||
\nJika Anda tidak mengaktifkan, basis data yang terbuka di latar belakang tidak akan terlihat jika ada aplikasi lain di latar depan.</string>
|
||||
<string name="warning_copy_permission">Izin pemberitahuan diperlukan untuk menggunakan fitur pemberitahuan papan klip.</string>
|
||||
@@ -660,4 +660,10 @@
|
||||
<string name="configure">Atur</string>
|
||||
<string name="later">Nanti</string>
|
||||
<string name="unlock_and_link_biometric">Tautan buka kunci perangkat</string>
|
||||
<string name="education_validate_entry_summary">Ingat untuk memvalidasi entri Anda dan simpan basis data Anda.
|
||||
\n
|
||||
\nJika penguncian otomatis diaktifkan dan Anda lupa bahwa Anda sedang membuat perubahan, Anda berisiko kehilangan data Anda.</string>
|
||||
<string name="menu_appearance_settings_summary">Tema, warna, atribut</string>
|
||||
<string name="unlock">Buka kunci</string>
|
||||
<string name="education_validate_entry_title">Validasi entri</string>
|
||||
</resources>
|
||||
@@ -468,17 +468,7 @@
|
||||
</string-array>
|
||||
<string name="style_choose_title">アプリのテーマ</string>
|
||||
<string name="style_choose_summary">アプリで使用するテーマ</string>
|
||||
<string-array name="list_style_names">
|
||||
<item>Forest</item>
|
||||
<item>Divine</item>
|
||||
<item>Classic</item>
|
||||
<item>Simple</item>
|
||||
<item>Moon</item>
|
||||
<item>Sun</item>
|
||||
<item>Reply</item>
|
||||
<item>Kunzite</item>
|
||||
<item>システムに従う</item>
|
||||
</string-array>
|
||||
<string name="style_name_follow_system">システムに従う</string>
|
||||
<string name="icon_pack_choose_title">アイコンパック</string>
|
||||
<string name="icon_pack_choose_summary">アプリで使用するアイコンパック</string>
|
||||
<string name="hide_expired_entries_title">有効期限切れのエントリーを非表示にする</string>
|
||||
|
||||
@@ -18,81 +18,81 @@
|
||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||
--><resources>
|
||||
<string name="about_description">Implementarea Android a managerului de parole KeePass</string>
|
||||
<string name="accept">Accept</string>
|
||||
<string name="add_entry">Introduce intrarea</string>
|
||||
<string name="edit_entry">Editeaza intrarea</string>
|
||||
<string name="add_group">Aduce grup</string>
|
||||
<string name="master_key">Cheia generala</string>
|
||||
<string name="accept">Acceptați</string>
|
||||
<string name="add_entry">Introduceți intrarea</string>
|
||||
<string name="edit_entry">Editați intrarea</string>
|
||||
<string name="add_group">Adăugați un grup</string>
|
||||
<string name="master_key">Cheia generală</string>
|
||||
<string name="security">Securitate</string>
|
||||
<string name="encryption">Criptare</string>
|
||||
<string name="encryption_algorithm">Algoritm de criptare</string>
|
||||
<string name="key_derivation_function">Functie derivata a cheii</string>
|
||||
<string name="key_derivation_function">Funcție de derivare a cheii</string>
|
||||
<string name="app_timeout">Timeout</string>
|
||||
<string name="app_timeout_summary">Timpul de asteptare inaintea blocarii bancii de date</string>
|
||||
<string name="app_timeout_summary">Timpul de așteptare înaintea blocării bazei de date</string>
|
||||
<string name="application">Aplicație</string>
|
||||
<string name="brackets">Paranteze patrate</string>
|
||||
<string name="brackets">Paranteze pătrate</string>
|
||||
<string name="extended_ASCII">ASCII extins</string>
|
||||
<string name="file_manager_install_description">Pentru a crea, deschide și salva fișiere de baze de date, este necesar un manager de fișiere care acceptă acțiunea de intenție ACTION_CREATE_DOCUMENT și ACTION_OPEN_DOCUMENT.</string>
|
||||
<string name="allow">Permite</string>
|
||||
<string name="clipboard_cleared">Carnetelul din memorie curatat</string>
|
||||
<string name="clipboard_error_title">Eroare de citire copiere memorie</string>
|
||||
<string name="clipboard_error">Unele dispozitive nu permit aplicatiei sa foloseasca memoria de citire din carnetel.</string>
|
||||
<string name="clipboard_error_clear">Nu s-a putut curata memoria carnetelului</string>
|
||||
<string name="clipboard_timeout">Timp expirat de citire a carnetelului</string>
|
||||
<string name="clipboard_timeout_summary">Durata de stocare în carnețel (dacă este acceptată de dispozitivul tău)</string>
|
||||
<string name="content_description_background">In spate</string>
|
||||
<string name="content_description_open_file">Deschide fisier</string>
|
||||
<string name="content_description_node_children">Copil nod</string>
|
||||
<string name="content_description_add_node">Introduce nod</string>
|
||||
<string name="content_description_add_entry">Introduce o intrare</string>
|
||||
<string name="content_description_add_group">Aduce un grup</string>
|
||||
<string name="file_manager_install_description">Un manager de fișiere care acceptă acțiunea intenției ACTION_CREATE_DOCUMENT și ACTION_OPEN_DOCUMENT este necesară pentru a crea, deschide, și salva fișierele bazei de date.</string>
|
||||
<string name="allow">Permiteți</string>
|
||||
<string name="clipboard_cleared">Clipboard curățat</string>
|
||||
<string name="clipboard_error_title">Eroare de Clipboard</string>
|
||||
<string name="clipboard_error">Unele dispozitive nu permit aplicației sa folosească clipboard-ul.</string>
|
||||
<string name="clipboard_error_clear">Nu s-a putut curăța clipboard-ul</string>
|
||||
<string name="clipboard_timeout">Timeout pentru clipboard</string>
|
||||
<string name="clipboard_timeout_summary">Durata de stocare în clipboard (dacă dispozitivul tău suportă)</string>
|
||||
<string name="content_description_background">În fundal</string>
|
||||
<string name="content_description_open_file">Deschide fișier</string>
|
||||
<string name="content_description_node_children">Nod copil</string>
|
||||
<string name="content_description_add_node">Adăugați nod</string>
|
||||
<string name="content_description_add_entry">Introduceți intrarea</string>
|
||||
<string name="content_description_add_group">Adăugați un grup</string>
|
||||
<string name="content_description_file_information">Informații despre fișier</string>
|
||||
<string name="content_description_password_checkbox">Verifica parola</string>
|
||||
<string name="content_description_keyfile_checkbox">Verifica fisierul cheie</string>
|
||||
<string name="content_description_repeat_toggle_password_visibility">Repetați pentru a comuta vizibilitatea parolei</string>
|
||||
<string name="content_description_entry_icon">Pictograma de intrare</string>
|
||||
<string name="entry_password_generator">Generator de parole</string>
|
||||
<string name="content_description_password_checkbox">Căsuță de selectare pentru parolă</string>
|
||||
<string name="content_description_keyfile_checkbox">Căsuță de selectare pentru fișier-cheie</string>
|
||||
<string name="content_description_repeat_toggle_password_visibility">Repetați comutarea vizibilității parolei</string>
|
||||
<string name="content_description_entry_icon">Pictogramă de intrare</string>
|
||||
<string name="entry_password_generator">Generator de parolă</string>
|
||||
<string name="content_description_password_length">Lungimea parolei</string>
|
||||
<string name="entry_add_field">Adăugați câmp</string>
|
||||
<string name="content_description_remove_field">Elimina câmp</string>
|
||||
<string name="content_description_remove_field">Eliminați câmpul</string>
|
||||
<string name="content_description_update_from_list">Actualizați</string>
|
||||
<string name="content_description_remove_from_list">Elimina</string>
|
||||
<string name="content_description_keyboard_close_fields">Câmpuri închise</string>
|
||||
<string name="content_description_remove_from_list">Eliminați</string>
|
||||
<string name="content_description_keyboard_close_fields">Închideți câmpurile</string>
|
||||
<string name="select_to_copy">Selectați pentru a copia %1$s în clipboard</string>
|
||||
<string name="retrieving_db_key">Obtinerea cheii bazei de date…</string>
|
||||
<string name="database">Baza de date</string>
|
||||
<string name="decrypting_db">Decriptarea continutului bazei de date.…</string>
|
||||
<string name="retrieving_db_key">Se recuperează cheia bazei de date…</string>
|
||||
<string name="database">Bază de date</string>
|
||||
<string name="decrypting_db">Se decriptează conținutul bazei de date.…</string>
|
||||
<string name="contact">Contact</string>
|
||||
<string name="contribution">Contributie</string>
|
||||
<string name="contribution">Contribuție</string>
|
||||
<string name="feedback">Opinii</string>
|
||||
<string name="homepage">Pagina acasa</string>
|
||||
<string name="homepage">Pagina principală</string>
|
||||
<string name="default_checkbox">Folosiți ca bază de date implicită</string>
|
||||
<string name="digits">Digits</string>
|
||||
<string name="digits">Cifre</string>
|
||||
<string name="entry_accessed">Accesat</string>
|
||||
<string name="entry_cancel">Anuleaza</string>
|
||||
<string name="entry_cancel">Anulează</string>
|
||||
<string name="entry_notes">Note</string>
|
||||
<string name="entry_confpassword">Confirma parola</string>
|
||||
<string name="entry_created">Creeat</string>
|
||||
<string name="entry_expires">Expira</string>
|
||||
<string name="entry_confpassword">Confirmă parola</string>
|
||||
<string name="entry_created">Creat</string>
|
||||
<string name="entry_expires">Expiră</string>
|
||||
<string name="entry_UUID">UUID</string>
|
||||
<string name="entry_history">Istoric</string>
|
||||
<string name="entry_attachments">Atasamente</string>
|
||||
<string name="entry_keyfile">Fisiercheie</string>
|
||||
<string name="entry_attachments">Atașamente</string>
|
||||
<string name="entry_keyfile">Fișier-cheie</string>
|
||||
<string name="entry_modified">Modificat</string>
|
||||
<string name="entry_not_found">Nu s-au putut găsi date de intrare.</string>
|
||||
<string name="entry_password">Parola</string>
|
||||
<string name="save">Salveaza</string>
|
||||
<string name="entry_password">Parolă</string>
|
||||
<string name="save">Salvează</string>
|
||||
<string name="entry_title">Titlu</string>
|
||||
<string name="entry_setup_otp">Setați o singură parolă</string>
|
||||
<string name="otp_type">Tipul OTP</string>
|
||||
<string name="entry_setup_otp">Setați o parolă unică</string>
|
||||
<string name="otp_type">Tip OTP</string>
|
||||
<string name="otp_secret">Secret</string>
|
||||
<string name="otp_period">Perioada(secunde)</string>
|
||||
<string name="otp_counter">Numaratoare</string>
|
||||
<string name="otp_digits">Digiti</string>
|
||||
<string name="otp_period">Perioadă (secunde)</string>
|
||||
<string name="otp_counter">Numărătoare</string>
|
||||
<string name="otp_digits">Cifre</string>
|
||||
<string name="otp_algorithm">Algoritm</string>
|
||||
<string name="entry_otp">OTP</string>
|
||||
<string name="entry_url">URL</string>
|
||||
<string name="entry_user_name">Nume utilizator</string>
|
||||
<string name="entry_user_name">Nume de utilizator</string>
|
||||
<string name="error_arc4">Cifrarea fluxului Arcfour nu este acceptată.</string>
|
||||
<string name="error_can_not_handle_uri">Nu s-a putut gestiona acest URI în KeePassDX.</string>
|
||||
<string name="error_file_not_create">Nu s-a putut creea fisierul</string>
|
||||
@@ -123,7 +123,7 @@
|
||||
<string name="field_name">Numele domeniului</string>
|
||||
<string name="field_value">Valoarea câmpului</string>
|
||||
<string name="file_not_found_content">Nu s-a putut găsi fișierul. Încercați să-l redeschideți din browserul de fișiere.</string>
|
||||
<string name="file_browser">Browser de fișiere</string>
|
||||
<string name="file_browser">Manager fișiere</string>
|
||||
<string name="generate_password">Generați parola</string>
|
||||
<string name="hint_conf_pass">Confirmă parola</string>
|
||||
<string name="hint_generated_password">Parola generata</string>
|
||||
@@ -152,7 +152,7 @@
|
||||
<string name="settings">Setări</string>
|
||||
<string name="menu_app_settings">Setările aplicației</string>
|
||||
<string name="menu_form_filling_settings">Completarea formularului</string>
|
||||
<string name="menu_advanced_unlock_settings">Deblocare avansată</string>
|
||||
<string name="menu_advanced_unlock_settings">Deblocare dispozitiv</string>
|
||||
<string name="menu_database_settings">Setările bazei de date</string>
|
||||
<string name="menu_security_settings">Setări de securitate</string>
|
||||
<string name="menu_master_key_settings">Setări cheie master</string>
|
||||
@@ -165,7 +165,7 @@
|
||||
<string name="menu_cancel">Anulare</string>
|
||||
<string name="menu_hide_password">Ascunde parola</string>
|
||||
<string name="menu_lock">Blocați baza de date</string>
|
||||
<string name="menu_save_database">Salvați baza de date</string>
|
||||
<string name="menu_save_database">Salvați datele</string>
|
||||
<string name="menu_open">Deschide</string>
|
||||
<string name="menu_search">Căutare</string>
|
||||
<string name="menu_showpass">Arata parola</string>
|
||||
@@ -178,15 +178,15 @@
|
||||
<string name="minus">Minus</string>
|
||||
<string name="never">Niciodata</string>
|
||||
<string name="no_results">Nu există Rezultate</string>
|
||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft is <strong>sursa deschisa</strong> and <strong>fara publicitate</strong>.
|
||||
\nEste prevăzut așa cum este, sub <strong>GPLv3</strong> licenta, fara nici un fel de garantie.</string>
|
||||
<string name="html_about_contribution">In oridine sa <strong>pastram libertatea noastra</strong>, <strong>fix bugs</strong>, <strong>adăugați funcții</strong> si<strong>sa fie intotdeauna activ</strong>, ne bazam pe <strong>contributie</strong>.</string>
|
||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft este <strong>open-source (sursă deschisă)</strong> și <strong>fără reclame</strong>.
|
||||
\nEste prevăzut așa cum este, sub licența <strong>GPLv3</strong>, fără nici un fel de garanție.</string>
|
||||
<string name="html_about_contribution">În ordine să <strong>pastrăm libertatea noastră</strong>, <strong>fixăm bug-uri</strong>, <strong>adăugăm funcții</strong> și<strong>să fie întotdeauna activ</strong>, ne bazam pe <strong>contribuția</strong> ta.</string>
|
||||
<string name="hide_password_title">Ascundeți parolele</string>
|
||||
<string name="hide_password_summary">Mascați parolele (***) în mod implicit</string>
|
||||
<string name="about">Despre</string>
|
||||
<string name="no_url_handler">Instalați un browser web pentru a deschide această adresă URL.</string>
|
||||
<string name="select_database_file">Deschide baza de date existentă</string>
|
||||
<string name="create_keepass_file">Creați o bază de date nouă</string>
|
||||
<string name="select_database_file">Deschideți seiful existentă</string>
|
||||
<string name="create_keepass_file">Creați un nou seif</string>
|
||||
<string name="progress_create">Crearea noii baze de date …</string>
|
||||
<string name="progress_title">Lucrând …</string>
|
||||
<string name="protection">Protecție</string>
|
||||
@@ -407,10 +407,10 @@
|
||||
<string name="hide_expired_entries_summary">Înscrierile expirate vor fi ascunse</string>
|
||||
<string name="auto_focus_search_title">Căutare rapidă</string>
|
||||
<string name="auto_focus_search_summary">Solicitați o căutare atunci când deschideți o bază de date</string>
|
||||
<string name="remember_database_locations_title">Salvați locația bazelor de date</string>
|
||||
<string name="remember_database_locations_summary">Amintiți-vă locația bazelor de date</string>
|
||||
<string name="remember_keyfile_locations_title">Salvați locația fișierelor cheie</string>
|
||||
<string name="remember_keyfile_locations_summary">Amintiți-vă locația bazelor de date cheie de date</string>
|
||||
<string name="remember_database_locations_title">Amintiți locațiile bazelor de date</string>
|
||||
<string name="remember_database_locations_summary">Ține evidența locului în care sunt stocate bazele de date</string>
|
||||
<string name="remember_keyfile_locations_title">Amintiți locațiile fișierelor cheie</string>
|
||||
<string name="remember_keyfile_locations_summary">Ține evidența locului în care sunt stocate fișierele cheie</string>
|
||||
<string name="show_recent_files_title">Afișați fișiere recente</string>
|
||||
<string name="show_recent_files_summary">Afișați locațiile bazelor de date recente</string>
|
||||
<string name="hide_broken_locations_title">Ascundeți linkurile de bază de date stricate</string>
|
||||
@@ -419,27 +419,27 @@
|
||||
<string name="warning_database_link_revoked">Accesul catre fisier eliminat de catre managerul de fisiere</string>
|
||||
<string name="error_create_database">Imposibil de creeat fisierul bazei de date.</string>
|
||||
<string name="error_label_exists">Aceasta eticheta exista</string>
|
||||
<string name="entry_add_attachment">Aduce atasament</string>
|
||||
<string name="discard">Renunta</string>
|
||||
<string name="discard_changes">Renunti la schimbari\?</string>
|
||||
<string name="validate">Valideaza</string>
|
||||
<string name="content_description_add_item">adaugă un element</string>
|
||||
<string name="entry_add_attachment">Adăugați atașament</string>
|
||||
<string name="discard">Renunțați</string>
|
||||
<string name="discard_changes">Renunțați la schimbări\?</string>
|
||||
<string name="validate">Validează</string>
|
||||
<string name="content_description_add_item">Adăugați un element</string>
|
||||
<string name="content_description_database_color">Culoarea bazei de date</string>
|
||||
<string name="content_description_entry_foreground_color">Culoarea primului plan</string>
|
||||
<string name="content_description_entry_background_color">Culoarea de fundal</string>
|
||||
<string name="debit_credit_card">Card de debit / credit</string>
|
||||
<string name="holder">Titularul</string>
|
||||
<string name="holder">Titular</string>
|
||||
<string name="number">Număr</string>
|
||||
<string name="card_verification_value">CVV</string>
|
||||
<string name="name">Nume</string>
|
||||
<string name="place_of_issue">Locul de eliberare</string>
|
||||
<string name="date_of_issue">Data eliberării</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="email_address">Adresa email</string>
|
||||
<string name="email_address">Adresă de email</string>
|
||||
<string name="ssid">SSID</string>
|
||||
<string name="type">Tip</string>
|
||||
<string name="cryptocurrency">Portofel de criptomonede</string>
|
||||
<string name="token">Token</string>
|
||||
<string name="token">Token (Jeton)</string>
|
||||
<string name="public_key">Cheie publică</string>
|
||||
<string name="private_key">Cheie privată</string>
|
||||
<string name="seed">Sămânță</string>
|
||||
@@ -452,15 +452,15 @@
|
||||
<string name="content_description_otp_information">Informații despre parola de unică folosință</string>
|
||||
<string name="template_group_name">Șabloane</string>
|
||||
<string name="content_description_credentials_information">Informații despre acreditări</string>
|
||||
<string name="id_card">Cartă de identitate</string>
|
||||
<string name="id_card">Carte de identitate</string>
|
||||
<string name="bank_identifier_code">SWIFT / BIC</string>
|
||||
<string name="personal_identification_number">PIN</string>
|
||||
<string name="bank_name">Numele băncii</string>
|
||||
<string name="account">Cont</string>
|
||||
<string name="bank">Banca</string>
|
||||
<string name="bank">Bancă</string>
|
||||
<string name="international_bank_account_number">IBAN</string>
|
||||
<string name="expired">Expirat</string>
|
||||
<string name="custom_data">Date personalizat</string>
|
||||
<string name="custom_data">Date personalizate</string>
|
||||
<string name="tags">Etichete</string>
|
||||
<string name="error_otp_type">Tipul de OTP existent nu este recunoscut de acest formular, este posibil ca validarea acestuia să nu mai genereze corect token-ul.</string>
|
||||
<string name="error_move_group_here">Nu poți muta grupul aici.</string>
|
||||
@@ -469,20 +469,70 @@
|
||||
<string name="error_field_name_already_exists">Numele câmpului există deja.</string>
|
||||
<string name="navigation_drawer_open">Sertar de navigare deschis</string>
|
||||
<string name="content_description_passphrase_word_count">Numărul de cuvinte al frazei de siguranță</string>
|
||||
<string name="html_about_privacy"><strong>Nu se recuperează date de utilizator </strong>, această aplicație nu se conectează la niciun server, funcționează doar la nivel local și respectă pe deplin confidențialitatea utilizatorilor.</string>
|
||||
<string name="html_about_privacy"><strong>Nu este colectat datele utilizatorilor </strong>, această aplicație nu se conectează la niciun server, funcționează doar la local și respectă pe deplin confidențialitatea utilizatorilor.</string>
|
||||
<string name="current_group">Grup curent</string>
|
||||
<string name="search_filters">Filtre de căutare</string>
|
||||
<string name="navigation_drawer_close">Sertar de navigare închis</string>
|
||||
<string name="content_description_nav_header">Antet de navigare</string>
|
||||
<string name="inherited">Moștenește</string>
|
||||
<string name="searchable">Căutabil</string>
|
||||
<string name="case_sensitive">Caz sensibil</string>
|
||||
<string name="regex">Expresie regular</string>
|
||||
<string name="case_sensitive">Sensibil la majuscule</string>
|
||||
<string name="regex">Expresie regulată</string>
|
||||
<string name="waiting_challenge_request">Se așteaptă pentru cererea de provocare…</string>
|
||||
<string name="waiting_challenge_response">Se așteaptă pentru un răspuns la provocare…</string>
|
||||
<string name="content_description_hardware_key_checkbox">Casetă de selectare a cheilor hardware</string>
|
||||
<string name="content_description_hardware_key_checkbox">Căsuță de selectare a cheii hardware</string>
|
||||
<string name="hardware_key">Cheie hardware</string>
|
||||
<string name="auto_type_sequence">Secvență Auto-Type</string>
|
||||
<string name="error_database_uri_null">URI-ul bazei de date nu poate fi recuperat.</string>
|
||||
<string name="error_no_hardware_key">Selectează o cheie hardware.</string>
|
||||
<string name="info">Info</string>
|
||||
<string name="menu_merge_database">Fuzionați datele</string>
|
||||
<string name="menu_reload_database">Reîncărcați datele</string>
|
||||
<string name="save_mode">Mod de salvare</string>
|
||||
<string name="colorize_password_summary">Colorați caracterele parolei în funcție de tip</string>
|
||||
<string name="show_uuid_title">Arată UUID</string>
|
||||
<string name="hint_icon_name">Numele iconiței</string>
|
||||
<string name="search_mode">Mod de căutare</string>
|
||||
<string name="wireless">Wi-Fi</string>
|
||||
<string name="menu_merge_from">Fuzionați din …</string>
|
||||
<string name="menu_save_copy_to">Salvați o copie în …</string>
|
||||
<string name="menu_keystore_remove_key">Ștergeți cheia de deblocare a dispozitivului</string>
|
||||
<string name="error_duplicate_file">Datele din fișier există deja.</string>
|
||||
<string name="error_remove_file">S-a produs o eroare în timpul eliminării datelor din fișier.</string>
|
||||
<string name="error_response_already_provided">Răspuns deja furnizat.</string>
|
||||
<string name="error_hardware_key_unsupported">Cheia hardware nu este suportat(ă).</string>
|
||||
<string name="error_empty_key">Cheia nu poate fi goală.</string>
|
||||
<string name="corrupted_file">Fișier coruptat.</string>
|
||||
<string name="passphrase">Fraza de acces</string>
|
||||
<string name="colorize_password_title">Colorați parolele</string>
|
||||
<string name="show_otp_token_summary">Afișează tokenurile OTP în lista de intrări</string>
|
||||
<string name="show_otp_token_title">Afișați Tokenul OTP</string>
|
||||
<string name="show_uuid_summary">Afișează UUID-ul legat de o intrare sau de un grup</string>
|
||||
<string name="menu_app_settings_summary">Căutare, blocare, istoric, proprietăți</string>
|
||||
<string name="menu_form_filling_settings_summary">Tastatură, completarea automată, clipboard</string>
|
||||
<string name="menu_advanced_unlock_settings_summary">Biometrie, acreditare din dispozitiv</string>
|
||||
<string name="menu_database_settings_summary">Metadata, coșul de reciclare, șabloane, istoric</string>
|
||||
<string name="master_key_settings_summary">Schimbare, reînnoire</string>
|
||||
<string name="menu_security_settings_summary">Criptare, funcție de derivare a cheilor</string>
|
||||
<string name="menu_external_icon">Iconiță externă</string>
|
||||
<string name="subdomain_search_title">Căutare subdomeniu</string>
|
||||
<string name="subdomain_search_summary">Căutați domenii web cu constrângeri de subdomenii</string>
|
||||
<string name="import_app_properties_title">Importați proprietățile aplicației</string>
|
||||
<string name="auto_type">Auto-Scriere</string>
|
||||
<string name="error_XML_malformed">XML malformat.</string>
|
||||
<string name="error_rebuild_list">Nu s-a putut reconstrui corect lista.</string>
|
||||
<string name="error_file_to_big">Fișierul pe care încercați să-o încărcați este prea mare.</string>
|
||||
<string name="error_upload_file">A apărut o eroare în timpul încărcării datelor din fișier.</string>
|
||||
<string name="error_start_database_action">A apărut o eroare în timpul efectuării unei acțiuni în baza de date.</string>
|
||||
<string name="error_challenge_already_requested">Provocare deja solicitată</string>
|
||||
<string name="error_no_response_from_challenge">Nu s-a reușit să obțină răspunsul la provocare.</string>
|
||||
<string name="error_cancel_by_user">Anulat de utilizator.</string>
|
||||
<string name="error_driver_required">Driver-ul pentru %1$s este necesară.</string>
|
||||
<string name="error_unable_merge_database_kdb">Nu s-a putut fuziona de la o bază de date V1.</string>
|
||||
<string name="error_location_unknown">Locația bazei de date este necunoscută, acțiunea bazei de date nu poate fi efectuată.</string>
|
||||
<string name="registration_mode">Mod de înregistrare</string>
|
||||
<string name="remember_hardware_key_title">Amintiți cheile hardware</string>
|
||||
<string name="remember_hardware_key_summary">Ține evidența cheilor hardware utilizate</string>
|
||||
<string name="import_app_properties_summary">Selectați un fișier pentru a importa proprietățile aplicației</string>
|
||||
<string name="export_app_properties_title">Exportați proprietățile aplicației</string>
|
||||
</resources>
|
||||
@@ -230,7 +230,7 @@
|
||||
<string name="enable_read_only_summary">По умолчанию открывать базу только для чтения</string>
|
||||
<string name="enable_education_screens_title">Обучающие подсказки</string>
|
||||
<string name="enable_education_screens_summary">Выделять элементы, чтобы показать, как работает приложение</string>
|
||||
<string name="reset_education_screens_title">Сбросить обучающие подсказки</string>
|
||||
<string name="reset_education_screens_title">Вернуть обучающие подсказки</string>
|
||||
<string name="reset_education_screens_summary">Снова показывать все обучающие подсказки</string>
|
||||
<string name="reset_education_screens_text">Обучающие подсказки сброшены</string>
|
||||
<string name="education_create_database_title">Создайте файл базы</string>
|
||||
@@ -412,10 +412,10 @@
|
||||
<string name="html_about_contribution">Для <strong>сохранения нашей независимости</strong>, <strong>исправления ошибок</strong>, <strong>добавления новых функций</strong> и <strong>поддержания разработки в активном состоянии</strong>, мы рассчитываем на вашу <strong>поддержку</strong>.</string>
|
||||
<string name="auto_focus_search_title">Быстрый поиск</string>
|
||||
<string name="auto_focus_search_summary">Открывать поисковый запрос при открытии базы</string>
|
||||
<string name="remember_database_locations_title">Помнить расположение баз паролей</string>
|
||||
<string name="remember_database_locations_summary">Помнить расположение файлов баз паролей</string>
|
||||
<string name="remember_database_locations_title">Помнить расположение баз</string>
|
||||
<string name="remember_database_locations_summary">Запоминать расположение баз паролей</string>
|
||||
<string name="remember_keyfile_locations_title">Помнить расположение ключей</string>
|
||||
<string name="remember_keyfile_locations_summary">Помнить расположение файлов ключей баз паролей</string>
|
||||
<string name="remember_keyfile_locations_summary">Запоминать расположение файлов ключей к базам паролей</string>
|
||||
<string name="show_recent_files_title">Показывать последние базы</string>
|
||||
<string name="show_recent_files_summary">Показывать расположение последних открытых баз</string>
|
||||
<string name="hide_broken_locations_title">Скрывать отсутствующие</string>
|
||||
@@ -545,10 +545,10 @@
|
||||
<string name="error_import_app_properties">Ошибка при импорте настроек приложения</string>
|
||||
<string name="success_import_app_properties">Настройки приложения импортированы</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="import_app_properties_summary">Импортировать настройки приложения из файла</string>
|
||||
<string name="import_app_properties_title">Импорт настроек</string>
|
||||
<string name="import_app_properties_summary">Выберите резервную копию настроек</string>
|
||||
<string name="import_app_properties_title">Восстановить настройки</string>
|
||||
<string name="error_start_database_action">Произошла ошибка при выполнении действия с базой.</string>
|
||||
<string name="error_move_group_here">Сюда группу переместить невозможно.</string>
|
||||
<string name="error_word_reserved">Это слово зарезервировано и не может быть использовано.</string>
|
||||
@@ -657,7 +657,7 @@
|
||||
<string name="corrupted_file">Файл повреждён.</string>
|
||||
<string name="error_location_unknown">Расположение базы неизвестно, действие с базой не может быть выполнено.</string>
|
||||
<string name="remember_hardware_key_title">Помнить аппаратные ключи</string>
|
||||
<string name="remember_hardware_key_summary">Помнить используемые аппаратные ключи</string>
|
||||
<string name="remember_hardware_key_summary">Запоминать используемые аппаратные ключи</string>
|
||||
<string name="screenshot_mode_banner_text">Режим снимка экрана</string>
|
||||
<string name="enable_screenshot_mode_title">Разрешать снимки экрана</string>
|
||||
<string name="hardware_key">Аппаратный ключ</string>
|
||||
|
||||
@@ -35,6 +35,11 @@
|
||||
<item name="android:elevation">0dp</item>
|
||||
</style>
|
||||
|
||||
<!-- Action Style -->
|
||||
<style name="KeepassDXStyle.Toolbar.Action" parent="KeepassDXStyle.Toolbar">
|
||||
<item name="android:backgroundTint">@color/surface_selector</item>
|
||||
</style>
|
||||
|
||||
<!-- Preference Theme -->
|
||||
<style name="KeepassDXStyle.Preference.Theme" parent="@style/PreferenceThemeOverlay">
|
||||
<item name="android:tint">?attr/colorOnSurface</item>
|
||||
|
||||
@@ -20,12 +20,10 @@
|
||||
<resources>
|
||||
<style name="KeepassDXStyle.Light.v23" parent="KeepassDXStyle.Light.v21" >
|
||||
<item name="android:statusBarColor">?attr/colorSurface</item>
|
||||
<item name="android:navigationBarColor">?attr/colorSurface</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
</style>
|
||||
<style name="KeepassDXStyle.Night.v23" parent="KeepassDXStyle.Night.v21" >
|
||||
<item name="android:statusBarColor">?attr/colorSurface</item>
|
||||
<item name="android:navigationBarColor">?attr/colorSurface</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -21,9 +21,11 @@
|
||||
<style name="KeepassDXStyle.Light.v27" parent="KeepassDXStyle.Light.v23" >
|
||||
<item name="android:navigationBarColor">?attr/colorSurface</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
</style>
|
||||
<style name="KeepassDXStyle.Night.v27" parent="KeepassDXStyle.Night.v23" >
|
||||
<item name="android:navigationBarColor">?attr/colorSurface</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -335,7 +335,7 @@
|
||||
<color name="simple_theme_light_onPrimary">@color/white</color>
|
||||
<color name="simple_theme_light_primaryContainer">@color/blue_deep</color>
|
||||
<color name="simple_theme_light_onPrimaryContainer">@color/white_darkest</color>
|
||||
<color name="simple_theme_light_secondary">@color/blue_deep</color>
|
||||
<color name="simple_theme_light_secondary">#4F91FF</color>
|
||||
<color name="simple_theme_light_onSecondary">@color/white</color>
|
||||
<color name="simple_theme_light_secondaryContainer">#B9DFFF</color>
|
||||
<color name="simple_theme_light_onSecondaryContainer">#151B2C</color>
|
||||
@@ -545,7 +545,7 @@
|
||||
<color name="reply_theme_light_onPrimary">#232F34</color>
|
||||
<color name="reply_theme_light_primaryContainer">#F9AA33</color>
|
||||
<color name="reply_theme_light_onPrimaryContainer">#232F34</color>
|
||||
<color name="reply_theme_light_secondary">#FF9A00</color>
|
||||
<color name="reply_theme_light_secondary">#E6900A</color>
|
||||
<color name="reply_theme_light_onSecondary">#232F34</color>
|
||||
<color name="reply_theme_light_secondaryContainer">#3E5560</color>
|
||||
<color name="reply_theme_light_onSecondaryContainer">#F6F8FA</color>
|
||||
@@ -579,7 +579,7 @@
|
||||
<color name="reply_theme_night_onPrimary">#232F34</color>
|
||||
<color name="reply_theme_night_primaryContainer">#F9AA33</color>
|
||||
<color name="reply_theme_night_onPrimaryContainer">#232F34</color>
|
||||
<color name="reply_theme_night_secondary">#FF9A00</color>
|
||||
<color name="reply_theme_night_secondary">#DC8400</color>
|
||||
<color name="reply_theme_night_onSecondary">#232F34</color>
|
||||
<color name="reply_theme_night_secondaryContainer">#2D3E45</color>
|
||||
<color name="reply_theme_night_onSecondaryContainer">#F6F8FA</color>
|
||||
@@ -615,7 +615,7 @@
|
||||
<color name="purple_theme_light_onPrimary">@color/white</color>
|
||||
<color name="purple_theme_light_primaryContainer">@color/red</color>
|
||||
<color name="purple_theme_light_onPrimaryContainer">@color/white</color>
|
||||
<color name="purple_theme_light_secondary">@color/red</color>
|
||||
<color name="purple_theme_light_secondary">#A34296</color>
|
||||
<color name="purple_theme_light_onSecondary">@color/white</color>
|
||||
<color name="purple_theme_light_secondaryContainer">#8449A8</color>
|
||||
<color name="purple_theme_light_onSecondaryContainer">@color/white</color>
|
||||
@@ -649,7 +649,7 @@
|
||||
<color name="purple_theme_night_onPrimary">@color/white_purple_light</color>
|
||||
<color name="purple_theme_night_primaryContainer">@color/red_dark</color>
|
||||
<color name="purple_theme_night_onPrimaryContainer">@color/white</color>
|
||||
<color name="purple_theme_night_secondary">@color/red</color>
|
||||
<color name="purple_theme_night_secondary">#8A3C80</color>
|
||||
<color name="purple_theme_night_onSecondary">@color/white_purple_light</color>
|
||||
<color name="purple_theme_night_secondaryContainer">#4C186A</color>
|
||||
<color name="purple_theme_night_onSecondaryContainer">#DED1E8</color>
|
||||
|
||||
@@ -320,15 +320,15 @@
|
||||
<string name="show_recent_files_summary">Show locations of recent databases</string>
|
||||
<string name="hide_broken_locations_title">Hide broken database links</string>
|
||||
<string name="hide_broken_locations_summary">Hide broken links in the list of recent databases</string>
|
||||
<string name="import_app_properties_title">Import app properties</string>
|
||||
<string name="import_app_properties_summary">Select a file to import app properties</string>
|
||||
<string name="export_app_properties_title">Export app properties</string>
|
||||
<string name="export_app_properties_summary">Create a file to export app properties</string>
|
||||
<string name="import_app_properties_title">Import app settings</string>
|
||||
<string name="import_app_properties_summary">Select a file to import app settings</string>
|
||||
<string name="export_app_properties_title">Export app settings</string>
|
||||
<string name="export_app_properties_summary">Create a file to export app settings</string>
|
||||
<string name="description_app_properties">KeePassDX properties to manage app settings</string>
|
||||
<string name="success_import_app_properties">App properties imported</string>
|
||||
<string name="error_import_app_properties">Error during app properties importation</string>
|
||||
<string name="success_export_app_properties">App properties exported</string>
|
||||
<string name="error_export_app_properties">Error during app properties exportation</string>
|
||||
<string name="success_import_app_properties">App settings imported</string>
|
||||
<string name="error_import_app_properties">Error during app settings import</string>
|
||||
<string name="success_export_app_properties">App settings exported</string>
|
||||
<string name="error_export_app_properties">Error during app settings export</string>
|
||||
<string name="root">Root</string>
|
||||
<string name="encryption_explanation">Database encryption algorithm used for all data</string>
|
||||
<string name="kdf_explanation">To generate the key for the encryption algorithm, the master key is transformed using a randomly salted key derivation function.</string>
|
||||
@@ -693,23 +693,34 @@
|
||||
</string-array>
|
||||
<string name="style_choose_title">App theme</string>
|
||||
<string name="style_choose_summary">Theme used in the app</string>
|
||||
<string name="style_name_forest">Forest</string>
|
||||
<string name="style_name_divine">Divine</string>
|
||||
<string name="style_name_classic">Classic</string>
|
||||
<string name="style_name_simple">Simple</string>
|
||||
<string name="style_name_moon">Moon</string>
|
||||
<string name="style_name_sun">Sun</string>
|
||||
<string name="style_name_reply">Reply</string>
|
||||
<string name="style_name_kunzite">Kunzite</string>
|
||||
<string name="style_name_follow_system">Follow the system</string>
|
||||
<string-array name="list_style_names">
|
||||
<item>Forest</item>
|
||||
<item>Divine</item>
|
||||
<item>Classic</item>
|
||||
<item>Simple</item>
|
||||
<item>Moon</item>
|
||||
<item>Sun</item>
|
||||
<item>Reply</item>
|
||||
<item>Kunzite</item>
|
||||
<item>Follow the system</item>
|
||||
<item>@string/style_name_forest</item>
|
||||
<item>@string/style_name_divine</item>
|
||||
<item>@string/style_name_classic</item>
|
||||
<item>@string/style_name_simple</item>
|
||||
<item>@string/style_name_moon</item>
|
||||
<item>@string/style_name_sun</item>
|
||||
<item>@string/style_name_reply</item>
|
||||
<item>@string/style_name_kunzite</item>
|
||||
<item>@string/style_name_follow_system</item>
|
||||
</string-array>
|
||||
<string name="style_brightness_title">Theme brightness</string>
|
||||
<string name="style_brightness_summary">Select light or dark themes</string>
|
||||
<string name="style_name_light">Light</string>
|
||||
<string name="style_name_dark">Dark</string>
|
||||
<string-array name="list_style_brightness_names">
|
||||
<item>Light</item>
|
||||
<item>Dark</item>
|
||||
<item>Follow the system</item>
|
||||
<item>@string/style_name_light</item>
|
||||
<item>@string/style_name_dark</item>
|
||||
<item>@string/style_name_follow_system</item>
|
||||
</string-array>
|
||||
<string name="icon_section_standard">Standard</string>
|
||||
<string name="icon_section_custom">Custom</string>
|
||||
|
||||
@@ -29,6 +29,9 @@ Settings Activity. This is pointed to in the service's meta-data in the applicat
|
||||
<compatibility-package
|
||||
android:name="alook.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="alook.browser.google"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="app.vanadium.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
@@ -89,12 +92,24 @@ Settings Activity. This is pointed to in the service's meta-data in the applicat
|
||||
<compatibility-package
|
||||
android:name="com.google.android.apps.chrome_dev"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.google.android.captiveportallogin"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.iode.firefox"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.jamal2367.styx"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.kiwibrowser.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.kiwibrowser.browser.dev"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.lemurbrowser.exts"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.microsoft.emmx"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
@@ -119,12 +134,18 @@ Settings Activity. This is pointed to in the service's meta-data in the applicat
|
||||
<compatibility-package
|
||||
android:name="com.naver.whale"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.neeva.app"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.opera.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.opera.browser.beta"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.opera.gx"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.opera.mini.native"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
@@ -134,9 +155,15 @@ Settings Activity. This is pointed to in the service's meta-data in the applicat
|
||||
<compatibility-package
|
||||
android:name="com.opera.touch"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.qflair.browserq"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.qwant.liberty"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.rainsee.create"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.sec.android.app.sbrowser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
@@ -161,6 +188,15 @@ Settings Activity. This is pointed to in the service's meta-data in the applicat
|
||||
<compatibility-package
|
||||
android:name="com.yandex.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.yjllq.internet"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.yjllq.kito"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.yujian.ResideMenuDemo"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.z28j.feel"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
@@ -182,6 +218,9 @@ Settings Activity. This is pointed to in the service's meta-data in the applicat
|
||||
<compatibility-package
|
||||
android:name="mark.via.gp"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="net.dezor.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="net.slions.fulguris.full.download"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
|
||||
BIN
art/screen.jpg
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 58 KiB |
@@ -46,6 +46,7 @@ class Group : Node, GroupVersionedInterface<Group, Entry> {
|
||||
var isVirtual = false
|
||||
|
||||
var numberOfChildEntries: Int = 0
|
||||
var recursiveNumberOfChildEntries: Int = 0
|
||||
|
||||
/**
|
||||
* Use this constructor to copy a Group
|
||||
@@ -332,6 +333,18 @@ class Group : Node, GroupVersionedInterface<Group, Entry> {
|
||||
|
||||
fun refreshNumberOfChildEntries(filters: Array<ChildFilter> = emptyArray()) {
|
||||
this.numberOfChildEntries = getFilteredChildEntries(filters).size
|
||||
this.recursiveNumberOfChildEntries = getFilteredChildEntriesInGroups(filters)
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the cumulative number of entries in the current group and its children
|
||||
*/
|
||||
private fun getFilteredChildEntriesInGroups(filters: Array<ChildFilter>): Int {
|
||||
var counter = 0
|
||||
getChildGroups().forEach { childGroup ->
|
||||
counter += childGroup.getFilteredChildEntriesInGroups(filters)
|
||||
}
|
||||
return getFilteredChildEntries(filters).size + counter
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
* Material You theme (follow system colors) #1469
|
||||
* Refactoring inner code #1371
|
||||
* Migration to API 33
|
||||
# Cut, copy and delete from search #891 #1308 #1263
|
||||
* Fix behaviors #1351
|
||||
* Fix bugs #1589 #1584 #1545 #1563 #1371
|
||||
* Cut, copy and delete from search #891 #1308 #1263
|
||||
* Fix behaviors #1351 #874 #1327
|
||||
* Fix bugs #1589 #1584 #1545 #1563 #1371 #1609
|
||||
3
fastlane/metadata/android/en-US/changelogs/124.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
* Fix back lock #1635 #1629 #1634
|
||||
* Fix lock button in settings #1630
|
||||
* Improve theme translation #1631
|
||||
|
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 234 KiB |
|
Before Width: | Height: | Size: 357 KiB After Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 179 KiB |
@@ -3,5 +3,5 @@
|
||||
* Refactorisation du code interne #1371
|
||||
* Migration vers API 33
|
||||
* Couper, copier et supprimer depuis la recherche #891 #1308 #1263
|
||||
* Corrections de comportements #1351
|
||||
* Corrections de bugs #1589 #1584 #1545 #1563 #1371
|
||||
* Corrections de comportements #1351 #874 #1327
|
||||
* Corrections de bugs #1589 #1584 #1545 #1563 #1371 #1609
|
||||
3
fastlane/metadata/android/fr-FR/changelogs/124.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
* Correction du verrouillage de retour #1635 #1629 #1634
|
||||
* Correction du bouton de verrouillage dans les paramètres #1630
|
||||
* Amélioration des traductions de thèmes #1631
|
||||