Merge branch 'develop' into feature/Keep_Screen_On

This commit is contained in:
SUPERYAO
2021-10-25 18:03:04 +08:00
committed by GitHub
33 changed files with 902 additions and 281 deletions

View File

@@ -1,3 +1,10 @@
KeePassDX(3.1.0)
* Change default Argon2 parameters #1098
* Add & edit custom icon name #976
KeePassDX(3.0.2)
* Samsung DeX mode #1114 #245 (Thx @chenxiaolong)
KeePassDX(3.0.1) KeePassDX(3.0.1)
* Fix text size and smallest margin #1085 * Fix text size and smallest margin #1085
* Fix number of lines during an edition #1073 * Fix number of lines during an edition #1073

View File

@@ -15,6 +15,7 @@
- Material design with **themes**. - Material design with **themes**.
- **Auto-Fill** and Integration. - **Auto-Fill** and Integration.
- Field filling **keyboard**. - Field filling **keyboard**.
- Dynamic **templates**
- **History** of each entry. - **History** of each entry.
- Precise management of **settings**. - Precise management of **settings**.
- Code written in **native languages** *(Kotlin / Java / JNI / C)*. - Code written in **native languages** *(Kotlin / Java / JNI / C)*.

View File

@@ -11,8 +11,8 @@ android {
applicationId "com.kunzisoft.keepass" applicationId "com.kunzisoft.keepass"
minSdkVersion 15 minSdkVersion 15
targetSdkVersion 30 targetSdkVersion 30
versionCode = 88 versionCode = 90
versionName = "3.0.1" versionName = "3.1.0"
multiDexEnabled true multiDexEnabled true
testApplicationId = "com.kunzisoft.keepass.tests" testApplicationId = "com.kunzisoft.keepass.tests"

View File

@@ -221,6 +221,14 @@
android:name="com.kunzisoft.keepass.services.KeyboardEntryNotificationService" android:name="com.kunzisoft.keepass.services.KeyboardEntryNotificationService"
android:enabled="true" android:enabled="true"
android:exported="false" /> android:exported="false" />
<receiver
android:name="com.kunzisoft.keepass.receivers.DexModeReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.app.action.ENTER_KNOX_DESKTOP_MODE" />
<action android:name="android.app.action.EXIT_KNOX_DESKTOP_MODE" />
</intent-filter>
</receiver>
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" /> <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
</application> </application>

View File

@@ -88,6 +88,12 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
// Enabling/disabling MagikeyboardService is normally done by DexModeReceiver, but this
// additional check will allow the keyboard to be reenabled more easily if the app crashes
// or is force quit within DeX mode and then the user leaves DeX mode. Without this, the
// user would need to enter and exit DeX mode once to reenable the service.
MagikeyboardUtil.setEnabled(this, !DexUtil.isDexMode(resources.configuration))
mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(applicationContext) mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(applicationContext)
setContentView(R.layout.activity_file_selection) setContentView(R.layout.activity_file_selection)

View File

@@ -33,6 +33,7 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.fragment.app.commit import androidx.fragment.app.commit
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import com.kunzisoft.keepass.R import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.dialogs.IconEditDialogFragment
import com.kunzisoft.keepass.activities.fragments.IconPickerFragment import com.kunzisoft.keepass.activities.fragments.IconPickerFragment
import com.kunzisoft.keepass.activities.helpers.ExternalFileHelper import com.kunzisoft.keepass.activities.helpers.ExternalFileHelper
import com.kunzisoft.keepass.activities.helpers.setOpenDocumentClickListener import com.kunzisoft.keepass.activities.helpers.setOpenDocumentClickListener
@@ -139,6 +140,16 @@ class IconPickerActivity : DatabaseLockActivity() {
} }
uploadButton.isEnabled = true uploadButton.isEnabled = true
} }
iconPickerViewModel.customIconUpdated.observe(this) { iconCustomUpdated ->
if (iconCustomUpdated.error && !iconCustomUpdated.errorConsumed) {
Snackbar.make(coordinatorLayout, iconCustomUpdated.errorStringId, Snackbar.LENGTH_LONG).asError().show()
iconCustomUpdated.errorConsumed = true
}
iconCustomUpdated.iconCustom?.let {
mDatabase?.updateCustomIcon(it)
}
iconPickerViewModel.deselectAllCustomIcons()
}
} }
override fun viewToInvalidateTimeout(): View? { override fun viewToInvalidateTimeout(): View? {
@@ -197,6 +208,10 @@ class IconPickerActivity : DatabaseLockActivity() {
} }
override fun onPrepareOptionsMenu(menu: Menu?): Boolean { override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
menu?.findItem(R.id.menu_edit)?.apply {
isEnabled = mIconsSelected.size == 1
isVisible = isEnabled
}
menu?.findItem(R.id.menu_delete)?.apply { menu?.findItem(R.id.menu_delete)?.apply {
isEnabled = mCustomIconsSelectionMode isEnabled = mCustomIconsSelectionMode
isVisible = isEnabled isVisible = isEnabled
@@ -213,6 +228,9 @@ class IconPickerActivity : DatabaseLockActivity() {
onBackPressed() onBackPressed()
} }
} }
R.id.menu_edit -> {
updateCustomIcon(mIconsSelected[0])
}
R.id.menu_delete -> { R.id.menu_delete -> {
mIconsSelected.forEach { iconToRemove -> mIconsSelected.forEach { iconToRemove ->
removeCustomIcon(iconToRemove) removeCustomIcon(iconToRemove)
@@ -277,6 +295,11 @@ class IconPickerActivity : DatabaseLockActivity() {
} }
} }
private fun updateCustomIcon(iconImageCustom: IconImageCustom) {
IconEditDialogFragment.update(iconImageCustom)
.show(supportFragmentManager, IconEditDialogFragment.TAG_UPDATE_ICON)
}
private fun removeCustomIcon(iconImageCustom: IconImageCustom) { private fun removeCustomIcon(iconImageCustom: IconImageCustom) {
uploadButton.isEnabled = false uploadButton.isEnabled = false
iconPickerViewModel.deselectAllCustomIcons() iconPickerViewModel.deselectAllCustomIcons()

View File

@@ -0,0 +1,126 @@
/*
* Copyright 2021 Jeremy Jamet / Kunzisoft.
*
* This file is part of KeePassDX.
*
* KeePassDX is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* KeePassDX is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.kunzisoft.keepass.activities.dialogs
import android.app.Dialog
import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.activityViewModels
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.DateInstant
import com.kunzisoft.keepass.database.element.icon.IconImage
import com.kunzisoft.keepass.database.element.icon.IconImageCustom
import com.kunzisoft.keepass.viewmodels.IconPickerViewModel
class IconEditDialogFragment : DatabaseDialogFragment() {
private val mIconPickerViewModel: IconPickerViewModel by activityViewModels()
private var mPopulateIconMethod: ((ImageView, IconImage) -> Unit)? = null
private lateinit var iconView: ImageView
private lateinit var nameTextLayoutView: TextInputLayout
private lateinit var nameTextView: TextView
private var mCustomIcon: IconImageCustom? = null
override fun onDatabaseRetrieved(database: Database?) {
super.onDatabaseRetrieved(database)
mPopulateIconMethod = { imageView, icon ->
database?.iconDrawableFactory?.assignDatabaseIcon(imageView, icon)
}
mCustomIcon?.let { customIcon ->
populateViewsWithCustomIcon(customIcon)
}
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
activity?.let { activity ->
val root = activity.layoutInflater.inflate(R.layout.fragment_icon_edit, null)
iconView = root.findViewById(R.id.icon_edit_image)
nameTextLayoutView = root.findViewById(R.id.icon_edit_name_container)
nameTextView = root.findViewById(R.id.icon_edit_name)
if (savedInstanceState != null
&& savedInstanceState.containsKey(KEY_CUSTOM_ICON_ID)) {
mCustomIcon = savedInstanceState.getParcelable(KEY_CUSTOM_ICON_ID) ?: mCustomIcon
} else {
arguments?.apply {
if (containsKey(KEY_CUSTOM_ICON_ID)) {
mCustomIcon = getParcelable(KEY_CUSTOM_ICON_ID) ?: mCustomIcon
}
}
}
val builder = AlertDialog.Builder(activity)
builder.setView(root)
.setPositiveButton(android.R.string.ok) { _, _ ->
retrieveIconInfoFromViews()
mCustomIcon?.let { customIcon ->
mIconPickerViewModel.updateCustomIcon(
IconPickerViewModel.IconCustomState(customIcon, false)
)
}
}
.setNegativeButton(android.R.string.cancel) { _, _ ->
// Do nothing
mIconPickerViewModel.updateCustomIcon(
IconPickerViewModel.IconCustomState(null, false)
)
}
return builder.create()
}
return super.onCreateDialog(savedInstanceState)
}
private fun populateViewsWithCustomIcon(customIcon: IconImageCustom) {
mPopulateIconMethod?.invoke(iconView, customIcon.getIconImageToDraw())
nameTextView.text = customIcon.name
}
private fun retrieveIconInfoFromViews() {
mCustomIcon?.name = nameTextView.text.toString()
mCustomIcon?.lastModificationTime = DateInstant()
}
override fun onSaveInstanceState(outState: Bundle) {
retrieveIconInfoFromViews()
outState.putParcelable(KEY_CUSTOM_ICON_ID, mCustomIcon)
super.onSaveInstanceState(outState)
}
companion object {
const val TAG_UPDATE_ICON = "TAG_UPDATE_ICON"
const val KEY_CUSTOM_ICON_ID = "KEY_CUSTOM_ICON_ID"
fun update(customIcon: IconImageCustom): IconEditDialogFragment {
val bundle = Bundle()
bundle.putParcelable(KEY_CUSTOM_ICON_ID, IconImageCustom(customIcon))
val fragment = IconEditDialogFragment()
fragment.arguments = bundle
return fragment
}
}
}

View File

@@ -55,8 +55,10 @@ class IconCustomFragment : IconFragment<IconImageCustom>() {
iconCustomAdded?.iconCustom?.let { icon -> iconCustomAdded?.iconCustom?.let { icon ->
iconPickerAdapter.addIcon(icon) iconPickerAdapter.addIcon(icon)
iconCustomAdded.iconCustom = null iconCustomAdded.iconCustom = null
try {
iconsGridView.smoothScrollToPosition(iconPickerAdapter.lastPosition)
} catch (ignore: Exception) {}
} }
iconsGridView.smoothScrollToPosition(iconPickerAdapter.lastPosition)
} }
} }
iconPickerViewModel.customIconRemoved.observe(viewLifecycleOwner) { iconCustomRemoved -> iconPickerViewModel.customIconRemoved.observe(viewLifecycleOwner) { iconCustomRemoved ->
@@ -67,6 +69,14 @@ class IconCustomFragment : IconFragment<IconImageCustom>() {
} }
} }
} }
iconPickerViewModel.customIconUpdated.observe(viewLifecycleOwner) { iconCustomUpdated ->
if (!iconCustomUpdated.error) {
iconCustomUpdated?.iconCustom?.let { icon ->
iconPickerAdapter.updateIcon(icon)
iconCustomUpdated.iconCustom = null
}
}
}
} }
override fun onIconClickListener(icon: IconImageCustom) { override fun onIconClickListener(icon: IconImageCustom) {

View File

@@ -192,17 +192,17 @@ class Argon2Kdf(private val type: Type) : KdfEngine() {
private val MIN_VERSION = UnsignedInt(0x10) private val MIN_VERSION = UnsignedInt(0x10)
private val MAX_VERSION = UnsignedInt(0x13) private val MAX_VERSION = UnsignedInt(0x13)
private val DEFAULT_ITERATIONS = UnsignedLong(2L) private val DEFAULT_ITERATIONS = UnsignedLong(3L)
private val MIN_ITERATIONS = UnsignedLong(1L) private val MIN_ITERATIONS = UnsignedLong(1L)
private val MAX_ITERATIONS = UnsignedLong(4294967295L) private val MAX_ITERATIONS = UnsignedLong(4294967295L)
private val DEFAULT_MEMORY = UnsignedLong((1024L * 1024L)) private val DEFAULT_MEMORY = UnsignedLong((1024L * 1024L * 16L))
private val MIN_MEMORY = UnsignedLong(1024L * 8L) private val MIN_MEMORY = UnsignedLong(1024L * 8L)
private val MAX_MEMORY = UnsignedInt.MAX_VALUE.toKotlinLong() private val MAX_MEMORY = UnsignedInt.MAX_VALUE.toKotlinLong()
private const val MEMORY_BLOCK_SIZE: Long = 1024L private const val MEMORY_BLOCK_SIZE: Long = 1024L
private val DEFAULT_PARALLELISM = UnsignedInt(2) private val DEFAULT_PARALLELISM = UnsignedInt(4)
private val MIN_PARALLELISM = UnsignedInt.fromKotlinLong(1L) private val MIN_PARALLELISM = UnsignedInt.fromKotlinLong(1L)
private val MAX_PARALLELISM = UnsignedInt.fromKotlinLong(((1 shl 24) - 1)) private val MAX_PARALLELISM = UnsignedInt.fromKotlinLong(((1 shl 24) - 1).toLong())
} }
} }

View File

@@ -147,6 +147,10 @@ class Database {
iconsManager.removeCustomIcon(binaryCache, customIcon.uuid) iconsManager.removeCustomIcon(binaryCache, customIcon.uuid)
} }
fun updateCustomIcon(customIcon: IconImageCustom) {
iconsManager.getIcon(customIcon.uuid).updateWith(customIcon)
}
fun getTemplates(templateCreation: Boolean): List<Template> { fun getTemplates(templateCreation: Boolean): List<Template> {
return mDatabaseKDBX?.getTemplates(templateCreation) ?: listOf() return mDatabaseKDBX?.getTemplates(templateCreation) ?: listOf()
} }

View File

@@ -31,6 +31,10 @@ class CustomIconPool(private val binaryCache: BinaryCache) : BinaryPool<UUID>(bi
return newUUID return newUUID
} }
fun getCustomIcon(key: UUID): IconImageCustom? {
return customIcons[key]
}
fun any(predicate: (IconImageCustom)-> Boolean): Boolean { fun any(predicate: (IconImageCustom)-> Boolean): Boolean {
return customIcons.any { predicate(it.value) } return customIcons.any { predicate(it.value) }
} }

View File

@@ -32,6 +32,16 @@ class IconImageCustom : IconImageDraw {
var name: String = "" var name: String = ""
var lastModificationTime: DateInstant? = null var lastModificationTime: DateInstant? = null
fun updateWith(icon: IconImageCustom) {
this.name = icon.name
this.lastModificationTime = icon.lastModificationTime
}
constructor(copy: IconImageCustom) {
this.uuid = copy.uuid
updateWith(copy)
}
constructor(name: String = "", lastModificationTime: DateInstant? = null) { constructor(name: String = "", lastModificationTime: DateInstant? = null) {
this.uuid = DatabaseVersioned.UUID_ZERO this.uuid = DatabaseVersioned.UUID_ZERO
this.name = name this.name = name

View File

@@ -65,7 +65,7 @@ class IconsManager(binaryCache: BinaryCache) {
} }
fun getIcon(iconUuid: UUID): IconImageCustom { fun getIcon(iconUuid: UUID): IconImageCustom {
return IconImageCustom(iconUuid) return customCache.getCustomIcon(iconUuid) ?: IconImageCustom(iconUuid)
} }
fun isCustomIconBinaryDuplicate(binaryData: BinaryData): Boolean { fun isCustomIconBinaryDuplicate(binaryData: BinaryData): Boolean {

View File

@@ -0,0 +1,33 @@
package com.kunzisoft.keepass.receivers
import android.content.BroadcastReceiver
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.util.Log
import com.kunzisoft.keepass.magikeyboard.MagikeyboardService
import com.kunzisoft.keepass.utils.DexUtil
import com.kunzisoft.keepass.utils.MagikeyboardUtil
class DexModeReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val enabled = when (intent?.action) {
"android.app.action.ENTER_KNOX_DESKTOP_MODE" -> {
Log.i(TAG, "Entered DeX mode")
false
}
"android.app.action.EXIT_KNOX_DESKTOP_MODE" -> {
Log.i(TAG, "Left DeX mode")
true
}
else -> return
}
MagikeyboardUtil.setEnabled(context!!, enabled)
}
companion object {
private val TAG = DexModeReceiver::class.java.name
}
}

View File

@@ -0,0 +1,27 @@
package com.kunzisoft.keepass.utils
import android.content.res.Configuration
import android.util.Log
object DexUtil {
private val TAG = DexUtil::class.java.name
// Determine if the current environment is in DeX mode. Always returns false on non-Samsung
// devices.
fun isDexMode(config: Configuration): Boolean {
// This is the documented way to check this: https://developer.samsung.com/samsung-dex/modify-optimizing.html
return try {
val configClass = config.javaClass
val enabledConstant = configClass.getField("SEM_DESKTOP_MODE_ENABLED").getInt(configClass)
val enabledField = configClass.getField("semDesktopModeEnabled").getInt(config)
val isEnabled = enabledConstant == enabledField
Log.d(TAG, "DeX currently enabled: $isEnabled")
isEnabled
} catch (e: Exception) {
Log.d(TAG, "Failed to check for DeX mode; likely not Samsung device: $e")
false
}
}
}

View File

@@ -0,0 +1,27 @@
package com.kunzisoft.keepass.utils
import android.content.ComponentName
import android.content.Context
import android.content.pm.PackageManager
import android.util.Log
import com.kunzisoft.keepass.magikeyboard.MagikeyboardService
object MagikeyboardUtil {
private val TAG = MagikeyboardUtil::class.java.name
// Set whether MagikeyboardService is enabled. This change is persistent and survives app
// crashes and device restarts. The state is changed immediately and does not require an app
// restart.
fun setEnabled(context: Context, enabled: Boolean) {
val componentState = if (enabled) {
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
} else {
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
}
Log.d(TAG, "Setting service state: $enabled")
val component = ComponentName(context, MagikeyboardService::class.java)
context.packageManager.setComponentEnabledSetting(component, componentState, PackageManager.DONT_KILL_APP)
}
}

View File

@@ -2,6 +2,7 @@ package com.kunzisoft.keepass.viewmodels
import android.os.Parcel import android.os.Parcel
import android.os.Parcelable import android.os.Parcelable
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import com.kunzisoft.keepass.database.element.icon.IconImageCustom import com.kunzisoft.keepass.database.element.icon.IconImageCustom
@@ -30,6 +31,10 @@ class IconPickerViewModel: ViewModel() {
MutableLiveData<IconCustomState>() MutableLiveData<IconCustomState>()
} }
val customIconUpdated : MutableLiveData<IconCustomState> by lazy {
MutableLiveData<IconCustomState>()
}
fun pickStandardIcon(icon: IconImageStandard) { fun pickStandardIcon(icon: IconImageStandard) {
standardIconPicked.value = icon standardIconPicked.value = icon
} }
@@ -54,6 +59,10 @@ class IconPickerViewModel: ViewModel() {
customIconRemoved.value = customIcon customIconRemoved.value = customIcon
} }
fun updateCustomIcon(customIcon: IconCustomState) {
customIconUpdated.value = customIcon
}
data class IconCustomState(var iconCustom: IconImageCustom? = null, data class IconCustomState(var iconCustom: IconImageCustom? = null,
var error: Boolean = true, var error: Boolean = true,
var errorStringId: Int = -1, var errorStringId: Int = -1,

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2021 Jeremy Jamet / Kunzisoft.
This file is part of KeePassDX.
KeePassDX is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
KeePassDX is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/default_margin"
android:importantForAutofill="noExcludeDescendants"
tools:targetApi="o">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon_edit_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginRight="@dimen/default_margin"
android:layout_marginEnd="@dimen/default_margin"
android:src="@drawable/ic_blank_32dp"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/icon_edit_name_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/icon_edit_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:layout_marginStart="4dp"
android:inputType="text"
android:maxLines="1"
android:singleLine="true"
android:hint="@string/hint_icon_name"/>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -19,6 +19,12 @@
--> -->
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_edit"
android:icon="@drawable/ic_mode_edit_white_24dp"
android:title="@string/menu_edit"
android:orderInCategory="5"
app:iconTint="?attr/colorControlNormal"
app:showAsAction="ifRoom" />
<item android:id="@+id/menu_delete" <item android:id="@+id/menu_delete"
android:icon="@drawable/ic_delete_forever_white_24dp" android:icon="@drawable/ic_delete_forever_white_24dp"
android:title="@string/menu_delete" android:title="@string/menu_delete"

View File

@@ -1,335 +1,592 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
Copyright 2020 Jeremy Jamet / Kunzisoft. Copyright 2020 Jeremy Jamet / Kunzisoft.
This file is part of KeePassDX. This file is part of KeePassDX.
KeePassDX is free software: you can redistribute it and/or modify KeePassDX is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
KeePassDX is distributed in the hope that it will be useful, KeePassDX is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>. along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
--><resources> --><resources>
<string name="feedback">回饋</string> <string name="about">關於</string>
<string name="homepage">首頁</string> <string name="about_description">Android 版 KeePass 密碼管理軟體</string>
<string name="about_description">Android版KeePass密碼管理軟體</string>
<string name="accept">接受</string> <string name="accept">接受</string>
<string name="account">帳戶</string>
<string name="add_entry">添加項目</string> <string name="add_entry">添加項目</string>
<string name="add_group">添加群組</string> <string name="add_group">添加群組</string>
<string name="encryption_algorithm">加密演算法</string> <string name="advanced_unlock">進階解鎖</string>
<string name="advanced_unlock_delete_all_key_warning">要刪除所有與高級解鎖相關的加密密鑰嗎?</string>
<string name="advanced_unlock_explanation_summary">使用高級解鎖以便快速解鎖資料庫</string>
<string name="advanced_unlock_invalid_key">無法讀取高級解鎖密鑰。請刪除它,並重複解鎖步驟。</string>
<string name="advanced_unlock_not_recognized">無法辨識高級解鎖印記</string>
<string name="advanced_unlock_prompt_extract_credential_message">用高級解鎖資料提取資料庫憑證</string>
<string name="advanced_unlock_prompt_extract_credential_title">用高級解鎖開啟資料庫</string>
<string name="advanced_unlock_prompt_not_initialized">無法初始化高級解鎖提示。</string>
<string name="advanced_unlock_prompt_store_credential_message">警告:即使你使用高級解鎖,你仍然需要記住你的主密碼。</string>
<string name="advanced_unlock_prompt_store_credential_title">高級解鎖</string>
<string name="advanced_unlock_scanning_error">高級解鎖出錯:%1$s</string>
<string name="advanced_unlock_tap_delete">點擊刪除高級解鎖密鑰</string>
<string name="advanced_unlock_timeout">高級解鎖超時</string>
<string name="allow">允許</string>
<string name="allow_copy_password_summary">允許複製密碼或受保護的欄位到剪貼簿</string>
<string name="allow_copy_password_title">信任剪貼簿</string>
<string name="allow_copy_password_warning">警告:所有應用都共享剪貼簿,因此如複製機敏資訊,將可能被其它應用讀取。</string>
<string name="allow_no_password_summary">如果沒有憑證被選中,允許點擊「開啟」按鈕</string>
<string name="allow_no_password_title">允許沒有主密鑰</string>
<string name="app_timeout">應用程式超時</string> <string name="app_timeout">應用程式超時</string>
<string name="app_timeout_summary">鎖定資料庫前的置時間</string> <string name="app_timeout_summary">鎖定資料庫前的置時間</string>
<string name="application">程式</string> <string name="application">程式</string>
<string name="menu_app_settings">應用程式設定</string> <string name="application_appearance">應用程式</string>
<string name="assign_master_key">分配主密鑰</string>
<string name="auto_focus_search_summary">開啟資料庫時就開始搜尋</string>
<string name="auto_focus_search_title">快速搜尋</string>
<string name="autofill">自動填入</string>
<string name="autofill_application_id_blocklist_summary">禁止應用程式自動填充的黑名單</string>
<string name="autofill_application_id_blocklist_title">應用程式黑名單</string>
<string name="autofill_ask_to_save_data_summary">當表單經過驗證後,詢問是否保存資料</string>
<string name="autofill_ask_to_save_data_title">詢問是否保存資料</string>
<string name="autofill_auto_search_summary">自動建議匹配的網址域名或應用程式 ID 的搜尋結果</string>
<string name="autofill_auto_search_title">自動搜尋</string>
<string name="autofill_block">阻止自動填入</string>
<string name="autofill_block_restart">重新啟動包含該表單的應用程式以啟用攔截。</string>
<string name="autofill_close_database_summary">自動填充寫入後,關閉資料庫</string>
<string name="autofill_close_database_title">關閉資料庫</string>
<string name="autofill_explanation_summary">啟用自動填充功能以快速填寫其他應用程式中的用戶名和密碼</string>
<string name="autofill_inline_suggestions_keyboard">已添加自動填充建議。</string>
<string name="autofill_inline_suggestions_summary">嘗試直接從相容的鍵盤顯示自動填充建議</string>
<string name="autofill_inline_suggestions_title">內聯建議</string>
<string name="autofill_manual_selection_summary">顯示選項讓用戶選擇資料庫條目</string>
<string name="autofill_manual_selection_title">手動選擇</string>
<string name="autofill_preference_title">自動填入設定</string>
<string name="autofill_read_only_save">以唯讀方式開啟的資料庫不允許保存資料。</string>
<string name="autofill_save_search_info_summary">手動選擇條目時,嘗試保存搜尋信息</string>
<string name="autofill_save_search_info_title">保存搜尋資訊</string>
<string name="autofill_select_entry">選擇條目…</string>
<string name="autofill_service_name">KeePassDX 自動填充</string>
<string name="autofill_sign_in_prompt">用 KeePassDX 登入</string>
<string name="autofill_web_domain_blocklist_summary">禁止在下列域名中自動填充憑證</string>
<string name="autofill_web_domain_blocklist_title">網域名稱黑名單</string>
<string name="back_to_previous_keyboard">回到之前的鍵盤</string>
<string name="backspace">後退鍵</string>
<string name="bank">銀行</string>
<string name="bank_identifier_code">SWIFT / BIC</string>
<string name="bank_name">銀行名稱</string>
<string name="biometric">生物辨識</string>
<string name="biometric_auto_open_prompt_summary">資料庫就緒後,應用將自動請求高級解鎖</string>
<string name="biometric_auto_open_prompt_title">自動開啟提示</string>
<string name="biometric_delete_all_key_summary">刪除全部生物辨識加密密鑰</string>
<string name="biometric_delete_all_key_title">刪除加密密鑰</string>
<string name="biometric_security_update_required">需要生物辨識安全更新。</string>
<string name="biometric_unlock_enable_summary">通過生物辨識解鎖資料庫</string>
<string name="biometric_unlock_enable_title">生物特徵解鎖</string>
<string name="brackets">括弧</string> <string name="brackets">括弧</string>
<string name="file_manager_install_description">需要支持Intent動作ACTION_CREATE_DOCUMENT和ACTION_OPEN_DOCUMENT的檔案管理器來建立、開啟和儲存資料庫檔案。</string> <string name="build_label">版本號 %1$s</string>
<string name="clipboard_cleared">剪貼板已清除</string> <string name="card_verification_value">安全碼</string>
<string name="clipboard_timeout">剪貼板超時</string> <string name="clear_clipboard_notification_summary">剪貼簿過期或通知被關閉時,鎖定資料庫</string>
<string name="clear_clipboard_notification_title">關閉時清除</string>
<string name="clipboard">剪貼簿</string>
<string name="clipboard_cleared">剪貼簿已清除</string>
<string name="clipboard_error">部份設備不容許其他程式使用剪貼簿。</string>
<string name="clipboard_error_clear">無法清除剪貼簿</string>
<string name="clipboard_error_title">剪貼簿錯誤</string>
<string name="clipboard_explanation_summary">使用裝置的剪貼簿複製項目欄位</string>
<string name="clipboard_notifications_summary">顯示剪貼簿通知,以便在查看條目時複製欄位</string>
<string name="clipboard_notifications_title">剪貼簿通知</string>
<string name="clipboard_timeout">剪貼簿超時</string>
<string name="clipboard_timeout_summary">剪貼簿的留存時間(如裝置支持)</string> <string name="clipboard_timeout_summary">剪貼簿的留存時間(如裝置支持)</string>
<string name="select_to_copy">複製%1$s到剪貼板</string> <string name="clipboard_warning">如自動清空剪貼簿失敗,則請手動清空。</string>
<string name="retrieving_db_key">取回資料庫金鑰</string> <string name="command_execution">指令執行中…</string>
<string name="compression">壓縮</string>
<string name="compression_gzip">Gzip</string>
<string name="compression_none"></string>
<string name="configure_biometric">未登記生物辨識或設備憑證。</string>
<string name="contact">聯繫方式</string>
<string name="contains_duplicate_uuid">資料庫包含重複的 UUID。</string>
<string name="contains_duplicate_uuid_procedure">通過驗證此對話方塊KeePassDX 將修復問題(通過為重複項生成新的 UUID並繼續。</string>
<string name="content">內容</string>
<string name="content_description_add_entry">添加項目</string>
<string name="content_description_add_group">添加群組</string>
<string name="content_description_add_item">添加項目</string>
<string name="content_description_add_node">添加節點</string>
<string name="content_description_background">背景</string>
<string name="content_description_credentials_information">憑證資訊</string>
<string name="content_description_entry_icon">項目圖示</string>
<string name="content_description_file_information">檔案資訊</string>
<string name="content_description_keyboard_close_fields">關閉欄位</string>
<string name="content_description_keyfile_checkbox">密鑰檔案核取方塊</string>
<string name="content_description_node_children">子節點</string>
<string name="content_description_open_file">開啟檔案</string>
<string name="content_description_otp_information">一次性密碼資訊</string>
<string name="content_description_password_checkbox">密碼核取方塊</string>
<string name="content_description_password_length">密碼長度</string>
<string name="content_description_remove_field">刪除欄位</string>
<string name="content_description_remove_from_list">移除</string>
<string name="content_description_repeat_toggle_password_visibility">重複切換密碼可見性</string>
<string name="content_description_update_from_list">更新</string>
<string name="contribute">貢獻</string>
<string name="contribution">貢獻</string>
<string name="copy_field">複製%1$s</string>
<string name="create_keepass_file">創建新資料庫</string>
<string name="creating_database">正在創建資料庫…</string>
<string name="credential_before_click_advanced_unlock_button">輸入密碼,然後點擊這個按鈕。</string>
<string name="cryptocurrency">加密貨幣錢包</string>
<string name="custom_fields">自定義欄位</string>
<string name="data">檔案</string>
<string name="database">資料庫</string> <string name="database">資料庫</string>
<string name="database_custom_color_title">自訂資料庫顏色</string>
<string name="database_data_compression_summary">資料壓縮減少了資料庫的大小</string>
<string name="database_data_compression_title">檔案壓縮</string>
<string name="database_data_remove_unlinked_attachments_summary">刪除包含在資料庫,但未連接到任何條目的附件</string>
<string name="database_data_remove_unlinked_attachments_title">刪除未連接的資料</string>
<string name="database_default_username_title">預設使用者名稱</string>
<string name="database_description_title">資料庫描述</string>
<string name="database_history">歷史</string>
<string name="database_name_title">資料庫名稱</string>
<string name="database_opened">資料庫已開啟</string>
<string name="database_version_title">資料庫版本</string>
<string name="date_of_issue">發行日期</string>
<string name="debit_credit_card">簽帳卡 / 信用卡</string>
<string name="decrypting_db">解密資料庫內容中…</string> <string name="decrypting_db">解密資料庫內容中…</string>
<string name="default_checkbox">以此作為預設資料庫</string> <string name="default_checkbox">以此作為預設資料庫</string>
<string name="digits">數字</string> <string name="delete_entered_password_summary">在嘗試連接資料庫後刪除輸入的密碼</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft這是&lt;strong&gt;無推廣&lt;/strong&gt;&lt;strong&gt;開源&lt;/strong&gt;軟體。 <string name="delete_entered_password_title">刪除密碼</string>
\n您可在遵循&lt;strong&gt;GPL 3&lt;/strong&gt;或者更高版本的情況下重新發佈而Kunzisoft對此不帶有任何擔保。</string> <string name="description_app_properties">管理應用設置的 KeePassDX 配置</string>
<string name="select_database_file">選擇一個已存在之資料庫</string> <string name="device_credential">裝置憑證</string>
<string name="device_credential_unlock_enable_summary">使用裝置的憑證來開啟資料庫</string>
<string name="device_credential_unlock_enable_title">裝置憑證解鎖</string>
<string name="device_keyboard_setting_title">裝置鍵盤設定</string>
<string name="digits">數字位數</string>
<string name="disable">禁用</string>
<string name="discard">丟棄</string>
<string name="discard_changes">放棄變更?</string>
<string name="do_not_kill_app">不要終止應用程式…</string>
<string name="download">下載</string>
<string name="download_attachment">下載 %1$s</string>
<string name="download_canceled">已取消!</string>
<string name="download_complete">完成!</string>
<string name="download_finalization">最後步驟…</string>
<string name="download_initialization">初始化中…</string>
<string name="download_progression">進行中:%1$d%%</string>
<string name="edit_entry">編輯項目</string>
<string name="education_add_attachment_summary">將附件上傳到你的條目以保存重要的外部資料。</string>
<string name="education_add_attachment_title">添加附件</string>
<string name="education_advanced_unlock_summary">將你的密碼連接到你掃瞄的生物特徵或設備憑證,以快速解鎖你的資料庫。</string>
<string name="education_advanced_unlock_title">高級資料庫解鎖</string>
<string name="education_create_database_summary">新建第一個密碼管理資料庫。</string>
<string name="education_create_database_title">建立你的資料庫檔案</string>
<string name="education_donation_summary">幫助增加穩定性、安全性並添加更多的功能。</string>
<string name="education_donation_title">參與開發</string>
<string name="education_entry_edit_summary">使用自定義欄位編輯條。自定義欄位可以在不同的條目間引用。</string>
<string name="education_entry_edit_title">編輯此條目</string>
<string name="education_entry_new_field_summary">添加一個新的欄位並添加為其添加一個值,此時可以選擇是否保護該欄位及其值。</string>
<string name="education_entry_new_field_title">添加自定義欄位</string>
<string name="education_field_copy_summary">已複製的欄位可以貼到任何地方。選擇需要的填寫方式。</string>
<string name="education_field_copy_title">複製欄位</string>
<string name="education_generate_password_summary">依據表單中的標準進行簡單的定義,隨機為該條目生成一個強密碼,不在擔心忘記安全密碼。</string>
<string name="education_generate_password_title">建立一個強密碼</string>
<string name="education_lock_summary">可以設置在無操作和螢幕關閉的時候,鎖定資料庫。</string>
<string name="education_lock_title">鎖定資料庫</string>
<string name="education_new_node_summary">這些條目幫助管理數位化身份,還可以使用群組來管理資料庫中的條目。</string>
<string name="education_new_node_title">向資料庫添加項目</string>
<string name="education_read_only_summary">更改此會話的開啟模式。 「寫入保護(唯讀)」可防止對資料庫的意外更改。「可編輯」將允許隨心所欲地添加、刪除或者修改所有元素。</string>
<string name="education_read_only_title">資料庫啟用寫入保護(唯讀)</string>
<string name="education_search_summary">輸入標題、用戶名或其他欄位的內容來搜尋密碼。</string>
<string name="education_search_title">搜尋條目</string>
<string name="education_select_database_summary">開啟已有資料庫並使用其中的密碼。</string>
<string name="education_select_database_title">開啟現有資料庫</string>
<string name="education_setup_OTP_summary">設置一次性密碼管理HOTP / TOTP以生成請求的用於雙因素身份驗證2FA的令牌。</string>
<string name="education_setup_OTP_title">設置一次性密碼</string>
<string name="education_sort_summary">選擇條目和群組的排序方式。</string>
<string name="education_sort_title">條目排序</string>
<string name="education_unlock_summary">輸入密碼和/或一個密鑰檔來解鎖你的資料庫.</string>
<string name="education_unlock_title">解鎖資料庫</string>
<string name="email">電子郵件</string>
<string name="email_address">電子郵件地址</string>
<string name="enable">啟動</string>
<string name="enable_auto_save_database_summary">在每次執行重要操作後保存資料庫(僅在編輯模式下有效)</string>
<string name="enable_auto_save_database_title">自動儲存資料庫</string>
<string name="enable_education_screens_summary">高亮界面元素來學習本應用工作方式</string>
<string name="enable_education_screens_title">教學提示</string>
<string name="enable_keep_screen_on_summary">當正在閱讀條目時,保持螢幕常亮</string>
<string name="enable_keep_screen_on_title">螢幕常亮</string>
<string name="enable_read_only_summary">預設以唯讀方式開啟資料庫</string>
<string name="enable_read_only_title">寫入保護(唯讀模式)</string>
<string name="encrypted_value_stored">已儲存加密密碼</string>
<string name="encryption">加密</string>
<string name="encryption_algorithm">加密演算法</string>
<string name="encryption_explanation">用於所有資料的資料庫加密演算法。</string>
<string name="enter">輸入</string>
<string name="entry_UUID">UUID</string>
<string name="entry_accessed">訪問時間</string> <string name="entry_accessed">訪問時間</string>
<string name="entry_add_attachment">添加附件</string>
<string name="entry_add_field">添加欄位</string>
<string name="entry_attachments">附件</string>
<string name="entry_cancel">取消</string> <string name="entry_cancel">取消</string>
<string name="entry_notes">備註</string>
<string name="entry_confpassword">確認密碼</string> <string name="entry_confpassword">確認密碼</string>
<string name="entry_created">創建</string> <string name="entry_created">創建</string>
<string name="entry_expires">失效時間</string> <string name="entry_expires">失效時間</string>
<string name="entry_keyfile">金鑰檔案</string> <string name="entry_history">歷史</string>
<string name="entry_keyfile">密鑰檔案</string>
<string name="entry_modified">修改時間</string> <string name="entry_modified">修改時間</string>
<string name="entry_not_found">找不到項目資料。</string>
<string name="entry_notes">備註</string>
<string name="entry_otp">OTP</string>
<string name="entry_password">密碼</string> <string name="entry_password">密碼</string>
<string name="save">保存</string> <string name="entry_password_generator">密碼產生器</string>
<string name="entry_setup_otp">設定一次性密碼</string>
<string name="entry_title">名稱</string> <string name="entry_title">名稱</string>
<string name="entry_url">網址</string> <string name="entry_url">網址</string>
<string name="entry_user_name">用戶名</string> <string name="entry_user_name">用戶名</string>
<string name="error_arc4">Arcfour流密碼不被支援。</string> <string name="error_arc4">Arcfour 流密碼不被支援。</string>
<string name="error_can_not_handle_uri">KeePassDX無法處理此URI</string> <string name="error_autofill_enable_service">無法啟用自動填入服務</string>
<string name="error_can_not_handle_uri">KeePassDX 無法處理此 URI。</string>
<string name="error_copy_entry_here">不能複製項目至此。</string>
<string name="error_copy_group_here">不能在此處複製群組。</string>
<string name="error_create_database">無法建立資料庫。</string>
<string name="error_create_database_file">無法使用此密碼和密鑰檔創建資料庫。</string>
<string name="error_database_uri_null">無法取回資料庫 URI。</string>
<string name="error_disallow_no_credentials">至少需要設置一個憑證。</string>
<string name="error_duplicate_file">該檔案已存在。</string>
<string name="error_export_app_properties">導出應用配置時發生錯誤</string>
<string name="error_field_name_already_exists">欄位名已存在。</string>
<string name="error_file_not_create">不能創建檔案</string> <string name="error_file_not_create">不能創建檔案</string>
<string name="error_file_to_big">嘗試上傳的檔案過大。</string>
<string name="error_import_app_properties">導入應用配置時發生錯誤</string>
<string name="error_invalid_OTP">無效 OTP 密鑰。</string>
<string name="error_invalid_db">無法讀取資料庫。</string> <string name="error_invalid_db">無法讀取資料庫。</string>
<string name="error_invalid_path">請確保路徑正確。</string> <string name="error_invalid_path">請確保路徑正確。</string>
<string name="error_label_exists">此標籤已存在。</string>
<string name="error_load_database">無法載入資料庫。</string>
<string name="error_load_database_KDF_memory">無法載入密鑰。嘗試降低 KDF\"記憶體使用率\"。</string>
<string name="error_move_entry_here">不能移動項目至此。</string>
<string name="error_move_group_here">不能把一個組移動到此處。</string>
<string name="error_no_name">請輸入用戶名。</string> <string name="error_no_name">請輸入用戶名。</string>
<string name="error_nokeyfile">選擇鑰檔案。</string> <string name="error_nokeyfile">選擇鑰檔案。</string>
<string name="error_otp_counter">計數器必須介於 %1$d 和 %2$d 之間。</string>
<string name="error_otp_digits">權杖需含有 %1$d 至 %2$d 位數字。</string>
<string name="error_otp_period">時段必須介於 %1$d 和 %2$d 秒之間。</string>
<string name="error_otp_secret_key">密鑰必須採用 Base32 格式。</string>
<string name="error_otp_type">現有的 OTP 類型未被此表單所辨識,其驗證可能不再正確生成令牌。</string>
<string name="error_out_of_memory">記憶體不足,無法解析資料庫。</string> <string name="error_out_of_memory">記憶體不足,無法解析資料庫。</string>
<string name="error_pass_gen_type">必須至少選擇一個密碼生成類型。</string> <string name="error_pass_gen_type">必須至少選擇一個密碼生成類型。</string>
<string name="error_pass_match">密碼不正確。</string> <string name="error_pass_match">密碼不正確。</string>
<string name="error_rounds_too_large">次數太多。最大設置到2147483648</string> <string name="error_rebuild_list">無法正確地重建列表</string>
<string name="error_registration_read_only">唯讀資料庫不允許保存新條目</string>
<string name="error_remove_file">刪除檔案資料時發生了一個錯誤。</string>
<string name="error_rounds_too_large">次數太多,最大設置到 2147483648。</string>
<string name="error_save_database">無法儲存資料庫。</string>
<string name="error_start_database_action">對資料庫執行操作時發生了一個錯誤。</string>
<string name="error_string_key">每個字串必須具有欄位名稱。</string>
<string name="error_string_type">文本和請求的條目不匹配。</string>
<string name="error_upload_file">上傳檔案時發生錯誤。</string>
<string name="error_word_reserved">該字為保留字,無法使用。</string>
<string name="error_wrong_length">請在長度欄位輸入一個正整數。</string> <string name="error_wrong_length">請在長度欄位輸入一個正整數。</string>
<string name="export_app_properties_summary">建立一個檔案以匯出配置</string>
<string name="export_app_properties_title">導出配置</string>
<string name="extended_ASCII">增強的 ASCII</string>
<string name="feedback">回饋</string>
<string name="field_name">欄位名</string>
<string name="field_value">欄位值</string>
<string name="file_browser">檔案管理器</string> <string name="file_browser">檔案管理器</string>
<string name="file_manager_install_description">需要支持 Intent 動作 ACTION_CREATE_DOCUMENT 和 ACTION_OPEN_DOCUMENT 的檔案管理器來建立、開啟和儲存資料庫檔案。</string>
<string name="file_name">檔案名稱</string>
<string name="file_not_found_content">找不到檔案,嘗試從檔案瀏覽器重新開啟它。</string>
<string name="filter">過濾</string>
<string name="general">一般</string>
<string name="generate_password">生成密碼</string> <string name="generate_password">生成密碼</string>
<string name="hide_broken_locations_summary">在最近的資料庫列表中隱藏已損壞的資料庫的連結</string>
<string name="hide_broken_locations_title">隱藏已損壞的資料庫路徑</string>
<string name="hide_expired_entries_summary">過期條目將被隱藏</string>
<string name="hide_expired_entries_title">隱藏過期的條目</string>
<string name="hide_password_summary">預設隱藏密碼</string>
<string name="hide_password_title">密碼遮罩</string>
<string name="hint_conf_pass">確認密碼</string> <string name="hint_conf_pass">確認密碼</string>
<string name="hint_generated_password">生成密碼</string> <string name="hint_generated_password">生成密碼</string>
<string name="hint_group_name">群組名</string> <string name="hint_group_name">群組名</string>
<string name="hint_keyfile">鑰檔案</string> <string name="hint_keyfile">鑰檔案</string>
<string name="hint_length">長度</string> <string name="hint_length">長度</string>
<string name="password">密碼</string>
<string name="hint_pass">密碼</string> <string name="hint_pass">密碼</string>
<string name="holder">持卡人</string>
<string name="homepage">首頁</string>
<string name="html_about_contribution">為程式能夠&lt;strong&gt;保持自主&lt;/strong&gt;&lt;strong&gt;修復漏洞&lt;/strong&gt;&lt;strong&gt;新增功能&lt;/strong&gt;&lt;strong&gt;保持持續開發&lt;/strong&gt;,有賴你的&lt;strong&gt;貢獻&lt;/strong&gt;</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft這是&lt;strong&gt;無推廣&lt;/strong&gt;&lt;strong&gt;開源&lt;/strong&gt;軟體。
\n你可在遵循&lt;strong&gt;GPL 3&lt;/strong&gt;或者更高版本的情況下重新發佈而Kunzisoft對此不帶有任何擔保。</string>
<string name="html_text_ad_free">不同於大多數的密碼管理應用,無論你是使用免費版本還是付費版本的 KeePassDX這都是一款&lt;strong&gt;沒有廣告&lt;/strong&gt;&lt;strong&gt;基於 copylefted 版權協議的自由軟體&lt;/strong&gt;。同時,本軟體的任何版本都不會收集你的任何個人資訊。</string>
<string name="html_text_buy_pro">通過購買高級版本,你將解鎖全部&lt;strong&gt;主題樣式&lt;/strong&gt;,重要的是,你會為&lt;strong&gt;社區項目的進行&lt;/strong&gt;提供幫助</string>
<string name="html_text_dev_feature">此功能目前&lt;strong&gt;仍在開發中&lt;/strong&gt;&lt;strong&gt;捐助&lt;/strong&gt;將使該功能很快變得可用。</string>
<string name="html_text_dev_feature_buy_pro">通過購買&lt;strong&gt;專業&lt;/strong&gt;版,</string>
<string name="html_text_dev_feature_contibute">通過&lt;strong&gt;貢獻&lt;/strong&gt;</string>
<string name="html_text_dev_feature_encourage">你的留言,是對開發人員添加&lt;strong&gt;新功能&lt;/strong&gt;&lt;strong&gt;修復 bugs&lt;/strong&gt; 的鼓勵。</string>
<string name="html_text_dev_feature_thanks">非常感謝你的捐助與貢獻。</string>
<string name="html_text_dev_feature_upgrade">記得安裝最新版本來確保應用程式是最新的。</string>
<string name="html_text_dev_feature_work_hard">我們正在努力的開發並盡快地發佈新功能。</string>
<string name="html_text_donation">為繼續建設此自由項目讓其保持活躍,我們需要你的&lt;strong&gt;捐贈。&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">&lt;strong&gt;主題樣式&lt;/strong&gt;已可用,感謝你的慷慨相助。</string>
<string name="icon_pack_choose_summary">應用程式使用的圖示包</string>
<string name="icon_pack_choose_title">圖示包</string>
<string name="icon_section_custom">自定義</string>
<string name="icon_section_standard">標準</string>
<string name="id_card">身份證</string>
<string name="import_app_properties_summary">選擇一個配置檔案以導入應用</string>
<string name="import_app_properties_title">導入配置</string>
<string name="international_bank_account_number">IBAN</string>
<string name="invalid_algorithm">無效的演算法。</string>
<string name="invalid_credentials">無效的密碼或密鑰檔。</string> <string name="invalid_credentials">無效的密碼或密鑰檔。</string>
<string name="invalid_db_sig">資料庫格式無法識別</string> <string name="invalid_db_same_uuid">與%1$s的 UUID 相同的%2$s已經存在</string>
<string name="invalid_db_sig">資料庫格式無法辨識。</string>
<string name="kdf_explanation">為生成加密演算法的密鑰,主密鑰使用隨機跳轉密鑰推算函數進行轉換。</string>
<string name="key_derivation_function">密鑰推算函數</string>
<string name="keyboard">鍵盤</string>
<string name="keyboard_appearance_category">外觀</string>
<string name="keyboard_auto_go_action_summary">填充條目後直接登入</string>
<string name="keyboard_auto_go_action_title">自動鍵動作</string>
<string name="keyboard_change">切換鍵盤</string>
<string name="keyboard_entry_category">條目</string>
<string name="keyboard_entry_timeout_summary">設定多久後清空鍵盤條目</string>
<string name="keyboard_entry_timeout_title">超時</string>
<string name="keyboard_key_sound_title">按鍵聲音</string>
<string name="keyboard_key_vibrate_title">按鍵震動</string>
<string name="keyboard_keys_category">鑰匙</string>
<string name="keyboard_label">魔法鍵盤KeePassDX)</string>
<string name="keyboard_name">魔法鍵盤</string>
<string name="keyboard_notification_entry_clear_close_summary">關閉通知時也關閉資料庫</string>
<string name="keyboard_notification_entry_clear_close_title">關閉時清除</string>
<string name="keyboard_notification_entry_content_text">%1$s</string>
<string name="keyboard_notification_entry_content_title">%1$s 在魔法鍵盤中可用</string>
<string name="keyboard_notification_entry_content_title_text">條目</string>
<string name="keyboard_notification_entry_summary">在條目可用時顯示通知</string>
<string name="keyboard_notification_entry_title">通知資訊</string>
<string name="keyboard_previous_database_credentials_summary">如果顯示資料庫憑證畫面,則自動返回到前一個鍵盤</string>
<string name="keyboard_previous_database_credentials_title">資料庫憑證畫面</string>
<string name="keyboard_previous_fill_in_summary">執行「自動鍵動作」後,自動返回前一個鍵盤</string>
<string name="keyboard_previous_fill_in_title">自動鍵動作</string>
<string name="keyboard_previous_lock_summary">鎖定資料庫後自動返回前一個鍵盤</string>
<string name="keyboard_previous_lock_title">鎖定資料庫</string>
<string name="keyboard_save_search_info_summary">將 URL 分享到 KeePassDX 後,當選好條目時,將嘗試記住該條目以備日後使用</string>
<string name="keyboard_save_search_info_title">保存分享的訊息</string>
<string name="keyboard_search_share_summary">將 URL 分享到 KeePassDX 時,使用該 URL 域過濾條目</string>
<string name="keyboard_search_share_title">搜尋分享的訊息</string>
<string name="keyboard_selection_entry_summary">在 KeePass DX 中查看條目時,同時把該條目填充到 Magikeyboard</string>
<string name="keyboard_selection_entry_title">條目選擇</string>
<string name="keyboard_setting_label">魔法鍵盤設置</string>
<string name="keyboard_theme_title">鍵盤主題</string>
<string name="keyfile_is_empty">密鑰檔案是空白的。</string>
<string name="keystore_not_accessible">密鑰庫未能初始化。</string>
<string name="length">長度</string> <string name="length">長度</string>
<string name="list_size_title">群列表尺寸</string> <string name="list_entries_show_username_summary">在項目清單中顯示使用者名稱</string>
<string name="list_size_summary">群列表中的文本尺寸</string> <string name="list_entries_show_username_title">顯示用戶名</string>
<string name="loading_database">載入資料庫中…</string> <string name="list_groups_show_number_entries_summary">顯示群組中的條目數</string>
<string name="lowercase">小寫</string> <string name="list_groups_show_number_entries_title">顯示條目數</string>
<string name="hide_password_title">密碼遮罩</string> <string name="list_password_generator_options_summary">設置密碼生成時所需要的字符集</string>
<string name="hide_password_summary">預設隱藏密碼</string> <string name="list_password_generator_options_title">密碼字符集</string>
<string name="about">關於</string>
<string name="menu_change_key_settings">變更主金鑰</string>
<string name="settings">設定</string>
<string name="menu_database_settings">資料庫設定</string>
<string name="menu_delete">刪除</string>
<string name="menu_donate">贊助</string>
<string name="menu_edit">編輯</string>
<string name="menu_hide_password">隱藏密碼</string>
<string name="menu_lock">鎖定資料庫</string>
<string name="menu_open">打開</string>
<string name="menu_search">搜索</string>
<string name="menu_url">到網址</string>
<string name="minus"></string>
<string name="never">從不</string>
<string name="no_results">沒有搜索結果</string>
<string name="no_url_handler">沒有這個鏈結的處理程式。</string>
<string name="progress_create">創建新資料庫中…</string>
<string name="progress_title">工作中…</string>
<string name="content_description_remove_from_list">移除</string>
<string name="root">Root</string>
<string name="rounds">加密次數</string>
<string name="rounds_explanation">更高級的加密次數對暴力攻擊能提供額外保護,但也會增加讀取和保存的時間。</string>
<string name="saving_database">正在保存資料庫…</string>
<string name="space">空格</string>
<string name="search_label">搜尋</string>
<string name="sort_db">資料庫的排序順序</string>
<string name="special">特別</string>
<string name="search">條目名稱/說明</string>
<string name="underline">強調</string>
<string name="unsupported_db_version">不支援的資料庫版本。</string>
<string name="uppercase">大寫</string>
<string name="education_unlock_summary">輸入密碼和/或一個密鑰檔來解鎖你的資料庫.</string>
<string-array name="list_size_options"> <string-array name="list_size_options">
<item></item> <item></item>
<item></item> <item></item>
<item></item> <item></item>
</string-array> </string-array>
<string name="extended_ASCII">增強的ASCII</string> <string name="list_size_summary">群列表中的文本尺寸</string>
<string name="allow">允許</string> <string name="list_size_title">群列表尺寸</string>
<string name="clipboard_error_title">剪貼簿錯誤</string> <string name="loading_database">載入資料庫中…</string>
<string name="clipboard_error">部份設備不容許其他程式使用剪貼簿。</string> <string name="lock">鎖上</string>
<string name="clipboard_error_clear">無法清除剪貼簿</string> <string name="lock_database_back_root_summary">當使用返回鍵退出應用時,鎖定資料庫</string>
<string name="error_autofill_enable_service">無法啟用自動填入服務。</string> <string name="lock_database_back_root_title">按返回鍵時鎖定資料庫</string>
<string name="invalid_algorithm">無效的演算法。</string> <string name="lock_database_screen_off_summary">螢幕鎖定時鎖定資料庫</string>
<string name="keyfile_is_empty">金鑰檔案是空白的。</string> <string name="lock_database_screen_off_title">鎖定螢幕</string>
<string name="menu_form_filling_settings">表格填入</string> <string name="lock_database_show_button_summary">在介面中顯示鎖定資料庫按紐</string>
<string name="menu_copy">複製</string> <string name="lock_database_show_button_title">顯示鎖定資料庫按鈕</string>
<string name="menu_move">移動</string> <string name="lowercase">小寫</string>
<string name="menu_paste">貼上</string> <string name="magic_keyboard_explanation_summary">啟用用作輸入密碼和其他欄位的自訂鍵盤</string>
<string name="magic_keyboard_title">魔法鍵盤</string>
<string name="master_key">主密鑰</string>
<string name="max_history_items_summary">限制每個條目的歷史紀錄條數</string>
<string name="max_history_items_title">最大數量</string>
<string name="max_history_size_summary">限制每個條目的歷史紀錄大小</string>
<string name="max_history_size_title">最大大小</string>
<string name="membership">會員身份</string>
<string name="memory_usage">記憶體使用情況</string>
<string name="memory_usage_explanation">密鑰推算函數使用的記憶體位元組量。</string>
<string name="menu_advanced_unlock_settings">高級解鎖</string>
<string name="menu_app_settings">應用程式設定</string>
<string name="menu_appearance_settings">外觀</string>
<string name="menu_cancel">取消</string> <string name="menu_cancel">取消</string>
<string name="menu_showpass">顯示密碼</string> <string name="menu_change_key_settings">變更主密鑰</string>
<string name="menu_copy">複製</string>
<string name="menu_database_settings">資料庫設定</string>
<string name="menu_delete">刪除</string>
<string name="menu_delete_entry_history">刪除編輯歷史</string>
<string name="menu_donate">贊助</string>
<string name="menu_edit">編輯</string>
<string name="menu_empty_recycle_bin">清理回收桶</string>
<string name="menu_external_icon">外部圖示</string>
<string name="menu_file_selection_read_only">唯讀</string> <string name="menu_file_selection_read_only">唯讀</string>
<string name="menu_form_filling_settings">表格填入</string>
<string name="menu_hide_password">隱藏密碼</string>
<string name="menu_keystore_remove_key">刪除高級解鎖密鑰</string>
<string name="menu_lock">鎖定資料庫</string>
<string name="menu_master_key_settings">主密鑰設定</string>
<string name="menu_move">移動</string>
<string name="menu_open">開啟</string>
<string name="menu_open_file_read_and_write">讀寫</string> <string name="menu_open_file_read_and_write">讀寫</string>
<string name="menu_paste">貼上</string>
<string name="menu_reload_database">重載資料庫</string>
<string name="menu_restore_entry_history">恢復舊紀錄</string>
<string name="menu_save_database">儲存資料庫</string>
<string name="menu_search">搜尋</string>
<string name="menu_security_settings">安全設定</string>
<string name="menu_showpass">顯示密碼</string>
<string name="menu_url">開啟網址</string>
<string name="minus"></string>
<string name="monospace_font_fields_enable_summary">更改欄位字體,可以使字更清楚</string>
<string name="monospace_font_fields_enable_title">欄位字型</string>
<string name="name">姓名</string>
<string name="never">從不</string>
<string name="no_credentials_stored">當前資料庫無密碼。</string>
<string name="no_results">沒有搜尋結果</string>
<string name="no_url_handler">沒有這個連結的處理程式。</string>
<string name="notification">通知</string>
<string name="number">卡號</string>
<string name="omit_backup_search_summary">從搜尋結果中省略\"備份\"和\"回收桶\"組</string>
<string name="omit_backup_search_title">不要搜尋備份的項目</string> <string name="omit_backup_search_title">不要搜尋備份的項目</string>
<string name="open_advanced_unlock_prompt_store_credential">點擊以開啟高級解鎖提示來存儲憑證</string>
<string name="open_advanced_unlock_prompt_unlock_database">點擊以使用高級解鎖</string>
<string name="other">其他</string>
<string name="otp_algorithm">演算法</string>
<string name="otp_counter">計數器</string>
<string name="otp_digits">數位</string>
<string name="otp_period">期間(秒)</string>
<string name="otp_secret">密碼</string>
<string name="otp_type">OTP 類型</string>
<string name="parallelism">平行</string>
<string name="parallelism_explanation">密鑰推算函數的平行處理程度(即執行緒數)。</string>
<string name="password">密碼</string>
<string name="password_size_summary">設置生成密碼的預設長度</string>
<string name="password_size_title">生成密碼的長度</string>
<string name="path">路徑</string>
<string name="personal_identification_number">PIN 碼</string>
<string name="place_of_issue">發行地</string>
<string name="private_key">私鑰</string>
<string name="progress_create">創建新資料庫中…</string>
<string name="progress_title">工作中…</string>
<string name="properties">屬性</string>
<string name="protection">保護</string> <string name="protection">保護</string>
<string name="public_key">公鑰</string>
<string name="read_only">唯讀</string> <string name="read_only">唯讀</string>
<string name="read_only_warning">KeePassDX 無法存取資料庫所在位置,將以唯讀模式開啟資料庫。</string> <string name="read_only_warning">KeePassDX 無法存取資料庫所在位置,將以唯讀模式開啟資料庫。</string>
<string name="encryption">加密</string> <string name="recycle_bin">回收桶</string>
<string name="key_derivation_function">金鑰推算函數</string> <string name="recycle_bin_group_title">回收桶(組)</string>
<string name="edit_entry">編輯項目</string> <string name="recycle_bin_summary">刪除群組和條目前先移至回收桶</string>
<string name="content_description_open_file">開啟檔案</string> <string name="recycle_bin_title">回收桶使用情況</string>
<string name="entry_password_generator">密碼產生器</string> <string name="registration_mode">註冊模式</string>
<string name="entry_UUID">UUID</string> <string name="remember_database_locations_summary">記住資料庫位置</string>
<string name="content_description_background">背景</string> <string name="remember_database_locations_title">資料庫儲存位置</string>
<string name="content_description_update_from_list">更新</string> <string name="remember_keyfile_locations_summary">追蹤密鑰檔案位置</string>
<string name="content_description_keyboard_close_fields">關閉欄位</string> <string name="remember_keyfile_locations_title">記住密鑰檔案位置</string>
<string name="reset_education_screens_summary">再次顯示全部新手引導信息</string>
<string name="reset_education_screens_text">教學提示重設</string>
<string name="reset_education_screens_title">重設教學提示</string>
<string name="retrieving_db_key">取回資料庫密鑰…</string>
<string name="root">Root</string>
<string name="rounds">加密次數</string>
<string name="rounds_explanation">更高級的加密次數對暴力攻擊能提供額外保護,但也會增加讀取和保存的時間。</string>
<string name="save">保存</string>
<string name="save_mode">保存模式</string>
<string name="saving_database">正在保存資料庫…</string>
<string name="search">條目名稱/說明</string>
<string name="search_label">搜尋</string>
<string name="search_mode">搜尋模式</string>
<string name="search_results">搜尋結果</string>
<string name="secure_note">安全註記</string>
<string name="security">安全</string> <string name="security">安全</string>
<string name="entry_history">歷史</string> <string name="seed">種子</string>
<string name="kdf_explanation">為生成加密演算法的金鑰,主金鑰使用隨機跳轉金鑰推算函數進行轉換。</string> <string name="select_database_file">選擇一個已存在之資料庫</string>
<string name="assign_master_key">分配主金鑰</string> <string name="select_entry">選擇條目</string>
<string name="allow_no_password_title">允許沒有主金鑰</string> <string name="select_to_copy">複製%1$s到剪貼簿</string>
<string name="content_description_node_children">子節點</string> <string name="selection_mode">選擇模式</string>
<string name="content_description_add_node">添加節點</string> <string name="set_autofill_service_title">設置為預設的填充服務</string>
<string name="content_description_add_entry">添加項目</string> <string name="settings">設定</string>
<string name="content_description_add_group">添加群组</string> <string name="settings_database_force_changing_master_key_next_time_summary">下次強制更改主密鑰(一次)</string>
<string name="content_description_file_information">檔案資訊</string>
<string name="content_description_password_checkbox">密碼核取方塊</string>
<string name="content_description_keyfile_checkbox">金鑰檔案核取方塊</string>
<string name="content_description_repeat_toggle_password_visibility">重複切換密碼可見性</string>
<string name="content_description_entry_icon">項目圖示</string>
<string name="content_description_password_length">密碼長度</string>
<string name="entry_add_field">添加欄位</string>
<string name="content_description_remove_field">刪除欄位</string>
<string name="master_key">主金鑰</string>
<string name="menu_master_key_settings">主金鑰設定</string>
<string name="settings_database_recommend_changing_master_key_title">建議更換</string>
<string name="settings_database_recommend_changing_master_key_summary">建議更改主金鑰(天)</string>
<string name="settings_database_force_changing_master_key_title">強制更換</string>
<string name="settings_database_force_changing_master_key_summary">強制更改主金鑰(天)</string>
<string name="settings_database_force_changing_master_key_next_time_title">下次強制更換</string> <string name="settings_database_force_changing_master_key_next_time_title">下次強制更換</string>
<string name="settings_database_force_changing_master_key_next_time_summary">下次強制更改主鑰(一次</string> <string name="settings_database_force_changing_master_key_summary">強制更改主鑰(</string>
<string name="entry_not_found">找不到項目數據。</string> <string name="settings_database_force_changing_master_key_title">強制更換</string>
<string name="error_string_key">每個字串必須具有欄位名稱。</string> <string name="settings_database_recommend_changing_master_key_summary">建議更改主密鑰(天)</string>
<string name="field_name">欄位名</string> <string name="settings_database_recommend_changing_master_key_title">建議更換</string>
<string name="field_value">欄位值</string> <string name="show_otp_token_summary">在條目列表中顯示 OTP 領牌</string>
<string name="file_not_found_content">找不到檔案。嘗試從檔案瀏覽器重新打開它。</string> <string name="show_otp_token_title">顯示 OTP 令牌</string>
<string name="omit_backup_search_summary">從搜尋結果中省略\"備份\"和\"回收站\"組</string> <string name="show_recent_files_summary">顯示最近使用的儲存庫位置</string>
<string name="encryption_explanation">用於所有資料的資料庫加密演算法。</string> <string name="show_recent_files_title">最近開啟的檔案</string>
<string name="memory_usage">記憶體使用情況</string> <string name="show_uuid_summary">顯示與一個條目相連接的 UUID</string>
<string name="memory_usage_explanation">金鑰推算函數使用的記憶體位元組量。</string> <string name="show_uuid_title">顯示 UUID</string>
<string name="parallelism">平行</string> <string name="sort_ascending">最低的優先 ↓</string>
<string name="parallelism_explanation">金鑰推算函數的平行處理程度(即執行緒數)。</string> <string name="sort_creation_time">建立時間</string>
<string name="sort_menu"></string> <string name="sort_db">資料庫的排序順</string>
<string name="sort_ascending">最低的優先↓</string>
<string name="sort_groups_before">群組在前面</string> <string name="sort_groups_before">群組在前面</string>
<string name="sort_last_access_time">訪問時間</string>
<string name="sort_last_modify_time">修改時間</string>
<string name="sort_menu">排序</string>
<string name="sort_recycle_bin_bottom">回收箱在末尾</string> <string name="sort_recycle_bin_bottom">回收箱在末尾</string>
<string name="sort_title">標題</string> <string name="sort_title">標題</string>
<string name="sort_username">用戶名</string> <string name="sort_username">用戶名</string>
<string name="sort_creation_time">建立時間</string> <string name="space">空格</string>
<string name="sort_last_modify_time">修改時間</string> <string name="special">特別</string>
<string name="sort_last_access_time">訪問時間</string> <string name="ssid">SSID</string>
<string name="search_results">搜尋結果</string> <string name="standard">標準</string>
<string name="warning">警告</string> <string name="style_brightness_summary">選擇淺色或深色主題</string>
<string name="create_keepass_file">創建新資料庫</string> <string name="style_brightness_title">主題亮度</string>
<string name="error_load_database">無法載入資料庫。</string> <string name="style_choose_summary">應用程式使用的主題</string>
<string name="error_load_database_KDF_memory">無法載入金鑰。嘗試降低 KDF\"記憶體使用率\"。</string> <string name="style_choose_title">應用主題</string>
<string name="list_entries_show_username_title">顯示用戶名</string>
<string name="list_entries_show_username_summary">在項目清單中顯示使用者名稱</string>
<string name="selection_mode">選擇模式</string>
<string name="do_not_kill_app">不要殺死應用程式…</string>
<string name="error_move_entry_here">不能移動項目至此。</string>
<string name="error_copy_entry_here">不能複製項目至此。</string>
<string name="list_groups_show_number_entries_title">顯示條目數</string>
<string name="list_groups_show_number_entries_summary">顯示群組中的條目數</string>
<string name="error_create_database_file">無法使用此密碼和金鑰檔創建資料庫。</string>
<string name="menu_advanced_unlock_settings">高級解鎖</string>
<string name="entry_setup_otp">設定一次性密碼</string>
<string name="otp_type">OTP 類型</string>
<string name="otp_secret">密碼</string>
<string name="otp_period">期間(秒)</string>
<string name="otp_counter">計數器</string>
<string name="otp_digits">數位</string>
<string name="otp_algorithm">算灋</string>
<string name="entry_otp">OTP</string>
<string name="error_invalid_OTP">無效 OTP 金鑰。</string>
<string name="error_disallow_no_credentials">至少需要設置一個憑據。</string>
<string name="error_copy_group_here">不能在此處複製群組。</string>
<string name="error_otp_secret_key">金鑰必須採用 Base32 格式。</string>
<string name="error_otp_counter">計數器必須介於%1$d和%2$d之間。</string>
<string name="error_otp_period">時段必須介於%1$d和%2$d秒之間。</string>
<string name="creating_database">正在創建資料庫…</string>
<string name="menu_security_settings">安全設定</string>
<string name="contains_duplicate_uuid">資料庫包含重複的 UUID。</string>
<string name="contains_duplicate_uuid_procedure">通過驗證此對話方塊KeePassDX 將修復問題(通過為重複項生成新的 UUID並繼續。</string>
<string name="set_autofill_service_title">設置為默認的填充服務</string>
<string name="password_size_title">生成密碼的長度</string>
<string name="password_size_summary">設置生成密碼的默認長度</string>
<string name="list_password_generator_options_title">密碼字符集</string>
<string name="list_password_generator_options_summary">設置密碼生成時所需要的字符集</string>
<string name="clipboard">剪貼板</string>
<string name="autofill_explanation_summary">啟用自動填充功能以快速填寫其他應用程序中的用戶名和密碼</string>
<string name="database_opened">數據庫已打開</string>
<string name="clipboard_explanation_summary">使用裝置的剪貼簿複製項目欄位</string>
<string name="contact">聯繫方式</string>
<string name="contribution">貢獻</string>
<string name="command_execution">指令執行中……</string>
<string name="show_recent_files_summary">顯示最近使用的儲存庫位置</string>
<string name="show_recent_files_title">最近開啟的文件</string>
<string name="remember_keyfile_locations_summary">追蹤金鑰檔案位置</string>
<string name="remember_keyfile_locations_title">記住金鑰檔案位置</string>
<string name="remember_database_locations_summary">記住數據庫位置</string>
<string name="remember_database_locations_title">數據庫儲存位置</string>
<string name="subdomain_search_summary">搜尋帶有子網域限制的網域</string> <string name="subdomain_search_summary">搜尋帶有子網域限制的網域</string>
<string name="subdomain_search_title">子網域搜尋</string> <string name="subdomain_search_title">子網域搜尋</string>
<string name="auto_focus_search_summary">打開數據庫時就開始搜尋</string> <string name="success_export_app_properties">已導出應用配置</string>
<string name="auto_focus_search_title">快速搜尋</string> <string name="success_import_app_properties">已導入應用配置</string>
<string name="menu_delete_entry_history">刪除編輯歷史</string> <string name="temp_advanced_unlock_enable_summary">不要存儲任何加密內容來使用高級解鎖</string>
<string name="menu_restore_entry_history">恢復舊紀錄</string> <string name="temp_advanced_unlock_enable_title">臨時性高級解鎖</string>
<string name="menu_empty_recycle_bin">清理回收桶</string> <string name="temp_advanced_unlock_timeout_summary">刪除內容之前高級解鎖使用的持續時間</string>
<string name="menu_save_database">儲存數據庫</string> <string name="temp_advanced_unlock_timeout_title">高級解鎖過期</string>
<string name="copy_field">複製%1$s</string> <string name="template">樣板</string>
<string name="invalid_db_same_uuid">與%1$s的UUID相同的%2$s已經存在。</string> <string name="template_group_name">樣板</string>
<string name="error_save_database">無法儲存數據庫。</string> <string name="templates">樣板</string>
<string name="error_create_database">無法建立數據庫。</string> <string name="templates_group_enable_summary">使用動態樣板填寫條目的欄位</string>
<string name="error_label_exists">此標籤已存在。</string> <string name="templates_group_enable_title">樣板使用</string>
<string name="entry_attachments">附件</string> <string name="templates_group_uuid_title">樣板組</string>
<string name="entry_add_attachment">添加附件</string>
<string name="discard">丟棄</string>
<string name="discard_changes">放棄變更?</string>
<string name="validate">驗證</string>
<string name="content_description_add_item">添加項目</string>
<string name="encrypted_value_stored">已儲存加密密碼</string>
<string name="build_label">版本號 %1$s</string>
<string name="version_label">版本 %1$s</string>
<string name="warning_permanently_delete_nodes">確定永久刪除已選項目?</string>
<string name="warning_no_encryption_key">確定不使用加密金鑰?</string>
<string name="warning_empty_password">確定不使用密碼?</string>
<string name="error_otp_digits">權杖需含有%1$d至%2$d位數字。</string>
<string name="html_about_contribution">為程式能夠&lt;strong&gt;保持自主&lt;/strong&gt;&lt;strong&gt;修復漏洞&lt;/strong&gt;&lt;strong&gt;新增功能&lt;/strong&gt;&lt;strong&gt;保持持續開發&lt;/strong&gt;,有賴您的&lt;strong&gt;貢獻&lt;/strong&gt;</string>
<string name="device_keyboard_setting_title">裝置鍵盤設定</string>
<string name="magic_keyboard_explanation_summary">啟用用作輸入密碼和其他欄位的自訂鍵盤</string>
<string name="keyboard">鍵盤</string>
<string name="biometric_delete_all_key_summary">刪除全部生物識別加密金鑰</string>
<string name="biometric_delete_all_key_title">刪除加密金鑰</string>
<string name="keystore_not_accessible">金鑰庫未能初始化。</string>
<string name="education_select_database_title">開啟現有資料庫</string>
<string name="education_create_database_title">建立你的資料庫檔案</string>
<string name="reset_education_screens_text">教學提示重設</string>
<string name="enable_education_screens_title">教學提示</string>
<string name="reset_education_screens_title">重設教學提示</string>
<string name="enable_auto_save_database_title">自動儲存資料庫</string>
<string name="enable_keep_screen_on_title">螢幕常亮</string>
<string name="enable_keep_screen_on_summary">當正在閱讀條目時,保持螢幕常亮</string>
<string name="delete_entered_password_title">刪除密碼</string>
<string name="autofill_block">阻止自動填入</string>
<string name="autofill_web_domain_blocklist_title">網域名稱黑名單</string>
<string name="autofill_application_id_blocklist_title">應用程式黑名單</string>
<string name="autofill_auto_search_title">自動搜尋</string>
<string name="keyboard_change">切換鍵盤</string>
<string name="keyboard_keys_category">鑰匙</string>
<string name="keyboard_theme_title">鍵盤主題</string>
<string name="keyboard_appearance_category">外觀</string>
<string name="keyboard_notification_entry_content_text">%1$s</string>
<string name="keyboard_notification_entry_clear_close_title">關閉時清除</string>
<string name="recycle_bin">垃圾桶</string>
<string name="compression_gzip">Gzip</string>
<string name="compression_none"></string>
<string name="compression">壓縮</string>
<string name="other">其他</string>
<string name="application_appearance">應用程式</string>
<string name="text_appearance">文字</string> <string name="text_appearance">文字</string>
<string name="database_version_title">資料庫版本</string> <string name="token">令牌</string>
<string name="database_custom_color_title">自訂資料庫顏色</string> <string name="type">類型</string>
<string name="database_name_title">資料庫名稱</string> <string name="unavailable_feature_hardware">找不到所需的硬體。</string>
<string name="database_default_username_title">預設使用者名稱</string>
<string name="database_description_title">資料庫描述</string>
<string name="clear_clipboard_notification_title">關閉時清除</string>
<string name="enable">啟動</string>
<string name="database_data_compression_title">檔案壓縮</string>
<string name="data">檔案</string>
<string name="path">路徑</string>
<string name="file_name">檔案名稱</string>
<string name="unavailable_feature_version">此裝置使用 Android %1$s, 但需要 %2$s 或更高。</string>
<string name="unavailable_feature_text">無法啟用這個功能。</string> <string name="unavailable_feature_text">無法啟用這個功能。</string>
<string name="biometric_unlock_enable_title">生物特徵解鎖</string> <string name="unavailable_feature_version">此裝置使用 Android %1$s, 但需要 %2$s 或更高。</string>
<string name="advanced_unlock">進階解鎖</string> <string name="underline">強調</string>
<string name="lock">鎖上</string> <string name="unit_byte">B</string>
<string name="autofill_preference_title">自動填入設定</string> <string name="unit_gibibyte">GB</string>
<string name="autofill_sign_in_prompt">用KeePassDX 登入</string> <string name="unit_kibibyte">KB</string>
<string name="autofill">自動填入</string> <string name="unit_mebibyte">MB</string>
<string name="general">一般</string> <string name="unsupported_db_version">不支援的資料庫版本。</string>
<string name="menu_appearance_settings">外觀</string> <string name="upload_attachment">上傳 %1$s</string>
<string name="database_history">歷史</string> <string name="uppercase">大寫</string>
<string name="warning_sure_remove_data">仍要移除此資料?</string> <string name="validate">驗證</string>
<string name="warning_sure_add_file">仍要新增檔案?</string> <string name="version">版本</string>
<string name="version_label">版本 %1$s</string>
<string name="warning">警告</string>
<string name="warning_database_info_changed">資料庫檔案中包含的信息已在應用程式之外被修改。</string>
<string name="warning_database_info_changed_options">通過保存資料庫或用最新的更改重新加載資料庫來覆蓋外部修改。</string>
<string name="warning_database_link_revoked">訪問檔案管理器撤消訪問權限的檔案</string>
<string name="warning_database_read_only">授予軟體檔案讀寫訪問權限以保存資料庫更改</string>
<string name="warning_database_revoked">檔案管理器撤銷了對此檔案的訪問,關閉資料庫並從其位置重新開啟它。</string>
<string name="warning_empty_keyfile">不推薦添加空的密鑰檔案。</string>
<string name="warning_empty_keyfile_explanation">密鑰檔案的內容應該永不更改,在最好的情況下,應該包含隨機生成的資料。</string>
<string name="warning_empty_password">確定不使用密碼?</string>
<string name="warning_empty_recycle_bin">從回收桶永久刪除所有節點?</string>
<string name="warning_file_too_big">KeePass 資料庫應該只包含小的實用程式檔案(例如 PGP 密鑰檔案)。</string>
<string name="warning_no_encryption_key">確定不使用加密密鑰?</string>
<string name="warning_password_encoding">避免在資料庫中保存編碼格式外字符的密碼(未辨識的字符將轉換為同一字符)。</string>
<string name="warning_permanently_delete_nodes">確定永久刪除已選項目?</string>
<string name="warning_remove_unlinked_attachment">刪除未連結的資料可能會減少資料庫的大小,但也可能會刪除用於 KeePass 插件的資料。</string>
<string name="warning_replace_file">上傳此檔案會取代現有的檔案。</string> <string name="warning_replace_file">上傳此檔案會取代現有的檔案。</string>
<string name="filter">過濾</string> <string name="warning_sure_add_file">仍要新增檔案?</string>
<string name="warning_sure_remove_data">仍要移除此資料?</string>
<string name="wireless">Wi-Fi</string>
</resources> </resources>

View File

@@ -182,6 +182,7 @@
<string name="hint_conf_pass">Confirm password</string> <string name="hint_conf_pass">Confirm password</string>
<string name="hint_generated_password">Generated password</string> <string name="hint_generated_password">Generated password</string>
<string name="hint_group_name">Group name</string> <string name="hint_group_name">Group name</string>
<string name="hint_icon_name">Icon name</string>
<string name="hint_keyfile">Keyfile</string> <string name="hint_keyfile">Keyfile</string>
<string name="hint_length">Length</string> <string name="hint_length">Length</string>
<string name="hint_pass">Password</string> <string name="hint_pass">Password</string>

View File

@@ -6,7 +6,7 @@ buildscript {
google() google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.1.3' classpath 'com.android.tools.build:gradle:7.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
} }

View File

@@ -0,0 +1 @@
* Samsung DeX mode #1114 #245 (Thx @chenxiaolong)

View File

@@ -0,0 +1,2 @@
* Change default Argon2 parameters #1098
* Add & edit custom icon name #976

View File

@@ -1,4 +1,4 @@
<b>Multi-format KeePass password manager</b>, the app allows saving and using passwords, keys and digital identities in a secure way, by integrating the Android design standards. KeePassDX is <b>open source</b>, <b>ad-free</b>. <b>Multi-format KeePass password manager</b>, the app allows saving and using passwords, keys and digital identities in a secure way, by integrating the Android design standards and <b>requires no internet connection</b>.
<b>Features</b> <b>Features</b>
- Create database files / entries and groups. - Create database files / entries and groups.
@@ -10,12 +10,11 @@
- Material design with themes. - Material design with themes.
- Auto-Fill and integration. - Auto-Fill and integration.
- Field filling keyboard. - Field filling keyboard.
- Dynamic templates.
- History of each entry. - History of each entry.
- Precise management of settings. - Precise management of settings.
- Code written in native languages (Kotlin / Java / JNI / C). - Code written in native languages (Kotlin / Java / JNI / C).
KeePassDX is <b>open source</b> and <b>ad-free</b>.
You can donate or buy the pro version for better service and a quick development of features you want: <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a> You can donate or buy the pro version for better service and a quick development of features you want: <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a>
The project is constantly evolving. Do not hesitate to check the development status of the next updates: <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a> The project is constantly evolving. Do not hesitate to check the development status of the next updates: <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a>

View File

@@ -0,0 +1 @@
* Mode Samsung DeX #1114 #245 (Thx @chenxiaolong)

View File

@@ -0,0 +1,2 @@
* Changement des paramètres Argon2 par défaut #1098
* Ajout & édition du nom d'icone customisé #976

View File

@@ -1,4 +1,4 @@
<b>Gestionnaire de mots de passe KeePass multiformats</b>, l'application permet d'enregistrer et d'utiliser des mots de passe, des clés et des identités numériques de manière sécurisée, en intégrant les normes de conception Android. KeePassDX est <b>Open source</b> et <b>sans publicité</b>. <b>Gestionnaire de mots de passe KeePass multiformats</b>, l'application permet d'enregistrer et d'utiliser des mots de passe, des clés et des identités numériques de manière sécurisée, en intégrant les normes de conception Android et <b>ne requiert aucune connexion internet</b>.
<b>Fonctionnalités</b> <b>Fonctionnalités</b>
- Création de bases de données / entrées et groupes. - Création de bases de données / entrées et groupes.
@@ -10,12 +10,11 @@
- Material design avec thèmes. - Material design avec thèmes.
- Remplissage automatique de champs. - Remplissage automatique de champs.
- Clavier de remplissage de champs. - Clavier de remplissage de champs.
- Gabarits dynamiques.
- Historique de chaque entrée. - Historique de chaque entrée.
- Gestion précise des paramètres. - Gestion précise des paramètres.
- Code écrit en langages natifs (Kotlin / Java / JNI / C). - Code écrit en langages natifs (Kotlin / Java / JNI / C).
KeePassDX est <b>open source</b> et <b>sans publicité</b>.
Vous pouvez faire un don ou acheter la version pro pour un meilleur service et un développement rapide des fonctionnalités que vous souhaitez : <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a> Vous pouvez faire un don ou acheter la version pro pour un meilleur service et un développement rapide des fonctionnalités que vous souhaitez : <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a>
Le projet est en constante évolution. N'hésitez pas à vérifier l'état de développement des prochaines mises à jour : <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a> Le projet est en constante évolution. N'hésitez pas à vérifier l'état de développement des prochaines mises à jour : <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a>

View File

@@ -1,4 +1,4 @@
<b>複数の形式に対応する KeePass パスワード マネージャー</b>。Android の設計基準が組み込まれており、パスワード、鍵、デジタル ID を安全な方法で保存して使用できます。 KeePassDX は <b>オープンソース</b>かつ<b>広告なし</b>です。<b>複数の形式に対応する KeePass パスワード マネージャー</b>。Android の設計基準が組み込まれており、パスワード、鍵、デジタル ID を安全な方法で保存して使用できます。<b>インターネットに接続する必要はありません。</b>
<b>機能</b> <b>機能</b>
- データベースファイル / エントリー・グループの作成 - データベースファイル / エントリー・グループの作成
@@ -10,12 +10,11 @@
- マテリアルデザインに準拠した複数のテーマ - マテリアルデザインに準拠した複数のテーマ
- 自動入力機能の統合 - 自動入力機能の統合
- フィールド入力用のキーボード - フィールド入力用のキーボード
- ダイナミックテンプレート
- エントリーごとの履歴 - エントリーごとの履歴
- 設定の細かな管理 - 設定の細かな管理
- コードはネイティブ言語Kotlin / Java / JNI / Cで書かれています - コードはネイティブ言語Kotlin / Java / JNI / Cで書かれています
KeePassDX は <b>オープンソース</b>かつ<b>広告なし</b>です。
寄付または pro バージョンの購入はサービスの改善と必要な機能の迅速な開発につながります: <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a> 寄付または pro バージョンの購入はサービスの改善と必要な機能の迅速な開発につながります: <a href="https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</a>
プロジェクトは常に発展しています。次のアップデートの開発状況を迷わずチェック: <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a> プロジェクトは常に発展しています。次のアップデートの開発状況を迷わずチェック: <a href="https://github.com/Kunzisoft/KeePassDX/projects">https://github.com/Kunzisoft/KeePassDX/projects</a>

View File

@@ -1,4 +1,4 @@
<b>Multi-format KeePass password manager</b>, the app allows saving and using passwords, keys and digital identities in a secure way, by integrating the Android design standards. <b>Multi-format KeePass password manager</b>, the app allows saving and using passwords, keys and digital identities in a secure way, by integrating the Android design standards and <b>requires no internet connection</b>.
This pro version encourages <b>development</b>, <b>better service</b>, and you contribute to the creation of <b>open source softwares without advertising</b>. This pro version encourages <b>development</b>, <b>better service</b>, and you contribute to the creation of <b>open source softwares without advertising</b>.
<i>Currently, the application has the same features as the free version with the themes unlocked but is intended to integrate elements related to non-free sites and services commonly used.</i> <i>Currently, the application has the same features as the free version with the themes unlocked but is intended to integrate elements related to non-free sites and services commonly used.</i>
@@ -13,6 +13,7 @@ This pro version encourages <b>development</b>, <b>better service</b>, and you c
- Material design with themes. - Material design with themes.
- Auto-Fill and integration. - Auto-Fill and integration.
- Field filling keyboard. - Field filling keyboard.
- Dynamic templates.
- History of each entry. - History of each entry.
- Precise management of settings. - Precise management of settings.
- Code written in native languages (Kotlin / Java / JNI / C). - Code written in native languages (Kotlin / Java / JNI / C).

View File

@@ -1,4 +1,4 @@
<b>Gestionnaire de mots de passe KeePass multiformats</b>, l'application permet d'enregistrer et d'utiliser des mots de passe, des clés et des identités numériques de manière sécurisée, en intégrant les normes de conception Android. <b>Gestionnaire de mots de passe KeePass multiformats</b>, l'application permet d'enregistrer et d'utiliser des mots de passe, des clés et des identités numériques de manière sécurisée, en intégrant les normes de conception Android et <b>ne requiert aucune connexion internet</b>.
Cette version pro encourage <b>les développements</b>, <b>un meilleur service</b> et vous contribuez à la création de <b>logiciels open source sans publicité</b>. Cette version pro encourage <b>les développements</b>, <b>un meilleur service</b> et vous contribuez à la création de <b>logiciels open source sans publicité</b>.
<i>Actuellement, l'application possède les mêmes fonctionnalités que la version gratuite avec les thèmes débloqués mais est destinée à intégrer des éléments liés à des sites et services non gratuits couramment utilisés.</i> <i>Actuellement, l'application possède les mêmes fonctionnalités que la version gratuite avec les thèmes débloqués mais est destinée à intégrer des éléments liés à des sites et services non gratuits couramment utilisés.</i>
@@ -13,6 +13,7 @@ Cette version pro encourage <b>les développements</b>, <b>un meilleur service</
- Material design avec thèmes. - Material design avec thèmes.
- Remplissage automatique de champs. - Remplissage automatique de champs.
- Clavier de remplissage de champs. - Clavier de remplissage de champs.
- Gabarits dynamiques.
- Historique de chaque entrée. - Historique de chaque entrée.
- Gestion précise des paramètres. - Gestion précise des paramètres.
- Code écrit en langages natifs (Kotlin / Java / JNI / C). - Code écrit en langages natifs (Kotlin / Java / JNI / C).

View File

@@ -1,4 +1,4 @@
<b>複数の形式に対応する KeePass パスワード マネージャー</b>。Android の設計基準が組み込まれており、パスワード、鍵、デジタル ID を安全な方法で保存して使用できます。 <b>複数の形式に対応する KeePass パスワード マネージャー</b>。Android の設計基準が組み込まれており、パスワード、鍵、デジタル ID を安全な方法で保存して使用できます。<b>インターネットに接続する必要はありません。</b>
この pro バージョンは開発中です。購入することで<b>開発の加速</b>と<b>サービスの改善</b>を支援し、<b>広告なしのオープンソース ソフトウェア</b>の作成に貢献できます。 この pro バージョンは開発中です。購入することで<b>開発の加速</b>と<b>サービスの改善</b>を支援し、<b>広告なしのオープンソース ソフトウェア</b>の作成に貢献できます。
<i>現在、このアプリケーションの機能はテーマのロックが解除された free バージョンと同じです。一般的に使われている不自由なサイトやサービスに関連する要素を統合することを計画しています。</i> <i>現在、このアプリケーションの機能はテーマのロックが解除された free バージョンと同じです。一般的に使われている不自由なサイトやサービスに関連する要素を統合することを計画しています。</i>
@@ -13,6 +13,7 @@
- マテリアルデザインに準拠した複数のテーマ - マテリアルデザインに準拠した複数のテーマ
- 自動入力機能の統合 - 自動入力機能の統合
- フィールド入力用のキーボード - フィールド入力用のキーボード
- ダイナミックテンプレート
- エントリーごとの履歴 - エントリーごとの履歴
- 設定の細かな管理 - 設定の細かな管理
- コードはネイティブ言語Kotlin / Java / JNI / Cで書かれています - コードはネイティブ言語Kotlin / Java / JNI / Cで書かれています

View File

@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip