diff --git a/CHANGELOG b/CHANGELOG index 23aeb1c88..89ffb7d36 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +KeePassDX(4.1.9) + * Fix landscape UI #2198 #2200 (@chenxiaolong) + * Fix start loop and flash screen #2201 + * Small fixes + KeePassDX(4.1.8) * Updated to API 35 minimum SDK 19 #2073 #2138 #2067 #2133 #1687 (Thx @Dev-ClayP) * Remember last read-only state #2099 #2100 (Thx @rmacklin) diff --git a/app/build.gradle b/app/build.gradle index 090ae8234..81802b957 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "com.kunzisoft.keepass" minSdkVersion 19 targetSdkVersion 35 - versionCode = 141 - versionName = "4.1.8" + versionCode = 143 + versionName = "4.1.9" multiDexEnabled true testApplicationId = "com.kunzisoft.keepass.tests" diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt index 5da1544b8..186288919 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt @@ -23,7 +23,6 @@ import android.content.Intent import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.net.Uri -import android.os.Build import android.os.Bundle import android.os.Handler import android.os.Looper @@ -38,13 +37,10 @@ import androidx.activity.result.ActivityResultLauncher import androidx.activity.viewModels import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout -import androidx.core.content.ContextCompat -import androidx.core.content.res.ResourcesCompat import androidx.core.graphics.BlendModeColorFilterCompat import androidx.core.graphics.BlendModeCompat import androidx.core.graphics.ColorUtils import androidx.core.view.ViewCompat -import androidx.core.view.WindowCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.appbar.AppBarLayout @@ -83,11 +79,13 @@ import com.kunzisoft.keepass.view.hideByFading import com.kunzisoft.keepass.view.setTransparentNavigationBar import com.kunzisoft.keepass.view.showActionErrorIfNeeded import com.kunzisoft.keepass.viewmodels.EntryViewModel +import java.util.EnumSet import java.util.UUID class EntryActivity : DatabaseLockActivity() { private var footer: ViewGroup? = null + private var container: View? = null private var coordinatorLayout: CoordinatorLayout? = null private var collapsingToolbarLayout: CollapsingToolbarLayout? = null private var appBarLayout: AppBarLayout? = null @@ -139,6 +137,7 @@ class EntryActivity : DatabaseLockActivity() { // Get views footer = findViewById(R.id.activity_entry_footer) + container = findViewById(R.id.activity_entry_container) coordinatorLayout = findViewById(R.id.toolbar_coordinator) collapsingToolbarLayout = findViewById(R.id.toolbar_layout) appBarLayout = findViewById(R.id.app_bar) @@ -154,8 +153,12 @@ class EntryActivity : DatabaseLockActivity() { setTransparentNavigationBar { // To fix margin with API 27 ViewCompat.setOnApplyWindowInsetsListener(collapsingToolbarLayout!!, null) - coordinatorLayout?.applyWindowInsets(WindowInsetPosition.TOP) - footer?.applyWindowInsets(WindowInsetPosition.BOTTOM) + container?.applyWindowInsets(EnumSet.of( + WindowInsetPosition.TOP_MARGINS, + WindowInsetPosition.BOTTOM_MARGINS, + WindowInsetPosition.START_MARGINS, + WindowInsetPosition.END_MARGINS, + )) } // Empty title diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt index 49f6544c6..f5b2d6bcb 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt @@ -100,6 +100,7 @@ import com.kunzisoft.keepass.view.showActionErrorIfNeeded import com.kunzisoft.keepass.view.updateLockPaddingStart import com.kunzisoft.keepass.viewmodels.ColorPickerViewModel import com.kunzisoft.keepass.viewmodels.EntryEditViewModel +import java.util.EnumSet import java.util.UUID class EntryEditActivity : DatabaseLockActivity(), @@ -180,8 +181,12 @@ class EntryEditActivity : DatabaseLockActivity(), // To apply fit window with transparency setTransparentNavigationBar(applyToStatusBar = true) { - container?.applyWindowInsets(WindowInsetPosition.TOP_BOTTOM_IME) - footer?.applyWindowInsets(WindowInsetPosition.BOTTOM_IME) + container?.applyWindowInsets(EnumSet.of( + WindowInsetPosition.TOP_MARGINS, + WindowInsetPosition.BOTTOM_MARGINS, + WindowInsetPosition.START_MARGINS, + WindowInsetPosition.END_MARGINS, + )) } stopService(Intent(this, ClipboardEntryNotificationService::class.java)) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt index c0704dc0a..c82207b3e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -48,6 +48,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.Toolbar +import androidx.constraintlayout.widget.ConstraintLayout import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.view.GravityCompat import androidx.core.view.WindowInsetsCompat @@ -117,6 +118,7 @@ import com.kunzisoft.keepass.view.updateLockPaddingStart import com.kunzisoft.keepass.viewmodels.GroupEditViewModel import com.kunzisoft.keepass.viewmodels.GroupViewModel import org.joda.time.LocalDateTime +import java.util.EnumSet class GroupActivity : DatabaseLockActivity(), @@ -131,6 +133,7 @@ class GroupActivity : DatabaseLockActivity(), private var header: ViewGroup? = null private var footer: ViewGroup? = null private var drawerLayout: DrawerLayout? = null + private var constraintLayout: ConstraintLayout? = null private var databaseNavView: NavigationDatabaseView? = null private var coordinatorLayout: CoordinatorLayout? = null private var coordinatorError: CoordinatorLayout? = null @@ -279,6 +282,7 @@ class GroupActivity : DatabaseLockActivity(), header = findViewById(R.id.activity_group_header) footer = findViewById(R.id.activity_group_footer) drawerLayout = findViewById(R.id.drawer_layout) + constraintLayout = findViewById(R.id.activity_group_container_view) databaseNavView = findViewById(R.id.database_nav_view) coordinatorLayout = findViewById(R.id.group_coordinator) coordinatorError = findViewById(R.id.error_coordinator) @@ -296,8 +300,19 @@ class GroupActivity : DatabaseLockActivity(), // To apply fit window with transparency setTransparentNavigationBar(applyToStatusBar = true) { - drawerLayout?.applyWindowInsets(WindowInsetPosition.TOP_BOTTOM_IME) - footer?.applyWindowInsets(WindowInsetPosition.BOTTOM_IME) + constraintLayout?.applyWindowInsets(EnumSet.of( + WindowInsetPosition.TOP_MARGINS, + WindowInsetPosition.BOTTOM_MARGINS, + WindowInsetPosition.START_MARGINS, + WindowInsetPosition.END_MARGINS, + )) + // The background of the drawer is meant to overlap system bars, so use padding + databaseNavView?.applyWindowInsets(EnumSet.of( + WindowInsetPosition.TOP_PADDING, + WindowInsetPosition.BOTTOM_PADDING, + // Only on the start side, since the drawer is anchored to one side of the screen + WindowInsetPosition.START_PADDING, + )) } lockView?.setOnClickListener { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt index 4bca99154..e9d8cb02c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt @@ -311,10 +311,6 @@ class MainCredentialActivity : DatabaseModeActivity() { mDatabaseFileUri?.let { databaseFileUri -> mDatabaseFileViewModel.loadDatabaseFile(databaseFileUri) } - - mDatabase?.let { database -> - launchGroupActivityIfLoaded(database) - } } override fun onDatabaseRetrieved(database: ContextualDatabase?) { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/DatabaseTaskProvider.kt b/app/src/main/java/com/kunzisoft/keepass/database/DatabaseTaskProvider.kt index cd38f0046..303a725a6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/DatabaseTaskProvider.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/DatabaseTaskProvider.kt @@ -254,6 +254,7 @@ class DatabaseTaskProvider( } private fun initServiceConnection() { + stopDialog() if (serviceConnection == null) { serviceConnection = object : ServiceConnection { override fun onBindingDied(name: ComponentName?) { diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt b/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt index 6bf068bbf..7c996aac3 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt @@ -70,8 +70,12 @@ open class SettingsActivity // To apply navigation bar with background color /* TODO Settings nav bar setTransparentNavigationBar { - coordinatorLayout?.applyWindowInsets(WindowInsetPosition.TOP) - footer?.applyWindowInsets(WindowInsetPosition.BOTTOM) + coordinatorLayout?.applyWindowInsets(EnumSet.of( + WindowInsetPosition.TOP_MARGINS, + WindowInsetPosition.BOTTOM_MARGINS, + WindowInsetPosition.START_MARGINS, + WindowInsetPosition.END_MARGINS, + )) }*/ mExternalFileHelper = ExternalFileHelper(this) diff --git a/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt b/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt index 1768c3c49..2437e070d 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt @@ -24,7 +24,6 @@ import android.animation.AnimatorSet import android.animation.ValueAnimator import android.app.Activity import android.content.Context -import android.content.res.Configuration import android.graphics.Color import android.graphics.Paint import android.graphics.PorterDuff @@ -58,7 +57,6 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.forEach import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams -import androidx.core.view.updatePadding import androidx.core.view.updatePaddingRelative import com.google.android.material.appbar.CollapsingToolbarLayout import com.google.android.material.snackbar.Snackbar @@ -66,6 +64,7 @@ import com.kunzisoft.keepass.R import com.kunzisoft.keepass.database.helper.getLocalizedMessage import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.tasks.ActionRunnable +import java.util.EnumSet /** @@ -306,9 +305,7 @@ fun CollapsingToolbarLayout.changeTitleColor(color: Int) { @Suppress("DEPRECATION") fun Activity.setTransparentNavigationBar(applyToStatusBar: Boolean = false, applyWindowInsets: () -> Unit) { - // Only in portrait - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1 - && resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { WindowCompat.setDecorFitsSystemWindows(window, false) window.navigationBarColor = ContextCompat.getColor(this, R.color.surface_selector) if (applyToStatusBar) { @@ -324,7 +321,7 @@ fun Activity.setTransparentNavigationBar(applyToStatusBar: Boolean = false, appl /** * Apply a margin to a view to fix the window inset */ -fun View.applyWindowInsets(position: WindowInsetPosition = WindowInsetPosition.BOTTOM) { +fun View.applyWindowInsets(positions: EnumSet) { ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets -> var consumed = false @@ -340,52 +337,78 @@ fun View.applyWindowInsets(position: WindowInsetPosition = WindowInsetPosition.B } } - val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - when (position) { - WindowInsetPosition.TOP -> { - if (view.layoutParams is ViewGroup.MarginLayoutParams) { - view.updateLayoutParams { - topMargin = insets.top + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() + or WindowInsetsCompat.Type.displayCutout() + or WindowInsetsCompat.Type.ime()) + + val isRtl = layoutDirection == View.LAYOUT_DIRECTION_RTL + + val wantTopMargins = positions.contains(WindowInsetPosition.TOP_MARGINS) + val wantBottomMargins = positions.contains(WindowInsetPosition.BOTTOM_MARGINS) + val wantStartMargins = positions.contains(WindowInsetPosition.START_MARGINS) + val wantEndMargins = positions.contains(WindowInsetPosition.END_MARGINS) + + if (view.layoutParams is ViewGroup.MarginLayoutParams + && (wantTopMargins || wantBottomMargins || wantStartMargins || wantEndMargins)) { + view.updateLayoutParams { + if (wantTopMargins) { + topMargin = insets.top + } + if (wantBottomMargins) { + bottomMargin = insets.bottom + } + if (wantStartMargins) { + if (isRtl) { + rightMargin = insets.right + } else { + leftMargin = insets.left } } - } - WindowInsetPosition.LEGIT_TOP -> { - if (view.layoutParams is ViewGroup.MarginLayoutParams) { - view.updateLayoutParams { - topMargin = 0 - } - } - } - WindowInsetPosition.BOTTOM -> { - if (view.layoutParams is ViewGroup.MarginLayoutParams) { - view.updateLayoutParams { - bottomMargin = insets.bottom - } - } - } - WindowInsetPosition.BOTTOM_IME -> { - val imeHeight = windowInsets.getInsets(WindowInsetsCompat.Type.ime()).bottom - if (view.layoutParams is ViewGroup.MarginLayoutParams) { - view.updateLayoutParams { - bottomMargin = if (imeHeight > 1) 0 else insets.bottom - } - } - } - WindowInsetPosition.TOP_BOTTOM_IME -> { - val imeHeight = windowInsets.getInsets(WindowInsetsCompat.Type.ime()).bottom - if (view.layoutParams is ViewGroup.MarginLayoutParams) { - view.updateLayoutParams { - topMargin = insets.top - bottomMargin = if (imeHeight > 1) imeHeight else 0 + if (wantEndMargins) { + if (isRtl) { + leftMargin = insets.left + } else { + rightMargin = insets.right } } } } + + val wantTopPadding = positions.contains(WindowInsetPosition.TOP_PADDING) + val wantBottomPadding = positions.contains(WindowInsetPosition.BOTTOM_PADDING) + val wantStartPadding = positions.contains(WindowInsetPosition.START_PADDING) + val wantEndPadding = positions.contains(WindowInsetPosition.END_PADDING) + + if (wantTopPadding || wantBottomPadding || wantStartPadding || wantEndPadding) { + val topPadding = if (wantTopPadding) insets.top else 0 + val bottomPadding = if (wantBottomPadding) insets.bottom else 0 + var leftPadding = 0 + var rightPadding = 0 + + if (wantStartPadding) { + if (isRtl) { + rightPadding = insets.right + } else { + leftPadding = insets.left + } + } + if (wantEndPadding) { + if (isRtl) { + leftPadding = insets.left + } else { + rightPadding = insets.right + } + } + + setPadding(leftPadding, topPadding, rightPadding, bottomPadding) + } + // If any of the children consumed the insets, return an appropriate value if (consumed) WindowInsetsCompat.CONSUMED else windowInsets } } enum class WindowInsetPosition { - TOP, BOTTOM, LEGIT_TOP, BOTTOM_IME, TOP_BOTTOM_IME + TOP_MARGINS, BOTTOM_MARGINS, START_MARGINS, END_MARGINS, + TOP_PADDING, BOTTOM_PADDING, START_PADDING, END_PADDING, } diff --git a/app/src/main/res/layout/activity_entry.xml b/app/src/main/res/layout/activity_entry.xml index b93a66a3b..63d4c696c 100644 --- a/app/src/main/res/layout/activity_entry.xml +++ b/app/src/main/res/layout/activity_entry.xml @@ -20,6 +20,7 @@ diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index f585bfe61..16994ec25 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -19,7 +19,7 @@ --> Σχόλια Αρχική Σελίδα - Το KeePassDX είναι μία εφαρμογή Android του διαχειριστή κωδικών KeePass + Υλοποίηση του διαχειριστή κωδικών πρόσβασης KeePass για Android. Αποδοχή Προσθήκη καταχώρησης Προσθήκη ομάδας diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 992ccb923..8d331f7ea 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -21,7 +21,7 @@ --> Comentarios Página de inicio - Implementación para Android del gestor de contraseñas KeePass + Implementación para Android del gestor de contraseñas KeePass. Aceptar Añadir apunte Añadir grupo @@ -691,4 +691,5 @@ Generar archivo de claves Número recursivo de entradas Las plantillas no se muestran + La clave secreta debe tener al menos %1$d caracteres. diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml index 2b80e083c..1a76b6618 100644 --- a/app/src/main/res/values-fil/strings.xml +++ b/app/src/main/res/values-fil/strings.xml @@ -75,7 +75,7 @@ I-update Isara ang mga field Piliin para kopyahin ang %1$s sa clipboard - KeePassDX © %1$d Ang Kunzisoft ay <strong>open source</strong> at <strong>walang advertising</strong>. \nIbinigay ito nang as is, sa ilalim <strong>GPLv3</strong> na lisensya, nang walang anumang warranty. + Ang KeePassDX © Kunzisoft ay open source at walang kasamang patalastas.\nIbinibigay ito nang buo sa ilalim ng lisensiyang GPLv3, nang walang anumang garantiya. <strong>Walang user data ay kinukuha</strong>, ang aplikasyon na ito ay hindi kumokonekta sa anumang server, gumanagana ng lokal at ganap na ginagalang ang pagkapribado ng mga gumagamit. Para <strong>panatilihin ang aming kalayaan</strong>, <strong>ayusin ang mga bug</strong>, <strong>magdagdag ng mga feature</strong> at <strong>maging palaging aktibo</strong>, umaasa kami sa iyong <strong>kontribusyon</strong>. Na-access diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index c0f766924..88fe01c63 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -383,7 +383,7 @@ Zaključaj bazu podataka brzo, aplikaciju možeš postaviti tako da bazu nakon nekog vremena zaključa i kad se ekran isključi. Prikaži mjesto nedavnih baza podataka Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom ili podacima za prijavu uređaja. - <strong>Doprinosom</strong> projektu <i>(novčano, kodom, prijevodom)</i> pomažeš mu da živi i napreduje, a također stječeš pravo na postupak otključavanja <strong>tema</strong>.</strong> + <strong>Doprinosom</strong> projektu <i>(novčano, kodom, prijevodom)</i> pomažeš mu da živi i napreduje, a također stječeš pravo na postupak otključavanja <strong>tema</strong>. Za stvaranje ključa za algoritam šifriranja, glavni ključ se transformira pomoću funkcije za generiranje ključeva koja sadrži slučajnu komponentu. Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na glavnom ekranu Sakrij pokvarene poveznice baze podataka diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index aef987119..743af44f6 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -20,7 +20,7 @@ --> משוב דף הבית - מימוש אנדרואיד של מנהל הסיסמאות KeePass + מימוש אנדרואיד של מנהל הסיסמאות KeePass. קבל הוסף ערך הוסף קבוצה diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index cfb325993..4cdf54b0c 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -24,12 +24,12 @@ Dodaj wpis Dodaj grupę Algorytm szyfrowania - Koniec czasu + Limit czasu Czas bezczynności przed zablokowaniem bazy danych Aplikacja Ustawienia ogólne Nawiasy - Do tworzenia, otwierania i zapisywania plików bazy danych potrzebny jest menedżer plików, który akceptuje działanie Intent Action ACTION_CREATE_DOCUMENT i ACTION_OPEN_DOCUMENT. + Do tworzenia, otwierania i zapisywania plików bazy danych wymagany jest menedżer plików akceptujący zamierzone działania ACTION_CREATE_DOCUMENT i ACTION_OPEN_DOCUMENT. Schowek został wyczyszczony Czas wygaśnięcia schowka Czas przechowywania w schowku (jeśli jest obsługiwany przez urządzenie) @@ -60,11 +60,11 @@ Upewnij się, że ścieżka jest prawidłowa. Wpisz nazwę. Wybierz plik klucza. - W urządzeniu zabrakło pamięci do załadowania całej bazy danych. + Brak pamięci na załadowanie całej bazy danych. Należy wybrać co najmniej jeden rodzaj generowania hasła. Hasła nie pasują do siebie. - \"Rundy szyfrowania\" są zbyt wysokie. Ustaw na 2147483648. - Wprowadź dodatnią liczbę całkowitą w polu \"Długość\". + „Rundy transformacji” są zbyt wysokie. Ustaw na 2147483648. + Wprowadź dodatnią liczbę całkowitą w polu „Długość”. Menedżer plików Generuj hasło Potwierdź hasło @@ -77,8 +77,8 @@ Nie można odczytać uwierzytelnień. Nie można rozpoznać formatu bazy danych. Długość - Wielkość listy grup - Wielkość tekstu w liście grup + Rozmiar elementów listy + Rozmiar tekstu na liście elementów Wczytywanie bazy danych… Małe litery Ukryj hasła @@ -103,7 +103,7 @@ Tworzenie nowej bazy danych… Pracuję… Usuń - Root + Główny Rundy szyfrowania Dodatkowe rundy szyfrowania zapewniają lepszą ochronę przed atakami typu brute force, ale mogą znacznie spowolnić ładowanie i zapisywanie. Zapisywanie bazy danych… @@ -133,7 +133,7 @@ KeePassDX © %1$d Kunzisoft jest <strong>open source</strong> i <strong>bez reklam</strong>. \nJest on dostarczany w stanie, zgodnie z licencją <strong>GPLv3</strong> bez żadnych gwarancji. Nie znaleziono danych wejściowych. Nie można załadować bazy danych. - Nie można załadować klucza. Spróbuj zmniejszyć użycie pamięć KDF. + Nie można załadować klucza. Spróbuj zmniejszyć „Użycie pamięci” KDF. Każdy ciąg musi mieć nazwę pola. Nie można włączyć usługi autouzupełniania. Nazwa pola @@ -149,8 +149,8 @@ Przenieś Wklej Anuluj - Chroniony przed zapisem - Modyfikowalne + Ochrona przed zapisem + Modyfikowalny Ochrona Ochrona przed zapisem KeePassDX potrzebuje uprawnień do zapisu, aby mógł modyfikować bazę danych. @@ -208,12 +208,12 @@ Przypisz klucz główny Utwórz nowy sejf Wykorzystanie kosza - Przenosi grupy i wpisy do grupy \"Kosz\" przed usunięciem + Przenosi grupy i wpisy do grupy „Kosz” przed usunięciem Czcionka pola Zmień czcionkę użytą w polach, aby poprawić widoczność znaków Ochrona schowka Zezwalanie na kopiowanie hasła wejściowego i chronionych pól do schowka - Ostrzeżenie: Schowek jest współużytkowany przez wszystkie aplikacje. Jeśli poufne dane są kopiowane, inne oprogramowanie może je odzyskać. + Ostrzeżenie: schowek jest współużytkowany przez wszystkie aplikacje. Jeśli poufne dane są kopiowane, inne oprogramowanie może je odzyskać. Nazwa bazy danych Opis bazy danych Wersja bazy danych @@ -224,7 +224,7 @@ Magikeyboard Aktywuj niestandardową klawiaturę wypełniającą hasła i wszystkie pola tożsamości Zezwalaj na brak klucza głównego - Umożliwia naciśnięcie przycisku \"Otwórz\", jeśli nie wybrano żadnych poświadczeń + Umożliwia naciśnięcie przycisku „Otwórz”, jeśli nie wybrano żadnych poświadczeń Wskazówki edukacyjne Podświetl elementy, aby dowiedzieć się, jak działa aplikacja Zresetuj wskazówki edukacyjne @@ -248,10 +248,7 @@ Zarejestruj dodatkowe pole, dodaj wartość i opcjonalnie chroń je. Odblokuj swoją bazę danych Zapisz ochronę swojej bazy danych - Zmień tryb otwierania sesji. -\n -\n\"Ochrona przed zapisem\" zapobiega niezamierzonych zmian w bazie danych. -\n\"Modyfikowalne\" pozwala dodawać, usuwać lub modyfikować wszystkie elementy, jak chcesz. + Zmień tryb otwierania sesji. \n \n„Ochrona przed zapisem” zapobiega niezamierzonym zmianom w bazie danych. \n„Modyfikowalny” pozwala dodawać, usuwać lub modyfikować wszystkie elementy według uznania. Skopiuj pole Skopiowane pola można wkleić w dowolnym miejscu. \n @@ -295,17 +292,17 @@ Zamknij bazę danych podczas zamykania powiadomienia Wygląd Motyw klawiatury - Klawiatura - Wibracja po naciśnięciu klawisza - Dźwięk przy naciśnięciu - Nie zabijaj aplikacji… - Wciśnij \'Powrót\', aby zablokować - Zablokuj bazę danych, gdy użytkownik kliknie przycisk \"Wstecz\" na ekranie głównym + Klawisze + Wibracje przy naciskaniu klawiszy + Dźwięk przy naciskaniu klawiszy + Nie zamykaj aplikacji… + Naciśnij „Wstecz”, aby zablokować + Zablokuj bazę danych, gdy użytkownik kliknie przycisk „Wstecz” na ekranie głównym Wyczyść po zamknięciu Blokowanie bazy danych po wygaśnięciu czasu trwania schowka lub zamknięciu powiadomienia po rozpoczęciu korzystania z niej Kosz Wybór wpisu - Podczas przeglądania wpisu w KeePassDX zapełnij Magikeyboard tym wpisem + Podczas przeglądania wpisu w KeePassDX zapełnij Magikeyboard tym wpisem Usuń hasło Usuwa hasło wprowadzone po próbie połączenia z bazą danych Otwórz plik @@ -367,7 +364,7 @@ Żadna Gzip Ustawienia klawiatury urządzenia - Nieprawidłowy klucz OTP. + Nieprawidłowy klucz tajny OTP. Należy ustawić co najmniej jedno poświadczenie. Klucz tajny musi być w formacie Base32. Licznik musi być między %1$d a %2$d. @@ -391,11 +388,11 @@ Magazyn kluczy nie został poprawnie zainicjowany. Kosz grupy Automatycznie zapisuj bazę danych - Zapisz bazę danych po każdym ważnym działaniu (w trybie „Modyfikowalnym”) + Zapisz bazę danych po każdym ważnym działaniu (w trybie „Modyfikowalny”) Załączniki Przywróć historię Usuń historię - Automatyczne działanie klucza + Automatyczna akcja klawiszy Akcja klawisza „Idź” po naciśnięciu klawisza „Pole” Pobierz %1$s Inicjowanie… @@ -428,7 +425,7 @@ Wyświetla przycisk blokady w interfejsie użytkownika Pokaż przycisk blokady Ustawienia autouzupełniania - Dostęp do pliku anulowany przez menedżera plików + Dostęp do pliku anulowany przez menedżer plików Ta etykieta już istnieje. Zrestartuj aplikację zawierającą formularz, aby aktywować blokadę. Blokowanie autouzupełniania @@ -441,9 +438,9 @@ Lista zablokowanych, która uniemożliwia automatyczne wypełnianie domen internetowych Lista zablokowanych domen internetowych Lista zablokowanych aplikacji - Automatycznie przełącz się z powrotem na poprzednią klawiaturę po wykonaniu automatycznej akcji klawiszy - Przełącz się z powrotem - Automatycznie przełącz się z powrotem do poprzedniej klawiatury na ekranie poświadczeń bazy danych + Automatycznie przełącz z powrotem do poprzedniej klawiatury po wykonaniu automatycznej akcji klawiszy + Przełącz z powrotem + Automatycznie przełącz z powrotem do poprzedniej klawiatury na ekranie poświadczeń bazy danych Ekran poświadczeń bazy danych Przełącz klawiaturę Prześlij %1$s @@ -451,9 +448,7 @@ Dodaj załącznik Czy mimo to dodać plik\? Przesłanie tego pliku spowoduje zastąpienie istniejącego. - Baza danych KeePass powinna zawierać tylko małe pliki narzędziowe (takie jak pliki kluczy PGP). -\n -\nTwoja baza danych może stać się bardzo duża i zmniejszyć wydajność dzięki temu wgrywaniu danych. + Baza danych KeePass powinna zawierać tylko małe pliki narzędziowe (takie jak pliki kluczy PGP). \n \nTwoja baza danych może stać się bardzo duża i obniżyć wydajność w wyniku tego przesyłania. Usuwa załączniki znajdujące się w bazie danych, ale niepowiązane z danym wpisem Usuń niepołączone dane Dane @@ -471,7 +466,7 @@ Zapisz informacje wyszukiwania Zamknij bazę danych po wybraniu autouzupełniania Zamknij bazę danych - Automatycznie przełącz się z powrotem do poprzedniej klawiatury po zablokowaniu bazy danych + Automatycznie przełącz z powrotem do poprzedniej klawiatury po zablokowaniu bazy danych Zablokuj bazę danych Staraj się zapisywać udostępnione informacje podczas dokonywania ręcznego wyboru wpisu, aby ułatwić sobie przyszłe użycie Zapisz udostępnione informacje @@ -618,17 +613,13 @@ Zapisz kopię w … Wygasłe Baza danych jest już otwarta, należy ją najpierw zamknąć, aby otworzyć nową - Ta funkcja umożliwia przechowywanie zaszyfrowanych danych uwierzytelniających w bezpiecznym magazynie kluczy urządzenia. -\n -\nW zależności od konkretnej implementacji interfejsu API systemu operacyjnego, może nie być w pełni funkcjonalna. -\n -\nSprawdź kompatybilność i bezpieczeństwo magazynu kluczy u producenta urządzenia i twórcy używanego ROM-u. + Ta funkcja umożliwia przechowywanie zaszyfrowanych danych uwierzytelniających w bezpiecznym magazynie kluczy urządzenia. \n \nMoże nie być w pełni funkcjonalna w zależności od konkretnej implementacji interfejsu API systemu operacyjnego. \n \nSprawdź kompatybilność i bezpieczeństwo magazynu kluczy u producenta urządzenia i twórcy używanego ROM-u. Fraza hasła Koloruj znaki hasła według typu Ekran wyszukiwania Entropia: %1$s bitowa - Entropia: Wysoka - Entropia: Oblicz… + Entropia: wysoka + Entropia: oblicz… Co najmniej po jednym znaku z każdego Wyklucz niejednoznaczne znaki Rozważ znaki @@ -640,7 +631,7 @@ Liczba słów frazy hasła Ignoruj znaki Koloruj hasła - Automatycznie przełączaj z powrotem do poprzedniej klawiatury na ekranie wyszukiwania + Automatycznie przełącz z powrotem do poprzedniej klawiatury na ekranie wyszukiwania Oczekiwanie na żądanie wyzwania… Oczekiwanie na odpowiedź na wyzwanie… Wyzwanie już zażądane. @@ -700,7 +691,7 @@ Węzły Nie zaleca się dodawania dużego pliku klucza, ponieważ może to uniemożliwić otwarcie bazy danych. Wygeneruj plik klucza - Rekurencyjnie oblicza liczbę wpisów w grupie + Rekurencyjnie oblicza liczbę wpisów w grupie Rekurencyjna liczba wpisów Ukryj szablony Szablony nie są wyświetlane diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 28b5aa6b8..5d72229aa 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -19,7 +19,7 @@ --> Geri bildirim Ana Sayfa - KeePass Parola Yöneticisi\'nin Android uygulama uyarlaması + KeePass Parola Yöneticisi\'nin Android uygulama uyarlaması. Kabul et Girdi ekle Girdi düzenle diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 138325f66..daa1bbc84 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -14,7 +14,7 @@ along with KeePassDX. If not, see . --> 關於 - 兼容KeePass密碼管理軟體的Android程式 + 兼容KeePass密碼管理軟體的Android程式。 接受 帳戶 新增項目 @@ -224,7 +224,7 @@ 資料庫所有資料均採用加密演算法 輸入 UUID - 存取於 + 存取時間 添加附件 添加欄位 附件 @@ -643,7 +643,7 @@ 自動填入 資訊 <strong>不收集用戶資料。</strong>,此應用程式不連接任何伺服器,僅在裝置上運作,而且完全尊重用戶私穩。 - 正在等待挑戰請求… + 正在等待開發請求… 正等待Challenge回應…… XML格式錯誤。 已請求Challenge。 @@ -665,10 +665,10 @@ 主題、顏色、屬性 解鎖 從每組中選擇字完 - 可以包括 + 可以包含 不要包括 標題大小寫 - 導航列 + 導航列標題 記得驗證和儲存你的資料庫。 \n \n如果自動鎖定已啓用,而你又忘記你在更改資料,你可能會失去你的資料。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d5dd2a8ff..c87392f54 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -413,7 +413,7 @@ History Properties Appearance - Themes, colors, attributes + Themes, colors, icons, fonts, attributes Biometric Device credential General diff --git a/fastlane/metadata/android/en-US/changelogs/143.txt b/fastlane/metadata/android/en-US/changelogs/143.txt new file mode 100644 index 000000000..7c07613f0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/143.txt @@ -0,0 +1,3 @@ + * Fix landscape UI #2198 #2200 (@chenxiaolong) + * Fix start loop and flash screen #2201 + * Small fixes \ No newline at end of file diff --git a/fastlane/metadata/android/es-ES/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt index f85e99b58..a9130725b 100644 --- a/fastlane/metadata/android/es-ES/full_description.txt +++ b/fastlane/metadata/android/es-ES/full_description.txt @@ -1,4 +1,4 @@ -KeePassDX es un Administrador de contraseñas seguro que permite editar datos cifrados en un solo archivo en el formato abierto de KeePass permite completar los formularios de manera segura, no requiereconexión a internet e integra los estándares de diseño de Android. La aplicación es de código abierto, sin publicidad. +KeePassDX es un gestor y almacén de contraseñas que permite editar datos cifrados en un único archivo en formato KeePass abierto y rellenar formularios de forma segura, no requiere conexión a Internet e integra los estándares de diseño de Android. La aplicación es de código abierto y sin publicidad. Funciones diff --git a/fastlane/metadata/android/es-ES/short_description.txt b/fastlane/metadata/android/es-ES/short_description.txt index 5dd953b83..1fe438817 100644 --- a/fastlane/metadata/android/es-ES/short_description.txt +++ b/fastlane/metadata/android/es-ES/short_description.txt @@ -1 +1 @@ -Administrador de contraseñas seguro de código abierto \ No newline at end of file +Administrador de contraseñas seguro de código abierto diff --git a/fastlane/metadata/android/es-ES/title.txt b/fastlane/metadata/android/es-ES/title.txt index b658c4290..b5651e34a 100644 --- a/fastlane/metadata/android/es-ES/title.txt +++ b/fastlane/metadata/android/es-ES/title.txt @@ -1 +1 @@ -KeePassDX - FOSS Administrador de contraseñas \ No newline at end of file +KeePassDX - Contraseñas FOSS diff --git a/fastlane/metadata/android/fr-FR/changelogs/143.txt b/fastlane/metadata/android/fr-FR/changelogs/143.txt new file mode 100644 index 000000000..8b32c9411 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/143.txt @@ -0,0 +1,3 @@ + * Correction de l'interface en paysage #2198 #2200 (@chenxiaolong) + * Correction du démarrage en boucle et de l'écran clignotant #2201 + * Petites corrections \ No newline at end of file diff --git a/fastlane/metadata/android/ru-RU/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt index 9a57c7dd3..d2f534e12 100644 --- a/fastlane/metadata/android/ru-RU/full_description.txt +++ b/fastlane/metadata/android/ru-RU/full_description.txt @@ -1,4 +1,4 @@ -KeePassDX имеет открытый исходный код и без рекламы. Многоформатный менеджер паролей KeePass это приложение которое позволяет безопасно сохранять и использовать пароли, ключи и цифровые идентификаторы за счет интеграции стандартов дизайна Android и не требует подключения к Интернету. +KeePassDX — это приложение для хранения и управления паролями, которая позволяет редактировать зашифрованные данные в одном файле в открытом формате KeePass, безопасно заполнять формы, не требует подключения к Интернету и соответствует стандартам дизайна Android. Приложение с открытым исходным кодом, без рекламы. Возможности @@ -16,8 +16,8 @@ KeePassDX имеет открытый исходный код и бе - Точное управление настройками. - Код написан на родных языках для платформы (Kotlin / Java / JNI / C). -Вы можете пожертвовать или купить профессиональную версию чтобы улучшить обслуживание и ускорить разработку нужных вам возможностей: KeePass Pro +Вы можете пожертвовать или купить профессиональную версию для улучшения обслуживания и быстрой разработки нужных вам возможностей: https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro -Проект постоянно развивается. Не стесняйтесь проверять статус разработки и следующих обновлений тут: github.com/Kunzisoft/KeePassDX/projects +Проект постоянно развивается. Не стесняйтесь проверять статус разработки следующих обновлений: https://github.com/Kunzisoft/KeePassDX/projects Сообщить о проблеме:https://github.com/Kunzisoft/KeePassDX/issues diff --git a/fastlane/metadata/android/tr-TR/full_description.txt b/fastlane/metadata/android/tr-TR/full_description.txt new file mode 100644 index 000000000..e0c0b3bbc --- /dev/null +++ b/fastlane/metadata/android/tr-TR/full_description.txt @@ -0,0 +1,23 @@ +KeePassDX, açık KeePass biçiminde tek bir dosyada şifreli verileri düzenlemeye ve formları güvenli bir şekilde doldurmaya olanak tanıyan bir şifre kasası ve yöneticisi olup, internet bağlantısı gerektirmez ve Android tasarım standartlarını takip eder. Uygulama açık kaynaklıdır ve reklam içermez. + +Özellikler + +- Veri tabanı dosyaları / girdileri ve grupları oluşturun. +- AES - Twofish - ChaCha20 - Argon2 algoritması ile .kdb ve .kdbx dosyaları (sürüm 1 ile 4 arası) desteği. +- Birçok farklı programla uyumludur (KeePass, KeePassXC, KeeWeb, …). +- URI / URL alanlarını hızlı bir şekilde açma ve kopyalama imkanı. +- Hızlı kilit açma için biyometrik tanıma (parmak izi / yüz tanıma / …). +- İki aşamalı kimlik doğrulama (2FA) için tek kullanımlık şifre yönetimi (HOTP / TOTP). +- Temalı Material tasarımı. +- Otomatik doldurma ve bütünleşme. +- Alan doldurma klavyesi. +- Değişken şablonlar. +- Her girdinin geçmişi. +- Ayarların hassas yönetimi. +- Yerel dillerde (Kotlin / Java / JNI / C) yazılmış kod. + +Daha iyi hizmet ve istediğiniz özelliklerin hızlı bir şekilde geliştirilmesi için bağış yapabilir veya pro sürümü satın alabilirsiniz: https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro + +Proje sürekli gelişmektedir. Bir sonraki güncellemelerin geliştirme durumuna bakmaktan çekinmeyin: https://github.com/Kunzisoft/KeePassDX/projects + +Sorunlarınızı şu adrese gönderin: https://github.com/Kunzisoft/KeePassDX/issues diff --git a/fastlane/metadata/android/tr-TR/short_description.txt b/fastlane/metadata/android/tr-TR/short_description.txt index e7aaaf446..611a6efc3 100644 --- a/fastlane/metadata/android/tr-TR/short_description.txt +++ b/fastlane/metadata/android/tr-TR/short_description.txt @@ -1 +1 @@ -Güvenilir açık kaynaklı parola kasa ve yöneticisi \ No newline at end of file +Güvenilir açık kaynaklı parola kasa ve yöneticisi diff --git a/fastlane/metadata/android/tr-TR/title.txt b/fastlane/metadata/android/tr-TR/title.txt index aae091a35..e92cb62b0 100644 --- a/fastlane/metadata/android/tr-TR/title.txt +++ b/fastlane/metadata/android/tr-TR/title.txt @@ -1 +1 @@ -KeePassDX - FOSS Parola Kasası \ No newline at end of file +KeePassDX - FOSS Parola Kasası diff --git a/fastlane/metadata/android/zh-TW/full_description.txt b/fastlane/metadata/android/zh-TW/full_description.txt new file mode 100644 index 000000000..6b02bbc78 --- /dev/null +++ b/fastlane/metadata/android/zh-TW/full_description.txt @@ -0,0 +1,23 @@ +KeePassDX 是一款密碼保險箱和管理器,允許以開放的 KeePass 格式編輯單一檔案中的加密資料,並以安全的方式填寫表單,無需網路連線,並整合了 Android 設計標準。該應用程式開源,無廣告。 + +功能 + +- 建立資料庫檔案/條目和群組。 +- 支援 .kdb 和 .kdbx 檔案(版本 1 至 4),並採用 AES - Twofish - ChaCha20 - Argon2 演算法。 +- 與大多數替代方案(KeePass、KeePassXC、KeeWeb 等)相容。 +- 允許快速開啟和複製 URI/URL 欄位。 +- 生物辨識技術,可快速解鎖(指紋/人臉解鎖等)。 +- 一次性密碼管理 (HOTP / TOTP),用於雙重認證 (2FA)。 +- 帶主題的 Material Design 設計。 +- 自動填充和整合。 +- 字段填充鍵盤。 +- 動態模板。 +- 每次輸入的歷史記錄。 +- 精確的設定管理。 +- 使用原生語言編寫程式碼 (Kotlin / Java / JNI / C)。 + +您可以捐款或購買專業版,以獲得更好的服務並快速開發您想要的功能:https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro + +該項目正在不斷發展。請隨時查看後續更新的開發狀態:https://github.com/Kunzisoft/KeePassDX/projects + +請將問題寄至:https://github.com/Kunzisoft/KeePassDX/issues diff --git a/fastlane/metadata/android/zh-TW/short_description.txt b/fastlane/metadata/android/zh-TW/short_description.txt new file mode 100644 index 000000000..7f4abdc73 --- /dev/null +++ b/fastlane/metadata/android/zh-TW/short_description.txt @@ -0,0 +1 @@ +安全的開源密碼保險箱和管理器 diff --git a/fastlane/metadata/android/zh-TW/title.txt b/fastlane/metadata/android/zh-TW/title.txt new file mode 100644 index 000000000..844550948 --- /dev/null +++ b/fastlane/metadata/android/zh-TW/title.txt @@ -0,0 +1 @@ +KeePassDX - FOSS 密碼管理器