diff --git a/.gitignore b/.gitignore
index b170c7b1..8eaed0c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -158,3 +158,5 @@ src/java/KP2ASoftkeyboard_AS/build/generated/mockable-android-23.jar
*.rawproto
src/java/Keepass2AndroidPluginSDK2/build/generated/mockable-Google-Inc.-Google-APIs-23.jar
/src/.vs
+/src/JavaFileStorageBindings/Jars/JavaFileStorage-release.aar
+/src/PluginSdkBinding/Jars/app-debug.aar
diff --git a/.gitmodules b/.gitmodules
index 997a697f..7240f889 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -3,4 +3,4 @@
url = https://github.com/PhilippC/Xamarin-Samsung-Pass.git
[submodule "src/netftpandroid"]
path = src/netftpandroid
- url = https://git01.codeplex.com/forks/philippc/netftpandroid
+ url = https://github.com/PhilippC/netftpandroid.git
diff --git a/docs/OreoAutoFill.md b/docs/OreoAutoFill.md
index 75b4818a..49d230a0 100644
--- a/docs/OreoAutoFill.md
+++ b/docs/OreoAutoFill.md
@@ -12,7 +12,7 @@ As of January 2018, the following browsers are known to have Android Autofill su
These browsers do not (yet) have autofill support:
* Google Chrome
-* Firefox for Android
+* Firefox for Android ([bugzilla entry](https://bugzilla.mozilla.org/show_bug.cgi?id=1352011))
* Brave-Browser
* Opera
diff --git a/docs/README.md b/docs/README.md
index 33bc2729..5fb3613b 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,12 +1,11 @@
-
# What is Keepass2Android?
Keepass2Android is a password manager app. It allows to store and retrieve passwords and other sensitive information in a file called "database". This database is secured with a so-called master password. The master password typically is a strong password and can be complemented with a second factor for additional security.
-The password database file can be synchronized across different devices. This works best using one of the built-in cloud storage options, but can also be performed with third-party apps. Keepass2Android is compatible with Keepass 1 and Keepass 2 on Windows and KepassX on Linux.
+The password database file can be synchronized across different devices. This works best using one of the built-in cloud storage options, but can also be performed with third-party apps. Keepass2Android is compatible with Keepass 1 and Keepass 2 on Windows and KeepassX on Linux.
# Where to get it?
Regular stable releases of Keepass2Android are available on [Google Play](https://play.google.com/store/apps/details?id=keepass2android.keepass2android).
-Beta-releases can be obtained by opting in to the [Beta testing channel](https://play.google.com/apps/testing/keepass2android.keepass2android). Please join the [Beta tester group](https://plus.google.com/communities/107293657110547776032) for news and discussions about the latest beta releases.
+Beta-releases can be obtained by opting in to the [Beta testing channel](https://play.google.com/apps/testing/keepass2android.keepass2android) or [Beta testing channel for Keepass2Android Offline](https://play.google.com/apps/testing/keepass2android.keepass2android_nonet). Please join the [Beta tester group](https://plus.google.com/communities/107293657110547776032) for news and discussions about the latest beta releases.
# How can I contribute?
* Help to translate Keepass2Android into your language or improve translations at [our Crowdin page](http://crowdin.net/project/keepass2android)
@@ -16,4 +15,4 @@ Beta-releases can be obtained by opting in to the [Beta testing channel](https:/
# How do I learn more?
Please see the [documentation](Documentation.md).
-[](https://www.bitrise.io/app/43a23ab54dee9f7e)
\ No newline at end of file
+[](https://www.bitrise.io/app/43a23ab54dee9f7e)
diff --git a/graphics/launcher_icon/Logo-blue.svg b/graphics/launcher_icon/Logo-blue.svg
new file mode 100644
index 00000000..e8111337
--- /dev/null
+++ b/graphics/launcher_icon/Logo-blue.svg
@@ -0,0 +1,3287 @@
+
+
+
diff --git a/graphics/launcher_icon/Logo-green-foreground.svg b/graphics/launcher_icon/Logo-green-foreground.svg
new file mode 100644
index 00000000..c24cad1b
--- /dev/null
+++ b/graphics/launcher_icon/Logo-green-foreground.svg
@@ -0,0 +1,47 @@
+
+
+
+
\ No newline at end of file
diff --git a/graphics/launcher_icon/Logo-green.svg b/graphics/launcher_icon/Logo-green.svg
new file mode 100644
index 00000000..1f684467
--- /dev/null
+++ b/graphics/launcher_icon/Logo-green.svg
@@ -0,0 +1,3279 @@
+
+
+
diff --git a/src/AndroidFileChooserBinding/AndroidFileChooserBinding.csproj b/src/AndroidFileChooserBinding/AndroidFileChooserBinding.csproj
index c0c6d534..e0dcff19 100644
--- a/src/AndroidFileChooserBinding/AndroidFileChooserBinding.csproj
+++ b/src/AndroidFileChooserBinding/AndroidFileChooserBinding.csproj
@@ -10,7 +10,7 @@
AndroidFileChooserBinding
AndroidFileChooserBinding
512
- v8.0
+ v8.1
True
diff --git a/src/JavaFileStorageBindings/Jars/adal-1.14.0.aar b/src/JavaFileStorageBindings/Jars/adal-1.14.0.aar
new file mode 100644
index 00000000..e3e4c25e
Binary files /dev/null and b/src/JavaFileStorageBindings/Jars/adal-1.14.0.aar differ
diff --git a/src/JavaFileStorageBindings/JavaFileStorageBindings.csproj b/src/JavaFileStorageBindings/JavaFileStorageBindings.csproj
index 7c7486b5..8646b9f2 100644
--- a/src/JavaFileStorageBindings/JavaFileStorageBindings.csproj
+++ b/src/JavaFileStorageBindings/JavaFileStorageBindings.csproj
@@ -11,7 +11,7 @@
JavaFileStorageBindings
512
True
- v8.0
+ v8.1
true
@@ -60,6 +60,7 @@
+
@@ -92,9 +93,6 @@
-
-
-
diff --git a/src/KP2AKdbLibraryBinding/KP2AKdbLibraryBinding.csproj b/src/KP2AKdbLibraryBinding/KP2AKdbLibraryBinding.csproj
index 3ff0ddff..885738cb 100644
--- a/src/KP2AKdbLibraryBinding/KP2AKdbLibraryBinding.csproj
+++ b/src/KP2AKdbLibraryBinding/KP2AKdbLibraryBinding.csproj
@@ -10,7 +10,7 @@
KP2AKdbLibraryBinding
KP2AKdbLibraryBinding
512
- v8.0
+ v8.1
True
diff --git a/src/KeePassLib2Android/Cryptography/KeyDerivation/AesKdf.cs b/src/KeePassLib2Android/Cryptography/KeyDerivation/AesKdf.cs
index c7a66a58..cf7bc634 100644
--- a/src/KeePassLib2Android/Cryptography/KeyDerivation/AesKdf.cs
+++ b/src/KeePassLib2Android/Cryptography/KeyDerivation/AesKdf.cs
@@ -55,7 +55,10 @@ namespace KeePassLib.Cryptography.KeyDerivation
get { return "AES-KDF"; }
}
- public AesKdf()
+ public override byte[] GetSeed(KdfParameters p)
+ { return p.GetByteArray(ParamSeed); }
+
+ public AesKdf()
{
}
diff --git a/src/KeePassLib2Android/Cryptography/KeyDerivation/Argon2Kdf.cs b/src/KeePassLib2Android/Cryptography/KeyDerivation/Argon2Kdf.cs
index bc858ca8..8663eb2c 100644
--- a/src/KeePassLib2Android/Cryptography/KeyDerivation/Argon2Kdf.cs
+++ b/src/KeePassLib2Android/Cryptography/KeyDerivation/Argon2Kdf.cs
@@ -68,7 +68,10 @@ namespace KeePassLib.Cryptography.KeyDerivation
get { return "Argon2"; }
}
- public Argon2Kdf()
+ public override byte[] GetSeed(KdfParameters p)
+ { return p.GetByteArray(ParamSalt); }
+
+ public Argon2Kdf()
{
}
diff --git a/src/KeePassLib2Android/Cryptography/KeyDerivation/KdfEngine.cs b/src/KeePassLib2Android/Cryptography/KeyDerivation/KdfEngine.cs
index 994e0c7e..7e4f5b5c 100644
--- a/src/KeePassLib2Android/Cryptography/KeyDerivation/KdfEngine.cs
+++ b/src/KeePassLib2Android/Cryptography/KeyDerivation/KdfEngine.cs
@@ -36,7 +36,9 @@ namespace KeePassLib.Cryptography.KeyDerivation
get;
}
- public virtual KdfParameters GetDefaultParameters()
+ public abstract byte[] GetSeed(KdfParameters p);
+
+ public virtual KdfParameters GetDefaultParameters()
{
return new KdfParameters(this.Uuid);
}
diff --git a/src/KeePassLib2Android/KeePassLib2Android.csproj b/src/KeePassLib2Android/KeePassLib2Android.csproj
index d3029e5f..d5ba5757 100644
--- a/src/KeePassLib2Android/KeePassLib2Android.csproj
+++ b/src/KeePassLib2Android/KeePassLib2Android.csproj
@@ -12,7 +12,7 @@
Resources\Resource.designer.cs
Resource
KeePassLib2Android
- v8.0
+ v8.1
True
8482b288
diff --git a/src/KeePassLib2Android/Keys/CompositeKey.cs b/src/KeePassLib2Android/Keys/CompositeKey.cs
index a347fc11..7e935df0 100644
--- a/src/KeePassLib2Android/Keys/CompositeKey.cs
+++ b/src/KeePassLib2Android/Keys/CompositeKey.cs
@@ -20,11 +20,8 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
-using System.Text;
-
using KeePassLib.Cryptography;
using KeePassLib.Cryptography.KeyDerivation;
-using KeePassLib.Native;
using KeePassLib.Resources;
using KeePassLib.Security;
using KeePassLib.Utility;
@@ -168,7 +165,7 @@ namespace KeePassLib.Keys
/// Creates the composite key from the supplied user key sources (password,
/// key file, user account, computer ID, etc.).
///
- private byte[] CreateRawCompositeKey32(byte[] mPbMasterSeed)
+ private byte[] CreateRawCompositeKey32(byte[] mPbMasterSeed, byte[] mPbKdfSeed)
{
ValidateUserKeys();
@@ -178,7 +175,7 @@ namespace KeePassLib.Keys
foreach(IUserKey pKey in m_vUserKeys)
{
if (pKey is ISeedBasedUserKey)
- ((ISeedBasedUserKey)pKey).SetParams(mPbMasterSeed);
+ ((ISeedBasedUserKey)pKey).SetParams(mPbMasterSeed, mPbKdfSeed);
ProtectedBinary b = pKey.KeyData;
if(b != null)
{
@@ -211,15 +208,17 @@ namespace KeePassLib.Keys
{
if(p == null) { Debug.Assert(false); throw new ArgumentNullException("p"); }
- byte[] pbRaw32 = CreateRawCompositeKey32(mPbMasterSeed);
+
+ KdfEngine kdf = KdfPool.Get(p.KdfUuid);
+ if (kdf == null) // CryptographicExceptions are translated to "file corrupted"
+ throw new Exception(KLRes.UnknownKdf + MessageService.NewParagraph +
+ KLRes.FileNewVerOrPlgReq + MessageService.NewParagraph +
+ "UUID: " + p.KdfUuid.ToHexString() + ".");
+
+ byte[] pbRaw32 = CreateRawCompositeKey32(mPbMasterSeed, kdf.GetSeed(p));
if((pbRaw32 == null) || (pbRaw32.Length != 32))
{ Debug.Assert(false); return null; }
- KdfEngine kdf = KdfPool.Get(p.KdfUuid);
- if(kdf == null) // CryptographicExceptions are translated to "file corrupted"
- throw new Exception(KLRes.UnknownKdf + MessageService.NewParagraph +
- KLRes.FileNewVerOrPlgReq + MessageService.NewParagraph +
- "UUID: " + p.KdfUuid.ToHexString() + ".");
byte[] pbTrf32 = kdf.Transform(pbRaw32, p);
if(pbTrf32 == null) { Debug.Assert(false); return null; }
@@ -256,7 +255,7 @@ namespace KeePassLib.Keys
public interface ISeedBasedUserKey
{
- void SetParams(byte[] masterSeed);
+ void SetParams(byte[] masterSeed, byte[] mPbKdfSeed);
}
public sealed class InvalidCompositeKeyException : Exception
diff --git a/src/KeePassLib2Android/Kp2aLog.cs b/src/KeePassLib2Android/Kp2aLog.cs
index b2a5a195..f364a377 100644
--- a/src/KeePassLib2Android/Kp2aLog.cs
+++ b/src/KeePassLib2Android/Kp2aLog.cs
@@ -100,7 +100,8 @@ namespace keepass2android
int count = 0;
while (File.Exists(LogFilename + "." + count))
count++;
- File.Move(LogFilename, LogFilename + "." + count);
+ if (count > 0)
+ File.Move(LogFilename, LogFilename + "." + count);
}
diff --git a/src/Kp2aBusinessLogic/IKp2aApp.cs b/src/Kp2aBusinessLogic/IKp2aApp.cs
index de30aae6..1c81bc50 100644
--- a/src/Kp2aBusinessLogic/IKp2aApp.cs
+++ b/src/Kp2aBusinessLogic/IKp2aApp.cs
@@ -52,7 +52,7 @@ namespace keepass2android
///
/// Tell the app that the file from ioc was opened with keyfile.
///
- void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile);
+ void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile, string displayName = "");
///
/// Creates a new database and returns it
diff --git a/src/Kp2aBusinessLogic/Io/AndroidContentStorage.cs b/src/Kp2aBusinessLogic/Io/AndroidContentStorage.cs
index 56cdfc1a..674cb28e 100644
--- a/src/Kp2aBusinessLogic/Io/AndroidContentStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/AndroidContentStorage.cs
@@ -2,11 +2,15 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Runtime.Serialization;
+using Android;
using Android.Content;
using Android.Database;
using Android.OS;
using Android.Provider;
+using Java.IO;
using KeePassLib.Serialization;
+using Console = System.Console;
namespace keepass2android.Io
{
@@ -28,7 +32,12 @@ namespace keepass2android.Io
get { yield return "content"; }
}
- public void Delete(IOConnectionInfo ioc)
+ public bool UserShouldBackup
+ {
+ get { return true; }
+ }
+
+ public void Delete(IOConnectionInfo ioc)
{
throw new NotImplementedException();
}
@@ -45,7 +54,20 @@ namespace keepass2android.Io
public Stream OpenFileForRead(IOConnectionInfo ioc)
{
- return _ctx.ContentResolver.OpenInputStream(Android.Net.Uri.Parse(ioc.Path));
+ try
+ {
+ return _ctx.ContentResolver.OpenInputStream(Android.Net.Uri.Parse(ioc.Path));
+ }
+ catch (Exception e)
+ {
+ if (e.Message.Contains("requires that you obtain access using ACTION_OPEN_DOCUMENT"))
+ {
+ //looks like permission was revoked.
+ throw new DocumentAccessRevokedException();
+ }
+ throw;
+ }
+
}
public IWriteTransaction OpenWriteTransaction(IOConnectionInfo ioc, bool useFileTransaction)
@@ -261,7 +283,26 @@ namespace keepass2android.Io
}
- class AndroidContentWriteTransaction : IWriteTransaction
+ public class DocumentAccessRevokedException : Exception
+ {
+ public DocumentAccessRevokedException()
+ {
+ }
+
+ public DocumentAccessRevokedException(string message) : base(message)
+ {
+ }
+
+ public DocumentAccessRevokedException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
+
+ protected DocumentAccessRevokedException(SerializationInfo info, StreamingContext context) : base(info, context)
+ {
+ }
+ }
+
+ class AndroidContentWriteTransaction : IWriteTransaction
{
private readonly string _path;
private readonly Context _ctx;
@@ -286,11 +327,15 @@ namespace keepass2android.Io
public void CommitWrite()
{
- using (Stream outputStream = _ctx.ContentResolver.OpenOutputStream(Android.Net.Uri.Parse(_path)))
+ ParcelFileDescriptor fileDescriptor = _ctx.ContentResolver.OpenFileDescriptor(Android.Net.Uri.Parse(_path), "w");
+
+ using (var outputStream = new FileOutputStream(fileDescriptor.FileDescriptor))
{
byte[] data = _memoryStream.ToArray();
outputStream.Write(data, 0, data.Length);
+ outputStream.Close();
}
+ fileDescriptor.Close();
}
diff --git a/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs b/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs
index 65525e5e..3de06f17 100644
--- a/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
+using System.Linq;
using System.Net;
using System.Security;
@@ -10,10 +11,14 @@ using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.OS;
+using Android.Preferences;
+using Android.Support.V13.App;
+using Android.Support.V4.App;
using Java.IO;
+using Java.Util;
using KeePassLib.Serialization;
using KeePassLib.Utility;
-
+using ActivityCompat = Android.Support.V13.App.ActivityCompat;
using File = System.IO.File;
using FileNotFoundException = System.IO.FileNotFoundException;
using IOException = System.IO.IOException;
@@ -59,7 +64,12 @@ namespace keepass2android.Io
public abstract IEnumerable SupportedProtocols { get; }
- public void Delete(IOConnectionInfo ioc)
+ public bool UserShouldBackup
+ {
+ get { return true; }
+ }
+
+ public void Delete(IOConnectionInfo ioc)
{
//todo check if directory
IOConnection.DeleteFile(ioc);
@@ -253,10 +263,14 @@ namespace keepass2android.Io
if (requiresPermission && (Build.VERSION.SdkInt >= BuildVersionCodes.M))
{
- if (activity.Activity.CheckSelfPermission(Manifest.Permission.WriteExternalStorage) ==
+ if ((activity.Activity.CheckSelfPermission(Manifest.Permission.WriteExternalStorage) ==
Permission.Denied)
- {
- activity.StartFileUsageProcess(ioc, requestCode, alwaysReturnSuccess);
+ ||
+ (activity.Activity.CheckSelfPermission(Manifest.Permission.ReadExternalStorage) ==
+ Permission.Denied))
+
+ {
+ activity.StartFileUsageProcess(ioc, requestCode, alwaysReturnSuccess);
return;
}
}
@@ -274,7 +288,7 @@ namespace keepass2android.Io
public void OnCreate(IFileStorageSetupActivity fileStorageSetupActivity, Bundle savedInstanceState)
{
- ((Activity)fileStorageSetupActivity).RequestPermissions(new[] { Manifest.Permission.WriteExternalStorage }, 0);
+ Android.Support.V4.App.ActivityCompat.RequestPermissions(((Activity)fileStorageSetupActivity), new[] { Manifest.Permission.WriteExternalStorage, Manifest.Permission.ReadExternalStorage }, 0);
}
public void OnResume(IFileStorageSetupActivity activity)
@@ -367,7 +381,14 @@ namespace keepass2android.Io
{
if (ioc.IsLocalFile())
{
- if (IsLocalFileFlaggedReadOnly(ioc))
+ if (IsLocalBackup(ioc))
+ {
+ if (reason != null)
+ reason.Result = UiStringKey.ReadOnlyReason_LocalBackup;
+ return true;
+ }
+
+ if (IsLocalFileFlaggedReadOnly(ioc))
{
if (reason != null)
reason.Result = UiStringKey.ReadOnlyReason_ReadOnlyFlag;
@@ -388,7 +409,22 @@ namespace keepass2android.Io
return false;
}
- private bool IsLocalFileFlaggedReadOnly(IOConnectionInfo ioc)
+ private readonly Dictionary _isLocalBackupCache = new Dictionary();
+ public bool IsLocalBackup(IOConnectionInfo ioc)
+ {
+ if (!ioc.IsLocalFile())
+ return false;
+ bool result;
+ if (_isLocalBackupCache.TryGetValue(ioc.Path, out result))
+ return result;
+
+ result = (PreferenceManager.GetDefaultSharedPreferences(Application.Context)
+ .GetBoolean(IoUtil.GetIocPrefKey(ioc, "is_local_backup"), false));
+ _isLocalBackupCache[ioc.Path] = result;
+ return result;
+ }
+
+ private bool IsLocalFileFlaggedReadOnly(IOConnectionInfo ioc)
{
//see http://stackoverflow.com/a/33292700/292233
try
@@ -412,7 +448,7 @@ namespace keepass2android.Io
public void OnRequestPermissionsResult(IFileStorageSetupActivity fileStorageSetupActivity, int requestCode,
string[] permissions, Permission[] grantResults)
{
- fileStorageSetupActivity.State.PutBoolean(PermissionGrantedKey, grantResults[0] == Permission.Granted);
+ fileStorageSetupActivity.State.PutBoolean(PermissionGrantedKey, grantResults.All(res => res == Permission.Granted));
}
}
diff --git a/src/Kp2aBusinessLogic/Io/CachingFileStorage.cs b/src/Kp2aBusinessLogic/Io/CachingFileStorage.cs
index 31d1d0bc..4ecc2584 100644
--- a/src/Kp2aBusinessLogic/Io/CachingFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/CachingFileStorage.cs
@@ -84,7 +84,12 @@ namespace keepass2android.Io
public IEnumerable SupportedProtocols { get { return _cachedStorage.SupportedProtocols; } }
- public void DeleteFile(IOConnectionInfo ioc)
+ public bool UserShouldBackup
+ {
+ get { return _cachedStorage.UserShouldBackup; }
+ }
+
+ public void DeleteFile(IOConnectionInfo ioc)
{
if (IsCached(ioc))
{
diff --git a/src/Kp2aBusinessLogic/Io/DropboxFileStorage.cs b/src/Kp2aBusinessLogic/Io/DropboxFileStorage.cs
index e4b3e774..4ad64472 100644
--- a/src/Kp2aBusinessLogic/Io/DropboxFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/DropboxFileStorage.cs
@@ -10,7 +10,11 @@ namespace keepass2android.Io
{
}
-
+
+ public override bool UserShouldBackup
+ {
+ get { return false; }
+ }
}
public partial class DropboxAppFolderFileStorage: JavaFileStorage
@@ -20,8 +24,12 @@ namespace keepass2android.Io
{
}
-
- }
+ public override bool UserShouldBackup
+ {
+ get { return false; }
+ }
+
+ }
}
#endif
\ No newline at end of file
diff --git a/src/Kp2aBusinessLogic/Io/GDriveFileStorage.cs b/src/Kp2aBusinessLogic/Io/GDriveFileStorage.cs
index dbd5c975..1636e232 100644
--- a/src/Kp2aBusinessLogic/Io/GDriveFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/GDriveFileStorage.cs
@@ -22,6 +22,10 @@ namespace keepass2android.Io
}
+ public override bool UserShouldBackup
+ {
+ get { return false; }
+ }
}
}
#endif
\ No newline at end of file
diff --git a/src/Kp2aBusinessLogic/Io/IFileStorage.cs b/src/Kp2aBusinessLogic/Io/IFileStorage.cs
index 79cab4a2..33793ce5 100644
--- a/src/Kp2aBusinessLogic/Io/IFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/IFileStorage.cs
@@ -46,9 +46,14 @@ namespace keepass2android.Io
///
/// returns the protocol ids supported by this FileStorage. Can return pseudo-protocols like "dropbox" or real protocols like "ftp"
///
- IEnumerable SupportedProtocols { get; }
+ IEnumerable SupportedProtocols { get; }
- ///
+ ///
+ /// returns true if users should backup files on this file storage (if the file is important). Can be false for cloud providers with built-in versioning or backups.
+ ///
+ bool UserShouldBackup { get; }
+
+ ///
/// Deletes the given file or directory.
///
void Delete(IOConnectionInfo ioc);
diff --git a/src/Kp2aBusinessLogic/Io/IoUtil.cs b/src/Kp2aBusinessLogic/Io/IoUtil.cs
index ee1463f8..eeb8ba56 100644
--- a/src/Kp2aBusinessLogic/Io/IoUtil.cs
+++ b/src/Kp2aBusinessLogic/Io/IoUtil.cs
@@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
+using System.Security.Cryptography;
using System.Text;
using Android.Content;
using Android.OS;
using Java.IO;
using KeePassLib.Serialization;
+using KeePassLib.Utility;
namespace keepass2android.Io
{
@@ -125,5 +127,53 @@ namespace keepass2android.Io
return ctx.FilesDir;
}
- }
+ //creates a local ioc where the sourceIoc can be stored to
+ public static IOConnectionInfo GetInternalIoc(IOConnectionInfo sourceIoc, Context ctx)
+ {
+ Java.IO.File internalDirectory = IoUtil.GetInternalDirectory(ctx);
+ string targetPath = UrlUtil.GetFileName(sourceIoc.Path);
+ targetPath = targetPath.Trim("|\\?*<\":>+[]/'".ToCharArray());
+ if (targetPath == "")
+ targetPath = "internal";
+ if (new File(internalDirectory, targetPath).Exists())
+ {
+ int c = 1;
+ var ext = UrlUtil.GetExtension(targetPath);
+ var filenameWithoutExt = UrlUtil.StripExtension(targetPath);
+ do
+ {
+ c++;
+ targetPath = filenameWithoutExt + c;
+ if (!String.IsNullOrEmpty(ext))
+ targetPath += "." + ext;
+ } while (new File(internalDirectory, targetPath).Exists());
+ }
+ return IOConnectionInfo.FromPath(new File(internalDirectory, targetPath).CanonicalPath);
+ }
+
+ public static IOConnectionInfo ImportFileToInternalDirectory(IOConnectionInfo sourceIoc, Context ctx, IKp2aApp app)
+ {
+ var targetIoc = GetInternalIoc(sourceIoc, ctx);
+
+
+ IoUtil.Copy(targetIoc, sourceIoc, app);
+ return targetIoc;
+ }
+
+ public static string GetIocPrefKey(IOConnectionInfo ioc, string suffix)
+ {
+ var iocAsHexString = IocAsHexString(ioc);
+
+ return "kp2a_ioc_key_" + iocAsHexString + suffix;
+ }
+
+
+ public static string IocAsHexString(IOConnectionInfo ioc)
+ {
+ SHA256Managed sha256 = new SHA256Managed();
+ string iocAsHexString =
+ MemUtil.ByteArrayToHexString(sha256.ComputeHash(Encoding.Unicode.GetBytes(ioc.Path.ToCharArray())));
+ return iocAsHexString;
+ }
+ }
}
diff --git a/src/Kp2aBusinessLogic/Io/JavaFileStorage.cs b/src/Kp2aBusinessLogic/Io/JavaFileStorage.cs
index a7173d26..0e6870e0 100644
--- a/src/Kp2aBusinessLogic/Io/JavaFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/JavaFileStorage.cs
@@ -22,9 +22,10 @@ namespace keepass2android.Io
protected string Protocol { get { return _jfs.ProtocolId; } }
public virtual IEnumerable SupportedProtocols { get { yield return Protocol; } }
+ public abstract bool UserShouldBackup { get; }
- private readonly IJavaFileStorage _jfs;
+ private readonly IJavaFileStorage _jfs;
private readonly IKp2aApp _app;
public JavaFileStorage(IJavaFileStorage jfs, IKp2aApp app)
diff --git a/src/Kp2aBusinessLogic/Io/NetFtpFileStorage.cs b/src/Kp2aBusinessLogic/Io/NetFtpFileStorage.cs
index 5e19d66a..f975ac16 100644
--- a/src/Kp2aBusinessLogic/Io/NetFtpFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/NetFtpFileStorage.cs
@@ -161,7 +161,12 @@ namespace keepass2android.Io
}
}
- public void Delete(IOConnectionInfo ioc)
+ public bool UserShouldBackup
+ {
+ get { return true; }
+ }
+
+ public void Delete(IOConnectionInfo ioc)
{
try
{
@@ -226,7 +231,7 @@ namespace keepass2android.Io
- internal Uri IocToUri(IOConnectionInfo ioc)
+ public static Uri IocToUri(IOConnectionInfo ioc)
{
if (!string.IsNullOrEmpty(ioc.UserName))
{
@@ -570,7 +575,7 @@ namespace keepass2android.Io
{
_client = _fileStorage.GetClient(_ioc, false);
- _stream = _client.OpenWrite(_fileStorage.IocToUri(_iocTemp).PathAndQuery);
+ _stream = _client.OpenWrite(NetFtpFileStorage.IocToUri(_iocTemp).PathAndQuery);
return _stream;
}
catch (FtpCommandException ex)
@@ -590,8 +595,8 @@ namespace keepass2android.Io
//make sure target file does not exist:
//try
{
- if (_client.FileExists(_fileStorage.IocToUri(_ioc).PathAndQuery))
- _client.DeleteFile(_fileStorage.IocToUri(_ioc).PathAndQuery);
+ if (_client.FileExists(NetFtpFileStorage.IocToUri(_ioc).PathAndQuery))
+ _client.DeleteFile(NetFtpFileStorage.IocToUri(_ioc).PathAndQuery);
}
//catch (FtpCommandException)
@@ -599,8 +604,8 @@ namespace keepass2android.Io
//TODO get a new clien? might be stale
}
- _client.Rename(_fileStorage.IocToUri(_iocTemp).PathAndQuery,
- _fileStorage.IocToUri(_ioc).PathAndQuery);
+ _client.Rename(NetFtpFileStorage.IocToUri(_iocTemp).PathAndQuery,
+ NetFtpFileStorage.IocToUri(_ioc).PathAndQuery);
}
catch (FtpCommandException ex)
diff --git a/src/Kp2aBusinessLogic/Io/OfflineSwitchableFileStorage.cs b/src/Kp2aBusinessLogic/Io/OfflineSwitchableFileStorage.cs
index bf93653e..725b7f31 100644
--- a/src/Kp2aBusinessLogic/Io/OfflineSwitchableFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/OfflineSwitchableFileStorage.cs
@@ -32,7 +32,12 @@ namespace keepass2android.Io
get { return _baseStorage.SupportedProtocols; }
}
- public void Delete(IOConnectionInfo ioc)
+ public bool UserShouldBackup
+ {
+ get { return _baseStorage.UserShouldBackup; }
+ }
+
+ public void Delete(IOConnectionInfo ioc)
{
_baseStorage.Delete(ioc);
}
diff --git a/src/Kp2aBusinessLogic/Io/OneDriveFileStorage.cs b/src/Kp2aBusinessLogic/Io/OneDriveFileStorage.cs
index c5d522a8..25ff4d9b 100644
--- a/src/Kp2aBusinessLogic/Io/OneDriveFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/OneDriveFileStorage.cs
@@ -33,6 +33,11 @@ namespace keepass2android.Io
yield return "onedrive";
}
}
+
+ public override bool UserShouldBackup
+ {
+ get { return false; }
+ }
}
}
#endif
\ No newline at end of file
diff --git a/src/Kp2aBusinessLogic/Io/SftpFileStorage.cs b/src/Kp2aBusinessLogic/Io/SftpFileStorage.cs
index ce2f3a9c..7f54a577 100644
--- a/src/Kp2aBusinessLogic/Io/SftpFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/SftpFileStorage.cs
@@ -10,7 +10,11 @@ namespace keepass2android.Io
{
}
-
+
+ public override bool UserShouldBackup
+ {
+ get { return true; }
+ }
}
diff --git a/src/Kp2aBusinessLogic/Io/WebDavFileStorage.cs b/src/Kp2aBusinessLogic/Io/WebDavFileStorage.cs
index 4459d4f8..cb4890b9 100644
--- a/src/Kp2aBusinessLogic/Io/WebDavFileStorage.cs
+++ b/src/Kp2aBusinessLogic/Io/WebDavFileStorage.cs
@@ -33,7 +33,12 @@ namespace keepass2android.Io
}
}
- public static string Owncloud2Webdav(string owncloudUrl)
+ public override bool UserShouldBackup
+ {
+ get { return true; }
+ }
+
+ public static string Owncloud2Webdav(string owncloudUrl)
{
string owncloudPrefix = "owncloud://";
if (owncloudUrl.StartsWith(owncloudPrefix))
diff --git a/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj b/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj
index 377cdcef..9dc78489 100644
--- a/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj
+++ b/src/Kp2aBusinessLogic/Kp2aBusinessLogic.csproj
@@ -12,9 +12,10 @@
512
Resources\Resource.Designer.cs
Off
- v8.0
+ v8.1
true
- 06ffb71c
+
+
true
@@ -54,6 +55,36 @@
+
+ ..\packages\Xamarin.Android.Arch.Core.Common.1.0.0\lib\MonoAndroid80\Xamarin.Android.Arch.Core.Common.dll
+
+
+ ..\packages\Xamarin.Android.Arch.Lifecycle.Common.1.0.1\lib\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Common.dll
+
+
+ ..\packages\Xamarin.Android.Arch.Lifecycle.Runtime.1.0.0\lib\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Runtime.dll
+
+
+ ..\packages\Xamarin.Android.Support.Annotations.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Annotations.dll
+
+
+ ..\packages\Xamarin.Android.Support.Compat.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Compat.dll
+
+
+ ..\packages\Xamarin.Android.Support.Core.UI.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Core.UI.dll
+
+
+ ..\packages\Xamarin.Android.Support.Core.Utils.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Core.Utils.dll
+
+
+ ..\packages\Xamarin.Android.Support.Fragment.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Fragment.dll
+
+
+ ..\packages\Xamarin.Android.Support.Media.Compat.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Media.Compat.dll
+
+
+ ..\packages\Xamarin.Android.Support.v13.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.v13.dll
+
@@ -131,7 +162,35 @@
+
+
+
+
+
+
+ Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
0){ length=(length<<8)+(buf[index++]&0xff); }
+ }
+ indexp[0]=index;
+ return length;
+ }
+ byte[] getContent() {
+ int[] indexp=new int[1];
+ indexp[0]=start+1;
+ int length = getLength(indexp);
+ int index=indexp[0];
+ byte[] tmp = new byte[length];
+ System.arraycopy(buf, index, tmp, 0, tmp.length);
+ return tmp;
+ }
+ ASN1[] getContents() throws ASN1Exception {
+ int typ = buf[start];
+ int[] indexp=new int[1];
+ indexp[0]=start+1;
+ int length = getLength(indexp);
+ if(typ == 0x05){
+ return new ASN1[0];
+ }
+ int index=indexp[0];
+ java.util.Vector values = new java.util.Vector();
+ while(length>0) {
+ index++; length--;
+ int tmp=index;
+ indexp[0]=index;
+ int l=getLength(indexp);
+ index=indexp[0];
+ length-=(index-tmp);
+ values.addElement(new ASN1(buf, tmp-1, 1+(index-tmp)+l));
+ index+=l;
+ length-=l;
+ }
+ ASN1[] result = new ASN1[values.size()];
+ for(int i = 0; i =64 ? 521 :
+ (prv_array.length>=48 ? 384 : 256);
+ }
+
+ void generate(int key_size) throws JSchException{
+ this.key_size=key_size;
+ try{
+ Class c=Class.forName(jsch.getConfig("keypairgen.ecdsa"));
+ KeyPairGenECDSA keypairgen=(KeyPairGenECDSA)(c.newInstance());
+ keypairgen.init(key_size);
+ prv_array=keypairgen.getD();
+ r_array=keypairgen.getR();
+ s_array=keypairgen.getS();
+ name=Util.str2byte(names[prv_array.length>=64 ? 2 :
+ (prv_array.length>=48 ? 1 : 0)]);
+ keypairgen=null;
+ }
+ catch(Exception e){
+ if(e instanceof Throwable)
+ throw new JSchException(e.toString(), (Throwable)e);
+ throw new JSchException(e.toString());
+ }
+ }
+
+ private static final byte[] begin =
+ Util.str2byte("-----BEGIN EC PRIVATE KEY-----");
+ private static final byte[] end =
+ Util.str2byte("-----END EC PRIVATE KEY-----");
+
+ byte[] getBegin(){ return begin; }
+ byte[] getEnd(){ return end; }
+
+ byte[] getPrivateKey(){
+
+ byte[] tmp = new byte[1]; tmp[0]=1;
+
+ byte[] oid = oids[
+ (r_array.length>=64) ? 2 :
+ ((r_array.length>=48) ? 1 : 0)
+ ];
+
+ byte[] point = toPoint(r_array, s_array);
+
+ int bar = ((point.length+1)&0x80)==0 ? 3 : 4;
+ byte[] foo = new byte[point.length+bar];
+ System.arraycopy(point, 0, foo, bar, point.length);
+ foo[0]=0x03; // BITSTRING
+ if(bar==3){
+ foo[1]=(byte)(point.length+1);
+ }
+ else {
+ foo[1]=(byte)0x81;
+ foo[2]=(byte)(point.length+1);
+ }
+ point = foo;
+
+ int content=
+ 1+countLength(tmp.length) + tmp.length +
+ 1+countLength(prv_array.length) + prv_array.length +
+ 1+countLength(oid.length) + oid.length +
+ 1+countLength(point.length) + point.length;
+
+ int total=
+ 1+countLength(content)+content; // SEQUENCE
+
+ byte[] plain=new byte[total];
+ int index=0;
+ index=writeSEQUENCE(plain, index, content);
+ index=writeINTEGER(plain, index, tmp);
+ index=writeOCTETSTRING(plain, index, prv_array);
+ index=writeDATA(plain, (byte)0xa0, index, oid);
+ index=writeDATA(plain, (byte)0xa1, index, point);
+
+ return plain;
+ }
+
+ boolean parse(byte[] plain){
+ try{
+
+ if(vendor==VENDOR_FSECURE){
+ /*
+ if(plain[0]!=0x30){ // FSecure
+ return true;
+ }
+ return false;
+ */
+ return false;
+ }
+ else if(vendor==VENDOR_PUTTY){
+ /*
+ Buffer buf=new Buffer(plain);
+ buf.skip(plain.length);
+
+ try {
+ byte[][] tmp = buf.getBytes(1, "");
+ prv_array = tmp[0];
+ }
+ catch(JSchException e){
+ return false;
+ }
+
+ return true;
+ */
+ return false;
+ }
+
+ int index=0;
+ int length=0;
+
+ if(plain[index]!=0x30)return false;
+ index++; // SEQUENCE
+ length=plain[index++]&0xff;
+ if((length&0x80)!=0){
+ int foo=length&0x7f; length=0;
+ while(foo-->0){ length=(length<<8)+(plain[index++]&0xff); }
+ }
+
+ if(plain[index]!=0x02)return false;
+ index++; // INTEGER
+
+ length=plain[index++]&0xff;
+ if((length&0x80)!=0){
+ int foo=length&0x7f; length=0;
+ while(foo-->0){ length=(length<<8)+(plain[index++]&0xff); }
+ }
+
+ index+=length;
+ index++; // 0x04
+
+ length=plain[index++]&0xff;
+ if((length&0x80)!=0){
+ int foo=length&0x7f; length=0;
+ while(foo-->0){ length=(length<<8)+(plain[index++]&0xff); }
+ }
+
+ prv_array=new byte[length];
+ System.arraycopy(plain, index, prv_array, 0, length);
+
+ index+=length;
+
+ index++; // 0xa0
+
+ length=plain[index++]&0xff;
+ if((length&0x80)!=0){
+ int foo=length&0x7f; length=0;
+ while(foo-->0){ length=(length<<8)+(plain[index++]&0xff); }
+ }
+
+ byte[] oid_array=new byte[length];
+ System.arraycopy(plain, index, oid_array, 0, length);
+ index+=length;
+
+ for(int i = 0; i0){ length=(length<<8)+(plain[index++]&0xff); }
+ }
+
+ byte[] Q_array=new byte[length];
+ System.arraycopy(plain, index, Q_array, 0, length);
+ index+=length;
+
+ byte[][] tmp = fromPoint(Q_array);
+ r_array = tmp[0];
+ s_array = tmp[1];
+
+ if(prv_array!=null)
+ key_size = prv_array.length>=64 ? 521 :
+ (prv_array.length>=48 ? 384 : 256);
+ }
+ catch(Exception e){
+ //System.err.println(e);
+ //e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+ public byte[] getPublicKeyBlob(){
+ byte[] foo = super.getPublicKeyBlob();
+
+ if(foo!=null) return foo;
+
+ if(r_array==null) return null;
+
+ byte[][] tmp = new byte[3][];
+ tmp[0] = Util.str2byte("ecdsa-sha2-"+new String(name));
+ tmp[1] = name;
+ tmp[2] = new byte[1+r_array.length+s_array.length];
+ tmp[2][0] = 4; // POINT_CONVERSION_UNCOMPRESSED
+ System.arraycopy(r_array, 0, tmp[2], 1, r_array.length);
+ System.arraycopy(s_array, 0, tmp[2], 1+r_array.length, s_array.length);
+
+ return Buffer.fromBytes(tmp).buffer;
+ }
+
+ byte[] getKeyTypeName(){
+ return Util.str2byte("ecdsa-sha2-"+new String(name));
+ }
+ public int getKeyType(){
+ return ECDSA;
+ }
+ public int getKeySize(){
+ return key_size;
+ }
+
+ public byte[] getSignature(byte[] data){
+ try{
+ Class c=Class.forName((String)jsch.getConfig("signature.ecdsa"));
+ SignatureECDSA ecdsa=(SignatureECDSA)(c.newInstance());
+ ecdsa.init();
+ ecdsa.setPrvKey(prv_array);
+
+ ecdsa.update(data);
+ byte[] sig = ecdsa.sign();
+
+ byte[][] tmp = new byte[2][];
+ tmp[0] = Util.str2byte("ecdsa-sha2-"+new String(name));
+ tmp[1] = sig;
+ return Buffer.fromBytes(tmp).buffer;
+ }
+ catch(Exception e){
+ //System.err.println("e "+e);
+ }
+ return null;
+ }
+
+ public Signature getVerifier(){
+ try{
+ Class c=Class.forName((String)jsch.getConfig("signature.ecdsa"));
+ final SignatureECDSA ecdsa=(SignatureECDSA)(c.newInstance());
+ ecdsa.init();
+
+ if(r_array == null && s_array == null && getPublicKeyBlob()!=null){
+ Buffer buf = new Buffer(getPublicKeyBlob());
+ buf.getString(); // ecdsa-sha2-nistp256
+ buf.getString(); // nistp256
+ byte[][] tmp = fromPoint(buf.getString());
+ r_array = tmp[0];
+ s_array = tmp[1];
+ }
+ ecdsa.setPubKey(r_array, s_array);
+ return ecdsa;
+ }
+ catch(Exception e){
+ //System.err.println("e "+e);
+ }
+ return null;
+ }
+
+ static KeyPair fromSSHAgent(JSch jsch, Buffer buf) throws JSchException {
+
+ byte[][] tmp = buf.getBytes(5, "invalid key format");
+
+ byte[] name = tmp[1]; // nistp256
+ byte[][] foo = fromPoint(tmp[2]);
+ byte[] r_array = foo[0];
+ byte[] s_array = foo[1];
+
+ byte[] prv_array = tmp[3];
+ KeyPairECDSA kpair = new KeyPairECDSA(jsch,
+ name,
+ r_array, s_array,
+ prv_array);
+ kpair.publicKeyComment = new String(tmp[4]);
+ kpair.vendor=VENDOR_OPENSSH;
+ return kpair;
+ }
+
+ public byte[] forSSHAgent() throws JSchException {
+ if(isEncrypted()){
+ throw new JSchException("key is encrypted.");
+ }
+ Buffer buf = new Buffer();
+ buf.putString(Util.str2byte("ecdsa-sha2-"+new String(name)));
+ buf.putString(name);
+ buf.putString(toPoint(r_array, s_array));
+ buf.putString(prv_array);
+ buf.putString(Util.str2byte(publicKeyComment));
+ byte[] result = new byte[buf.getLength()];
+ buf.getByte(result, 0, result.length);
+ return result;
+ }
+
+ static byte[] toPoint(byte[] r_array, byte[] s_array) {
+ byte[] tmp = new byte[1+r_array.length+s_array.length];
+ tmp[0]=0x04;
+ System.arraycopy(r_array, 0, tmp, 1, r_array.length);
+ System.arraycopy(s_array, 0, tmp, 1+r_array.length, s_array.length);
+ return tmp;
+ }
+
+ static byte[][] fromPoint(byte[] point) {
+ int i = 0;
+ while(point[i]!=4) i++;
+ i++;
+ byte[][] tmp = new byte[2][];
+ byte[] r_array = new byte[(point.length-i)/2];
+ byte[] s_array = new byte[(point.length-i)/2];
+ // point[0] == 0x04 == POINT_CONVERSION_UNCOMPRESSED
+ System.arraycopy(point, i, r_array, 0, r_array.length);
+ System.arraycopy(point, i+r_array.length, s_array, 0, s_array.length);
+ tmp[0] = r_array;
+ tmp[1] = s_array;
+
+ return tmp;
+ }
+
+ public void dispose(){
+ super.dispose();
+ Util.bzero(prv_array);
+ }
+}
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenDSA.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenDSA.java
index f6507f24..2bd78b21 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenDSA.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenDSA.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenECDSA.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenECDSA.java
new file mode 100644
index 00000000..30f00c74
--- /dev/null
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenECDSA.java
@@ -0,0 +1,37 @@
+/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
+/*
+Copyright (c) 2015-2016 ymnk, JCraft,Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the distribution.
+
+ 3. The names of the authors may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
+INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package com.jcraft.jsch;
+
+public interface KeyPairGenECDSA{
+ void init(int key_size) throws Exception;
+ byte[] getD();
+ byte[] getR();
+ byte[] getS();
+}
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenRSA.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenRSA.java
index 3a849074..0d00eef9 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenRSA.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairGenRSA.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairPKCS8.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairPKCS8.java
new file mode 100644
index 00000000..d9a3da19
--- /dev/null
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairPKCS8.java
@@ -0,0 +1,363 @@
+/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
+/*
+Copyright (c) 2013-2016 ymnk, JCraft,Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the distribution.
+
+ 3. The names of the authors may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
+INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package com.jcraft.jsch;
+
+import java.util.Vector;
+import java.math.BigInteger;
+
+public class KeyPairPKCS8 extends KeyPair {
+ private static final byte[] rsaEncryption = {
+ (byte)0x2a, (byte)0x86, (byte)0x48, (byte)0x86,
+ (byte)0xf7, (byte)0x0d, (byte)0x01, (byte)0x01, (byte)0x01
+ };
+
+ private static final byte[] dsaEncryption = {
+ (byte)0x2a, (byte)0x86, (byte)0x48, (byte)0xce,
+ (byte)0x38, (byte)0x04, (byte)0x1
+ };
+
+ private static final byte[] pbes2 = {
+ (byte)0x2a, (byte)0x86, (byte)0x48, (byte)0x86, (byte)0xf7,
+ (byte)0x0d, (byte)0x01, (byte)0x05, (byte)0x0d
+ };
+
+ private static final byte[] pbkdf2 = {
+ (byte)0x2a, (byte)0x86, (byte)0x48, (byte)0x86, (byte)0xf7,
+ (byte)0x0d, (byte)0x01, (byte)0x05, (byte)0x0c
+ };
+
+ private static final byte[] aes128cbc = {
+ (byte)0x60, (byte)0x86, (byte)0x48, (byte)0x01, (byte)0x65,
+ (byte)0x03, (byte)0x04, (byte)0x01, (byte)0x02
+ };
+
+ private static final byte[] aes192cbc = {
+ (byte)0x60, (byte)0x86, (byte)0x48, (byte)0x01, (byte)0x65,
+ (byte)0x03, (byte)0x04, (byte)0x01, (byte)0x16
+ };
+
+ private static final byte[] aes256cbc = {
+ (byte)0x60, (byte)0x86, (byte)0x48, (byte)0x01, (byte)0x65,
+ (byte)0x03, (byte)0x04, (byte)0x01, (byte)0x2a
+ };
+
+ private static final byte[] pbeWithMD5AndDESCBC = {
+ (byte)0x2a, (byte)0x86, (byte)0x48, (byte)0x86, (byte)0xf7,
+ (byte)0x0d, (byte)0x01, (byte)0x05, (byte)0x03
+ };
+
+ private KeyPair kpair = null;
+
+ public KeyPairPKCS8(JSch jsch){
+ super(jsch);
+ }
+
+ void generate(int key_size) throws JSchException{
+ }
+
+ private static final byte[] begin=Util.str2byte("-----BEGIN DSA PRIVATE KEY-----");
+ private static final byte[] end=Util.str2byte("-----END DSA PRIVATE KEY-----");
+
+ byte[] getBegin(){ return begin; }
+ byte[] getEnd(){ return end; }
+
+ byte[] getPrivateKey(){
+ return null;
+ }
+
+ boolean parse(byte[] plain){
+
+ /* from RFC5208
+ PrivateKeyInfo ::= SEQUENCE {
+ version Version,
+ privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
+ privateKey PrivateKey,
+ attributes [0] IMPLICIT Attributes OPTIONAL
+ }
+ Version ::= INTEGER
+ PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
+ PrivateKey ::= OCTET STRING
+ Attributes ::= SET OF Attribute
+ }
+ */
+
+ try{
+ Vector values = new Vector();
+
+ ASN1[] contents = null;
+ ASN1 asn1 = new ASN1(plain);
+ contents = asn1.getContents();
+
+ ASN1 privateKeyAlgorithm = contents[1];
+ ASN1 privateKey = contents[2];
+
+ contents = privateKeyAlgorithm.getContents();
+ byte[] privateKeyAlgorithmID = contents[0].getContent();
+ contents = contents[1].getContents();
+ if(contents.length>0){
+ for(int i = 0; i < contents.length; i++){
+ values.addElement(contents[i].getContent());
+ }
+ }
+
+ byte[] _data = privateKey.getContent();
+
+ KeyPair _kpair = null;
+ if(Util.array_equals(privateKeyAlgorithmID, rsaEncryption)){
+ _kpair = new KeyPairRSA(jsch);
+ _kpair.copy(this);
+ if(_kpair.parse(_data)){
+ kpair = _kpair;
+ }
+ }
+ else if(Util.array_equals(privateKeyAlgorithmID, dsaEncryption)){
+ asn1 = new ASN1(_data);
+ if(values.size() == 0) { // embedded DSA parameters format
+ /*
+ SEQUENCE
+ SEQUENCE
+ INTEGER // P_array
+ INTEGER // Q_array
+ INTEGER // G_array
+ INTEGER // prv_array
+ */
+ contents = asn1.getContents();
+ byte[] bar = contents[1].getContent();
+ contents = contents[0].getContents();
+ for(int i = 0; i < contents.length; i++){
+ values.addElement(contents[i].getContent());
+ }
+ values.addElement(bar);
+ }
+ else {
+ /*
+ INTEGER // prv_array
+ */
+ values.addElement(asn1.getContent());
+ }
+
+ byte[] P_array = (byte[])values.elementAt(0);
+ byte[] Q_array = (byte[])values.elementAt(1);
+ byte[] G_array = (byte[])values.elementAt(2);
+ byte[] prv_array = (byte[])values.elementAt(3);
+ // Y = g^X mode p
+ byte[] pub_array =
+ (new BigInteger(G_array)).
+ modPow(new BigInteger(prv_array), new BigInteger(P_array)).
+ toByteArray();
+
+ KeyPairDSA _key = new KeyPairDSA(jsch,
+ P_array, Q_array, G_array,
+ pub_array, prv_array);
+ plain = _key.getPrivateKey();
+
+ _kpair = new KeyPairDSA(jsch);
+ _kpair.copy(this);
+ if(_kpair.parse(plain)){
+ kpair = _kpair;
+ }
+ }
+ }
+ catch(ASN1Exception e){
+ return false;
+ }
+ catch(Exception e){
+ //System.err.println(e);
+ return false;
+ }
+ return kpair != null;
+ }
+
+ public byte[] getPublicKeyBlob(){
+ return kpair.getPublicKeyBlob();
+ }
+
+ byte[] getKeyTypeName(){ return kpair.getKeyTypeName();}
+ public int getKeyType(){return kpair.getKeyType();}
+
+ public int getKeySize(){
+ return kpair.getKeySize();
+ }
+
+ public byte[] getSignature(byte[] data){
+ return kpair.getSignature(data);
+ }
+
+ public Signature getVerifier(){
+ return kpair.getVerifier();
+ }
+
+ public byte[] forSSHAgent() throws JSchException {
+ return kpair.forSSHAgent();
+ }
+
+ public boolean decrypt(byte[] _passphrase){
+ if(!isEncrypted()){
+ return true;
+ }
+ if(_passphrase==null){
+ return !isEncrypted();
+ }
+
+ /*
+ SEQUENCE
+ SEQUENCE
+ OBJECT :PBES2
+ SEQUENCE
+ SEQUENCE
+ OBJECT :PBKDF2
+ SEQUENCE
+ OCTET STRING [HEX DUMP]:E4E24ADC9C00BD4D
+ INTEGER :0800
+ SEQUENCE
+ OBJECT :aes-128-cbc
+ OCTET STRING [HEX DUMP]:5B66E6B3BF03944C92317BC370CC3AD0
+ OCTET STRING [HEX DUMP]:
+
+or
+
+ SEQUENCE
+ SEQUENCE
+ OBJECT :pbeWithMD5AndDES-CBC
+ SEQUENCE
+ OCTET STRING [HEX DUMP]:DBF75ECB69E3C0FC
+ INTEGER :0800
+ OCTET STRING [HEX DUMP]
+ */
+
+ try{
+
+ ASN1[] contents = null;
+ ASN1 asn1 = new ASN1(data);
+
+ contents = asn1.getContents();
+
+ byte[] _data = contents[1].getContent();
+
+ ASN1 pbes = contents[0];
+ contents = pbes.getContents();
+ byte[] pbesid = contents[0].getContent();
+ ASN1 pbesparam = contents[1];
+
+ byte[] salt = null;
+ int iterations = 0;
+ byte[] iv = null;
+ byte[] encryptfuncid = null;
+
+ if(Util.array_equals(pbesid, pbes2)){
+ contents = pbesparam.getContents();
+ ASN1 pbkdf = contents[0];
+ ASN1 encryptfunc = contents[1];
+ contents = pbkdf.getContents();
+ byte[] pbkdfid = contents[0].getContent();
+ ASN1 pbkdffunc = contents[1];
+ contents = pbkdffunc.getContents();
+ salt = contents[0].getContent();
+ iterations =
+ Integer.parseInt((new BigInteger(contents[1].getContent())).toString());
+
+ contents = encryptfunc.getContents();
+ encryptfuncid = contents[0].getContent();
+ iv = contents[1].getContent();
+ }
+ else if(Util.array_equals(pbesid, pbeWithMD5AndDESCBC)){
+ // not supported
+ return false;
+ }
+ else {
+ return false;
+ }
+
+ Cipher cipher=getCipher(encryptfuncid);
+ if(cipher==null) return false;
+
+ byte[] key=null;
+ try{
+ Class c=Class.forName((String)jsch.getConfig("pbkdf"));
+ PBKDF tmp=(PBKDF)(c.newInstance());
+ key = tmp.getKey(_passphrase, salt, iterations, cipher.getBlockSize());
+ }
+ catch(Exception ee){
+ }
+
+ if(key==null){
+ return false;
+ }
+
+ cipher.init(Cipher.DECRYPT_MODE, key, iv);
+ Util.bzero(key);
+ byte[] plain=new byte[_data.length];
+ cipher.update(_data, 0, _data.length, plain, 0);
+ if(parse(plain)){
+ encrypted=false;
+ return true;
+ }
+ }
+ catch(ASN1Exception e){
+ // System.err.println(e);
+ }
+ catch(Exception e){
+ // System.err.println(e);
+ }
+
+ return false;
+ }
+
+ Cipher getCipher(byte[] id){
+ Cipher cipher=null;
+ String name = null;
+ try{
+ if(Util.array_equals(id, aes128cbc)){
+ name="aes128-cbc";
+ }
+ else if(Util.array_equals(id, aes192cbc)){
+ name="aes192-cbc";
+ }
+ else if(Util.array_equals(id, aes256cbc)){
+ name="aes256-cbc";
+ }
+ Class c=Class.forName((String)jsch.getConfig(name));
+ cipher=(Cipher)(c.newInstance());
+ }
+ catch(Exception e){
+ if(JSch.getLogger().isEnabled(Logger.FATAL)){
+ String message="";
+ if(name==null){
+ message="unknown oid: "+Util.toHex(id);
+ }
+ else {
+ message="function "+name+" is not supported";
+ }
+ JSch.getLogger().log(Logger.FATAL, "PKCS8: "+message);
+ }
+ }
+ return cipher;
+ }
+}
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairRSA.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairRSA.java
index 45fd70a5..2111cd3b 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairRSA.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KeyPairRSA.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KnownHosts.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KnownHosts.java
index 6fd577ea..f9d1eae4 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KnownHosts.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/KnownHosts.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -35,12 +35,6 @@ public
class KnownHosts implements HostKeyRepository{
private static final String _known_hosts="known_hosts";
- /*
- static final int SSHDSS=0;
- static final int SSHRSA=1;
- static final int UNKNOWN=2;
- */
-
private JSch jsch=null;
private String known_hosts=null;
private java.util.Vector pool=null;
@@ -50,26 +44,28 @@ class KnownHosts implements HostKeyRepository{
KnownHosts(JSch jsch){
super();
this.jsch=jsch;
+ this.hmacsha1 = getHMACSHA1();
pool=new java.util.Vector();
}
- void setKnownHosts(String foo) throws JSchException{
+ void setKnownHosts(String filename) throws JSchException{
try{
- known_hosts = foo;
- FileInputStream fis=new FileInputStream(Util.checkTilde(foo));
+ known_hosts = filename;
+ FileInputStream fis=new FileInputStream(Util.checkTilde(filename));
setKnownHosts(fis);
}
catch(FileNotFoundException e){
+ // The non-existing file should be allowed.
}
}
- void setKnownHosts(InputStream foo) throws JSchException{
+ void setKnownHosts(InputStream input) throws JSchException{
pool.removeAllElements();
StringBuffer sb=new StringBuffer();
byte i;
int j;
boolean error=false;
try{
- InputStream fis=foo;
+ InputStream fis=input;
String host;
String key=null;
int type;
@@ -158,8 +154,10 @@ loop:
if(i==0x20 || i=='\t'){ break; }
sb.append((char)i);
}
- if(sb.toString().equals("ssh-dss")){ type=HostKey.SSHDSS; }
- else if(sb.toString().equals("ssh-rsa")){ type=HostKey.SSHRSA; }
+ String tmp = sb.toString();
+ if(HostKey.name2type(tmp)!=HostKey.UNKNOWN){
+ type=HostKey.name2type(tmp);
+ }
else { j=bufl; }
if(j>=bufl){
addInvalidLine(Util.byte2str(buf, 0, bufl));
@@ -223,7 +221,6 @@ loop:
key.length()), comment);
pool.addElement(hk);
}
- fis.close();
if(error){
throw new JSchException("KnownHosts: invalid format");
}
@@ -235,6 +232,12 @@ loop:
throw new JSchException(e.toString(), (Throwable)e);
throw new JSchException(e.toString());
}
+ finally {
+ try{ input.close(); }
+ catch(IOException e){
+ throw new JSchException(e.toString(), (Throwable)e);
+ }
+ }
}
private void addInvalidLine(String line) throws JSchException {
HostKey hk = new HostKey(line, HostKey.UNKNOWN, null);
@@ -249,14 +252,19 @@ loop:
return result;
}
- int type=getType(key);
- HostKey hk;
+ HostKey hk = null;
+ try {
+ hk = new HostKey(host, HostKey.GUESS, key);
+ }
+ catch(JSchException e){ // unsupported key
+ return result;
+ }
synchronized(pool){
for(int i=0; i1){
+ HostKey[] tmp =
+ getHostKey(host.substring(1, host.indexOf("]:")), type);
+ if(tmp.length > 0){
+ HostKey[] bar = new HostKey[foo.length + tmp.length];
+ System.arraycopy(foo, 0, bar, 0, foo.length);
+ System.arraycopy(tmp, 0, bar, foo.length, tmp.length);
+ foo = bar;
+ }
}
return foo;
}
@@ -452,11 +462,7 @@ loop:
System.err.println(e);
}
}
- private int getType(byte[] key){
- if(key[8]=='d') return HostKey.SSHDSS;
- if(key[8]=='r') return HostKey.SSHRSA;
- return HostKey.UNKNOWN;
- }
+
private String deleteSubString(String hosts, String host){
int i=0;
int hostlen=host.length();
@@ -477,7 +483,7 @@ loop:
return hosts;
}
- private synchronized MAC getHMACSHA1(){
+ private MAC getHMACSHA1(){
if(hmacsha1==null){
try{
Class c=Class.forName(jsch.getConfig("hmac-sha1"));
@@ -503,7 +509,6 @@ loop:
byte[] salt=null;
byte[] hash=null;
-
HashedHostKey(String host, byte[] key) throws JSchException {
this(host, GUESS, key);
}
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/LocalIdentityRepository.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/LocalIdentityRepository.java
index 3b83f2ef..01a37a4d 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/LocalIdentityRepository.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/LocalIdentityRepository.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2012-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -50,6 +50,7 @@ class LocalIdentityRepository implements IdentityRepository {
}
public synchronized Vector getIdentities() {
+ removeDupulicates();
Vector v = new Vector();
for(int i=0; i*/ kv = new Vector();
@@ -200,12 +198,13 @@ public class OpenSSHConfig implements ConfigRepository {
if(keymap.get(key)!=null) {
key = (String)keymap.get(key);
}
+ key = key.toUpperCase();
String value = null;
for(int i = 0; i < _configs.size(); i++) {
Vector v = (Vector)_configs.elementAt(i);
for(int j = 0; j < v.size(); j++) {
String[] kv = (String[])v.elementAt(j);
- if(kv[0].equals(key)) {
+ if(kv[0].toUpperCase().equals(key)) {
value = kv[1];
break;
}
@@ -217,12 +216,13 @@ public class OpenSSHConfig implements ConfigRepository {
}
private String[] multiFind(String key) {
+ key = key.toUpperCase();
Vector value = new Vector();
for(int i = 0; i < _configs.size(); i++) {
Vector v = (Vector)_configs.elementAt(i);
for(int j = 0; j < v.size(); j++) {
String[] kv = (String[])v.elementAt(j);
- if(kv[0].equals(key)) {
+ if(kv[0].toUpperCase().equals(key)) {
String foo = kv[1];
if(foo != null) {
value.remove(foo);
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/PBKDF.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/PBKDF.java
new file mode 100644
index 00000000..6910b568
--- /dev/null
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/PBKDF.java
@@ -0,0 +1,34 @@
+/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
+/*
+Copyright (c) 2013-2016 ymnk, JCraft,Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the distribution.
+
+ 3. The names of the authors may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
+INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package com.jcraft.jsch;
+
+public interface PBKDF {
+ byte[] getKey(byte[] pass, byte[] salt, int iteration, int size);
+}
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Packet.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Packet.java
index 9c441577..3b8c50de 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Packet.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Packet.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/PortWatcher.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/PortWatcher.java
index 75ec2688..5f403fde 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/PortWatcher.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/PortWatcher.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Proxy.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Proxy.java
index 7d05caa8..39b4bcb7 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Proxy.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Proxy.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxyHTTP.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxyHTTP.java
index df23114a..432e91ee 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxyHTTP.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxyHTTP.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxySOCKS4.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxySOCKS4.java
index cb506165..f0b059fa 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxySOCKS4.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxySOCKS4.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2006-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2006-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxySOCKS5.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxySOCKS5.java
index 7960135a..e37581b2 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxySOCKS5.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ProxySOCKS5.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Random.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Random.java
index 879b7770..9d08767f 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Random.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Random.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Request.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Request.java
index 94f9b013..a158b769 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Request.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Request.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestAgentForwarding.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestAgentForwarding.java
index 66d328cd..0c6edc7f 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestAgentForwarding.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestAgentForwarding.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2006-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2006-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestEnv.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestEnv.java
index cccda4df..6925a04f 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestEnv.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestEnv.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestExec.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestExec.java
index 318d99ad..3787edbe 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestExec.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestExec.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestPtyReq.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestPtyReq.java
index 86bf4f13..b9a2622e 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestPtyReq.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestPtyReq.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSftp.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSftp.java
index 483c296b..10eab938 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSftp.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSftp.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestShell.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestShell.java
index e037ba9e..125b7fac 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestShell.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestShell.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSignal.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSignal.java
index a6926177..84efa8a0 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSignal.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSignal.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSubsystem.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSubsystem.java
index b6fee4f4..9926bbf8 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSubsystem.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestSubsystem.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2005-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2005-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestWindowChange.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestWindowChange.java
index 43600ac4..131c2bfd 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestWindowChange.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestWindowChange.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestX11.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestX11.java
index 3bdaca9f..03ea7ede 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestX11.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/RequestX11.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ServerSocketFactory.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ServerSocketFactory.java
index 682b4c4f..4aaef2d8 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ServerSocketFactory.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/ServerSocketFactory.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Session.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Session.java
index 8807f5f6..a5f751dc 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Session.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Session.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -123,7 +123,7 @@ public class Session implements Runnable{
SocketFactory socket_factory=null;
static final int buffer_margin = 32 + // maximum padding length
- 20 + // maximum mac length
+ 64 + // maximum mac length
32; // margin for deflater; deflater may inflate data
private java.util.Hashtable config=null;
@@ -339,9 +339,16 @@ public class Session implements Runnable{
}
}
- try{ checkHost(host, port, kex); }
+ try{
+ long tmp=System.currentTimeMillis();
+ in_prompt = true;
+ checkHost(host, port, kex);
+ in_prompt = false;
+ kex_start_time+=(System.currentTimeMillis()-tmp);
+ }
catch(JSchException ee){
in_kex=false;
+ in_prompt = false;
throw ee;
}
@@ -537,19 +544,20 @@ public class Session implements Runnable{
}
catch(Exception e) {
in_kex=false;
- if(isConnected){
- try{
- packet.reset();
- buf.putByte((byte)SSH_MSG_DISCONNECT);
- buf.putInt(3);
- buf.putString(Util.str2byte(e.toString()));
- buf.putString(Util.str2byte("en"));
- write(packet);
- disconnect();
- }
- catch(Exception ee){
- }
+ try{
+ if(isConnected){
+ String message = e.toString();
+ packet.reset();
+ buf.checkFreeSize(1+4*3+message.length()+2+buffer_margin);
+ buf.putByte((byte)SSH_MSG_DISCONNECT);
+ buf.putInt(3);
+ buf.putString(Util.str2byte(message));
+ buf.putString(Util.str2byte("en"));
+ write(packet);
+ }
}
+ catch(Exception ee){}
+ try{ disconnect(); } catch(Exception ee){ }
isConnected=false;
//e.printStackTrace();
if(e instanceof RuntimeException) throw (RuntimeException)e;
@@ -601,7 +609,8 @@ public class Session implements Runnable{
return kex;
}
- private boolean in_kex=false;
+ private volatile boolean in_kex=false;
+ private volatile boolean in_prompt=false;
public void rekey() throws Exception {
send_kexinit();
}
@@ -630,6 +639,16 @@ public class Session implements Runnable{
}
}
+ String server_host_key = getConfig("server_host_key");
+ String[] not_available_shks =
+ checkSignatures(getConfig("CheckSignatures"));
+ if(not_available_shks!=null && not_available_shks.length>0){
+ server_host_key=Util.diffString(server_host_key, not_available_shks);
+ if(server_host_key==null){
+ throw new JSchException("There are not any available sig algorithm.");
+ }
+ }
+
in_kex=true;
kex_start_time=System.currentTimeMillis();
@@ -653,7 +672,7 @@ public class Session implements Runnable{
random.fill(buf.buffer, buf.index, 16); buf.skip(16);
}
buf.putString(Util.str2byte(kex));
- buf.putString(Util.str2byte(getConfig("server_host_key")));
+ buf.putString(Util.str2byte(server_host_key));
buf.putString(Util.str2byte(cipherc2s));
buf.putString(Util.str2byte(ciphers2c));
buf.putString(Util.str2byte(getConfig("mac.c2s")));
@@ -738,7 +757,7 @@ public class Session implements Runnable{
"IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\n"+
"Someone could be eavesdropping on you right now (man-in-the-middle attack)!\n"+
"It is also possible that the "+key_type+" host key has just been changed.\n"+
-"The fingerprint for the "+key_type+" key sent by the remote host is\n"+
+"The fingerprint for the "+key_type+" key sent by the remote host "+chost+" is\n"+
key_fprint+".\n"+
"Please contact your system administrator.\n"+
"Add correct host key in "+file+" to get rid of this message.";
@@ -758,7 +777,7 @@ key_fprint+".\n"+
synchronized(hkr){
hkr.remove(chost,
- (key_type.equals("DSA") ? "ssh-dss" : "ssh-rsa"),
+ kex.getKeyAlgorithName(),
null);
insert=true;
}
@@ -796,8 +815,7 @@ key_type+" key fingerprint is "+key_fprint+".\n"+
if(i==HostKeyRepository.OK){
HostKey[] keys =
- hkr.getHostKey(chost,
- (key_type.equals("DSA") ? "ssh-dss" : "ssh-rsa"));
+ hkr.getHostKey(chost, kex.getKeyAlgorithName());
String _key= Util.byte2str(Util.toBase64(K_S, 0, K_S.length));
for(int j=0; j< keys.length; j++){
if(keys[i].getKey().equals(_key) &&
@@ -820,7 +838,7 @@ key_type+" key fingerprint is "+key_fprint+".\n"+
if(i==HostKeyRepository.OK &&
JSch.getLogger().isEnabled(Logger.INFO)){
JSch.getLogger().log(Logger.INFO,
- "Host '"+host+"' is known and mathces the "+key_type+" host key");
+ "Host '"+host+"' is known and matches the "+key_type+" host key");
}
if(insert &&
@@ -1019,7 +1037,7 @@ key_type+" key fingerprint is "+key_fprint+".\n"+
if(c==null){
}
else{
- c.addRemoteWindowSize(buf.getInt());
+ c.addRemoteWindowSize(buf.getUInt());
}
}
else if(type==UserAuth.SSH_MSG_USERAUTH_SUCCESS){
@@ -1237,7 +1255,7 @@ key_type+" key fingerprint is "+key_fprint+".\n"+
while(true){
if(in_kex){
if(t>0L && (System.currentTimeMillis()-kex_start_time)>t){
- throw new JSchException("timeout in wating for rekeying process.");
+ throw new JSchException("timeout in waiting for rekeying process.");
}
try{Thread.sleep(10);}
catch(java.lang.InterruptedException e){};
@@ -1257,6 +1275,10 @@ key_type+" key fingerprint is "+key_fprint+".\n"+
}
}
+ if(in_kex){
+ continue;
+ }
+
if(c.rwsize>=length){
c.rwsize-=length;
break;
@@ -1325,8 +1347,11 @@ key_type+" key fingerprint is "+key_fprint+".\n"+
// System.err.println("in_kex="+in_kex+" "+(packet.buffer.getCommand()));
long t = getTimeout();
while(in_kex){
- if(t>0L && (System.currentTimeMillis()-kex_start_time)>t){
- throw new JSchException("timeout in wating for rekeying process.");
+ if(t>0L &&
+ (System.currentTimeMillis()-kex_start_time)>t &&
+ !in_prompt
+ ){
+ throw new JSchException("timeout in waiting for rekeying process.");
}
byte command=packet.buffer.getCommand();
//System.err.println("command: "+command);
@@ -1494,7 +1519,7 @@ break;
if(channel==null){
break;
}
- channel.addRemoteWindowSize(buf.getInt());
+ channel.addRemoteWindowSize(buf.getUInt());
break;
case SSH_MSG_CHANNEL_EOF:
@@ -1534,33 +1559,30 @@ break;
buf.getShort();
i=buf.getInt();
channel=Channel.getChannel(i, this);
- if(channel==null){
- //break;
- }
int r=buf.getInt();
long rws=buf.getUInt();
int rps=buf.getInt();
-
- channel.setRemoteWindowSize(rws);
- channel.setRemotePacketSize(rps);
- channel.open_confirmation=true;
- channel.setRecipient(r);
+ if(channel!=null){
+ channel.setRemoteWindowSize(rws);
+ channel.setRemotePacketSize(rps);
+ channel.open_confirmation=true;
+ channel.setRecipient(r);
+ }
break;
case SSH_MSG_CHANNEL_OPEN_FAILURE:
buf.getInt();
buf.getShort();
i=buf.getInt();
channel=Channel.getChannel(i, this);
- if(channel==null){
- //break;
- }
- int reason_code=buf.getInt();
- //foo=buf.getString(); // additional textual information
- //foo=buf.getString(); // language tag
- channel.setExitStatus(reason_code);
- channel.close=true;
- channel.eof_remote=true;
- channel.setRecipient(0);
+ if(channel!=null){
+ int reason_code=buf.getInt();
+ //foo=buf.getString(); // additional textual information
+ //foo=buf.getString(); // language tag
+ channel.setExitStatus(reason_code);
+ channel.close=true;
+ channel.eof_remote=true;
+ channel.setRecipient(0);
+ }
break;
case SSH_MSG_CHANNEL_REQUEST:
buf.getInt();
@@ -1616,8 +1638,8 @@ break;
tmp.setDaemon(daemon_thread);
}
tmp.start();
- break;
}
+ break;
case SSH_MSG_CHANNEL_SUCCESS:
buf.getInt();
buf.getShort();
@@ -2440,11 +2462,17 @@ break;
"CheckCiphers: "+ciphers);
}
+ String cipherc2s=getConfig("cipher.c2s");
+ String ciphers2c=getConfig("cipher.s2c");
+
Vector result=new Vector();
String[] _ciphers=Util.split(ciphers, ",");
for(int i=0; i<_ciphers.length; i++){
- if(!checkCipher(getConfig(_ciphers[i]))){
- result.addElement(_ciphers[i]);
+ String cipher=_ciphers[i];
+ if(ciphers2c.indexOf(cipher) == -1 && cipherc2s.indexOf(cipher) == -1)
+ continue;
+ if(!checkCipher(getConfig(cipher))){
+ result.addElement(cipher);
}
}
if(result.size()==0)
@@ -2517,6 +2545,40 @@ break;
catch(Exception e){ return false; }
}
+ private String[] checkSignatures(String sigs){
+ if(sigs==null || sigs.length()==0)
+ return null;
+
+ if(JSch.getLogger().isEnabled(Logger.INFO)){
+ JSch.getLogger().log(Logger.INFO,
+ "CheckSignatures: "+sigs);
+ }
+
+ java.util.Vector result=new java.util.Vector();
+ String[] _sigs=Util.split(sigs, ",");
+ for(int i=0; i<_sigs.length; i++){
+ try{
+ Class c=Class.forName((String)jsch.getConfig(_sigs[i]));
+ final Signature sig=(Signature)(c.newInstance());
+ sig.init();
+ }
+ catch(Exception e){
+ result.addElement(_sigs[i]);
+ }
+ }
+ if(result.size()==0)
+ return null;
+ String[] foo=new String[result.size()];
+ System.arraycopy(result.toArray(), 0, foo, 0, result.size());
+ if(JSch.getLogger().isEnabled(Logger.INFO)){
+ for(int i=0; inull.
@@ -2542,8 +2604,7 @@ break;
}
/**
- * Sets the hostkeyRepository, which will be referred
- * in the host key checking.
+ * Sets the hostkeyRepository, which will be referred in checking host keys.
*
* @param hostkeyRepository
* @see #getHostKeyRepository()
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpATTRS.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpATTRS.java
index b3a86ba0..96165d50 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpATTRS.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpATTRS.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -108,12 +108,12 @@ public class SftpATTRS {
}
public String getAtimeString(){
- SimpleDateFormat locale=new SimpleDateFormat();
- return (locale.format(new Date(atime)));
+ Date date= new Date(((long)atime)*1000L);
+ return (date.toString());
}
public String getMtimeString(){
- Date date= new Date(((long)mtime)*1000);
+ Date date= new Date(((long)mtime)*1000L);
return (date.toString());
}
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpException.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpException.java
index 6a6c1ff8..6f644750 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpException.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpException.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpProgressMonitor.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpProgressMonitor.java
index bd91688d..0fd124ad 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpProgressMonitor.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpProgressMonitor.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpStatVFS.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpStatVFS.java
index 4433bf6a..04dcd402 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpStatVFS.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SftpStatVFS.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -35,20 +35,8 @@ import java.util.Date;
public class SftpStatVFS {
/*
- from "man statvfs"
- struct statvfs {
- unsigned long f_bsize; // file system block size
- unsigned long f_frsize; // fragment size
- fsblkcnt_t f_blocks; // size of fs in f_frsize units
- fsblkcnt_t f_bfree; // # free blocks
- fsblkcnt_t f_bavail; // # free blocks for non-root
- fsfilcnt_t f_files; // # inodes
- fsfilcnt_t f_ffree; // # free inodes
- fsfilcnt_t f_favail; // # free inodes for non-root
- unsigned long f_fsid; // file system ID
- unsigned long f_flag; // mount flags
- unsigned long f_namemax; // maximum filename length
- };
+ It seems data is serializsed according to sys/statvfs.h; for example,
+ http://pubs.opengroup.org/onlinepubs/009604499/basedefs/sys/statvfs.h.html
*/
private long bsize;
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Signature.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Signature.java
index 9b7d85d8..711f01d7 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Signature.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Signature.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2012-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2012-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureDSA.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureDSA.java
index 5b253fdc..2cbe0acf 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureDSA.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureDSA.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureECDSA.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureECDSA.java
new file mode 100644
index 00000000..7e14d5d5
--- /dev/null
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureECDSA.java
@@ -0,0 +1,35 @@
+/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
+/*
+Copyright (c) 2015-2016 ymnk, JCraft,Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the distribution.
+
+ 3. The names of the authors may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
+INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package com.jcraft.jsch;
+
+public interface SignatureECDSA extends Signature {
+ void setPubKey(byte[] r, byte[] s) throws Exception;
+ void setPrvKey(byte[] s) throws Exception;
+}
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureRSA.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureRSA.java
index 715bc575..e51d8a6d 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureRSA.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SignatureRSA.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SocketFactory.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SocketFactory.java
index aaac0dce..d0519851 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SocketFactory.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/SocketFactory.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UIKeyboardInteractive.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UIKeyboardInteractive.java
index 23af9c31..8ada1a9a 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UIKeyboardInteractive.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UIKeyboardInteractive.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuth.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuth.java
index 085a9508..26836317 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuth.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuth.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthGSSAPIWithMIC.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthGSSAPIWithMIC.java
index 15856cbc..4325955b 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthGSSAPIWithMIC.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthGSSAPIWithMIC.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2006-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2006-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthKeyboardInteractive.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthKeyboardInteractive.java
index 1274d78c..8331b17e 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthKeyboardInteractive.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthKeyboardInteractive.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthNone.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthNone.java
index b3b0b077..a2bf63af 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthNone.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthNone.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthPassword.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthPassword.java
index 9b5837f5..7bc1a283 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthPassword.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthPassword.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthPublicKey.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthPublicKey.java
index a4d38be5..40c1fa0a 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthPublicKey.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserAuthPublicKey.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -66,7 +66,8 @@ class UserAuthPublicKey extends UserAuth{
// string service name ("ssh-connection")
// string "publickey"
// boolen FALSE
- // string plaintext password (ISO-10646 UTF-8)
+ // string public key algorithm name
+ // string public key blob
packet.reset();
buf.putByte((byte)SSH_MSG_USERAUTH_REQUEST);
buf.putString(_username);
@@ -154,13 +155,15 @@ class UserAuthPublicKey extends UserAuth{
if(pubkeyblob==null) continue;
- // send
- // byte SSH_MSG_USERAUTH_REQUEST(50)
- // string user name
- // string service name ("ssh-connection")
- // string "publickey"
- // boolen TRUE
- // string plaintext password (ISO-10646 UTF-8)
+ // send
+ // byte SSH_MSG_USERAUTH_REQUEST(50)
+ // string user name
+ // string service name ("ssh-connection")
+ // string "publickey"
+ // boolen TRUE
+ // string public key algorithm name
+ // string public key blob
+ // string signature
packet.reset();
buf.putByte((byte)SSH_MSG_USERAUTH_REQUEST);
buf.putString(_username);
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserInfo.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserInfo.java
index 22552ede..e1b2a32a 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserInfo.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/UserInfo.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Util.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Util.java
index 6a5354b0..f990b5de 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Util.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/Util.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2002-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2002-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -43,20 +43,25 @@ class Util{
}
return 0;
}
- static byte[] fromBase64(byte[] buf, int start, int length){
- byte[] foo=new byte[length];
- int j=0;
- for (int i=start;i>>4));
- if(buf[i+2]==(byte)'='){ j++; break;}
- foo[j+1]=(byte)(((val(buf[i+1])&0x0f)<<4)|((val(buf[i+2])&0x3c)>>>2));
- if(buf[i+3]==(byte)'='){ j+=2; break;}
- foo[j+2]=(byte)(((val(buf[i+2])&0x03)<<6)|(val(buf[i+3])&0x3f));
- j+=3;
+ static byte[] fromBase64(byte[] buf, int start, int length) throws JSchException {
+ try {
+ byte[] foo=new byte[length];
+ int j=0;
+ for (int i=start;i>>4));
+ if(buf[i+2]==(byte)'='){ j++; break;}
+ foo[j+1]=(byte)(((val(buf[i+1])&0x0f)<<4)|((val(buf[i+2])&0x3c)>>>2));
+ if(buf[i+3]==(byte)'='){ j+=2; break;}
+ foo[j+2]=(byte)(((val(buf[i+2])&0x03)<<6)|(val(buf[i+3])&0x3f));
+ j+=3;
+ }
+ byte[] bar=new byte[j];
+ System.arraycopy(foo, 0, bar, 0, j);
+ return bar;
+ }
+ catch(ArrayIndexOutOfBoundsException e) {
+ throw new JSchException("fromBase64: invalid base64 data", e);
}
- byte[] bar=new byte[j];
- System.arraycopy(foo, 0, bar, 0, j);
- return bar;
}
static byte[] toBase64(byte[] buf, int start, int length){
@@ -386,7 +391,7 @@ class Util{
}
tmp.interrupt();
tmp=null;
- throw new JSchException(message);
+ throw new JSchException(message, ee[0]);
}
return socket;
}
@@ -423,6 +428,17 @@ class Util{
return byte2str(str, s, l, "UTF-8");
}
+ static String toHex(byte[] str){
+ StringBuffer sb = new StringBuffer();
+ for(int i = 0; i=64) name="secp521r1";
+ else if(r.length>=48) name="secp384r1";
+
+ AlgorithmParameters param = AlgorithmParameters.getInstance("EC");
+ param.init(new ECGenParameterSpec(name));
+ ECParameterSpec ecparam =
+ (ECParameterSpec)param.getParameterSpec(ECParameterSpec.class);
+ ECPoint w = new ECPoint(new BigInteger(1, r), new BigInteger(1, s));
+ PublicKey pubKey =
+ keyFactory.generatePublic(new ECPublicKeySpec(w, ecparam));
+ signature.initVerify(pubKey);
+ }
+
+ public void setPrvKey(byte[] d) throws Exception{
+
+ // d must be unsigned value.
+ d=insert0(d);
+
+ String name="secp256r1";
+ if(d.length>=64) name="secp521r1";
+ else if(d.length>=48) name="secp384r1";
+
+ AlgorithmParameters param = AlgorithmParameters.getInstance("EC");
+ param.init(new ECGenParameterSpec(name));
+ ECParameterSpec ecparam =
+ (ECParameterSpec)param.getParameterSpec(ECParameterSpec.class);
+ BigInteger _d = new BigInteger(1, d);
+ PrivateKey prvKey =
+ keyFactory.generatePrivate(new ECPrivateKeySpec(_d, ecparam));
+ signature.initSign(prvKey);
+ }
+ public byte[] sign() throws Exception{
+ byte[] sig=signature.sign();
+
+ // It seems that the output from SunEC is in ASN.1,
+ // so we have to convert it.
+ if(sig[0]==0x30 && // in ASN.1
+ ((sig[1]+2 == sig.length) ||
+ ((sig[1]&0x80)!=0 && (sig[2]&0xff)+3==sig.length))){// 2bytes for len
+
+ int index=3;
+ if((sig[1]&0x80)!=0 && (sig[2]&0xff)+3==sig.length)
+ index=4;
+
+ byte[] r = new byte[sig[index]];
+ byte[] s = new byte[sig[index+2+sig[index]]];
+ System.arraycopy(sig, index+1, r, 0, r.length);
+ System.arraycopy(sig, index+3+sig[index], s, 0, s.length);
+
+ r = chop0(r);
+ s = chop0(s);
+
+ Buffer buf = new Buffer();
+ buf.putMPInt(r);
+ buf.putMPInt(s);
+
+ sig=new byte[buf.getLength()];
+ buf.setOffSet(0);
+ buf.getByte(sig);
+ }
+
+ return sig;
+ }
+ public void update(byte[] foo) throws Exception{
+ signature.update(foo);
+ }
+ public boolean verify(byte[] sig) throws Exception{
+
+ // It seems that SunEC expects ASN.1 data,
+ // so we have to convert it.
+ if(!(sig[0]==0x30 && // not in ASN.1
+ ((sig[1]+2 == sig.length) ||
+ ((sig[1]&0x80)!=0 && (sig[2]&0xff)+3==sig.length)))) {
+ Buffer b = new Buffer(sig);
+
+ b.getString(); // ecdsa-sha2-nistp256
+ b.getInt();
+
+ byte[] r = b.getMPInt();
+ byte[] s = b.getMPInt();
+
+ r=insert0(r);
+ s=insert0(s);
+
+ byte[] asn1 = null;
+ if(r.length<64){
+ asn1 = new byte[6+r.length+s.length];
+ asn1[0] = (byte)0x30;
+ asn1[1] = (byte)(4+r.length+s.length);
+ asn1[2] = (byte)0x02;
+ asn1[3] = (byte)r.length;
+ System.arraycopy(r, 0, asn1, 4, r.length);
+ asn1[r.length+4] = (byte)0x02;
+ asn1[r.length+5] = (byte)s.length;
+ System.arraycopy(s, 0, asn1, (6+r.length), s.length);
+ }
+ else {
+ asn1 = new byte[6+r.length+s.length+1];
+ asn1[0] = (byte)0x30;
+ asn1[1] = (byte)0x81;
+ asn1[2] = (byte)(4+r.length+s.length);
+ asn1[3] = (byte)0x02;
+ asn1[4] = (byte)r.length;
+ System.arraycopy(r, 0, asn1, 5, r.length);
+ asn1[r.length+5] = (byte)0x02;
+ asn1[r.length+6] = (byte)s.length;
+ System.arraycopy(s, 0, asn1, (7+r.length), s.length);
+ }
+ sig=asn1;
+ }
+
+ return signature.verify(sig);
+ }
+
+ private byte[] insert0(byte[] buf){
+ if ((buf[0] & 0x80) == 0) return buf;
+ byte[] tmp = new byte[buf.length+1];
+ System.arraycopy(buf, 0, tmp, 1, buf.length);
+ bzero(buf);
+ return tmp;
+ }
+ private byte[] chop0(byte[] buf){
+ if(buf[0]!=0) return buf;
+ byte[] tmp = new byte[buf.length-1];
+ System.arraycopy(buf, 1, tmp, 0, tmp.length);
+ bzero(buf);
+ return tmp;
+ }
+
+ private void bzero(byte[] buf){
+ for(int i = 0; ibsize){
byte[] tmp=new byte[bsize];
System.arraycopy(key, 0, tmp, 0, bsize);
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACMD5.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACMD5.java
index 90960113..c4fcb48f 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACMD5.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACMD5.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2006-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2006-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACMD596.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACMD596.java
index 95c6f60d..f806962e 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACMD596.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACMD596.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2006-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2006-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACSHA1.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACSHA1.java
index ea9eccf1..869c13c4 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACSHA1.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACSHA1.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2006-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2006-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACSHA196.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACSHA196.java
index 86a81b5b..8f8e3276 100644
--- a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACSHA196.java
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jcraft/HMACSHA196.java
@@ -1,6 +1,6 @@
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/*
-Copyright (c) 2006-2012 ymnk, JCraft,Inc. All rights reserved.
+Copyright (c) 2006-2016 ymnk, JCraft,Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jgss/GSSContextKrb5.java b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jgss/GSSContextKrb5.java
new file mode 100644
index 00000000..cf3ca48f
--- /dev/null
+++ b/src/java/JavaFileStorage/app/src/main/java/com/jcraft/jsch/jgss/GSSContextKrb5.java
@@ -0,0 +1,177 @@
+/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
+/*
+Copyright (c) 2006-2016 ymnk, JCraft,Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the distribution.
+
+ 3. The names of the authors may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
+INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package com.jcraft.jsch.jgss;
+
+import com.jcraft.jsch.JSchException;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import org.ietf.jgss.GSSContext;
+import org.ietf.jgss.GSSCredential;
+import org.ietf.jgss.GSSException;
+import org.ietf.jgss.GSSManager;
+import org.ietf.jgss.GSSName;
+import org.ietf.jgss.MessageProp;
+import org.ietf.jgss.Oid;
+
+public class GSSContextKrb5 implements com.jcraft.jsch.GSSContext{
+
+ private static final String pUseSubjectCredsOnly =
+ "javax.security.auth.useSubjectCredsOnly";
+ private static String useSubjectCredsOnly =
+ getSystemProperty(pUseSubjectCredsOnly);
+
+ private GSSContext context=null;
+ public void create(String user, String host) throws JSchException{
+ try{
+ // RFC 1964
+ Oid krb5=new Oid("1.2.840.113554.1.2.2");
+ // Kerberos Principal Name Form
+ Oid principalName=new Oid("1.2.840.113554.1.2.2.1");
+
+ GSSManager mgr=GSSManager.getInstance();
+
+ GSSCredential crd=null;
+ /*
+ try{
+ GSSName _user=mgr.createName(user, principalName);
+ crd=mgr.createCredential(_user,
+ GSSCredential.DEFAULT_LIFETIME,
+ krb5,
+ GSSCredential.INITIATE_ONLY);
+ }
+ catch(GSSException crdex){
+ }
+ */
+
+ String cname=host;
+ try{
+ cname=InetAddress.getByName(cname).getCanonicalHostName();
+ }
+ catch(UnknownHostException e){
+ }
+ GSSName _host=mgr.createName("host/"+cname, principalName);
+
+ context=mgr.createContext(_host,
+ krb5,
+ crd,
+ GSSContext.DEFAULT_LIFETIME);
+
+ // RFC4462 3.4. GSS-API Session
+ //
+ // When calling GSS_Init_sec_context(), the client MUST set
+ // integ_req_flag to "true" to request that per-message integrity
+ // protection be supported for this context. In addition,
+ // deleg_req_flag MAY be set to "true" to request access delegation, if
+ // requested by the user.
+ //
+ // Since the user authentication process by its nature authenticates
+ // only the client, the setting of mutual_req_flag is not needed for
+ // this process. This flag SHOULD be set to "false".
+
+ // TODO: OpenSSH's sshd does accepts 'false' for mutual_req_flag
+ //context.requestMutualAuth(false);
+ context.requestMutualAuth(true);
+ context.requestConf(true);
+ context.requestInteg(true); // for MIC
+ context.requestCredDeleg(true);
+ context.requestAnonymity(false);
+
+ return;
+ }
+ catch(GSSException ex){
+ throw new JSchException(ex.toString());
+ }
+ }
+
+ public boolean isEstablished(){
+ return context.isEstablished();
+ }
+
+ public byte[] init(byte[] token, int s, int l) throws JSchException {
+ try{
+ // Without setting "javax.security.auth.useSubjectCredsOnly" to "false",
+ // Sun's JVM for Un*x will show messages to stderr in
+ // processing context.initSecContext().
+ // This hack is not thread safe ;-<.
+ // If that property is explicitly given as "true" or "false",
+ // this hack must not be invoked.
+ if(useSubjectCredsOnly==null){
+ setSystemProperty(pUseSubjectCredsOnly, "false");
+ }
+ return context.initSecContext(token, 0, l);
+ }
+ catch(GSSException ex){
+ throw new JSchException(ex.toString());
+ }
+ catch(java.lang.SecurityException ex){
+ throw new JSchException(ex.toString());
+ }
+ finally{
+ if(useSubjectCredsOnly==null){
+ // By the default, it must be "true".
+ setSystemProperty(pUseSubjectCredsOnly, "true");
+ }
+ }
+ }
+
+ public byte[] getMIC(byte[] message, int s, int l){
+ try{
+ MessageProp prop = new MessageProp(0, true);
+ return context.getMIC(message, s, l, prop);
+ }
+ catch(GSSException ex){
+ return null;
+ }
+ }
+
+ public void dispose(){
+ try{
+ context.dispose();
+ }
+ catch(GSSException ex){
+ }
+ }
+
+ private static String getSystemProperty(String key){
+ try{ return System.getProperty(key); }
+ catch(Exception e){
+ // We are not allowed to get the System properties.
+ return null;
+ }
+ }
+
+ private static void setSystemProperty(String key, String value){
+ try{ System.setProperty(key, value); }
+ catch(Exception e){
+ // We are not allowed to set the System properties.
+ }
+ }
+}
diff --git a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/webdav/ConnectionInfo.java b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/ConnectionInfo.java
similarity index 76%
rename from src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/webdav/ConnectionInfo.java
rename to src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/ConnectionInfo.java
index b682a104..a00ea62e 100644
--- a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/webdav/ConnectionInfo.java
+++ b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/ConnectionInfo.java
@@ -1,4 +1,4 @@
-package keepass2android.javafilestorage.webdav;
+package keepass2android.javafilestorage;
/**
* Created by Philipp on 22.11.2016.
diff --git a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/GoogleDriveFileStorage.java b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/GoogleDriveFileStorage.java
index bb95c329..8395d7f6 100644
--- a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/GoogleDriveFileStorage.java
+++ b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/GoogleDriveFileStorage.java
@@ -788,7 +788,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
else
{
logDebug("denied");
- finishWithError(setupAct, new Exception("You must grant the requested permissions to continue."));
+ finishWithError(setupAct, new Exception("Please grant the requested permissions. Access to your accounts is required to let you choose from the available Google accounts on this device."));
}
}
@@ -847,13 +847,21 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase {
if (Build.VERSION.SDK_INT >= 23)
{
Activity act = (Activity)activity;
- int permissionRes = act.checkSelfPermission(Manifest.permission.GET_ACCOUNTS);
- logDebug("permissionRes="+permissionRes);
- if (permissionRes == PackageManager.PERMISSION_DENIED)
+
+ String[] permissions = new String[] {Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
+ boolean allOk = true;
+ for (String s: permissions)
+ {
+ int permissionRes = act.checkSelfPermission(Manifest.permission.GET_ACCOUNTS);
+ logDebug("permissionRes="+permissionRes);
+ allOk = false;
+ }
+
+ if (!allOk)
{
logDebug("requestPermissions");
mRequiresRuntimePermissions = true;
- act.requestPermissions(new String[] {Manifest.permission.GET_ACCOUNTS}, 0);
+ act.requestPermissions(permissions, 0);
}
}
diff --git a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/SftpStorage.java b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/SftpStorage.java
index 142db95e..30285b4e 100644
--- a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/SftpStorage.java
+++ b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/SftpStorage.java
@@ -26,14 +26,14 @@ public class SftpStorage extends JavaFileStorageBase {
public static final int DEFAULT_SFTP_PORT = 22;
JSch jsch;
-
- class ConnectionInfo
+
+ public class ConnectionInfo
{
- String host;
- String username;
- String password;
- String localPath;
- int port;
+ public String host;
+ public String username;
+ public String password;
+ public String localPath;
+ public int port;
}
public SftpStorage() {
@@ -333,7 +333,7 @@ public class SftpStorage extends JavaFileStorageBase {
}
- private ConnectionInfo splitStringToConnectionInfo(String filename)
+ public ConnectionInfo splitStringToConnectionInfo(String filename)
throws UnsupportedEncodingException {
ConnectionInfo ci = new ConnectionInfo();
ci.host = extractUserPwdHost(filename);
@@ -348,6 +348,7 @@ public class SftpStorage extends JavaFileStorageBase {
ci.port = Integer.parseInt(ci.host.substring(portSeparatorIndex+1));
ci.host = ci.host.substring(0, portSeparatorIndex);
}
+ ci.localPath = extractSessionPath(filename);
return ci;
}
@@ -384,7 +385,7 @@ public class SftpStorage extends JavaFileStorageBase {
try
{
ConnectionInfo ci = splitStringToConnectionInfo(path);
- return getProtocolPrefix()+ci.username+"@"+ci.host+extractSessionPath(path);
+ return getProtocolPrefix()+ci.username+"@"+ci.host+ci.localPath;
}
catch (Exception e)
{
@@ -414,7 +415,7 @@ public class SftpStorage extends JavaFileStorageBase {
}
-
+
public String buildFullPath( String host, int port, String localPath, String username, String password) throws UnsupportedEncodingException
{
if (port != DEFAULT_SFTP_PORT)
@@ -423,6 +424,7 @@ public class SftpStorage extends JavaFileStorageBase {
}
+
@Override
public void prepareFileUsage(Context appContext, String path) {
//nothing to do
diff --git a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/WebDavStorage.java b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/WebDavStorage.java
index 026ab698..a9b45528 100644
--- a/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/WebDavStorage.java
+++ b/src/java/JavaFileStorage/app/src/main/java/keepass2android/javafilestorage/WebDavStorage.java
@@ -36,7 +36,7 @@ import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
-import keepass2android.javafilestorage.webdav.ConnectionInfo;
+import keepass2android.javafilestorage.ConnectionInfo;
import keepass2android.javafilestorage.webdav.DecoratedHostnameVerifier;
import keepass2android.javafilestorage.webdav.DecoratedTrustManager;
import keepass2android.javafilestorage.webdav.PropfindXmlParser;
@@ -64,7 +64,7 @@ public class WebDavStorage extends JavaFileStorageBase {
return scheme + "://" + encode(username)+":"+encode(password)+"@"+url;
}
- private ConnectionInfo splitStringToConnectionInfo(String filename)
+ public ConnectionInfo splitStringToConnectionInfo(String filename)
throws UnsupportedEncodingException {
ConnectionInfo ci = new ConnectionInfo();
diff --git a/src/java/JavaFileStorageTest-AS/app/build.gradle b/src/java/JavaFileStorageTest-AS/app/build.gradle
index 2d8e6d03..27e3252e 100644
--- a/src/java/JavaFileStorageTest-AS/app/build.gradle
+++ b/src/java/JavaFileStorageTest-AS/app/build.gradle
@@ -11,9 +11,6 @@ android {
versionCode 1
versionName "1.0"
- jackOptions {
- enabled true
- }
}
buildTypes {
release {
diff --git a/src/java/KP2ASoftkeyboard_AS/app/src/main/java/keepass2android/softkeyboard/KP2AKeyboard.java b/src/java/KP2ASoftkeyboard_AS/app/src/main/java/keepass2android/softkeyboard/KP2AKeyboard.java
index f83c425f..97cf2c3f 100644
--- a/src/java/KP2ASoftkeyboard_AS/app/src/main/java/keepass2android/softkeyboard/KP2AKeyboard.java
+++ b/src/java/KP2ASoftkeyboard_AS/app/src/main/java/keepass2android/softkeyboard/KP2AKeyboard.java
@@ -1325,7 +1325,9 @@ public class KP2AKeyboard extends InputMethodService
String action = getPackageName()+".lock_database";
android.util.Log.i("KP2A", "sending broadcast with action "+action);
- sendBroadcast(new Intent(action));
+ Intent intent = new Intent(action);
+ intent.setPackage(getPackageName());
+ sendBroadcast(intent);
}
diff --git a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-cs/strings_kp2a.xml b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-cs/strings_kp2a.xml
index 95b5ec40..6eff88e1 100644
--- a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-cs/strings_kp2a.xml
+++ b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-cs/strings_kp2a.xml
@@ -10,7 +10,7 @@
Automatické vyplňovánà povoleno
PÅ™i vstupu do prázdného pole automaticky doplnit text, pokud je pro klávesnici dostupná položka v Keepass2Android a obsahuje hodnotu odpovÃdajÃcà nápovÄ›dÄ› pro toto pole.
Pamatovat si nápovědy pole
- Je-li pole ruÄnÄ› vyplnÄ›no výbÄ›rem položky z Keepass2Android, pamatovat si, která položka byla do pole zadána. Pole je pozdÄ›ji znovu rozpoznáno podle jeho nápovÄ›dy.
+ Je-li pole ruÄnÄ› vyplnÄ›no výbÄ›rem položky z Keepass2Android, pamatovat si, které položka byla do pole zadána. Pole je pozdÄ›ji znovu rozpoznáno podle jeho nápovÄ›dy.
Jednoduchá klávesnice
Zobrazit jednoduchou jednořádkovou klávesnici, je-li položka k dispozici. Je-li klávesnice zakázána, dialogové okno se zobrazà při stisknutà klávesy Keepass2Android.
Uzamknout databázi po dokonÄenÃ
diff --git a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-fa-rIR/strings_kp2a.xml b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-fa-rIR/strings_kp2a.xml
index a934ff65..bc336dc6 100644
--- a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-fa-rIR/strings_kp2a.xml
+++ b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-fa-rIR/strings_kp2a.xml
@@ -1,8 +1,20 @@
- ورودی را انتخاب کنید
+ انتخاب مدخل دیگر
+ مدخل را انتخاب کنید
+ جست‌وجوی مدخل با «%1$s»
کاربر
- کلمه عبور
- پر کردن خودکار ÙØ¹Ø§Ù„ شد
+ گذرواژه
+ تنظیمات ورود اطلاعات اعتبارنامه
+ پرکردن خودکار ÙØ¹Ø§Ù„ شد
+ با ÙØ¹Ø§Ù„‌شدن یک Ùیلد خالی، به‌صورت خودکار پر شود. این در صورتی است Ú©Ù‡ یک مدخل در دسترس ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ باشد Ùˆ مقداری هم مطابق نشانهٔ Ùیلد وجود داشته باشد.
+ متن‌های نشانهٔ Ùیلد را به‌خاطر بسپار
+ اگر مقدار یک Ùیلد متنی به‌صورت دستی انتخاب شد، مقدار واردشده در Ùیلد متنی را به‌خاطر بسپار. در آینده آن Ùیلد متنی به‌صورت خودکار با توجه به نشانه‌اش تشخیص داده می‌شود.
+ ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ ساده
+ اگر مدخلی در دسترس ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ بود ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ سادهٔ تک‌ردیÙÙ‡ را نشان بده. اگر ØºÛŒØ±ÙØ¹Ø§Ù„ باشد، با زدن کلید Keepass2Android کادری نشان داده می‌شود.
+ Ù‚Ùل‌کردن پایگاه داده در پایان
+ پس از اینکه دکمهٔ تمام/ارسال/برو بر روی ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ سادهٔ تک‌ردیÙÙ‡ انتخاب شد به‌صورت خودکار پایگاه داده Ù‚ÙÙ„ شود.
+ تعویض ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ در پایان
+ پس از انتخاب دکمهٔ تمام/ارسال/برو بر روی ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ سادهٔ تک‌ردیÙه، ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ عوض شود.
diff --git a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-fi/strings_kp2a.xml b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-fi/strings_kp2a.xml
index 2d3b75fa..9efbc661 100644
--- a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-fi/strings_kp2a.xml
+++ b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-fi/strings_kp2a.xml
@@ -8,13 +8,13 @@
Salasana
Tietojen syötön asetukset
Automaattinen täyttö
- Täytä kenttä automaattiseti kun siirrytään tyhjään kenttään, jos löytyy sekä Keepass2Android näppäimistölle merkintä että kentän vihjetekstiä vastaava arvo.
+ Kun siirrytään tyhjään kenttään, täytä se automaattiseti kenttään mikäli Keepass2Android näppäimistölle löytyy merkintä, jonka vihjeteksti vastaa kenttää.
Muista kenttien vihjetekstit
- Jos tekstikenttä täytetään manuaalisesti valitsemalla Keepass2Androidin tarjoama arvo, muista mikä arvo kenttään syötettiin. Kenttä tunnistetaan uudelleen myöhemmin vihjetekstin perusteella.
+ Jos tekstikenttä täytetään manuaalisesti valitsemalla Keepass2Androidin tarjoama arvo, muista mikä arvo kenttään syötettiin. Kenttä voidaan sitten tunnistetaa myöhemmin uudelleen tämän vihjetekstin perusteella.
Yksirivinen näppäimistö
Näytä yksirivinen näppäimistö jos näppäimistölle on saatavilla merkintä. Jos asetus ei ole käytössä, näytetään valintaruutu Keepass2Android näppäimistön kuvaketta painettaessa.
Lukitse tietokanta kun valmista
Lukitse tietokanta automaattisesti kun painetaan yksinkertaisen 1-rivisen näppäimistön Valmis/Lähetä/Mene näppäintä.
- Näppäimistön vaihto
+ Näppäimistön vaihtaminen kun valmista
Vaihda näppäimistö kun painetaan yksinkertaisen yksirivisen näppäimistön Valmis/Lähetä/Siirry näppäintä.
diff --git a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-iw/strings_kp2a.xml b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-iw/strings_kp2a.xml
index dc007631..68ae56be 100644
--- a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-iw/strings_kp2a.xml
+++ b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-iw/strings_kp2a.xml
@@ -10,7 +10,11 @@
השלמה-×וטומ×טית מ×ופשרת
מילוי ×וטומטי בטקסט בעת ×”×–× ×ª שדה ריק, ×× ×¢×¨×š Keepass2Android ××™× ×• זמין עבור לוח המקשי×, יש ערך ×שר תו×× ×ת טקסט הרמז של השדה.
זכור ×ת שדה טקסט הרמזי×
+ ×× ×©×“×” טקסט ×ž×ž×•×œ× ×¢×œ-ידי בחירה ×™×“× ×™×ª בערך מתוך Keepass2Adnroid, זכור ×ת הערך ×©×”×•×›× ×¡ לשדה הטקסט. שדה טקסט ×–×” ×™×ותר ×וטומטית בהמשך על-פי שמו.
מקלדת פשוטה
+ הצג מקלדת בעלת שורה יחידה ×× ×§×™×™×ž×ª רשומה ×–×ž×™× ×” עבורה. ×× ×פשרות זו כבויה, יוצג די×לוג בעת לחיצה על מקש Keepass2Android.
× ×¢×œ מסד ×”× ×ª×•× ×™× ×‘×¡×™×•×
+ בלחיצה על מקש הסיו×/שליחה/×ישור במקלדת בתצורת שורה יחידה, × ×¢×œ ×וטומטית ×ת מסד ×”× ×ª×•× ×™×.
החלף מקלדת בסיו×
+ בלחיצה על מקש הסיו×/שליחה/×ישור במקלדת בתצורת שורה יחידה, החלף בחזרה למקלדת ברירת המחדל.
diff --git a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-nl/strings_kp2a.xml b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-nl/strings_kp2a.xml
index ee0b2120..5890fb2a 100644
--- a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-nl/strings_kp2a.xml
+++ b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-nl/strings_kp2a.xml
@@ -2,17 +2,17 @@
Kies een andere regel
- Kies regel
- Zoek voor regel met \"%1$s\"
+ Kies item
+ Zoek voor item met \"%1$s\"
Gebruiker
Wachtwoord
Instellingen voor invoer van logingegevens
Automatisch-vullen ingeschakeld
- Vult automatisch tekst in een leeg tekstveld in, als een Keepass2Android regel beschikbaar is voor het toetsenbord en als het veld overeenkomt met de opgeslagen veld hint-tekst.
+ Vult automatisch tekst in een leeg tekstveld, als een Keepass2Android item beschikbaar is voor het toetsenbord en het veld overeenkomt met de opgeslagen veld hint-tekst.
Onthoud veld hint-teksten
Als een tekstveld gevuld is door handmatig een Keepass2Android waarde te kiezen, onthoud welke KP2A waarde was gebruikt voor het tekstveld. Het tekstveld wordt later herkend d.m.v. de hint-tekst.
Eenvoudig toetsenbord
- Toon het eenvoudige toetsenbord als een KP2A regel beschikbaar is voor het toetsenbord. Wanneer uitgeschakeld, een venster word getoond als de Keepass2Android toets is ingedrukt.
+ Toon het eenvoudige 1-rij toetsenbord als een item beschikbaar is voor het toetsenbord. Wanneer uitgeschakeld wordt een venster getoond als de Keepass2Android toets is ingedrukt.
Vergrendel de database na voltooiing
Als de Gedaan/Verzenden/Gaan toets op het eenvoudige toetsenbord is ingedrukt, vergrendel dan automatisch de database.
Wissel toetsenbord na voltooiing
diff --git a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-zh-rCN/strings_kp2a.xml b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-zh-rCN/strings_kp2a.xml
index a08771ef..95075817 100644
--- a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-zh-rCN/strings_kp2a.xml
+++ b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/values-zh-rCN/strings_kp2a.xml
@@ -12,7 +12,7 @@
è®°å¿†å—æ®µæç¤ºæ–‡æœ¬
如果通过手动选择 Keepass2Android å¡«å……å—æ®µï¼Œè¯·è®°ä½å“ªä¸ªå—æ®µåœ¨å¯¹åº”å—æ®µä¸è¾“å…¥ã€‚è¯¥å—æ®µæ˜¯åŽæ¥ç”±å…¶æç¤ºæ–‡æœ¬é‡æ–°æ£€æµ‹åˆ°ã€‚
简易键盘
- 如果一个æ¡ç›®å¯ä»¥ä½¿ç”¨é”®ç›˜æ¥è¾“入,软件将显示一个å•行的简易键盘。如果ä¸å¯ä»¥ï¼Œå½“按 Keepass2Android é”®æ—¶åˆ™ä¼šæ˜¾ç¤ºä¸€ä¸ªå¯¹è¯æ¡†ã€‚
+ 当å˜åœ¨å¾…输入æ¡ç›®æ—¶æ˜¾ç¤ºä¸€ä¸ªå•行的简易键盘。若ç¦ç”¨ï¼Œåˆ™åœ¨æŒ‰ Keepass2Android é”®æ—¶æ˜¾ç¤ºä¸€ä¸ªå¯¹è¯æ¡†ã€‚
å®Œæˆæ—¶é”定数æ®åº“
当点击å•è¡Œé”®ç›˜ä¸Šçš„å®Œæˆæˆ–å‘é€é”®æ—¶ï¼Œè‡ªåЍé”定数æ®åº“。
完æˆåŽåˆ‡æ¢é”®ç›˜
diff --git a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/xml/method.xml b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/xml/method.xml
index 3cf8d2dd..a6b718bc 100644
--- a/src/java/KP2ASoftkeyboard_AS/app/src/main/res/xml/method.xml
+++ b/src/java/KP2ASoftkeyboard_AS/app/src/main/res/xml/method.xml
@@ -22,5 +22,10 @@
+ android:isDefault="@bool/im_is_default">
+
+
+
diff --git a/src/java/Keepass2AndroidPluginSDK2/app/src/main/java/keepass2android/pluginsdk/PluginActionBroadcastReceiver.java b/src/java/Keepass2AndroidPluginSDK2/app/src/main/java/keepass2android/pluginsdk/PluginActionBroadcastReceiver.java
index 3d924ad8..484083d7 100644
--- a/src/java/Keepass2AndroidPluginSDK2/app/src/main/java/keepass2android/pluginsdk/PluginActionBroadcastReceiver.java
+++ b/src/java/Keepass2AndroidPluginSDK2/app/src/main/java/keepass2android/pluginsdk/PluginActionBroadcastReceiver.java
@@ -54,7 +54,6 @@ public abstract class PluginActionBroadcastReceiver extends BroadcastReceiver {
for(Iterator iter = json.keys();iter.hasNext();) {
String key = iter.next();
String value = json.get(key).toString();
- Log.d("KP2APluginSDK", "received " + key+"/"+value);
res.put(key, value);
}
diff --git a/src/java/android-filechooser-AS/app/src/main/res/values-cs/strings.xml b/src/java/android-filechooser-AS/app/src/main/res/values-cs/strings.xml
index 21b44cb0..a3662cb3 100644
--- a/src/java/android-filechooser-AS/app/src/main/res/values-cs/strings.xml
+++ b/src/java/android-filechooser-AS/app/src/main/res/values-cs/strings.xml
@@ -24,7 +24,7 @@
název souboru
hledat
Tato aplikace nemá oprávněnà pro vytvářenà souborů/složek
- Tato aplikace nemá oprávněnà pro odstraňovánà souborů/složek
+ Tato aplikace nemá oprávněnà odstraňovat soubory/složky
Zrušeno
Nelze se připojit ke službě poskytovatele souborů
Novou složku zde nelze vytvořit
@@ -58,17 +58,20 @@
VÄera
- Vybrat složku …
- - Vyberte složku …
- - Vyberte složky …
+ - Vyberte složku…
+ - Vyberte složky…
+ - Vyberte složky…
- Vyberte soubor…
- Vyberte soubor…
+ - Vyberte soubory…
- Vyberte soubory…
- - Vyberte soubor/ složku …
- - Vyberte soubor/ složku …
- - Vyberte soubory/ složky …
+ - Vyberte soubor/složku…
+ - Vyberte soubor/složku…
+ - Vyberte soubory/složky…
+ - Vyberte soubory/složky…
diff --git a/src/java/android-filechooser-AS/app/src/main/res/values-fa-rIR/strings.xml b/src/java/android-filechooser-AS/app/src/main/res/values-fa-rIR/strings.xml
index 102937fd..3d812f5a 100644
--- a/src/java/android-filechooser-AS/app/src/main/res/values-fa-rIR/strings.xml
+++ b/src/java/android-filechooser-AS/app/src/main/res/values-fa-rIR/strings.xml
@@ -8,62 +8,65 @@
-->
همه
- انتخاب معکوس
+ برعکس‌کردن انتخاب
هیچکدام
نمای شبکه‌ای
خانه
- نمای لیست
- پوشه جدید...
- انتخاب همه ÙØ§ÛŒÙ„‌ها
- انتخاب همه پوشه‌ها
- مرتب کردن…
+ نمای لیستی
+ پوشهٔ جدید…
+ انتخاب همهٔ ÙØ§ÛŒÙ„‌ها
+ انتخاب همهٔ پوشه‌ها
+ مرتب‌کردن…
ÙØ§ÛŒÙ„
پوشه
- پاک کردن
+ پاک‌کردن
نام پوشه
- نام پرونده
- جستجو
- این برنامه اجازه ساختن ÙØ§ÛŒÙ„‌ها یا پوشه‌ها را ندارد
- این برنامه اجازه ØØ°Ù‌کردن ÙØ§ÛŒÙ„‌ها یا پوشه‌ها را ندارد
+ نام ÙØ§ÛŒÙ„
+ جست‌وجو
+ این برنامه اجازهٔ ساختن ÙØ§ÛŒÙ„‌ها/پوشه‌ها را ندارد
+ این برنامه اجازهٔ ØØ°Ù‌کردن ÙØ§ÛŒÙ„‌ها/پوشه‌ها را ندارد
لغو شد
- اینجا نمی‌توان پوشه جدید ساخت
- نمی‌توان ÙØ§ÛŒÙ„ÛŒ را اینجا ذخیره کرد
+ اتصال به سرویس‌دهندهٔ ÙØ§ÛŒÙ„ ناموÙÙ‚ بود
+ در اینجا نمی‌توان پوشهٔ جدید ساخت
+ در اینجا نمی‌توان ÙØ§ÛŒÙ„ÛŒ را ذخیره کرد
ïºï»§ïº ﺎﻡ شد
خالی
- ناموÙÙ‚. Ù„Ø·ÙØ§ دوباره سعی کنید.
+ ناموÙÙ‚. Ù„Ø·ÙØ§Ù‹ دوباره سعی کنید.
در ØØ§Ù„ بارگیری…
تلÙÙ†
- \"%1$s\" قابل دسترسی نیست
- ایجاد پوشه \"%1$s\" ممکن نبود
+ پوشهٔ «%1$s» قابل‌دسترسی نیست
+ ایجاد پوشهٔ «%1$s» ناموÙÙ‚ بود
نمی‌توان %1$s را ØØ°Ù کرد «%2$s»
- ÙØ§ÛŒÙ„ «%1$s» در ØØ§Ù„ ØØ§Ø¶Ø± موجود است.\n\n آیا میخواهید آن را جایگزین کنید؟
+ از ØØ°Ù این مورد مطمئن هستید؟
+%1$s «%2$s»
+ ÙØ§ÛŒÙ„ «%1$s» وجود دارد.\n\n آن را جایگزین می‌کنید؟
در ØØ§Ù„ ØØ°Ù‌کردن %1$s «%2$s»…
- %1$s «%2$s» ØØ°Ù شد
- \"%1$s\" یک پوشه است
- نام ÙØ§ÛŒÙ„ \"%1$s\" معتبر نیست
+ ÙØ§ÛŒÙ„ %1$s «%2$s» ØØ°Ù شد
+ â€Â«%1$s» یک پوشه است
+ نام ÙØ§ÛŒÙ„ «%1$s» معتبر نیست
…ÙØ§ÛŒÙ„‌های بیشتری دارد، ØØ¯Ø§Ú©Ø«Ø± تعداد مجاز: %1$,d
خطای ناشناخته: %1$s
ریشه
انتخاب...
- تایید
+ تأیید
تاریخ
خطا
اطلاعات
نام
- ذخیره به عنوان...
+ ذخیره به‌عنوان…
اندازه‌
- مرتب کردن بر اساس…
+ مرتب‌کردن بر اساس…
دیروز
- - پوشه را انتخاب کنید...
- - پوشه را انتخاب کنید...
+ - انتخاب پوشه…
+ - انتخاب پوشه‌ها…
- انتخاب ÙØ§ÛŒÙ„...
- - انتخاب ÙØ§ÛŒÙ„...
+ - انتخاب ÙØ§ÛŒÙ„‌ها…
- انتخاب ÙØ§ÛŒÙ„ / پوشه...
- - انتخاب ÙØ§ÛŒÙ„ / پوشه...
+ - انتخاب ÙØ§ÛŒÙ„ / پوشه‌ها…
diff --git a/src/java/android-filechooser-AS/app/src/main/res/values-fi/strings.xml b/src/java/android-filechooser-AS/app/src/main/res/values-fi/strings.xml
index 9f15c1ea..85f94d18 100644
--- a/src/java/android-filechooser-AS/app/src/main/res/values-fi/strings.xml
+++ b/src/java/android-filechooser-AS/app/src/main/res/values-fi/strings.xml
@@ -14,9 +14,9 @@
Etusivu
Luettelonäkymä
Uusi kansio…
- Valitse kaikki
+ Valitse kaikki tiedostot
Valitse kaikki kansiot
- Lajittele
+ Lajittele…
tiedosto
kansio
tyhjennä
@@ -26,7 +26,7 @@
Sovelluksella ei ole oikeutta luoda tiedostoja/kansioita
Sovelluksella ei ole oikeutta poistaa tiedostoja/kansioita
Peruutettu
- Ei voida yhdistää tiedoston palveluntarjoajaan
+ Ei voida yhdistää tiedoston tarjoavaan palveluun
Uutta kansiota ei voi luoda tänne
Tiedostoa ei voi tallentaa tänne
Valmis
diff --git a/src/java/android-filechooser-AS/app/src/main/res/values-pl/strings.xml b/src/java/android-filechooser-AS/app/src/main/res/values-pl/strings.xml
index a88ebe71..4b154bb8 100644
--- a/src/java/android-filechooser-AS/app/src/main/res/values-pl/strings.xml
+++ b/src/java/android-filechooser-AS/app/src/main/res/values-pl/strings.xml
@@ -56,19 +56,4 @@
Rozmiar
Sortuj wedÅ‚ug…
Wczoraj
-
- - Wybierz folder…
- - Wybierz foldery…
- - Wybierz…
-
-
- - Wybierz plik…
- - Wybierz pliki…
- - Wybierz…
-
-
- - Wybierz plik/folder…
- - Wybierz pliki/foldery…
- - Wybierz…
-
diff --git a/src/java/android-filechooser-AS/app/src/main/res/values-ru/strings.xml b/src/java/android-filechooser-AS/app/src/main/res/values-ru/strings.xml
index 80121921..45cda5d2 100644
--- a/src/java/android-filechooser-AS/app/src/main/res/values-ru/strings.xml
+++ b/src/java/android-filechooser-AS/app/src/main/res/values-ru/strings.xml
@@ -56,19 +56,4 @@
Размер
Сортировать по…
Вчера
-
- - Выберите папку…
- - Выберите папку…
- - Выберите папки…
-
-
- - Выберите файл…
- - Выберите файл…
- - Выберите файлы…
-
-
- - Выберите файл/папку…
- - Выберите файл/папку…
- - Выберите файлы/папки…
-
diff --git a/src/java/android-filechooser-AS/app/src/main/res/values-sk/strings.xml b/src/java/android-filechooser-AS/app/src/main/res/values-sk/strings.xml
index 3e2e22f8..34ea4a70 100644
--- a/src/java/android-filechooser-AS/app/src/main/res/values-sk/strings.xml
+++ b/src/java/android-filechooser-AS/app/src/main/res/values-sk/strings.xml
@@ -56,19 +56,4 @@
Veľkosť
ZoradiÅ¥ podľa…
VÄera
-
- - Vyberte prieÄinok…
- - Vyberte prieÄinok…
- - Vyberte prieÄinky…
-
-
- - Vyberte súbor…
- - Vyberte súbor…
- - Vyberte súbory…
-
-
- - Vyberte súbor/prieÄinok…
- - Vyberte súbor/prieÄinok…
- - Vyberte súbory/prieÄinky…
-
diff --git a/src/java/android-filechooser-AS/app/src/main/res/values-uk/strings.xml b/src/java/android-filechooser-AS/app/src/main/res/values-uk/strings.xml
index 3934a57d..9a26cad1 100644
--- a/src/java/android-filechooser-AS/app/src/main/res/values-uk/strings.xml
+++ b/src/java/android-filechooser-AS/app/src/main/res/values-uk/strings.xml
@@ -56,19 +56,4 @@
Розмір
Сортувати за…
Вчора
-
- - Виберіть теку…
- - Виберіть теку…
- - Виберіть теки…
-
-
- - Виберіть файл…
- - Виберіть файл…
- - Виберіть файли…
-
-
- - Виберіть файл/теку…
- - Виберіть файл/теку…
- - Виберіть файли/теки…
-
diff --git a/src/keepass2android/ChallengeXCKey.cs b/src/keepass2android/ChallengeXCKey.cs
new file mode 100644
index 00000000..ab3dfb34
--- /dev/null
+++ b/src/keepass2android/ChallengeXCKey.cs
@@ -0,0 +1,90 @@
+using Java.Lang;
+using KeePassLib.Cryptography;
+using KeePassLib.Keys;
+using KeePassLib.Security;
+using Exception = System.Exception;
+
+namespace keepass2android
+{
+ public class ChallengeXCKey : IUserKey, ISeedBasedUserKey
+ {
+ private readonly int _requestCode;
+
+ public ProtectedBinary KeyData
+ {
+ get
+ {
+ if (Activity == null)
+ throw new Exception("Need an active Keepass2Android activity to challenge Yubikey!");
+ Activity.RunOnUiThread(
+ () =>
+ {
+ byte[] challenge = _kdfSeed;
+ byte[] challenge64 = new byte[64];
+ for (int i = 0; i < 64; i++)
+ {
+ if (i < challenge.Length)
+ {
+ challenge64[i] = challenge[i];
+ }
+ else
+ {
+ challenge64[i] = (byte)(challenge64.Length - challenge.Length);
+ }
+
+ }
+ var chalIntent = Activity.TryGetYubichallengeIntentOrPrompt(challenge64, true);
+
+ if (chalIntent == null)
+ throw new Exception("YubiChallenge not installed.");
+
+ Activity.StartActivityForResult(chalIntent, _requestCode);
+
+
+
+
+
+
+ });
+ while ((Response == null) && (Error == null))
+ {
+ Thread.Sleep(50);
+ }
+ if (Error != null)
+ {
+ var error = Error;
+ Error = null;
+ throw new Exception("YubiChallenge failed: " + error);
+ }
+
+ var result = CryptoUtil.HashSha256(Response);
+ Response = null;
+ return new ProtectedBinary(true, result);
+ }
+ }
+
+ private byte[] _kdfSeed;
+
+ public ChallengeXCKey(LockingActivity activity, int requestCode)
+ {
+ this.Activity = activity;
+ _requestCode = requestCode;
+ Response = null;
+ }
+
+ public void SetParams(byte[] masterSeed, byte[] mPbKdfSeed)
+ {
+ _kdfSeed = mPbKdfSeed;
+ }
+
+ public byte[] Response { get; set; }
+
+ public string Error { get; set; }
+
+ public LockingActivity Activity
+ {
+ get;
+ set;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/keepass2android/ChangeLog.cs b/src/keepass2android/ChangeLog.cs
index 197cbfa8..e318a82c 100644
--- a/src/keepass2android/ChangeLog.cs
+++ b/src/keepass2android/ChangeLog.cs
@@ -26,7 +26,9 @@ namespace keepass2android
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(ctx, Android.Resource.Style.ThemeHoloLightDialog));
builder.SetTitle(ctx.GetString(Resource.String.ChangeLog_title));
List changeLog = new List{
- ctx.GetString(Resource.String.ChangeLog_1_04b),
+
+ ctx.GetString(Resource.String.ChangeLog_1_05),
+ ctx.GetString(Resource.String.ChangeLog_1_04b),
ctx.GetString(Resource.String.ChangeLog_1_04),
ctx.GetString(Resource.String.ChangeLog_1_03),
ctx.GetString(Resource.String.ChangeLog_1_02),
@@ -176,7 +178,7 @@ namespace keepass2android
else
{
w = w.Replace("\\n", "
");
- if (w.StartsWith("*"))
+ if ((w.StartsWith("*") || (w.StartsWith("•"))))
{
if (!inList)
{
diff --git a/src/keepass2android/EntryActivity.cs b/src/keepass2android/EntryActivity.cs
index a3c1a621..fcefa04f 100644
--- a/src/keepass2android/EntryActivity.cs
+++ b/src/keepass2android/EntryActivity.cs
@@ -91,7 +91,14 @@ namespace keepass2android
private int _pos;
AppTask _appTask;
- private List _protectedTextViews;
+
+ struct ProtectedTextviewGroup
+ {
+ public TextView ProtectedField;
+ public TextView VisibleProtectedField;
+ }
+
+ private List _protectedTextViews;
private IMenu _menu;
private readonly Dictionary> _popupMenuItems =
@@ -476,17 +483,26 @@ namespace keepass2android
RelativeLayout valueViewContainer =
(RelativeLayout) LayoutInflater.Inflate(Resource.Layout.entry_extrastring_value, null);
var valueView = valueViewContainer.FindViewById(Resource.Id.entry_extra);
- if (value != null)
- valueView.Text = value;
- SetPasswordTypeface(valueView);
- if (isProtected)
- {
- RegisterProtectedTextView(valueView);
- valueView.TransformationMethod = PasswordTransformationMethod.Instance;
- }
+ var valueViewVisible = valueViewContainer.FindViewById(Resource.Id.entry_extra_visible);
+ if (value != null)
+ {
+ valueView.Text = value;
+ valueViewVisible.Text = value;
+
+ }
+ SetPasswordTypeface(valueViewVisible);
+ if (isProtected)
+ {
+ RegisterProtectedTextView(valueView, valueViewVisible);
+
+ }
+ else
+ {
+ valueView.Visibility = ViewStates.Gone;
+ }
layout.AddView(valueViewContainer);
- var stringView = new ExtraStringView(layout, valueView, keyView);
+ var stringView = new ExtraStringView(layout, valueView, valueViewVisible, keyView);
_stringViews.Add(key, stringView);
RegisterTextPopup(valueViewContainer, valueViewContainer.FindViewById(Resource.Id.extra_vdots), key, isProtected);
@@ -599,9 +615,11 @@ namespace keepass2android
- private void RegisterProtectedTextView(TextView protectedTextView)
+ private void RegisterProtectedTextView(TextView protectedTextView, TextView visibleTextView)
{
- _protectedTextViews.Add(protectedTextView);
+ var protectedTextviewGroup = new ProtectedTextviewGroup { ProtectedField = protectedTextView, VisibleProtectedField = visibleTextView};
+ _protectedTextViews.Add(protectedTextviewGroup);
+ SetPasswordStyle(protectedTextviewGroup);
}
@@ -687,7 +705,7 @@ namespace keepass2android
protected void FillData()
{
- _protectedTextViews = new List();
+ _protectedTextViews = new List();
ImageView iv = (ImageView) FindViewById(Resource.Id.icon);
if (iv != null)
{
@@ -704,9 +722,9 @@ namespace keepass2android
PopulateStandardText(Resource.Id.entry_user_name, Resource.Id.entryfield_container_username, PwDefs.UserNameField);
PopulateStandardText(Resource.Id.entry_url, Resource.Id.entryfield_container_url, PwDefs.UrlField);
- PopulateStandardText(Resource.Id.entry_password, Resource.Id.entryfield_container_password, PwDefs.PasswordField);
- RegisterProtectedTextView(FindViewById(Resource.Id.entry_password));
- SetPasswordTypeface(FindViewById(Resource.Id.entry_password));
+ PopulateStandardText(new List { Resource.Id.entry_password, Resource.Id.entry_password_visible}, Resource.Id.entryfield_container_password, PwDefs.PasswordField);
+
+ RegisterProtectedTextView(FindViewById(Resource.Id.entry_password), FindViewById(Resource.Id.entry_password_visible));
RegisterTextPopup(FindViewById (Resource.Id.groupname_container),
FindViewById (Resource.Id.entry_group_name), KeyGroupFullPath);
@@ -820,28 +838,43 @@ namespace keepass2android
textView.Typeface = _passwordFont;
}
- private void PopulateText(int viewId, int containerViewId, String text)
+ private void PopulateText(int viewId, int containerViewId, String text)
+ {
+ PopulateText(new List {viewId}, containerViewId, text);
+ }
+
+
+ private void PopulateText(List viewIds, int containerViewId, String text)
{
View container = FindViewById(containerViewId);
- TextView tv = (TextView) FindViewById(viewId);
- if (String.IsNullOrEmpty(text))
- {
- container.Visibility = tv.Visibility = ViewStates.Gone;
- }
- else
- {
- container.Visibility = tv.Visibility = ViewStates.Visible;
- tv.Text = text;
+ foreach (int viewId in viewIds)
+ {
+ TextView tv = (TextView) FindViewById(viewId);
+ if (String.IsNullOrEmpty(text))
+ {
+ container.Visibility = tv.Visibility = ViewStates.Gone;
+ }
+ else
+ {
+ container.Visibility = tv.Visibility = ViewStates.Visible;
+ tv.Text = text;
- }
+ }
+ }
}
- private void PopulateStandardText(int viewId, int containerViewId, String key)
+ private void PopulateStandardText(int viewId, int containerViewId, String key)
+ {
+ PopulateStandardText(new List {viewId}, containerViewId, key);
+ }
+
+
+ private void PopulateStandardText(List viewIds, int containerViewId, String key)
{
String value = Entry.Strings.ReadSafe(key);
value = SprEngine.Compile(value, new SprContext(Entry, App.Kp2a.GetDb().KpDatabase, SprCompileFlags.All));
- PopulateText(viewId, containerViewId, value);
- _stringViews.Add(key, new StandardStringView(viewId, containerViewId, this));
+ PopulateText(viewIds, containerViewId, value);
+ _stringViews.Add(key, new StandardStringView(viewIds, containerViewId, this));
}
private void PopulateGroupText(int viewId, int containerViewId, String key)
@@ -853,7 +886,7 @@ namespace keepass2android
groupName = Entry.ParentGroup.GetFullPath();
}
PopulateText(viewId, containerViewId, groupName);
- _stringViews.Add (key, new StandardStringView (viewId, containerViewId, this));
+ _stringViews.Add (key, new StandardStringView (new List{viewId}, containerViewId, this));
}
private void RequiresRefresh()
@@ -932,24 +965,23 @@ namespace keepass2android
private void SetPasswordStyle()
{
- foreach (TextView password in _protectedTextViews)
- {
+ foreach (ProtectedTextviewGroup group in _protectedTextViews)
+ {
+ SetPasswordStyle(group);
+ }
+ }
- if (_showPassword)
- {
- //password.TransformationMethod = null;
- password.InputType = password.InputType = InputTypes.ClassText | InputTypes.TextVariationVisiblePassword;
- SetPasswordTypeface(password);
- }
- else
- {
- //password.TransformationMethod = PasswordTransformationMethod.Instance;
- password.InputType = InputTypes.ClassText | InputTypes.TextVariationPassword;
- }
- }
- }
+ private void SetPasswordStyle(ProtectedTextviewGroup group)
+ {
+ group.VisibleProtectedField.Visibility = _showPassword ? ViewStates.Visible : ViewStates.Gone;
+ group.ProtectedField.Visibility = !_showPassword ? ViewStates.Visible : ViewStates.Gone;
- protected override void OnResume()
+ SetPasswordTypeface(group.VisibleProtectedField);
+
+ group.ProtectedField.InputType = InputTypes.ClassText | InputTypes.TextVariationPassword;
+ }
+
+ protected override void OnResume()
{
ClearCache();
base.OnResume();
diff --git a/src/keepass2android/EntryActivityClasses/ExtraStringView.cs b/src/keepass2android/EntryActivityClasses/ExtraStringView.cs
index e65585fe..08f9561b 100644
--- a/src/keepass2android/EntryActivityClasses/ExtraStringView.cs
+++ b/src/keepass2android/EntryActivityClasses/ExtraStringView.cs
@@ -8,13 +8,15 @@ namespace keepass2android
{
private readonly View _container;
private readonly TextView _valueView;
- private readonly TextView _keyView;
+ private readonly TextView _visibleValueView;
+ private readonly TextView _keyView;
- public ExtraStringView(LinearLayout container, TextView valueView, TextView keyView)
+ public ExtraStringView(LinearLayout container, TextView valueView, TextView visibleValueView, TextView keyView)
{
_container = container;
_valueView = valueView;
- _keyView = keyView;
+ _visibleValueView = visibleValueView;
+ _keyView = keyView;
}
public View View
@@ -29,16 +31,15 @@ namespace keepass2android
{
if (String.IsNullOrEmpty(value))
{
- _valueView.Visibility = ViewStates.Gone;
- _keyView.Visibility = ViewStates.Gone;
_container.Visibility = ViewStates.Gone;
}
else
{
- _valueView.Visibility = ViewStates.Visible;
- _keyView.Visibility = ViewStates.Visible;
_container.Visibility = ViewStates.Visible;
_valueView.Text = value;
+ if (_visibleValueView != null)
+ _visibleValueView.Text = value;
+
}
}
}
diff --git a/src/keepass2android/EntryActivityClasses/StandardStringView.cs b/src/keepass2android/EntryActivityClasses/StandardStringView.cs
index bcbcb019..c307a3c2 100644
--- a/src/keepass2android/EntryActivityClasses/StandardStringView.cs
+++ b/src/keepass2android/EntryActivityClasses/StandardStringView.cs
@@ -1,4 +1,6 @@
using System;
+using System.Collections.Generic;
+using System.Linq;
using Android.App;
using Android.Views;
using Android.Widget;
@@ -7,13 +9,13 @@ namespace keepass2android
{
internal class StandardStringView : IStringView
{
- private readonly int _viewId;
+ private readonly List _viewIds;
private readonly int _containerViewId;
private readonly Activity _activity;
- public StandardStringView(int viewId, int containerViewId, Activity activity)
+ public StandardStringView(List viewIds, int containerViewId, Activity activity)
{
- _viewId = viewId;
+ _viewIds = viewIds;
_containerViewId = containerViewId;
_activity = activity;
}
@@ -23,20 +25,23 @@ namespace keepass2android
set
{
View container = _activity.FindViewById(_containerViewId);
- TextView tv = (TextView) _activity.FindViewById(_viewId);
- if (String.IsNullOrEmpty(value))
- {
- container.Visibility = tv.Visibility = ViewStates.Gone;
- }
- else
- {
- container.Visibility = tv.Visibility = ViewStates.Visible;
- tv.Text = value;
- }
+ foreach (int viewId in _viewIds)
+ {
+ TextView tv = (TextView) _activity.FindViewById(viewId);
+ if (String.IsNullOrEmpty(value))
+ {
+ container.Visibility = tv.Visibility = ViewStates.Gone;
+ }
+ else
+ {
+ container.Visibility = tv.Visibility = ViewStates.Visible;
+ tv.Text = value;
+ }
+ }
}
get
{
- TextView tv = (TextView) _activity.FindViewById(_viewId);
+ TextView tv = (TextView) _activity.FindViewById(_viewIds.First());
return tv.Text;
}
}
diff --git a/src/keepass2android/FileSelectHelper.cs b/src/keepass2android/FileSelectHelper.cs
index 365f981d..496c295f 100644
--- a/src/keepass2android/FileSelectHelper.cs
+++ b/src/keepass2android/FileSelectHelper.cs
@@ -14,6 +14,7 @@ using Android.Views;
using Android.Widget;
using Java.IO;
using keepass2android.Io;
+using Keepass2android.Javafilestorage;
using KeePassLib.Serialization;
using KeePassLib.Utility;
@@ -24,8 +25,9 @@ namespace keepass2android
private readonly Activity _activity;
private readonly bool _isForSave;
private readonly int _requestCode;
+ private readonly string _schemeSeparator = "://";
- public string DefaultExtension { get; set; }
+ public string DefaultExtension { get; set; }
public FileSelectHelper(Activity activity, bool isForSave, int requestCode)
{
@@ -34,11 +36,23 @@ namespace keepass2android
_requestCode = requestCode;
}
- private void ShowSftpDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel)
+ private void ShowSftpDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel, string defaultPath)
{
#if !EXCLUDE_JAVAFILESTORAGE && !NoNet
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
View dlgContents = activity.LayoutInflater.Inflate(Resource.Layout.sftpcredentials, null);
+
+ if (!defaultPath.EndsWith(_schemeSeparator))
+ {
+ var fileStorage = new Keepass2android.Javafilestorage.SftpStorage();
+ SftpStorage.ConnectionInfo ci = fileStorage.SplitStringToConnectionInfo(defaultPath);
+ dlgContents.FindViewById(Resource.Id.sftp_host).Text = ci.Host;
+ dlgContents.FindViewById(Resource.Id.sftp_port).Text = ci.Port.ToString();
+ dlgContents.FindViewById(Resource.Id.sftp_user).Text = ci.Username;
+ dlgContents.FindViewById(Resource.Id.sftp_password).Text = ci.Password;
+ dlgContents.FindViewById(Resource.Id.sftp_initial_dir).Text = ci.LocalPath;
+ }
+
builder.SetView(dlgContents);
builder.SetPositiveButton(Android.Resource.String.Ok,
(sender, args) =>
@@ -70,6 +84,16 @@ namespace keepass2android
#if !EXCLUDE_JAVAFILESTORAGE && !NoNet
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
View dlgContents = activity.LayoutInflater.Inflate(Resource.Layout.httpcredentials, null);
+ if (!defaultPath.EndsWith(_schemeSeparator))
+ {
+ var webdavStorage = new Keepass2android.Javafilestorage.WebDavStorage(App.Kp2a.CertificateErrorHandler);
+ var connInfo = webdavStorage.SplitStringToConnectionInfo(defaultPath);
+ dlgContents.FindViewById(Resource.Id.http_url).Text = connInfo.Url;
+ dlgContents.FindViewById(Resource.Id.http_user).Text = connInfo.Username;
+ dlgContents.FindViewById(Resource.Id.http_password).Text = connInfo.Password;
+
+
+ }
builder.SetView(dlgContents);
builder.SetPositiveButton(Android.Resource.String.Ok,
(sender, args) =>
@@ -79,9 +103,9 @@ namespace keepass2android
string user = dlgContents.FindViewById(Resource.Id.http_user).Text;
string password = dlgContents.FindViewById(Resource.Id.http_password).Text;
- string scheme = defaultPath.Substring(0, defaultPath.IndexOf("://", StringComparison.Ordinal));
- if (host.Contains("://") == false)
- host = scheme + "://" + host;
+ string scheme = defaultPath.Substring(0, defaultPath.IndexOf(_schemeSeparator, StringComparison.Ordinal));
+ if (host.Contains(_schemeSeparator) == false)
+ host = scheme + _schemeSeparator + host;
string httpPath = new Keepass2android.Javafilestorage.WebDavStorage(null).BuildFullPath(host, user,
password);
onStartBrowse(httpPath);
@@ -96,12 +120,35 @@ namespace keepass2android
#endif
}
- private void ShowFtpDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel)
+ private void ShowFtpDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel, string defaultPath)
{
#if !NoNet
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
View dlgContents = activity.LayoutInflater.Inflate(Resource.Layout.ftpcredentials, null);
- builder.SetView(dlgContents);
+ if (!defaultPath.EndsWith(_schemeSeparator))
+ {
+ var connection = NetFtpFileStorage.ConnectionSettings.FromIoc(IOConnectionInfo.FromPath(defaultPath));
+ dlgContents.FindViewById(Resource.Id.ftp_user).Text = connection.Username;
+ dlgContents.FindViewById(Resource.Id.ftp_password).Text = connection.Password;
+ dlgContents.FindViewById(Resource.Id.ftp_encryption).SetSelection((int)connection.EncryptionMode);
+
+ var uri = NetFtpFileStorage.IocToUri(IOConnectionInfo.FromPath(defaultPath));
+ string pathAndQuery = uri.PathAndQuery;
+
+ var host = uri.Host;
+ var localPath = pathAndQuery;
+
+
+ if (!uri.IsDefaultPort)
+ {
+ dlgContents.FindViewById(Resource.Id.ftp_port).Text = uri.Port.ToString();
+ }
+ dlgContents.FindViewById(Resource.Id.ftp_host).Text = host;
+ dlgContents.FindViewById(Resource.Id.ftp_initial_dir).Text = localPath;
+
+
+ }
+ builder.SetView(dlgContents);
builder.SetPositiveButton(Android.Resource.String.Ok,
(sender, args) =>
{
@@ -133,9 +180,9 @@ namespace keepass2android
public void PerformManualFileSelect(string defaultPath)
{
if (defaultPath.StartsWith("sftp://"))
- ShowSftpDialog(_activity, ReturnFileOrStartFileChooser, ReturnCancel);
+ ShowSftpDialog(_activity, ReturnFileOrStartFileChooser, ReturnCancel, defaultPath);
else if ((defaultPath.StartsWith("ftp://")) || (defaultPath.StartsWith("ftps://")))
- ShowFtpDialog(_activity, ReturnFileOrStartFileChooser, ReturnCancel);
+ ShowFtpDialog(_activity, ReturnFileOrStartFileChooser, ReturnCancel, defaultPath);
else if ((defaultPath.StartsWith("http://")) || (defaultPath.StartsWith("https://")))
ShowHttpDialog(_activity, ReturnFileOrStartFileChooser, ReturnCancel, defaultPath);
else if (defaultPath.StartsWith("owncloud://"))
@@ -169,9 +216,9 @@ namespace keepass2android
string user = dlgContents.FindViewById(Resource.Id.http_user).Text;
string password = dlgContents.FindViewById(Resource.Id.http_password).Text;
- string scheme = defaultPath.Substring(defaultPath.IndexOf("://", StringComparison.Ordinal));
- if (host.Contains("://") == false)
- host = scheme + "://" + host;
+ string scheme = defaultPath.Substring(0,defaultPath.IndexOf(_schemeSeparator, StringComparison.Ordinal));
+ if (host.Contains(_schemeSeparator) == false)
+ host = scheme + _schemeSeparator + host;
string httpPath = new Keepass2android.Javafilestorage.WebDavStorage(null).BuildFullPath(WebDavFileStorage.Owncloud2Webdav(host), user,
password);
onStartBrowse(httpPath);
@@ -189,9 +236,17 @@ namespace keepass2android
private bool ReturnFileOrStartFileChooser(string filename)
{
- int lastSlashPos = filename.LastIndexOf('/');
- int lastDotPos = filename.LastIndexOf('.');
- if (lastSlashPos >= lastDotPos) //no dot after last slash or == in case neither / nor .
+ string filenameWithoutProt = filename;
+ if (filenameWithoutProt.Contains(_schemeSeparator))
+ {
+ filenameWithoutProt =
+ filenameWithoutProt.Substring(filenameWithoutProt.IndexOf(_schemeSeparator, StringComparison.Ordinal) + 3);
+ }
+
+ int lastSlashPos = filenameWithoutProt.LastIndexOf('/');
+ int lastDotPos = filenameWithoutProt.LastIndexOf('.');
+ if ((lastSlashPos < 0 ) //no slash, probably only a server address (my.server.com)
+ || (lastSlashPos >= lastDotPos)) //no dot after last slash or == in case neither / nor .
{
//looks like a folder.
return StartFileChooser(filename);
@@ -357,5 +412,13 @@ namespace keepass2android
public event EventHandler OnCancel;
public event EventHandler OnOpen;
+
+ public static bool CanEditIoc(IOConnectionInfo ioc)
+ {
+ return ioc.Path.StartsWith("http")
+ || ioc.Path.StartsWith("ftp")
+ || ioc.Path.StartsWith("sftp");
+
+ }
}
}
\ No newline at end of file
diff --git a/src/keepass2android/GroupActivity.cs b/src/keepass2android/GroupActivity.cs
index d222f8bb..aa180a14 100644
--- a/src/keepass2android/GroupActivity.cs
+++ b/src/keepass2android/GroupActivity.cs
@@ -150,7 +150,7 @@ namespace keepass2android
var bmp =
Bitmap.CreateScaledBitmap(
Util.DrawableToBitmap(App.Kp2a.GetDb()
- .DrawableFactory.GetIconDrawable(Context, App.Kp2a.GetDb().KpDatabase, templateEntry.IconId, PwUuid.Zero, false)),
+ .DrawableFactory.GetIconDrawable(Context, App.Kp2a.GetDb().KpDatabase, templateEntry.IconId, PwUuid.Zero, false)),
size, size,
true);
diff --git a/src/keepass2android/GroupBaseActivity.cs b/src/keepass2android/GroupBaseActivity.cs
index a187624e..88035704 100644
--- a/src/keepass2android/GroupBaseActivity.cs
+++ b/src/keepass2android/GroupBaseActivity.cs
@@ -43,260 +43,385 @@ using Object = Java.Lang.Object;
namespace keepass2android
{
- public abstract class GroupBaseActivity : LockCloseActivity
- {
- public const String KeyEntry = "entry";
- public const String KeyMode = "mode";
+ public abstract class GroupBaseActivity : LockCloseActivity
+ {
+ public const String KeyEntry = "entry";
+ public const String KeyMode = "mode";
static readonly Dictionary bottomBarElementsPriority = new Dictionary()
{
{ Resource.Id.cancel_insert_element, 20 },
{ Resource.Id.insert_element, 20 },
- { Resource.Id.autofill_infotext, 10 },
+ //only use the same id if elements can be shown simultaneously!
+ { Resource.Id.autofill_infotext, 11 },
+ { Resource.Id.notification_info_android8_infotext, 10 },
+ { Resource.Id.infotext, 9 },
{ Resource.Id.select_other_entry, 20},
{ Resource.Id.add_url_entry, 20},
};
- private readonly HashSet showableBottomBarElements = new HashSet();
+ private readonly HashSet showableBottomBarElements = new HashSet();
- private ActivityDesign _design;
+ private ActivityDesign _design;
- public virtual void LaunchActivityForEntry(PwEntry pwEntry, int pos)
- {
- EntryActivity.Launch(this, pwEntry, pos, AppTask);
- }
+ public virtual void LaunchActivityForEntry(PwEntry pwEntry, int pos)
+ {
+ EntryActivity.Launch(this, pwEntry, pos, AppTask);
+ }
- protected GroupBaseActivity()
- {
- _design = new ActivityDesign(this);
- }
+ protected GroupBaseActivity()
+ {
+ _design = new ActivityDesign(this);
+ }
- protected GroupBaseActivity(IntPtr javaReference, JniHandleOwnership transfer)
- : base(javaReference, transfer)
- {
+ protected GroupBaseActivity(IntPtr javaReference, JniHandleOwnership transfer)
+ : base(javaReference, transfer)
+ {
- }
+ }
- protected override void OnSaveInstanceState(Bundle outState)
- {
- base.OnSaveInstanceState(outState);
- AppTask.ToBundle(outState);
- }
+ protected override void OnSaveInstanceState(Bundle outState)
+ {
+ base.OnSaveInstanceState(outState);
+ AppTask.ToBundle(outState);
+ }
- public virtual void SetupNormalButtons()
- {
- SetNormalButtonVisibility(AddGroupEnabled, AddEntryEnabled);
- }
+ public virtual void SetupNormalButtons()
+ {
+ SetNormalButtonVisibility(AddGroupEnabled, AddEntryEnabled);
+ }
- protected virtual bool AddGroupEnabled
- {
- get { return App.Kp2a.GetDb().CanWrite; }
- }
- protected virtual bool AddEntryEnabled
- {
- get { return App.Kp2a.GetDb().CanWrite; }
- }
+ protected virtual bool AddGroupEnabled
+ {
+ get { return App.Kp2a.GetDb().CanWrite; }
+ }
+ protected virtual bool AddEntryEnabled
+ {
+ get { return App.Kp2a.GetDb().CanWrite; }
+ }
- public void SetNormalButtonVisibility(bool showAddGroup, bool showAddEntry)
- {
- if (FindViewById(Resource.Id.fabCancelAddNew) != null)
- {
- FindViewById(Resource.Id.fabCancelAddNew).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNewGroup).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
+ public void SetNormalButtonVisibility(bool showAddGroup, bool showAddEntry)
+ {
+ if (FindViewById(Resource.Id.fabCancelAddNew) != null)
+ {
+ FindViewById(Resource.Id.fabCancelAddNew).Visibility = ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNewGroup).Visibility = ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNew).Visibility = (showAddGroup || showAddEntry) ? ViewStates.Visible : ViewStates.Gone;
- }
+ FindViewById(Resource.Id.fabAddNew).Visibility = (showAddGroup || showAddEntry) ? ViewStates.Visible : ViewStates.Gone;
+ }
- UpdateBottomBarElementVisibility(Resource.Id.insert_element, false);
- UpdateBottomBarElementVisibility(Resource.Id.cancel_insert_element, false);
+ UpdateBottomBarElementVisibility(Resource.Id.insert_element, false);
+ UpdateBottomBarElementVisibility(Resource.Id.cancel_insert_element, false);
}
void UpdateBottomBarVisibility()
- {
- var bottomBar = FindViewById(Resource.Id.bottom_bar);
- //check for null because the "empty" layouts may not have all views
- int highestPrio = -1;
- HashSet highestPrioElements = new HashSet();
+ {
+ var bottomBar = FindViewById(Resource.Id.bottom_bar);
+ //check for null because the "empty" layouts may not have all views
+ int highestPrio = -1;
+ HashSet highestPrioElements = new HashSet();
if (bottomBar != null)
- {
- for (int i = 0; i < bottomBar.ChildCount; i++)
- {
- int id = bottomBar.GetChildAt(i).Id;
- if (!showableBottomBarElements.Contains(id))
- continue;
- int myPrio = bottomBarElementsPriority[id];
+ {
+ for (int i = 0; i < bottomBar.ChildCount; i++)
+ {
+ int id = bottomBar.GetChildAt(i).Id;
+ if (!showableBottomBarElements.Contains(id))
+ continue;
+ int myPrio = bottomBarElementsPriority[id];
if (!highestPrioElements.Any() || highestPrio < myPrio)
- {
- highestPrioElements.Clear();
- highestPrio = myPrio;
- }
- if (highestPrio == myPrio)
- {
- highestPrioElements.Add(id);
+ {
+ highestPrioElements.Clear();
+ highestPrio = myPrio;
+ }
+ if (highestPrio == myPrio)
+ {
+ highestPrioElements.Add(id);
}
}
- bottomBar.Visibility = highestPrioElements.Any() ? ViewStates.Visible : ViewStates.Gone;
+ bottomBar.Visibility = highestPrioElements.Any() ? ViewStates.Visible : ViewStates.Gone;
- for (int i = 0; i < bottomBar.ChildCount; i++)
- {
- int id = bottomBar.GetChildAt(i).Id;
- bottomBar.GetChildAt(i).Visibility =
- highestPrioElements.Contains(id) ? ViewStates.Visible : ViewStates.Gone;
- }
+ for (int i = 0; i < bottomBar.ChildCount; i++)
+ {
+ int id = bottomBar.GetChildAt(i).Id;
+ bottomBar.GetChildAt(i).Visibility = highestPrioElements.Contains(id) ? ViewStates.Visible : ViewStates.Gone;
+ }
- if (FindViewById(Resource.Id.divider2) != null)
- FindViewById(Resource.Id.divider2).Visibility = highestPrioElements.Any() ? ViewStates.Visible : ViewStates.Gone;
- }
- }
+ if (FindViewById(Resource.Id.divider2) != null)
+ FindViewById(Resource.Id.divider2).Visibility = highestPrioElements.Any() ? ViewStates.Visible : ViewStates.Gone;
+ }
+ }
- protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
- {
- base.OnActivityResult(requestCode, resultCode, data);
+ protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
+ {
+ base.OnActivityResult(requestCode, resultCode, data);
- if (AppTask.TryGetFromActivityResult(data, ref AppTask))
- {
- //make sure the app task is passed to the calling activity
- AppTask.SetActivityResult(this, KeePass.ExitNormal);
+ if (AppTask.TryGetFromActivityResult(data, ref AppTask))
+ {
+ //make sure the app task is passed to the calling activity
+ AppTask.SetActivityResult(this, KeePass.ExitNormal);
- }
+ }
- if (resultCode == Result.Ok)
- {
- String groupName = data.Extras.GetString(GroupEditActivity.KeyName);
- int groupIconId = data.Extras.GetInt(GroupEditActivity.KeyIconId);
- PwUuid groupCustomIconId =
- new PwUuid(MemUtil.HexStringToByteArray(data.Extras.GetString(GroupEditActivity.KeyCustomIconId)));
- String strGroupUuid = data.Extras.GetString(GroupEditActivity.KeyGroupUuid);
- GroupBaseActivity act = this;
- Handler handler = new Handler();
- RunnableOnFinish task;
- if (strGroupUuid == null)
- {
- task = AddGroup.GetInstance(this, App.Kp2a, groupName, groupIconId, groupCustomIconId, Group, new RefreshTask(handler, this), false);
- }
- else
- {
- PwUuid groupUuid = new PwUuid(MemUtil.HexStringToByteArray(strGroupUuid));
- task = new EditGroup(this, App.Kp2a, groupName, (PwIcon)groupIconId, groupCustomIconId, App.Kp2a.GetDb().Groups[groupUuid],
- new RefreshTask(handler, this));
- }
- ProgressTask pt = new ProgressTask(App.Kp2a, act, task);
- pt.Run();
- }
+ if ((GroupEditActivity.RequestCodeGroupEdit == requestCode) && (resultCode == Result.Ok))
+ {
+ String groupName = data.Extras.GetString(GroupEditActivity.KeyName);
+ int groupIconId = data.Extras.GetInt(GroupEditActivity.KeyIconId);
+ PwUuid groupCustomIconId =
+ new PwUuid(MemUtil.HexStringToByteArray(data.Extras.GetString(GroupEditActivity.KeyCustomIconId)));
+ String strGroupUuid = data.Extras.GetString(GroupEditActivity.KeyGroupUuid);
+ GroupBaseActivity act = this;
+ Handler handler = new Handler();
+ RunnableOnFinish task;
+ if (strGroupUuid == null)
+ {
+ task = AddGroup.GetInstance(this, App.Kp2a, groupName, groupIconId, groupCustomIconId, Group, new RefreshTask(handler, this), false);
+ }
+ else
+ {
+ PwUuid groupUuid = new PwUuid(MemUtil.HexStringToByteArray(strGroupUuid));
+ task = new EditGroup(this, App.Kp2a, groupName, (PwIcon)groupIconId, groupCustomIconId, App.Kp2a.GetDb().Groups[groupUuid],
+ new RefreshTask(handler, this));
+ }
+ ProgressTask pt = new ProgressTask(App.Kp2a, act, task);
+ pt.Run();
+ }
- if (resultCode == KeePass.ExitCloseAfterTaskComplete)
- {
- AppTask.SetActivityResult(this, KeePass.ExitCloseAfterTaskComplete);
- Finish();
- }
+ if (resultCode == KeePass.ExitCloseAfterTaskComplete)
+ {
+ AppTask.SetActivityResult(this, KeePass.ExitCloseAfterTaskComplete);
+ Finish();
+ }
- if (resultCode == KeePass.ExitReloadDb)
- {
- AppTask.SetActivityResult(this, KeePass.ExitReloadDb);
- Finish();
- }
+ if (resultCode == KeePass.ExitReloadDb)
+ {
+ AppTask.SetActivityResult(this, KeePass.ExitReloadDb);
+ Finish();
+ }
- }
+ }
- private ISharedPreferences _prefs;
+ private ISharedPreferences _prefs;
- protected PwGroup Group;
+ protected PwGroup Group;
- internal AppTask AppTask;
+ internal AppTask AppTask;
- private String strCachedGroupUuid = null;
- private IMenuItem _offlineItem;
- private IMenuItem _onlineItem;
- private IMenuItem _syncItem;
+ private String strCachedGroupUuid = null;
+ private IMenuItem _offlineItem;
+ private IMenuItem _onlineItem;
+ private IMenuItem _syncItem;
+ private Android.Support.V7.Widget.SearchView searchView;
- public String UuidGroup
- {
- get
- {
- if (strCachedGroupUuid == null)
- {
- strCachedGroupUuid = MemUtil.ByteArrayToHexString(Group.Uuid.UuidBytes);
- }
- return strCachedGroupUuid;
- }
- }
+ public String UuidGroup
+ {
+ get
+ {
+ if (strCachedGroupUuid == null)
+ {
+ strCachedGroupUuid = MemUtil.ByteArrayToHexString(Group.Uuid.UuidBytes);
+ }
+ return strCachedGroupUuid;
+ }
+ }
- protected override void OnResume()
- {
- base.OnResume();
- _design.ReapplyTheme();
- AppTask.StartInGroupActivity(this);
- AppTask.SetupGroupBaseActivityButtons(this);
+ protected override void OnResume()
+ {
+ base.OnResume();
+ _design.ReapplyTheme();
+ AppTask.StartInGroupActivity(this);
+ AppTask.SetupGroupBaseActivityButtons(this);
- UpdateAutofillInfo();
+ UpdateAutofillInfo();
+ UpdateAndroid8NotificationInfo();
+ UpdateInfotexts();
RefreshIfDirty();
- }
- public override bool OnSearchRequested()
- {
- Intent i = new Intent(this, typeof(SearchActivity));
- AppTask.ToIntent(i);
- StartActivityForResult(i, 0);
- return true;
- }
+
+ }
- public void RefreshIfDirty()
- {
- Database db = App.Kp2a.GetDb();
- if (db.Dirty.Contains(Group))
- {
- db.Dirty.Remove(Group);
- ListAdapter.NotifyDataSetChanged();
+ private void UpdateInfotexts()
+ {
- }
- }
+ string lastInfoText;
+ if (IsTimeForInfotext(out lastInfoText) && (FindViewById(Resource.Id.info_head) != null))
+ {
- public BaseAdapter ListAdapter
- {
- get { return (BaseAdapter)FragmentManager.FindFragmentById(Resource.Id.list_fragment).ListAdapter; }
- }
+ FingerprintUnlockMode um;
+ Enum.TryParse(_prefs.GetString(Database.GetFingerprintModePrefKey(App.Kp2a.GetDb().Ioc), ""), out um);
+ bool isFingerprintEnabled = (um == FingerprintUnlockMode.FullUnlock);
- public virtual bool IsSearchResult
- {
- get { return false; }
- }
+ string masterKeyKey = "MasterKey" + isFingerprintEnabled;
+ string emergencyKey = "Emergency";
+ string backupKey = "Backup";
- protected override void OnCreate(Bundle savedInstanceState)
- {
- _design.ApplyTheme();
- base.OnCreate(savedInstanceState);
+ List applicableInfoTextKeys = new List { masterKeyKey };
- Android.Util.Log.Debug("KP2A", "Creating GBA");
+ if (App.Kp2a.GetFileStorage(App.Kp2a.GetDb().Ioc).UserShouldBackup)
+ {
+ applicableInfoTextKeys.Add(backupKey);
+ }
+ if (App.Kp2a.GetDb().Entries.Count > 15)
+ {
+ applicableInfoTextKeys.Add(emergencyKey);
+ }
- AppTask = AppTask.GetTaskInOnCreate(savedInstanceState, Intent);
+ List enabledInfoTextKeys = new List();
+ foreach (string key in applicableInfoTextKeys)
+ {
+ if (!InfoTextWasDisabled(key))
+ enabledInfoTextKeys.Add(key);
+ }
- // Likely the app has been killed exit the activity
- if (!App.Kp2a.GetDb().Loaded)
- {
- Finish();
- return;
- }
+ if (enabledInfoTextKeys.Any())
+ {
+ string infoTextKey = "", infoHead = "", infoMain = "", infoNote = "";
+
+ if (enabledInfoTextKeys.Count > 1)
+ {
+ foreach (string key in enabledInfoTextKeys)
+ if (key == lastInfoText)
+ {
+ enabledInfoTextKeys.Remove(key);
+ break;
+ }
+ infoTextKey = enabledInfoTextKeys[new Random().Next(enabledInfoTextKeys.Count)];
+ }
+
+ if (infoTextKey == masterKeyKey)
+ {
+ infoHead = GetString(Resource.String.masterkey_infotext_head);
+ infoMain = GetString(Resource.String.masterkey_infotext_main);
+ if (isFingerprintEnabled)
+ infoNote = GetString(Resource.String.masterkey_infotext_fingerprint_note);
+ }
+ else if (infoTextKey == emergencyKey)
+ {
+ infoHead = GetString(Resource.String.emergency_infotext_head);
+ infoMain = GetString(Resource.String.emergency_infotext_main);
+ }
+ else if (infoTextKey == backupKey)
+ {
+ infoHead = GetString(Resource.String.backup_infotext_head);
+ infoMain = GetString(Resource.String.backup_infotext_main);
+ infoNote = GetString(Resource.String.backup_infotext_note, GetString(Resource.String.menu_app_settings), GetString(Resource.String.menu_db_settings), GetString(Resource.String.export_prefs));
+ }
+
+
+
+ FindViewById(Resource.Id.info_head).Text = infoHead;
+ FindViewById(Resource.Id.info_main).Text = infoMain;
+ var additionalInfoText = FindViewById(Resource.Id.info_additional);
+ additionalInfoText.Text = infoNote;
+ additionalInfoText.Visibility = string.IsNullOrEmpty(infoNote) ? ViewStates.Gone : ViewStates.Visible;
+
+ if (infoTextKey != "")
+ {
+
+ RegisterInfoTextDisplay(infoTextKey);
+ FindViewById(Resource.Id.info_ok).Click += (sender, args) =>
+ {
+ UpdateBottomBarElementVisibility(Resource.Id.infotext, false);
+ };
+ FindViewById(Resource.Id.info_dont_show_again).Click += (sender, args) =>
+ {
+ UpdateBottomBarElementVisibility(Resource.Id.infotext, false);
+ DisableInfoTextDisplay(infoTextKey);
+ };
+
+ UpdateBottomBarElementVisibility(Resource.Id.infotext, true);
+ }
+
+ }
+
+
+
+ }
+ }
+
+ private void UpdateAndroid8NotificationInfo(bool hideForever = false)
+ {
+ const string prefsKey = "DidShowAndroid8NotificationInfo";
+
+ bool canShowNotificationInfo = (Build.VERSION.SdkInt >= BuildVersionCodes.O) && (!_prefs.GetBoolean(prefsKey, false));
+ if ((canShowNotificationInfo) && hideForever)
+ {
+ _prefs.Edit().PutBoolean(prefsKey, true).Commit();
+ canShowNotificationInfo = false;
+ }
+ if (canShowNotificationInfo)
+ {
+ RegisterInfoTextDisplay("Android8Notification"); //this ensures that we don't show the general info texts too soon
+ }
+ UpdateBottomBarElementVisibility(Resource.Id.notification_info_android8_infotext, canShowNotificationInfo);
+
+
+ }
+
+ public override bool OnSearchRequested()
+ {
+ Intent i = new Intent(this, typeof(SearchActivity));
+ AppTask.ToIntent(i);
+ StartActivityForResult(i, 0);
+ return true;
+ }
+
+ public void RefreshIfDirty()
+ {
+ Database db = App.Kp2a.GetDb();
+ if (db.Dirty.Contains(Group))
+ {
+ db.Dirty.Remove(Group);
+ ListAdapter.NotifyDataSetChanged();
+
+ }
+ }
+
+ public BaseAdapter ListAdapter
+ {
+ get { return (BaseAdapter)FragmentManager.FindFragmentById(Resource.Id.list_fragment).ListAdapter; }
+ }
+
+ public virtual bool IsSearchResult
+ {
+ get { return false; }
+ }
+
+ protected override void OnCreate(Bundle savedInstanceState)
+ {
+ _design.ApplyTheme();
+ base.OnCreate(savedInstanceState);
+
+ Android.Util.Log.Debug("KP2A", "Creating GBA");
+
+ AppTask = AppTask.GetTaskInOnCreate(savedInstanceState, Intent);
+
+ // Likely the app has been killed exit the activity
+ if (!App.Kp2a.GetDb().Loaded)
+ {
+ Finish();
+ return;
+ }
+
+ _prefs = PreferenceManager.GetDefaultSharedPreferences(this);
- _prefs = PreferenceManager.GetDefaultSharedPreferences(this);
-
SetContentView(ContentResourceId);
- if (FindViewById(Resource.Id.enable_autofill) != null)
- {
- FindViewById(Resource.Id.enable_autofill).Click += (sender, args) =>
- {
- var intent = new Intent(Settings.ActionRequestSetAutofillService);
- intent.SetData(Android.Net.Uri.Parse("package:" + PackageName));
+ if (FindViewById(Resource.Id.enable_autofill) != null)
+ {
+ FindViewById(Resource.Id.enable_autofill).Click += (sender, args) =>
+ {
+ var intent = new Intent(Settings.ActionRequestSetAutofillService);
+ intent.SetData(Android.Net.Uri.Parse("package:" + PackageName));
try
{
StartActivity(intent);
@@ -314,780 +439,888 @@ namespace keepass2android
_prefs.Edit().PutBoolean(autofillservicewasenabled, true).Commit();
UpdateBottomBarElementVisibility(Resource.Id.autofill_infotext, false);
}
- };
- }
+ };
+ }
+
+
+ if (FindViewById(Resource.Id.info_dont_show_autofill_again) != null)
+ {
+ FindViewById(Resource.Id.info_dont_show_autofill_again).Click += (sender, args) =>
+ {
+ _prefs.Edit().PutBoolean(autofillservicewasenabled_prefskey, true).Commit();
+ UpdateAutofillInfo();
+ };
+ }
if (FindViewById(Resource.Id.fabCancelAddNew) != null)
- {
- FindViewById(Resource.Id.fabAddNew).Click += (sender, args) =>
- {
- FindViewById(Resource.Id.fabCancelAddNew).Visibility = ViewStates.Visible;
- FindViewById(Resource.Id.fabAddNewGroup).Visibility = AddGroupEnabled ? ViewStates.Visible : ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNewEntry).Visibility = AddEntryEnabled ? ViewStates.Visible : ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Gone;
- };
+ {
+ FindViewById(Resource.Id.fabAddNew).Click += (sender, args) =>
+ {
+ FindViewById(Resource.Id.fabCancelAddNew).Visibility = ViewStates.Visible;
+ FindViewById(Resource.Id.fabAddNewGroup).Visibility = AddGroupEnabled ? ViewStates.Visible : ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNewEntry).Visibility = AddEntryEnabled ? ViewStates.Visible : ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Gone;
+ };
- FindViewById(Resource.Id.fabCancelAddNew).Click += (sender, args) =>
- {
- FindViewById(Resource.Id.fabCancelAddNew).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNewGroup).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Visible;
- };
+ FindViewById(Resource.Id.fabCancelAddNew).Click += (sender, args) =>
+ {
+ FindViewById(Resource.Id.fabCancelAddNew).Visibility = ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNewGroup).Visibility = ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Visible;
+ };
- }
+ }
- if (FindViewById(Resource.Id.cancel_insert_element) != null)
- {
- FindViewById(Resource.Id.cancel_insert_element).Click += (sender, args) => StopMovingElements();
- FindViewById(Resource.Id.insert_element).Click += (sender, args) => InsertElements();
- Util.MoveBottomBarButtons(Resource.Id.cancel_insert_element, Resource.Id.insert_element, Resource.Id.bottom_bar, this);
- }
+ if (FindViewById(Resource.Id.cancel_insert_element) != null)
+ {
+ FindViewById(Resource.Id.cancel_insert_element).Click += (sender, args) => StopMovingElements();
+ FindViewById(Resource.Id.insert_element).Click += (sender, args) => InsertElements();
+ Util.MoveBottomBarButtons(Resource.Id.cancel_insert_element, Resource.Id.insert_element, Resource.Id.bottom_bar, this);
+ }
- if (FindViewById(Resource.Id.show_autofill_info) != null)
- {
- FindViewById(Resource.Id.show_autofill_info).Click += (sender, args) => Util.GotoUrl(this, "https://philippc.github.io/keepass2android/OreoAutoFill.html");
+ if (FindViewById(Resource.Id.show_autofill_info) != null)
+ {
+ FindViewById(Resource.Id.show_autofill_info).Click += (sender, args) => Util.GotoUrl(this, "https://philippc.github.io/keepass2android/OreoAutoFill.html");
Util.MoveBottomBarButtons(Resource.Id.show_autofill_info, Resource.Id.enable_autofill, Resource.Id.autofill_buttons, this);
- }
+ }
+
+ if (FindViewById(Resource.Id.configure_notification_channels) != null)
+ {
+ FindViewById(Resource.Id.configure_notification_channels).Click += (sender, args) =>
+ {
+ Intent intent = new Intent(Settings.ActionChannelNotificationSettings);
+ intent.PutExtra(Settings.ExtraChannelId, App.NotificationChannelIdQuicklocked);
+ intent.PutExtra(Settings.ExtraAppPackage, PackageName);
+ try
+ {
+ StartActivity(intent);
+ }
+ catch (Exception e)
+ {
+ new AlertDialog.Builder(this)
+ .SetTitle("Unexpected error")
+ .SetMessage(
+ "Opening the settings failed. Please report this to crocoapps@gmail.com including information about your device vendor and OS. Please try to configure the notifications by long pressing a KP2A notification. Details: " + e.ToString())
+ .Show();
+ }
+ UpdateAndroid8NotificationInfo(true);
+ };
+ FindViewById(Resource.Id.ignore_notification_channel).Click += (sender, args) =>
+ {
+ UpdateAndroid8NotificationInfo(true);
+ };
+
+ }
- SetResult(KeePass.ExitNormal);
- }
+ SetResult(KeePass.ExitNormal);
- private void UpdateAutofillInfo()
- {
- bool canShowAutofillInfo = false;
-
- if (!((Android.OS.Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.O) ||
- !((AutofillManager) GetSystemService(Java.Lang.Class.FromType(typeof(AutofillManager))))
- .IsAutofillSupported))
- {
- const string autofillservicewasenabled = "AutofillServiceWasEnabled";
- if (!((AutofillManager) GetSystemService(Java.Lang.Class.FromType(typeof(AutofillManager))))
- .HasEnabledAutofillServices)
- {
- if (!_prefs.GetBoolean(autofillservicewasenabled, false))
- canShowAutofillInfo = true;
- }
- else
- {
- _prefs.Edit().PutBoolean(autofillservicewasenabled, true).Commit();
+
- }
- }
- UpdateBottomBarElementVisibility(Resource.Id.autofill_infotext, canShowAutofillInfo);
+
+
+ }
+
+ private bool IsTimeForInfotext(out string lastInfoText)
+ {
+ DateTime lastDisplayTime = new DateTime(_prefs.GetLong("LastInfoTextTime", 0));
+ lastInfoText = _prefs.GetString("LastInfoTextKey", "");
+#if DEBUG
+ return DateTime.UtcNow - lastDisplayTime > TimeSpan.FromSeconds(10);
+#else
+ return DateTime.UtcNow - lastDisplayTime > TimeSpan.FromDays(3);
+#endif
}
- protected void UpdateBottomBarElementVisibility(int resourceId, bool canShow)
- {
+ private void DisableInfoTextDisplay(string infoTextKey)
+ {
+ _prefs
+ .Edit()
+ .PutBoolean("InfoTextDisabled_" + infoTextKey, true)
+ .Commit();
+
+ }
+
+ private void RegisterInfoTextDisplay(string infoTextKey)
+ {
+ _prefs
+ .Edit()
+ .PutLong("LastInfoTextTime", DateTime.UtcNow.Ticks)
+ .PutString("LastInfoTextKey", infoTextKey)
+ .Commit();
+
+ }
+
+ private bool InfoTextWasDisabled(string infoTextKey)
+ {
+ return _prefs.GetBoolean("InfoTextDisabled_" + infoTextKey, false);
+ }
+
+ const string autofillservicewasenabled_prefskey = "AutofillServiceWasEnabled";
+
+ private void UpdateAutofillInfo()
+ {
+ bool canShowAutofillInfo = false;
+
+ if (!((Android.OS.Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.O) ||
+ !((AutofillManager)GetSystemService(Java.Lang.Class.FromType(typeof(AutofillManager))))
+ .IsAutofillSupported))
+ {
+ if (!((AutofillManager)GetSystemService(Java.Lang.Class.FromType(typeof(AutofillManager))))
+ .HasEnabledAutofillServices)
+ {
+ if (!_prefs.GetBoolean(autofillservicewasenabled_prefskey, false))
+ canShowAutofillInfo = true;
+ }
+ else
+ {
+ _prefs.Edit().PutBoolean(autofillservicewasenabled_prefskey, true).Commit();
+
+ }
+ }
+ if (canShowAutofillInfo)
+ {
+ RegisterInfoTextDisplay("AutofillSuggestion"); //this ensures that we don't show the general info texts too soon
+
+ }
+ UpdateBottomBarElementVisibility(Resource.Id.autofill_infotext, canShowAutofillInfo);
+ }
+
+ protected void UpdateBottomBarElementVisibility(int resourceId, bool canShow)
+ {
if (canShow)
showableBottomBarElements.Add(resourceId);
else
showableBottomBarElements.Remove(resourceId);
UpdateBottomBarVisibility();
- }
-
- protected virtual int ContentResourceId
- {
- get { return Resource.Layout.group; }
- }
-
- private void InsertElements()
- {
- MoveElementsTask moveElementsTask = (MoveElementsTask)AppTask;
- IEnumerable elementsToMove =
- moveElementsTask.Uuids.Select(uuid => App.Kp2a.GetDb().KpDatabase.RootGroup.FindObject(uuid, true, null));
-
-
-
- var moveElement = new MoveElements(elementsToMove.ToList(), Group, this, App.Kp2a, new ActionOnFinish((success, message) => { StopMovingElements(); if (!String.IsNullOrEmpty(message)) Toast.MakeText(this, message, ToastLength.Long).Show(); }));
- var progressTask = new ProgressTask(App.Kp2a, this, moveElement);
- progressTask.Run();
-
- }
-
-
-
- protected void SetGroupTitle()
- {
- String name = Group.Name;
- String titleText;
- bool clickable = (Group != null) && (Group.IsVirtual == false) && (Group.ParentGroup != null);
- if (!String.IsNullOrEmpty(name))
- {
- titleText = name;
- }
- else
- {
- titleText = GetText(Resource.String.root);
- }
-
- SupportActionBar.Title = titleText;
- if (clickable)
- {
- SupportActionBar.SetHomeButtonEnabled(true);
- SupportActionBar.SetDisplayHomeAsUpEnabled(true);
- SupportActionBar.SetDisplayShowHomeEnabled(true);
- }
-
- }
-
-
- protected void SetGroupIcon()
- {
- if (Group != null)
- {
- Drawable drawable = App.Kp2a.GetDb().DrawableFactory.GetIconDrawable(this, App.Kp2a.GetDb().KpDatabase, Group.IconId, Group.CustomIconUuid, true);
- SupportActionBar.SetDisplayShowHomeEnabled(true);
- //SupportActionBar.SetIcon(drawable);
- }
- }
-
- class SuggestionListener : Java.Lang.Object, SearchView.IOnSuggestionListener, Android.Support.V7.Widget.SearchView.IOnSuggestionListener
- {
- private readonly CursorAdapter _suggestionsAdapter;
- private readonly GroupBaseActivity _activity;
- private readonly IMenuItem _searchItem;
-
-
- public SuggestionListener(Android.Support.V4.Widget.CursorAdapter suggestionsAdapter, GroupBaseActivity activity, IMenuItem searchItem)
- {
- _suggestionsAdapter = suggestionsAdapter;
- _activity = activity;
- _searchItem = searchItem;
- }
-
- public bool OnSuggestionClick(int position)
- {
- var cursor = _suggestionsAdapter.Cursor;
- cursor.MoveToPosition(position);
- string entryIdAsHexString = cursor.GetString(cursor.GetColumnIndexOrThrow(SearchManager.SuggestColumnIntentDataId));
- EntryActivity.Launch(_activity, App.Kp2a.GetDb().Entries[new PwUuid(MemUtil.HexStringToByteArray(entryIdAsHexString))], -1, _activity.AppTask);
- return true;
- }
-
- public bool OnSuggestionSelect(int position)
- {
- return false;
- }
- }
-
- class OnQueryTextListener : Java.Lang.Object, Android.Support.V7.Widget.SearchView.IOnQueryTextListener
- {
- private readonly GroupBaseActivity _activity;
-
- public OnQueryTextListener(GroupBaseActivity activity)
- {
- _activity = activity;
- }
-
- public bool OnQueryTextChange(string newText)
- {
- return false;
- }
-
- public bool OnQueryTextSubmit(string query)
- {
- if (String.IsNullOrEmpty(query))
- return false; //let the default happen
-
- Intent searchIntent = new Intent(_activity, typeof(search.SearchResults));
- searchIntent.SetAction(Intent.ActionSearch); //currently not necessary to set because SearchResults doesn't care, but let's be as close to the default as possible
- searchIntent.PutExtra(SearchManager.Query, query);
- //forward appTask:
- _activity.AppTask.ToIntent(searchIntent);
-
- _activity.StartActivityForResult(searchIntent, 0);
-
- return true;
- }
- }
-
- public override bool OnCreateOptionsMenu(IMenu menu)
- {
-
- MenuInflater inflater = MenuInflater;
- inflater.Inflate(Resource.Menu.group, menu);
- var searchManager = (SearchManager)GetSystemService(Context.SearchService);
- IMenuItem searchItem = menu.FindItem(Resource.Id.menu_search);
- var view = MenuItemCompat.GetActionView(searchItem);
- var searchView = view.JavaCast();
-
- searchView.SetSearchableInfo(searchManager.GetSearchableInfo(ComponentName));
- searchView.SetOnSuggestionListener(new SuggestionListener(searchView.SuggestionsAdapter, this, searchItem));
- searchView.SetOnQueryTextListener(new OnQueryTextListener(this));
-
- ActionBar.LayoutParams lparams = new ActionBar.LayoutParams(ActionBar.LayoutParams.MatchParent,
- ActionBar.LayoutParams.MatchParent);
- searchView.LayoutParameters = lparams;
-
- _syncItem = menu.FindItem(Resource.Id.menu_sync);
-
-
- _offlineItem = menu.FindItem(Resource.Id.menu_work_offline);
- _onlineItem = menu.FindItem(Resource.Id.menu_work_online);
-
- UpdateOfflineModeMenu();
-
-
- return base.OnCreateOptionsMenu(menu);
-
- }
-
- private void UpdateOfflineModeMenu()
- {
- try
- {
- if (_syncItem != null)
- {
- if (App.Kp2a.GetDb().Ioc.IsLocalFile())
- _syncItem.SetVisible(false);
- else
- _syncItem.SetVisible(!App.Kp2a.OfflineMode);
- }
-
- if (App.Kp2a.GetFileStorage(App.Kp2a.GetDb().Ioc) is IOfflineSwitchable)
- {
- if (_offlineItem != null)
- _offlineItem.SetVisible(App.Kp2a.OfflineMode == false);
- if (_onlineItem != null)
- _onlineItem.SetVisible(App.Kp2a.OfflineMode);
- }
- else
- {
- if (_offlineItem != null)
- _offlineItem.SetVisible(false);
- if (_onlineItem != null)
- _onlineItem.SetVisible(false);
-
- }
- }
- catch (Exception e)
- {
- Kp2aLog.LogUnexpectedError(new Exception("Cannot UpdateOfflineModeMenu " + (App.Kp2a == null) + " " + ((App.Kp2a == null) || (App.Kp2a.GetDb() == null)) + " " + (((App.Kp2a == null) || (App.Kp2a.GetDb() == null) || (App.Kp2a.GetDb().Ioc == null)) + " " + (_syncItem != null) + " " + (_offlineItem != null) + " " + (_onlineItem != null))));
- }
-
- }
-
-
- public override bool OnPrepareOptionsMenu(IMenu menu)
- {
- if (!base.OnPrepareOptionsMenu(menu))
- {
- return false;
- }
-
- Util.PrepareDonateOptionMenu(menu, this);
-
-
- return true;
- }
-
- public override bool OnOptionsItemSelected(IMenuItem item)
- {
- switch (item.ItemId)
- {
- case Resource.Id.menu_donate:
- return Util.GotoDonateUrl(this);
- case Resource.Id.menu_lock:
- App.Kp2a.LockDatabase();
- return true;
-
- case Resource.Id.menu_search:
- case Resource.Id.menu_search_advanced:
- OnSearchRequested();
- return true;
-
- case Resource.Id.menu_app_settings:
- DatabaseSettingsActivity.Launch(this);
- return true;
-
- case Resource.Id.menu_sync:
- Synchronize();
- return true;
-
- case Resource.Id.menu_work_offline:
- App.Kp2a.OfflineMode = App.Kp2a.OfflineModePreference = true;
- UpdateOfflineModeMenu();
- return true;
-
- case Resource.Id.menu_work_online:
- App.Kp2a.OfflineMode = App.Kp2a.OfflineModePreference = false;
- UpdateOfflineModeMenu();
- Synchronize();
- return true;
-
-
- case Resource.Id.menu_sort:
- ChangeSort();
- return true;
- case Android.Resource.Id.Home:
- //Currently the action bar only displays the home button when we come from a previous activity.
- //So we can simply Finish. See this page for information on how to do this in more general (future?) cases:
- //http://developer.android.com/training/implementing-navigation/ancestral.html
- AppTask.SetActivityResult(this, KeePass.ExitNormal);
- Finish();
- //OverridePendingTransition(Resource.Animation.anim_enter_back, Resource.Animation.anim_leave_back);
-
- return true;
- }
-
- return base.OnOptionsItemSelected(item);
- }
-
- public class SyncOtpAuxFile : RunnableOnFinish
- {
- private readonly IOConnectionInfo _ioc;
-
- public SyncOtpAuxFile(IOConnectionInfo ioc)
- : base(null)
- {
- _ioc = ioc;
- }
-
- public override void Run()
- {
- StatusLogger.UpdateMessage(UiStringKey.SynchronizingOtpAuxFile);
- try
- {
- //simply open the file. The file storage does a complete sync.
- using (App.Kp2a.GetOtpAuxFileStorage(_ioc).OpenFileForRead(_ioc))
- {
- }
+ }
+
+ protected virtual int ContentResourceId
+ {
+ get { return Resource.Layout.group; }
+ }
+
+ private void InsertElements()
+ {
+ MoveElementsTask moveElementsTask = (MoveElementsTask)AppTask;
+ IEnumerable elementsToMove =
+ moveElementsTask.Uuids.Select(uuid => App.Kp2a.GetDb().KpDatabase.RootGroup.FindObject(uuid, true, null));
+
+
+
+ var moveElement = new MoveElements(elementsToMove.ToList(), Group, this, App.Kp2a, new ActionOnFinish((success, message) => { StopMovingElements(); if (!String.IsNullOrEmpty(message)) Toast.MakeText(this, message, ToastLength.Long).Show(); }));
+ var progressTask = new ProgressTask(App.Kp2a, this, moveElement);
+ progressTask.Run();
+
+ }
+
+
+
+ protected void SetGroupTitle()
+ {
+ String name = Group.Name;
+ String titleText;
+ bool clickable = (Group != null) && (Group.IsVirtual == false) && (Group.ParentGroup != null);
+ if (!String.IsNullOrEmpty(name))
+ {
+ titleText = name;
+ }
+ else
+ {
+ titleText = GetText(Resource.String.root);
+ }
+
+ SupportActionBar.Title = titleText;
+ if (clickable)
+ {
+ SupportActionBar.SetHomeButtonEnabled(true);
+ SupportActionBar.SetDisplayHomeAsUpEnabled(true);
+ SupportActionBar.SetDisplayShowHomeEnabled(true);
+ }
+
+ }
+
+
+ protected void SetGroupIcon()
+ {
+ if (Group != null)
+ {
+ Drawable drawable = App.Kp2a.GetDb().DrawableFactory.GetIconDrawable(this, App.Kp2a.GetDb().KpDatabase, Group.IconId, Group.CustomIconUuid, true);
+ SupportActionBar.SetDisplayShowHomeEnabled(true);
+ //SupportActionBar.SetIcon(drawable);
+ }
+ }
+
+ class SuggestionListener : Java.Lang.Object, SearchView.IOnSuggestionListener, Android.Support.V7.Widget.SearchView.IOnSuggestionListener
+ {
+ private readonly CursorAdapter _suggestionsAdapter;
+ private readonly GroupBaseActivity _activity;
+ private readonly IMenuItem _searchItem;
+
+
+ public SuggestionListener(Android.Support.V4.Widget.CursorAdapter suggestionsAdapter, GroupBaseActivity activity, IMenuItem searchItem)
+ {
+ _suggestionsAdapter = suggestionsAdapter;
+ _activity = activity;
+ _searchItem = searchItem;
+ }
+
+ public bool OnSuggestionClick(int position)
+ {
+ var cursor = _suggestionsAdapter.Cursor;
+ cursor.MoveToPosition(position);
+ string entryIdAsHexString = cursor.GetString(cursor.GetColumnIndexOrThrow(SearchManager.SuggestColumnIntentDataId));
+ EntryActivity.Launch(_activity, App.Kp2a.GetDb().Entries[new PwUuid(MemUtil.HexStringToByteArray(entryIdAsHexString))], -1, _activity.AppTask);
+ return true;
+ }
+
+ public bool OnSuggestionSelect(int position)
+ {
+ return false;
+ }
+ }
+
+ class OnQueryTextListener : Java.Lang.Object, Android.Support.V7.Widget.SearchView.IOnQueryTextListener
+ {
+ private readonly GroupBaseActivity _activity;
+
+ public OnQueryTextListener(GroupBaseActivity activity)
+ {
+ _activity = activity;
+ }
+
+ public bool OnQueryTextChange(string newText)
+ {
+ return false;
+ }
+
+ public bool OnQueryTextSubmit(string query)
+ {
+ if (String.IsNullOrEmpty(query))
+ return false; //let the default happen
+
+ Intent searchIntent = new Intent(_activity, typeof(search.SearchResults));
+ searchIntent.SetAction(Intent.ActionSearch); //currently not necessary to set because SearchResults doesn't care, but let's be as close to the default as possible
+ searchIntent.PutExtra(SearchManager.Query, query);
+ //forward appTask:
+ _activity.AppTask.ToIntent(searchIntent);
+
+ _activity.StartActivityForResult(searchIntent, 0);
+
+ return true;
+ }
+ }
+
+ public override bool OnCreateOptionsMenu(IMenu menu)
+ {
+
+ MenuInflater inflater = MenuInflater;
+ inflater.Inflate(Resource.Menu.group, menu);
+ var searchManager = (SearchManager)GetSystemService(Context.SearchService);
+ IMenuItem searchItem = menu.FindItem(Resource.Id.menu_search);
+ var view = MenuItemCompat.GetActionView(searchItem);
+
+ searchView = view.JavaCast();
+
+ searchView.SetSearchableInfo(searchManager.GetSearchableInfo(ComponentName));
+ searchView.SetOnSuggestionListener(new SuggestionListener(searchView.SuggestionsAdapter, this, searchItem));
+ searchView.SetOnQueryTextListener(new OnQueryTextListener(this));
+
+ if (_prefs.GetBoolean("ActivateSearchView", false) && AppTask.CanActivateSearchViewOnStart)
+ {
+ //need to use PostDelayed, otherwise the menu_lock item completely disappears
+ searchView.PostDelayed(() =>
+ {
+ searchView.Iconified = false;
+ AppTask.CanActivateSearchViewOnStart = false;
+ }, 500);
+ }
+
+ ActionBar.LayoutParams lparams = new ActionBar.LayoutParams(ActionBar.LayoutParams.MatchParent,
+ ActionBar.LayoutParams.MatchParent);
+ searchView.LayoutParameters = lparams;
+
+
+ _syncItem = menu.FindItem(Resource.Id.menu_sync);
+
+
+ _offlineItem = menu.FindItem(Resource.Id.menu_work_offline);
+ _onlineItem = menu.FindItem(Resource.Id.menu_work_online);
+
+ UpdateOfflineModeMenu();
+
+
+ return base.OnCreateOptionsMenu(menu);
+
+ }
+
+ private void UpdateOfflineModeMenu()
+ {
+ try
+ {
+ if (_syncItem != null)
+ {
+ if (App.Kp2a.GetDb().Ioc.IsLocalFile())
+ _syncItem.SetVisible(false);
+ else
+ _syncItem.SetVisible(!App.Kp2a.OfflineMode);
+ }
+
+ if (App.Kp2a.GetFileStorage(App.Kp2a.GetDb().Ioc) is IOfflineSwitchable)
+ {
+ if (_offlineItem != null)
+ _offlineItem.SetVisible(App.Kp2a.OfflineMode == false);
+ if (_onlineItem != null)
+ _onlineItem.SetVisible(App.Kp2a.OfflineMode);
+ }
+ else
+ {
+ if (_offlineItem != null)
+ _offlineItem.SetVisible(false);
+ if (_onlineItem != null)
+ _onlineItem.SetVisible(false);
+
+ }
+ }
+ catch (Exception e)
+ {
+ Kp2aLog.LogUnexpectedError(new Exception("Cannot UpdateOfflineModeMenu " + (App.Kp2a == null) + " " + ((App.Kp2a == null) || (App.Kp2a.GetDb() == null)) + " " + (((App.Kp2a == null) || (App.Kp2a.GetDb() == null) || (App.Kp2a.GetDb().Ioc == null)) + " " + (_syncItem != null) + " " + (_offlineItem != null) + " " + (_onlineItem != null))));
+ }
+
+ }
+
+
+ public override bool OnPrepareOptionsMenu(IMenu menu)
+ {
+ if (!base.OnPrepareOptionsMenu(menu))
+ {
+ return false;
+ }
+
+ Util.PrepareDonateOptionMenu(menu, this);
+
+
+ return true;
+ }
+
+ public override bool OnOptionsItemSelected(IMenuItem item)
+ {
+ switch (item.ItemId)
+ {
+ case Resource.Id.menu_donate:
+ return Util.GotoDonateUrl(this);
+ case Resource.Id.menu_lock:
+ App.Kp2a.LockDatabase();
+ return true;
+
+ case Resource.Id.menu_search:
+ case Resource.Id.menu_search_advanced:
+ OnSearchRequested();
+ return true;
+
+ case Resource.Id.menu_app_settings:
+ DatabaseSettingsActivity.Launch(this);
+ return true;
+
+ case Resource.Id.menu_sync:
+ Synchronize();
+ return true;
+
+ case Resource.Id.menu_work_offline:
+ App.Kp2a.OfflineMode = App.Kp2a.OfflineModePreference = true;
+ UpdateOfflineModeMenu();
+ return true;
+
+ case Resource.Id.menu_work_online:
+ App.Kp2a.OfflineMode = App.Kp2a.OfflineModePreference = false;
+ UpdateOfflineModeMenu();
+ Synchronize();
+ return true;
+
+
+ case Resource.Id.menu_sort:
+ ChangeSort();
+ return true;
+ case Android.Resource.Id.Home:
+ //Currently the action bar only displays the home button when we come from a previous activity.
+ //So we can simply Finish. See this page for information on how to do this in more general (future?) cases:
+ //http://developer.android.com/training/implementing-navigation/ancestral.html
+ AppTask.SetActivityResult(this, KeePass.ExitNormal);
+ Finish();
+ //OverridePendingTransition(Resource.Animation.anim_enter_back, Resource.Animation.anim_leave_back);
+
+ return true;
+ }
+
+ return base.OnOptionsItemSelected(item);
+ }
+
+ public class SyncOtpAuxFile : RunnableOnFinish
+ {
+ private readonly IOConnectionInfo _ioc;
+
+ public SyncOtpAuxFile(IOConnectionInfo ioc)
+ : base(null)
+ {
+ _ioc = ioc;
+ }
+
+ public override void Run()
+ {
+ StatusLogger.UpdateMessage(UiStringKey.SynchronizingOtpAuxFile);
+ try
+ {
+ //simply open the file. The file storage does a complete sync.
+ using (App.Kp2a.GetOtpAuxFileStorage(_ioc).OpenFileForRead(_ioc))
+ {
+ }
- Finish(true);
- }
- catch (Exception e)
- {
+ Finish(true);
+ }
+ catch (Exception e)
+ {
- Finish(false, e.Message);
- }
+ Finish(false, e.Message);
+ }
- }
+ }
- }
+ }
- private void Synchronize()
- {
- var filestorage = App.Kp2a.GetFileStorage(App.Kp2a.GetDb().Ioc);
- RunnableOnFinish task;
- OnFinish onFinish = new ActionOnFinish((success, message) =>
- {
- if (!String.IsNullOrEmpty(message))
- Toast.MakeText(this, message, ToastLength.Long).Show();
-
- // Tell the adapter to refresh it's list
- BaseAdapter adapter = (BaseAdapter)ListAdapter;
- adapter.NotifyDataSetChanged();
-
- if (App.Kp2a.GetDb().OtpAuxFileIoc != null)
- {
- var task2 = new SyncOtpAuxFile(App.Kp2a.GetDb().OtpAuxFileIoc);
- new ProgressTask(App.Kp2a, this, task2).Run();
- }
- });
-
- if (filestorage is CachingFileStorage)
- {
-
- task = new SynchronizeCachedDatabase(this, App.Kp2a, onFinish);
- }
- else
- {
-
- task = new CheckDatabaseForChanges(this, App.Kp2a, onFinish);
- }
-
-
-
-
- var progressTask = new ProgressTask(App.Kp2a, this, task);
- progressTask.Run();
-
- }
-
- public override void OnBackPressed()
- {
- AppTask.SetActivityResult(this, KeePass.ExitNormal);
- base.OnBackPressed();
- }
-
- private void ChangeSort()
- {
- var sortOrderManager = new GroupViewSortOrderManager(this);
- IEnumerable sortOptions = sortOrderManager.SortOrders.Select(
- o => GetString(o.ResourceId)
- );
-
- int selectedBefore = sortOrderManager.GetCurrentSortOrderIndex();
-
- new AlertDialog.Builder(this)
- .SetSingleChoiceItems(sortOptions.ToArray(), selectedBefore, (sender, args) =>
- {
- int selectedAfter = args.Which;
-
- sortOrderManager.SetNewSortOrder(selectedAfter);
- // Refresh menu titles
- ActivityCompat.InvalidateOptionsMenu(this);
-
- // Mark all groups as dirty now to refresh them on load
- Database db = App.Kp2a.GetDb();
- db.MarkAllGroupsAsDirty();
- // We'll manually refresh this group so we can remove it
- db.Dirty.Remove(Group);
-
- // Tell the adapter to refresh it's list
-
- BaseAdapter adapter = (BaseAdapter)ListAdapter;
- adapter.NotifyDataSetChanged();
-
-
- })
- .SetPositiveButton(Android.Resource.String.Ok, (sender, args) => ((Dialog)sender).Dismiss())
- .Show();
-
-
-
-
- }
-
- public class RefreshTask : OnFinish
- {
- readonly GroupBaseActivity _act;
- public RefreshTask(Handler handler, GroupBaseActivity act)
- : base(handler)
- {
- _act = act;
- }
-
- public override void Run()
- {
- if (Success)
- {
- _act.RefreshIfDirty();
- }
- else
- {
- DisplayMessage(_act);
- }
- }
- }
- public class AfterDeleteGroup : OnFinish
- {
- readonly GroupBaseActivity _act;
-
- public AfterDeleteGroup(Handler handler, GroupBaseActivity act)
- : base(handler)
- {
- _act = act;
- }
-
-
- public override void Run()
- {
- if (Success)
- {
- _act.RefreshIfDirty();
- }
- else
- {
- Handler.Post(() =>
- {
- Toast.MakeText(_act, "Unrecoverable error: " + Message, ToastLength.Long).Show();
- });
-
- App.Kp2a.LockDatabase(false);
- }
- }
-
- }
-
- public bool IsBeingMoved(PwUuid uuid)
- {
- MoveElementsTask moveElementsTask = AppTask as MoveElementsTask;
- if (moveElementsTask != null)
- {
- if (moveElementsTask.Uuids.Any(uuidMoved => uuidMoved.Equals(uuid)))
- return true;
- }
- return false;
- }
-
- public void StartTask(AppTask task)
- {
- AppTask = task;
- task.StartInGroupActivity(this);
- }
-
-
- public void StartMovingElements()
- {
-
- ShowInsertElementsButtons();
- BaseAdapter adapter = (BaseAdapter)ListAdapter;
- adapter.NotifyDataSetChanged();
- }
-
- public void ShowInsertElementsButtons()
- {
- FindViewById(Resource.Id.fabCancelAddNew).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNewGroup).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
- FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Gone;
-
- UpdateBottomBarElementVisibility(Resource.Id.insert_element, true);
- UpdateBottomBarElementVisibility(Resource.Id.cancel_insert_element, true);
-
- }
-
- public void StopMovingElements()
- {
- try
- {
- MoveElementsTask moveElementsTask = (MoveElementsTask)AppTask;
- foreach (var uuid in moveElementsTask.Uuids)
- {
- IStructureItem elementToMove = App.Kp2a.GetDb().KpDatabase.RootGroup.FindObject(uuid, true, null);
- if (elementToMove.ParentGroup != Group)
- App.Kp2a.GetDb().Dirty.Add(elementToMove.ParentGroup);
- }
- }
- catch (Exception e)
- {
- //don't crash if adding to dirty fails but log the exception:
- Kp2aLog.LogUnexpectedError(e);
- }
-
- AppTask = new NullTask();
- AppTask.SetupGroupBaseActivityButtons(this);
- BaseAdapter adapter = (BaseAdapter)ListAdapter;
- adapter.NotifyDataSetChanged();
- }
-
-
- public void EditGroup(PwGroup pwGroup)
- {
- GroupEditActivity.Launch(this, pwGroup.ParentGroup, pwGroup);
- }
- }
-
- public class GroupListFragment : ListFragment, AbsListView.IMultiChoiceModeListener
- {
- private ActionMode _mode;
- private int _statusBarColor;
-
- public override void OnActivityCreated(Bundle savedInstanceState)
- {
- base.OnActivityCreated(savedInstanceState);
- if (App.Kp2a.GetDb().CanWrite)
- {
- ListView.ChoiceMode = ChoiceMode.MultipleModal;
- ListView.SetMultiChoiceModeListener(this);
- ListView.ItemLongClick += delegate(object sender, AdapterView.ItemLongClickEventArgs args)
- {
- ListView.SetItemChecked(args.Position, true);
- };
-
- }
-
- ListView.ItemClick += (sender, args) => ((GroupListItemView)args.View).OnClick();
-
- StyleListView();
-
- }
-
- protected void StyleListView()
- {
- ListView lv = ListView;
- lv.ScrollBarStyle = ScrollbarStyles.InsideInset;
- lv.TextFilterEnabled = true;
-
- lv.Divider = null;
- }
-
- public bool OnActionItemClicked(ActionMode mode, IMenuItem item)
- {
- var listView = FragmentManager.FindFragmentById(Resource.Id.list_fragment).ListView;
- var checkedItemPositions = listView.CheckedItemPositions;
-
- List checkedItems = new List();
- for (int i = 0; i < checkedItemPositions.Size(); i++)
- {
- if (checkedItemPositions.ValueAt(i))
- {
- checkedItems.Add(((PwGroupListAdapter)ListAdapter).GetItemAtPosition(checkedItemPositions.KeyAt(i)));
- }
- }
-
- //shouldn't happen, just in case...
- if (!checkedItems.Any())
- {
- return false;
- }
- Handler handler = new Handler();
- switch (item.ItemId)
- {
-
- case Resource.Id.menu_delete:
-
- DeleteMultipleItems task = new DeleteMultipleItems((GroupBaseActivity)Activity, App.Kp2a.GetDb(), checkedItems,
- new GroupBaseActivity.RefreshTask(handler, ((GroupBaseActivity)Activity)), App.Kp2a);
- task.Start();
- break;
- case Resource.Id.menu_move:
- var navMove = new NavigateToFolderAndLaunchMoveElementTask(checkedItems.First().ParentGroup, checkedItems.Select(i => i.Uuid).ToList(), ((GroupBaseActivity)Activity).IsSearchResult);
- ((GroupBaseActivity)Activity).StartTask(navMove);
- break;
- case Resource.Id.menu_copy:
-
- var copyTask = new CopyEntry((GroupBaseActivity)Activity, App.Kp2a, (PwEntry) checkedItems.First(),
- new GroupBaseActivity.RefreshTask(handler, ((GroupBaseActivity)Activity)));
-
- ProgressTask pt = new ProgressTask(App.Kp2a, Activity, copyTask);
- pt.Run();
- break;
-
- case Resource.Id.menu_navigate:
- NavigateToFolder navNavigate = new NavigateToFolder(checkedItems.First().ParentGroup, true);
- ((GroupBaseActivity)Activity).StartTask(navNavigate);
- break;
- case Resource.Id.menu_edit:
- GroupEditActivity.Launch(Activity, checkedItems.First().ParentGroup, (PwGroup)checkedItems.First());
- break;
- default:
- return false;
-
-
- }
- listView.ClearChoices();
- ((BaseAdapter)ListAdapter).NotifyDataSetChanged();
- if (_mode != null)
- mode.Finish();
-
- return true;
- }
-
- public bool OnCreateActionMode(ActionMode mode, IMenu menu)
- {
- MenuInflater inflater = Activity.MenuInflater;
- inflater.Inflate(Resource.Menu.group_entriesselected, menu);
- //mode.Title = "Select Items";
- Android.Util.Log.Debug("KP2A", "Create action mode" + mode);
- ((PwGroupListAdapter)ListView.Adapter).InActionMode = true;
- ((PwGroupListAdapter)ListView.Adapter).NotifyDataSetChanged();
- _mode = mode;
- if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
- {
- _statusBarColor = Activity.Window.StatusBarColor;
- Activity.Window.SetStatusBarColor(Activity.Resources.GetColor(Resource.Color.appAccentColorDark));
- }
- return true;
- }
-
- public void OnDestroyActionMode(ActionMode mode)
- {
- Android.Util.Log.Debug("KP2A", "Destroy action mode" + mode);
- ((PwGroupListAdapter)ListView.Adapter).InActionMode = false;
- ((PwGroupListAdapter)ListView.Adapter).NotifyDataSetChanged();
- _mode = null;
- if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
- {
- Activity.Window.SetStatusBarColor(new Android.Graphics.Color(_statusBarColor));
- }
- }
-
- public bool OnPrepareActionMode(ActionMode mode, IMenu menu)
- {
- Android.Util.Log.Debug("KP2A", "Prepare action mode" + mode);
- ((PwGroupListAdapter)ListView.Adapter).InActionMode = mode != null;
- ((PwGroupListAdapter)ListView.Adapter).NotifyDataSetChanged();
- return true;
- }
-
- public void OnItemCheckedStateChanged(ActionMode mode, int position, long id, bool @checked)
- {
- var menuItem = mode.Menu.FindItem(Resource.Id.menu_edit);
- if (menuItem != null)
- {
- menuItem.SetVisible(IsOnlyOneGroupChecked());
- }
-
- menuItem = mode.Menu.FindItem(Resource.Id.menu_navigate);
- if (menuItem != null)
- {
- menuItem.SetVisible(((GroupBaseActivity)Activity).IsSearchResult && IsOnlyOneItemChecked());
- }
-
- menuItem = mode.Menu.FindItem(Resource.Id.menu_copy);
- if (menuItem != null)
- {
- menuItem.SetVisible(IsOnlyOneEntryChecked());
- }
- }
-
- private bool IsOnlyOneGroupChecked()
- {
- var checkedItems = ListView.CheckedItemPositions;
- bool hadCheckedGroup = false;
- if (checkedItems != null)
- {
- for (int i = 0; i < checkedItems.Size(); i++)
- {
- if (checkedItems.ValueAt(i))
- {
- if (hadCheckedGroup)
- {
- return false;
- }
-
- if (((PwGroupListAdapter)ListAdapter).IsGroupAtPosition(checkedItems.KeyAt(i)))
- {
- hadCheckedGroup = true;
- }
- else
- {
- return false;
- }
- }
- }
- }
- return hadCheckedGroup;
- }
-
- private bool IsOnlyOneItemChecked()
- {
- var checkedItems = ListView.CheckedItemPositions;
- bool hadCheckedItem = false;
- if (checkedItems != null)
- {
- for (int i = 0; i < checkedItems.Size(); i++)
- {
- if (checkedItems.ValueAt(i))
- {
- if (hadCheckedItem)
- {
- return false;
- }
-
- hadCheckedItem = true;
- }
- }
- }
- return hadCheckedItem;
- }
-
- private bool IsOnlyOneEntryChecked()
- {
- return IsOnlyOneItemChecked() && !IsOnlyOneGroupChecked();
- }
- }
+ private void Synchronize()
+ {
+ var filestorage = App.Kp2a.GetFileStorage(App.Kp2a.GetDb().Ioc);
+ RunnableOnFinish task;
+ OnFinish onFinish = new ActionOnFinish((success, message) =>
+ {
+ if (!String.IsNullOrEmpty(message))
+ Toast.MakeText(this, message, ToastLength.Long).Show();
+
+ // Tell the adapter to refresh it's list
+ BaseAdapter adapter = (BaseAdapter)ListAdapter;
+ adapter.NotifyDataSetChanged();
+
+ if (App.Kp2a.GetDb().OtpAuxFileIoc != null)
+ {
+ var task2 = new SyncOtpAuxFile(App.Kp2a.GetDb().OtpAuxFileIoc);
+ new ProgressTask(App.Kp2a, this, task2).Run();
+ }
+ });
+
+ if (filestorage is CachingFileStorage)
+ {
+
+ task = new SynchronizeCachedDatabase(this, App.Kp2a, onFinish);
+ }
+ else
+ {
+
+ task = new CheckDatabaseForChanges(this, App.Kp2a, onFinish);
+ }
+
+
+
+
+ var progressTask = new ProgressTask(App.Kp2a, this, task);
+ progressTask.Run();
+
+ }
+
+ public override void OnBackPressed()
+ {
+ AppTask.SetActivityResult(this, KeePass.ExitNormal);
+ base.OnBackPressed();
+ }
+
+ private void ChangeSort()
+ {
+ var sortOrderManager = new GroupViewSortOrderManager(this);
+ IEnumerable sortOptions = sortOrderManager.SortOrders.Select(
+ o => GetString(o.ResourceId)
+ );
+
+ int selectedBefore = sortOrderManager.GetCurrentSortOrderIndex();
+
+ new AlertDialog.Builder(this)
+ .SetSingleChoiceItems(sortOptions.ToArray(), selectedBefore, (sender, args) =>
+ {
+ int selectedAfter = args.Which;
+
+ sortOrderManager.SetNewSortOrder(selectedAfter);
+ // Refresh menu titles
+ ActivityCompat.InvalidateOptionsMenu(this);
+
+ // Mark all groups as dirty now to refresh them on load
+ Database db = App.Kp2a.GetDb();
+ db.MarkAllGroupsAsDirty();
+ // We'll manually refresh this group so we can remove it
+ db.Dirty.Remove(Group);
+
+ // Tell the adapter to refresh it's list
+
+ BaseAdapter adapter = (BaseAdapter)ListAdapter;
+ adapter.NotifyDataSetChanged();
+
+
+ })
+ .SetPositiveButton(Android.Resource.String.Ok, (sender, args) => ((Dialog)sender).Dismiss())
+ .Show();
+
+
+
+
+ }
+
+ public class RefreshTask : OnFinish
+ {
+ readonly GroupBaseActivity _act;
+ public RefreshTask(Handler handler, GroupBaseActivity act)
+ : base(handler)
+ {
+ _act = act;
+ }
+
+ public override void Run()
+ {
+ if (Success)
+ {
+ _act.RefreshIfDirty();
+ }
+ else
+ {
+ DisplayMessage(_act);
+ }
+ }
+ }
+ public class AfterDeleteGroup : OnFinish
+ {
+ readonly GroupBaseActivity _act;
+
+ public AfterDeleteGroup(Handler handler, GroupBaseActivity act)
+ : base(handler)
+ {
+ _act = act;
+ }
+
+
+ public override void Run()
+ {
+ if (Success)
+ {
+ _act.RefreshIfDirty();
+ }
+ else
+ {
+ Handler.Post(() =>
+ {
+ Toast.MakeText(_act, "Unrecoverable error: " + Message, ToastLength.Long).Show();
+ });
+
+ App.Kp2a.LockDatabase(false);
+ }
+ }
+
+ }
+
+ public bool IsBeingMoved(PwUuid uuid)
+ {
+ MoveElementsTask moveElementsTask = AppTask as MoveElementsTask;
+ if (moveElementsTask != null)
+ {
+ if (moveElementsTask.Uuids.Any(uuidMoved => uuidMoved.Equals(uuid)))
+ return true;
+ }
+ return false;
+ }
+
+ public void StartTask(AppTask task)
+ {
+ AppTask = task;
+ task.StartInGroupActivity(this);
+ }
+
+
+ public void StartMovingElements()
+ {
+
+ ShowInsertElementsButtons();
+ BaseAdapter adapter = (BaseAdapter)ListAdapter;
+ adapter.NotifyDataSetChanged();
+ }
+
+ public void ShowInsertElementsButtons()
+ {
+ FindViewById(Resource.Id.fabCancelAddNew).Visibility = ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNewGroup).Visibility = ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNewEntry).Visibility = ViewStates.Gone;
+ FindViewById(Resource.Id.fabAddNew).Visibility = ViewStates.Gone;
+
+ UpdateBottomBarElementVisibility(Resource.Id.insert_element, true);
+ UpdateBottomBarElementVisibility(Resource.Id.cancel_insert_element, true);
+
+ }
+
+ public void StopMovingElements()
+ {
+ try
+ {
+ MoveElementsTask moveElementsTask = (MoveElementsTask)AppTask;
+ foreach (var uuid in moveElementsTask.Uuids)
+ {
+ IStructureItem elementToMove = App.Kp2a.GetDb().KpDatabase.RootGroup.FindObject(uuid, true, null);
+ if (elementToMove.ParentGroup != Group)
+ App.Kp2a.GetDb().Dirty.Add(elementToMove.ParentGroup);
+ }
+ }
+ catch (Exception e)
+ {
+ //don't crash if adding to dirty fails but log the exception:
+ Kp2aLog.LogUnexpectedError(e);
+ }
+
+ AppTask = new NullTask();
+ AppTask.SetupGroupBaseActivityButtons(this);
+ BaseAdapter adapter = (BaseAdapter)ListAdapter;
+ adapter.NotifyDataSetChanged();
+ }
+
+
+ public void EditGroup(PwGroup pwGroup)
+ {
+ GroupEditActivity.Launch(this, pwGroup.ParentGroup, pwGroup);
+ }
+ }
+
+ public class GroupListFragment : ListFragment, AbsListView.IMultiChoiceModeListener
+ {
+ private ActionMode _mode;
+ private int _statusBarColor;
+
+ public override void OnActivityCreated(Bundle savedInstanceState)
+ {
+ base.OnActivityCreated(savedInstanceState);
+
+ ListView.SetMultiChoiceModeListener(this);
+ if (App.Kp2a.GetDb().CanWrite)
+ {
+ ListView.ChoiceMode = ChoiceMode.MultipleModal;
+
+ ListView.ItemLongClick += delegate(object sender, AdapterView.ItemLongClickEventArgs args)
+ {
+ ListView.SetItemChecked(args.Position, true);
+ };
+
+ }
+ else
+ {
+ ListView.ChoiceMode = ChoiceMode.None;
+ }
+
+ ListView.ItemClick += (sender, args) => ((GroupListItemView)args.View).OnClick();
+
+ StyleListView();
+
+ }
+
+ protected void StyleListView()
+ {
+ ListView lv = ListView;
+ lv.ScrollBarStyle = ScrollbarStyles.InsideInset;
+ lv.TextFilterEnabled = true;
+
+ lv.Divider = null;
+ }
+
+ public bool OnActionItemClicked(ActionMode mode, IMenuItem item)
+ {
+ var listView = FragmentManager.FindFragmentById(Resource.Id.list_fragment).ListView;
+ var checkedItemPositions = listView.CheckedItemPositions;
+
+ List checkedItems = new List();
+ for (int i = 0; i < checkedItemPositions.Size(); i++)
+ {
+ if (checkedItemPositions.ValueAt(i))
+ {
+ checkedItems.Add(((PwGroupListAdapter)ListAdapter).GetItemAtPosition(checkedItemPositions.KeyAt(i)));
+ }
+ }
+
+ //shouldn't happen, just in case...
+ if (!checkedItems.Any())
+ {
+ return false;
+ }
+ Handler handler = new Handler();
+ switch (item.ItemId)
+ {
+
+ case Resource.Id.menu_delete:
+
+ DeleteMultipleItems task = new DeleteMultipleItems((GroupBaseActivity)Activity, App.Kp2a.GetDb(), checkedItems,
+ new GroupBaseActivity.RefreshTask(handler, ((GroupBaseActivity)Activity)), App.Kp2a);
+ task.Start();
+ break;
+ case Resource.Id.menu_move:
+ var navMove = new NavigateToFolderAndLaunchMoveElementTask(checkedItems.First().ParentGroup, checkedItems.Select(i => i.Uuid).ToList(), ((GroupBaseActivity)Activity).IsSearchResult);
+ ((GroupBaseActivity)Activity).StartTask(navMove);
+ break;
+ case Resource.Id.menu_copy:
+
+ var copyTask = new CopyEntry((GroupBaseActivity)Activity, App.Kp2a, (PwEntry)checkedItems.First(),
+ new GroupBaseActivity.RefreshTask(handler, ((GroupBaseActivity)Activity)));
+
+ ProgressTask pt = new ProgressTask(App.Kp2a, Activity, copyTask);
+ pt.Run();
+ break;
+
+ case Resource.Id.menu_navigate:
+ NavigateToFolder navNavigate = new NavigateToFolder(checkedItems.First().ParentGroup, true);
+ ((GroupBaseActivity)Activity).StartTask(navNavigate);
+ break;
+ case Resource.Id.menu_edit:
+ GroupEditActivity.Launch(Activity, checkedItems.First().ParentGroup, (PwGroup)checkedItems.First());
+ break;
+ default:
+ return false;
+
+
+ }
+ listView.ClearChoices();
+ ((BaseAdapter)ListAdapter).NotifyDataSetChanged();
+ if (_mode != null)
+ mode.Finish();
+
+ return true;
+ }
+
+ public bool OnCreateActionMode(ActionMode mode, IMenu menu)
+ {
+ MenuInflater inflater = Activity.MenuInflater;
+ inflater.Inflate(Resource.Menu.group_entriesselected, menu);
+ //mode.Title = "Select Items";
+ Android.Util.Log.Debug("KP2A", "Create action mode" + mode);
+ ((PwGroupListAdapter)ListView.Adapter).InActionMode = true;
+ ((PwGroupListAdapter)ListView.Adapter).NotifyDataSetChanged();
+ _mode = mode;
+ if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
+ {
+ _statusBarColor = Activity.Window.StatusBarColor;
+ Activity.Window.SetStatusBarColor(Activity.Resources.GetColor(Resource.Color.appAccentColorDark));
+ }
+ return true;
+ }
+
+ public void OnDestroyActionMode(ActionMode mode)
+ {
+ Android.Util.Log.Debug("KP2A", "Destroy action mode" + mode);
+ ((PwGroupListAdapter)ListView.Adapter).InActionMode = false;
+ ((PwGroupListAdapter)ListView.Adapter).NotifyDataSetChanged();
+ _mode = null;
+ if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
+ {
+ Activity.Window.SetStatusBarColor(new Android.Graphics.Color(_statusBarColor));
+ }
+ }
+
+ public bool OnPrepareActionMode(ActionMode mode, IMenu menu)
+ {
+ Android.Util.Log.Debug("KP2A", "Prepare action mode" + mode);
+ ((PwGroupListAdapter)ListView.Adapter).InActionMode = mode != null;
+ ((PwGroupListAdapter)ListView.Adapter).NotifyDataSetChanged();
+ UpdateMenuItemVisibilities(mode);
+ return true;
+ }
+
+ public void OnItemCheckedStateChanged(ActionMode mode, int position, long id, bool @checked)
+ {
+ UpdateMenuItemVisibilities(mode);
+ }
+
+ private void UpdateMenuItemVisibilities(ActionMode mode)
+ {
+ var menuItem = mode.Menu.FindItem(Resource.Id.menu_edit);
+ if (menuItem != null)
+ {
+ menuItem.SetVisible(IsOnlyOneGroupChecked());
+ }
+
+ menuItem = mode.Menu.FindItem(Resource.Id.menu_navigate);
+ if (menuItem != null)
+ {
+ menuItem.SetVisible(((GroupBaseActivity) Activity).IsSearchResult && IsOnlyOneItemChecked());
+ }
+
+ menuItem = mode.Menu.FindItem(Resource.Id.menu_copy);
+ if (menuItem != null)
+ {
+ menuItem.SetVisible(IsOnlyOneEntryChecked());
+ }
+ }
+
+ private bool IsOnlyOneGroupChecked()
+ {
+ var checkedItems = ListView.CheckedItemPositions;
+ bool hadCheckedGroup = false;
+ if (checkedItems != null)
+ {
+ for (int i = 0; i < checkedItems.Size(); i++)
+ {
+ if (checkedItems.ValueAt(i))
+ {
+ if (hadCheckedGroup)
+ {
+ return false;
+ }
+
+ if (((PwGroupListAdapter)ListAdapter).IsGroupAtPosition(checkedItems.KeyAt(i)))
+ {
+ hadCheckedGroup = true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+ }
+ return hadCheckedGroup;
+ }
+
+ private bool IsOnlyOneItemChecked()
+ {
+ var checkedItems = ListView.CheckedItemPositions;
+ bool hadCheckedItem = false;
+ if (checkedItems != null)
+ {
+ for (int i = 0; i < checkedItems.Size(); i++)
+ {
+ if (checkedItems.ValueAt(i))
+ {
+ if (hadCheckedItem)
+ {
+ return false;
+ }
+
+ hadCheckedItem = true;
+ }
+ }
+ }
+ return hadCheckedItem;
+ }
+
+ private bool IsOnlyOneEntryChecked()
+ {
+ return IsOnlyOneItemChecked() && !IsOnlyOneGroupChecked();
+ }
+ }
}
diff --git a/src/keepass2android/GroupEditActivity.cs b/src/keepass2android/GroupEditActivity.cs
index 203e0971..3da41d72 100644
--- a/src/keepass2android/GroupEditActivity.cs
+++ b/src/keepass2android/GroupEditActivity.cs
@@ -52,6 +52,8 @@ namespace keepass2android
}
+ public const int RequestCodeGroupEdit = 9713;
+
public static void Launch(Activity act, PwGroup parentGroup)
{
@@ -60,7 +62,7 @@ namespace keepass2android
PwGroup parent = parentGroup;
i.PutExtra(KeyParent, parent.Uuid.ToHexString());
- act.StartActivityForResult(i, 0);
+ act.StartActivityForResult(i, RequestCodeGroupEdit);
}
public static void Launch(Activity act, PwGroup parentGroup, PwGroup groupToEdit)
diff --git a/src/keepass2android/LockingActivity.cs b/src/keepass2android/LockingActivity.cs
index 7a588b14..d883120e 100644
--- a/src/keepass2android/LockingActivity.cs
+++ b/src/keepass2android/LockingActivity.cs
@@ -16,6 +16,10 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file
*/
using System;
+using System.Collections.Generic;
+using Android.App;
+using Android.Content;
+using Android.Content.PM;
using Android.Runtime;
namespace keepass2android
@@ -35,7 +39,41 @@ namespace keepass2android
{
}
- protected override void OnPause() {
+ protected override void OnStart()
+ {
+ base.OnStart();
+
+ if (App.Kp2a.GetDb().Loaded)
+ {
+ var xcKey = App.Kp2a.GetDb().KpDatabase.MasterKey.GetUserKey();
+ if (xcKey != null)
+ {
+ xcKey.Activity = this;
+ _currentlyWaitingKey = xcKey;
+
+ }
+
+ }
+
+ }
+
+ protected override void OnStop()
+ {
+ base.OnStop();
+ if (App.Kp2a.GetDb().Loaded)
+ {
+ var xcKey = App.Kp2a.GetDb().KpDatabase.MasterKey.GetUserKey();
+ if (xcKey != null)
+ {
+ //don't store a pointer to this activity in the static database object to avoid memory leak
+ if (xcKey.Activity == this) //don't reset if another activity has come to foreground already
+ xcKey.Activity = null;
+ }
+
+ }
+ }
+
+ protected override void OnPause() {
base.OnPause();
TimeoutHelper.Pause(this);
@@ -52,6 +90,61 @@ namespace keepass2android
TimeoutHelper.Resume(this);
}
- }
+
+ public const int RequestCodeChallengeYubikey = 793;
+
+ protected ChallengeXCKey _currentlyWaitingKey;
+
+
+ protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
+ {
+ base.OnActivityResult(requestCode, resultCode, data);
+ if ((requestCode == RequestCodeChallengeYubikey) && (_currentlyWaitingKey != null))
+ {
+ if (resultCode == Result.Ok)
+ {
+ byte[] challengeResponse = data.GetByteArrayExtra("response");
+ if ((challengeResponse != null) && (challengeResponse.Length > 0))
+ {
+ _currentlyWaitingKey.Response = challengeResponse;
+ }
+ else
+ _currentlyWaitingKey.Error = "Did not receive a valid response.";
+
+
+ }
+ else
+ {
+ _currentlyWaitingKey.Error = "Cancelled Yubichallenge.";
+ }
+
+ }
+
+ }
+
+
+ public Intent TryGetYubichallengeIntentOrPrompt(byte[] challenge, bool promptToInstall)
+ {
+ Intent chalIntent = new Intent("com.yubichallenge.NFCActivity.CHALLENGE");
+ chalIntent.PutExtra("challenge", challenge);
+ chalIntent.PutExtra("slot", 2);
+ IList activities = PackageManager.QueryIntentActivities(chalIntent, 0);
+ bool isIntentSafe = activities.Count > 0;
+ if (isIntentSafe)
+ {
+ return chalIntent;
+ }
+ if (promptToInstall)
+ {
+ AlertDialog.Builder b = new AlertDialog.Builder(this);
+ b.SetMessage(Resource.String.YubiChallengeNotInstalled);
+ b.SetPositiveButton(Android.Resource.String.Ok,
+ delegate { Util.GotoUrl(this, GetString(Resource.String.MarketURL) + "com.yubichallenge"); });
+ b.SetNegativeButton(Resource.String.cancel, delegate { });
+ b.Create().Show();
+ }
+ return null;
+ }
+ }
}
diff --git a/src/keepass2android/PasswordActivity.cs b/src/keepass2android/PasswordActivity.cs
index 187e777c..e4be3cf1 100644
--- a/src/keepass2android/PasswordActivity.cs
+++ b/src/keepass2android/PasswordActivity.cs
@@ -19,6 +19,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Security.Cryptography;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
@@ -60,7 +61,6 @@ using Process = Android.OS.Process;
using KeeChallenge;
using KeePassLib.Cryptography.KeyDerivation;
-using KeePassLib.Security;
using AlertDialog = Android.App.AlertDialog;
using Enum = System.Enum;
using Exception = System.Exception;
@@ -69,72 +69,7 @@ using Toolbar = Android.Support.V7.Widget.Toolbar;
namespace keepass2android
{
- class ChallengeXCKey : IUserKey, ISeedBasedUserKey
- {
- private readonly Activity _activity;
- private readonly int _requestCode;
-
- public ProtectedBinary KeyData
- {
- get
- {
-
- _activity.RunOnUiThread(
- () =>
- {
- //TODO refactor to use code from PasswordActivity including notice to install Yubichallenge
- Intent chalIntent = new Intent("com.yubichallenge.NFCActivity.CHALLENGE");
- byte[] challenge = _masterSeed;
- byte[] challenge64 = new byte[64];
- for (int i = 0; i < 64; i++)
- {
- if (i < challenge.Length)
- {
- challenge64[i] = challenge[i];
- }
- else
- {
- challenge64[i] = (byte) (challenge64.Length - challenge.Length);
- }
-
- }
-
- Kp2aLog.Log(MemUtil.ByteArrayToHexString(challenge64));
-
- chalIntent.PutExtra("challenge", challenge64);
- chalIntent.PutExtra("slot", 2);
- IList activities = _activity.PackageManager.QueryIntentActivities(chalIntent, 0);
- bool isIntentSafe = activities.Count > 0;
- if (isIntentSafe)
- {
- _activity.StartActivityForResult(chalIntent, _requestCode);
- }
- else throw new Exception("TODO implement: you need YubiChallenge");
- });
- while (Response == null)
- Thread.Sleep(100);
-
- return new ProtectedBinary(true, Response);
- }
- }
-
- private byte[] _masterSeed;
-
- public ChallengeXCKey(Activity activity, int requestCode)
- {
- this._activity = activity;
- _requestCode = requestCode;
- Response = null;
- }
-
- public void SetParams(byte[] masterSeed)
- {
- _masterSeed = masterSeed;
- }
-
- public byte[] Response { get; set; }
- }
- [Activity(Label = "@string/app_name",
+ [Activity(Label = "@string/app_name",
ConfigurationChanges = ConfigChanges.Orientation,
LaunchMode = LaunchMode.SingleInstance,
WindowSoftInputMode = SoftInput.AdjustResize,
@@ -175,7 +110,7 @@ namespace keepass2android
private const int RequestCodePrepareDbFile = 1000;
private const int RequestCodePrepareOtpAuxFile = 1001;
- private const int RequestCodeChallengeYubikey = 1002;
+
private const int RequestCodeSelectKeyfile = 1003;
private const int RequestCodePrepareKeyFile = 1004;
private const int RequestCodeSelectAuxFile = 1005;
@@ -184,8 +119,6 @@ namespace keepass2android
private Task _loadDbFileTask;
private bool _loadDbTaskOffline; //indicate if preloading was started with offline mode
- private ChallengeXCKey _currentlyWaitingKey;
-
private IOConnectionInfo _ioConnection;
private String _keyFileOrProvider;
bool _showPassword;
@@ -375,7 +308,7 @@ namespace keepass2android
// to retry with typing the full password, but that's intended to avoid showing the password to a
// a potentially unauthorized user (feature request https://keepass2android.codeplex.com/workitem/274)
Handler handler = new Handler();
- OnFinish onFinish = new AfterLoad(handler, this);
+ OnFinish onFinish = new AfterLoad(handler, this, _ioConnection);
_performingLoad = true;
LoadDb task = new LoadDb(App.Kp2a, _ioConnection, _loadDbFileTask, compositeKey, _keyFileOrProvider, onFinish);
_loadDbFileTask = null; // prevent accidental re-use
@@ -434,69 +367,71 @@ namespace keepass2android
GetAuxFileLoader().LoadAuxFile(false);
}
- if (requestCode == RequestCodeChallengeYubikey && resultCode == Result.Ok)
- {
- try
- {
- byte[] challengeResponse = data.GetByteArrayExtra("response");
- if (_currentlyWaitingKey != null)
- {
- _currentlyWaitingKey.Response = challengeResponse;
- return;
- }
- else
- {
- _challengeProv = new KeeChallengeProv();
- _challengeSecret = _challengeProv.GetSecret(_chalInfo, challengeResponse);
- Array.Clear(challengeResponse, 0, challengeResponse.Length);
- }
-
- }
- catch (Exception e)
- {
- Kp2aLog.Log(e.ToString());
- Toast.MakeText(this, "Error: " + e.Message, ToastLength.Long).Show();
- return;
- }
-
- UpdateOkButtonState();
- FindViewById(Resource.Id.otpInitView).Visibility = ViewStates.Gone;
-
- if (_challengeSecret != null)
- {
- new LoadingDialog
\ No newline at end of file
diff --git a/src/keepass2android/Resources/layout/entry_view_contents.xml b/src/keepass2android/Resources/layout/entry_view_contents.xml
index 8c05ad38..4d08fa4f 100644
--- a/src/keepass2android/Resources/layout/entry_view_contents.xml
+++ b/src/keepass2android/Resources/layout/entry_view_contents.xml
@@ -174,6 +174,12 @@
android:typeface="monospace"
android:layout_toLeftOf="@id/password_vdots"
style="@style/EntryItem" />
+
diff --git a/src/keepass2android/Resources/layout/file_row.xml b/src/keepass2android/Resources/layout/file_row.xml
index 03188fa5..8c25e70c 100644
--- a/src/keepass2android/Resources/layout/file_row.xml
+++ b/src/keepass2android/Resources/layout/file_row.xml
@@ -17,10 +17,28 @@
You should have received a copy of the GNU General Public License
along with Keepass2Android. If not, see .
-->
-
\ No newline at end of file
+
+
+
+
+
diff --git a/src/keepass2android/Resources/layout/ftpcredentials.xml b/src/keepass2android/Resources/layout/ftpcredentials.xml
index 8e666bcb..f0fc468e 100644
--- a/src/keepass2android/Resources/layout/ftpcredentials.xml
+++ b/src/keepass2android/Resources/layout/ftpcredentials.xml
@@ -16,8 +16,8 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:text=""
- android:layout_weight="1"
- android:inputType="textNoSuggestions"
+ android:layout_weight="1"
+ android:inputType="textWebEmailAddress"
android:hint="@string/hint_sftp_host" />
@@ -62,6 +63,7 @@
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:layout_marginTop="4dip"
+ android:inputType="textWebEmailAddress"
android:text="@string/initial_directory" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/keepass2android/Resources/layout/httpcredentials.axml b/src/keepass2android/Resources/layout/httpcredentials.axml
index 9d65a092..2353c3fd 100644
--- a/src/keepass2android/Resources/layout/httpcredentials.axml
+++ b/src/keepass2android/Resources/layout/httpcredentials.axml
@@ -17,7 +17,7 @@
android:singleLine="true"
android:layout_weight="1"
android:text=""
- android:inputType="textNoSuggestions"
+ android:inputType="textWebEmailAddress"
android:hint="@string/hint_http_url" />
diff --git a/src/keepass2android/Resources/layout/owncloudcredentials.xml b/src/keepass2android/Resources/layout/owncloudcredentials.xml
index c26c6231..b3e1c702 100644
--- a/src/keepass2android/Resources/layout/owncloudcredentials.xml
+++ b/src/keepass2android/Resources/layout/owncloudcredentials.xml
@@ -17,7 +17,7 @@
android:singleLine="true"
android:layout_weight="1"
android:text=""
- android:inputType="textNoSuggestions"
+ android:inputType="textWebEmailAddress"
android:hint="@string/hint_owncloud_url" />
@@ -27,6 +27,7 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:text=""
+ android:inputType="textWebEmailAddress"
android:hint="@string/hint_username" />
diff --git a/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_offline.xml b/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_offline.xml
new file mode 100644
index 00000000..c6e4e584
--- /dev/null
+++ b/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_offline.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_offline_round.xml b/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_offline_round.xml
new file mode 100644
index 00000000..c6e4e584
--- /dev/null
+++ b/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_offline_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_online.xml b/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_online.xml
new file mode 100644
index 00000000..87c6a570
--- /dev/null
+++ b/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_online.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_online_round.xml b/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_online_round.xml
new file mode 100644
index 00000000..87c6a570
--- /dev/null
+++ b/src/keepass2android/Resources/mipmap-anydpi-v26/ic_launcher_online_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_offline.png b/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_offline.png
new file mode 100644
index 00000000..2ccc509f
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_offline.png differ
diff --git a/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_offline_round.png b/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_offline_round.png
new file mode 100644
index 00000000..223ade71
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_offline_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_online.png b/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_online.png
new file mode 100644
index 00000000..b78f6091
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_online.png differ
diff --git a/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_online_round.png b/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_online_round.png
new file mode 100644
index 00000000..42e7b217
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-hdpi/ic_launcher_online_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_offline.png b/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_offline.png
new file mode 100644
index 00000000..5913476c
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_offline.png differ
diff --git a/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_offline_round.png b/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_offline_round.png
new file mode 100644
index 00000000..172ab64d
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_offline_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_online.png b/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_online.png
new file mode 100644
index 00000000..18310b94
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_online.png differ
diff --git a/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_online_round.png b/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_online_round.png
new file mode 100644
index 00000000..9abc0e0b
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-mdpi/ic_launcher_online_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_offline.png b/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_offline.png
new file mode 100644
index 00000000..514a1eda
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_offline.png differ
diff --git a/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_offline_round.png b/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_offline_round.png
new file mode 100644
index 00000000..1872cef3
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_offline_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_online.png b/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_online.png
new file mode 100644
index 00000000..d022e43e
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_online.png differ
diff --git a/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_online_round.png b/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_online_round.png
new file mode 100644
index 00000000..a604945c
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xhdpi/ic_launcher_online_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_offline.png b/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_offline.png
new file mode 100644
index 00000000..6f6e76c7
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_offline.png differ
diff --git a/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_offline_round.png b/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_offline_round.png
new file mode 100644
index 00000000..84a11fb4
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_offline_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_online.png b/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_online.png
new file mode 100644
index 00000000..8fd27c1f
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_online.png differ
diff --git a/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_online_round.png b/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_online_round.png
new file mode 100644
index 00000000..6c960f00
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xxhdpi/ic_launcher_online_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_offline.png b/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_offline.png
new file mode 100644
index 00000000..28d9d179
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_offline.png differ
diff --git a/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_offline_round.png b/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_offline_round.png
new file mode 100644
index 00000000..fb4ef94b
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_offline_round.png differ
diff --git a/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_online.png b/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_online.png
new file mode 100644
index 00000000..04c2b3a3
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_online.png differ
diff --git a/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_online_round.png b/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_online_round.png
new file mode 100644
index 00000000..8ff1a574
Binary files /dev/null and b/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_online_round.png differ
diff --git a/src/keepass2android/Resources/values-ca/strings.xml b/src/keepass2android/Resources/values-ca/strings.xml
index f6ee5170..a92d5abc 100644
--- a/src/keepass2android/Resources/values-ca/strings.xml
+++ b/src/keepass2android/Resources/values-ca/strings.xml
@@ -87,7 +87,11 @@
Habilitar desbloqueig per empremta dactilar
Habilitar desbloqueig per empremta dactilar per DesbloqueigRÃ pid
Tocar sensor per desbloquejar la base de dades
+ Ha fallat el desbloqueig per empremta digital. La clau de desxifratge ha estat invalidada per Android OS. Això sol passar si s\'ha registrat una nova empremta digital o si s\'han fet canvias a les preferències de seguretat.
+ Ha fallat el desbloqueig de la base de dades: clau composta invà lida. El desbloqueig per empremta digital s\'ha deshabilitat perquè aparentment la contrasenya mestra enmagatzemada ja no és và lida.
Si us plau, torneu a activar Desblocatge amb empremta per la nova contrasenya mestra.
+ Si us plau, desbloqueja amb la contrasenya i llavors re activa el desblocatge amb empremta en la configuració de base de dades.
+ No s\'ha pogut inicialitzar el sensor d\'empremta digital.
Això emmagatzemarà la contrasenya mestra d\'aquest
dispositiu, xifrat amb el magatzem de claus d\'Android i
@@ -206,6 +210,7 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
Recorda la localització d\'arxius clau
Guarda arxiu clau
Elimina
+ Editar
Rijndael (AES)
Arrel
Funció clau de derivació
@@ -267,21 +272,24 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
Importar fitxer a nova base de dades...
Cal especificar l\'URL complet incloent protocol com http://.
En el següent pas serà seleccionat fitxer que voleu importar.
- Permetre QuickUnlock
+ Permetre DesbloqueigRÃ pid
Introduir últims %1$d carà cters de la seva contrasenya:
- QuickUnlock!
+ Introduïu el codi de DesbloqueigRà pid:
+ DesbloqueigRÃ pid!
Tancar base de dades
- Permetre QuickUnlock per defecte
- Defineix si QuickUnlock està habilitada per defecte o no.
+ Permetre DesbloqueigRÃ pid per defecte
+ Defineix si DesbloqueigRà pid està habilitada per defecte o no.
Protegir l\'exhibició de base de dades
Si està activat, no s\'admeten cap captura de pantalla i cap miniatura de l\'aplicació es mostra a la llista d\'aplicacions recents.
- Amagar icona de QuickUnlock
- Malauradament QuickUnlock no funciona sense mostrar una icona de notificació. Seleccioneu aquesta opció per utilitzar una icona transparent.
- Amagar icona de QuickUnlock
- QuickUnlock requereix una notificació per treballar pròpiament. Seleccioneu aquesta opció per mostrar una notificació sense una icona.
- Longitud de clau QuickUnlock
- Nombre mà xim de carà cters utilitzats com a contrasenya de QuickUnlock.
- QuickUnlock ha fallat: Contrasenya incorrecta!
+ Amagar icona de DesbloqueigRÃ pid
+ Malauradament DesbloqueigRà pid no funciona sense mostrar una icona de notificació. Seleccioneu aquesta opció per utilitzar una icona transparent.
+ Amagar icona de DesbloqueigRÃ pid
+ DesbloqueigRà pid requereix una notificació per treballar pròpiament. Seleccioneu aquesta opció per mostrar una notificació sense una icona.
+ Longitud de clau DesbloqueigRÃ pid
+ Nombre mà xim de carà cters utilitzats com a contrasenya de DesbloqueigRà pid.
+ Amagar longitud de DesbloqueigRÃ pid
+ Si està activat, la longitud del codi de DesbloqueigRà pid no apareix a la pantalla de DesbloqueigRà pid.
+ DesbloqueigRÃ pid ha fallat: Contrasenya incorrecta!
Directori d\'arxius adjunts
Directori on es guarden els fitxers adjunts.
Deseu el fitxer adjunt
@@ -302,7 +310,7 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
Afegir el fitxer adjunt...
Afegir la cadena addicional
Suprimir la corda addicional
- %1$s: bloquejat. QuickUnlock activat.
+ %1$s: bloquejat. DesbloqueigRÃ pid activat.
%1$s: desbloquejat.
Introduïu les credencials del servidor
Operacions d\'arxiu
@@ -313,6 +321,8 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
Esborra la contrasenya mestra introduïda en deixar la pantalla sense obrir la base de dades.
Bloqueja quan surtis de l\'aplicació
Tancar la base de dades en deixar l\'aplicació prement el botó endarrere.
+ Activar el camp de cerca al Inici
+ Activa el camp de cerca a la visualització de grup després de desbloquejar o en buscar una entrada
Amagar l\'opció de donació
Aquesta configuració és pels donants. Està disponible després d\'utilitzar Keepass2Android durant un temps només.
Sense les donacions, aquest aplicació no existiria i no milloraria contÃnuament! Si vostè encara no ha donat, si us plau consideri fer una donació ara.
@@ -320,6 +330,10 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
Jo no li donaria un cèntim o ja he fet donació. No demanar donació, ni tan sols a l\'aniversari de l\'autor.
Posant en memòria cau la base de dades
Manté una còpia de la base de dades remota en el directori de memòria cau de l\'aplicació. Això permet utilitzar bases de dades remotes fins i tot quan esteu fora de lÃnia.
+ Còpia de seguretat local
+ Crea una còpia local després de carregar correctament una base de dades.
+ Actualitzar la còpia de seguretat local...
+ Còpia de seguretat local de %1$s
Certificats SSL
Defineix el comportament quan fracassa validació de certificat. Nota: podeu instal·lar certificats en el dispositiu si fracassa la validació!
Neteja la memòria cau?
@@ -333,6 +347,7 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
Notificacions independents
Mostrar les notificacions separades per copiar el nom d\'usuari i contrasenya al porta-retalls i activant el teclat.
Servei d\'accessibilitat d\'emplenament automà tic
+ Servei d\'emplenament automà tic
Notificació de teclat KP2A
Fes entrada totalment accessible a través del teclat KP2A (recomanat).
Canvi de teclat
@@ -347,6 +362,10 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
Canviar altra vegada a teclat previ quan no s\'obre cap entrada.
Icona de notificació mentre estigui desbloquejat
Mostra una icona de notificació mentre la base de dades està desbloquejada.
+ Android 8 ha introduït un nou comportament de les notificacions. Si voleu amagar la icona de les notificacions de Keepass2Android, si us plau, s\'ha de fer a través de la configuració del sistema. Estableix la importà ncia de la categoria de les notificacions al MÃnim.
+ Obrir la configuració
+ No m\'importa
+ L\'arxiu ja no és accessible a Keepass2Android. O ha sigut eliminat o els permisos d\'accés han estat revocats. Si us plau utilitzeu re-obre l\'arxiu, per exemple, utilitzant el canvi de base de dades.
Pre-carregar el fitxer de base de dades
Comença carregant de fons o descà rrega de l\'arxiu de base de dades durant l\'entrada de contrasenya d\'inici.
Voleu sobreescriure el binari existent amb el mateix nom?
@@ -493,6 +512,7 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
desactivat
Trobar connectors en lÃnia
Permisos de nivell
+ no activat
%1$s sol·licita credencials per %2$s.
%1$s sol·licita credencials. Si us plau seleccioni una entrada.
Activat
@@ -520,6 +540,7 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
Sembla que vostè ha obert l\'arxiu des d\'una aplicació externa. D\'aquesta manera no s\'admet el suport d\'escriptura. Si voleu fer canvis a la base de dades, tanqueu la base de dades i seleccioneu Canviar base de dades. Llavors obri l\'arxiu des d\'una de les opcions disponibles si és possible.
L\'indicador de només lectura està establert. Treu l\'indicador si voleu fer canvis a la base de dades.
Escriure no és possible a causa de restriccions introduïdes en Android KitKat. Si voleu fer canvis a la base de dades, tanqueu la base de dades i seleccioneu canvi de base de dades. Obriu el fitxer amb el selector de fitxers de sistema.
+ Les còpies de seguretat local no es poden modificar. Pots utilitzar la configuració de base de dades - exportar base de dades per exportar aquesta còpia de seguretat a un altre lloc des del qual pots re-obrir-la. Llavors es podrà escriure una altra vegada.
Afegir una icona d\'arxiu...
Copiant el fitxer...
Copiar
@@ -554,6 +575,13 @@ Això emmagatzemarà la contrasenya mestra d\'aquest
• Assegureu-vos que ha seleccionat el tipus de contrasenya correcta. Assegureu-vos que correspongui el tipus utilitzada en la creació de la base de dades.\n
• Assegureu-vos que ha seleccionat l\'arxiu de base de dades correcte.
+
+ \n
+ • Suggeriment: si pensa que el seu arxiu de base de dades podria estar corrupte o no recordes la clau mestra després de modificar-lo, pot provar amb l\'última versió d\'arxiu obert satisfactòriament fent clic \"%1$s\" i seleccionant la còpia de seguretat local.
+
+ \n
+ • Suggeriment: Keepass2Android ha emmagatzemat l\'última versió d\'arxiu obert satisfactòriament a la memòria interna. Podeu obrir-lo fent clic \"%1$s\" i seleccionant la còpia de seguretat local.
+
Arxiu està corrupte. \n
aquà hi ha alguns consells que poden ajudar a diagnosticar el problema: \n
@@ -561,6 +589,12 @@ Arxiu està corrupte. \n
• si vostè va copiar l\'arxiu mitjançant USB (MTP Mode), intenteu-ho novament amb eines com MyPhoneExplorer. MTP trunca arxius en certs casos. \n
• si no es pot obrir el fitxer des del mateix emplaçament en el seu PC, és molt probable que l\'arxiu estigui corrupte. Si us plau utilitzi una còpia de seguretat de la base de dades. Si vostè creu que Keepass2Android ha malmès el fitxer, si us plau contacte amb suport. \n
• si encara pots obrir l\'arxiu en el seu PC, contacteu amb suport. Podria intentar guardar-lo amb diferents configuracions (p. ex. descomprimit) en el PC i provar a obrir-lo de nou en Keepass2Android.
+ Base de dades desbloquejada
+ Notificació sobre la base de dades que s\'està desbloquejant
+ DesbloqueigRÃ pid
+ Notificació sobre la base de dades bloquejada amb DesbloqueigRà pid
+ Notificacions de les entrades
+ Notificació per simplificar l\'accés a l\'entrada seleccionada actualment.
Keepass2Android: Ha ocorregut un error.
S\'ha produït un error inesperat mentre s\'executava Keepass2Android. Si us plau, ajudeu-nos a arreglar això permetent a l\'aplicació enviar informes d\'errors.
Els informes d\'error mai contindrà cap contingut de la seva base de dades o la contrasenya mestra. Podeu desactivar-los en la configuració de l\'aplicació.
@@ -569,6 +603,30 @@ Arxiu està corrupte. \n
Preguntar després d\'error
Enviar registre d\'errors
Mostra el teclat per introduir la contrasenya quan l\'escà ner d\'empremta digital és actiu.
+
+Versió 1.05\n
+ * Utilitzeu canals de notificació per a Android 8, que permeten la configuració a través de la configuració del sistema\n
+ * Mostra la icona d\'entrada a la notificació\n
+ * Utilitzeu icones adaptables per a Android 8, utilitzeu la icona de llançador rodó per a Android 7\n
+ * Permet activar la cerca desbloquejada (veure configuració)\n
+ * S\'ha canviat la manera en què els fitxers s\'escriuen a través d\'Access Storage Framework, es solucionen problemes amb l\'actualització de fitxers a Google Drive oberts a través del selector de fitxers del sistema\n
+ * S\'han afegit alguns textos d\'informació per evitar alguns malentesos comuns\n
+ * Crea còpies de seguretat locals de bases de dades obertes amb èxit per reduir el risc de pèrdua de dades\n
+ * Actualitzat JSch per donar suport als xifrats SSH més recents\n
+ * Permet editar la configuració de la connexió, p. Ex. quan la contrasenya del WebDav ha canviat\n
+ * S\'ha afegit suport per al mode de contrasenya està tica de Yubikey Neo\n
+ * Permet desactivar el suggeriment d\'emplenament automà tic\n
+ * S\'ha solucionat la fuga de dades al logcat\n
+ * correccions d\'errors\n
+
+
+Versió 1.04b\n
+ * Evita errada quan l\'usuari intenta activar l\'emplenament automà tic als dispositius Huawei.\n
+
+ Versió 1.04\n
+ * Afegit servei d\'emplenament automà tic per Android 8.0 i posteriors.\n
+ * Actualitzades les biblioteques, utilitats de compilació i versió de SDK.\n
+
Versió 1.03\n
* Eliminat servei d\'accessibilitat d\'emplenament automà tic a petició de Google. Si us plau, vegeu la configuració d\'accés de contrasenya per trobar un connector que repliqui l\'anterior funcionalitat. \n
@@ -593,6 +651,13 @@ Versió 1.01-g\n
* Arreglat codificació incorrecta de credencials d\'FTP(S)\n
* Arreglat incident quan s\'utilitza OneDrive en una versió antiga d\'Android\n
* Mostrar hora local en pantalla d\'entrada\n
+
+ Versió 1.01-d\n
+ * Arreglat fallo en llistat a OneDrive\n
+ * Permetre ignorar errors de certificat també quan la verificació del nom del domini falla (no recomanat per a ús en producció)\n
+ * Arreglat el desblocatge rà pid que fallava malgrat el codi era correcte\n
+
+
Versió 0.9.8c\n
* Arreglat vulnerabilitat SSL en el Microsoft Live SDK (utilitzat en accedir a arxius mitjançant OneDrive) \n
@@ -668,14 +733,126 @@ Versió 1.0.0e\n
* suport per escriure a bases de dades Keepass 1 (kdb) (beta!) \n
* millor canviar a teclat anterior (també treballa en dispositius que no disposin d\'accés de superusuari - rootejats)\n
* suport per a KeeChallenge amb challenges\n de longitud variable\n
- * evitar prendre captures de pantalla des de les pantalles de QuickUnlock i contrasenya\n
+ * evitar prendre captures de pantalla des de les pantalles de DesbloqueigRÃ pid i contrasenya\n
* ordenació inversa per Ordena per data de modificació (ara descendent) \n
- * errors arreglats: vista de notes ara actualitzada correctament després de canvis, vistes de contrasenyes ara amaga contrasenya correctament en (esperançadorament) tots els dispositius, arreglat problema que li permetia afegir una entrada doble , solucionat el problema que mostrava avÃs de duplicat UUID fins i tot després d\'arreglar la base de dades\n
+ * errors arreglats: vista de notes ara actualitzada correctament després de canvis, vistes de contrasenyes ara amaga contrasenya correctament en (esperançadament) tots els dispositius, arreglat problema que li permetia afegir una entrada doble , solucionat el problema que mostrava avÃs de duplicat UUID fins i tot després d\'arreglar la base de dades\n
Version 0.9.6\n * allow to import key file and/or local database file to app internal directory (see settings)\n * allow different sorting options\n * improved preferences for automatic keyboard switching\n * updated application logo and notification design, design by Stefano Pignataro (http://www.spstudio.at)\n * password generator remembers last settings\n * set notification visibility for Android 5 lock screen\n * now clearing master password field when leaving the app without clicking OK\n * fixed issue with missing input languages in keyboard setting on some devices\n * fixed issue with automatic keyboard switching on rooted devices\n * added check for corrupt databases (duplicate UUIDs)\n * automatically reload database when change detected, solves security concern about revealing master password\n * improved polish small keyboard layout, fixed keyboard settings theme (thanks to Wiktor Åawski)\n
Versió 0.9.5 \n * Arreglat problemes amb arxiu de navegació (especialment en Android 4.4) \n * Solucionat el problema amb la cà rrega d\'arxius .kdb (Keepass 1) amb el Nexus 5 amb Android Lollipop\n * afegit l\'opció per evitar prendre screenshots/mostrant app a la llista d\'aplicacions recents\n * Solucionat el problema amb Google Drive arxiu d\'emmagatzematge (edició regular) \n * Permeten arxius clau en emmagatzematge deliberada tipus (edició regular) \n * SDK de Dropbox actualitzat per incloure un pedaç de seguretat oficial (edició regular) \n * Actualitzades eines de construcció--> mida dels apk augmentada:-(\ n He promès alguns canvis més. Vindran amb el pròxim llançament- Ho sentim. Volia publicar aquests destrets calents tan aviat com sigui possible.
+
+ Version 0.9.4\n
+ * added plug-in support: See settings for how to get plug-ins!\n
+ * published QR plug-in (scan passwords, display passwords as QR code, transfer entries to other KP2A devices)\n
+ * published InputStick plugin (transfer credentials to your PC via bluetooth - requires InputStick USB stick)\n
+ * Third party apps can now simply implement querying KP2A for credentials. Are you a developer? Please add this to your app if suitable!\n
+ * added TOTP support (compatible with KeeOTP and TrayTotp)\n
+ * app should no longer be killed by Android when database is open\n
+ * database is no longer locked when leaving the app with the back button (see settings)\n
+ * display group names in search results view (*)\n
+ * added context menu in search results view including \"Navigate to parent\" option (*)\n
+ * added option to display group name in entry view (*)\n
+ * (*) thanks to Matthieu for implementing these features!\n
+ * support KeeChallenge (with Yubikey NEO). Thanks to Ben Rush for implementing the connector!\n
+ * improved user interface\n
+ * fixed a bug in Google Drive interface\n
+ * added option to disable the \"donate\" option\n
+ * QuickUnlock icon now hidden on Android 4.2+ devices by default\n
+
+
+ Version 0.9.3 r5\n
+ * Incorporated fixes from Xamarin: Keepass2Android now compatible with ART on Android 4.4.2. Finally!\n
+ * Bug fixes: bugs in synchronization (refresh display, correct check for changes on http), bugs on Android 2.x devices, bugs in Google Drive and OneDrive storage implementations, clear clipboard on close database, bug opening attachments, display problems with keyboard\n
+
+
+ Version 0.9.3\n
+ * New keyboard with many improvements. See settings to customize.\n
+ * Read-only support for kdb (Keepass 1 files). Experimental!\n
+ * Added SFTP support\n
+ * Added workaround for bug in ART (Android 4.4.2)\n
+ * Bug fixes\n
+
+
+ Version 0.9.2\n
+ * Added OTP support (compatible with OtpKeyProv plugin)\n
+ * Integrated NFC support for OTPs from YubiKey NEO \n
+ * Several UI improvements\n
+ * Integrated Keepass 2.24 library\n
+ * Added option to kill the app process (see settings)\n
+ * Improved SSL certificate validation\n
+ * Bug fixes\n
+
+
+ Version 0.9.1\n
+ * Integrated SkyDrive support (Keepass2Android regular edition only)\n
+ * Fixed problems with Google Drive integration\n
+ * Added NTLM support
+
+
+ Version 0.9\n
+ * Integrated Dropbox and Google Drive support (read/write databases; Keepass2Android regular edition only)\n
+ * Integrated custom file browser (based on android-filechooser by HBA)\n
+ * Improved user interface for creating new databases\n
+ * Included custom font DejaVu Sans Mono for displaying passwords\n
+ * Bug fixes
+
+
+ Version 0.8.6\n
+ * Support for Twofish cipher\n
+ * Allow editing of groups\n
+ * Allow moving of entries and groups\n
+ * QuickUnlock icon can be made transparent (see settings)\n
+ * Bug fixes
+
+
+ Version 0.8.5\n
+ * Remote files are stored in the local application cache to allow offline usage (including editing and later synchronization). See settings. \n
+ * Notification icon to visualize the lock-state of the database (see settings)\n
+ * Improved determination of lock-state in some situations\n
+ * Database files are loaded to memory while you are typing your password for increased loading speed (see settings)\n
+ * Entries can be added to root group\n
+ * Bug fixes (resolving reference fields, problems with keyboard on Italian an Chinese devices)
+
+
+ Version 0.8.4\n
+ * External database changes are detected and merged when saving\n
+ * Improved loading performance\n
+ * Improved search toolbar with suggestions\n
+ * New App logo!\n
+ * Added support for .kdbp format for faster loading/saving\n
+ * Improved editing of extra strings and hidden display when protected\n
+ Thanks to Alex Vallat for his code contributions!\n
+ Thanks to Niki Hüttner (www.close-cut.de) for the new logo!\n
+
+ Version 0.8.3\n
+* Username/TAN index displayed in entry list (see settings)\n
+* Entries can be created if search from browser doesn\'t return results\n
+* KP2A keyboard provides possibility to search for credentials for current app\n
+* App automatically closes after selecting an entry for use in keyboard\n
+* Keyboard selection dialog automatically opens after search for URL (see settings)\n
+* Placeholders in entry fields are replaced before copying (most placeholders supported)\n
+* minor bug fixes
+
+ Version 0.8.2\n
+* Support for Digest Authentication in WebDAV\n
+* Bugfixes (OI File manager, Open URL)
+
+ Version 0.8.1\n
+* KP2A Offline and \"Online\" can be installed both again\n
+* Added new translations (thanks to all contributors!)
+
+ Version 0.8\n
+* Improved user interface especially for Android 4.x devices\n
+* Allow using deliberate file managers for selecting existing files\n
+* Added safer way for opening attachments (through cache directory)\n
+* fixed bugs in Edit activity\n
+* probably introduced new bugs :-)
+
Estesa possibilitat de donar una cervesa o una altra cosa
+ Version 0.7\n
+* Increased loading speed: key transformations now 10x faster!\n
+* Added Keepass2Android soft-keyboard: Switch to this keyboard for entering credentials. Shields you from clipboard-based password sniffers (disable old clipboard notifications in the options)\n
+* Added option to donate a beer or something else (see menu)
Version 0.6.2\n
* Integració amb Google Drive/Dropbox/... : Compatible amb l\'APP oficial Google Drive o Dropbox i permet obrir el fitxer .kdbx que necessitis. Suport el teclat KP2A.\n
* Dialeg de cerca millorat \n
@@ -740,4 +917,20 @@ Revisió inicial per al públic
Assegureu-vos que això funciona en el seu sistema i consideri si ha de fer ús o no del teclat incorporat.
Descripció proporcionada pel connector:
+ Keepass2Android suporta la funció d\'emplenament automà tic d\'Android, però sembla que no l\'has activat encara.
+ Activar l\'emplenament automà tic
+ Ho sentim, però sembla que el vostre dispositiu no és compatible amb l\'obertura de la configuració des de l\'interior de l\'aplicació. Aneu manualment a la configuració del sistema per a l\'emplenament automà tic per habilitar el servei.
+ Mostra l\'ajuda de l\'emplenament automà tic
+ Omplir amb Keepass2Android
+ No es pot associar amb el domini web %1$s amb l\'app %2$s
+ Ho entenc
+ No mostrar de nou
+ Recordes la teva contrasenya mestra?
+ Tingueu en compte que no podreu obrir la vostra base de dades sense la clau mestra. No hi ha manera de \"restablir\" la contrasenya mestra.
+ Tingueu en compte també que el desbloqueig d\'empremta dactilar funciona mitjançant l\'emmagatzematge de la clau mestra en l\'emmagatzematge segur d\'Android. Android pot eliminar aquest emmagatzematge en qualsevol moment, p. Ex. si afegiu una empremta digital nova a la configuració del sistema. Aixà que no confieu en la vostra empremta digital, recordeu la vostra contrasenya mestra, si us plau!
+ Ha fet còpia de seguretat de la vostra base de dades?
+ Keepass2Android emmagatzema les vostres contrasenyes en un fitxer en una ubicació que vulgueu. Estàs segur que pots accedir a aquest fitxer quan el telèfon es perd o el robat, o quan el fitxer es destrueix o s\'elimina? Assegureu-vos que sempre teniu una còpia de seguretat actualitzada en un lloc segur!
+ Per crear una còpia de seguretat ara, ves a %1$s > %2$s > %3$s.
+ Esteu preparat per a casos d\'emergència?
+ Alguna vegada vau considerar què passaria si ja no podeu accedir a la vostra base de dades de contrasenyes? Què passaria si tens un accident? És convenient donar la vostra clau mestra a una persona de confiança en casos d\'emergència. Ningú tindrà accés a les contrasenyes d\'una altra manera.
diff --git a/src/keepass2android/Resources/values-cs/strings.xml b/src/keepass2android/Resources/values-cs/strings.xml
index db2b4bb0..e84e3b6e 100644
--- a/src/keepass2android/Resources/values-cs/strings.xml
+++ b/src/keepass2android/Resources/values-cs/strings.xml
@@ -2,7 +2,7 @@
- PÅ™ipomÃnky
+ Zpětná vazba
Domovská stránka
Keepass2Android je správce hesel pro práci se soubory KeePass 2.x. na platformě Android.
Uživatelské rozhranà je založeno na portu KeepassDroid (vyvinul Brian Pellin). Kód pro databázové operace vycházà z kódu pro KeePass (napsal Dominik Reichl). Logo Android robota vycházà z verze sdÃlené Googlem a je upraveno a použito dle podmÃnek popsaných v licenci Creative Commons 3.0.
@@ -30,9 +30,9 @@
Aplikace
Nastavenà aplikace
Zobrazit název skupiny ve výsledku hledánÃ
- Zobrazovat jméno kategorie pod titulkem záznamu ve výsledcÃch hledánÃ. UžiteÄné, máte-li nÄ›kolik záznamů stejného jména.
+ Zobrazovat jméno skupiny pod titulkem záznamu ve výsledcÃch hledánÃ. UžiteÄné, máte-li nÄ›kolik záznamů stejného jména.
Zobrazenà jména kategorià je nynÃ: %1$s
- Zobrazit jméno kategorie v detailu záznamu
+ Zobrazit jméno skupiny v detailu záznamu
Keepass2Android nemůže zpracovat adresu URI %1$s. Obraťte se na vývojáře!
Jedna položka
%1$d položek
@@ -81,13 +81,17 @@
Otisk prstu nebyl rozpoznán. Zkuste to znovu
Otisk prstu rozpoznán
Odemknutà otiskem prstu vyžaduje Android 6.0 nebo vyššÃ.
- Nebl nalezen hardware pro snÃmánà otisků prstů.
+ Nebyl nalezen hardware pro snÃmánà otisků prstů.
Na tomto zaÅ™Ãzenà jste nezaregistrovali žádný otisk prstu. PÅ™ejdÄ›te do nastavenà aplikace.
Zakázat odemknutà otiskem prstu
Povolit úplné odemknutà otiskem prstu
Povolit odemknutà otiskem prstu pro rychlé odemknutÃ
DotknÄ›te se snÃmaÄe pro odemknutà databáze
+ OdemÄenà otiskem se nezdaÅ™ilo. DeÅ¡ifrovacà klÃÄ byl zneplatnÄ›n systémem Android. To se obvykle stává, pokud byl pÅ™idán nový otisk nebo bylo zmÄ›nÄ›no bezpeÄnostnà nastavenÃ.
+ Odemknutà databáze se nezdaÅ™ilo: neplatný složený klÃÄ. OdemÄenà otiskem prstu bylo zakázáno, patrnÄ› nenà hlavnà heslo již platné.
ProsÃm, povolte znovu odemknutà otiskem prstu pro nové hlavnà heslo.
+ ProsÃm odemknÄ›te svým heslem a poté obnovte odemÄenà otiskem prstu v nastavenà databáze.
+ Nepodařilo se spustit senzor otisku prstu.
Toto uložà vaÅ¡e hlavnà heslo na toto zaÅ™ÃzenÃ,
zaÅ¡ifrované pomocà úložiÅ¡tÄ› klÃÄů Android a chránÄ›né
@@ -114,7 +118,7 @@
Uživatelské jméno
Doplňková textová pole
Přiložené soubory
- Keepass2Android nemůže zpracovat tuto uri.
+ Keepass2Android nemůže zpracovat tuto URI.
Chyba při vytvářenà skupiny.
Nelze vytvořit nadřazený adresář.
Tento soubor již existuje.
@@ -124,8 +128,8 @@
Nelze vytvořit soubor
Chybná databáze.
Chybná cesta.
- Jméno je povinné.
- Heslo nebo klÃÄový soubor jsou povinné.
+ Je nutné zadat název.
+ Je potÅ™eba heslo nebo klÃÄový soubor.
Minimálně jeden typ generovánà hesla musà být zvolen
Hesla se neshodujÃ.
PoÄet opakovánà musà být ÄÃslo.
@@ -145,8 +149,8 @@
heslo
Heslo
název
- adresa url
- přepsat adresu url
+ adresa URL
+ přepsat adresu URL
Å¡tÃtek1, Å¡tÃtek2
uživatelské jméno
Chybné heslo nebo klÃÄový soubor.
@@ -206,6 +210,7 @@
Pamatovat si umÃstÄ›nà klÃÄových souborů
Uložit klÃÄový soubor
Odstranit
+ Upravit
Rijndael (AES)
Kořen
Funkce pro odvozenà klÃÄe
@@ -269,6 +274,7 @@
V dalÅ¡Ãm kroku bude vybrán soubor pro import.
Povolit Rychlé odemknutÃ
Zadejte poslednà %1$d znaky hesla:
+ Vložte kód Rychlého odemknutÃ:
Rychlé odemknutÃ
ZavÅ™Ãt databázi
Ve výchozÃm nastavenà povolit Rychlé odemknutÃ
@@ -281,6 +287,8 @@
Rychlé odemknutà vyžaduje notifikace pro správnou funkÄnost. Vyberte tuto možnost, chcete-li zobrazit notifikaci bez ikony.
Délka klÃÄe pro Rychlé odemknutÃ
Maximálnà poÄet znaků použÃvaných jako heslo pro Rychlé odemknutÃ.
+ Schovej délku kódu pro Rychlé odemknutÃ
+ Je-li tato možnost aktivnÃ, délka kódu Rychlého odemknutà nebude zobrazena na odemykacà obrazovce.
Rychlé odemknutà se nezdařilo: nesprávné heslo!
Adresář souborů s pÅ™Ãlohami
Adresář, do kterého jsou ukládány pÅ™Ãlohy souborů.
@@ -313,6 +321,8 @@
Vymazat zadané hlavnà heslo pÅ™i opuÅ¡tÄ›nà obrazovky bez odemÄenà databáze.
Uzamknout při odchodu z aplikace
Uzamknout databázi pÅ™i opouÅ¡tÄ›nà aplikace stisknutÃm tlaÄÃtka zpÄ›t.
+ Pole hledánà má být po startu aktivnÃ
+ Aktivuje pole hledánà v pÅ™ehledu skupin po odemknutÃ, nebo pÅ™i hledánà položky
Skrýt možnost pÅ™ispÄ›nÃ
Toto je nastavenà pro dárce. Je dostupné až po nÄ›jaké dobÄ› použÃvánà Keepass2Android.
Tato aplikace by bez pÅ™ÃspÄ›vků nemohla existovat a nebyla by pravidelnÄ› zlepÅ¡ována! Jestliže jste doposud nepÅ™ispÄ›l/a, zvažte prosÃm svou pomoc.
@@ -320,6 +330,10 @@
Nedám ti ani korunu, pÅ™ÃpadnÄ› jsem už jsem daroval. Neptej se na darovánÃ, ani v den autorových narozenin.
Ukládánà databáze do mezipaměti
Ukládat kopià vzdálených databázových souborů v adresáři aplikace. Toto umožňuje použÃvat vzdálené databáze i v offline režimu.
+ MÃstnà zálohy
+ VytvoÅ™ mÃstnà zálohu po úspěšném naÄtenà databáze.
+ Aktualizuji mÃstnà zálohu...
+ MÃstnà záloha pro %1$s
SSL certifikáty
Definujte chovánà pÅ™i neúspěšném ověřenà certifikátu. Poznámka: pokud ověřenà selže, můžete nainstalovat certifikáty do vaÅ¡eho zaÅ™ÃzenÃ.
VyÄistit mezipaměť?
@@ -333,6 +347,7 @@
Samostatná oznámenÃ
Zobrazit oddÄ›lená upozornÄ›nà pro kopÃrovánà uživatelského jména a hesla do schránky a pro aktivovánà klávesnice.
Služba automatického doplňovánÃ
+ Služba automatického vyplňovánÃ
Notifikace klávesnice KP2A
ZpÅ™Ãstupnit celý záznam pomocà klávesnice KP2A (doporuÄeno).
Přepnout klávesnici
@@ -347,10 +362,14 @@
Přepnout zpět na předchozà klávesnici nebyla-li žádná položka otevřena.
Oznamovacà ikona pÅ™i stavu odemknutÃ
Zobrazovat oznamovacà ikonu pokud je databáze odemÄena.
+ Android 8 pÅ™inesl nové chovánà upozornÄ›nÃ. Pokud chcete schovat oznamovacà ikonu Keepass2Android můžete tak uÄinit v nastavenà systému. Nastavte kategorii důležitosti upozornÄ›nà na Minimum.
+ OtevÅ™Ãt nastavenÃ
+ Nenà třeba
+ Soubor nenà dále dostupný pro Keepass2Android. BuÄ byl smazán, nebo bylo zruÅ¡eno povolenà k pÅ™Ãstupu. ProsÃm otevÅ™ete daný soubor znovu pomocÃ: ZmÄ›nit databázi.
PÅ™ednaÄÃtat databázový soubor
Zahájit nahrávánà nebo stahovánà na pozadÃ.
Chcete pÅ™epsat existujÃcà binárnà soubor se stejným názvem?
- PÅ™epsat existujÃcà binárnà soubor?
+ PÅ™epsat existujÃcà soubor?
Přepsat
Přejmenovat
NepodaÅ™ilo se pÅ™idat soubor jako pÅ™Ãlohu.
@@ -493,6 +512,7 @@
zakázáno
Vyhledat dostupné zásuvné moduly
Rozsahy
+ nenà povoleno
%1$s požaduje pověřenà pro %2$s.
%1$s vyžaduje pověřenÃ. ProsÃm vyberte položku.
Povoleno
@@ -520,6 +540,7 @@
Vypadá to, že jste otevÅ™eli soubor z externà aplikace. Tento způsob nepodporuje zapisovánÃ. Pokud chcete provést zmÄ›ny v databázi, zavÅ™ete databázi a vyberte možnost ZmÄ›nit databázi. Potom otevÅ™ete soubor jednou z dostupných možnostÃ, pokud je to možné.
Je nastaven pÅ™Ãznak pouze pro ÄtenÃ. Pokud chcete provést zmÄ›ny v databázi, odstraňte tento pÅ™Ãznak.
Zápis nenà možný z důvodu omezenà zavedených v Android KitKat. Pokud chcete provést změny v databázi, zavřete databázi a vyberte možnost Změnit databázi. Potom otevřete soubor pomocà výběru v systému souborů.
+ MÃstnà zálohy nemohou být upraveny. Můžete použÃt nastavenà databáze (poté Export databáze) k exportu této zálohy do jiného umÃstÄ›nÃ. Tato exportovaná databáze bude po otevÅ™enà upravitelná.
Přidat ikonu ze souboru...
KopÃrovánà souboru...
KopÃrovat
@@ -554,6 +575,13 @@
• UjistÄ›te se, že jste použili správný typ hesla. UjistÄ›te se, že tento typ odpovÃdá typu použitému pÅ™i vytvářenà databáze.\n
• Ujistěte se, že jste použili správný databázový soubor.
+
+ \n
+ • NápovÄ›da: Pokud si myslÃte že by databáze mohla být poruÅ¡ena, nebo si nepamatujete hlavnà klÃÄ, můžete zkusit poslednà úspěšnÄ› otevÅ™enou verzi kliknutÃm \"%1$s\" a zvolenÃm mÃstnà zálohy.
+
+ \n
+ • NápovÄ›da: Keepass2Android uložil poslednà úspěšnÄ› otevÅ™enou verzi souboru v mÃstnà pamÄ›ti. Můžete jà otevÅ™Ãt zmáÄknutÃm \"%1$s\" a výbÄ›rem mÃstnà zálohy.
+
Soubor je poškozený. \n
Zde je nÄ›kolik rad, které vám mohou pomoci zjistit pÅ™ÃÄinu problému:\n
@@ -563,6 +591,12 @@
• Jestliže můžete otevÅ™Ãt soubor na vaÅ¡em PC, kontaktujte, prosÃm, podporu. Můžete se pokusit na vaÅ¡em PC uložit soubor s rozdÃlným nastavenÃm (napÅ™. nezazipovaný) a znovu se jej pokusit otevÅ™Ãt v Keepass2Android.
+ Databáze odemknuta
+ Upozorněnà o odemykánà databáze
+ Rychlé odemknutÃ
+ UpozornÄ›nà že databáze je zamykána s funkcà Rychlého odemknutÃ
+ Upozorněnà položky
+ UpozornÄ›nà pro usnadnÄ›nà pÅ™Ãstupu k momentálnÄ› zvolené položce.
Keepass2Android: Došlo k chybě.
DoÅ¡lo k neoÄekávané chybÄ› pÅ™i bÄ›hu Keepass2Android. ProsÃm, pomozte nám to vyÅ™eÅ¡it tÃm, že aplikaci umožnÃte odesÃlánà zpráv o chybách.
Zprávy o chybách nikdy nebudou obsahovat jakýkoliv obsah databáze nebo hlavnà heslo. OdesÃlánà zpráv o chybách můžete zakázat v nastavenà aplikace.
@@ -571,6 +605,31 @@
Dotázat se po chybě
Odeslat zprávu o chybách
Zobrazit softwarovou klávesnici pro zadávánà hesla pokud je ÄteÄka otisků prstů aktivnÃ.
+
+ Verze 1.05\n
+ * Použità kanálů upozorněnà pro Android 8. Toto umožnà nastavenà skrz nastavenà systému.\n
+ * Ukazuje ikonu vstupu v upozornÄ›nÃ.\n
+ * Použità AdaptivnÃch ikon pro Android 8 a kulatých ikon pro Android 7.\n
+ * Možnost povolit hledánà po odemknutà (viz nastavenÃ).\n
+ * Změněn způsob zápisu pomocà Storage Access Frameworku, tato úprava opravuje problémy s aktualizacà souborů na Google Disku které byly otevřeny pomocà výběru v systému souborů.\n
+ * PÅ™idány nÄ›které vysvÄ›tlujÃcà texty k zamezenà Äastých nedorozumÄ›nÃ.\n
+ * Tvorba záloh úspěšně otevřených databázà k omezenà rizika ztráty dat.\n
+ * Aktualizován JSch pro podporu novÄ›jÅ¡Ãch SSH Å¡ifer.\n
+ * Povolenà pro úpravu nastavenà pÅ™ipojenÃ, napÅ™. když je zmÄ›nÄ›no heslo pro službu WebDav.\n
+ * Přidána podpora pro Yubikey Neo (mód statického hesla).\n
+ * Možnost zákazu návrhů pro automatické vyplňovánÃ.\n
+ * Oprava úniku dat do logu. (záznam výkon)\n
+ * Oprava chyb.\n
+
+
+ Verze 1.04b\n
+ * Oprava pádů pÅ™i aktivaci automatického vyplňovánà na zaÅ™ÃzenÃch Huawei.\n
+
+
+ Verze 1.04\n
+ * PÅ™idána funkce automatického doplňovánà pro Android 8.0 a novÄ›jÅ¡Ã.\n
+ * Aktualizovány knihovny, nástroje pro sestavenà a cÃlová verze SDK.\n
+
Verze 1.03\n
* OdstranÄ›ny služby zpÅ™ÃstupnÄ›nà pro AutoFill dle požadavku Googlu. PodÃvejte se do nastavenà pÅ™istupu hesel k nalezenà doplňku poskytujÃcÃho pÅ™edchozà funkci.\n
@@ -851,4 +910,20 @@ Prvnà veÅ™ejné vydánÃ
Ujistěte se, že toto funguje na vašem systému a pokud ne, zvažte použità vestavěné klávesnice.
Popis poskytnutý zásuvným modulem:
+ Keepass2Android podporuje funkci Androidu automatické doplňovánÃ, ale vypadá to, že nenà povolena.
+ Povolit automatické doplňovánÃ
+ Omlouváme se, zdá se že VaÅ¡e zaÅ™Ãzenà nepodporuje otevÃránà nastavenà z aplikace. ProsÃm navÅ¡tivte nastavenà systému, pro automatické vyplňovánÃ, aby jste aktivovali službu.
+ Ukázat nápovÄ›du automatického doplňovánÃ
+ Doplnit s Keepass2Android
+ Nedařà se spojit doménu %1$s s aplikacà %2$s
+ RozumÃm
+ VÃcekrát neukazuj
+ Pamatujete si Vaše hlavnà heslo?
+ Pamatujte že bez hlavnÃho klÃÄe nenà možné databázi otevÅ™Ãt. Možnost \"resetovat\" hlavnà heslo NEexistuje.
+ Také pamatujte že odemknutà otiskem prstu funguje na základÄ› uchovánà hlavnÃho hesla v bezpeÄném úložiÅ¡ti Androidu. Toto úložiÅ¡tÄ› může být kdykoliv vymazáno Androidem, napÅ™Ãklad pÅ™idánÃm nového otisku v nastavenà systému. Nespoléhejte se pouze na otisk prstu, ale pamatujte si prosÃm i VaÅ¡e hlavnà heslo!
+ Je Vaše databáze zálohována?
+ Keepass2Android uchovává VaÅ¡e hesla v souboru v umÃstÄ›nà dle VaÅ¡eho výbÄ›ru. Jste si jistý/á že můžete zÃskat pÅ™Ãstup k souboru i v pÅ™ÃpadÄ› ztráty Äi krádeže mobilnÃho telefonu, nebo v pÅ™ÃpadÄ› poÅ¡kozenà Äi smazánà souboru? UjistÄ›te se prosÃm, že máte aktuálnà zálohu, na bezpeÄném mÃstÄ›!
+ Pro tvorbu zálohy navštivte %1$s > %2$s > %3$s.
+ Jste připraven/a na nouzové situace?
+ Uvažoval/a jste co se stane v pÅ™ÃpadÄ› že již nebude schopen/a pÅ™Ãstupu k Vašà databázi hesel? Co se stane v pÅ™ÃpadÄ› nehody? Dobrý způsob je, pro pÅ™Ãpad mimořádných okolnostÃ, sdÄ›lit hlavnà klÃÄ osobÄ› které věřÃte. V opaÄném pÅ™ÃpadÄ› nikdo nebude schopen otevÅ™Ãt VaÅ¡i databázi hesel.
diff --git a/src/keepass2android/Resources/values-da/strings.xml b/src/keepass2android/Resources/values-da/strings.xml
index 7a263c68..168d22a6 100644
--- a/src/keepass2android/Resources/values-da/strings.xml
+++ b/src/keepass2android/Resources/values-da/strings.xml
@@ -4,30 +4,31 @@
Tilbagemelding
Hjemmeside
- Keepass2Android er en Android implementering af KeePass password manager.
+ Keepass2Android er en password manager, som giver læse- og skriveadgang til KeePass 2.x-databaser på Android.
Brugergrænsefladen er baseret på en portering af KeePassDroid, udviklet af Brian Pellin. Koden for databaseoperationerne er baseret på KeePass af Dominik Reichl. Android-robotten er reproduceret eller ændret fra arbejde skabt og delt af Google og brugt ifølge betingelserne beskrevet i \"Creative Commons 3.0 Attribution License\".
SFTP-understøttelse er implementeret ved brug af JSch-biblioteket under BSD-licensen, skabt af JCraft, Inc.
- Accepter
+ Hammerikonet er lavet af John Caserta fra Noun Project. Pingvinikonet er lavet af Adriano Emerick fra Noun Project. Fjerikonet er lavet af Jon Testa fra Noun Project. Æbleikonet er lavet af Ava Rowell fra Noun Project. Billedikonet er fra https://icons8.com/icon/5570/Picture.
+ Acceptér
Afvis
Tilføj post
Redigér post
- Opret post for webadresse
+ Opret post for URL
Tilføj gruppe
Tilføj gruppe
- Rediger gruppe
+ Redigér gruppe
Algoritme
Algoritme
Keepass2Android
KP2A
Keepass2Android Offline
KP2A Offline
- Applikations timeout
+ Applikationstimeout
Tid før databasen låses, når applikationen er inaktiv.
Afslut applikationsproces
Luk-knap
Vis en knap på adgangskodeskærmen til at afslutte applikationsprocessen (til paranoide brugere)
Applikation
- Applikationsindstillinger
+ Programindstillinger
Vis gruppenavn i søgeresultat
Vis gruppenavn under titlerne på posterne i søgeresultaterne. Nyttig, hvis flere poster har samme navn.
Visningsgruppe er nu: %1$s
@@ -35,8 +36,8 @@
Beklager! Keepass2Android kan ikke håndtere den returnerede URI %1$s. Kontakt udvikleren!
Én post
%1$d poster
- Ikon sat
- Find mere...
+ Ikonsæt
+ Find flere...
Sikkerhed
Visning
Adgang til adgangskoden
@@ -58,7 +59,7 @@
Parenteser
Annuller
Udklipsholder ryddet.
- Udklipsholder timeout
+ Timeout for udklipsholder
Tid før udklipsholderen bliver ryddet efter kopiering af brugernavn eller adgangskode
Vælg for at kopiere brugernavn til udklipsholderen
Vælg for at kopiere adgangskode til udklipsholderen
@@ -68,7 +69,7 @@
Aktiver venligst Keepass2Android-tastaturet i systemindstillingerne.
Opretter databasenøgle…
Aktuel gruppe
- Aktuel gruppe: Root
+ Aktuel gruppe: Roden
Database
Cifre
Keepass2Android leveres ABSOLUT UDEN GARANTI. Det er gratis software, og du er velkommen til at videredistribuere det under betingelserne i GPL version 2 eller senere.
@@ -87,8 +88,12 @@ Gå venligst til systemindstillinger først.
Slå fuld Fingeraftryksoplåsning til
Slå Fingeraftryksoplåsning til for hurtigoplåsning
Rør sensoren for at låse databasen op
+ Fingeraftrykslåsningen mislykkedes. Dekrypteringsnøglen blev afvist af Android OS. Dette sker sædvanligvis, hvis et nyt fingeraftryk bliver aktiveret, eller sikkerhedsindstillingerne bliver ændret.
+ Låsning af databasen mislykkedes: Ugyldig kombinøgle. Fingeraftrykslåsningen blev afvist, fordi den lagrede hovedadgangskode, tilsyneladende ikke længere er gyldig.
Genaktiver venligst Fingeraftryksoplåsning for den nye hovedadgangskode.
- Dette gemmer din hovedadgangskode på denne enhed, krypteret med Android Keystore og beskyttet ved brug af fingeraftryksautentificering. Tillader kun at låse din database op med dit fingeraftryk.
+ Lås op med din adgangskode, og genaktiver Fingeraftryksoplåsning i databaseindstillingerne.
+ Det lykkedes ikke at initialisere fingeraftrykssensor.
+ Dette gemmer din hovedadgangskode på denne enhed, krypteret med Android Keystore og beskyttet ved brug af fingeraftryksautentificering. Lader dig låse din database op med dit fingeraftryk alene.
Tillader at bruge fingeraftryksgodkendelse i stedet for Hurtigoplåsningskoden. Gemmer ikke nogen information relateret til din hovedadgangskode.
Angiv navn på databasefil
Seneste åbnede
@@ -165,7 +170,7 @@ Gå venligst til systemindstillinger først.
Kopier brugernavn
Opret
Indstillinger
- Database indstillinger
+ Databaseindstillinger
Slet
Opret duplikat
Flyt til en anden gruppe
@@ -202,11 +207,12 @@ Gå venligst til systemindstillinger først.
Husker placeringen af nøglefiler
Gem nøglefil
Fjern
+ Ret
Rijndael (AES)
Rod
Nøgleafledningsfunktion
Krypterings-gentagelser
- Højere krypterings-gentagelser giver øget beskyttelse imod brute-force angreb, men kan påvirke læsnings- og skrivehastigheden betydentligt.
+ Flere krypteringsgentagelser giver øget beskyttelse imod brute force-angreb, men kan sænke læse- og skrivehastigheden mærkbart.
gentagelser
Hukommelse for Argon 2 (bytes)
Parallelisme for Argon 2
@@ -265,6 +271,7 @@ Gå venligst til systemindstillinger først.
Filen, der skal importeres, bliver valgt i næste trin.
Aktiver Hurtigoplåsning
Skriv de sidste %1$d tegn i din adgangskode:
+ Ret Hurtigoplåsningskoden:
Hurtigoplåsning!
Luk database
Aktiver Hurtigoplåsning som standard
@@ -277,6 +284,8 @@ Gå venligst til systemindstillinger først.
Hurtigoplåsning kræver en besked for at virke ordentligt. Vælg denne indstilling for at vise en besked uden et ikon.
Længde af nøgle til Hurtigoplåsning
Maksimalt antal tegn brugt som nøgle til Hurtigoplåsning.
+ Gem Hurtigoplåsningskodens længde
+ Hvis aktiveret, vises længden af hurtigoplåsningskoden ikke på hurtigoplåsningsskærmen.
Hurtigoplåsning mislykkedes: Forkert nøgle!
Mappe for vedhæftede filer
Mappe, hvor vedhæftede filer gemmes.
@@ -284,11 +293,12 @@ Gå venligst til systemindstillinger først.
Vælg hvor du vil gemme den vedhæftede fil.
Gem på SD-kort
Gem til cache og åben
+ Vis med intern billedfremviser
Gemt fil som %1$s.
Kunne ikke gemme den vedhæftet fil %1$s.
Husk søgetekst?
Vil du gemme søgeordet \"%1$s\" i den valgte post, for at kunne finde den automatisk næste gang?
- Ugyldig dato / klokkeslæt format for udløbsdato!
+ Ugyldigt dato/klokkeslætsformat for udløbsdato!
Der kræves et feltnavn for hver streng.
Et feltnavn kan ikke bruges to gange (%1$s).
Feltnavn
@@ -308,25 +318,35 @@ Gå venligst til systemindstillinger først.
Slet den indtastede hovedadgangskode, når de forlader skærmen uden at låse databasen op.
Lås når de forlader appen
Lås databasen, når du forlader appen, ved at trykke på tilbage-knappen.
+ Aktivér søgefelt ved start
+ Aktiverer søgefelt i gruppevisningen efter oplåsning eller når du søger efter et indlæg
Skjul donationsforslag
Denne indstilling er til donatorer. Bliver tilgængelig efter brug af Keepass2Android i et stykke tid.
- Uden donationer ville denne app ikke eksistere og vil ikke blive forbedret løbende! Hvis de endnu ikke har doneret, kan de overveje at donere nu.
+ Uden donationer ville denne app ikke eksistere og ville ikke blive forbedret løbende! Hvis du endnu ikke har doneret, kan du overveje at donere nu.
Bed aldrig nogensinde om at donere
Jeg vil ikke give dem en krone; eller jeg har allerede doneret. Bed ikke om en donation, ikke engang på skribentens fødselsdag.
- Database indsamling
- Gem en kopi af fjerndatabasefiler i programmets indsamlingsmappe. Dette gør det muligt at bruge eksterne databaser selv når de er offline.
+ Databasemellemlager
+ Gem en kopi af fjerndatabasefiler i programmets mellemlager. Dette gør det muligt at bruge eksterne databaser selv når de er offline.
+ Lokale sikkerhedskopier
+ Opret en lokal sikkerhedskopi, efter at du vellykket har hentet en database.
+ Opdaterer lokal sikkerhedskopi…
+ Lokal sikkerhedskopi af %1$s
SSL-certifikater
- Definer adfærden, når certifikatvalidering mislykkes. Bemærk: De kan installere certifikater på deres enhed, hvis validering mislykkes!
+ Definer adfærden, når certifikatvalidering mislykkes. Bemærk: Du kan installere certifikater på din enhed, hvis validering mislykkes!
Slet samling?
- Dette vil slette alle indsamlede databasefiler. Eventuelle ændringer, de har foretaget mens de er offline, som endnu ikke er synkroniseret, vil gå tabt! Vil de fortsætte?
+ Dette vil slette alle mellemlagrede databasefiler. Eventuelle ændringer, du har foretaget mens de er offline, som endnu ikke er synkroniseret, vil gå tabt! Vil du fortsætte?
Kontroller for ændringer
Kontroller, om filen er blevet ændret eksternt, før du gemmer ændringer.
- Kontroller for dublerede universelle unikke id\'er
- Kontroller, om databasefilen er korrupt ved at have flere poster med samme ID. Dette kan forårsage utilsigtet opførsel.
+ Kontroller for UUID-dubletter
+ Kontroller, om databasefilen er beskadiget ved at have flere poster med samme ID, hvilket kan forårsage uventet opførsel.
Udklipsholdermeddelelser
Gør dit brugernavn og adgangskode tilgængeligt via meddelelsesbjælken og udklipsholderen. Vær opmærksom på adgangskodesnusere!
Adskilte meddelelser
Vis separate notifikationer til kopiering af brugernavn og adgangskode til udklipsholder og aktivering af tastaturet.
+ Tilgængelighed-tjenesten AutoFyld
+ Tjenesten AutoFyld
+ KP2A tastatur notifikation
+ Gør fuld adgang tilgængelig via KP2A tastaturet (anbefales).
Skift tastatur
Åbn tastaturvalgsdialogboksen, når adgang er tilgængelig via KP2A-tastaturet efter søgning fra webbrowseren.
Auto-skift tastatur
@@ -339,6 +359,10 @@ Gå venligst til systemindstillinger først.
Skift tilbage til forrige tastatur, når der ikke er nogen post åben.
Meddelelsesikon så længe den er låst op
Vis et meddelelsesikon, så længe som databasen er låst op.
+ Android 8 har introduceret ny adfærd til meddelelser. Hvis du vil skjule ikonet for Keepass2Android\'s beskeder, skal du konfigurere dette via systemindstillingerne. Angiv betydningen af meddelelseskategorien til Minimum.
+ Ã…bn indstillinger
+ Det er ligegyldigt for mig
+ Filen er ikke længere tilgængelig for KP2A. Enten blev den fjernet, eller adgangstilladelserne er blevet tilbagekaldt. Genåben venligst filen, f.eks. ved brug af Skift database.
Forud-hentet database fil
Start baggrundsindlæsning eller hentning af databasefilen under indtastning af adgangskode.
Vil du overskrive det eksisterende binære, med samme navn?
@@ -379,7 +403,7 @@ Gå venligst til systemindstillinger først.
Nej, overskriv
Arbejd offline
Arbejd online
- Undgå enhver form for netværkstrafik ved at bruge den lokale cache kopi af filen. Ændringer gemmes kun i den lokale cache og vil kun blive uploadet, når du skifter tilbage til online-tilstand.
+ Undgå al netværkstrafik ved at bruge den lokale kopi af filen. Ændringer gemmes kun i det lokale mellemlager og vil kun blive uploadet, når du skifter tilbage til online-tilstand.
Arbejder offline.
Synkroniserer cache kopien af databasen…
Henter fil fra netværket…
@@ -391,7 +415,7 @@ Gå venligst til systemindstillinger først.
Kunne ikke gemme filen på netværket: %1$s. Gem igen eller brug menuen Synkroniser når netværket er tilgængeligt igen.
Kunne ikke åbne filen fra netværket: %1$s. Hentede filen fra den lokale cache. Du kan stadigvæk foretage ændringer i databasen og synkronisere den senere.
Opdaterede filen fra netværket.
- Åbnede den lokale fil på grund af modstridende ændringer i forhold til filen på netværket. Brug Synkroniser menuen til at flette dem sammen.
+ Åbnede den lokale fil på grund af modstridende ændringer i filen på netværket. Brug menupunktet Synkroniser til at sammenflette.
Filen på netværket og cachen er ajour.
Opdaterede den lokale cache kopi af %1$s.
Der blev ikke fundet nogen ændringer.
@@ -401,13 +425,13 @@ Gå venligst til systemindstillinger først.
databasefilen
OTP hjælp fil
Der opstod en fejl:
- Databasen er beskadiget: Flere ens nøgleværdier fundet. (Har du gemt med Minikeepass?) Venligst importer en ny database igen med Keepass 2 til PC og vælg \'Opret nye ID\'.
- Du kan deaktivere denne fejlmeddelelse i Indstillinger/Program indstillinger/Filhåndtering/Søg efter ens UUID nøgler. Vær opmærksom på at programmet kan opføre sig anderledes end ventet.
+ Databasen er beskadiget: Dubletter af nøgleværdier fundet. (Har du gemt med Minikeepass?) Importer venligst til en ny database igen med Keepass 2 til PC og vælg \'Opret nye ID\'er\'.
+ Du kan deaktivere denne fejlmeddelelse i Indstillinger/Programindstillinger/Filhåndtering/Kontroller for UUID-dubletter. Vær opmærksom på at programmet kan opføre sig uventet. Det anbefales at reparere databasen.
Synkroniserer databasen…
Kan ikke flytte gruppen til denne gruppe.
- I dag er der Oktoberfest! Hvis du kan lide Keepass2Android: ville i dag ikke være en god dag at give mig en øl?
- Den 10. maj? Det er min fødselsdag i dag! Hvis du kan lide dette program, hvorfor sender du mig ikke fødselsdagshilsner sammen med en lille fødselsdagsgave? Det ville virkelig gøre mig glad! :-)
- Åh, du gik glip af min fødselsdag den 10 maj! Hvis du kan lide dette program må du gerne sende mig fødselsdagshilsner og en lille fødselsdagsgave. Det er endnu ikke for sent for at gøre mig glad! :-)
+ I dag er det Oktoberfest! Ville i dag ikke være en god dag at købe mig en øl, hvis du kan lide Keepass2Android?
+ Den 10. maj? Det er min fødselsdag! Hvad med at sende mig nogle fødselsdagshilsener sammen med en lille fødselsdagsgave, hvis du kan lide dette program? Det ville virkelig gøre mig glad! :-)
+ Åh, du gik glip af min fødselsdag den 10. maj! Hvis du kan lide dette program, må du meget gerne sende mig nogle fødselsdagshilsener og en lille fødselsdagsgave. Det er endnu ikke for sent at gøre mig glad! :-)
Fortæl mig mere!
Nej, jeg synes ikke at det er særlig godt
Angiv WebDav login data:
@@ -421,14 +445,48 @@ Gå venligst til systemindstillinger først.
Angiv FTP login data:
Vælg opbevaringsmetode:
Lokal fil
- Hent fra tredje-parts app
- Send til tredje-parts app
+ Hent fra tredjeparts-app
+ Send til tredjeparts-app
FTP
HTTP (WebDav)
HTTPS (WebDav)
OwnCloud
Dropbox
Dropbox (KP2A mappe)
+ Hvis du ikke vil give KP2A adgang til din fulde Dropbox, kan du vælge denne indstilling. Der vil kun anmodes om adgang til mappen Apps/Keepass2Android. Dette er især egnet til oprettelse af en ny database. Hvis du allerede har en database, skal du klikke på denne indstilling for at oprette mappen og derefter placere din fil inde i mappen (fra din pc) og derefter vælge denne indstilling igen for at åbne filen.
+ Google Drev
+ OneDrive
+ SFTP (SSH File Transfer)
+ System filvælger
+ Filtilgang initialisering
+ Database placering
+ Du kan gemme din database lokalt på din Android-enhed eller i skyen (kun ikke-offline version). Keepass2Android gør databasen tilgængelig, selvom du er offline. Da databasen er sikkert krypteret med AES 256 bit kryptering, vil ingen kunne få adgang til dine adgangskoder undtagen dig. Vi anbefaler at vælge Dropbox: Den er tilgængelig på alle dine enheder og giver endda sikkerhedskopier af tidligere filversioner.
+ Vælg, hvor du vil gemme databasen:
+ Skift placering
+ Hvis aktiveret, fortsætter Keepass2Android i baggrunden, selvom databasen er låst. Dette gør det muligt at låse databasen op senere, med kun en kort del af hovedadgangskoden.
+ Hovedadgangskoden
+ Din database er krypteret med den adgangskode, du indtaster her. Vælg en stærk adgangskode for at holde databasen sikret! Tip: Lav en sætning eller to og brug de første bogstaver af ordene som adgangskode. Medtag tegnsætningstegn.
+ Vælg en hovedadgangskode for at beskytte din database:
+ Nøglefil
+ En nøglefil er stort set et kodeord, der er gemt i en fil. Nøglefiler er typisk stærkere end hovedadgangskoder, fordi nøglen kan være meget mere kompliceret; men det er også sværere at holde dem hemmelige. Hvis du gemmer din database i skyen, må du ikke gemme nøglefilen der også! Det ville gøre den helt nyttesløs! Vigtigt: Du må ikke ændre indholdet af nøglefilen efter oprettelsen af databasen!
+ Vælg, hvis du vil bruge en nøglefil ud over dit hovedadgangskode:
+ Brug nøgle fil
+ Fejl under tilføjelse af nøglefilen!
+ Indlæs OTP-hjælpefil…
+ Indtast de næste En-Gangs-Adgangskoder (OTP\'er). Stryg din Yubikey NEO på bagsiden af din enhed for at indtaste via NFC.
+ OTP %1$d
+ Kunne ikke finde en app, der kan klare udfordringen. Installer Yubichallenge fra Google Play.
+ Kunne ikke indlæse OTP-hjælpefil!
+ Brug venligst OtpKeyProv plugin\'en i KeePass 2.x (PC) til at konfigurere din database til brug med OTP\'er!
+ Vælg venligst databasen først. OTP er kasseret af sikkerhedsmæssige årsager.
+ OTP kasseret: Alle OTP\'er er allerede indtastet!
+ Luk venligst databasen først. OTP er kasseret.
+ (En eller flere OTP\'er er allerede tilgængelige)
+ OTP-hemmelighed (f.eks. 01 23 ab cd…)
+ Fejl ved analyse af OTP-hemmelighed!
+ Kunne ikke oprette OTP-nøgle! Vær sikker på, at du har indtastet de korrekte OTP\'er.
+ Fejl ved opdatering af OTP-hjælpefil!
+ Brug logfil
Find plug-ins på nettet
Scopes
%1$s anmoder om adgangsoplysninger for %2$s.
@@ -439,6 +497,51 @@ Gå venligst til systemindstillinger først.
Forespørgsel adgangsoplysninger
Hent flere lagringsmetoder
Vælg filformat
+ Kopier
+ Standard post
+ Skabeloner
+ Navn
+ Sted for udstedelsen
+ Nummer
+ CVV (Kontrolnr.)
+ PIN-kode
+ Kortholder
+ Betalingskort
+ Medlemsskab
+ Ændringslog
+ Tilføj skabeloner?
+ Keepass2Android indeholder adgangsskabeloner til e-mail-konti, trådløse LAN-adgangskoder, sikre noter, med mere. Vil du gerne tilføje disse til din database? Hvis du vælger Nej, kan du tilføje dem senere i databasens indstillinger.
+ Tilføj skabeloner til database
+ Bemærk venligst! Dette er en forhåndsvisningsløsning og kan komme med nogle fejl! Hvis du oplever *hvad som helst* uventet, lad mig det vide (på Google+ beta-testgruppen eller via e-mail).
+ Fortsæt
+ Den URI, du har indtastet, ser ikke ud som et filnavn. Er du sikker på, at dette er en gyldig fil?
+ Ugyldig kombikode! Prøv venligst igen.
+ Ugyldig kombinøgle! Prøv følgende trin for at låse din database op:\n
+
+ • Sørg for, at du har indtastet den korrekte adgangskode. Brug øjenikonet til at afsløre det indtastede kodeord.\n
+ • Kontroller, at du har valgt den korrekte adgangskode type. Sørg for, at dette svarer til den type, der blev brugt, da du oprettede databasen.\n
+ • Kontroller, at du har valgt den rigtige databasefil.
+
+
+\n
+ • Tip: Hvis du mener, at din databasefil muligvis er ødelagt, eller du ikke kan huske masternøglen, efterat have ændret den, kan du prøve den sidste vellykkede filversion ved at klikke på \"%1$s\" og vælge den lokale sikkerhedkopi.
+
+\n
+ • Tip: Keepass2Android har gemt den sidste vellykkede filversion i intern hukommelse. Du kan åbne den ved at klikke på \"%1$s\" og vælge den lokale sikkerhedskopi.
+
+Filen er beskadiget.\n
+ Her er nogle tip, der kan hjælpe med at diagnosticere problemet:\n
+
+ • Hvis du kopierede filen over USB (MTP-tilstand), skal du prøve igen med værktøjer som MyPhoneExplorer. MTP afkorter filer i visse tilfælde.\n
+ • Hvis du ikke kan åbne filen fra samme sted på din pc, er det meget sandsynligt, at filen faktisk er beskadiget. Brug da venligst en database sikkerhedskopi. Hvis du antager, at Keepass2Android har ødelagt filen,så kontakt venligst support.\n
+ • Hvis du stadig kan åbne filen på din pc, så kontakt venligst support. Du kan eventuelt forsøge at gemme den med forskellige indstillinger (fx unzipped) på pc\'en og forsøg igen at åbne den i KP2A.
+
+
+ Database ulåst
+ Meddelelse om, at databasen bliver låst op
+ Hurtigoplåsning
+ Meddelelse om, at databasen er låst med Hurtigoplåsning
+ Posteringsmeddelser
- 30 sekunder
- 1 minut
diff --git a/src/keepass2android/Resources/values-de/strings.xml b/src/keepass2android/Resources/values-de/strings.xml
index 9af0bff7..e8ac67c5 100644
--- a/src/keepass2android/Resources/values-de/strings.xml
+++ b/src/keepass2android/Resources/values-de/strings.xml
@@ -209,6 +209,7 @@ Mit dieser Option wird das Masterpasswort verschlüsselt im Android-Keystore auf
Schlüsseldatei anlegen und ihr Speicherort merken
Schlüsseldatei speichern
Löschen
+ Bearbeiten
Rijndael (AES)
Start
Schlüsselableitungsfunktion
@@ -272,6 +273,7 @@ Mit dieser Option wird das Masterpasswort verschlüsselt im Android-Keystore auf
Zu importierende Datei wird im nächsten Schritt gewählt.
QuickUnlock aktivieren
Gib die letzten %1$d Zeichen deines Passworts ein:
+ QuickUnlock-Code eingeben:
QuickUnlock!
Datenbank schließen
QuickUnlock standardmäßig aktiviert
@@ -284,6 +286,8 @@ Mit dieser Option wird das Masterpasswort verschlüsselt im Android-Keystore auf
QuickUnlock benötigt eine Benachrichtigung um richtig zu funktionieren. Wähle diese Option um eine Benachrichtigung ohne Symbol anzuzeigen.
Länge des QuickUnlock-Schlüssels
Maximale Anzahl von Zeichen, die als QuickUnlock-Kennwort verwendet werden.
+ Länge des QuickUnlock-Codes verstecken
+ Wenn aktiviert, wird die Länge des QuickUnlock-Codes nicht auf dem QuickUnlock-Bildschirm angezeigt.
QuickUnlock fehlgeschlagen: falsches Kennwort!
Verzeichnis für Datei-Anhänge
Verzeichnis, in dem Datei-Anhänge gespeichert werden.
@@ -316,6 +320,8 @@ Mit dieser Option wird das Masterpasswort verschlüsselt im Android-Keystore auf
Leere das Eingabefeld für das Master-Passwort, wenn der Passwort-Eingabebildschirm verlassen wird, ohne dass die Datenbank entsperrt wurde.
Beim Verlassen der App sperren
Datenbank sperren, wenn die App mit dem Zurück-Knopf verlassen wird.
+ Suchfeld beim Start aktivieren
+ Aktiviert das Suchfeld in der Gruppenansicht nach dem Entsperren oder wenn ein Eintrag gesucht wird.
Spenden-Option ausblenden
Diese Einstellung ist ein Dankeschön an alle, die gespendet haben. Sie steht erst nach einer gewissen Zeit der Benutzung von Keepass2Android zur Verfügung.
Ohne Spenden würden diese App nicht existieren und würde nicht laufend verbessert! Wenn Sie noch nicht gespendet haben, erwägen Sie bitte jetzt eine Spende.
@@ -323,6 +329,10 @@ Mit dieser Option wird das Masterpasswort verschlüsselt im Android-Keystore auf
Ich werde keinen Cent spenden oder habe bereits gespendet. Bitte niemals um eine Spende, nicht einmal am Geburtstag des Autors.
Datenbank-Caching
Speichere eine Kopie der Remote-Datenbank-Dateien im Cache-Verzeichnis der App. Das erlaubt die Nutzung von Remote-Datenbanken auch wenn du offline bist.
+ Lokale Backups
+ Erstelle eine lokale Sicherungskopie der Datenbank, nachdem diese erfolgreich geladen wurde.
+ Aktualisiere lokale Sicherungskopie...
+ Lokale Sicherung von %1$s
SSL-Zertifikate
Bestimme das Verhalten, wenn Zertifikate nicht validiert werden können. Hinweis: du kannst auf deinem Android-Gerät Root-Zertifikate installieren, damit die Validierung gelingt!
Cache löschen?
@@ -351,6 +361,10 @@ Mit dieser Option wird das Masterpasswort verschlüsselt im Android-Keystore auf
Wechsel zur vorigen Eingabemethode wenn kein Eintrag ausgewählt ist
Benachrichtungssymbol anzeigen, solange entsperrt
Zeige ein Symbol in der Benachrichtigungsleiste, solange die Datenbank entsperrt ist.
+ Mit Android 8 wurde ein neues Verhalten für Benachrichtigungen eingeführt. Wenn du das Icon für die Benachrichtigungen von Keepass2Android ausblenden möchtest, konfiguriere dies bitte in den Systemeinstellungen. Setze dazu die Wichtigkeit der Benachrichtigungskategorie auf Minimum.
+ Einstellungen öffnen
+ Ist mir egal
+ Keepass2Android kann nicht mehr auf die Datei zugreifen. Entweder wurde sie entfernt oder die Zugriffsrechte wurden entzogen. Bitte öffne sie erneut, z.B. durch Klick auf \"Datenbank wechseln\".
Datenbank vor-laden
Starte das Laden oder Herunterladen von Datenbank-Dateien im Hintergrund während dem Eingeben des Passworts.
Möchtest du den vorhandenen Anhang mit dem gleichen Namen überschreiben?
@@ -525,6 +539,7 @@ Mit dieser Option wird das Masterpasswort verschlüsselt im Android-Keystore auf
Es scheint als hättest du die Datei über eine externe App geöffnet. Diese Vorgehensweise unterstützt keinen Schreibzugriff. Wenn du Änderungen in der Datenbank vornehmen möchtest, schließe die Datenbank und wähle Datenbank wechseln. Öffne dann die Datei mit einer der angebotenen Optionen.
Datei ist schreibgeschützt. Entferne das Attribut, um Änderungen an der Datenbank vorzunehmen.
Das Speichern ist aufgrund von Einschränkungen, die in Android KitKat eingeführt wurden, nicht möglich. Wenn du Änderungen in der Datenbank vornehmen möchtest, schließe die Datenbank und wähle Datenbank wechseln. Öffne die Datei dann über die System-Dateiauswahl.
+ Lokale Sicherungskopien können nicht bearbeitet werden. Du kannst über \"Datenbank-Einstellungen\" - \"Datenbank exportieren\" dieses Backup an einen anderen Ort exportieren und dann von dort öffnen. Dann kannst du auch wieder Änderungen vornehmen.
Icon aus Datei hinzufügen...
Kopiere Datei...
Kopie
@@ -560,6 +575,10 @@ Mit dieser Option wird das Masterpasswort verschlüsselt im Android-Keystore auf
• Stelle sicher, dass du die richtige Datenbankdatei gewählt hast.
+
+\n • Hinweis: Wenn du denkst dass deine Datenbank-Datei beschädigt sein könnte oder du das Passwort nicht mehr weißt, nachdem du es geändert hast, kannst du zur zuletzt erfolgreich geöffnete Datei wechseln. Klicke dazu auf \"%1$s\" und wähle das lokale Backup.
+
+\n • Hinweis: Keepass2Android hat die zuletzt erfolgreich geöffnete Dateiversion im internen Speicher gesichert. Diese kannst du öffnen, indem du \"%1$s\" klickst und das lokale Backup wählst.
Die Datei ist beschädigt.\n
Anbei einige Hinweise, die bei der Diagnose des Problems helfen können:\n
@@ -567,6 +586,12 @@ Anbei einige Hinweise, die bei der Diagnose des Problems helfen können:\n
• Wenn du die Datei über USB kopiert hast (MTP-Modus), versuche es noch einmal mit Tools wie MyPhoneExplorer. MTP schneidet die Dateien in manchen Fällen ab.\n
• Wenn du die Datei nicht von der gleichen Stelle auf deinem PC öffnen kannst, ist es sehr wahrscheinlich, dass die Datei tatsächlich beschädigt ist. Bitte verwende in diesem Fall eine Datenbanksicherung. Wenn du annimmst, dass Keepass2Android die Datei beschädigt hat, nimm bitte Kontakt mit dem Support auf.\n
• Wenn du die Datei auf dem PC noch öffnen kannst, nimm Sie bitte Kontakt mit dem Suppot auf. Du kannst versuchen, die Datei mit anderen Einstellungen auf dem PC zu speichern (z.B. nicht ZIP-komprimiert) und sie dann noch einmal in Keepass2Android zu öffnen.
+ Datenbank entsperrt
+ Benachritigung wenn die Datenbank entsperrt ist
+ QuickUnlock
+ Benachrichtigung wenn die Datenbank mit QuickUnlock gesperrt ist
+ Eintrag-Benachrichtigungen
+ Benachrichtigung zum schnellen Zugriff auf den aktuell gewählten Eintrag.
Keepass2Android: Ein Fehler ist aufgetreten.
Ein unerwarteter Fehler ist während der Ausführung von Keepass2Android aufgetreten. Bitte hilf uns indem du erlaubst, einen Fehlerbericht zu senden.
Fehlerberichte werden nie den Inhalt deiner Datenbank oder des Master-Passworts enthalten. Du kannst sie in den Anwendungseinstellungen deaktivieren.
@@ -575,10 +600,27 @@ Anbei einige Hinweise, die bei der Diagnose des Problems helfen können:\n
Nach Fehler fragen
Fehlerbericht senden
Zeige Bildschirmtastatur zur Passworteingabe während Fingerabdruckerkennung aktiv ist.
+
+Version 1.05\n
+ • Verwendung von Benachrichtigungskanälen in Android 8. So können Benachrichtigungen über die Systemeinstellungen konfiguriert werden.\n
+ • Eintrags-Icon wird in Benachrichtigungen angezeigt\n
+ • Adaptive App-Launcher-Icons für Android 8 und rundes App-Launcher-Icon für Android 7\n
+ • Suche kann nach dem Entsperren aktiviert werden (s. Einstellungen)\n
+ • Fehler beim Schreiben von Dateien über das Storage-Access-Framework behoben. Dadurch wird ein Problem behoben, wenn Dateien über den Android-Dateibrowser aus Google Drive geöffnet werden.\n
+ • Einige Infotexte ergänzt, um häufig auftretende Missverständnisse zu vermeiden.\n
+ • Nach erfolgreichem Öffnen wird eine lokale Sicherungskopie der Datenbank angelegt, um das Risiko von Datenverlust zu reduzieren.\n
+ • JSch aktualisiert um aktuelle SSH-Verschlüsselungsalgorithmen zu unterstützen\n
+ • Unterstützung für den statischen Passwortmodus des Yubikey Neo integriert.\n
+ • Die Autofill-Empfehlung kann leichter deaktiviert werden\n
+ • Fix für u.U. nach Logcat geschriebene private Daten.\n
+ • Bugfixes\n
+
+Version 1.04b\n
+• Fix für App-Crash beim Aktivieren von Autofill auf Huawei-Geräten.\n
Version 1.04\n
- * Autofill-Dienst für Android 8.0 und höher implementiert.\n
- * Bibliotheken und Build-Tools aktualisiert.\n
+ • Autofill-Dienst für Android 8.0 und höher implementiert.\n
+ • Bibliotheken und Build-Tools aktualisiert.\n
Version 1.03\n
@@ -874,7 +916,18 @@ Erstes öffentliches Release
Vom Plugin gelieferte Beschreibung:
Keepass2Android unterstützt das Autofill-Feature von Android, aber du hast es anscheinend noch nicht aktiviert.
Autofill aktivieren
+ Sorry, anscheinend unterstützt dein Gerät es nicht, dass man die Einstellungen aus einer App heraus öffnet. Bitte gehe in die Systemeinstellungen und suche dort nach Autofill, um den Dienst zu aktivieren.
Autofill-Hilfe anzeigen
Mit Keepass2Android ausfüllen
Webdomain %1$s konnte nicht mit App %2$s in Verbindung gebracht werden
+ Ich verstehe
+ Nicht erneut anzeigen
+ Kennst du dein Master-Passwort?
+ Bitte beachte, dass du deine Datenbank nicht ohne Master-Passwort öffnen kannst. Es gibt keine Möglichkeit, das Passwort zurückzusetzen.
+ Beachte auch, dass für das Entsperren mit Fingerabdruck dein Master-Passwort durch Android in einem gesicherten Speicher abgelegt wird. Dieser Speicher kann aber von Android gelöscht oder ungültig gemacht werden, z.B. wenn du einen Fingerabdruck in den Systemeinstellungen hinterlegst. Verlass dich daher bitte nicht auf den Fingerabdruck, sondern merke dir dein Master-Passwort!
+ Ist deine Datenbank gesichert?
+ Keepass2Android speichert deine Passwörter in eine Datei an einem Ort deiner Wahl. Bist du sicher, dass du auf diese Datei auch noch Zugriff hast wenn dein Telefon verloren geht oder gestohlen wird? Oder wenn die Datei zerstört oder gelöscht wird? Bitte stelle sicher, dass du immer eine aktuelle Kopie an einem sichern Ort aufbewahrst!
+ Um jetzt eine Sicherung zu erstellen, gehe nach %1$s > %2$s > %3$s.
+ Hast du für Notfälle vorgesorgt?
+ Hast du je darüber nachgedacht, was passiert, wenn du nicht mehr auf deine Passwort-Datenbank zugreifen kannst? Was, wenn du einen Unfall hast? Ein bewährtes Verfahren ist, einer vertrauenswürdigen Person dein Masterpasswort für Notfälle mitzuteilen. Ansonsten wird niemand auf deine Passwörter Zugriff haben.
diff --git a/src/keepass2android/Resources/values-el/strings.xml b/src/keepass2android/Resources/values-el/strings.xml
index b388f719..789c9541 100644
--- a/src/keepass2android/Resources/values-el/strings.xml
+++ b/src/keepass2android/Resources/values-el/strings.xml
@@ -9,10 +9,10 @@
Το SFTP υποστηÏίζεται με χÏήση της βιβλιοθήκης JSch με άδεια BSD που δημιουÏγήθηκε από τη JCraft, Inc.
Το εικονίδιο ΣφυÏί δημιουÏγήθηκε από τον John Caserta, το εικονίδιο Πιγκουίνος δημιουÏγήθηκε από τον Adriano Emerick, το εικονίδιο ΦτεÏÏŒ δημιουÏγήθηκε από τον Jon Testa και το εικονίδιο της Apple δημιουÏγήθηκε από την Ava Rowell. Όλα τα Ï€ÏοηγοÏμενα εικονίδια είναι από το Noun Project. Το εικονίδιο της Εικόνας είναι από το https://icons8.com/icon/5570/Picture.
Αποδοχή
- ΑπόÏÏιψη
- Î Ïοσθήκη καταχώÏισης
- ΕπεξεÏγασία καταχώÏισης
- ΔημιουÏγία καταχώÏισης για URL
+ ΆÏνηση
+ Î Ïοσθήκη εγγÏαφής
+ ΕπεξεÏγασία εγγÏαφής
+ ΔημιουÏγία εγγÏαφής για URL
Î Ïοσθήκη ομάδας
Î Ïοσθήκη Ομάδας
ΕπεξεÏγασία Ομάδας
@@ -87,7 +87,11 @@
ΕνεÏγοποίηση ξεκλειδώματος με δακτυλικό αποτÏπωμα
ΕνεÏγοποίηση ξεκλειδώματος με δακτυλικό αποτÏπωμα για QuickUnlock
Αγγίξτε αισθητήÏα αφής για ξεκλείδωμα της βάσης δεδομÎνων
+ Το ξεκλείδωμα με δακτυλικό αποτÏπωμα απÎτυχε. Το κλειδί αποκÏυπτογÏάφησης ακυÏώθηκε από το Android. Αυτό συμβαίνει συνήθως όταν δηλωθεί νÎο δακτυλικό αποτÏπωμα ή αλλάξουν οι Ïυθμίσεςι ασφαλείας.
+ Το ξεκλείδωμα της βάσης δεδομÎνων απÎτυχε: άκυÏο σÏνθετο κλειδί. Το ξεκλείδωμα με δακτυλικό αποτÏπωμα απενεÏγοποιήθηκε, Ï€Ïοφανώς επειδή το κÏÏιο κλειδί δεν είναι πλÎον ÎγκυÏο.
ΕπενενεÏγοποιήστε το ξεκλείδωμα με δακτυλικό αποτÏπωμα για το νÎο βασικό συνθηματικό.
+ Ξεκλειδώστε με το συνθηματικό σας και Îπειτα ενεÏγοποιήστε το ξεκλείδωμα με δακτυλικό αποτÏπωμα στις Ïυθμίσεις της βάσης δεδομÎνων.
+ Αποτυχία αÏχικοποίησης του αισθητήÏα Î´Î±ÎºÏ„Ï…Î»Î¹ÎºÎ¿Ï Î±Ï€Î¿Ï„Ï…Ï€ÏŽÎ¼Î±Ï„Î¿Ï‚
Το βασικό συνθηματικό θα αποθηκευτεί σε αυτή τη συσκευή,
κÏυπτογÏαφημÎνο στην αποθήκη κλειδιών του Android και Ï€ÏοστατευμÎνο
@@ -205,6 +209,7 @@
ΑπομνημονεÏει τη θÎση των αÏχείων κλειδιοÏ.
Αποθήκευση αÏχείου κλειδιοÏ
ΚατάÏγηση
+ ΕπεξεÏγασία
Rijndael (AES)
Ρίζα
ΣυνάÏτηση παÏαγωγής κλειδιοÏ
@@ -268,6 +273,7 @@
Το αÏχείο Ï€Ïος εισαγωγή θα επιλεγεί στο επόμενο βήμα.
ΕνεÏγοποίηση QuickUnlock
Εισάγετε τους %1$d χαÏακτήÏες του ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÏƒÎ±Ï‚:
+ Εισάγετε τον κωδικό QuickUnlock:
QuickUnlock!
Κλείσιμο βάσης δεδομÎνων
ΕνεÏγοποίηση QuickUnlock εξ οÏισμοÏ
@@ -280,6 +286,8 @@
Το QuickUnlock απαιτεί μια ειδοποίηση για να λειτουÏγήσει σωστά. ΕπιλÎξτε αυτήν την επιλογή για να εμφανίσετε ειδοποίηση χωÏίς εικονίδιο.
Μήκος του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï QuickUnlock
ΜÎγιστος αÏιθμός χαÏακτήÏων που χÏησιμοποιοÏνται στο συνθηματικό QuickUnlock.
+ ΑπόκÏυψη μήκους QuickUnlock
+ Αν ενεÏγοποιηθεί, αποκÏÏπτει το μήκος του ÎºÏ‰Î´Î¹ÎºÎ¿Ï QuickUnlock στη σχετική οθόνη.
Αποτυχία QuickUnlock: λανθασμÎνο συνθηματικό!
Φάκελος για συνημμÎνα αÏχεία
Φάκελος όπου αποθηκεÏονται τα συνημμÎνα αÏχεία.
@@ -312,6 +320,8 @@
Κατά την Îξοδο από την οθόνη καθαÏίζει το κÏÏιο συνθηματικό που εισάγατε χωÏίς να ξεκλειδώνει τη βάση δεδομÎνων.
Κλείδωμα με την Îξοδο από την εφαÏμογή
Κλειδώνει τη βάση δεδομÎνων όταν βγείτε από την εφαÏμογή με το πλήκτÏο επιστÏοφής.
+ ΕνεÏγοποίηση του πεδίου αναζήτησης στην αÏχή
+ ΕνεÏγοποιεί το πεδίο αναζήτησης για τις ομάδες μετά το ξεκλείδωμα ή κατά την αναζήτηση
ΑπόκÏυψη της επιλογής ΔωÏεά
Αυτή η ÏÏθμιση είναι για δωÏητÎÏ‚. Είναι διαθÎσιμο μετά τη χÏήση του Keepass2Android για λίγο μόνο.
ΧωÏίς δωÏεÎÏ‚, αυτή η εφαÏμογή δεν θα υπήÏχε και δεν θα βελτιωνόταν συνεχώς! Αν δεν Îχετε Ï€ÏοσφÎÏει, σκεφτείτε να κάνετε μια δωÏεά τώÏα.
@@ -319,6 +329,10 @@
Δε δίνω δυάÏα ή Îχω ήδη κάνει Ï€ÏοσφοÏά. Μη ζητάς Ï€ÏοσφοÏά, οÏτε καν στα γενÎθλια του κατασκευαστή.
Î ÏοσωÏινή αποθήκευση βάσης δεδομÎνων
ΔιατηÏεί αντίγÏαφο των απομακÏυσμÎνων αÏχείων βάσεων δεδομÎνων στο φάκελο Ï€ÏοσωÏινής αποθήκευσης της εφαÏμογής. Αυτό επιτÏÎπει τη χÏησιμοποίηση απομακÏυσμÎνων βάσεων δεδομÎνων ακόμα και όταν είναι εκτός σÏνδεσης.
+ Τοπικά αντίγÏαφα
+ ΔημιουÏγία Ï„Î¿Ï€Î¹ÎºÎ¿Ï Î±Î½Ï„Î¹Î³Ïάφου μετά την επιτυχή φόÏτωση της βάσης δεδομÎνων
+ ΕνημÎÏωση Ï„Î¿Ï€Î¹ÎºÎ¿Ï Î±Î½Ï„Î¹Î³Ïάφου...
+ Τοπικό αντίγÏαφο στο %1$s
Πιστοποιητικά SSL
ΚαθοÏίστε τη συμπεÏιφοÏά αν αποτÏχει η επικÏÏωση πιστοποιητικοÏ. Σημείωση: μποÏείτε να εγκαταστήσετε πιστοποιητικά στη συσκευή σας, εάν αποτÏχει η επικÏÏωση!
ΕκκαθάÏιση Ï€ÏοσωÏινής μνήμης;
@@ -332,6 +346,7 @@
ΧωÏιστÎÏ‚ ειδοποιήσεις
Εμφάνιση χωÏιστών ειδοποιήσεων για την αντιγÏαφή του ονόματος χÏήστη και του ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÏƒÏ„Î¿ Ï€ÏόχειÏο και ενεÏγοποίηση του πληκτÏολογίου.
Αυτόματη συμπλήÏωση υπηÏεσίας Ï€Ïοσβασιμότητας
+ ΛειτουÏγία αυτόματης συμπλήÏωσης
Ειδοποίηση πληκτÏολογίου KP2A
Κάντε Ï€Ïοσβάσιμη την πλήÏη καταχώÏιση μÎσω του πληκτÏολογίου KP2A (συνιστάται).
Εναλλαγή πληκτÏολογίου
@@ -346,6 +361,10 @@
ΕπαναφοÏά στο Ï€ÏοηγοÏμενο πληκτÏολόγιο όταν δεν είναι ανοικτή μια καταχώÏιση.
Εικονίδιο ειδοποίησης ενόσω ξεκλείδωτη
Î Ïοβολή εικονιδίου ειδοποίησης, ενόσω η βάση δεδομÎνων είναι ξεκλείδωτη.
+ Το Android 8 εισήγαγε νÎα συμπεÏιφοÏά για τις ειδοποιήσεις. ΑπόκÏυψη του εικονιδίου των ειδοποιήσεων του Keepass2Android γίνεται από τις Ïυθμίσεις συστήματος. ΟÏίστε τη σημαντικότητα της κατηγοÏίας ειδοποιήσεων στο Ελάχιστο.
+ Άνοιγμα Ïυθμίσεων
+ Δεν με νοιάζει
+ Το αÏχείο δεν είναι πλÎον Ï€Ïοσπελάσιμο στο Keepass2Android. Είτε διαγÏάφτηκε ή ανακηθηκαν τα δικαιώματα Ï€Ïόσβασης. Δοκιμάστε να ξανα-ανοίξετε το αÏχείο, πχ με Αλλαγή βάσης δεδομÎνων.
Î Ïο-φόÏτωση αÏχείου βάσης δεδομÎνων
Ξεκίνημα φόÏτωσης στο παÏασκήνιο ή λήψη του αÏχείου της βάσης δεδομÎνων κατά την εισαγωγή του συνθηματικοÏ.
ΘÎλετε να αντικαταστήσετε το υπάÏχον δυαδικό αÏχείο με το ίδιο όνομα;
@@ -492,6 +511,7 @@
ανενεÏγό
Î’Ïείτε Ï€Ïόσθετα από το δίκτυο
ΕμβÎλεια
+ δεν είναι ενεÏγοποιημÎνο
%1$s ζητά πιστοποιητικά για %2$s.
%1$s ζητά πιστοποιητικά. ΠαÏακαλώ επιλÎξτε μια καταχώÏιση.
ΕνεÏγό
@@ -519,6 +539,7 @@
Φαίνεται πως ανοίξατε το αÏχείο από μια εξωτεÏική εφαÏμογή. Γι αυτό δεν υποστηÏίζεται η Ï„Ïοποποίηση. Αν θÎλετε να κάνετε αλλαγÎÏ‚ στη βάση δεδομÎνων, κλείστε τη βάση δεδομÎνων και επιλÎξτε Αλλαγή βάσης δεδομÎνων. Στη συνÎχεια ανοίξτε το αÏχείο με μια από τις διαθÎσιμες επιλογÎÏ‚ αν είναι δυνατόν.
ΙσχÏει ÏÏθμιση μόνο για ανάγνωση. Αλλάξτε τη ÏÏθμιση αν θÎλετε να κάνετε αλλαγÎÏ‚ στη βάση δεδομÎνων.
ΤÏοποποιήσεις δεν είναι δυνατÎÏ‚ εξαιτίας πεÏιοÏισμών που εισήγαγε το Android KitKat. Αν θÎλετε να κάνετε αλλαγÎÏ‚ στη βάση δεδομÎνων, κλείστε τη βάση δεδομÎνων και επιλÎξτε \'Αλλαγή βάσης δεδομÎνων\'. Στη συνÎχεια, ανοίξτε το αÏχείο χÏησιμοποιώντας τον επιλογÎα αÏχείων.
+ Τοπικά αντίγÏαφα δεν Ï„ÏοποποιοÏνται. ΜποÏείτε να εξάγετε το αντίγÏαφο σε άλλη τοποθεσία από Ρυθμίσεις - Βάση δεδομÎνων - Εξαγωγή βάσης δεδομÎνων... Έτσι μποÏείτε να την ανοίξετε για εγγÏαφή πάλι.
Î Ïοσθήκη εικονιδίου από αÏχείο...
ΑντιγÏαφή αÏχείου...
ΑντιγÏαφή
@@ -553,6 +574,13 @@
* Βεβαιωθείτε ότι Îχετε επιλÎξει σωστό Ï„Ïπο συνθηματικοÏ. Βεβαιωθείτε ότι ταιÏιάζει με τον Ï„Ïπο που χÏησιμοποιήθηκε κατά τη δημιουÏγία της βάσης δεδομÎνων. \n
* Βεβαιωθείτε ότι Îχετε επιλÎξει το σωστό αÏχείο βάσης δεδομÎνων.
+
+ \n
+ • Υπόδειξη: Αν καταστÏάφηκε η βάση δεδομÎνων ή ξεχάσατε το κÏÏιο συνθηματικό μετά την Ï„Ïοποποίησή του, δοκιμάστε την τελευταία Îκδοση που ανοίξατε επιτυχώς με \"%1$s\", και επιλÎγοντας το τοπικό αντίγÏαφο.
+
+ \n
+ • Υπόδειξη: Το Keepass2Android αποθήκευσε την τελευταία Îκδοση που άνοιξε επιτυχώς στην εσωτεÏική μνήμη. ΜποÏείτε να την ανοίξετε με \"%1$s\" και επιλÎγοντας το τοπικό αντίγÏαφο.
+
Το αÏχείο είναι κατεστÏαμμÎνο. \n
ΑκολουθοÏν υποδείξεις για να διαγνώσετε το Ï€Ïόβλημα: \n
@@ -560,6 +588,12 @@
Αν αντιγÏάψατε το αÏχείο μÎσω USB (MTP-Mode), παÏακαλώ Ï€Ïοσπαθήστε ξανά με εÏγαλεία όπως το MyPhoneExplorer. Το MTP πεÏικόπτει τα αÏχεία σε οÏισμÎνες πεÏιπτώσεις. \n
Αν δεν μποÏείτε να ανοίξετε το αÏχείο από την ίδια θÎση στον υπολογιστή σας, είναι Ï€Î¿Î»Ï Ï€Î¹Î¸Î±Î½ÏŒ ότι το αÏχείο είναι Ï€Ïάγματι κατεστÏαμμÎνο. ΧÏησιμοποιήστε αντίγÏαφο ασφαλείας της βάσης δεδομÎνων. Αν ΄πιστεÏετε ότι το Keepass2Android καταστÏÎφει το αÏχείο, επικοινωνήστε με την υποστήÏιξη. \n
Αν μποÏείτε να ανοίξετε το αÏχείο στον υπολογιστή σας, επικοινωνήστε με την υποστήÏιξη. ΜποÏείτε να δοκιμάσετε να το αποθηκεÏσετε με διαφοÏετικÎÏ‚ Ïυθμίσεις (Ï€.χ. unzipped) στο PC και Ï€Ïοσπαθήστε ξανά να ανοίξετε στο Keepass2Android.
+ Βάση δεδομÎνων ξεκλείδωτη
+ Η ειδοποίηση για τη βάση δεδομÎνων ξεκλειδώνεται
+ QuickUnlock
+ Ειδοποίηση για τη βάση δεδομÎνων που κλειδώνεται με QuickUnlock
+ Ειδοποιήσεις
+ Ειδοποίηση για απλοποιημÎνη Ï€Ïόσβαση στην Ï„ÏÎχουσα εγγÏαφή.
Keepass2Android: ΠαÏουσιάστηκε Îνα σφάλμα.
ΠαÏουσιάστηκε απÏοσδόκητο σφάλμα κατά την εκτÎλεση του Keepass2Android. Βοηθήστε να το διοÏθώσω αυτό, επιτÏÎποντας την εφαÏμογή να στÎλνει αναφοÏÎÏ‚ σφαλμάτων.
Οι αναφοÏÎÏ‚ σφαλμάτων δεν θα πεÏιÎχουν οποιαδήποτε πεÏιεχόμενα της βάσης δεδομÎνων ή το κÏÏιο συνθηματικό σας. ΜποÏείτε να τις απενεÏγοποιήσετε στις Ïυθμίσεις της εφαÏμογής.
@@ -568,6 +602,31 @@
ΕÏώτηση μετά από σφάλμα
Αποστολή αναφοÏάς σφαλμάτων
Î Ïοβάλει το πληκτÏολόγιο για εισαγωγή ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÏŒÏ„Î±Î½ είναι ενεÏγή η σάÏωση Î´Î±ÎºÏ„Ï…Î»Î¹ÎºÎ¿Ï Î±Ï€Î¿Ï„Ï…Ï€ÏŽÎ¼Î±Ï„Î¿Ï‚.
+
+ Έκδοση 1.05\n
+ * ΧÏήση ειδοποιήσεων του Android 8, που επιτÏÎπει Ï€ÏοσαÏμογή μÎσω των Ïυθμίσεων συστήματος\n
+ * Î Ïοβολή εικονιδίου εισόδου στις ειδοποιήσεις\n
+ * ΧÏήση Adaptive Icons για το Android 8, χÏήση στÏÎ¿Î³Î³Ï…Î»Î¿Ï ÎµÎ¹ÎºÎ¿Î½Î¹Î´Î¯Î¿Ï… για το Android 7\n
+ * ΕπιτÏÎπει ενεÏγοποίηση αναζήτησης κατά το ξεκλείδωμα\n
+ * Αλλαγή στον Ï„Ïόπο εγγÏαφής των αÏχείων μÎσω Storage Access Framework, διοÏθώνει ζητήματα ενημÎÏωσης αÏχείων στο Google Drive όταν ανοίγονται μÎσω του System file picker\n
+ * Î Ïοσθήκη πληÏοφοÏιακών κειμÎνων Ï€Ïος αποφυγή κοινών παÏεξηγήσεων\n
+ * ΔημιουÏγία τοπικών αντιγÏάφων των βάσεων δεδομÎνων που ανοίχθηκαν επιτυχώς Ï€Ïος αποφυγή απώλειας δεδομÎνων\n
+ * ΕνημεÏωμÎνο JSch για υποστήÏιξη Ï€Ïόσφατων SSH ciphers\n
+ * ΕπιτÏÎπει διόÏθωση Ïυθμίσεων σÏνδεσης, πχ όταν αλλάζει το συνθηματικό WebDav\n
+ * Added support for Yubikey Neo\'s static password mode\n
+ * Allow to disable Autofill suggestion\n
+ * Fixed data leakage to logcat\n
+ * bug fixes\n
+
+
+ Έκδοση 1.04b\n
+ * Αποφυγή κÏασαÏίσματος κατά την ενεÏγοποίηση Autofill σε συσκευÎÏ‚ Huawei.\n
+
+
+ Έκδοση 1.04\n
+ * Î Ïοσθήκη υπηÏεσίας Autofill για Android 8.0 και επόμενα.\n
+ * ΑναβαθμισμÎνες βιβλιοθήκες, εÏγαλεία ανάπτυξης και Îκδοση Target SDK.\n
+
Έκδοση 1.03\n
* ΑφαιÏÎθηκε η υπηÏεσία Ï€Ïοσβασιμότητας Îπειτα από απαίτηση της Google. Δείτε τις Ïυθμίσεις κωδικών Ï€Ïοσβασιμότητας για να βÏείτε Îνα Ï€Ïόσθετο που να αντικαθιστά την λειτουÏγικότητα.\n
@@ -859,4 +918,20 @@ Initial public release
Βεβαιωθείτε ότι αυτό λειτουÏγεί στο σÏστημά σας, αλλιώς χÏησιμοποιήστε το ενσωματωμÎνο πληκτÏολόγιο.
ΠεÏιγÏαφή που παÏÎχεται από το Ï€Ïόσθετο:
+ Το Keepass2Android υποστηÏίζει το χαÏακτηÏιστικό Autofill του Android, αλλά φαίνεται ότι δεν το Îχετε ενεÏγοποιήσει ακόμη.
+ ΕνεÏγοποίηση αυτόματης συμπλήÏωσης
+ Λυπάμαι, αλλά η συσκευή σας δεν υποστηÏίζει άνοιγμα των Ïυθμίσεων μÎσα από την εφαÏμογή. ΠαÏακαλώ ενεÏγοποιήστε την υπηÏεσία από τις Ïυθμίσεις συστήματος.
+ Εμφάνιση βοήθειας Αυτόματης συμπλήÏωσης
+ ΣυμπλήÏωση με Keepass2Android
+ Δεν σχετίζεται το web domain %1$s με την εφαÏμογή %2$s
+ Καταλαβαίνω
+ Îα μην εμφανιστεί ξανά
+ Θυμάστε το κÏÏιο συνθηματικό σας;
+ Είναι αδÏνατο να ανοίξετε τη βάση δεδομÎνων δίχως το κÏÏιο συνθηματικό.
+ Το ξεκλείδωμα Î´Î±ÎºÏ„Ï…Î»Î¹ÎºÎ¿Ï Î±Ï€Î¿Ï„Ï…Ï€ÏŽÎ¼Î±Ï„Î¿Ï‚ λειτουÏγεί αποθηκεÏοντας το κÏÏιο κλειδί στο χώÏο ασφαλοÏÏ‚ αποθήκευσης του Android. Αυτός μποÏεί να διαγÏαφτεί ανά πάσα στιγμή, πχ όταν Ï€Ïοστίθεται νÎο δακτυλικό αποτÏπωμα στις Ïυθμίσεις συστήματος. Γι αυτό μην βασίζεστε στο δακτυλικό αποτÏπωμα, αλλά να θυμάστε το κÏÏιο συνθηματικό!
+ Έχετε αντίγÏαφο ασφαλείας της βάσης δεδομÎνων;
+ Το Keepass2Android αποθηκεÏει τα συνθηματικά σας σε αÏχείο σε τοποθεσία επιλογής σας. Είναι σίγουÏο ότι μποÏείτε να βÏείτε αυτό το αÏχείο σε πεÏίπτωση απώλειας του ÎºÎ¹Î½Î·Ï„Î¿Ï ÏƒÎ±Ï‚; Βεβαιωθείτε ότι Îχετε ενημεÏωμÎνο αντίγÏαφο σε ασφαλή τοποθεσία!
+ Για αντίγÏαφο ασφαλείας, %1$s > %2$s > %3$s.
+ Είστε Ï€ÏοετοιμασμÎνοι για Îκτακτα πεÏιστατικά;
+ ΑναÏωτηθήκατε τι συμβαίνει αν δεν είνα δυνατόν να Ï€Ïοσπελάσετε τη βάση δεδομÎνων με τα συνθηματικά σας; Ή στην πεÏίπτωση που Îχετε Îνα ατÏχημα; Συνιστάται να μοιÏάζεστε το κÏÏιο συνθηματικό σας με κάποιο Îμπιστο άτομο. ΔιαφοÏετικά, κανÎνας δεν θα Ï€Ïοσπελάσει στα συνθηματικά σας.
diff --git a/src/keepass2android/Resources/values-es/strings.xml b/src/keepass2android/Resources/values-es/strings.xml
index 247a60d8..d271e8fa 100644
--- a/src/keepass2android/Resources/values-es/strings.xml
+++ b/src/keepass2android/Resources/values-es/strings.xml
@@ -207,6 +207,7 @@ mediante la autenticación de huellas dactilares. Esto permite desbloquear la ba
Recordar la ubicación de archivos de clave
Guardar archivo clave
Borrar
+ Editar
Rijndael (AES)
Root
Función de derivación de claves
@@ -270,6 +271,7 @@ mediante la autenticación de huellas dactilares. Esto permite desbloquear la ba
El archivo que va a importar será seleccionado en el paso siguiente.
Habilitar QuickUnlock
Escribe los últimos %1$d caracteres de tu contraseña:
+ Introduzca el código de QuickUnlock:
QuickUnlock!
Cerrar la base de datos
Habilitar QuickUnlock por defecto
@@ -282,6 +284,8 @@ mediante la autenticación de huellas dactilares. Esto permite desbloquear la ba
QuickUnlock requiere una notificación para funcionar correctamente. Seleccione esta opción para mostrar la notificación sin icono.
Longitud de la clave QuickUnlock
Número máximo de caracteres que se utiliza para la contraseña QuickUnlock.
+ Ocultar longitud de QuickUnlock
+ Si está habilitado, la longitud del código de QuickUnlock no aparece en la pantalla de QuickUnlock.
¡Error de QuickUnlock: contraseña incorrecta!
Ubicación de archivos adjuntos
Directorio en donde se guardan los archivos adjuntos.
@@ -314,6 +318,8 @@ mediante la autenticación de huellas dactilares. Esto permite desbloquear la ba
Limpiar contraseña maestra ingresada al salir de la pantalla, sin desbloquear la base de datos.
Bloquear al salir de la aplicación
Bloquear base de datos al salir de la aplicación presionando el botón \"atrás\".
+ Activar campo de búsqueda en inicio
+ Activa el campo de búsqueda en la vista de grupo después de desbloquear o al buscar una entrada
Esconder opción de donación
Este ajuste es para donantes. Está disponible después de usar Keepass2Android por un tiempo sólo.
Sin donaciones, esta aplicación no existirÃa y no podrÃa ser mejorada continuamente. Si tu aún no has donado, por favor considera hacer una donación ahora.
@@ -321,6 +327,10 @@ mediante la autenticación de huellas dactilares. Esto permite desbloquear la ba
No le voy a dar un céntimo o ya he donado. No solicitar una donación, ni en el cumpleaños del autor.
Caché de base de datos
Mantiene una copia de los archivos de base de datos remota en el directorio del caché de la aplicación. Esto permite utilizar bases de datos remotas sin conexión a internet.
+ Copias de seguridad locales
+ Crear una copia de local después de cargar con éxito una base de datos.
+ Actualizando copia de seguridad local...
+ Copia de seguridad local de %1$s
Certificados SSL
Definir el comportamiento cuando falla la validación de un certificado. Nota: puedes instalar certificados en tu dispositivo si la validación falla!
¿Limpiar Cache?
@@ -349,6 +359,10 @@ mediante la autenticación de huellas dactilares. Esto permite desbloquear la ba
Volver al teclado anterior si no se abre ninguna introducción de datos.
Icono de notificación durante el desbloqueado
Mostrar una notificación en curso mientras la base de datos está desbloqueada.
+ Android 8 ha introducido nuevo comportamiento para notificaciones. Si desea ocultar el icono de notificaciones de Keepass2Android, por favor configúrelo en ajustes del sistema. Establezca la importancia de la categorÃa de notificación al mÃnimo.
+ Abrir ajustes
+ No me interesa
+ El archivo ya no es accesible a Keepass2Android. Ha sido eliminado o han sido revocados los permisos de acceso. Por favor use re-abrir el archivo, por ejemplo, con Cambiar base de datos.
Pre-cargar archivo de base de datos
Empezar a descargar del archivo de base de datos durante la entrada de contraseña.
¿Desea sobrescribir el binario existente con el mismo nombre?
@@ -523,6 +537,7 @@ mediante la autenticación de huellas dactilares. Esto permite desbloquear la ba
Parece que abrió el archivo desde una aplicación externa. De esta manera no admite escritura. Si desea realizar cambios en la base de datos, cierre la base de datos y seleccione Cambiar Base de Datos. Luego, si es posible, abra el archivo desde una de las opciones disponibles.
Está activado el indicador de sólo lectura. Quite este indicador si desea realizar cambios en la base de datos.
La escritura no es posible debido a restricciones en Android KitKat. Si desea realizar cambios en la base de datos, cierre la base de datos y seleccione Cambiar Base de Datos. A continuación, abra el archivo usando el selector de archivos del sistema.
+ Las copias de seguridad locales no pueden ser modificadas. Puede utilizar Ajustes de base de datos - Exportar base de datos para exportar esta copia de seguridad a otra ubicación desde de la que se pueda volver a abrir. Entonces será escribible de nuevo.
Agregar icono desde archivo...
Copiando archivos...
Copiar
@@ -557,6 +572,11 @@ mediante la autenticación de huellas dactilares. Esto permite desbloquear la ba
• Asegúrese que haya seleccionado el tipo correcto de contraseña. Asegúrese que este tipo concuerde con el tipo usado al crear la base de datos.\n
• Asegúrese que haya seleccionado el archivo de base de datos correcto.
+
+ \n • Sugerencia: Si crees que el archivo de base de datos puede estar corrupto o no recuerdas la contraseña maestra después de modificarla, puedes probar con la última versión del fichero abierto con éxito haciendo clic en \"%1$s\" y seleccionando la copia de seguridad local.
+
+ \n • Sugerencia: Keepass2Android ha almacenado la última versión del fichero abierto con éxito en la memoria interna. Puedes abrirlo haciendo clic en \"%1$s\" y seleccionando la copia de seguridad local.
+
El Archivo está dañado. \n
Estas son algunas sugerencias que pueden ayudarle a diagnosticar el problema:\n
@@ -566,6 +586,12 @@ El Archivo está dañado. \n
• Si usted aún puede abrir el archivo en su PC, por favor contacte a soporte. Intente guardar el archivo con una configuración distinta (por ejemplo, descomprimido) en la PC y vuelva a intentar abrirlo en Keepass2Android.
+ Base de datos desbloqueada
+ Notificación acerca de que la base de datos está siendo desbloqueada
+ QuickUnlock
+ Notificación acerca de que la base de datos está siendo bloqueada con QuickUnlock
+ Notificaciones de entrada
+ Notificación para simplificar el acceso a la entrada seleccionada actualmente.
Keepass2Android: Se produjo un error.
Se ha producido un error inesperado durante la ejecución de Keepass2Android. Por favor ayúdenos a solucionar este problema permitiendo que la aplicación envÃe informes de errores.
Los informes de error no tienen contenido de su base de datos o contraseña maestra. Puede desactivarlas en la configuración de la aplicación.
@@ -574,6 +600,30 @@ El Archivo está dañado. \n
Preguntar después del error
Enviar informe de errores
Mostrar teclado para entrada de contraseña estando activada la exploración de huella digital.
+
+Versión 1.05\n
+ * Uso de canales de notificación para Android 8, que permite la configuración a través de los ajustes del sistema\n
+ * Mostrar el icono de la entrada en notificación\n
+ * Uso de iconos adaptables para Android 8, uso de icono redondo del launcher para Android 7\n
+ * Permitir activar la búsqueda tras desbloquear (ver ajustes)\n
+ * Cambiada la manera en que se escriben los archivos a través del Storage Access Framework, lo que soluciona problemas al actualizar archivos en Google Drive abiertos a través de la selección de archivos del sistema\n
+ * Añadidos algunos textos informativos para evitar algunos malentendidos comunes\n
+ * Crear copias de seguridad locales de las bases de datos abiertas con éxito para reducir el riesgo de pérdida de datos\n
+ * JSch actualizado para soportar el cifrado SSH más reciente\n
+ * Permitir editar ajustes de conexión, por ejemplo cuando la contraseña WebDav ha cambiado\n
+ * Añadido soporte para modo de contraseña estática de Yubikey Neo\n
+ * Permitir desactivar sugerencia de Autorrelleno\n
+ * Reparada la salida de datos a logcat\n
+ * Arreglo de errores\n
+
+
+ Versión 1.04b\n * Evitar cierre erróneo cuando el usuario intenta activar Autorrelleno en dispositivos Huawei. \n
+
+
+ Versión 1.04\n
+ *Agregado servicio de relleno automático para Android 8.0 y superiores.\n
+ *LiberÃas actualizadas, herramientas de construcción y versión de SDK.\n
+
Version 1.03\n
* Eliminado servicio de accesibilidad por AutoFill, tal y como solicitó Google. Por favor, comprueba la configuración de acceso por clave para encontrasr un plugin que replique la funcionalidad anterior.\n
@@ -880,7 +930,18 @@ Publicación inicial
Descripción proporcionada por el plugin:
Keepass2Android soporta la función de Autocompletado de Android pero parece que no lo has habilitado aún.
Activar Autocompletado
+ Lo sentimos, parece que el dispositivo no es compatible con abrir la configuración desde dentro de la aplicación. Por favor vaya manualmente a los ajustes del sistema para Autorrelleno para activar el servicio.
Mostrar ayuda de Autocompletado
Completar con Keepass2Android
No se pudo asociar el dominio web %1$s con la app %2$s
+ Entiendo
+ No volver a mostrar
+ ¿Recuerda su contraseña maestra?
+ Tenga en cuenta que no será capaz de abrir la base de datos sin la contraseña maestra. No hay manera de reiniciar o \"resetear\" la contraseña maestra.
+ También tenga en cuenta que el desbloqueo por huella dactilar funciona almacenando su clave maestra en un almacenamiento seguro de Android. Este almacenamiento puede ser borrado por Android en cualquier momento, por ejemplo, si agrega una nueva huella en la configuración del sistema. Asà que no confÃe en su huella dactilar ¡pero recuerde su contraseña maestra, por favor!
+ ¿Se está haciendo copia de seguridad de su base de datos?
+ Keepass2Android guarda sus contraseñas en un archivo en una ubicación de su elección. ¿Está seguro de que aún puede acceder a este archivo cuando su teléfono se pierde o lo roban, o cuando el archivo es destruido o borrado? ¡Por favor, asegúrese de que siempre tiene una copia de seguridad actualizada en un lugar seguro!
+ Para crear una copia de seguridad ahora, vaya a %1$s > %2$s > %3$s.
+ ¿Está preparado para casos de emergencia?
+ ¿Ha considerado alguna vez qué pasa si ya no eres capaz de acceder a su base de datos de contraseñas? ¿Qué pasa si tienes un accidente? Es una buena práctica pasar su llave maestra a alguna persona de confianza para casos de emergencia. Nadie tendrá acceso a sus contraseñas de otra manera.
diff --git a/src/keepass2android/Resources/values-eu/strings.xml b/src/keepass2android/Resources/values-eu/strings.xml
index c022e182..014da05e 100644
--- a/src/keepass2android/Resources/values-eu/strings.xml
+++ b/src/keepass2android/Resources/values-eu/strings.xml
@@ -42,6 +42,7 @@
Inportatu gakoa barne karpetara
Teklatu aldaketa
Tokiko fitxategientzat besterik ez.
+ Fitxategia barne memorian gordeta dago.
Desblokeatu
Desblokeatu datu-basea
Parentesiak
@@ -59,8 +60,12 @@
Kopiatu arbelean
Ukitze-sentsorea
Berretsi hatz-marka jarraitzeko
+ Ezin izan da hatz-marka bidezko desblokeoa ezarri:
Ez da hatz-mark ezagutu. Saiatu berriro
Hatz-marka ezagutu da
+ Hatz-marka bidezko desblokeoak Android 6.0 edo berriagoa behar du.
+ Ez da hatz-markak irakurtzeko harware-a aurkitu.
+ Ez duzu hatz-markarik erregistratu gailu honetan. Zoaz Android sistemaren ezarpenetara aurretik.
Desgaitu hatz-marka bidezko desblokeatzea
Gaitu hatz-marka bidezko desblokeo osoa
Gaitu haz-marka bidezko desblokeoa QuickUnlocken
diff --git a/src/keepass2android/Resources/values-fa-rIR/strings.xml b/src/keepass2android/Resources/values-fa-rIR/strings.xml
index e287630c..07dfdb91 100644
--- a/src/keepass2android/Resources/values-fa-rIR/strings.xml
+++ b/src/keepass2android/Resources/values-fa-rIR/strings.xml
@@ -3,15 +3,17 @@
ﺑﺎﺯﺧﻮïºïº©
- ØµÙØÙ‡ نخست
- Keepass2Android یک برنامه مدیریت رمز عبور با قابلیت خواندن/نوشتن پایگاه داده های 2.x KeePass در اندروید است.
- این رابط کاربری مبتنی بر نسخه ای از KeepassDroid توسعه ÛŒØ§ÙØªÙ‡ توسط Pellin Brian است. کد برای عملیات پایگاه داده مبتنی بر KeePass توسط Dominik Reichl است. ربات اندروید تکثیر یا تغییر ÛŒØ§ÙØªÙ‡ از کار ایجاد شده توسط Ú¯ÙˆÚ¯Ù„ به اشتراک گذاشته شده Ùˆ با توجه به شرایط مجوز Creative Commons 3.0 Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ شود.
- پشتیبانی از SFTP با Ø§Ø³ØªÙØ§Ø¯Ù‡ از کتابخانه JSch ØªØØª مجوز BSD Ùˆ توسط JCraftØŒ Inc ایجاد شده است.
+ ØµÙØÙ‡Ù” نخست
+ برنامهٔ Keepass2Android یک برنامهٔ مدیریت گذرواژه است Ú©Ù‡ دسترسی خواندنی/نوشتنی به پایگاه‌های دادهٔ KeePass 2.x را در اندروید ÙØ±Ø§Ù‡Ù… می‌کند.
+ این رابط کاربری بر اساس نسخه‌ای از KeepassDroid ساختهٔ Ù¾Ùلین Ø¨ÙØ±Ùین ایجاد شده است. کدهای لازم برای کار با پایگاه داده بر اساس کدهای KeePass ساختهٔ دامینیک رایکل ایجاد شده است. ربات اندروید بازتولید یا ØªØºÛŒÛŒØ±ÛŒØ§ÙØªÙ‡Ù” کاری است Ú©Ù‡ Ú¯ÙˆÚ¯Ù„ ساخته Ùˆ به‌اشتراک گذاشته است Ùˆ ما بر اساس بندهای اجازه‌نامهٔ Creative Commons 3.0 از آن Ø§Ø³ØªÙØ§Ø¯Ù‡ کرده‌ایم.
+ پشتیبانی از SFTP با Ø§Ø³ØªÙØ§Ø¯Ù‡ از کتابخانهٔ JSch ساختهٔ شرکت
+JCraft ایجاد شده است. ØªØØª مجوز BSD.
+ نماد Ú†Ú©Ø´ را جان Ú©ÙŽØ²ÙØ±ØªØ§ ساخته است (از Noun Project). نماد پنگوئن را آدریانو اÙÙ…ÙØ±ÛŒÚ© ساخته است (از Noun Project). نماد پر را جÙون ØªÙØ³ØªØ§ ساخته است (از Noun Project). نماد سیب را اÙیوا رَوئل ساخته است (از Noun Project). نماد تصویر از اینجاست https://icons8.com/icon/5570/Picture.
قبول
رد کن
- اضاÙÙ‡ کردن ورودی
- ویرایش ورودی
- ایجاد ورودی برای آدرس
+ Ø§ÙØ²ÙˆØ¯Ù† مدخل
+ ویرایش مدخل
+ ساخت مدخل برای نشانی اینترنتی (URL)
Ø§ÙØ²ÙˆØ¯Ù† گروه
Ø§ÙØ²ÙˆØ¯Ù† گروه
ویرایش گروه
@@ -21,224 +23,670 @@
KP2A
Keepass2Android Ø¢Ùلاین
KP2A Ø¢Ùلاین
- برنامه متوق٠شد
- زمان لازم قبل از Ù‚ÙÙ„ کردن پایگاه داده وقتی Ú©Ù‡ نرم Ø§ÙØ²Ø§Ø± ØºÛŒØ±ÙØ¹Ø§Ù„ Ù…ÛŒ باشد.
- متوق٠کردن کامل برنامه
- دکمه بستن
- نشان دادن یک دکمه در ØµÙØÙ‡ نمایش رمز عبور برای بستن کامل برنامه (برای کاربرانی Ú©Ù‡ Ø´Ú© دارند)
+ مهلت برنامه
+ اگر با برنامه کار نکنید پس از این مدت‌زمان پایگاه داده Ù‚ÙÙ„ می‌شود.
+ بستن کامل برنامه
+ دکمهٔ بستن
+ در ØµÙØÙ‡Ù” نمایش گذرواژه دکمه‌ای برای بستن کامل برنامه اضاÙÙ‡ می‌کند (برای کاربران بدگمان)
برنامه
تنظیمات برنامه
- نمایش نام گروه در نتیجه جستجو
- نام نمایشی گروه در زیر عنوان ورودی در نتایج جستجو. اگر چند نام همانند وجود داشته باشد Ù…Ùید خواهد بود.
- گروه نمایش در ØØ§Ù„ ØØ§Ø¶Ø±: %1$s
- نمایش نام گروه در نمای ورودی
- متاسÙÙ…! Keepass2Android نتوانست آدرس %1$s را باز کند. Ù„Ø·ÙØ§ با برنامه نویس تماس بگیرید.
- یک ورودی
- %1$d ورودی
+ نمایش نام گروه در نتیجهٔ جست‌وجو
+ نام گروه را زیر عنوان مدخل در نتایج جست‌وجو نشان می‌دهد. هنگامی که چندین مدخل همنام وجود دارد سودمند است.
+ در ØØ§Ù„ دیدن این گروه هستید: %1$s
+ نمایش نام گروه در نمای مدخل‌ها
+ متأسÙÙ…! Keepass2Android در کار با این URI ناموÙÙ‚ بود:\n
+%1$s\n
+Ù„Ø·ÙØ§Ù‹ با توسعه‌دهنده تماس بگیرید!
+ یک مدخل
+ %1$d مدخل
مجموعه آیکون
- پیدا کردن اطلاعات بیشتر...
+ بیشتر پیدا کنید...
امنیت
نمایش
- اجازه وارد کردن پسورد
- QuickUnlock
- رسیدگی به ÙØ§ÛŒÙ„
- ØµÙØÙ‡ کلید
- ذخیره بانک اطلاعاتی ...
- باز کردن Ù‚ÙÙ„ با اثر انگشت
- وارد کردن پایگاه داده به پوشه داخلی
- وارد کردن ÙØ§ÛŒÙ„ کلید به پوشه داخلی
- تعویض ØµÙØÙ‡ کلید
- Ùقط در دسترس برای ÙØ§ÛŒÙ„ های Ù…ØÙ„ÛŒ.
- ÙØ§ÛŒÙ„ در دایرکتوری داخلی ذخیره شد.
- ÙØ§ÛŒÙ„ پایگاه داده به پوشه داخلی Ú©Ù¾ÛŒ شد. دکمه تایید را ÙØ´Ø§Ø± دهید تا ÙØ§ÛŒÙ„ از آدرس جدید باز شود. توجه: ÙØ±Ø§Ù…وش نکنید Ú©Ù‡ به طور مداوم ÙØ§ÛŒÙ„ پایگاه داده را در Ù…ØÙ„ÛŒ امن ذخیره کنید!
- ÙØ§ÛŒÙ„ کلید به پوشه داخلی Ú©Ù¾ÛŒ شد. قبل از پاک کردن از مسیر ÙØ¹Ù„ÛŒ مطمئن شوید Ú©Ù‡ یک Ú©Ù¾ÛŒ در مکانی امن از این ÙØ§ÛŒÙ„ دارید!
- وقتی مکان ÙØ§ÛŒÙ„ کلید ذخیره نمی شود نمی توان از پوشه داخلی Ø§Ø³ØªÙØ§Ø¯Ù‡ کرد. تنظیمات امنیتی را تغیر دهید.
- بازکردن
- باز کردن پایگاه داده
- براکت
- لغو کردن
- Clipboard پاک شد.
- زمان پاک کردن Clipboard
- زمان لازم قبل از پاک کردن Clipboard بعد از کپی کردن نام کاربری و کلمه عبور
- برای کپی نام کاربری انتخاب کنید
- برای کپی کردن کلمه عبور انتخاب کنید
- ورودی از طریق ØµÙØÙ‡ کلید KP2A موجود است
+ دسترسی به گذرواژه
+ زودگشایی
+ ÙØ§ÛŒÙ„‌گردانی
+ ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯
+ صدور پایگاه داده...
+ Ù‚Ùل‌گشایی با اثرانگشت
+ واردکردن پایگاه داده به پوشهٔ داخلی
+ واردکردن ÙØ§ÛŒÙ„ کلید به پوشهٔ داخلی
+ تعویض ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯
+ Ùقط برای ÙØ§ÛŒÙ„‌های Ù…ØÙ„ÛŒ است.
+ ÙØ§ÛŒÙ„ در پوشهٔ داخلی ذخیره شد.
+ ÙØ§ÛŒÙ„ پایگاه داده در پوشهٔ داخلی Ú©Ù¾ÛŒ شد. دکمهٔ تأیید را بزنید تا ÙØ§ÛŒÙ„ از Ù…ØÙ„ جدید باز شود. توجه: ÙØ±Ø§Ù…وش نکنید Ú©Ù‡ به‌طور منظم ÙØ§ÛŒÙ„ پایگاه داده را در Ù…ØÙ„ÛŒ امن ذخیره کنید!
+ ÙØ§ÛŒÙ„ کلید به پوشهٔ داخلی Ú©Ù¾ÛŒ شد. قبل از اینکه از مکان کنونی پاکش کنید ØÙˆØ§Ø³ØªØ§Ù† باشد Ú©Ù‡ در مکانی امن یک Ú©Ù¾ÛŒ از این ÙØ§ÛŒÙ„ داشته باشید!
+ وقتی مکان ÙØ§ÛŒÙ„ کلید ذخیره نمی‌شود نمی‌توان از پوشهٔ داخلی Ø§Ø³ØªÙØ§Ø¯Ù‡ کرد. تنظیمات امنیتی را تغیر دهید.
+ بگشا
+ Ù‚Ùل‌گشایی پایگاه داده
+ پرانتزها
+ لغو
+ بریده‌دان پاک شد.
+ مهلت بریده‌دان
+ پس از کپی‌کردن نام کاربری و گذرواژه تا این مدت در بریده‌دان باقی می‌مانند و سپس پاک می‌شوند
+ برای کپی‌کردن نام کاربری انتخاب کنید
+ برای کپی‌کردن گذرواژه انتخاب کنید
+ ورودی با ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ KP2A در دسترس است
موجود است
- امکان باز کردن منوی انتخاب کیبورد ÙØ±Ø§Ù‡Ù… نبود. Ù„Ø·ÙØ§ کیبورد با به صورت دستی ÙØ¹Ø§Ù„ کنید.
- Ù„Ø·ÙØ§ کیبورد Keepass2Android را در تنظیمات سیستم خود ÙØ¹Ø§Ù„ کنید.
- در ØØ§Ù„ ایجاد کلید پایگاه داده ...
- ساختن گروه
+ بازکردن منو برای انتخاب روش ورودی ناموÙÙ‚ بود. Ù„Ø·ÙØ§Ù‹ ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ را به‌صورت دستی ÙØ¹Ø§Ù„ کنید.
+ Ù„Ø·ÙØ§Ù‹ ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ Keepass2Android را در تنظیمات سیستم خود ÙØ¹Ø§Ù„ کنید.
+ در ØØ§Ù„ ایجاد کلید پایگاه داده…
+ گروه جاری
گروه جاری: ریشه
پایگاه داده
- رقم
- Keepass2Android کاملا بدون گارانتی است; این نرم Ø§ÙØ²Ø§Ø± رایگان است Ùˆ شما آزاد به توزیع آن ØªØØª شرایط GPL نسخه 2 یا بالاتر هستند.
+ ارقام
+ برنامهٔ Keepass2Android هیچ‌گونه ضمانتی ندارد. این Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± رایگان است Ùˆ از لط٠شماست Ú©Ù‡ آن را ØªØØª شرایط GPL نسخهٔ Û² یا بالاتر بازپخش کنید.
\u2026
- Ú©Ù¾ÛŒ کردن به ØØ§Ùظه
- سنسور را لمس کنید
- اثر انگشت را برای ادامه تایید کنید
- راه اندازی بازکشایی با اثرانگشت موÙقیت آمیز نبود:
+ کپی‌کردن در بریده‌دان
+ ØØ³Ú¯Ø± را لمس کنید
+ برای ادامه، اثرانگشت را تایید کنید
+ راه‌اندازی Ù‚Ùل‌گشایی با اثرانگشت ناموÙÙ‚ بود:
اثرانگشت شناسایی نشد. دوباره تلاش کنید.
- اثر انگشت شناخته شد
- بازگشایی با اثر انگشت نیاز به اندیشه Android 6.0 یا بالاتر دارد.
- هیچ سخت Ø§ÙØ²Ø§Ø± شناسایی اثر انگشت پیدا نشد.
- شما هیچ مشخصه شناسایی -مانند اثر انگشت- در این دستگاه ثبت نکرده اید.
-Ù„Ø·ÙØ§ ابتدا به تنظیمات سیستم بروید.
- غیر ÙØ¹Ø§Ù„ کردن Ù‚ÙÙ„ اثر انگشت
- ÙØ¹Ø§Ù„ سازی کامل Ù‚ÙÙ„ اثر انگشت
- ÙØ¹Ø§Ù„ سازی Ù‚ÙÙ„ اثر انگشت برای بازگشایی سریع
- لمس سنسور برای بازگشایی پایگاه داده ها
- لغو کردن
- یادداشت ها
- برچسب ها
- URL را نادیده بگیرید
+ اثرانگشت شناخته شد
+ Ù‚Ùل‌گشایی با اثرانگشت به اندروید Û¶Ù«Û° یا بالاتر نیاز دارد.
+ Ø³Ø®Øªâ€ŒØ§ÙØ²Ø§Ø±ÛŒ برای شناسایی اثرانگشت پیدا نشد.
+ هیچ اثرانگشتی در این دستگاه ثبت نکرده‌اید. Ù„Ø·ÙØ§Ù‹ ابتدا به تنظیمات سیستم بروید.
+ ØºÛŒØ±â€ŒÙØ¹Ø§Ù„‌کردن Ù‚Ùل‌گشایی با اثرانگشت
+ ÙØ¹Ø§Ù„‌کردن Ù‚Ùل‌گشایی کامل با اثرانگشت
+ ÙØ¹Ø§Ù„‌کردن Ù‚Ùل‌گشایی با اثرانگشت برای زودگشایی
+ برای Ù‚Ùل‌گشایی پایگاه داده ØØ³Ú¯Ø± را لمس کنید
+ Ù‚Ùل‌گشایی با اثرانگشت ناموÙÙ‚ بود. سیستم‌عامل اندروید کلید رمزگشایی را نامعتبر کرده. این مسئله معمولاً وقتی Ø§ØªÙØ§Ù‚ Ù…ÛŒâ€ŒØ§ÙØªØ¯ Ú©Ù‡ اثرانگشت جدیدی ثبت شده یا تنظیمات امنیتی تغییر کرده باشد.
+ Ù‚Ùل‌گشایی پایگاه داده ناموÙÙ‚ بود: کلید ترکیبی نامعتبر. Ù‚Ùل‌گشایی با اثرانگشت ØºÛŒØ±ÙØ¹Ø§Ù„ شد زیرا ظاهراً شاه‌رمز ذخیره‌شده، دیگر معتبر نیست.
+ Ù„Ø·ÙØ§Ù‹ Ù‚Ùل‌گشایی با اثرانگشت را برای شاه‌رمز جدید مجدداً ÙØ¹Ø§Ù„ کنید.
+ Ù„Ø·ÙØ§Ù‹ ابتدا با گذرواژه‌تان Ù‚ÙÙ„ را باز کنید Ùˆ سپس Ù‚Ùل‌گشایی با اثرانگشت را در تنظیمات پایگاه داده ÙØ¹Ø§Ù„ کنید.
+ راه‌اندازی ØØ³Ú¯Ø± اثرانگشت ناموÙÙ‚ بود.
+ شاه‌رمز شما را در این دستگاه ذخیره می‌کند. گذرواژه با Ø§Ø³ØªÙØ§Ø¯Ù‡ از ذخیره‌گاه کلید اندروید رمزگذاری Ùˆ با اعتبارسنجی اثرانگشتی Ù…ØØ§Ùظت می‌شود.
+ می‌توانید از Ø§ØØ±Ø§Ø² هویت اثرانگشتی به‌جای کد زودگشایی Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. هیچ‌گونه داده‌ای Ú©Ù‡ مربوط به شاه‌رمزتان باشد، ذخیره نمی‌کند.
+ نام ÙØ§ÛŒÙ„ پایگاه داده را وارد کنید
+ تاریخ دسترسی
+ لغو
+ یادداشت
+ برچسب‌ها
+ â€URL چیره
تکرار گذرواژه
ایجاد شد
- منقضی در
+ تاریخ انقضا
نام گروه
+ ÙØ§ÛŒÙ„ کلید (اختیاری)
+ ÙØ§ÛŒÙ„ کلید
+ تاریخ تغییر
+ گذرواژه
+ ذخیره
+ نام
+ URL
+ نام کاربری
+ Ùیلدهای رشته‌ای بیشتر
+ پیوست‌های ÙØ§ÛŒÙ„ÛŒ
+ برنامهٔ Keepass2Android این URI را پشتیبانی نمی‌کند.
+ ساخت گروه ناموÙÙ‚ بود.
+ ساخت پوشهٔ والد ناموÙÙ‚ بود.
+ این ÙØ§ÛŒÙ„ از پیش وجود دارد.
+ شناسایی تنظیمات پایگاه داده ناموÙÙ‚ بود.
+ بازگشایی لینک ناموÙÙ‚ بود.
+ نوشتن نام ÙØ§ÛŒÙ„ ضروری است.
+ ساخت ÙØ§ÛŒÙ„ ناموÙÙ‚ بود
+ پایگاه دادهٔ نامعتبر.
+ مسیر نامعتبر.
+ نوشتن نام ضروری است.
+ یک گذرواژه یا ÙØ§ÛŒÙ„ کلید لازم است.
+ دست‌کم باید یک شیوهٔ ساخت گذرواژه را انتخاب کنید
+ گذرواژه‌ها یکی نیستند.
+ تعداد دورها باید عدد باشد.
+ پارامتر باید عددی باشد.
+ نوشتن عنوان ضروری است.
+ در Ùیلد طول یک عدد صØÛŒØ وارد کنید
+ ÙØ§ÛŒÙ„ پیدا نشد.
+ مرورگر ÙØ§ÛŒÙ„
+ ساخت گذرواژه
گروه
- یادداشت ها
- تایید رمز عبور
- ایجاد رمز عبور
+ یادداشت
+ تأیید گذرواژه
+ گذرواژهٔ تولیدی
نام گروه
ÙØ§ÛŒÙ„ کلید
طول
- رمز عبور
- کلمه عبور
+ گذرواژه
+ گذرواژه
نام
- آدرس
- url را نادیده بگیرید
- tag1 tag2
+ URL
+ نشانی چیره
+ برچسب۱, برچسب۲
نام کاربری
- رمز عبور نامعتبر یا ÙØ§ÛŒÙ„ کلید نامعتبر.
- الگوریتم غیر معتبر.
- ÙØ±Ù…ت پایگاه داده شناخته شده نیست.
+ گذرواژه یا ÙØ§ÛŒÙ„ کلید نامعتبر.
+ الگوریتم نامعتبر.
+ قالب پایگاه داده شناخته نشد.
ÙØ§ÛŒÙ„ کلید وجود ندارد.
هیچ ÙØ§ÛŒÙ„ کلیدی انتخاب نشده.
ÙØ§ÛŒÙ„ کلید خالی است.
طول
- اندازه لیست گروه
- اندازه متن در لیست گروه
- بارگذاری پایگاه داده...
+ اندازهٔ لیست گروه
+ اندازهٔ متن در لیست گروه
+ در ØØ§Ù„ بارگذاری پایگاه داده…
ØØ±ÙˆÙ Ú©ÙˆÚ†Ú©
*****
- ماسک رمز عبور
- مخÙÛŒ کردن رمز عبور به طور پیش ÙØ±Ø¶
+ پنهان‌کردن گذرواژه
+ به‌طور Ù¾ÛŒØ´ÙØ±Ø¶ گذرواژه‌ها را مخÙÛŒ Ú©Ù†
درباره
- تغییر شاه کلید
- کپی کردن رمز عبور
- کپی کردن نام کاربری
+ تغییر شاه‌کلید
+ کپی گذرواژه
+ کپی نام کاربری
ساختن
تنظيمات
تنظیمات پایگاه داده
- پاک کردن
+ ØØ°Ù
ایجاد تکراری
به گروه دیگری منتقل کن
انتقال
- ØØ±Ú©Øª به گروه اصلی
- کمک کنید...
+ گروهش را باز کن
+ ØÙ…ایت کنید...
ویرایش
- رمز عبور را پنهان کن
- Ù‚ÙÙ„ کردن پایگاه داده
+ گذرواژه را پنهان کن
+ Ù‚Ùل‌کردن پایگاه داده
باز‌کردن
بستن
- تغییرنام
- جستجو
- جستجوی Ù¾ÛŒØ´Ø±ÙØªÙ‡
- برو به آدرس
+ تغییر نام
+ جست‌وجو
+ جست‌وجوی Ù¾ÛŒØ´Ø±ÙØªÙ‡
+ برو به نشانی
تغییر پایگاه داده
- نمایش همه ورودیها
+ نمایش همهٔ مدخل‌ها
منها
- هیچ وقت
+ هرگز
بله
خير
- جستجو ناموÙÙ‚
- کارت ØØ§Ùظه در ØØ§Ù„ ØØ§Ø¶Ø± Ùقط خواندنی است. ممکن است قادر به ذخیره تغییرات در بانک اطلاعاتی نباشید.
- کارت ØØ§Ùظه در ØØ§Ù„ ØØ§Ø¶Ø± بر روی دستگاه شما نصب نشده است. شما قادر نخواهید بود پایگاه داده را بارگذاری Ùˆ یا ایجاد کنید.
- ویرایش
- تاریخچه نسخه
- Keepass2Android توسط Philipp Crocoll توسعه ÛŒØ§ÙØªÙ‡ است.
- با تشکر از مشارکت %1$s.
- با تشکر برای آیکون Ùˆ مشارکت در طراØÛŒ توسط %1$s.
- Ø§ÙØ²ÙˆÙ†Ù‡ ØµÙØ± Twofish Keepass توسط Scott Greenberg توسعه داده شد Ùˆ در KP2A گنجانده شده است.
- android-filechooser توسط Hai Bison توسعه ÛŒØ§ÙØªÙ‡ است.
- Ù„Ø·ÙØ§ توجه داشته باشید
- مشارکت کننده ها
- عبارت منظم
+ هیچ مدخلی در پایگاه داده یا گروه وجود ندارد.
+ چیزی پیدا نشد
+ گرداننده‌ای برای این url وجود ندارد.
+ بازکردن آخرین پایگاه داده (لمس کنید تا باز شود)
+ در مدخل‌های پشتیبان Ùˆ سطل Ø¨Ø§Ø²ÛŒØ§ÙØª نگرد
+ چیزی از گروه‌های پشتیبان Ùˆ سطل Ø¨Ø§Ø²ÛŒØ§ÙØª در نتایج جست‌وجو نباشد
+ نام ÙØ§ÛŒÙ„ پایگاه دادهٔ KeePass
+ گذرواژهٔ پایگاه داده را وارد کنید
+ نوع شاه‌کلید را انتخاب کنید:
+ در ØØ§Ù„ ساخت پایگاه دادهٔ جدید…
+ ساخت پایگاه داده
+ در ØØ§Ù„ پردازش…
+ مکان ÙØ§ÛŒÙ„‌های کلید را به‌خاطر می‌سپارد
+ ذخیره‌سازی ÙØ§ÛŒÙ„ کلید
+ ØØ°Ù
+ ویرایش
+ Rijndael (AES)
+ ریشه
+ تابع استخراج کلید
+ دورهای رمزنگاری
+ با Ø§ÙØ²Ø§ÛŒØ´ دورهای رمزنگاری، قدرت Ù…ØØ§Ùظت در برابر ØÙ…لات جست‌وجوی ÙØ±Ø§Ú¯ÛŒØ± بیشتر می‌شود، اما می‌تواند بارگیری Ùˆ ذخیره‌سازی را به‌شدت Ú©Ùند کند.
+ دورها
+ ØØ§Ùظه برای آرگون Û² (بایت)
+ موازی‌سازی برای آرگون ۲
+ نام پایگاه داده
+ نام کاربری Ù¾ÛŒØ´ÙØ±Ø¶ برای مدخل‌های جدید
+ در ØØ§Ù„ ذخیره‌سازی پایگاه داده…
+ در ØØ§Ù„ صادرکردن پایگاه داده…
+ پایگاه داده با موÙقیت صادر شد!
+ ÙØ§ØµÙ„Ù‡
+ جست‌وجو
+ نمایش گذرواژه
+ ترتیب بر اساس...
+ ترتیب بر اساس نام
+ ترتیب بر اساس تاریخ ساخت
+ ترتیب بر اساس تاریخ تغییر
+ ØÙظ چینش Ù¾ÛŒØ´ÙØ±Ø¶
+ ویژه
+ دنبال چه می‌گردید
+ نتایج جست‌وجو
+ جست‌وجو در
+ انتخاب مدخل دیگر
+ گروه دلخواهتان را باز کنید و سپس «%1$s» را بزنید!
+ اینجا بگذار
+ Twofish
+ خط زیر
+ نسخهٔ پشتیبانی‌نشده از پایگاه داده.
+ ØØ±ÙˆÙ بزرگ
+ اکنون کارت ØØ§Ùظه Ùقط-خواندنی است. شاید نتوانید تغییرات را در پایگاه داده ذخیره کنید.
+ کارت SD بر روی دستگاهتان بار نشده. نمی‌توانید پایگاه داده‌تان را بارگذاری یا ایجاد کنید.
+ نسخه
+ تاریخچهٔ نسخه‌ها
+ توسعه‌دهندهٔ Keepass2Android Ùیلیپ Ú©ÙØ±ÙˆÚ©ÙÙ„ است.
+ با سپاس از مشارکت %1$s در کدنویسی.
+ با سپاس از مشارکت %1$s در طراØÛŒ آیکون Ùˆ چیدمان.
+ Ø§ÙØ²ÙˆÙ†Ù‡Ù” Twofish Cipher برای KeePass را Ø§ÙØ³Ú©Ø§Øª Ú¯Ø±ÛŒÙ†Ø¨ÙØ±Ú¯ ساخته Ùˆ در KP2A گنجانده شده است.
+ انتخابگر ÙØ§ÛŒÙ„ اندروید را های بایسÙون ساخته است
+ ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ KP2A بر پایهٔ ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ Gingerbread است Ú©Ù‡ از سوی پروژهٔ متن‌باز اندروید ارائه شده Ùˆ از کدهای Plugin Manager از ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ Hacker ساختهٔ Ú©Ùلاوس وایدنر Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌کند.
+ Ù„Ø·ÙØ§ توجه کنید
+ مشارکت‌کنندگان
+ عبارت باقاعده
+ کد TAN یکبارمصر٠است
+ کدهای TAN پس از یک بار Ø§Ø³ØªÙØ§Ø¯Ù‡ منقضی شود
نمایش نام کاربری در لیست
- پایگاه داده ها را به یاد داشته باشید
- Keepass2Android: پیدا کردن رمز عبور
- باز کردن ÙØ§ÛŒÙ„...
- ایجاد بانک اطلاعاتی جدید...
- QuickUnlock!
+ نام‌های کاربری زیر عنوان مدخل نشان داده شود. مواقعی Ú©Ù‡ چند ØØ³Ø§Ø¨ یا چند TAN وجود دارد، سودمند است.
+ پایگاه‌های داده را به خاطر بسپار
+ پایگاه‌های داده‌ای که تازگی باز شدند را به خاطر بسپار و آن‌ها را در کادر بازکردن پایگاه داده نشان بده.
+ â€Keepass2Android: ÛŒØ§ÙØªÙ† گذرواژه
+ مدخل‌های منقضی را شامل نشود
+ گزینه‌ها
+ ØØ³Ø§Ø³ به ØØ§Ù„ت ØØ±ÙˆÙ
+ بازکردن ÙØ§ÛŒÙ„...
+ ساخت پایگاه دادهٔ جدید...
+ بازکردن URL...
+ واردکردن ÙØ§ÛŒÙ„ در یک پایگاه دادهٔ جدید...
+ نشانی اینترنتی را کامل بنویسید و با ذکر پروتکل آن مثلاً http://‎.
+ ÙØ§ÛŒÙ„ واردشونده را در در مرØÙ„Ù‡Ù” بعدی انتخاب می‌کنید.
+ زودگشایی ÙØ¹Ø§Ù„ باشد
+ %1$d ØØ±Ù پایانی گذرواژه‌تان را بنویسید:
+ کد زودگشایی را وارد کنید:
+ زود بگشا!
بستن پایگاه داده
- پنهان کردن نماد QuickUnlock
- ذخیره پیوست
+ زودگشایی به‌صورت Ù¾ÛŒØ´ÙØ±Ø¶ ÙØ¹Ø§Ù„ باشد
+ مشخص می‌کند زودگشایی به‌صورت Ù¾ÛŒØ´ÙØ±Ø¶ ÙØ¹Ø§Ù„ است یا خیر.
+ Ù…ØØ§Ùظت از ØµÙØÙ‡Ù” نمایش پایگاه داده
+ اگر ÙØ¹Ø§Ù„ باشد Ø¹Ú©Ø³â€ŒÚ¯Ø±ÙØªÙ† از ØµÙØÙ‡ ØºÛŒØ±ÙØ¹Ø§Ù„ می‌شود Ùˆ هیچ تصویری از برنامه در Ùهرست برنامه‌های اخیر باقی نمی‌ماند.
+ پنهان‌کردن نماد زودگشایی
+ Ù…ØªØ£Ø³ÙØ§Ù†Ù‡ زودگشایی بدون نشان‌دادن آیکون در اعلانات کار نمی‌کند. این گزینه را انتخاب کنید تا از یک آیکون Ø´ÙØ§Ù Ø§Ø³ØªÙØ§Ø¯Ù‡ شود.
+ مخÙی‌کردن آیکون زودگشایی
+ برای اینکه زودگشایی درست کار کند، باید یک اعلان نشان بدهد. این گزینه را برگزینید تا اعلان بدون آیکون باشد.
+ طول کلید زودگشایی
+ بیشترین تعداد ØØ±ÙˆÙÛŒ Ú©Ù‡ برای گذرواژهٔ زودگشا Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌شود.
+ پنهان‌کردن طول کد زودگشایی
+ اگر ÙØ¹Ø§Ù„ باشد، طول کد زودگشایی در ØµÙØÙ‡Ù” زودگشایی نشان داده نمی‌شود.
+ زودگشایی ناموÙÙ‚ بود: گذرواژه اشتباه است!
+ پوشهٔ پیوست‌های ÙØ§ÛŒÙ„ÛŒ
+ پوشه‌ای که پیوست‌ها در آن ذخیره می‌شود.
+ ذخیرهٔ پیوست
+ Ù„Ø·ÙØ§Ù‹ Ù…ØÙ„ ذخیره‌سازی پیوست را انتخاب کنید.
+ ذخیره در کارت SD
+ در نهانگاه ذخیره و سپس باز شود
+ عکس را با نمایشگر داخلی نشان بده
+ ÙØ§ÛŒÙ„ ذخیره شد. در:\n
+%1$s
+
+ ذخیره‌سازی ÙØ§ÛŒÙ„ در\n
+%1$s\n
+ناموÙÙ‚ بود.
+ متن جست‌وجو ذخیره شود؟
+ مایلید عبارت جست‌وجوی «%1$s» را در این مدخل ذخیره کنید تا در Ø¯ÙØ¹Ø§Øª بعدی به‌صورت خودکار پیدا شود؟
+ قالب تاریخ/ساعت برای تاریخ انقضا نامعتبر است!
+ نوشتن نام Ùیلد برای هر رشته اجباری است.
+ نام Ùیلد نباید تکراری باشد (%1$s).
نام Ùیلد
- Ù…ØØªÙˆØ§ÛŒ Ùیلد
- تغییرنام
- عدم موÙقیت در Ø§ÙØ²ÙˆØ¯Ù† ÙØ§ÛŒÙ„ پیوست.
+ مقدار Ùیلد
+ Ùیلد Ù…ØØ§Ùظت‌شده
+ Ø§ÙØ²ÙˆØ¯Ù† پیوست ÙØ§ÛŒÙ„ÛŒ
+ Ø§ÙØ²ÙˆØ¯Ù† رشتهٔ اضاÙÛŒ
+ ØØ°Ù‌کردن رشتهٔ اضاÙÛŒ
+ â€%1$s: Ù‚ÙÙ„ شد. زودگشایی ÙØ¹Ø§Ù„ شد.
+ â€%1$s: Ù‚ÙÙ„ نیست.
+ اطلاعات اعتبارنامهٔ میزبان را وارد کنید
+ تراکنش‌های ÙØ§ÛŒÙ„ÛŒ
+ از تراکنش‌های ÙØ§ÛŒÙ„ÛŒ برای نوشتن پایگاه‌های داده Ø§Ø³ØªÙØ§Ø¯Ù‡ Ú©Ù†
+ با Ø®Ø§Ù…ÙˆØ´â€ŒØ´Ø¯Ù†Ù ØµÙØÙ‡ØŒ Ù‚ÙÙ„ شود
+ وقتی نمایشگر خاموش شد پایگاه داده Ù‚ÙÙ„ شود.
+ پاک‌کردن شاه‌رمز واردشده
+ اگر بدون گشودن Ù‚ÙÙ„ پایگاه داده، ØµÙØÙ‡ را ترک کردم شاه‌رمز واردشده پاک شود.
+ با Ø±ÙØªÙ† از برنامه Ù‚ÙÙ„ شود
+ هنگامی Ú©Ù‡ با زدن کلید برگشت برنامه را ترک کردم، پایگاه داده Ù‚ÙÙ„ شود.
+ تمرکز روی Ùیلد جستجو هنگام شروع
+ هنگام جستجوی مدخل‌ها یا پس از Ù‚Ùل‌گشایی پایگاه، Ùیلد جستجو ÙØ¹Ø§Ù„ می‌شود
+ مخÙی‌کردن گزینهٔ هدیه
+ این گزینه مخصوص ØØ§Ù…یان است. پس از مدتی Ú©Ù‡ از Keepass2Android Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید ÙØ¹Ø§Ù„ می‌شود.
+ بدون ØÙ…ایت‌های شما این برنامه نمی‌پاید Ùˆ پیوسته بهتر نمی‌شود! اگر هنوز ØÙ…ایت نکرده‌اید Ù„Ø·ÙØ§Ù‹ هم‌اکنون دست‌به‌کار شوید.
+ دیگر هیچ‌وقت درخواست ØÙ…ایت Ù†Ú©Ù†
+ چندرغاز هم نمی‌دهم یا قبلاً ØÙ…ایت کرده‌ام. ØØªÛŒ روز تولد سازندهٔ برنامه هم درخواست هدیه Ù†Ú©Ù†.
+ پایگاه داده در نهانگاه
+ نسخه‌ای از ÙØ§ÛŒÙ„‌های پایگاه دادهٔ دوردست را در پوشهٔ cache برنامه Ù†Ú¯Ù‡ دار. با این کار ØØªÛŒ وقتی Ú©Ù‡ Ø¢Ùلاینید امکان Ø§Ø³ØªÙØ§Ø¯Ù‡ از پایگاه دادهٔ دوردست را خواهید داشت.
+ پشتیبان‌های Ù…ØÙ„ÛŒ
+ پس از بارگذاری موÙقیت‌آمیز پایگاه داده، یک نسخهٔ پشتیبان از آن روی دستگاه ایجاد می‌شود.
+ به‌روزآوری پشتیبان Ù…ØÙ„ÛŒ...
+ پشتیبان Ù…ØÙ„ÛŒ از %1$s
+ گواهی‌های SSL
+ در صورتی Ú©Ù‡ اعتبارسنجی گواهی ناموÙÙ‚ بود، برنامه چگونه Ø±ÙØªØ§Ø± کند؟ توجه: اگر اعتبارسنجی ناموÙÙ‚ باشد می‌توانید خودتان گواهی‌ها را روی دستگاه نصب کنید!
+ نهانگاه (cache) پاک شود؟
+ با این کار همهٔ ÙØ§ÛŒÙ„‌های پایگاه دادهٔ نهانگاهی پاک می‌شود. هر تغییری Ú©Ù‡ در زمان Ø¢Ùلاین‌بودن انجام داده باشید Ùˆ هنوز همگام نشده باشد از بین خواهد Ø±ÙØª! ادامه می‌دهید؟
+ بررسی تغییرات
+ قبل از ذخیره‌سازی بررسی Ú©Ù† آیا ÙØ§ÛŒÙ„ بیرون از برنامه تغییر کرده یا خیر.
+ بررسی UUIDهای تکراری
+ بررسی اینکه آیا ÙØ§ÛŒÙ„ پایگاه داده با داشتن چندین مدخل هم‌شناسه خراب شده یا خیر. این مسئله می‌تواند Ø±ÙØªØ§Ø± غیرمنتظره‌ای به‌بار آورد.
+ اعلانات بریده‌دان
+ دسترسی به نام کاربری Ùˆ گذرواژه را از طریق نوار اعلان Ùˆ بریده‌دان ممکن می‌کند. ØÙˆØ§Ø³ØªØ§Ù† باشد گیر برنامه‌های رمزدزد Ù†ÛŒÙØªÛŒØ¯!
+ اعلانات جداگانه
+ برای کپی‌کردن نام کاربری Ùˆ گذرواژه در بریده‌دان Ùˆ ÙØ¹Ø§Ù„‌کردن ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ اعلانات جداگانه‌ای نشان بده.
+ سرویس دسترس‌پذیری تکمیل خودکار
+ سرویس تکمیل خودکار
+ اعلان ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ KP2A
+ مدخل به‌طور کامل از طریق ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ KP2A در دسترس باشد (توصیه می‌شود).
+ تغییر ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯
+ پس از جست‌وجو در مرورگر اگر ورود اطلاعات مدخل از طریق ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ KP2A ممکن بود کادر انتخاب ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ را نشان بده.
+ تغییر خودکار ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯
+ با بازشدن مدخل، به‌صورت خودکار ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ KP2A ÙØ¹Ø§Ù„ شود. برای این کار لازم است Ø§ÙØ²ÙˆÙ†Ù‡Ù” KeyboardSwap ÙØ¹Ø§Ù„ باشد یا اینکه دستگاه روت شده باشد Ùˆ برنامهٔ Secure Settings با ماژول System+‎ نصب باشد.
+ نصب Ø§ÙØ²ÙˆÙ†Ù‡Ù” KeyboardSwap
+ با این Ø§ÙØ²ÙˆÙ†Ù‡ بدون نیاز به روت ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ KP2A را ÙØ¹Ø§Ù„ کنید. نیازمند ADB.
+ تغییر خودکار Ùقط بعد از جست‌وجو
+ Ùقط زمانی ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ KP2A به‌صورت خودکار ÙØ¹Ø§Ù„ شود Ú©Ù‡ از قابلیت اشتراک‌گذاری URL Ø§Ø³ØªÙØ§Ø¯Ù‡ کرده باشم (نه وقتی Ú©Ù‡ مدخلی را با روش دیگری باز می‌کنم)
+ برگشت ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ به ØØ§Ù„ت قبل
+ وقتی مدخلی باز نیست، ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ قبلی ÙØ¹Ø§Ù„ شود.
+ آیکون اعلان وقتی Ù‚ÙÙ„ نیست
+ وقتی Ù‚ÙÙ„ پایگاه داده باز است یک اعلان نشان بده.
+ اندروید Û¸ Ø±ÙØªØ§Ø± جدیدی را برای اعلان‌ها ارائه کرده است. اگر می‌خواهید آیکون اعلانات Keepass2Android را مخÙÛŒ کنید، Ù„Ø·ÙØ§Ù‹ آن را از طریق تنظیمات سیستم پیکربندی کنید. اهمیت دستهٔ اعلان را روی کمترین تنظیم کنید.
+ بازکردن تنظیمات
+ مهم نیست
+ ÙØ§ÛŒÙ„ برای Keepass2Android قابل‌دسترسی نیست. یا ØØ°Ù شده یا اینکه اجازهٔ دسترسی به آن ستانده شده است. Ù„Ø·ÙØ§Ù‹ آن را مجدداً باز کنید؛ مثلاً از «تغییر پایگاه داده» Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.
+ پیش‌بارگذاری ÙØ§ÛŒÙ„ پایگاه داده
+ هنگام واردکردن گذرواژه، بارگذاری یا دانلود ÙØ§ÛŒÙ„ پایگاه داده را در پس‌زمینه شروع Ú©Ù†.
+ به‌جای ÙØ§ÛŒÙ„ موجود با همان نام نوشته شود؟
+ جایگزین ÙØ§ÛŒÙ„ موجود شود؟
+ جایگزینی
+ تغییر نام
+ Ø§ÙØ²ÙˆØ¯Ù† ÙØ§ÛŒÙ„ پیوست ناموÙÙ‚ بود.
سطل Ø¨Ø§Ø²ÛŒØ§ÙØª
- برای همیشه ØØ°Ù کنید؟
+ این مدخل را برای همیشه ØØ°Ù می‌کنید؟
+خیر را انتخاب کنید تا برگشت‌پذیر باشد.
+ این گروه را برای همیشه ØØ°Ù می‌کنید؟
+خیر را انتخاب کنید تا برگشت‌پذیر باشد.
+ موارد انتخاب‌شده را برای همیشه ØØ°Ù می‌کنید؟
+خیر را انتخاب کنید تا برگشت‌پذیر باشد.
+ این مدخل را برای همیشه ØØ°Ù می‌کنید؟
+ این گروه را برای همیشه ØØ°Ù می‌کنید؟
+ موارد انتخاب‌شده را برای همیشه ØØ°Ù می‌کنید؟
+ برای همیشه ØØ°Ù می‌کنید؟
بارگذاری مجدد ÙØ§ÛŒÙ„ØŸ
- ترجمه KP2A
- Ø§ÙØ²ÙˆØ¯Ù† ورودی...
- اضاÙÙ‡ کردن گروه…
- ØØ°Ù ورودی…
- بله، ادغام
- اÙ‌تی‌پی
+ ÙØ§ÛŒÙ„ÛŒ Ú©Ù‡ هم‌اکنون باز است به‌وسیلهٔ برنامهٔ دیگری تغییر کرده. مجدداً بارگذاری شود؟
+ واقعاً تغییراتی Ú©Ù‡ دادید را ذخیره نمی‌کنید؟ (دکمهٔ ذخیره در بالای ÙØ±Ù… قرار دارد.)
+ تغییرات از بین برود؟
+ برای توسعه Ùˆ Ù¾ÛŒØ´Ø±ÙØª برنامه، رأی یا پیشنهاد بدهید
+ به این برنامه امتیاز بدهید
+ KP2A را ترجمه کنید
+ Ø§ÙØ²ÙˆØ¯Ù† مدخل...
+ Ø§ÙØ²ÙˆØ¯Ù† گروه…
+ ØØ°Ù مدخل…
+ در ØØ§Ù„ ØØ°Ù گروه…
+ در ØØ§Ù„ ØØ°Ù موارد…
+ در ØØ§Ù„ تنظیم گذرواژه…
+ در ØØ§Ù„ خنثی‌کردن تغییرات…
+ در ØØ§Ù„ تبدیل شاه‌کلید…
+ در ØØ§Ù„ رمزگشایی پایگاه داده…
+ در ØØ§Ù„ خواندن پایگاه داده…
+ در ØØ§Ù„ بررسی تغییرات در ÙØ§ÛŒÙ„ هدم
+ تغییرات ادغام شود؟
+ ÙØ§ÛŒÙ„ پایگاه داده بیرون از برنامه تغییر کرده است. مایلید پیش از ذخیره‌سازی، تغییرات را بارگذاری Ùˆ ادغام کنیم؟ اگر می‌خواهید روی تغییراتی Ú©Ù‡ بیرون برنامه انجام شده ذخیره کنید خیر را انتخاب کنید.
+ در ØØ§Ù„ ادغام تغییرات…
+ بله، ادغام کن
+ خیر، به‌جای آن ذخیره کن
+ کار در ØØ§Ù„ت Ø¢Ùلاین
+ کار در ØØ§Ù„ت آنلاین
+ پرهیز از هرگونه تبادل در شبکه با Ø§Ø³ØªÙØ§Ø¯Ù‡ از نسخهٔ Ù…ØÙ„ÛŒ ÙØ§ÛŒÙ„ در نهانگاه. تغییرات ØµØ±ÙØ§Ù‹ در نهانگاه Ù…ØÙ„ÛŒ ذخیره می‌شود Ùˆ Ùقط وقتی Ú©Ù‡ به ØØ§Ù„ت آنلاین برگردید آپلود می‌شود.
+ در ØØ§Ù„ت Ø¢Ùلاین است.
+ در ØØ§Ù„ همگام‌سازی پایگاه دادهٔ نهانگاهی…
+ در ØØ§Ù„ دانلود ÙØ§ÛŒÙ„ از دوردست…
+ در ØØ§Ù„ آپلود ÙØ§ÛŒÙ„…
+ در ØØ§Ù„ بازیابی ÙØ§ÛŒÙ„‌ها از دوردست…
+ ÙØ§ÛŒÙ„‌ها همگام هستند.
+ پایگاه داده با موÙقیت همگام شد!
+ در ØØ§Ù„ بررسی تغییرات پایگاه داده…
+ ذخیره‌سازی در دوردست انجام نشد: %1$s. مجدداً ذخیره کنید یا وقتی اتصال با دوردست برقرار شد از منوی همگام‌سازی Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.
+ بازگشایی از دوردست انجام نشد: %1$s. ÙØ§ÛŒÙ„ از نهانگاه Ù…ØÙ„ÛŒ بارگذاری شد. باز می‌توانید در پایگاه داده تغییرات ایجاد کنید Ùˆ بعداً آن‌ها را همگام سازید.
+ ÙØ§ÛŒÙ„ دوردست به‌روز شد.
+ به‌سبب تداخل با تغییرات ÙØ§ÛŒÙ„ دوردست، ÙØ§ÛŒÙ„ÛŒ Ú©Ù‡ در نهانگاه Ù…ØÙ„ÛŒ موجود بود باز شد. برای ادغام از منوی همگام‌سازی Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.
+ ÙØ§ÛŒÙ„ دوردست Ùˆ نسخهٔ نهانگاهی همگام شدند.
+ نسخهٔ نهانگاهی %1$s در دستگاه به‌روز شد.
+ تغییری نکرده.
+ ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ OTP در نهانگاه به‌روز شد: شمارندهٔ دوردست بالاتر بود.
+ ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ OTP در دوردست به‌روز شد: شمارندهٔ Ù…ØÙ„ÛŒ بالاتر بود.
+ در ØØ§Ù„ همگام‌سازی ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ OTP…
+ ÙØ§ÛŒÙ„ پایگاه داده
+ ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ OTP
+ خطایی رخ داد:
+ پایگاه داده خراب است: شناسه‌های تکراری پیدا شد. (با Minikeepass ذخیره کردید؟) Ù„Ø·ÙØ§Ù‹ مجدداً با Ø§Ø³ØªÙØ§Ø¯Ù‡ از نسخهٔ کامپیوتری Keepass 2 آن را در پایگاه دادهٔ جدیدی وارد کنید Ùˆ سپس گزینهٔ «ساخت شناسه‌های جدید» را برگزینید.
+ این پیغام خطا از طریق تنظیمات/تنظیمات برنامه/ÙØ§ÛŒÙ„‌گردانی/بررسی UUIDهای تکراری ØºÛŒØ±ÙØ¹Ø§Ù„ می‌شود. Ù„Ø·ÙØ§Ù‹ توجه کنید Ú©Ù‡ با این کار ممکن است Ø±ÙØªØ§Ø± غیرمنتظره‌ای از برنامه سر بزند. بهتر است مشکل پایگاه داده را ØÙ„ کنید.
+ در ØØ§Ù„ همگام‌سازی پایگاه داده…
+ نمی‌توان گروه را در این گروه قرار داد.
+ از Keepass2Android راضی هستید؟ مرا به یک Ùنجان قهوه مهمان کنید.
+ دهم ماه می؟ امروز تولدم است!
+اگر از این برنامه راضی هستید دست‌به‌کار شوید Ùˆ پیام تبریکتان را با هدیه‌ای Ú©ÙˆÚ†Ú© برایم Ø¨ÙØ±Ø³ØªÛŒØ¯. خیلی Ø®ÙˆØ´ØØ§Ù„ می‌شوم، باور کنید! :)
+ تولدم دهم ماه Ù…ÛŒ بود، از دستش دادید! ولی اگر از این برنامه راضی هستید، هنوز هم می‌توانید تبریک خودتان را با هدیه‌ای برایم Ø¨ÙØ±Ø³ØªÛŒØ¯. برای Ø®ÙˆØ´ØØ§Ù„‌کردنم دیر نشده! :)
+ بیشتر ØªÙˆØ¶ÛŒØ Ø¨Ø¯Ù‡!
+ نه، خیلی خوشم نمی‌آید
+ اطلاعات ورود به WebDav را وارد کنید:
+ نشانی اینترنتی پوشه یا ÙØ§ÛŒÙ„ ( مثال:
+mycloud.me.com/webdav/‎ )
+ اطلاعات ورود به OwnCloud را وارد کنید:
+ نشانی اینترنتی OwnCloud (مثال: owncloud.me.com)
+ میزبان (مثال: 192.168.0.1)
+ درگاه
+ پوشهٔ آغازین (اختیاری):
+ اطلاعات ورود به SFTP را وارد کنید:
+ اطلاعات ورود به FTP را وارد کنید:
+ نوع ذخیره‌گاه را مشخص کنید:
+ ÙØ§ÛŒÙ„ Ù…ØÙ„ÛŒ
+ Ø¯Ø±ÛŒØ§ÙØª از برنامهٔ سوم
+ ÙØ±Ø³ØªØ§Ø¯Ù† به برنامهٔ سوم
+ FTP
HTTP (WebDav)
- HTTP (WebDav)
+ HTTPS (WebDav)
+ OwnCloud
Dropbox
Dropbox (پوشه KP2A)
- گوگل درایو
- SFTP (SSH انتقال ÙØ§ÛŒÙ„)
+ اگر می‌خواهید DropBoxتان به‌طور کامل در دسترس KP2A نباشد، این گزینه را انتخاب کنید. با این کار Ùقط دسترسی به پوشهٔ Apps/Keepass2Android را درخواست می‌کند. این گزینه مخصوصاً مناسب زمانی است Ú©Ù‡ پایگاه دادهٔ جدیدی می‌سازید. اگر هم‌اکنون یک پایگاه داده دارید، این گزینه را انتخاب کنید تا پوشه را بسازید، سپس ÙØ§ÛŒÙ„ را درون آن پوشه قرار دهید (از کامپیوترتان) Ùˆ سپس دوباره این گزینه را انتخاب کنید تا ÙØ§ÛŒÙ„ باز شود.
+ Google Drive
+ OneDrive
+ SFTP (انتقال ÙØ§ÛŒÙ„ به‌روش SSH)
+ گزینشگر ÙØ§ÛŒÙ„ سیستم
+ راه‌اندازی دسترسی به ÙØ§ÛŒÙ„
Ù…ØÙ„ پایگاه داده
+ می‌توانید پایگاه داده را به‌صورت Ù…ØÙ„ÛŒ یعنی روی دستگاه اندروید خود یا روی ابر (Ùقط نسخهٔ غیرآÙلاین) ذخیره کنید. Keepass2Android ØØªÛŒ در زمان Ø¢Ùلاین‌بودن هم پایگاه داده را در اختیارتان می‌گذارد. چون پایگاه داده با Ø§Ø³ØªÙØ§Ø¯Ù‡ از روش رمزنگاری AES 256 bit ایمن می‌شود، کسی جز خودتان امکان دست‌یابی به گذرواژه‌های شما را نخواهد داشت. پیشنهاد می‌کنیم DropBox را برگزینید، زیرا روی همهٔ دستگاه‌هایتان به آن دسترسی دارید Ùˆ نیز ÙØ§ÛŒÙ„ پشتیبان نسخه‌های قدیمی ÙØ§ÛŒÙ„تان را Ù†Ú¯Ù‡ می‌دارد.
+ ذخیره‌گاه پایگاه داده را مشخص کنید:
تغییر Ù…ØÙ„
+ اگر ÙØ¹Ø§Ù„ باشد، Keepass2Android ØØªÛŒ در زمان Ù‚Ùل‌بودن پایگاه داده در پس‌زمینه باز می‌ماند Ùˆ بعداً می‌توانید با واردکردن بخش کوتاهی از شاه‌رمز، پایگاه داده را Ù‚Ùل‌گشایی کنید.
+ شاه‌رمز
+ پایگاه داده با شاه‌رمزی Ú©Ù‡ اینجا می‌نویسید رمزگذاری می‌شود. یک گذرواژهٔ قوی انتخاب کنید تا پایگاه داده امن بماند! راهنمایی: یک یا دو جمله بسازید Ùˆ از ØØ±ÙˆÙ اول کلمه‌ها برای ساخت شاه‌رمز Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. علائم نگارشی را هم به‌کار ببرید.
+ یک شاه‌رمز برای Ù…ØØ§Ùظت از پایگاه داده انتخاب کنید:
ÙØ§ÛŒÙ„ کلید
+ ÙØ§ÛŒÙ„ کلید در اصل گذرواژه‌ای است Ú©Ù‡ در یک ÙØ§ÛŒÙ„ ذخیره شده. ÙØ§ÛŒÙ„‌های کلید معمولاً قوی‌تر از شاه‌رمز هستند؛ زیرا کلید می‌تواند بسیار پیچیده‌تر باشد، هرچند Ù…ØÙوظ نگه‌داشتن آن هم دشوارتر است. اگر پایگاه داده‌تان را روی ابر ذخیره می‌کنید، ÙØ§ÛŒÙ„ کلید را هم آنجا کنارش نگذارید! اگر این کار را بکنید کاملاً Ø¨ÛŒâ€ŒØ§Ø³ØªÙØ§Ø¯Ù‡ می‌شود! مهم: بعد از اینکه پایگاه داده ساخته شد، Ù…ØØªÙˆØ§ÛŒ ÙØ§ÛŒÙ„ کلید را تغییر ندهید!
+ در صورتی انتخاب کنید Ú©Ù‡ بخواهید علاوه بر شاه‌رمزتان از یک ÙØ§ÛŒÙ„ کلید هم Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید:
Ø§Ø³ØªÙØ§Ø¯Ù‡ از ÙØ§ÛŒÙ„ کلید
- ØªÙˆØ¶ÛŒØØ§Øª (تایید نشده):
- نویسنده (تایید نشده):
+ هنگام Ø§ÙØ²ÙˆØ¯Ù† ÙØ§ÛŒÙ„ کلید خطایی رخ داد!
+ بارگذاری ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ OTP…
+ رمزهای یک‌بارمصر٠(OTP) بعدی را وارد کنید. یوبیکی‌نئو را پشت دستگاهتان بکشید تا از طریق NFC وارد شود.
+ OTP %1$d
+ برنامه‌ای پیدا نشد Ú©Ù‡ بتواند کار لازم را انجام دهد. Ù„Ø·ÙØ§Ù‹ برنامهٔ Yubichallenge را از گوگل‌پلی نصب کنید.
+ بارگذاری ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ OTP ناموÙÙ‚ بود!
+ Ù„Ø·ÙØ§Ù‹ با Ø§Ø³ØªÙØ§Ø¯Ù‡ از Ø§ÙØ²ÙˆÙ†Ù‡Ù” OtpKeyProv در نسخهٔ کامپیوتری Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± KeePass 2.x پایگاه داده‌تان را برای کار با رمزهای یک‌بارمصر٠(OTP) آماده کنید!
+ Ù„Ø·ÙØ§Ù‹ اول پایگاه داده را انتخاب کنید. به‌دلایل امنیتی رمز یک‌بارمصر٠از درجهٔ اعتبار Ø§ÙØªØ§Ø¯.
+ رمز یک‌بارمصر٠از اعتبار Ø§ÙØªØ§Ø¯: همهٔ رمزهای یک‌بارمصر٠وارد شده!
+ Ù„Ø·ÙØ§Ù‹ ابتدا پایگاه داده را ببندید. رمز یک‌بارمصر٠از اعتبار Ø§ÙØªØ§Ø¯Ù‡.
+ ( یک یا چند رمز یک‌بارمصر٠وجود دارد)
+ رمزینهٔ OTP (مثلاً 0‎1 2‎3 ab cd…‎)
+ خطا هنگام تجزیه‌کردن رمزینهٔ OTP!
+ ساخت کلید OTP ناموÙÙ‚ بود! مطمئن شوید OTPها را درست وارد کرده باشید.
+ خطا هنگام به‌روزرسانی ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ OTP!
+ در ØØ§Ù„ ذخیره‌سازی ÙØ§ÛŒÙ„ OTP Ú©Ù…Ú©ÛŒ…
+ پاسخ اسم شب نادرست است.
+ بارگذاری ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ اسم شب ناموÙÙ‚ بود!
+ Ù„Ø·ÙØ§Ù‹ با Ø§Ø³ØªÙØ§Ø¯Ù‡ از Ø§ÙØ²ÙˆÙ†Ù‡Ù” KeeChallenge در نسخهٔ کامپیوتری KeePass 2.x پایگاه داده‌تان را برای کار با پاسخ اسم شب آماده کنید!
+ خطا هنگام به‌روزرسانی ÙØ§ÛŒÙ„ Ú©Ù…Ú©ÛŒ OTP!
+ نام Ùیلد TOTP Seed
+ اگر در Keepass 2 از Ø§ÙØ²ÙˆÙ†Ù‡Ù” TrayTotp Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌کنید Ùˆ تنظیمات Ù¾ÛŒØ´ÙØ±Ø¶ Ø§ÙØ²ÙˆÙ†Ù‡ را تغییر داده‌اید، نام Ùیلد seed را مطابق آنچه روی کامپیوتر وارد کرده‌اید اینجا بنویسید.
+ نام Ùیلد تنظیمات TOTP
+ نام Ùیلد تنظیمات TrayTotp را بنویسید.
+ TrayTotp
+ ÙØ§ÛŒÙ„ گزارش برای عیب‌یابی
+ Ø§Ø³ØªÙØ§Ø¯Ù‡ از ÙØ§ÛŒÙ„ گزارش
+ خروجی برنامه در یک ÙØ§ÛŒÙ„ گزارش روی دستگاه نوشته می‌شود
+ ارسال گزارش عیب‌یابی...
+ در ØØ§Ù„ بارگذاری…
+ Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§
+ نام بسته:
+ ØªÙˆØ¶ÛŒØØ§Øª (تأیید نشده):
+ سازنده (تأیید نشده):
ÙØ¹Ø§Ù„
- غیر ÙØ¹Ø§Ù„
- پیدا کردن Ø§ÙØ²ÙˆÙ†Ù‡ آنلاین
- Ù…ØØ¯ÙˆØ¯Ù‡
+ ØºÛŒØ±ÙØ¹Ø§Ù„
+ ÛŒØ§ÙØªÙ† Ø§ÙØ²ÙˆÙ†Ù‡ در اینترنت
+ آزادی عمل
+ ÙØ¹Ø§Ù„ نیست
+ درخواست اعتبارنامه از سوی %1$s\n
+برای\n
+%2$s
+ درخواست اعتبارنامه از سوی â€%1$s. Ù„Ø·ÙØ§Ù‹ یک مدخل را انتخاب کنید.
ÙØ¹Ø§Ù„
- داده های ورودی ÙØ¹Ù„ÛŒ
+ اعلانات کار با پایگاه داده
+ Ø§ÙØ²ÙˆÙ†Ù‡ از باز، بسته یا ذخیره‌شدن پایگاه داده آگاه می‌شود.
+ دادگان مدخل جاری
+ Ø§ÙØ²ÙˆÙ†Ù‡ همهٔ دادگان مربوط به مدخل جاری را Ø¯Ø±ÛŒØ§ÙØª می‌کند Ùˆ می‌تواند پیشنهاد انجام کاری را بدهد Ùˆ ظاهر آن را تغییر دهد.
+ ÛŒØ§ÙØªÙ† اعتبارنامهٔ خود
+ Ø§ÙØ²ÙˆÙ†Ù‡ اجازه دارد اعتبارنامهٔ متناظر با بستهٔ Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±ÛŒ خودش را بیابد.
+ ÛŒØ§ÙØªÙ† اعتبارنامه
+ Ø§ÙØ²ÙˆÙ†Ù‡ اجازه دارد اعتبارنامهٔ وب‌سایت‌ها یا برنامه‌های درخواستی شما را بیابد.
+ انواع بیشتری از ذخیره‌گاه‌ها را Ø¯Ø±ÛŒØ§ÙØª کنید
+ هشدار: اعتبارسنجی گواهینامهٔ میزبان ناموÙÙ‚ بود: %1$s. گواهی ریشه‌ای مناسب را روی دستگاهتان نصب کنید یا تنظیمات را ببینید!
+ هشدار: اعتبارسنجی گواهینامهٔ میزبان ناموÙÙ‚ بود. گواهی ریشه‌ای مناسب را روی دستگاهتان نصب کنید یا تنظیمات را ببینید!
+ قالب ÙØ§ÛŒÙ„ را انتخاب کنید
+ متأسÙÙ…! سیستم‌عامل اندروید Keepass2Android را Ú©ÙØ´Øª! به‌دلایل امنیتی، Keepass2Android اعتبارنامهٔ انتخاب‌شده را روی ØØ§Ùظه Ù†Ú¯Ù‡ نداشت، بنابراین باید پایگاه داده را مجدداً باز کنید. توجه: این مشکل نباید رخ بدهد، مگر خیلی به‌ندرت. اگر Ø§ØªÙØ§Ù‚ Ø§ÙØªØ§Ø¯ØŒ Ù„Ø·ÙØ§Ù‹ به نشانی ایمیل crocoapps@gmail.com به من گزارش بدهید.
+ ÙØ§ÛŒÙ„ Ùقط به‌صورت موقت در دسترس Keepass2Android است.
+ ÙØ§ÛŒÙ„ÛŒ Ú©Ù‡ انتخاب کرده‌اید Ùقط-خواندنی است.
+ به‌سبب Ù…ØØ¯ÙˆØ¯ÛŒØªâ€ŒÙ‡Ø§ÛŒÛŒ Ú©Ù‡ اندروید ۴٫۴‎+‎ دارد، Keepass2Android Ùقط می‌تواند این ÙØ§ÛŒÙ„ را بخواند.
+ برای Ø§Ø³ØªÙØ§Ø¯Ù‡ از آن، باید آن را به مکان دیگری Ú©Ù¾ÛŒ کنید.
+ برای ویرایش آن، باید آن را به مکان دیگری کپی کنید.
+ Ø®ÙØ¨ را انتخاب کنید تا Ù…ØÙ„ کپی‌کردن ÙØ§ÛŒÙ„ را برگزینید.
+ پایگاه داده Ùقط-خواندنی است
+ برنامهٔ Keepass2Android پایگاه دادهٔ جاری را در ØØ§Ù„ت Ùقط-خواندنی باز کرده است.
+ ظاهراً ÙØ§ÛŒÙ„ را در یک برنامهٔ خارجی باز کرده‌اید. با این کار نوشتن در ÙØ§ÛŒÙ„ ممکن نیست. اگر قصد دارید در پایگاه داده تغییرات بدهید، Ù„Ø·ÙØ§Ù‹ پایگاه داده را ببندید Ùˆ تغییردادن پایگاه داده را انتخاب کنید. سپس در صورت امکان به‌کمک یکی از گزینه‌های موجود ÙØ§ÛŒÙ„ را باز کنید.
+ شاخص Ùقط-خواندنی ÙØ¹Ø§Ù„ است. اگر می‌خواهید در پایگاه داده تغییرات بدهید، شاخص را ØºÛŒØ±ÙØ¹Ø§Ù„ کنید.
+ به‌سبب Ù…ØØ¯ÙˆØ¯ÛŒØªâ€ŒÙ‡Ø§ÛŒ جدید اندروید کیت‌کت، نوشتن ممکن نیست. اگر قصد دارید در پایگاه داده تغییرات بدهید، پایگاه داده را ببندید Ùˆ تغییردادن پایگاه داده را انتخاب کنید. سپس به‌وسیلهٔ انتخابگر ÙØ§ÛŒÙ„ اندروید ÙØ§ÛŒÙ„ را برگزینید.
+ پشتیبان‌ها را نمی‌توانید ویرایش کنید، اما می‌توانید از طریق تنظیمات پایگاه داده - صادرکردن پایگاه داده، پشتیبان را به مکان دیگری صادر کنید که بتوانید از آنجا بازش کنید. در این صورت پایگاه مجدداً قابل‌ویرایش خواهد شد.
+ Ø§ÙØ²ÙˆØ¯Ù† آیکون از ÙØ§ÛŒÙ„...
+ در ØØ§Ù„ کپی‌کردن ÙØ§ÛŒÙ„...
کپی
+ مدخل استاندارد
+ الگوها
کارت شناسائی
نام
Ù…ØÙ„ صدور
تاریخ صدور
ایمیل
- آدرس ایمیل
- شبکه های بی سیم
+ نشانی ایمیل
+ شبکهٔ بی‌سیم
یادداشت امن
SSID
عدد
- رمز پشت کارت
+ CVV
پین
- ØµØ§ØØ¨ (دارنده) کارت
+ ØµØ§ØØ¨ کارت
کارت اعتباری
عضویت
گزارش تغییرات
- Ø§ÙØ²ÙˆØ¯Ù† قالب
+ الگو اضاÙÙ‡ شود؟
+ در Keepass2Android یک‌سری مدخل‌های الگو برای ØØ³Ø§Ø¨ ایمیل، گذرواژهٔ ÙˆØ§ÛŒâ€ŒÙØ§ÛŒØŒ یادداشت Ù…ØØ±Ù…انه Ùˆ... وجود دارد. مایلید این‌ها را به پایگاه داده اضاÙÙ‡ کنید؟ اگر خیر را انتخاب کردید، بعداً می‌توانید از طریق تنظیمات پایگاه داده آن‌ها را اضاÙÙ‡ کنید.
+ Ø§ÙØ²ÙˆØ¯Ù† الگوها به پایگاه داده
+ Ù„Ø·ÙØ§ توجه کنید! این یک نسخهٔ پیش‌نمایش است Ùˆ Ø§ØØªÙ…الاً نقایصی دارد! اگر با *هر* Ø±ÙØªØ§Ø± ناخواسته‌ای مواجه شدید، Ù„Ø·ÙØ§Ù‹ به من بگویید (از طریق ایمیل یا گروه آزمایشگران نسخهٔ آزمایشی در Ú¯ÙˆÚ¯Ù„+).
ادامه
- ÙØ¹Ø§Ù„ کردن
+ ‫URI‬ واردشده شبیه به نام ÙØ§ÛŒÙ„ نیست. مطمئنید Ú©Ù‡ یک ÙØ§ÛŒÙ„ معتبر است؟
+ کلید ترکیبی نامعتبر! Ù„Ø·ÙØ§ مجدداً تلاش کنید.
+ کلید ترکیبی نامعتبر! Ù„Ø·ÙØ§Ù‹ گام‌های زیر را Ø§Ù…ØªØØ§Ù† کنید تا پایگاه داده Ù‚Ùل‌گشایی شود:\n
+
+ • اطمینان ØØ§ØµÙ„ کنید Ú©Ù‡ گذرواژه را درست نوشته باشید. روی نماد چشم بزنید تا گذرواژه نمایان شود.\n
+ • اطمینان ØØ§ØµÙ„ کنید Ú©Ù‡ نوع گذرواژه را درست انتخاب کرده باشید. مطمئن شوید همانی باشد Ú©Ù‡ هنگام ساختن پایگاه داده انتخاب کرده بودید.\n
+ • اطمینان ØØ§ØµÙ„ کنید پایگاه دادهٔ درست را انتخاب کرده باشید.
+
+
+ \n
+ • راهنما: اگر Ùکر می‌کنید شاید ÙØ§ÛŒÙ„ پایگاه داده خراب شده باشد یا اگر پس از ویرایش، شاه‌کلید آن را ÙØ±Ø§Ù…وش کرده‌اید، می‌توانید آخرین نسخه‌ای را Ú©Ù‡ با موÙقیت باز کرده‌اید Ø§Ù…ØªØØ§Ù† کنید. برای این منظور روی «%1$s» بزنید Ùˆ پشتیبان Ù…ØÙ„ÛŒ را انتخاب کنید.
+
+ \n
+ • راهنما: Keepass2Android آخرین نسخه‌ای از ÙØ§ÛŒÙ„ Ú©Ù‡ باموÙقیت باز کرده بودید را در ØØ§Ùظهٔ داخلی ذخیره کرده است. با زدن روی «%1$s» Ùˆ انتخاب پشتیبان Ù…ØÙ„ÛŒ می‌توانید آن را باز کنید.
+
+
+ ÙØ§ÛŒÙ„ خراب شده است.\n
+ چند راهنمایی که کمکتان می‌کند مشکل را تشخیص دهید:\n
+
+ • اگر ÙØ§ÛŒÙ„ را از طریق اتصال USB منتقل کرده‌اید (ØØ§Ù„ت MTP) Ù„Ø·ÙØ§Ù‹ مجدداً با ابزارهایی مانند MyPhoneExplorer Ø§Ù…ØªØØ§Ù† کنید. ØØ§Ù„ت MTP در شرایط خاصی ÙØ§ÛŒÙ„‌ها را ناقص می‌کند.\n
+ • اگر از همان پوشه روی کامپیوتر نمی‌توانید ÙØ§ÛŒÙ„ را باز کنید، به Ø§ØØªÙ…ال زیاد ÙØ§ÛŒÙ„ واقعاً خراب شده است. در این صورت Ù„Ø·ÙØ§Ù‹ از ÙØ§ÛŒÙ„ پشتیبان پایگاه داده Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. اگر Ùکر می‌کنید Ú©Ù‡ Keepass2Android ÙØ§ÛŒÙ„ را خراب کرده، با بخش پشتیبانی تماس بگیرید.\n
+ • اگر هنوز می‌توانید ÙØ§ÛŒÙ„ را روی کامپیوتر باز کنید، Ù„Ø·ÙØ§Ù‹ با بخش پشتیبانی تماس بگیرید. همچنین می‌توانید ÙØ§ÛŒÙ„ را با تنظیمات مختل٠روی کامپیوتر ذخیره کنید (مثلا زیپ‌نشده) Ùˆ ببینید آیا در Keepass2Android باز می‌شود.
+
+
+ پایگاه داده Ù‚Ùل‌گشایی شد
+ اعلان دربارهٔ بازشدن Ù‚ÙÙ„ پایگاه داده
+ زودگشایی
+ اعلان دربارهٔ بازشدن Ù‚ÙÙ„ پایگاه داده به‌روش زودگشایی
+ اعلانات مدخل
+ اعلان برای سهولت دسترسی به مدخلی که اکنون انتخاب شده است.
+ ‫Keepass2Android‬: خطایی رخ داد.
+ هنگام اجرای Keepass2Android خطای غیرمنتظره‌ای رخ داد. با اجازه‌دادن به برنامه برای ارسال گزارش‌های خطا کمک کنید تا این عیب را برطر٠کنیم.
+ گزارش‌های خطا هرگز شامل Ù…ØØªÙˆÛŒØ§Øª پایگاه دادهٔ شما یا شاه‌رمز نیست. از طریق تنظیمات برنامه می‌توانید آن‌ها را ØºÛŒØ±ÙØ¹Ø§Ù„ کنید.
+ ÙØ¹Ø§Ù„‌کردن
ØºÛŒØ±ÙØ¹Ø§Ù„ کردن
+ پرسش بعد از خطا
+ ارسال گزارش‌های خطا
+ اگر اسکن اثرانگشت ÙØ¹Ø§Ù„ بود، برای واردکردن گذرواژه ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±ÛŒ را نشان بده.
+
+ نسخهٔ ۱٫۰۵\n
+ * به‌کارگیری کانال‌های اعلان برای اندروید ۸ که پیکربندی از طریق تنظیمات سیستم را میسر می‌کند\n
+ * نمایش آیکون مدخل در اعلان\n
+ * Ø§Ø³ØªÙØ§Ø¯Ù‡ از آیکون‌های سازگار با اندروید ۸، آیکون گرد برنامه برای اندروید Û·\n
+ * امکان ÙØ¹Ø§Ù„‌شدن جستجو پس از Ù‚Ùل‌گشایی (تنظیمات را ببینید)\n
+ * تغییر شیوهٔ نوشتن ÙØ§ÛŒÙ„‌ها از طریق Storage Access FrameworkØŒ Ø±ÙØ¹ مشکلاتی در به‌روزرسانی ÙØ§ÛŒÙ„‌های گوگل‌درایو زمانی Ú©Ù‡ با انتخابگر ÙØ§ÛŒÙ„ سیستم باز می‌شد\n
+ * Ø§ÙØ²ÙˆØ¯Ù† متون راهنما برای پیشگیری از یک‌سری کژبرداشت‌های شایع\n
+ * تهیهٔ پشتیبان‌های Ù…ØÙ„ÛŒ از پایگاه‌هایی Ú©Ù‡ با موÙقیت باز شده‌اند، به‌منظور کاهش خطر از دست Ø±ÙØªÙ† اطلاعات\n
+ * به‌روزرسانی JSch برای پشتیبانی از Ø³Ø§ÛŒÙØ±Ù‡Ø§ÛŒ SSH جدیدتر\n
+ * امکان ویرایش تنظیمات اتصال، مثلاً هنگامی که گذرواژهٔ WebDav تغییر کرد\n
+ * پشتیبانی از ØØ§Ù„ت گذرواژهٔ ثابت یوبی‌کی نئو\n
+ * امکان ØºÛŒØ±ÙØ¹Ø§Ù„‌سازی پیشنهاد تکمیل خودکار\n
+ * Ø±ÙØ¹ نشت اطلاعات به logcat\n
+ * Ø±ÙØ¹ باگ‌ها\n
+
+
+ نسخهٔ ۱٫۰۴b\n
+ * Ø±ÙØ¹ مشکل از کار Ø§ÙØªØ§Ø¯Ù† برنامه هنگامی Ú©Ù‡ کاربر تکمیل خودکار را روی دستگاه‌های هوآوی ÙØ¹Ø§Ù„ می‌کند.\n
+
+
+ نسخهٔ ۱٫۰۴\n
+ * Ø§ÙØ²ÙˆØ¯Ù† سرویس تکمیل خودکار برای اندروید Û¸Ù«Û° Ùˆ بالاتر.\n
+ * ارتقاء کتابخانه‌ها، ابزارهای ساخت Ùˆ نسخهٔ SDK هدÙ.\n
+
+
+ نسخهٔ ۱٫۰۳\n
+ * بنا به درخواست Ú¯ÙˆÚ¯Ù„ قابلیت دسترسی برای تکمیل خودکار از برنامه ØØ°Ù شد. Ù„Ø·ÙØ§Ù‹ تنظیمات «دسترسی به گذرواژه» را ببینید تا از یک Ø§ÙØ²ÙˆÙ†Ù‡ Ú©Ù‡ همان کار را می‌کند Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.\n
+ * اضاÙه‌شدن برنامه‌های شخص ثالث برای ذخیره‌گاه\n
+ * Ø§ÙØ²ÙˆØ¯Ù† نمایشگر داخلی برای تصاویر پیوست Ú©Ù‡ نیاز نباشد تصویر به برنامهٔ دیگری ÙØ±Ø³ØªØ§Ø¯Ù‡ شود\n
+ * ارتقاء OkHttp برای Ø±ÙØ¹ برخی مشکلات اتصال\n
+ * پشتیبانی از مدخل‌های KeeTrayTOTP، اکنون مدخل‌های Steam پشتیبانی می‌شود.\n
+
+
+ نسخهٔ ۱٫۰۲\n
+ * بهبودهای امنیتی متعدد. از jean-baptiste.cayrou@thalesgroup.com و vincent.fargues@thalesgroup.com بابت ارسال گزارش‌ها و همکاری‌شان صمیمانه سپاسگزارم!\n
+ * پشتیبانی از Ø§ÙØ²ÙˆÙ†Ù‡Ù” KeyboardSwapPlugin (تنظیمات دسترسی به گذرواژه را ببینید): امکان تعویض خودکار شیوهٔ ورودی روی دستگاه‌های روت‌نشده. با سپاس از میشال رØÙ…ان Ú©Ù‡ این کار را انجام داد (از توسعه‌دهندگان XDA).\n
+ * Ø±ÙØ¹ مشکلاتی Ú©Ù‡ قابلیت دسترسی با نسخه‌های جدید کروم داشت\n
+ * Ø±ÙØ¹ مشکل پاک‌سازی غیرضروری اطلاعات اثرانگشت\n
+ * Ø±ÙØ¹ مشکلات جزئی\n
+ * به‌روزآوری Dropbox SDK برای اطمینان از سازگاری در آینده\n
+ * برداشت امکان گزارش خطا از طریق Xamarin Insights\n
+ * به‌روزآوری ابزارهای ساخت\n
+
+
+ نسخهٔ ۱٫۰۱‎-g\n
+ * Ø±ÙØ¹ مشکل توق٠ناخواستهٔ برنامه با ÙØ¹Ø§Ù„‌کردن ØØ§Ù„ت Ø¢Ùلاین\n
+ * Ø±ÙØ¹ مشکل کدگذاری نادرست اعتبارنامه‌های FTP(S)\n
+ * Ø±ÙØ¹ مشکل توق٠ناخواستهٔ برنامه هنگام Ø§Ø³ØªÙØ§Ø¯Ù‡ از OneDrive روی نسخه‌های قدیمی‌تر اندروید\n
+ * نمایش زمان در ØµÙØÙ‡Ù” نمایش مدخل به ساعت Ù…ØÙ„ÛŒ\n
+
+
+ نسخهٔ ۱٫۰۱‎-d\n
+ * Ø±ÙØ¹ مشکل برای نمایش لیست ÙØ§ÛŒÙ„‌های OneDrive\n
+ * امکان Ù†Ø§Ø¯ÛŒØ¯Ù‡â€ŒÚ¯Ø±ÙØªÙ† خطاهای گواهینامه هنگامی Ú©Ù‡ تأیید نام میزبان ناموÙÙ‚ است (برای کاربرد در Ù…ØØµÙˆÙ„ توصیه نمی‌شود)\n
+ * Ø±ÙØ¹ مشکل بازنشدن Ù‚ÙÙ„ به‌روش زودگشایی با واردکردن رمز درست\n
+
+ یادآوری بیشتر برای ØÙ…ایت
- - 30 ثانیه
+ - ۳۰ ثانیه
- ۱ دقیقه
- ۵ دقیقه
- - 10 دقیقه
- - 15 دقیقه
- - 30 دقیقه
- - 1 ساعت
- - هیچ وقت
+ - ۱۰ دقیقه
+ - ۱۵ دقیقه
+ - ۳۰ دقیقه
+ - ۱ ساعت
+ - هرگز
- - Keepass 2 پایگاه داده (.kdbx)
- - Keepass 2 XML (رمزگذاری نشده) (.xml)
- - Keepass CSV (رمزگذاری نشده) (.csv)
+ - پایگاه دادهٔ Keepass 2 â€(‎.kdbx)
+ - Keepass 2 XML (رمزنگاری‌نشده) (.xml)
+ - Keepass CSV (رمزنگاری‌نشده) (.csv)
- Ú©ÙˆÚ†Ú©
@@ -246,16 +694,53 @@
- بزرگ
- - نور
+ - روشن
- تیره
- طراØÛŒ
-
- - رمز عبور تنها
- - رمز عبور + کلید ÙØ§ÛŒÙ„
- - رمز عبور + OTP
- - رمز عبور + رمز OTP (ØØ§Ù„ت بازیابی)
- - Password + Challenge-Response
- - Password + Challenge-Response secret (recovery mode)
+ پوسته
+
+ - بدون رمزگذاری (FTP)
+ - رمزگذاری ضمنی (FTP بر بستر TLS،†FTPS)
+ - رمزگذاری ØµØ±ÛŒØ (FTP بر بستر TLS،†FTPS)
+
+ - نام کاربری و گذرواژه را به خاطر نسپار
+ - Ùقط نام کاربری را به خاطر بسپار
+ - نام کاربری و گذرواژه را به خاطر بسپار
+
+
+ - Ùقط گذرواژه
+ - گذرواژه + ÙØ§ÛŒÙ„ کلید
+ - گذرواژه + OTP
+ - گذرواژه + رمزینهٔ OTP (ØØ§Ù„ت بازیابی)
+ - گذرواژه + اسم شب
+ - گذرواژه + رمزینهٔ اسم شب (ØØ§Ù„ت بازیابی)
+
+
+ - شکست‌های اعتبارسنجی گواهینامه را نادیده بگیرد
+ - هنگام شکست اعتبارسنجی هشدار بده
+ - گواهینامه‌های نامعتبر را نپذیر
+
+ مطمئن شوید این روش روی سیستم شما کار می‌کند، در غیر این صورت از ØµÙØÙ‡â€ŒÚ©Ù„ÛŒØ¯ اصلی Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.
+ ØªÙˆØ¶ÛŒØØ§Øª ارائه‌شده با Ø§ÙØ²ÙˆÙ†Ù‡:
+ برنامهٔ Keepass2Android از قابلیت تکمیل خودکار در اندروید پشتیبانی می‌کند اما ظاهراً هنوز آن را ÙØ¹Ø§Ù„ نکرده‌اید.
+ ÙØ¹Ø§Ù„‌سازی تکمیل خودکار
+ شوربختانه دستگاه شما نمی‌تواند تنظیمات را مستقیماً از داخل برنامه باز کند. Ù„Ø·ÙØ§Ù‹ خودتان به تنظیمات سیستم برای تکمیل خودکار بروید Ùˆ سرویس آن را ÙØ¹Ø§Ù„ کنید.
+ نمایش راهنمای تکمیل خودکار
+ تکمیل با Keepass2Android
+ پیونددادن دامنهٔ اینترنتی\n
+%1$s\n
+با برنامهٔ\n
+%2$s\n
+ناموÙÙ‚ بود
+ Ùهمیدم
+ دوباره نشان نده
+ آیا شاه‌کلیدتان را به خاطر دارید؟
+ دقت کنید که بدون شاه‌کلید نمی‌توانید پایگاه دادهٔ خود را باز کنید و هیچ راهی هم برای «بازنشانی» شاه‌کلید وجود ندارد.
+ همچنین توجه Ø¨ÙØ±Ù…ایید Ú©Ù‡ Ù‚Ùل‌گشایی با اثرانگشت طوری است Ú©Ù‡ شاه‌کلید شما در ذخیره‌گاه امن اندروید ذخیره می‌شود. این ذخیره‌گاه ممکن است هر آن توسط سیستم‌عامل اندروید پاک‌سازی شود؛ مثلاً زمانی Ú©Ù‡ اثرانگشت جدیدی در تنظیمات سیستم اضاÙÙ‡ کنید. بنابراین به اثرانگشتتان Ø§Ú©ØªÙØ§ نکنید، بلکه شاه‌کلیدتان را به یاد بسپارید، Ù„Ø·ÙØ§Ù‹!
+ آیا از پایگاه‌داده‌تان پشتیبان Ú¯Ø±ÙØªÙ‡ شده؟
+ برنامهٔ Keepass2Android گذرواژه‌هایتان را در یک ÙØ§ÛŒÙ„ Ùˆ در مکانی به‌انتخاب شما ذخیره می‌کند. اگر دستگاهتان Ú¯Ù… یا دزدیده شود، آیا مطمئن هستید Ú©Ù‡ هنوز به ÙØ§ÛŒÙ„ دسترسی خواهید داشت؟ اگر ÙØ§ÛŒÙ„ خراب یا پاک شود چطور؟ Ù„Ø·ÙØ§Ù‹ اطمینان ØØ§ØµÙ„ کنید Ú©Ù‡ همیشه یک پشتیبان به‌روز در مکانی امن داشته باشید!
+ برای اینکه هم‌اکنون یک پشتیبان تهیه کنید، به %1$s > %2$s > %3$s بروید.
+ آیا برای شرایط اضطراری آماده‌اید؟
+ آیا تاکنون تصور کرده‌اید Ú©Ù‡ اگر نتوانید به پایگاه گذرواژه‌هایتان دسترسی داشته باشید Ú†Ù‡ می‌شود؟ اگر تصاد٠کنید چه؟ بهتر است برای روز مبادا شاه‌کلید خود را به ÙØ±Ø¯ÛŒ امین بگویید. در غیر این صورت هیچ‌کس به گذرواژه‌هایتان دسترسی نخواهد داشت.
diff --git a/src/keepass2android/Resources/values-fi/strings.xml b/src/keepass2android/Resources/values-fi/strings.xml
index a96045aa..58dc2e0d 100644
--- a/src/keepass2android/Resources/values-fi/strings.xml
+++ b/src/keepass2android/Resources/values-fi/strings.xml
@@ -7,8 +7,7 @@
Keepass2Android on salasanojen hallintaohjelma, jolla voit katsella ja muokata KeePass 2.x tietokantoja Androidilla.
Käyttöliittymä perustuu Brian Pellinin kehittämään KeepassDroid-porttaukseen. Tietokantatoimintojen lähdekoodi perustuu Dominik Reichlin KeePass-sovellukseen. Android robot on kopioitu tai muokattu Googlen jakamista julkaisuista ja sitä käytetään Creative Commons 3.0 Attribution -lisenssissä kuvattujen ehtojen mukaisesti.
SFTP-tuki on toteutettu käyttämällä JCraft, Inc.:in luomaa BSD-lisenssin alaista JSch-kirjastoa.
- Vasara-kuvake jonka on luonut John Caserta, Noun Projektista. Pingviini-kuvake jonka on luonut Adriano Emerick, Noun Projektista. Sulka-kuvake jonka on luonut Jon Testa, Noun Projektista. Apple-kuvake jonka on luonut Ava Rowell, Noun Projektista. Kuva kuvakkeesta on
-osoitteesta https://icons8.com/icon/5570/Picture.
+ Vasara-kuvakkeen on luonut John Caserta, Noun Projektista. Pingviini-kuvakkeen on luonut Adriano Emerick, Noun Projektista. Sulka-kuvakkeen on luonut Jon Testa, Noun Projektista. Omena-kuvakkeen on luonut Ava Rowell, Noun Projektista. Kuva-kuvake on osoitteesta https://icons8.com/icon/5570/Picture.
Hyväksy
Älä hyväksy
Lisää merkintä
@@ -88,7 +87,11 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Ota käyttöön täysi sormenjälkiavaus
Ota käyttöön pika-avaus sormenjäljellä
Kosketa sormenjälkitunnistinta avataksesi tietokannan
+ Avaus sormenjäljellä epäonnistui. Android-käyttöjärjestelmä hylkäsi salauksen purkuavaimen. Yleensä näin käy sen jälkeen kun on rekisteröity uusi sormenjälki tai suojausasetuksia muutettu.
+ Tietokannan avaaminen epäonnistui: Virheellinen yhdistelmäavain. Sormenjälkilukitus poistettiin käytöstä, koska ilmeisesti järjestelmään tallennettu pääsalasana ei ole enää voimassa.
Ole hyvä ja ota sormenjälkitunnistus käyttöön uudelle pääsalasanalle.
+ Ole hyvä ja avaa tietokanta salasanaasi käyttäen ja ota sitten sormenjälkiavaus uudelleen käyttöön tietokannan asetuksista.
+ Sormenjälkitunnistimen alustaminen ei onnistunut.
Tämä tallentaa pääsalasanasi laitteeseen,
salattuna Android Keystorea käyttäen ja suojattuna sormenjälkitunnistautumisella.
@@ -207,6 +210,7 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Muista avaintiedostojen sijainnit
Tallenna avaintiedosto
Poista
+ Muokkaa
Rijndael (AES)
Juurihakemisto
Avaimenjohtamisfunktio
@@ -270,18 +274,21 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Tuotava tiedosto valitaan seuraavassa vaiheessa.
Salli Pika-avaus
Syötä salasanasi %1$d viimeistä merkkiä:
+ Syötä QuickUnlock-koodi:
Pika-avaus
Sulje tietokanta
Pika-avaus oletusarvoisesti käytössä
- Määrittää, onko Pika-avaus oletusarvoisesti käytössä.
+ Määrittää, onko Pika-avaus oletuksena käytössä vai ei.
Suojaa tietokannan näkymä
Jos käytössä, kuvakaappaukset eivät ole sallittuja eikä ohjelman pienoiskuvaa näytetä viimeksi käytettyjen sovellusten listassa.
Piilota Pika-avauksen kuvake
- Pika-avaus ei valitettavasti toimi, jos ilmoituskuvaketta ei näytetä. Valitsemalla tämän voit käyttää läpinäkyvää kuvaketta.
+ Pika-avaus ei valitettavasti toimi, jos ilmoituskuvaketta ei näytetä. Valitsemalla tämän käytetään läpinäkyvää kuvaketta.
Piilota Pika-avauksen kuvake
Pika-avaus vaatii ilmoituksen toimiakseen kunnolla. Valitsemalla tämän näytetään ilmoitus ilman kuvaketta.
- Pika-avausavaimen merkkimäärä
+ Pika-avauksen merkkimäärä
Pika-avauksessa käytettävien merkkien enimmäismäärä.
+ Piilota pika-avauskoodin pituus
+ Jos käytössä, pika-avauskoodin pituutta ei näytetä pika-avausnäytössä.
Pika-avaus epäonnistui: väärä salasana!
Tiedostoliitteiden hakemisto
Liitetiedostojen tallennushakemisto.
@@ -314,13 +321,19 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Tyhjennä syötetty pääsalasana, kun näkymästä poistutaan tietokantaa avaamatta.
Lukitse, kun sovellus suljetaan
Lukitse tietokanta kun sovelluksesta poistutaan painamalla Takaisin-painiketta.
+ Aktivoi hakukenttä käynnistäessä
+ Aktivoi hakukentän ryhmänäkymässä, kun avaa tietotakannan tai etsit merkintää
Piilota lahjoituspyynnöt
Tämä asetus on tarkoitettu lahjoittajille. Se on käytettävissä vasta kun Keepass2Androidia on käytetty jonkin aikaa.
- Ilman lahjoituksia tätä sovellusta ei olisi olemassa eikä se olisi kehittynyt paremmaksi! Jos et ole vielä lahjoittanut, harkitse lahjoittamista nyt.
+ Ilman lahjoituksia tätä sovellusta ei olisi olemassa eikä sitä kehitettäisi paremmaksi! Jos et ole vielä lahjoittanut, harkitse lahjoittamista nyt.
Älä koskaan pyydä lahjoitusta
En aio antaa teille penniäkään, tai olen jo lahjoittanut. Älä pyydä lahjoituksia koskaan, ei edes tekijän syntymäpäivänä.
Tietokannan säilöminen välimuistiin
- Säilytä kopio etätietokannan tiedostoista sovelluksen välimuistissa. Tämän avulla voidaan käyttää etätietokantoja myös offline-tilassa.
+ Pidä kopio etätietokannan tiedostoista sovelluksen välimuistihakemistossa. Tämän mahdollistaa etätietokantojen käytön myös offline-tilassa.
+ Paikalliset varmuuskopiot
+ Luo paikallinen varmuuskopio sen jälkeen, kun tietokanta on onnistuneesti ladattu.
+ Päivitetään paikallinen varmuuskopio...
+ Paikallinen varmuuskopio %1$s
SSL-varmenteet
Määrittää toiminnon kun varmenteen vahvistaminen epäonnistuu. Huomautus: Voit asentaa varmenteita laitteeseen jos vahvistus epäonnistuu!
Tyhjennetäänkö välimuisti?
@@ -333,23 +346,27 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Tarjoa käyttäjätunnusta ja salasanaa ilmoituspalkin ja leikepöydän kautta. Varo salasanan paljastumista!
Erilliset ilmoitukset
Näytä erilliset ilmoitukset kun käyttäjätunnus ja salasana kopioidaan leikepöydälle ja aktivoitaessa näppäimistö.
- Automaattinen täyttö esteettömyyspalvelu
- Automaattitäyttö-palvelu
+ Automaattisen täytön esteettömyyspalvelu
+ Automaattinen täyttö -palvelu
KP2A-näppäimistön ilmoitus
Salli koko merkinnän syöttäminen KP2A-näppäimistön kautta (suositus).
Vaihda näppäimistö
Avaa näppäimistön valintaikkuna kun merkintä on saatavilla KP2A näppäimistölle selainhaun jälkeen.
Automaattinen näppäimistön vaihto
- Vaihtaa automaattisesti KP2A näppäimistön, kun merkintä on avattu. Edellyttää oikein asennettua KeyboardSwap Pluginiä tai rootattua laitetta ja Secure settings ja System + sovellusta.
+ Ota automaattisesti KP2A näppäimistö käyttöön, kun merkintä avataan. Edellyttää oikein asennettua KeyboardSwap Pluginiä tai rootattua laitetta ja Secure settings ja System + sovellusta.
Asenna KeyboardSwap Plugin
- Tämän laajennuksen avulla voit siirtyä KP2A näppäimistö ilman root oikeuksia. Edellyttää ADB: tä.
+ Tämän laajennuksen avulla voit vaihtaa KP2A näppäimistöön ilman root-oikeuksia. Edellyttää ADB:tä.
Automaattivaihto vain haun jälkeen
- Vaihtaa automaattisesti KP2A-näppäimistöön vain kun käytetään Share URL -toimintoa (mutta ei avatessa merkintää muilla tavoin)
+ Vaihda automaattisesti KP2A-näppäimistöön vain kun käytetään Share URL -toimintoa (mutta ei avatessa merkintää muilla tavoin)
Näppäimistön vaihto takaisin
Vaihda takaisin edelliseen näppäimistöön, kun mitään merkintää ei ole avattu.
Avoimen tietokannan ilmoituskuvake
- Näytä ilmoituskuvake, kun tietokanta on avattu.
+ Näytä ilmoituskuvake, kun tietokanta on avattuna.
+ Android 8 muuttaa tapaa miten ilmoitukset toimivat. Mikäli haluat piilottaa Keepass2Androidin ilmoitukset, ole hyvä ja muuta käyttöjärjestelmän asetuksia. Aseta ilmoitusluokan tärkeys minimiin.
+ Avaa asetukset
+ En välitä
+ Tiedosto ei ole enää Keepass2Android:in saatavilla. Joko tiedosto on poistettu, tai send käyttöoikeudet on peruutettu. Ole hyvä ja avaa tiedosto uudelleen, esimerkiksi käyttämällä Vaihda tietokanta -toimintoa.
Esilataa tietokanta
Aloita tietokannan lataus taustalla jo salasanaa syötettäessä.
Haluatko korvata nykyisen saman nimisen binääritiedoston?
@@ -367,7 +384,7 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Poista pysyvästi?
Lataa tiedosto uudelleen?
Toinen ohjelma on muokannut avointa tiedostoa. Haluatko ladata tiedoston uudelleen?
- Haluatko varmasti hylätä tekemäsi muutokset? (Tallenna-painike on lomakkeen yläosassa.)
+ Haluatko varmasti hylätä tehdyt muutokset? (Tallenna-painike on lomakkeen yläosassa.)
Hylätäänkö muutokset?
Ehdota tai äänestä parannuksia
Arvostele tämä sovellus
@@ -393,9 +410,9 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Vältä verkkoliikennettä käyttämällä paikallista välimuistikopiota tiedostosta. Muutokset tallennetaan ainoastaan siihen ja lähetetään verkkoon vasta siirryttäessä online-tilaan.
Työskennellään offline-tilassa.
Synkronoidaan välimuistiin tallennettua tietokantaa…
- Ladataan ulkoista tiedostoa…
+ Ladataan etätiedostoa…
Siirretään tiedostoa…
- Palautetaan ulkoista tiedostoa…
+ Palautetaan etätiedostoa…
Tiedostot on synkronoitu.
Tietokanta synkronoitu!
Tarkistetaan tietokannan muutokset...
@@ -404,7 +421,7 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Etätiedosto päivitetty.
Paikallinen tiedosto avattiin, koska sen muutokset ovat ristiriidassa etätiedoston kanssa. Käytä synkronointivalikkoa yhdistääksesi muutokset.
Etätiedosto ja välimuistikopio on synkronoitu.
- Päivitettiin paikallinen välimuistikopio tiedostosta %1$s.
+ %1$s:n paikallinen välimuistikopio päivitetty.
Muutoksia ei löytynyt.
Päivitettiin välimuistissa ollut OTP-aputiedosto: etäversion laskuri oli suurempi.
Päivitettiin etäversio OTP-aputiedostosta: paikallinen laskuri oli suurempi.
@@ -413,12 +430,12 @@ osoitteesta https://icons8.com/icon/5570/Picture.
OTP-aputiedosto
Tapahtui virhe:
Tietokanta on korruptoitunut: siitä löytyi kahdentuneita tunnisteita. (Tallensitko Minikeepass: lla?) Ole hyvä ja tuo tiedot uuteen tietokantaan KeePass 2: n PC-versiolla ja valitse \'Luo uudet ID-numerot\'.
- Voit poistaa tämän virheilmoitukset valitsemalla Asetukset/Sovellus/Tiedostokäsittely ja \"Tarkista UUID kaksoiskappaleet\". Huomioi, että tämä voi aiheuttaa ongelmia. On suositeltavaa korjata tietokanta.
+ Voit poistaa tämän virheilmoitukset valitsemalla Asetukset/Sovellus/Tiedostokäsittely ja \"Tarkista UUID kaksoiskappaleet\". Huomioi, että tämä voi aiheuttaa ongelmia. Tietokannan korjaaminen on suositeltavaa.
Synkronoi tietokanta...
Ryhmää ei voi siirtää tähän ryhmään.
- Tänään on Oktoberfest! Jos pidät Keepass2Androidista: eikö tänään olisi hyvä päivä ostaa minulle olutta?
+ Tänään on Oktoberfest! Jos pidät Keepass2Androidista: eikö tänään olisi hyvä päivä ostaa minulle olut?
10. maaliskuuta? On syntymäpäiväni! Jos pidät tästä ohjelmasta, miksipä et lähettäisi minulle syntymäpäiväonnitteluja pienen lahjan kera? Se tekisi minut todella onnelliseksi! :-)
- Voih! Unohdit syntymäpäiväni 10. Toukokuuta ! Jos pidät tästä sovelluksesta niin etkö voisi lähettää minulle syntymäpäiväterveisiä ja pientä syntymäpäivälahjaa? Vielä ehdit tehdä minut onnelliseksi! :-)
+ Voih! Unohdit syntymäpäiväni 10. toukokuuta ! Jos pidät tästä sovelluksesta niin etkö voisi lähettää minulle syntymäpäiväterveisiä ja pientä syntymäpäivälahjaa? Vielä ehdit tehdä minut onnelliseksi! :-)
Kerro lisää!
Ei, en pidä sitä niin paljon
Syötä WebDav-kirjautumistiedot:
@@ -428,7 +445,7 @@ osoitteesta https://icons8.com/icon/5570/Picture.
palvelimen osoite (ex: 192.168.0.1)
Portti
Aloitushakemisto (valinnainen):
- Syötä SFTP kirjautumistiedot:
+ Syötä SFTP:n kirjautumistiedot:
Syötä FTP:n kirjautumistiedot:
Valitse tallennustyyppi:
Paikallinen tiedosto
@@ -440,7 +457,7 @@ osoitteesta https://icons8.com/icon/5570/Picture.
OwnCloud
Dropbox
Dropbox (KP2A kansio)
- Jos et halua antaa KP2A:lle pääsyä koko Dropboxiisi, voit valita tämän vaihtoehdon. Se pyytää käyttöoikeuksia vain \"Apps/Keepass2Android\" kansioon. Tämä on erityisen hyvä kun luodaan uusi tietokanta. Jos sinulla on jo tietokanta, valitsemalla tämän vaihtoehdon voit luoda kansion. Sijoita sen jälkeen tietokantatiedosto kansioon (tietokoneestasi) ja valitse sitten tämä vaihtoehto avataksesi tietokanta.
+ Jos et halua antaa KP2A:lle pääsyä koko Dropboxiisi, voit valita tämän vaihtoehdon. Se pyytää käyttöoikeuksia vain \"Apps/Keepass2Android\" kansioon. Tämä soveltuu erityisesti tilanteeseen jossa luodaan uusi tietokanta. Jos sinulla on jo tietokanta, valitse tämä vaihtoehto luodaksesi kansion, ja sijoita sen jälkeen tietokantatiedosto kansioon (tietokoneestasi). Valitse sitten tämä vaihtoehto uudestaan avataksesi tietokannan.
Google Drive
OneDrive
SFTP (SSH-tiedostonsiirto)
@@ -450,13 +467,13 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Voit tallentaa tietokannan Android-laitteeseesi tai pilveen (vain online-versio). Keepass2Android:lla tietokanta on käytettävissä, vaikka olisit offline-tilassa. Tietokanta salataan turvallisesti 256-bittisellä AES-salauksella, joten vain sinä pääset käsiksi salasanoihisi. Suosittelemme valitsemaan Dropboxin: se on käytettävissä kaikilla laitteillasi ja tarjoaa jopa varmuuskopiot edellisistä tiedostojen versioista.
Valitse minne tietokanta tallennetaan:
Vaihda sijaintia
- Jos valittu, Keepass2Android pysyy käynnissä taustalla vaikka tietokanta olisi lukittu. Tämä mahdollistaa tietokannan avaamisen myöhemmin syöttämällä vain lyhyen osan pääsalasanasta.
+ Jos valittu, Keepass2Android pysyy käynnissä taustalla vaikka tietokanta olisi lukittuna. Tämä mahdollistaa tietokannan avaamisen myöhemmin syöttämällä vain lyhyen osan pääsalasanasta.
Pääsalasana
Tietokanta suojataan tähän syöttämälläsi sanasanalla. Valitse vahva salasana tietokannan suojaukseen! Vinkki: Muodosta lause tai kaksi jossa on seassa numeroita ja välimerkkejä.
Valitse pääsalasana tietokannan suojaamiseksi:
Avaintiedosto
- Avaintiedosto on periaatteessa salasana tallennettuna tiedostoon. Avaintiedostot ovat tyypillisesti tietoturvallisempia kuin pääsalasanat, koska avain voi olla todella paljon monimutkaisempi; kuitenkin niiden turvallinen säilyttäminen on vaikeampaa. Jos tallennat tietokantasi pilveen, älä säilytä avaintiedostoasi siellä! Se tekisi siitä täysin hyödyttömän! Tärkeää: Älä vaihda avaintiedoston sisältöä tietokannan luomisen jälkeen!
- Valitse, jos haluat käyttää avaintiedostoa pääsalasanan lisäksi:
+ Avaintiedosto on periaatteessa salasana tallennettuna tiedostoon. Avaintiedostot ovat tyypillisesti tietoturvallisempia kuin pääsalasanat, koska avain voi olla todella paljon muistettavaa salasanaa monimutkaisempi; niiden turvallinen säilyttäminen on kuitenkin vaikeampaa. Jos tallennat tietokantasi pilveen, älä säilytä avaintiedostoasi siellä! Se tekisi siitä täysin hyödyttömän! Tärkeää: Älä vaihda avaintiedoston sisältöä tietokannan luomisen jälkeen!
+ Valitse haluatko käyttää avaintiedostoa pääsalasanan lisäksi:
Käytä avaintiedostoa
Virhe avaintiedoston lisäämisessä!
Lataa OTP-aputiedosto…
@@ -469,7 +486,7 @@ osoitteesta https://icons8.com/icon/5570/Picture.
OTP salasana hylätty: Kaikki kertakäyttösalasanat on jo käytetty!
Sulje ensin tietokanta. OTP hylätään.
(Yksi tai useampi kertakäyttösalasana on jo saatavilla)
- OTP salaus (esim. 01 23 ab cd...)
+ OTP salaus (esim. 01 23 ab cd…)
Virhe OTP-salauksen jäsentämisessä!
OTP-avaimen luominen epäonnistui! Varmista, että olet syöttänyt oikeat OTP salasanat.
Virhe OTP aputiedoston päivittämisessä!
@@ -478,14 +495,14 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Ei voitu ladata haastetiedostoa!
Käytä KeeChallenge-liitännäistä KeePass 2.x:ssa (PC) ja määritä tietokanta käyttämään Challenge-Response tunnistusta!
Virhe päivitettäessä OTP aputiedostoa!
- TOTP-Siemenkentän nimi
- Jos et käytä Keepass 2 \"TrayTotp\" liitännäisen oletusasetuksia, kirjoita siemenkentän nimi PC-version asetusten mukaisesti.
+ TOTP-siemenkentän nimi
+ Jos et käytä Keepass 2 \"TrayTotp\" liitännäistä oletusasetuksilla, kirjoita siemenkentän nimi PC-version asetusten mukaisesti.
TOTP-asetuksien kentän nimi
Syötä TrayTotp:n asetukset sisältävän kentän nimi tähän.
TrayTotp
Lokitiedosto vianmääritystä varten
Käytä lokitiedostoa
- Kirjoitta sovellus paikalliseen lokitiedostoon
+ Kirjoita sovelluksen tulosteet paikalliseen lokitiedostoon
Lähetä vianjäljitysloki...
Ladataan…
Liitännäiset
@@ -504,26 +521,27 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Liitännäiselle ilmoitetaan, kun tietokanta avataan, suljetaan tai tallennetaan.
Nykyisen merkinnän tiedot
Liitännäiselle lähetetään kaikki merkinnän tiedot ja se saa luvan tarjota toimintoja ja muuttaa merkinnän näkymää.
- Kyselyn tunnistetiedot
- Liitännäinen saa kysyä omaan sovelluspakettiin liittyviä tunnistetietoja.
- Kysele tunnistetiedot
- Liitännäinen voi kysyä tiettyjen web-sivustojen tai sovelluksien tunnistetietoja.
+ Pyydä omia tunnuksia
+ Liitännäinen saa pyytää omaan sovelluspakettiin liittyviä tunnuksia.
+ Pyydä tunnuksia
+ Liitännäinen voi kysyä tiettyjen web-sivustojen tai sovelluksien tunnuksia.
Hanki lisää tallennusmuotoja
- Varoitus: Palvelimen varmenteen vahvistus epäonnistui: %1$s. Asenna tarvittava päävarmenne laitteeseen tai katso asetukset!
- Virhe: Palvelimen varmenteen vahvistus epäonnistui: %1$s. Asenna tarvittava päävarmenne laitteeseen tai Katso asetukset!
+ Varoitus: Palvelimen varmenteen vahvistus epäonnistui: %1$s. Asenna tarvittava juurivarmenne laitteeseen tai katso asetukset!
+ Virhe: Palvelimen varmenteen vahvistus epäonnistui: %1$s. Asenna tarvittava juurivarmenne laitteeseen tai tarkista asetukset!
Valitse tiedostomuoto
- Pahoittelut! Android-käyttöjärjestelmä sulki Keepass2Androidin! Tietoturvasyistä Keepass2Android ei tallentanut kirjautumistietojasi, joten sinun täytyy avata tietokantasi uudelleen. Huomaa, että tätä pitäisi tapahtua todella harvoin. Jos näet tämän viestin usein, lähetä viestiä osoitteeseen crocoapps@gmail.com.
- Tiedosto on vain tilapäisesti käytettävissä Keepass2Androidissa.
+ Pahoittelut! Android-käyttöjärjestelmä sulki Keepass2Androidin! Tietoturvasyistä Keepass2Android ei tallentanut kirjautumistietojasi, joten sinun täytyy avata tietokantasi uudelleen. Huomaa, että tätä pitäisi tapahtua todella harvoin. Jos näet tämän viestin usein, ole hyvä ja lähetä minulle viesti osoitteeseen crocoapps@gmail.com.
+ Tiedosto on vain tilapäisesti Keepass2Androidin saatavilla.
Valitsemaasi tiedostoon on vain lukuoikeudet.
- Valitsemaasi tiedostoon on Keepass2Androidilla vain lukuoikeudet johtuen Android 4.4 + rajoituksista.
+ Valitsemaasi tiedostoon on Keepass2Androidilla vain lukuoikeudet johtuen Android 4.4+ rajoituksista.
Käyttääksesi sitä sinun täytyy kopioida se toiseen paikkaan.
- Muokataksesi sitä sinun täytyy kopioida se toiseen paikkaan.
+ Muokataksesi sitä sinun täytyy kopioida tiedosto toiseen paikkaan.
Klikkaa OK valitaksesi sijainnin, johon tiedosto kopioidaan.
Tietokanta on \"vain luku\" -tilassa
Keepass2Android on avannut nykyisen tietokannan \"vain luku\" -tilassa.
- Näyttäisi, että avasit tiedoston ulkoista sovellusta käyttäen. Tällä tavoin avaaminen ei tue kirjoitusta. Jos haluat tehdä muutoksia tietokantaan, sulje se ja valitse Uusi tietokanta. Avaa tämän jälkeen tiedosto käyttämällä esitettyjä vaihtoehtoja.
+ Näyttää siltä, että avasit tiedoston ulkoista sovellusta käyttäen. Tällä tavoin avaaminen ei tue kirjoitusta. Jos haluat tehdä muutoksia tietokantaan, sulje se ja valitse Vaihda tietokanta. Avaa tämän jälkeen tiedosto käyttämällä jotain esitetyistä vaihtoehdoista mikäli mahdollista.
\"Vain luku\" -asetus on valittuna. Poista tämä valinta, jos haluat tehdä muutoksia tietokantaan.
- Kirjoittaminen ei ole mahdollista Android KitKatin myötä tulleista rajoituksista johtuen. Jos haluat tehdä muutoksia tietokantaan, sulje se ja valitse Vaihda tietokanta. Avaa sitten tiedosto käyttämällä järjestelmän tiedostoselainta.
+ Kirjoittaminen ei ole mahdollista Android KitKatin myötä tulleista rajoituksista johtuen. Jos haluat tehdä muutoksia tietokantaan, sulje se ja valitse valitse Vaihda tietokanta. Avaa sitten tiedosto käyttämällä järjestelmän tiedostovalitsinta.
+ Paikallisia varmuuskopioita ei voi muokata. Voit käyttää \"Tietokannan asetukset\" - \"Vie tietokanta\" -toimintoa luodaksesi varmuuskopion toiseen paikkaan, josta voit avata sen uudestaan. Silloin tietokanta on muokattavissa.
Lisää kuvake tiedostosta...
Kopioidaan tiedostoa...
Kopioi
@@ -548,23 +566,36 @@ osoitteesta https://icons8.com/icon/5570/Picture.
Lisää valmiita pohjia?
Keepass2Android sisältää valmiita pohjia sähköpostitileille, WLAN-salasanoille, suojatuille muistiinpanoille ja monille muille merkinnöille. Haluatko lisätä nämä tietokantaasi? Jos valitset \"Ei\", voit lisätä ne myöhemmin tietokannan asetuksista.
Lisää valmiit pohjat tietokantaan
- Huomaa! Tämä on ennakkoversio, ja siinä voi olla joitakin vikoja! Jos koet * mitään * odottamaton, ole hyvä ja kerro siitä minulle (Google + beta testaaja-ryhmässä tai sähköpostitse).
+ Huomaa! Tämä on ennakkoversio, ja siinä voi olla joitakin vikoja tai puutteita! Jos koet *mitään* odottamaton, ole hyvä ja kerro siitä minulle (Google + beta testaaja-ryhmässä tai sähköpostitse).
Jatka
Antamasi URI osoite ei vaikuta tiedostonimeltä. Oletko varma, että se on tiedosto?
- Väärä yhdistelmäavain! Ole hyvä ja yritä uudelleen.
- Väärä yhdistelmäavain! Yritä seuraavia keinoja tietokannan avaamiseksi:
+ Virheellinen yhdistelmäavain! Ole hyvä ja yritä uudelleen.
+ Virheellinen yhdistelmäavain! Kokeile seuraavia keinoja tietokannan avaamiseksi:
-• Varmista, että olet syöttänyt oikean salasanan. Käytä silmä-kuvaketta näyttääksesi syöttämäsi salasanan.\n
-• Varmista, että olet valinnut oikean tyypin salasanalle. Varmista, että tämä täsmää salasanan tyyppiin, jota käytit luodessasi tietokantaa.\n
+• Varmista, että olet syöttänyt oikean salasanan. Käytä silmä-kuvaketta nähdäksesi syöttämäsi salasanan.\n
+• Varmista, että olet valinnut oikean tyypin salasanalle. Varmista, että tämä täsmää salasanan tyyppiin, jota käytit luodessasi tietokannan.\n
• Varmista, että olet valinnut oikean tietokantatiedoston.\n.
+
+ \n
+ • Vihje: Jos tietokantatiedosto on mielestäsi vioittunut tai et muista pääavainta sen muuttamisen jälkeen, voit kokeilla käyttää viimeisintä onnistuneesti avattua versiota valitsemalla â€%1$s†ja valitsemalla paikallisen varmuuskopion.
+
+ \n
+ • Vinkki: Keepass2Android on tallentanut viimeisimmän onnistuneesti avatun tiedostoversio sisäiseen muistiin. Voit avata sen napsauttamalla â€%1$s†ja valitsemalla paikallisen varmuuskopion.
+
Tiedosto on vioittunut.\n
-Tässä vihjeitä, joiden avulla voit diagnosoida ongelmaa:\n
+Tässä vihjeitä, joiden avulla voit paikantaa ongelmaa:\n
-• Jos kopioit tiedoston USB:n kautta (MTP-tilassa), kokeile uudelleen käyttämällä työkaluja kuten MyPhoneExplorer. MTP rikkoo tiedostoja joissain tapauksissa.\n
+• Jos kopioit tiedoston USB:n yli (MTP-tilassa), kokeile uudelleen käyttämällä työkaluja kuten MyPhoneExplorer. MTP rikkoo tiedostoja joissain tapauksissa.\n
• Jos et voi avata tiedostoa edes samasta sijainnista PC:lläsi, on hyvin todennäköistä, että tiedosto on oikeasti vioittunut. Tässä tilanteessa, käytä tietokannan varmuuskopiota. Jos epäilet Keepass2Androidin rikkoneen tietokantatiedostosi, ota yhteyttä tukeen.\n
-• Jos saat vielä tiedoston auki PC:lläsi, ota yhteyttä tukeen. Voit kokeilla tallentaa sen eri asetuksilla (esim. purettuna) PC:llä ja kokeilla sitten uudelleen avata se Keepass2Androidilla.
+• Jos saat vielä tiedoston auki PC:lläsi, ota yhteyttä tukeen. Voit kokeilla tallentaa sen eri asetuksilla (esim. purettuna) PC:llä ja kokeilla sitten avata se uudelleen Keepass2Androidilla.
+ Tietokanta avattu
+ Ilmoitus, että tietokannan on auki
+ Pika-avaus
+ Ilmoitus, että tietokanta on lukittu ja pika-avaus on käytössä
+ Merkintöjen ilmoitukset
+ Ilmoitus, jolla pääsee helpommin käsiksi valittuna olevaan merkintään.
Keepass2Android: Tapahtui virhe.
Odottamaton virhe tapahtui Keepass2Android-sovelluksessa. Auta meitä korjaamaan tämä ongelma antamalla sovelluksen lähettää virheraportteja.
Virheraportit eivät koskaan sisällä mitään tietoja tietokannastasi tai pääsalasanastasi. Voit poistaa raportit käytöstä sovelluksen asetuksista.
@@ -572,7 +603,31 @@ Tässä vihjeitä, joiden avulla voit diagnosoida ongelmaa:\n
Poista käytöstä
Kysy virheen jälkeen
Lähetä virheraportit
- Näytä näppäimistö salasanan syöttöä varten sormenjälkien lukijan ollessa käytössä.
+ Näytä näppäimistö salasanan syöttöä varten sormenjälkilukijan ollessa käytössä.
+
+ Versio 1.05\n
+ * Käyttä Android 8:n tarjoamia ilmoituskanavia (notification channels), jotka ovat muokattavissa järjestelmäasetusten kautta\n
+ * Näytä merkintäkuvake sovellusilmoituksessa\n
+ * Käytä adaptiivisia kuvakkeita Android 8:ssa, ja pyöreitä kuvakkeita Android 7:ssä\n
+ * Mahdollisuus aktivoida haku aina avaamisen jälkeen (katso asetukset)\n
+ * Muutettu tapa millä tiedostoja kirjoitetaa Storage Access Frameworkin läpi. Korjaa ongelman päivitettäessa Google Driveen tallennettuna tiedostoja jotka on avattu järjestelmän tiedostonhallintasovelluksen kautta\n
+ * Lisätty ohjetekstejä selventämään joitain yleisiä väärinkäsityksiä\n
+ * Luo paikallinen varmuuskopio kun tiedosto on onnistuneesti avattu. Pienentää tietojen katoamisen riskiä.\n
+ * Päivitetty JSch tukemaan uudempia SSH salakirjoituskoodeja\n
+ * Yhteysasetuksia voi nyt muokata, esimerkiksi tilanteessa kun WebDav salasana on muutettu\n
+ * Lisätty tuki Yubikey Neon static password - tilalle\n
+ * Automaattisen täytön voi nyt halutessaan kytkeä pois päältä\n
+ * Korjattu tietojen vuotaminen logcatiin\n
+ * Bugikorjauksia\n
+
+Versio 1.04b\n
+ * Korjaa sovelluksen kaatumisen kun käyttäjä yrittää ottaa käyttöön automaattisen täytön Huaewin laitteilla.\n
+
+
+ Versio 1.04\n
+* lisätty Automaattinen täyttö palvelu Android 8.0: saan ja myöhempiin versioihin. \n
+* Päivitetyt-kirjastot, työkaluja ja Target SDK versio. \n
+
Versio 1.03\n
* Poistettu helppokäyttötoimintojen automaattinen täyttö Googlen pyytämänä. Lisätietoja salasanan käyttö asetuksista löytää plugin jolla edellinen toiminto nyt toteutetaan. \n
@@ -863,6 +918,20 @@ Suojelee sinua Leikepöytään perustuvalta salasana sniffaukselta (Poista vanha
Varmista että tämä toimii järjestelmässäsi ja harkitse sisäänrakennetun näppäimistön käyttöä, jos se ei toimi.
Laajennuksen antama kuvaus:
+ Keepass2Android tukee Android Autofill-toimintoa, mutta näyttää siltä, että et ole ottanut sitä käyttöön vielä.
Ota automaattitäyttö käyttöön
+ Olemme pahoillamme, näyttää siltä, että laitteesi ei tue asetusten avaamista sovelluksesta käsin. Ole hyvä ja ota palvelu käyttöön järjestelmän AutoFill -asetuksista.
+ Automaattisen täytön apu
Täytä Keepass2Androidilla
+ Liittäminen ei onnistunut web verkkotunnuksen %1$s kanssa sovelluksessa %2$s
+ Minä ymmärrän
+ Älä näytä uudestaan
+ Muistatko pääsalasanasi?
+ Huomaa, että et voi avata tietokantaa ilman pääavainta. Pääavaimen \"nollaamiseen\" ei ole mitään keinoa.
+ Huomaa myös, että sormenjäljellä avaaminen käyttää Androidin turvasäilöön tallennettua pääavainta. Käyttöjärjestelmä voi poistaa turvasäilön milloin tahansa, esimerkiksi silloin kun lisäät uuden sormenjäljen järjestelmään asetuksissa. Joten älä luota pelkkään sormenjälkeen, vaan pidä myös pääsalasanasi tallessa!
+ Oletko ottanut tietokannastasi varmuuskopion?
+ Keepass2Android tallentaa salasanat haluamassasi paikassa sijaitsevaan tiedostoon. Oletko varma, että tiedosto on vielä saatavillasi jos puhelimesi varastetaan, tai tiedosto poistetaan tai tuhoutuu muuten? Pidä huoli, että sinulla tietokantatiedostosta ajantasainen varmuuskopio turvallisessa paikassa!
+ Luodaksesivarmuuskopion nyt, mene %1$s > %2$s > %3$s.
+ Oletko varautunut hätätilanteisiin?
+ Oletko koskaan miettinyt mitä tapahtuu jos et pääse enää käsiksi salasanatietokantaasi? Mitä jos joudut onnettomuuteen? On hyvä käytäntö antaa pääavaimesi jonkun luotetun henkilön haltuun hätätilanteita varten. Muussa tapauksessa kukaan ei pääse käsiksi salasanoihisi.
diff --git a/src/keepass2android/Resources/values-fr/strings.xml b/src/keepass2android/Resources/values-fr/strings.xml
index 6cfaa562..a31df2a2 100644
--- a/src/keepass2android/Resources/values-fr/strings.xml
+++ b/src/keepass2android/Resources/values-fr/strings.xml
@@ -87,7 +87,11 @@
Activer le déverrouillage par empreinte digitale
Activer le déverrouillage par empreinte digitale pour QuickUnlock
Capteur tactile pour déverrouiller la base de données
+ Le déverrouillage par empreinte digitale a échoué. La clé de décryptage a été invalidée par l\'OS Android. Ceci se produit généralement quand une nouvelle empreinte a été enregistrée ou quand les paramètres de sécurité ont changés.
+ Le déverrouillage de la base de données a échoué: la clé composite est invalide. Le déverrouillage par empreinte digitale a été désactivé car apparemment le mot de passe maître stocké n\'est plus valide.
Veuillez ré-activer le déverrouillage d\'empreintes digitales pour le nouveau mot de passe maître.
+ Merci de déverrouiller avec votre mot de passe et ensuite de réactiver le déverrouillage par empreinte digitale dans les paramètres de la base de données.
+ Échec lors de l\'initialisation du capteur d\'empreinte digitale.
Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Android Keystore et protégé à l\'aide de l\'authentification d\'empreintes digitales. Cela permet de déverrouiller votre base de données uniquement avec vos empreintes digitales.
Permet d\'utiliser l\'authentification par empreinte au lieu du code QuickUnlock. Ne nécessite pas de stocker des informations liées à votre mot de passe principal.
@@ -203,6 +207,7 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
Se rappeler l\'emplacement des fichiers clés
Enregistrer le fichier clé
Supprimer
+ Éditer
Rijndael (AES)
Racine
Fonction de dérivation de clés
@@ -266,6 +271,7 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
Les fichiers à importer seront choisis à la prochaine étape.
Activer DéverrouillageRapide
Entrez les %1$d derniers caractères de votre mot de passe :
+ Saisir le code QuickUnlock :
QuickUnlock !
Fermer la base de données
Activer QuickUnlock par défaut
@@ -278,6 +284,8 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
QuickUnlock nécessite une notification pour travailler correctement. Sélectionnez cette option pour afficher une notification sans icône.
Longueur de la clé QuickUnlock
Nombre maximal de caractères utilisés comme mot de passe QuickUnlock.
+ Masquer la longueur du code QuickUnlock
+ Si activé, la longueur du code QuickUnlock n’est pas affichée sur l’écran QuickUnlock.
Échec de QuickUnlock : mot de passe incorrect !
Dossier des pièces jointes
Répertoire où les fichiers joints seront sauvegardés.
@@ -310,6 +318,8 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
Effacer le mot de passe principal entré lorsque vous quittez l\'écran sans déverrouiller la base de données.
Verrouiller lors de la fermeture de l\'application
Verrouiller la base de données lors de la fermeture de l\'application via le bouton back.
+ Activer le champ de recherche au démarrage
+ Active le champ de recherche dans la vue groupée après le déverrouillage ou lors de la recherche d\'une entrée
Masquer l\'option de donation
Ce réglage est réservé aux donateurs. Il n\'est disponible qu\'après une durée minimale d\'utilisation de Keepass2Android .
Sans vos dons, cette application n\'existerait pas et ne serait pas améliorée. Si vous n\'avez pas encore donné, merci de l\'envisager dès maintenant.
@@ -317,6 +327,10 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
Je ne donnerai pas un sou, ou j’ai déjà donné. Ne demandez rien, même pas à l’anniversaire de l’auteur.
Mise en cache de la base de données
Conserver une copie des bases de données distantes dans le cache de l\'application. Ceci permet d\'utiliser les bases de données distantes même en mode hors connexion.
+ Sauvegardes locales
+ Créer une copie de sauvegarde locale après le chargement réussi d’une base de données.
+ Mise à jour de la sauvegarde locale...
+ Sauvegarde locale de %1$s
Certificats SSL
Définir le comportement lorsque la validation du certificat échoue. Remarque : vous pouvez installer les certificats sur votre appareil si la validation échoue !
Vider le cache ?
@@ -330,6 +344,7 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
Notifications séparées
Afficher des notifications séparées pour copier le nom d\'utilisateur et le mot de passe dans le presse-papiers et l\'activer le clavier.
Service d\'accessibilité pour le remplissage automatique
+ Service de saisie automatique
Notification du clavier KP2A
Rendre l\'entrée pleinement accessible via le clavier KP2A (recommandé).
Changer de clavier
@@ -344,6 +359,10 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
Basculer vers le clavier précédent lors-qu’aucune entrée n\'est ouverte.
Icône de notification si déverrouillé
Afficher une notification pendant que la base de données est déverrouillée.
+ Android 8 a introduit un nouveau comportement pour les notifications. Si vous souhaitez masquer l’icône pour les notifications de Keepass2Android, veuillez le configurer via le panneau de configuration. Définissez l’importance de la catégorie de notification à Minimum.
+ Ouvrir les paramètres
+ Peu importe
+ Le fichier n\'est plus accessible pour Keepass2Android. Soit il a été supprimé ou les permissions d\'accès ont été révoquées. Merci de ré-ouvrir le fichier, par exemple en utilisant Changer de base de données.
Préchargement de la base de données
Démarrer le chargement ou de téléchargement en arrière-plan de la base de données pendant la saisie du mot de passe.
Voulez-vous écraser le fichier existant en utilisant le même nom ?
@@ -423,7 +442,7 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
port
Répertoire initial (facultatif) :
Entrez les données de connexion SFTP :
- Entrez les données de connexion FTP:
+ Saisir les données de connexion FTP :
Sélectionner le type de stockage :
Fichier local
Recevoir depuis une application tierce
@@ -490,6 +509,7 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
désactivé
Trouver des plug-ins en ligne
Portées
+ désactivé
%1$s requiert des informations d\'identification pour %2$s.
%1$s demande des informations d\'identification. Sélectionner une entrée.
Activé
@@ -517,11 +537,12 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
Il semble que vous avez ouvert le fichier depuis une application externe. Cette utilisation ne supporte pas l\'écriture. Si vous souhaitez apporter des modifications à la base de données, fermez la base de données et sélectionnez Changer de base de données. Ensuite, si possible, ouvrez le fichier en utilisant une des options disponibles.
L\'indicateur de lecture seule est activé. Supprimer cette option si vous souhaitez apporter des modifications à la base de données.
L\'écriture n\'est pas possible en raison de restrictions introduites dans Android KitKat. Si vous souhaitez apporter des modifications à la base de données, fermez la base de données et sélectionnez Changer de base de données. Ensuite, ouvrez le fichier à l\'aide du sélecteur de fichier système.
+ Les sauvegardes locales ne peuvent être modifiées. Vous pouvez utiliser les Paramètres de base de données - Export de la base pour exporter cette sauvegarde vers un autre emplacement à partir duquel vous pourrez la ré-ouvrir. Elle sera à nouveau accessible en écriture.
Ajouter un icône à partir d\'un fichier...
Copie des fichiers...
Copier
Entrée standard
- Templates
+ ModèlesÂ
Carte d\'identité
Nom
Lieu de délivrance
@@ -547,6 +568,12 @@ Cela va stocker votre mot de passe maître sur cet appareil, chiffré avec Andro
Clé composite invalide ! S\'il vous plaît essayez encore.
Clé composite non valide ! S\'il vous plaît essayez les étapes suivantes pour débloquer votre base de données : \n • Assurez-vous que vous avez entré le bon mot de passe. Utiliser l\'icône \"œil\" pour afficher le mot de passe saisie. \n • Assurez-vous que vous avez sélectionné le type de mot de passe correct. Assurez-vous que ce type est le même que celui utilisé lors de la création de la base de données. \n • Assurez-vous que vous ont sélectionné le bon fichier de base de données.
+
+ \n
+ • Conseil : si vous pensez que votre base de données est probablement corrompue ou que vous ne vous souvenez plus du mot de passe maître après l\'avoir modifié, vous pouvez essayer la dernière version avec succès d\'ouverture en cliquant \"%1$s\" et en sélectionnant la sauvegarde locale.
+
+ \n • Astuce : Keepass2Android a placé la dernière version du fichier ouvert avec succès en mémoire interne. Vous pouvez l’ouvrir en cliquant sur «%1$s» et en sélectionnant la sauvegarde locale.
+
Le fichier est corrompu. \n
Voici quelques conseils qui pourraient aider à diagnostiquer le problème : \n
@@ -554,6 +581,12 @@ Voici quelques conseils qui pourraient aider à diagnostiquer le problème : \n
• Si vous avez copié le fichier via le port USB (Mode MTP), essayez à nouveau avec des outils comme MyPhoneExplorer. MTP tronque les fichiers dans certains cas.\n
• Si vous ne pouvez pas ouvrir le fichier sur votre PC, à partir du même endroit, il est très probable que le fichier soit corrompu. Utilisez alors une sauvegarde de base de données. Si vous supposez que Keepass2Android a corrompu le fichier, s\'il vous plaît contactez le support. \n
• Si vous pouvez toujours ouvrir le fichier sur votre PC, veuillez contacter le support. Vous pouvez essayer de l\'enregistrer avec des paramètres différents (ex. le décompresser) sur le PC et réessayer de l\'ouvrir dans Keepass2Android.
+ Base de données déverrouillée
+ Notification à propos de la base de données en train d\'être déverrouillée
+ QuickUnlock
+ Notification à propos de la base de données en cours de verrouillage avec QuickUnlock
+ Notifications d\'entrée
+ Notification pour simplifier l\'accès à l\'entrée actuellement sélectionnée.
Keepass2Android : Une erreur s\'est produite.
Une erreur inattendue s\'est produite lors de l\'exécution de Keepass2Android. S\'il vous plaît aidez-nous à résoudre ce problème en permettant à l\'application d\'envoyer des rapports d\'erreurs.
Les rapports d\'erreur ne contiendront jamais le contenu de votre base de données ou le mot de passe principal. Vous pouvez les désactiver dans les paramètres de l\'application.
@@ -562,6 +595,17 @@ Voici quelques conseils qui pourraient aider à diagnostiquer le problème : \n
Demander après une erreur
Envoyer des rapports d\'erreurs
Afficher les caractères en claire dans les champs de saisie texte quand le scan d\'empreinte digital est activé.
+
+ Version 1.05\n * Utilisation des canaux de notification Android 8, ce qui permet la configuration via les paramètres système\n * Affichage de l’icône entrée dans la notification\n * Utilisation d\'icônes adaptatifs pour Android 8, utilisez l\'icône arrondi du lanceur pour Android 7\n * Permet d’activer la recherche au déverrouillage (voir réglages) \n * Modification de comment les fichiers sont écrits en utilisant le framework Storage Access, corrections de problèmes sur les mises à jour des fichiers ouvert sur Google Drive avec le sélecteur du système fichier\n * Ajout de textes d’informations afin d’éviter certaines incompréhensions commune \n * Création de sauvegardes locales pour les bases ouvertes avec succès pour réduire le risque de perte de donnée\n * Mise à jour de JSch pour supporté les derniers chiffrements SSH\n * Permettre la modification des paramètres de connexion, par exemple lorsque le mot de passe WebDav a changé\n * Ajout du support pour mot de passe statique Yubikey Neo\n * Permettre de désactiver les suggestions automatiques\n * Correction des fuites de données vers logcat\n * Corrections d\'anomalies\n
+
+
+ Version 1.04b\n * Évite les plantages lorsque l’utilisateur essaie d’activer la fonctionnalité de remplissage automatique sur les appareils Huawei.\n
+
+
+Version 1.04
+* Ajout du service de saisie automatique pour Android 8.0 et plus.
+* Mise à niveau des librairies, des outils de build et de la version du sdk cible
+
Version 1.03\n * Suppression du service accessibilité pour le remplissage automatique tel que demandé par Google. Voir les paramètres d’accès mot de passe pour trouver un plugin reproduisant la fonctionnalité précédente. \n * Ajout des applications tierces comme option de stockage\n * Visionneuse intégrée pour le voir les images attachées sans les transférer sur d’autres apps\n * OkHttp mis à jour pour résoudre certains problèmes de connections\n * Support des entrées de KeeTrayTOTP, supporte désormais les entrées Steam\n
@@ -774,7 +818,7 @@ Première version publique
Conception
- Aucun chiffrement (FTP)
- - Chiffrement Implicit (FTP sur TLS, FTPS)
+ - Chiffrement implicite (FTP sur TLS, FTPS)
- Chiffrement Explicit (FTP sur TLS, FTPS)
@@ -797,4 +841,20 @@ Première version publique
Assurez vous que ceci fonctionne sur votre système ou sinon considérez d\'utiliser le clavier fourni.
Description fournie par le plugin:
+ Keepass2Android supporte la fonctionnalité de remplissage automatique d\'Android mais il semble que vous ne l\'avez pas encore activé.
+ Activer le remplissage automatique
+ Désolé, il semble que votre appareil ne supporte pas l\'ouverture des paramètres depuis l\'application. Merci d\'aller manuellement dans les paramètres système liées au remplissage automatique pour activer ce service.
+ Montrer l\'aide du remplissage automatique
+ Remplir avec Keepass2Android
+ Impossible d\'associer le domaine web %1$s avec l\'application %2$s
+ Je comprends
+ Ne plus afficher
+ Vous rappelez-vous de votre mot de passe principal ?
+ Notez que vous ne serez pas en mesure d’ouvrir votre base de données sans la clé principale. Il n’y a aucun moyen de « réinitialiser » le mot de passe.
+ Notez également que pour fonctionner le déverrouillage par empreintes digitales stocke votre clé principale dans le stockage sécurisé d’Android. Ce stockage peut être supprimé par Android à tout moment, par exemple si vous ajoutez une nouvelle empreinte dans les paramètres système. Ne comptez donc pas uniquement sur vos empreintes digitales, et retenez pas votre mot de passe principal, s’il vous plaît !
+ Votre base de données est-elle sauvegardée ?
+ Keepass2Android stocke vos mots de passe dans un fichier à l\'emplacement de votre choix. Êtes-vous sûr que vous pourrez toujours accéder à ce fichier si votre téléphone est perdu ou volé, ou quand le fichier est détruit ou supprimé ? S’il vous plaît assurez-vous que vous disposez d’une sauvegarde à jour dans un lieu sûr !
+ Pour créer une sauvegarde maintenant, allez dans %1$s > %2$s > %3$s.
+ Êtes-vous prêt pour les cas d’urgence ?
+ Avez-vous déjà envisagé ce qui se passerait si vous ne pouviez plus accéder à votre base de données de mots de passe ? Et si vous avez un accident ? Il est recommandé de transmettre votre clé principale à une personne de confiance pour les cas d\'urgence. Sinon, personne n\'aura accès à vos mots de passe.
diff --git a/src/keepass2android/Resources/values-gl-rES/strings.xml b/src/keepass2android/Resources/values-gl-rES/strings.xml
index 39111ba1..397cbfb1 100644
--- a/src/keepass2android/Resources/values-gl-rES/strings.xml
+++ b/src/keepass2android/Resources/values-gl-rES/strings.xml
@@ -7,6 +7,7 @@
Keepass2Andoird é un xestor de contrasinais que aporta acceso de lectura/escritura ás bases de datos KeePass 2.x de Android.
A interface de usuario está baseada en KeepassDroid desenvolvida por Brian Pellin. O código para as operacións da base de datos está baseada en KeePass, de Dominik Reichi. O robot Android é reproducido ou modificado por un traballo creado e compartido por Google e usado segundo os termos descritos na licenza Creative Commons 3.0.
Apoio de SFTP implementado co uso da liberÃa JSch baixo licenza BSD, creada por JCraft, Inc.
+ A icona do martelo foi creada por John Caserta do proxecto Noun. A icona do pingüÃn foi creada por Adriano Emerick do proxecto Noun. A icona da pluma foi creada por Jon Testa do proxecto Noun. A icona da mazá foi creada por Ava Rowell do proxecto Noun. A icona provén de https://icons8.com/icon/5570/Picture.
Aceptar
Denegar
Engadir entrada
@@ -86,7 +87,11 @@
Habilitar desbloqueo completo con pegada dixital
Habilitar desbloqueo con pegada dixital para QuickUnlock
Toque o sensor para desbloquear a base de datos
+ Fallou o desbloqueo por pegada. O sistema Android OS invalidou a chave descritiva. Isto pasa cando se engadiu unha nova pegada dactilar ou se cambiou a configuración de seguridade.
+ Fallou o desbloqueo da base de datos: chave composta inválida. Deshabilitouse o desbloqueo por pegada debido a que o contrasinal maestro gardado xa non é válido.
Volva a habilitar o desbloqueo por pegada dixital para o novo contrasinal mestre.
+ Tente a desbloquear co contrasinal e volver a habilitar o Desbloqueo por Pegada na configuración da base de datos, por favor.
+ Fallou a inicialización do sensor de pegada.
Isto gardará o seu contrasinal mestre no dispositivo, encriptado co Android Keystore e protexido por autenticación de pegada dixital. PermÃtelle desbloquear a base de datos tan só ca súa pegada dixital.
Permite o uso da autenticación con pegada dixital no canto do seu código QuickUnlock. Non require a almacenaxe de ningunha información relacionada co seu contrasinal mestre.
Introduza o nome do arquivo da súa base de datos
@@ -201,6 +206,7 @@
Lembrar localización dos arquivos chave
Gardar arquivo chave
Eliminar
+ Editar
Rijndael (AES)
RaÃz
Función de derivación de claves
@@ -264,6 +270,7 @@
O arquivo a importar será seleccionado no seguinte paso.
Habilitar QuickUnlock
Introduza os últimos %1$d caracteres do seu contrasinal:
+ Insire o código de desbloqueo rápido:
QuickUnlock!
Pechar base de datos
Habilitar QuickUnlock por defecto
@@ -283,6 +290,7 @@
Seleccione onde gardar o arquivo adxunto.
Gardar na tarxeta SD
Gardar na caché e abrir
+ Amosar co visor interno de imaxes
Arquivo gardado en %1$s.
Non se puido gardar arquivo adxunto en %1$s.
Lembrar texto de busca?
@@ -314,6 +322,8 @@
Non che darei un céntimo ou xa doei. Non preguntar por doazóns, nin sequera no aniversario do autor.
Caché de base de datos
Manter unha copia dos arquivos da base de datos remota no directorio da caché da app. Isto permite usar base de datos remotas incluso sen conexión.
+ Copias de seguranza locais
+ Actualizando copia de seguranza local...
Certificados SSL
Definir o comportamento no caso de que falle a validación dun certificado. Nota: pode instalar certificados no seu dispositivo se a validación falla!
Eliminar caché?
@@ -326,9 +336,14 @@
Fai posible o acceso ó nome de usuario e contrasinal a través da barra de notificacións. Coidado cos rastrexadores de contrasinais!
Notificacións por separado
Amosar notificacións separadas para copiar o nome de usuario e o contrasinal ó portapapeis e para activar o teclado.
+ Servizo de accesibilidade de autocompletado
+ Servizo de autocompletado
+ Notificación teclado KP2A
+ Facer toda a entrada accesible a través do teclado KP2A (recomendado).
Cambiar teclado
Abrir caixa de selección de teclado cando unha entrada estea dispoñible a través do teclado KP2A despois dunha busca do navegador.
Cambiar teclado automaticamente
+ Cambiar automaticamente ó teclado KP2A cando a entrada estea aberta. Isto precisa do Plug-in KeyboardSwap ou un dispositivo con acceso \'Root\' e a aplicación Secure Settings con System+.
Instalar o plugin KeyboardSwap
Este plugin permite cambiar automaticamente ao teclado de KP2A sen ser \"root\". Cómpre ADB.
Cambio automático só despois dunha busca
@@ -337,6 +352,7 @@
Cambiar ó teclado anterior cando non haxa ningunha entrada aberta.
Icona de notificación mentres estea desbloqueado
Amosar a icona de notificación mentres a base de datos estea desbloqueada.
+ Abrir axustes
Pre-cargar o arquivo da base de datos
Comezar a carga ou descarga en segundo plano do arquivo da base de datos mentres se introduce o contrasinal.
Desexa sobrescribir o binario existente co mesmo nome?
@@ -470,6 +486,10 @@
Nome do campo configuración TOTP
Introduza aquà o nome do campo configuración para TrayTotp
TrayTotp
+ Ficheiro de rexistro para depuración
+ Usar ficheiro de rexistro
+ Escribir a saÃda da app a un ficheiro de rexistro local
+ Enviar rexistro de depuración...
Cargando…
Plugins
Nome do paquete:
@@ -479,6 +499,7 @@
deshabilitado
Buscar plugins na liña
Permisos de nivel
+ non habilitado
%1$s está solicitando credenciais para %2$s.
%1$s está solicitando credenciais. Por favor, seleccione unha entrada.
Habilitado
@@ -506,6 +527,7 @@
Debeu de abrir o arquivo dende unha app externa. Isto non permite a escritura. Se quere facer modificacións á base de datos, peche a base de datos e seleccione Cambiar base de datos. Despois abra o arquivo dende unha das opcións dispoñibles.
Opción só lectura activada. DesactÃveo se quere facer cambios na base de datos.
A escritura non é posible debido ás restricións de Android KitKat. Se quere facer cambios na base de datos, péchea e seleccione Cambiar base de datos. Logo abra o arquivo utilizando o Selector de arquivos do sistema.
+ As copias de seguranza locais non poden ser modificadas. Nos axustes da base de datos podes exportar unha copia a outra localización desde onde poder abrila. Isto permitirá escribir nela novamente.
Engadir icona dende arquivo...
Copiando arquivo...
Copia
@@ -530,6 +552,7 @@
Engadir modelos?
KeepassAndroid contén modelos de entradas para contas de e-mail, contrasinais de LANs inalámbricas, notas seguras e máis. Quere engadir unha destas á súa base de datos? Se selecciona Non, poderaas engadir máis tarde dende a configuración da base de datos.
Engadir modelo á base de datos
+ Teña en conta que esta é unha entrega previa e poderÃa ter algúns erros! Se experimenta *algo* inesperado, fágamo saber por favor (no grupo beta tester de Google+ ou por email).
Continuar
A URI que introduciu non se asemella a un nome de arquivo. Está seguro que este é un arquivo válido?
Clave composta inválida! Ténteo de novo.
@@ -540,6 +563,13 @@
• Asegúrese de que seleccionou o arquivo de base de datos correcto.
+
+\n
+ • Consello: se pensas que o ficheiro da base de datos poida estar danado ou non lembras a chave mestra despois de modificala, podes tentar coa última versión do ficheiro aberta tocando en \"%1$s\" e seleccionando a copia de seguranza local.
+
+ \n
+ • Consello: Keepass2Android gardou satisfactoriamente na memoria interna a versión do último ficheiro aberto. Podes abrila tocando en \"%1$s\" e seleccionando a copia de seguranza local.
+
Arquivo corrupto. \n
Probe o seguinte para detectar o problema:\n
@@ -549,6 +579,10 @@
• Se aÃnda asà non pode abrir o arquivo dende o seu PC, contacte con soporte. Tente gardar o arquivo con outras configuracións (como por exemplo, descomprimido) no PC e tente abrilo de novo en Keepass2Android.
+ Base de datos desbloqueada
+ Notificación de que a base de datos está a ser desbloqueada
+ Entrada de notificacións
+ Notificación para simplificar o acceso á entrada seleccionada.
Keepass2Android: ocorreu un erro.
Ocorreu un erro inesperado durante a execución de Keepass2Android. Por favor, axúdenos a solucionar estes erros permitindo á app enviar informes de erros.
Os informes de erros nunca conterán ningún tipo de contido da súa base de datos ou contrasinal mestre. Pode deshabilitalos na configuración da app.
@@ -557,6 +591,34 @@
Preguntar despois do erro
Enviar informes de erros
Amosar teclado para entradas de contrasinal cando o escaneo de pegada dixital está activo.
+
+ Versión 1.04b\n
+ * Evita o fallo da aplicación cando o usuario tenta activar o autocompletado en dispositivos Huawei.\n
+
+
+ Versión 1.04\n
+ * Servizo de autocompletado engadido para Android 8.0 ou posterior.\n
+ * Actualización de bibliotecas, ferramentas de compilación e versión de SDK.\n
+
+
+ Version 1.03\n
+ * Eliminación do servizo de accesibilidade par ao autocompletado a petición de Google. Vexa a configuración de acceso para atopar o plugin que replica a mesma funcionalidade.\n
+ * Apps de terceiras partes engadidas como opción de almacenaxe\n
+ * Integración de visor de imaxes para ver as adxuntas sen telas que abrir mediante outras apps\n
+ * Actualización de OkHttp para resolver problemas con algunhas conexións\n
+ * Soporte para entradas KeeTrayTOTP, agora soporta entradas de Steam\n
+
+
+ Versión 1.02\n
+ * Melloras de seguridade varias. Grazas polo parte de seguridade de jean-baptiste.cayrou@thalesgroup.com e vincent.fargues@thalesgroup.com e a súa colaboración!\n
+ * Soporte ó plug-in KeyboardSwap (vexa opcións de acceso por contrasinal): permite cambiar de método de introdución automaticamente en dispositivos sen acceso \'Root\'. Grazas a Mishaal Rahman de XDA-Developers por face-lo posible.\n
+ * Arranxo do servizo de accesibilidade na versión recente de Chrome\n
+ * Arranxo de limpeza innecesaria dos datos da pegada dactilar\n
+ * Arranxo de bloqueos menores\n
+ * Actualización de Dropbox SDK para asegurar futuras compatibilidades\n
+ * Eliminado o o sitema de reportes de erro de Xamarin \n
+ * Actualización de ferramentas de compilación\n
+
Version 1.01-g\n
* Solucionado o fallo canso se traballa sen conexión\n
@@ -677,7 +739,7 @@ Version 1.01-d\n
Versión 0.9.4\n
* engadido plugin de soporte: vaia á configuración para saber como obter plugins!\n
* publicado plugin QR (escanea contrasinais, amósaos en formato QR, transfire entradas a outros dispositivos KP2A)\n
- * publicado plugin InputStick (transfira credenciais ó seu PC por bluetooth - require un lápis USB InputStick)\n
+ * publicado plugin InputStick (transfira credenciais ó seu PC por bluetooth - require un lapis USB InputStick)\n
* Outras apps poderán pedir credenciais a KP2A. Es desenrolador? Engádeo á túa app!\n
* engadido soporte TOTP (compatible con KeeOTP e TrayTotp)\n
* agora a app xa non deberÃa ser rematada por Android cando estea aberta\n
@@ -850,4 +912,20 @@ Lanzamento público inicial
Asegúrese de que funciona correctamente no seu sistema e considere se debe utilizar o teclado integrado ou non.
Descrición facilitada polo plugin:
+ Keepass2Android permite a caracterÃstica de autocompletado de Android, pero seica aÃnda non está habilitado.
+ Habilitar autocompletado
+ SentÃmolo, mais semella que o teu dispositivo non admite abrir os axustes desde a aplicación. Manualmente, vai aos axustes do sistema para activar o servizo de autocompletado.
+ Amosar axuda do autocompletado
+ Completar con Keepass2Android
+ Non se puido asociar o dominio web %1$s ca app %2$s
+ Entendo
+ Non mostrar máis
+ Lembras o teu contrasinal mestre?
+ Repara en que non hai forma de abrir a túa base de datos sen a chave mestra. Non hai xeito de \"restablecer\" o contrasinal mestre.
+ Repara tamén en que o desbloqueo coa impresión dixital funciona almacenando a chave mestra no almacenamento seguro de Android, o cal poderÃa ser eliminado por Android en calquera momento (ex.: se engade unha nova configuración da impresión dixital). Por tanto, non confÃes todo na impresión dixital e lembra o contrasinal mestre!
+ A túa base de datos ten copia de seguranza?
+ Keepass2Android almacena os teus contrasinais nun ficheiro localizado onde elixas. Tes a certeza de permitir que se poida acceder a el en caso de perda ou roubo do teléfono ou cando o ficheiro se destrúa ou elimine? Asegúrate sempre de teres unha copia de seguranza del nun sitio seguro!
+ Para crear unha copia de seguranza, vai a %1$s>%2$s>%3$s.
+ Estás preparado para unha emerxencia?
+ Pensaches no que sucederÃa se non puideses acceder máis á tua base de datos de contrasinais? E se tes un accidente? É recomendable darlle o teu contrasinal mestre a unha persoa de confianza para casos de emerxencia. De non o faceres, ninguén terá acceso aos contrasinais.
diff --git a/src/keepass2android/Resources/values-hu/strings.xml b/src/keepass2android/Resources/values-hu/strings.xml
index 7d9027dd..6f1eeb68 100644
--- a/src/keepass2android/Resources/values-hu/strings.xml
+++ b/src/keepass2android/Resources/values-hu/strings.xml
@@ -87,7 +87,11 @@
Ujjlenyomattal való feloldás engedélyezése
Ujjlenyomat alapú GyorsFeloldás engedélyezése
Érintse meg az érzékelőt az adatbázis feloldásához
+ Ujjlenyomattal való feloldás nem sikerült. A titkosÃtó kulcsot az Android OS érvénytelenÃtette. Ez általában akkor történik, ha új ujjlenyomat készült vagy a biztonsági beállÃtások megváltoztak.
+ Az adatbázis feloldása nem sikerült: Az összetett kulcs érvénytelen. Az ujjlenyomat alapú feloldás le lett tiltva, mert úgy tűnik a tárolt főkulcs (jelszó) már nem érvényes.
Engedélyezze újra az ujjlenyomat alapú feloldást az új főkulccsal (jelszóval).
+ Kérem oldja fel a jelszavával és ezután kapcsolja be újra az Ujjlenyomat Feloldást az adatbázis-beállÃtásokban.
+ Nem sikerült az ujjlenyomat olvasó inicializálása.
Ez a funkció le fogja tárolni a főkulcsot (jelszót) az
eszközön, az Android Kulcstár által titkosÃtva, és
@@ -207,11 +211,12 @@
A kulcsfájlok elérhetőségének tárolása.
Kulcsfájl mentése
EltávolÃtás
+ Szerkesztés
Rijndael (AES)
Gyökérkönyvár
Kulcsszármaztatási függvény
TitkosÃtási menetek száma
- A titkosÃtási menetek számának növelésével extra védelemet kaphat a brute force támadások ellen, ugyanakkor jelentÅ‘sen lassÃthatja az adatbázis betöltését vagy mentését.
+ A titkosÃtási menetek számának növelésével extra védelmet kaphat a brute force támadások ellen, ugyanakkor jelentÅ‘sen lassÃthatja az adatbázis betöltését vagy mentését.
Menetek száma
Argon 2 memória (byte)
Párhuzamosság Argon 2-höz
@@ -270,6 +275,7 @@
Az importálandó fájlt a következő lépésben kell kiválasztani.
GyorsFeloldás engedélyezése
Adja meg a jelszó utolsó %1$d karakterét:
+ Adja meg a GyorsFeloldás kódot:
GyorsFeloldás!
Adatbázis bezárása
GyorsFeloldás alapértelmezés szerinti engedélyezése
@@ -282,6 +288,8 @@
A GyorsFeloldás megfelelÅ‘ működéséhez szükség van értesÃtés megjelenÃtésére. Ezzel a beállÃtással az ikont tüntetheti el.
A GyorsFeloldás kulcs hossza
A GyorsFeloldás jelszó maximális hossza.
+ Rejtse el a GyorsFeloldás kód hosszát
+ Ha engedélyezve van, a GyorsFeloldás kód hossza nem jelenik meg a GyorsFeloldás képernyőn.
A GyorsFeloldás nem sikerült: a jelszó helytelen!
Csatolt fájlok könyvtára
A könyvtár, ahová a csatolt fájlok mentésre kerülnek.
@@ -314,6 +322,8 @@
A beÃrt fÅ‘kulcs (jelszó) törlése, ha az adatbázis-feloldó képernyÅ‘t az adatbázis feloldása nélkül hagyja el.
Zárolás kilépéskor
Zárolódjon az adatbázis, ha az alkalmazásból a vissza gomb segÃtségével kilép.
+ Aktiválja a keresÅ‘ mezÅ‘t indÃtáskor
+ Aktiválja a keresőmezőt a csoport nézetben feloldás után, vagy bejegyzés keresésekor
Támogatás-opció elrejtése
Ez a beállÃtás a támogatók számára készült, és csak akkor érhetÅ‘ el, ha a Keepass2Android-ot már egy ideje használja.
Támogatások nélkül ez az alkalmazás nem létezne, és nem lehetne folyamatosan továbbfejleszteni! Ha még nem támogatta a fejlesztést, kérjük, tegye meg azt most!
@@ -321,6 +331,10 @@
Nem adok egy fillér hozzájárulást se vagy pedig már adtam. Nem kérek emlékeztetőt a hozzájárulásról, még a szerző születésnapján se.
Helyi másolatok
Készüljön helyi másolat a távoli adatbázisokról, hogy azokat hálózati kapcsolat hiányában is lehessen használni.
+ Helyi biztonsági mentések
+ Hozzon létre helyi biztonsági mentés másolatot sikeres adatbázis betöltés után.
+ Helyi biztonsági másolat frissÃtése...
+ %1$s helyi biztonsági mentése
SSL tanúsÃtványok
Adja meg, mi történjen, ha a tanúsÃtvány ellenÅ‘rzése nem sikerül. Megjegyzés: sikertelen ellenÅ‘rzés esetén van lehetÅ‘ség az eszközre a megfelelÅ‘ tanúsÃtvány telepÃtésére!
Helyi másolatok törlése?
@@ -334,6 +348,7 @@
Részletes értesÃtések
Külön értesÃtés jelenjen meg a felhasználónév és a jelszó vágólapra másolásáról és a billentyűzet aktiválásáról.
Automatikus kitöltés akadálymentesÃtési szolgáltatás
+ Automatikus kitöltés szolgáltatás
KP2A billentyűzet
A teljes bejegyzés elérhetÅ‘vé tétele a KP2A billentyűzet segÃtségével (ajánlott).
Billentyűzetváltás
@@ -348,6 +363,10 @@
Visszaváltás az előző billentyűzetre ha nem lett bejegyzés megnyitva.
ÉrtesÃtés az adatbázis hozzáférhetÅ‘ségérÅ‘l
Egy értesÃtési ikon megjelenÃtése, amÃg az adatbázis hozzáférhetÅ‘.
+ Az Android 8 bevezetett egy új működési módot az értesÃtésekhez. Ha el akarja rejteni a Keepass2Android értesÃtési ikonját, kérjük ezt a rendszer beállÃtásokban tegye meg. ÃllÃtsa az értesÃtési kategória fontosságát Minimum-ra.
+ BeállÃtások megnyitása
+ Nem érdekel
+ A fájl már nem elérhetÅ‘ a Keepass2Android által. Vagy el lett távolÃtva, vagy a hozzáférési jogosultságok vissza lettek vonva. Kérjük használja a Fájl újra megnyitását, pl. az Adatbázis-váltást használva.
Adatbázisok előrehozott betöltése
A jelszó bekérésével egyidejűleg kezdődjön el az adatbázis betöltése vagy letöltése.
Szeretné felülÃrni a meglévÅ‘, azonos nevű bináris fájlt?
@@ -496,6 +515,7 @@ Az adatbázist módosÃthatja, a szinkronizálásra késÅ‘bb is lesz lehetÅ‘ség
letiltva
Beépülő modulok letöltése
Lehetőségek
+ nincs engedélyezve
%1$s hitelesÃtÅ‘ adatokat kér %2$s számára.
%1$s hitelesÃtÅ‘ adatokat igényel. Válasszon egy bejegyzést!
Engedélyezve
@@ -523,6 +543,7 @@ Az adatbázist módosÃthatja, a szinkronizálásra késÅ‘bb is lesz lehetÅ‘ség
Úgy tűnik, hogy a fájlt egy külsÅ‘ alkalmazásból nyitotta meg. Ily módon történÅ‘ megnyitás esetén a fájl módosÃtása nem lehetséges. Ha módosÃtani szeretné az adatbázist, elÅ‘ször zárja azt be, majd az Adatbázis-váltás funkció valamelyik opciója segÃtségével nyissa meg újra az adatbázist.
Az adatbázis csak olvashatónak van beállÃtva. Ha módosÃtani szeretné az adatbázist, módosÃtsa a beállÃtást.
Az Android KitKat bevezetett korlátozások miatt az Ãrás nem lehetséges. Ha módosÃtani kÃvánja az adatbázist, zárja azt be, majd az Adatbázis-váltás funkció Alapértelmezett fájlválasztójával nyissa meg újra az adatbázist.
+ A helyi biztonsági másolatok nem módosÃthatóak. Használhatja az Adatbázis beállÃtások - Adatbázis exportálása menüpontot a biztonsági másolat másik helyre való exportálásához, ahonnan már újra megnyithatja. Ezután ez már újra Ãrható lesz.
Ikon hozzáadása fájlból...
Fájl másolása...
Másolás
@@ -547,6 +568,7 @@ Az adatbázist módosÃthatja, a szinkronizálásra késÅ‘bb is lesz lehetÅ‘ség
Sablonok hozzáadása?
Keepass2Android részét képezi néhány beépÃtett sablon, egyebek mellett e-mail fiókok, WLAN jelszavak és titkosÃtott jegyzetek számára. KÃvánja ezeket hozzáadni az adatbázishoz? Ha most nem teszi ezt meg, késÅ‘bb pótolhatja, a megfelelÅ‘ adatbázis-beállÃtás segÃtségével.
Sablonok hozzáadása az adatbázishoz
+ Figyelem! Ez egy előzetes kiadás és mint ilyen, hibákat tartalmazhat! Ha *bármi* szokatlant tapasztal, kérjük, jelezze (a Google+ béta tesztelő csoportban vagy e-mail-en keresztül).
Folytatás
A megadott URI nem tűnik fájlnévnek. Biztos benne, hogy jó URI-t adott meg?
Az összetett kulcs érvénytelen! Próbálkozzon újra.
@@ -556,6 +578,12 @@ Az adatbázist módosÃthatja, a szinkronizálásra késÅ‘bb is lesz lehetÅ‘ség
• EllenÅ‘rizze, hogy a helyes jelszótÃpust adott-e meg. EllenÅ‘rizze, hogy ez ugyan az a tÃpus-e, mint amit az adatbázis létrehozásakor megadott.\n
• Ellenőrizze, hogy a helyes adatbázist választotta-e ki.
+
+\n
+ Útmutatás: Ha úgy gondolja, hogy az adatbázis fájl sérült, vagy nem emlékszik a főkulcsra (jelszó) miután megváltoztatta, megpróbálhatja az utolsó sikeresen megnyitott fájl verziót ide klikkelve \"%1$s\" és kiválasztva a helyi biztonsági másolatot.
+
+\n
+Útmutatás: Keepass2Android eltárolta az utolsó sikeresen megnyitott fájl verziót a belső memóriában. Megnyithatja ide klikkelve \"%1$s\" és kiválasztva a helyi biztonsági másolatot.
A fájl sérült. \n
Néhány javaslat a probléma felderÃtésére:\n
@@ -563,6 +591,12 @@ Az adatbázist módosÃthatja, a szinkronizálásra késÅ‘bb is lesz lehetÅ‘ség
• Ha a fájlt USB kapcsolaton keresztül másolta át (MTP-mód), próbáljon meg egy másik alkalmazást, például a MyPhoneExplorert használni, mert az MTP egyes esetekben a fájlok végét levágja.\n
• Ha a fájlt a korábbi helyrÅ‘l asztali számÃtógéprÅ‘l sem tudja megnyitni, nagyon valószÃnű, hogy a fájl ténylegesen megsérült. Próbálja meg az adatbázist mentésbÅ‘l visszaállÃtani. Ha úgy gondolja, hogy a fájl sérülését a Keepass2Android okozta, kérjük, értesÃtse a fejlesztÅ‘ket.\n
• Ha a fájlt a korábbi helyrÅ‘l asztali számÃtógéprÅ‘l meg tudja megnyitni, kérjük, értesÃtse a fejlesztÅ‘ket. Ãtmeneti megoldásként megpróbálhatja az asztali számÃtógépen a fájlt más formátumban kimenteni (például tömörÃtés nélkül), hátha talál olyan formátumot, amit a Keepass2Android meg tud nyitni.
+ Adatbázis feloldva
+ ÉrtesÃtés az adatbázis feloldásáról
+ GyorsFeloldás
+ ÉrtesÃtés az adatbázis GyorsFeloldással való zárolásáról
+ Bejegyzés értesÃtések
+ ÉrtesÃtés a jelenleg kiválasztott bejegyzés egyszerűsÃtett eléréséhez.
Keepass2Android: Hiba történt.
Váratlan hiba történt a Keepass2Android futtatása közben. Kérjük, engedélyezze a hibajelentés küldését, segÃtve ezzel a hiba kijavÃtását.
A hibajelentések soha nem tartalmaznak az adatbázisból származó információt vagy a fÅ‘kulcsot (jelszót). Az alkalmazásbeállÃtások segÃtségével tilthatók.
@@ -571,6 +605,7 @@ Az adatbázist módosÃthatja, a szinkronizálásra késÅ‘bb is lesz lehetÅ‘ség
Hiba esetén rákérdez
Hibajelentések küldése
A billentyűzet megjelenÃtése a jelszóbeÃráshoz ujjlenyomat-leolvasás közben.
+ Lehetőségek kiterjesztése, hogy egy sörrel vagy valami mással támogasson
- 30 másodperc
- 1 perc
@@ -619,5 +654,22 @@ Az adatbázist módosÃthatja, a szinkronizálásra késÅ‘bb is lesz lehetÅ‘ség
- Figyelmeztetés a problémára
- Ne fogadjon el érvénytelen tanúsÃtványt
+ EllenÅ‘rizze, hogy ez működik az ön rendszerén, amennyiben nem működik, használja a beépÃtett billentyűzetet.
A beépülÅ‘ modul által nyújtott leÃrás:
+ A Keepass2Android támogatja az Android Automatikus Kitöltés szolgáltatását, de úgy tűnik ez még nincs bekapcsolva.
+ Automatikus kitöltés engedélyezése
+ Elnézést, úgy tűnik az ön készüléke nem támogatja a rendszer beállÃtások megnyitását az app-ból. Kérjük indÃtsa el a rendszer beállÃtásokat és engedélyezze az Automatikus kitöltés szolgáltatást.
+ Automatikus kitöltés segÃtség megjelenÃtése
+ Kitöltés Keepass2Androiddal
+ Nem sikerült összerendelni a %1$s web domaint a %2$s alkalmazással
+ Értem
+ Ne mutassa többet
+ Emlékszik a főkulcsra (jelszó)?
+ Vegye figyelembe, hogy nem fogja tudni megnyitni az adatbázisát a fÅ‘kulcs (jelszó) nélkül. Nincs lehetÅ‘ség a fÅ‘kulcs (jelszó) visszaállÃtására.
+ Azt is vegye figyelembe, hogy az ujjlenyomattal való feloldás úgy működik, hogy a fÅ‘kulcs (jelszó) az Android biztonsági tárolójában tárolódik. Ezt a tárolót az Android bármikor törölheti. Pl.: amikor hozzáad egy új ujjlenyomatot a rendszer beállÃtásokban. Emiatt, kérjük, ne hagyatkozzon az ujjlenyomattal való feloldásra, hanem jegyezze meg a fÅ‘kulcsot (jelszó)!
+ Van biztonsági mentése az adatbázisról?
+ Keepass2Android az ön által választott helyen, egy fájlban tárolja az ön jelszavait. Biztos benne, hogy akkor is hozzá tud férni ehhez a fájlhoz ha a telefonját elhagyja, ellopják, vagy a fájl megsemmisül vagy letörlődik? Kérjük gondoskodjon róla, hogy mindig van naprakész biztonsági másolata egy biztonságos helyen!
+ Biztonsági másolat készÃtéséhez menjen ide %1$s > %2$s > %3$s.
+ Felkészült vészhelyzeti esetekre?
+ Gondolkozott már azon, hogy mi történne, ha nem tudna többé a jelszó adatbázisához hozzáférni? Mi történik, ha baleset éri? Hasznos lehet vészhelyzet esetére a fÅ‘kulcsot (jelszó) megosztani egy olyan személlyel, akiben megbÃzik. Különben senki sem fog tudni hozzáférni a jelszavaihoz.
diff --git a/src/keepass2android/Resources/values-in/strings.xml b/src/keepass2android/Resources/values-in/strings.xml
index 72fbdd47..b410430c 100644
--- a/src/keepass2android/Resources/values-in/strings.xml
+++ b/src/keepass2android/Resources/values-in/strings.xml
@@ -1,4 +1,6 @@
+
+
Umpan balik
Laman
diff --git a/src/keepass2android/Resources/values-it/strings.xml b/src/keepass2android/Resources/values-it/strings.xml
index bed32e09..eb198008 100644
--- a/src/keepass2android/Resources/values-it/strings.xml
+++ b/src/keepass2android/Resources/values-it/strings.xml
@@ -87,7 +87,11 @@
Abilita lo Sblocco totale con Impronta
Abilita lo sblocco con Impronta per QuickUnlock
Tocca il sensore per sbloccare il database
+ Sblocco con impronta fallito. La chiave di decrittazione è stata invalidata dal sistema. Di solito accade quando viene registrata una nuova impronta o le impostazioni di sicurezza sono state cambiate.
+ Lo sblocco del database è fallito: chiave composita non valida. Lo sblocco con impronta è stato disabilitato perché sembra che la chiave principale non sia più valida.
Per favore riattiva lo Sblocco con Impronta per la nuova password principale.
+ Sblocca il database con la tua password e abilita di nuovo lo sblocco con Impronta nelle impostazioni del database.
+ Impossibile inizializzare il sensore di impronte.
Questo memorizzerà la password principale su questo dispositivo, cifrata con il Keystore Android e protetta tramite autenticazione con impronta digitale. Permette di sbloccare il database solo con l\'impronta digitale.
Permette di utilizzare l\'autenticazione tramite impronta digitale anziché il codice di QuickUnlock. Non necessita di memorizzare alcuna informazione relativa alla tua password principale.
@@ -203,6 +207,7 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
Ricorda la posizione dei file chiave
Salva il file chiave
Elimina
+ Modifica
Rijndael (AES)
Radice
Funzione di derivazione chiave
@@ -266,6 +271,7 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
Il file da importare verrà selezionato nel passo successivo.
Abilita QuickUnlock
Inserisci gli ultimi %1$d caratteri della tua password:
+ Inserisci il codice QuickUnlock:
QuickUnlock!
Chiudi il database
Abilita QuickUnlock come impostazione predefinita
@@ -278,6 +284,8 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
QuickUnlock necessita di una notifica per funzionare correttamente. Seleziona questa opzione per visualizzare una notifica senza icona.
Lunghezza della chiave QuickUnlock
Numero massimo di caratteri utilizzati come QuickUnlock password.
+ Nascondi la lunghezza di QuickUnlock
+ Se abilitata, la lunghezza della password non viene visualizzata sullo schermo di QuickUnlock.
QuickUnlock fallito: password errata!
Cartella per gli allegati
Cartella dove vengono salvati i file allegati.
@@ -310,6 +318,8 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
Cancella la password principale inserita quando cambi schermata senza aver sbloccato il database.
Blocca quando lasci l\'app
Blocca il database quando si lascia l\'app premendo il tasto \"indietro\".
+ Attivare il campo di ricerca all\'avvio
+ Attiva il campo di ricerca nella vista gruppo, dopo lo sblocco o durante la ricerca di una voce
Nascondi l\'opzione della donazione
Questa impostazione è per i donatori. E\' disponibile solo dopo aver usato Keepass2Android per un po\'.
Senza donazioni, quest\'app non potrebbe esistere né venire continuamente migliorata! Se non hai ancora donato, puoi fare una donazione ora.
@@ -317,6 +327,10 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
Non ti darò un centesimo oppure ho già donato. Non chiedere una donazione, nemmeno al compleanno dell\'autore.
Cache del database
Mantieni una copia dei database remoti nella cartella della cache dell\'applicazione, in modo da poterli usare anche offline.
+ Backup locali
+ Creare una copia di backup locale dopo aver caricato correttamente un database.
+ Aggiornamento del backup locale...
+ Backup locale di %1$s
Certificati SSL
Definisci cosa fare quando la convalida del certificato fallisce. Nota: puoi installare i certificati sul dispositivo se la validazione fallisce!
Svuotare la cache?
@@ -330,6 +344,7 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
Notifiche separate
Mostra notifiche separate per la copia di nome utente e password nella clipboard e per l\'attivazione della tastiera.
Servizio Accessibilità per riempimento automatico
+ Servizio di Compilazione automatica
Notifica della tastiera KP2A
Rendi la voce selezionata accessibile tramite la tastiera KP2A (raccomandato).
Cambia tastiera
@@ -344,6 +359,10 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
Ritorna alla tastiera precedente quando non viene aperta alcuna voce.
Icona di notifica quando sbloccato
Visualizza un\'icona di notifica quando il database è sbloccato.
+ Android 8 ha introdotto un nuovo comportamento per le notifiche. Se vuoi nascondere l\'icona per le notifiche di Keepass2Android, devi configurarlo nelle impostazioni di sistema. Imposta a Minimo l\'importanza della categoria delle notifiche.
+ Apri le impostazioni
+ Non mi importa
+ Il file non è più accessibile da Keepass2Android. O è stato rimosso, o sono state revocate le autorizzazioni di accesso. Si prega di riaprire il file, ad esempio utilizzando Cambia database.
Pre-carica il file del database
Inizia il caricamento in background o il download del database durante l\'immissione della password.
Vuoi sovrascrivere il file esistente usando lo stesso nome?
@@ -490,6 +509,7 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
disabilitato
Cerca plug-in online
Ambiti
+ non abilitato
%1$s richiede le credenziali per %2$s.
%1$s richiede le credenziali. Per favore seleziona una voce.
Abilitato
@@ -517,6 +537,7 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
Sembra che tu abbia aperto il file da un\'app esterna. In questa modalità non è supportata la scrittura. Se vuoi modificare il database, chiudilo e seleziona \"Cambia il database\". Quindi apri il file utilizzando una delle opzioni disponibili, se possibile.
È impostato il flag di sola lettura. Rimuovi il flag vuoi modificare il database.
La scrittura non è possibile a causa delle restrizioni introdotte in Android KitKat. Se vuoi apportare modifiche al database, chiudilo e seleziona \"Cambia il database\". Quindi apri il file utilizzando il Selettore file di sistema.
+ I backup locali non possono essere modificati. È possibile utilizzare \'Impostazioni - Database - Esporta il database...\' per esportare il backup in un\'altra posizione, dalla quale potrai riaprirlo. Sarà quindi nuovamente scrivibile.
Aggiungi icona da file...
Copia del file...
Copia
@@ -551,6 +572,13 @@ Questo memorizzerà la password principale su questo dispositivo, cifrata con il
• assicurati di aver selezionato il tipo di password corretto. Assicurati che coincida con il tipo usato quando hai creato il database.\n
• assicurati di aver selezionato il file del database corretto.
+
+ \n
+ • Suggerimento: se pensi che il tuo file di database possa essere danneggiato, oppure non ricordi la password principale dopo averla modificata, puoi provare con l\'ultima versione di file aperta correttamente facendo clic su \"%1$s\" e selezionando il backup locale.
+
+ \n
+ • Suggerimento: Keepass2Android ha archiviato l\'ultima versione di file aperto correttamente nella memoria interna. È possibile aprirlo facendo clic su \"%1$s\" e selezionando il backup locale.
+
Il file è corrotto.\n
Ecco alcuni suggerimenti che ti potrebbero aiutare a diagnosticare il problema:\n
@@ -558,6 +586,12 @@ Ecco alcuni suggerimenti che ti potrebbero aiutare a diagnosticare il problema:\
• se hai copiato il file tramite USB (MTP-Mode), riprova usando uno strumento come MyPhoneExplorer. MTP, a volte, tronca i file.\n
• se non puoi aprire il file dallo stesso percorso sul tuo PC, è molto probabile che il file sia effettivamente danneggiato. Per favore usa un backup del database. Se credi che Keepass2Android abbia corrotto il file, contatta il supporto.\n
• se puoi ancora aprire il file sul tuo PC, contatta il supporto. Puoi provare a salvarlo con impostazioni differenti (es: non compresso) sul PC e, poi, riprovare ad aprirlo in Keepass2Android.
+ Database sbloccato
+ Notifica dello sblocco del database
+ QuickUnlock
+ Notifica del blocco del database con QuickUnlock
+ Notifiche della voce
+ Notifica per semplificare l\'accesso alla voce attualmente selezionata.
Keepass2Android: si è verificato un errore.
Si è verificato un errore imprevisto durante l\'esecuzione di Keepass2Android. Ti preghiamo di aiutarci a risolvere il problema acconsentendo ad inviare le segnalazioni d\'errore.
Le segnalazioni di errore non conterranno mai alcun contenuto del database o la password principale. È possibile disattivarle nelle impostazioni dell\'applicazione.
@@ -566,6 +600,31 @@ Ecco alcuni suggerimenti che ti potrebbero aiutare a diagnosticare il problema:\
Chiedi dopo un errore
Segnalazione errori
Visualizza la Soft-Keyboard per inserire la password quando la scansione dell\'impronta è attiva.
+
+Versione 1.05\n
+ * Utilizzo dei canali di notifica per Android 8, permettendo la configurazione tramite le impostazioni di sistema\n
+ * Visualizza icona della voce nelle notifiche\n
+ * Utilizzo delle Icone Adattive in Android 8, utilizzo icona rotonda in Android 7\n
+ * Possibilità di attivare la ricerca su sblocco (vedi impostazioni)\n
+ * Cambiato il modo in cui i file vengono scritti in Storage Access Framework, correzioni di problemi con l\'aggiornamento di file su Google Drive aperto tramite il gestore file di sistema\n
+ * Aggiunti alcuni testi informativi per evitare alcune incomprensioni comuni \n
+ * Creazione di backup locali dei database aperti correttamente, per ridurre il rischio di perdita dati\n
+ * Aggiornato JSch per supportare le cifrature SSH più recenti\n
+ * Possibilità di modificare le impostazioni di connessione, ad esempio quando cambia la password WebDav\n
+ * Aggiunto il supporto per la modalità password statica di Yubikey Neo\n
+ * Possibilità di disabilitare i suggerimenti di Autofill\n
+ * Risolta la perdita di dati in logcat\n
+ * Correzione errori\n
+
+
+ Versione 1.04b\n
+ * Evita il crash quando l\'utente tenta di abilitare Autofill su dispositivi Huawei.\n
+
+
+ Versione 1.04\n
+ * Aggiunto il Servizio di compilazione automatica per Android 8.0 e successivi.\n
+ * Aggiornate librerie, strumenti di compilazione e versione target SDK.\n
+
Versione 1.03\n
* Rimosso il servizio di Accessibilità per il riempimento automatico come richiesto da Google. Vedi le impostazioni di inserimento password per trovare un plugin con le stesse funzionalità precedenti.\n
@@ -860,4 +919,20 @@ Prima release pubblica
Assicurati che questo funzioni sul tuo sistema, in caso contrario prendi in considerazione l\'utilizzo della tastiera integrata.
Descrizione fornita dal plugin:
+ Keepass2Android supporta la funzionalità Compilazione Automatica di Android, ma sembra che tu non l\'abbia ancora attivata.
+ Abilita Compilazione Automatica
+ Spiacente, sembra che il tuo dispositivo non supporti l\'apertura delle impostazioni dall\'applicazione. Si prega di modificare manualmente le impostazioni di sistema per abilitare il servizio Autofill.
+ Mostra aiuto per Compilazione Automatica
+ Compila con Keepass2Android
+ Non è possibile associare il dominio web %1$s con l\'app %2$s
+ Ho capito
+ Non mostrare più
+ Ricordi la tua password principale?
+ Nota che senza la password principale non sarai in grado di aprire il database. Non c\'è nessun modo di \"ripristinare\" la password principale.
+ Nota inoltre che lo sblocco mediante impronte digitali funziona memorizzando la tua password principale nella memoria sicura di Android. Questa memoria può essere eliminata da Android in qualsiasi momento, ad esempio se aggiungi una nuova impronta nelle impostazioni del sistema. Quindi non fare affidamento sulla tua impronta digitale, ma ricordati la password principale, per favore!
+ Esiste un backup del tuo database?
+ Keepass2Android memorizza le password in un file in una posizione di tua scelta. Sei sicuro di poter accedere a questo file anche quando il telefono viene perso o rubato, o quando il file viene distrutto o cancellato? Assicurati di avere sempre un backup aggiornato in un luogo sicuro!
+ Per creare un backup ora, vai a %1$s > %2$s > %3$s.
+ Sei preparato per i casi d\'emergenza?
+ Hai mai pensato cosa succederebbe se tu non fosti più in grado di accedere al database delle tue password? Nel caso tu avessi un incidente? È buona norma passare la password principale a qualche persona di fiducia per casi di emergenza. Altrimenti nessuno potrà accedere alle tue password.
diff --git a/src/keepass2android/Resources/values-iw/strings.xml b/src/keepass2android/Resources/values-iw/strings.xml
index 59366065..7517b0fb 100644
--- a/src/keepass2android/Resources/values-iw/strings.xml
+++ b/src/keepass2android/Resources/values-iw/strings.xml
@@ -4,7 +4,16 @@
משוב
עמוד הבית
+ Keepass2Android ×”×•× ×ž× ×”×œ סיסמ×ות המ×פשר לקרו×/לכתוב מסדי × ×ª×•× ×™× ×©×œ KeePass2 ב×× ×“×¨×•×יד.
+ ממשק המשתמש מבוסס על ×פליקציית KeepassDroid של המפתח ברי×ן פלין. הקוד עבור פעולות על מסד ×”× ×ª×•× ×™× ×ž×‘×•×¡×¡ על KeePass של המפתח ×“×•×ž×™× ×™×§ ריישל. הבוט של ×× ×“×¨×•×יד × ×•×¦×¨ בהת×× ×œ×ª×ž×•× ×•×ª ×©× ×•×¦×¨×• ופורסמו על-ידי גוגל ×•× ×¢×©×” בו שימוש בהת×× ×œ×ª× ××™× ×”×ž×ª×•××¨×™× ×‘×¨×™×©×™×•×Ÿ CC 3.0.
+ תמיכה ב-SFTP ממומשת על-ידי שימוש בספריית JSch ×שר × ×•×¦×¨×” על-ידי JCraft בע\"מ, תחת רישיון BSD.
+ ×ייקון הפטיש × ×•×¦×¨ ×¢\"×™ ×’\'ון קזרטה מפרוייקט Noun. ×ייקון ×”×¤×™× ×’×•×•×™×Ÿ × ×•×¦×¨ ×¢\"×™ ×דרי×× ×• ×מריק מפרוייקט Noun. ×ייקון ×”× ×•×¦×” × ×•×¦×¨ ×¢\"×™ ×’\'ון טסטה מפרוייקט Noun. ×ייקון התפוח × ×•×¦×¨ ×¢\"×™ ×ווה רוול מפרוייקט Noun. ×ייקון ×”×ª×ž×•× ×” × ×œ×§×— מהכתובת https://icons8.com/icon/5570/Picture.
+ ×ישור
+ ביטול
+ הוספת רשומה
ערוך רשומה
+ יצירת רשומה עבור כתובת URL
+ הוספת קבוצה
הוסף קבוצה
ערוך קבוצה
×לגורית×
@@ -15,4 +24,223 @@
KP2A במצב ×œ× ×ž×§×•×•×Ÿ
פג תוקפו של הישו×
פרק זמן ×œ×¤× ×™ × ×¢×™×œ×ª מסד ×”× ×ª×•× ×™× ×›×שר ×”×™×™×©×•× ××™× ×• פעיל.
+ עצירת תהליך היישו×
+ לחצן הסגירה
+ הצגת כפתור במסך הסיסמ×ות לצורך עצירת ×”×™×™×©×•× (עבור ×ž×©×ª×ž×©×™× ×¤×¨× ×•×ידי×)
+ ×פליקציה
+ הגדרות היישו×
+ הצגת ×©× ×”×§×‘×•×¦×” בתוצ×ות החיפוש
+ הצגת ×©× ×”×§×‘×•×¦×” מתחת לכותרות הרשומות בתוצ×ות החיפוש. שימושי במקרה בו קיימות מספר רשומות בעלות ×©× ×–×”×”.
+ הקבוצה המוצגת ×”×™× ×›×¢×ª: %1$s
+ הצגת ×©× ×”×§×‘×•×¦×” במסך פרטי הרשומה
+ שגי××”! Keepass2Android ×œ× ×™×›×•×œ לטפל בפקודת ×”-URI ×©× ×©×œ×—×” %1$s. ×× × ×¦×¨×• קשר ×¢× ×ž×¤×ª×— ×”×פליקציה!
+ רשומה בודדת
+ %1$d רשומות
+ ערכת סמלי×
+ ×ž×¦× ×¢×•×“...
+ ×בטחה
+ תצוגה
+ גישה לסיסמה עבור רשומה
+ QuickUnlock פתיחה מהירה
+ טיפול בקבצי×
+ מקלדת
+ ×™×™×¦×•× ×ž×¡×“ ×”× ×ª×•× ×™×...
+ פתיחה ב×מצעות טביעת ×צבע
+ ×™×™×‘×•× ×ž×¡×“ ×”× ×ª×•× ×™× ×œ×ª×™×§×™×” ×”×¤× ×™×ž×™×ª
+ ×™×™×‘×•× ×§×•×‘×¥ המפתח לתיקיה ×”×¤× ×™×ž×™×ª
+ החלפת מקלדות
+ זמין עבור ×§×‘×¦×™× ×ž×§×•×ž×™×™× ×‘×œ×‘×“.
+ הקובץ מ×וחסן בתיקיה ×¤× ×™×ž×™×ª.
+ קובץ מסד ×”× ×ª×•× ×™× ×”×•×¢×ª×§ לתיקיה ×”×¤× ×™×ž×™×ª. הקש ×ישור לפתיחתו ×ž×”×ž×™×§×•× ×”×—×“×©. הערה: ×œ× ×œ×©×›×•×— ×œ×™×™×¦× ×ת מסד ×”× ×ª×•× ×™× ×‘×ופן תדיר ×œ×ž×§×•× ×חסון בטוח!
+ קובץ המפתח הועתק לתיקיה ×¤× ×™×ž×™×ª. ×× × ×•×•×“×ו ×›×™ ×‘×¨×©×•×ª×›× ×¢×•×ª×§ שלו ×‘×ž×™×§×•× ×‘×˜×•×— × ×•×¡×£ ×œ×¤× ×™ מחיקתו ממיקומו ×”× ×•×›×—×™!
+ ×œ× × ×™×ª×Ÿ להשתמש בתיקיה ×¤× ×™×ž×™×ª ×›×שר ×ž×™×§×•× ×§×•×‘×¥ המפתח ××™× ×• × ×©×ž×¨. ×× × ×©× ×• ×ת הגדרות ×”×בטחה.
+ פתיחה
+ פתיחת מסד × ×ª×•× ×™×
+ סוגריי×
+ ביטול
+ לוח ההעתקה × ×§×™.
+ תוקף של לוח ההעתקה
+ משך הזמן ל×חר העתקת ×©× ×ž×©×ª×ž×© ×ו ×¡×™×¡×ž× ×•×¢×“ ×œ× ×™×§×•×™ ×וטומטי של לוח ההעתקה
+ בחר כדי להעתיק ×ת ×©× ×”×ž×©×ª×ž×© ללוח ההעתקה
+ בחר כדי להעתיק ×ת ×”×¡×™×¡×ž× ×œ×œ×•×— ההעתקה
+ רשומה ×–×ž×™× ×” דרך מקלדת KP2A
+ ×–×ž×™× ×”
+ ×œ× × ×™×ª×Ÿ לפתוח תפריט לבחירת מקלדת. יש להפעיל ×ת המקלדת ×™×“× ×™×ª.
+ × × ×œ×פשר ×ת מקלדת Keepass2Android בהגדרות המערכת שלך.
+ יוצר מפתח למסד ×”× ×ª×•× ×™×…
+ קבוצה × ×•×›×—×™×ª
+ קבוצה × ×•×›×—×™×ª: שורש
+ מסד × ×ª×•× ×™×
+ ספרות
+ Keepass2Android מגיעה ×œ×œ× ×›×œ ×חריות ×‘× ×•×’×¢ לשימוש; זוהי ×ª×•×›× ×” ×—×™× ×ž×™×ª, ×•×”× ×›× ×ž×•×–×ž× ×™× ×œ×”×¤×™×¦×” במסגרת ×ª× ××™ ומגבלות GPL מגרסה 2 ו×ילך.
+ \u2026
+ העתק ללוח
+ סרוק ×ת טביעת ×”×צבע שלך
+ ×שר ×ת טביעת ×”×צבע שלך כדי להמשיך
+ ×œ× × ×™×ª×Ÿ להגדיר פתיחה ב×מצעות טביעת ×צבע:
+ טביעת ×”×צבע ×œ× ×–×•×”×ª×”. × ×¡×” ×©× ×™×ª
+ טביעת ×”×צבע זוהתה
+ פתיחה ב×מצעות טביעת ×צבע דורשת גרסת ×× ×“×¨×•×יד 6.0 ומעלה.
+ ×œ× × ×™×ª×Ÿ לזהות סורק טביעות ×צבע במכשירך.
+ ×œ× ×§×™×™×ž×•×ª טביעות ×צבע ×©× ×¡×¨×§×• במכשיר ×–×”. × × ×œ×¨×©×•× ×ת טביעות ×”×צבע שלך דרך הגדרות ×”×בטחה של ×× ×“×¨×•×יד תחילה.
+ × ×˜×¨×•×œ פתיחה ב×מצעות טביעת ×צבע
+ הפעלת פתיחה מל××” ב×מצעות טביעת ×צבע
+ הפעלת פתיחה ב×מצעות טביעת ×צבע כתחליף ל-QuickUnlock (פתיחה מהירה) בלבד
+ סרוק ×ת טביעת ×”×צבע על החיישן לפתיחת מסד ×”× ×ª×•× ×™×
+ פתיחה ב×מצעות טביעת ×צבע × ×›×©×œ×”. מפתח ×”×”×¦×¤× ×” שלך הוגדר ×›×œ× ×ª×§×£ על-ידי מערכת ×× ×“×¨×•×יד. לרוב המצב × ×’×¨× ×œ×חר ×¨×™×©×•× ×©×œ טביעת ×צבע חדשה במכשיר ×ו ×©×™× ×•×™ בהגדרות ×”×בטחה.
+ פתיחת מסד ×”× ×ª×•× ×™× × ×›×©×œ×”: מפתח ×”×”×¦×¤× ×” ××™× ×• חוקי. פתיחה ב×מצעות טביעת ×צבע ×ž× ×•×˜×¨×œ×ª. ככל ×”× ×¨××” הסיסמה הר×שית של מסד ×”× ×ª×•× ×™× ××™× ×” תקפה.
+ × × ×œ×”×¤×¢×™×œ מחדש ×ת ×פשרות פתיחת מסד ×”× ×ª×•× ×™× ×‘×מצעות טביעת ×צבע עבור הסיסמה הר×שית החדשה.
+ × × ×œ×¤×ª×•×— ×ת מסד ×”× ×ª×•× ×™× ×‘×מצעות הסיסמה שלך ו××– להפעיל מחדש ×ת ×פשרות פתיחת מסד ×”× ×ª×•× ×™× ×‘×מצעות טביעת ×צבע דרך הגדרות מסד ×”× ×ª×•× ×™×.
+ ×œ× × ×™×ª×Ÿ להפעיל ×ת חיישן טביעות ×”×צבע.
+ הסיסמה הר×שית של מסד ×”× ×ª×•× ×™× ×ª×וחסן במכשיר ×–×”, ×ž×•×¦×¤× ×ª על-ידי מפתח ×”×”×¦×¤× ×” של ×× ×“×¨×•×יד ×•×ž×•×’× ×ª ב×מצעות טביעת ×צבע. מ×פשר פתיחה של מסד ×”× ×ª×•× ×™× ×‘×מצעות שימוש בטביעת ×צבע בלבד.
+ מ×פשר להשתמש בטביעת ×צבע כתחליף לקוד QuickUnlock (פתיחה מהירה). ×פשרות זו ×œ× ×ž××—×¡× ×ª במכשירך כל מידע הקשור לסיסמה הר×שית של מסד ×”× ×ª×•× ×™×.
+ הזן ×ת ×©× ×”×§×•×‘×¥ של מסד ×”× ×ª×•× ×™×
+ גישה ××—×¨×•× ×”
+ ביטול
+ הערות
+ תגי×
+ דריסת URL
+ ×ישור סיסמה
+ × ×•×¦×¨
+ ת×ריך תפוגה
+ ×©× ×§×‘×•×¦×”
+ קובץ מפתח (××•×¤×¦×™×•× ×œ×™)
+ קובץ מפתח
+ × ×¢×¨×š ל××—×¨×•× ×”
+ סיסמה
+ שמור
+ ש×
+ ×œ×™× ×§
+ ×©× ×ž×©×ª×ž×©
+ שדות מחרוזת × ×•×¡×¤×™×
+ ×§×‘×¦×™× ×ž×¦×•×¨×¤×™×
+ Keepass2Android ×œ× ×™×›×•×œ לטפל ב-URI שהתקבל.
+ שגי××” ביצירת קבוצה.
+ ×œ× ×”×™×™×ª×” ×פשרות ליצור ×ת תיקיית ×”×ב.
+ קובץ ×–×” כבר ×§×™×™×.
+ ×¤×¢× ×•×— הגדרות מסד ×”× ×ª×•× ×™× × ×›×©×œ.
+ הפעלת הקישור × ×›×©×œ×”.
+ יש צורך ×‘×©× ×§×•×‘×¥.
+ ×œ× ×”×™×™×ª×” ×פשרות ליצור ×ת הקובץ
+ מסד × ×ª×•× ×™× ×œ× ×ª×§×™×Ÿ.
+ × ×ª×™×‘ ×œ× ×ª×§×™×Ÿ.
+ יש צורך בש×.
+ × ×“×¨×©×™× ×¡×™×¡×ž×” ×ו קובץ מפתח.
+ יש לבחור לפחות בסוג ×חד של יוצר סיסמ×ות
+ הסיסמ×ות ××™× ×Ÿ תו×מות.
+ מספר ×”×¡×™×‘×•×‘×™× ×—×™×™×‘ להיות מספר.
+ פרמטר חייב להיות מספר.
+ × ×“×¨×©×ª כותרת.
+ הזן מספר ×©×œ× ×•×—×™×•×‘×™ בשדה ×”×ורך
+ קובץ ×œ× × ×ž×¦×.
+ סייר קבצי×
+ צור סיסמה
+ קבוצה
+ הערות
+ ×ישור סיסמה
+ סיסמה ×©× ×•×¦×¨×”
+ ×©× ×”×§×‘×•×¦×”
+ קובץ מפתח
+ ×ורך
+ סיסמ×
+ סיסמ×
+ ש×
+ כתובת url
+ כתובת Url עקיפה
+ תג1, תג2
+ ×©× ×ž×©×ª×ž×©
+ ×¡×™×¡×ž× ×ו קובץ מפתח ×œ× ×—×•×§×™×™×.
+ ××œ×’×•×¨×™×ª× ×œ× ×ª×§×™×Ÿ.
+ פורמט מסד ×”× ×ª×•× ×™× ×œ× ×ž×–×•×”×”.
+ קובץ המפתח ×œ× ×§×™×™×.
+ ×œ× × ×‘×—×¨ קובץ מפתח.
+ קובץ המפתח ריק.
+ ×ורך
+ גודל רשימת הקבוצות
+ גודל הטקסט ברשימת הקבוצות
+ טוען מסד × ×ª×•× ×™×…
+ ×ותיות ×§×˜× ×•×ª ב×× ×’×œ×™×ª
+ *****
+ הסתרת סיסמ×
+ הסתר סיסמ×ות כברירת מחדל
+ ×ודות
+ ×©×™× ×•×™ המפתח הר×שי
+ העתק סיסמה
+ העתק משתמש
+ יצירה
+ הגדרות
+ הגדרות מסד × ×ª×•× ×™×
+ מחיקה
+ יצירת עותק
+ העברה לקבוצה ×חרת
+ העברה
+ × ×™×•×•×˜ ×ל הקבוצה המכילה
+ תרמו בירה למפתח...
+ עריכה
+ הסתרה של הסיסמה
+ × ×¢×™×œ×ª מסד ×”× ×ª×•× ×™×
+ פתיחה
+ סגירה
+ ×©×™× ×•×™ ש×
+ חיפוש
+ חיפוש מתקד×
+ מעבר לכתובת URL
+ החלפת מסד × ×ª×•× ×™×
+ הצגת כל השדות
+ ×ž×™× ×•×¡
+ ××£ פע×
+ כן
+ ל×
+ ×œ× ×§×™×™×ž×™× ×¢×¨×›×™× ×‘×ž×¡×“ ×”× ×ª×•× ×™× ×ו בקבוצה ×©× ×‘×—×¨×”.
+ ×œ× × ×ž×¦×ו תוצ×ות לחיפוש
+ תודה לכותבי הקוד שתרמו: %1$s.
+ תודה לעיצוב ×”×¡×ž×œ×™× ×•×”×ž×ž×©×§ על ידי %1$s.
+ תוסף הצופן Twofish עבור Keepass פותח על ידי סקוט ×’×¨×™× ×‘×¨×’ ×•× ×›×œ×œ ב-KP2A.
+ סייר ×”×§×‘×¦×™× ×¤×•×ª×— על ידי Hai Bison
+ מקלדת KP2A מבוססת על מקלדת Gingerbread של פרויקט קוד פתוח ב×× ×“×¨×•×יד AOSP ומשתמשת בקוד ×ž× ×”×œ ×”×ª×•×¡×¤×™× ×©×œ המקלדת Hacker\'s Keyboard שפותח על ידי Klaus Weidner.
+ שימו לב
+ תורמי×
+ ביטוי רגולרי
+ תפוגת TAN בעת השימוש
+ סימון רשומות TAN (קוד חד פעמי) כמשומשות ל×חר השימוש בהן
+ הצגת ×©× ×”×ž×©×ª×ž×© ברשימה
+ הצגת ערכי ×©× ×”×ž×©×ª×ž×© מתחת לכותרות הרשומות. שימושי עבור ריבוי ×—×©×‘×•× ×•×ª ×ו ×§×•×“×™× ×—×“ פעמיי×.
+ זכור מסדי × ×ª×•× ×™×
+ זכור ×ת מסדי ×”× ×ª×•× ×™× ×©× ×¤×ª×—×• ל××—×¨×•× ×” והצג ××•×ª× ×‘×ž×¡×š פתיחת מסד ×”× ×ª×•× ×™×.
+ Keepass2Android: חיפוש סיסמ×
+ ×ל תציג רשומות שפג תוקפן
+ ×פשרויות
+ תלוי רישיות
+ פתח קובץ...
+ צור מסד × ×ª×•× ×™× ×—×“×©...
+ פתיחת כתובת ××™× ×˜×¨× ×˜...
+ ×™×™×‘×•× ×§×•×‘×¥ למסד × ×ª×•× ×™× ×—×“×©...
+ יש לציין ×ת כתובת URL המל××” כולל פרוטוקול כמו http://.
+ קובץ ×œ×™×™×‘×•× ×™×™×‘×—×¨ בשלב הב×.
+ הפעלת QuickUnlock (פתיחה מהירה)
+ הזן ×ת %1$d ×”×ª×•×•×™× ×”××—×¨×•× ×™× ×©×œ סיסמתך:
+ QuickUnlock!
+ סגור מסד × ×ª×•× ×™×
+ ל×פשר ×ת QuickUnlock כברירת מחדל
+ מגדיר ×”×× ×פשרות הפתיחה המהירה מ×ופשרת כברירת מחדל.
+ ×”×’× ×” בעת הצגת מסד × ×ª×•× ×™×
+ ×× ×ž×ופשר, ×œ× × ×™×ª×Ÿ ×œ×¦×œ× ×ת המסך וכן ×œ× ×ž×•×¤×™×¢×” ×ª×ž×•× ×” ברשימת ×”×פליקציות ×”××—×¨×•× ×•×ª.
+ הסתרת סמל QuickUnlock
+ ×œ×¦×¢×¨× ×• ×פשרות הפתיחה המהירה QuickUnlock ×œ× ×ª×¢×‘×•×“ ×œ×œ× ×”×¦×’×” של סמל × ×•×˜×™×¤×™×§×¦×™×”. בחירה ב×פשרות זו תשתמש בסמל שקוף.
+ הסתרת סמל QuickUnlock
+ ×פשרות הפתיחה המהירה QuickUnlock מחייבת הצגה של × ×•×˜×™×¤×™×§×¦×™×”. בחירה ב×פשרות זו תשתמש ×‘× ×•×˜×™×¤×™×§×¦×™×” ×œ×œ× ×¡×ž×œ.
+ ×ורך המפתח של QuickUnlock
+ מספר ×”×ª×•×•×™× ×”×ž×§×¡×™×ž×œ×™ שישמש כסיסמת הפתיחה המהירה QuickUnlock.
+ פתיחה מהירה × ×›×©×œ×”: ×¡×™×¡×ž× ×©×’×•×™×”!
+ תיקיה ×œ×§×‘×¦×™× ×ž×¦×•×¨×¤×™×
+ תיקיה בה יישמרו ×§×‘×¦×™× ×ž×¦×•×¨×¤×™×.
+ שמירת קובץ מצורף
+ בחרו היכן לשמור ×ת הקובץ המצורף.
+ שמירה בכרטיס הזיכרון
+ שמירה בזיכרון ×–×ž× ×™ ופתיחת הקובץ
+ הצגה במציג ×”×ª×ž×•× ×•×ª ×”×¤× ×™×ž×™
+ קובץ × ×©×ž×¨ ב-%1$s.
+ ×œ× ×”×™×™×ª×” ×פשרות לשמור ×ת הקובץ ב-%1$s.
+ שמירת טקסט החיפוש?
+ תרצו לשמור ×ת הטקסט \"%1$s\" ברשומה ×”× ×‘×—×¨×ª על ×ž× ×ª ×œ×ž×¦×•× ×ת הרשומה ×וטומטית ×‘×¤×¢× ×”×‘××”?
diff --git a/src/keepass2android/Resources/values-nb/strings.xml b/src/keepass2android/Resources/values-nb/strings.xml
index 9d81f440..ef8ca441 100644
--- a/src/keepass2android/Resources/values-nb/strings.xml
+++ b/src/keepass2android/Resources/values-nb/strings.xml
@@ -87,7 +87,13 @@
Aktiver fingeravtrykk opplåsning
Slå på fingeravtrykk opplåsning i QuickUnlock
Trykk på sensoren for å låse opp databasen
+ Opplåsing med fingeravtrykk mislyktes. Dekrypteringsnøkkelen har blitt trukket tilbake av Android OS. Dette skjer vanligvis dersom et nytt fingeravtrykk har blitt registrert eller sikkerhetsinnstillingene har blitt endret.
+ Kunne ikke låse opp databasen: Ugyldig sammensatt nøkkel. Opplåsing med fingeravtrykk har blitt deaktivert fordi det lagrede hovedpassordet tilsynelatende ikke er gyldig lenger.
Vennligst aktiver fingeravtrykk opplåsning for det nye master passordet.
+ Vennligst benytt passord for å låse opp og deretter slå på opplåsing med fingeravtrykk igjen i databaseinnstillingene.
+ Kunne ikke initialisere fingeravtrykksensoren.
+ Dette vil lagre hovedpassordet ditt på enheten, kryptert med Android nøkkelring og beskyttet av fingeravtrykksautentisering. Dette gjør det mulig å låse opp databasen din ved bruk av ditt fingeravtrykk.
+ Tillater opplåsing ved hjelp av fingeravtrykk i stedet for QuickUnlock. Lagrer ingen informasjon relatert til hovedpassordet ditt.
Angi filnavnet for databasen
Brukt
Avbryt
@@ -123,6 +129,7 @@
Du må velge minst én passordlagingstype
Passordene samsvarer ikke.
Omganger må være et tall.
+ Parameter må være et tall.
Trenger en tittel.
Bruk et positivt heltall i lengde-feltet
Finner ikke filen.
@@ -199,11 +206,15 @@
Husker plasseringen av nøkkelfilene
Lagre nøkkelfilen
Fjern
+ Rediger
Rijndael (AES)
Rot
+ Nøkkelavledningsfunksjon
Krypteringsomganger
Flere krypteringsomganger gir bedre beskyttelse mot rå-makt-angrep, men kan også gjøre lasting og lagring mye tregere.
omganger
+ Minne for Argon 2 (byte)
+ Parallellitet for Argon 2
Databasenavn
Standard brukernavn for nye oppføringer
Lagrer databasen…
@@ -259,6 +270,7 @@
Velg fil å importere i det neste steget.
Aktiver QuickUnlock
Angi de siste %1$d tegnene i passordet:
+ Angi QuickUnlock-kode:
QuickUnlock!
Lukk database
Aktiver QuickUnlock som standard
@@ -271,6 +283,8 @@
QuickUnlock trenger et varsel for å fungere ordentlig. Velg dette alternativet for å vise meldingen uten ikonet.
Lengde på QuickUnlock-nøkkel
Maksimalt antall tegn som brukes som QuickUnlock-passord.
+ Skjul QuickUnlock-lengde
+ Dersom aktivert, vil ikke lengden på QuickUnlock-koden vises på skjermbildet for QuickUnlock.
QuickUnlock mislyktes: feil passord.
Filvedleggsmappe
Mappen der filvedlegg lagres.
@@ -278,6 +292,7 @@
Velg hvor du vil lagre vedlegget.
Lagre på SD-kortet
Lagre til hurtiglager og åpne
+ Vis med internt bildeprogram
Lagret filen til %1$s.
Klarte ikke lagre vedlegg til %1$s.
Huske søketekst?
@@ -302,12 +317,21 @@
Fjern det innskrevne hovedpassordet når du forlater skjermen uten å låse opp databasen.
Lås når du forlater appen
Lås databasen når du forlater appen ved å trykke på tilbake-knappen.
+ Aktiver søkefelt ved oppstart
+ Aktiverer søkefeltet i gruppevisningen etter opplåsing eller når du søker etter en oppføring
Skjul donasjonsknapp
Denne innstillingen er for donorer. Den er kun tilgjengelig etter å ha brukt Keepass2Android en stund.
Uten donasjoner ville ikke denne appen eksistert, og den ville ikke fått stadige forbedringer. Hvis du ikke har donert enda, vurder å gjøre det nå.
+ Aldri spør etter donasjon
+ Jeg vil ikke gi deg en krone eller jeg har allerede donert. Ikke spør etter donasjon, ikke en gang på forfatterens bursdag.
Hurtiglagring av databaser
Behold en kopi av eksterne databasefiler i hurtiglageret. Dette lar deg bruke eksterne databaser uten nett.
+ Lokale sikkerhetskopier
+ Opprette en lokal sikkerhetskopi etter fullført innlasting av en database.
+ Oppdaterer lokal sikkerhetskopi...
+ Lokal sikkerhetskopi av %1$s
SSL-sertifikater
+ Definere oppførselen når sertifikatbekreftelse misslykkes. Merk: Du kan installere sertifikater på din enhet dersom bekreftelse feiler!
Tømme hurtiglager?
Dette sletter alle hurtiglagrede databasefiler. Eventuelle usynkroniserte endringer du har foretatt mens du var frakoblet går tapt. Fortsette?
Se etter endringer
@@ -318,7 +342,28 @@
Gjør brukernavn og passord tilgjengelige fra varslingsfeltet og utklippstavlen. Vokt deg for passordsniffere!
Separate varsler
Vis separate varsler for å kopiere brukernavn og passord til utklippstavlen og for å vise tastaturet.
+ Tilgjengelighetstjeneste for AutoFill
+ Tjeneste for AutoFill
+ Varsel for KP2A-tastatur
+ Gjør hele oppføringen tilgjengelig gjennom KP2A-tastaturet (anbefales).
Bytt tastatur
+ Åpne tastatur dialog når en oppføring er tilgjengelig gjennom KP2A tastaturet etter søk fra nettleseren.
+ Automatisk bytte av tastatur
+ Bytt automatisk til KP2A-tastatur når oppføringen åpnes. Krever korrekt oppsatt KeyboardSwap Plugin eller en rootet enhet samt en Secure Settings-app med System+.
+ Installer KeyboardSwap Plugin
+ Dette programtillegget tillater bytte til KP2A-tastatur uten root. Krever ADB.
+ Automatisk bytte bare etter søk
+ Bare bytte automatisk til KP2A-tastatur etter å ha brukt funksjonen Del URL (men ikke når du åpner en oppføring på en annen måte)
+ Bytt tilbake tastatur
+ Bytt tilbake til forrige tastatur når ingen oppføring åpnes.
+ Varselikon mens ulåst
+ Vis et varselikon mens databasen er ulåst.
+ Android 8 har introdusert ny oppførsel for varsler. Dersom du ønsker å skjule ikonet for Keepass2Androids varsel, vennligst sett opp dette i systeminnstillingene. Sett viktigheten av varselet til kategori Minimum.
+ Ã…pne innstillinger
+ Jeg bryr meg ikke
+ Filen er ikke lenger tilgjengelig for Keepass2Android. Den har enten blitt fjernet eller tilgangen er opphevet. Vennligst gjenåpne filen, f.eks ved å velge Endre database.
+ Last inn databasefil på forhånd
+ Begynn å hente eller laste ned databasefilen mens inntasting av passordet pågår.
Overskrive eksisterende binærfil med samme navn?
Overskrive eksisterende binærfil?
Overskriv
@@ -327,6 +372,10 @@
Papirkurv
Slette denne oppføringen permanent? Trykk Nei for å flytte til papirkurven.
Slette denne gruppen permanent? Trykk Nei for å flytte til papirkurven.
+ Ønsker du å slette de valgte oppføringene permanent? Trykk Nei for å flytte til papirkurven.
+ Ønsker du å slette denne oppføringen permanent?
+ Ønsker du å slette denne gruppen permanent?
+ Ønsker du å slette de valgte oppføringene permanent?
Slette permanent?
Laste inn filen på nytt?
Den åpne filen ble endret av et annet program. Vil du laste den inn på nytt?
@@ -351,6 +400,10 @@
Fletter sammen endringer…
Ja, flett
Nei, overskriv
+ Arbeid frakoblet
+ Arbeid tilkoblet
+ Unngå all nettverkstrafikk ved å benytte en lokal hurtiglagret kopi av filen. Endringer lagres kun i det lokale hurtiglageret og lastes først opp når du bytter tilbake til tilkoblet modus.
+ Arbeider frakoblet.
Synkroniserer hurtiglagret database…
Laster ned ekstern fil…
Laster opp fil…
@@ -365,19 +418,30 @@
Ekstern fil og hurtiglageret er synkronisert.
Oppdaterte lokalt hurtiglagret kopi av %1$s.
Ingen endringer funnet.
+ Oppdaterte hurtiglagret tilleggsfil for engangspassord: Ekstern teller var høyere.
+ Oppdaterte hurtiglagret tilleggsfil for engangspassord: Lokal teller var høyere.
+ Synkroniserer tilleggsfil for engangspassord…
databasefil
+ Tilleggsfil for engangspassord
Feil:
Databasen er korrupt: Duplikate id\'er funnet. (lagret du med Minikeepass?) Vennligst importer på nytt til en ny database med Keepass 2 for PC og velg \'Create new IDs\'.
+ Du kan slå av denne feilmeldingen i Innstillinger/Applikasjonsinnstillinger/Filhåndtering/Sjekk for duplikate UUIDer. Merk at du kan oppleve uventet oppførsel. Det anbefales å reparere databasen.
Synkroniser databasen…
+ Kan ikke flytte gruppe til denne gruppen.
+ I dag er det Oktoberfest! Dersom du liker Keepass2Android: Ville det ikke være en bra dag å kjøpe meg en øl?
10. mai? Det er bursdagen min! Hvis du liker denne appen, hvorfor ikke sende meg bursdagsønsker med en liten bursdagsgave? Dette ville gjort meg veldig glad! :-)
Å nei, du glemte bursdagen min den 10. mai! Hvis du liker denne appen, hvorfor ikke sende meg bursdagsønsker med en liten bursdagsgave? Det er ikke for sent å gjøre meg veldig glad! :-)
Fortell meg mer!
Nei, jeg liker den ikke så mye
+ Angi innloggingsinformasjon for WebDav:
+ URL til mappe eller fil (f.eks. mycloud.me.com/webdav/)
Angi OwnCloud innloggingsinformasjon:
OwnCloud URL (eks: owncloud.me.com)
vert (f.eks. 192.168.0.1)
port
Første katalog (valgfritt):
+ Angi innloggingsinformasjon for SFTP:
+ Angi innloggingsinformasjon for FTP:
Velg lagringstype:
Lokal fil
FÃ¥ fra tredjeparts app
@@ -392,7 +456,13 @@
Google Disk
OneDrive
SFTP (SSH File Transfer)
+ Systemfilvelger
+ Filtilgang initialiseres
Lagringssted for databasen
+ Du kan lagre databasen lokalt på din Android-enhet eller i skyen (gjelder ikke for Offline-versjon). Keepass2Android gjør databasen tilgjengelig til og med når du er frakoblet nett. Siden databasen er trygt kryptert med AES 256-bit kryptering, ingen vil kunne få tilgang til passordene bortsett fra du. Vi anbefaler å velge Dropbox: Den er tilgjengelig på alle dine enheter og sørger for automatisk sikkerhetskopiering av tidligere filversjoner.
+ Velg hvor du vil lagre databasen:
+ Endre plassering
+ Dersom aktivert, vil Keepass2Android kjøre i bakgrunnen selv når databasen er låst. Dette gjør det mulig å låse opp databasen igjen senere bare ved å bruke en kort del av hovedpassordet.
Hovedpassord
Databasen din er kryptert med passordet du angir her. Velg et sterkt passord for å sikre databasen! Tips: Lag en setning eller to og bruk de første bokstavene til ordene som et passord. Inkluder skilletegn.
Velg et hovedpassord for å beskytte databasen:
@@ -401,9 +471,34 @@
Velg hvis du vil bruke en nøkkelfil i tillegg til hovedpassordet:
Bruk nøkkelfil
Feil ved opprettelse av nøkkelfil.
+ Last tilleggsfil for engangspassord…
+ Angi neste engangspassord (OPT). Swipe din Youbikey NEO på baksiden av enheten for å angi via NFC.
OTP %1$d
Fant ingen app som kan håndtere utfordringen. Installer YubiChallenge fra Play Butikk og prøv igjen.
+ Kunne ikke laste tilleggsfil for engangspassord!
+ Vennligst bruk tillegget OtpKeyProv i KeePass 2.x (PC) for å sette opp databasen til bruk av engangspassord!
+ Vennligst velg database først. Engangspassord forkastet av sikkerhetshensyn.
+ Engangspassord forkastet: Alle engangspassordene allerede angitt!
+ Vennligst steng databasen først. Engangspassordet er forkastet.
+ (Ett eller flere engangspassord allerede tilgjengelig)
+ Hemmelig nøkkel for engangspassord (f.eks. 01 23 ab cd…)
+ Feilet under analyse av hemmelig nøkkel for engangspassord!
+ Oppretting av engangspassord misslyktes! Kontroller at du har angitt korrekt engangspassord.
+ Oppdatering av tilleggsfil for engangspassord misslyktes!
+ Lagrer tilleggsfil for engangspassord…
+ Utfordring-respons er feil.
+ Kunne ikke laste tilleggsfil for utfordring!
+ Vennligst bruk tillegget KeyChallenge i KeePass 2.x (PC) for å sette opp databasen til bruk av utfordring-respons!
+ Oppdatering av tilleggsfil for engangspassord misslyktes!
+ TOTP Seed feltnavn
+ Dersom du benytter tillegget \"TrayTotp\" til Keypass 2 uten standard innstillinger, angi feltnavnet til seed-feltet her i samsvar med innstillingen på PCen.
+ TOTP Innstilling feltnavn
+ Angi feltnavnet for innstillingsfeltet til TrayTotp her.
TrayTotp
+ Loggfilen for feilsøking
+ Bruk loggfil
+ Skriv utdata fra app til en lokal loggfil
+ Send feilsøkingslogg...
Laster inn…
Programtillegg
Pakkenavn:
@@ -413,13 +508,21 @@
deaktivert
Finn tillegg på nettet
Omfang
+ ikke aktivert
%1$s ber om legitimasjon for %2$s.
%1$s ber om legitimasjon. Velg en oppføring.
Aktivert
+ Varsel for databasehendelser
Tillegget vil bli varslet når en database åpnes, lukkes eller lagres.
Gjeldende oppføringsdata
Tillegget vil motta alle data om denne databaseoppføringen, og vil kunne tilby handlinger og endre visningen av den.
+ Be om egen legitimasjon
+ Tillegget vil kunne be om legitimasjonen knyttet til sin egen programpakke.
+ Be om legitimasjon
+ Tillegget vil kunne be om legitimasjon for tilsiktede webområder eller programmer.
FÃ¥ flere lagringstyper
+ Advarsel: Bekreftelse av tjenersertifikatet feilet: %1$s. Installer rotsertifikat på enheten din eller sjekk innstillingene!
+ En feil oppsto: Kunne ikke bekrefte tjenersertifikatet! Installer passende rotsertifikat på din enhet eller sjekk innstillingene!
Velg filformat
Keepass2Android ble avsluttet av systemet. Av sikkerhetsmessige årsaker beholdt ikke Keepass2Android den valgte legitimasjon i lageret, så du må åpne databasen på nytt. Merk: dette skjer svært sjelden. Hvis problemet vedvarer, send en melding om det til crocoapps@gmail.com.
Filen er bare midlertidig tilgjengelig for Keepass2Android.
@@ -428,14 +531,190 @@
For å bruke filen må du kopiere den til en annen plassering.
For å redigere filen, må du kopiere den til en annen plassering.
Trykk på OK for å velge en plassering filen skal kopieres til.
+ Databasen er skrivebeskyttet
+ Keepass2Android har åpnet gjeldende database i skrivebeskyttet modus.
+ Det virker som du åpnet filen fra et eksternt program. Denne måten støtter ikke skriving. Dersom du ønsker å gjøre endringer i databasen, lukk databasen og velg Bytt database. Åpne deretter filen fra en av de tilgjengelige alternativene hvis mulig.
+ Flagget for skrivebeskyttelse er satt. Fjern dette flagget dersom du ønsker å gjøre endringer i databasen.
+ Skriving er ikke mulig grunnet restriksjoner introdusert i Android KitKat. Dersom du ønsker å gjøre endringer i databasen, lukk databasen og velg Bytt database. Åpne deretter filen vha. systemets filvelger.
+ Lokale sikkerhetskopier kan ikke endres. Du kan benytte Databaseinnstillinger - Eksporter database for å eksportere denne sikkerhetskopien til en annen plassering. Derfra kan du gjenåpne den, og den vil da være skrivbar igjen.
Legg til ikon fra fil...
Kopierer filen...
+ Kopier
+ Standardoppføring
Maler
+ ID-kort
+ Navn
+ Utstedelsessted
+ Utstedelsesdato
+ E-post
+ E-postadresse
+ Trådløst nett
+ Sikker notis
SSID
+ Nummer
+ CVV
+ PIN
+ Kortholder
+ Kredittkort
+ Medlemskap
Endringslogg
+ Legge til mal?
+ Keepass2Android inneholder oppføringsmaler for e-postkontoer, trådløse nettverkspassord, sikre notater og mer. Ønsker du å legge disse til din database? Dersom du velger Nei, kan du legge dem til senere i databaseinnstillingene.
+ Legg til maler i database
+ Merk! Dette er en forhåndsutgivelse og kan inneholde feil! Hvis du opplever *noe som helst* uventet, vennligst gi meg beskjed (på beta-testergruppen i Google+ eller via e-post).
Fortsett
+ URIen du tastet inn ser ikke ut som et filnavn. Er du sikker på at dette er en gyldig fil?
+ Ugyldig sammensatt nøkkel! Vennligst prøv igjen.
+ Ugyldig sammensatt nøkkel! Vennligst forsøk følgende for å låse opp databasen:\n
+
+ • Kontroller at du har skrevet inn korrekt passord. Benytt øyeikonet for å vise passordet i klartekst.\n
+ • Kontroller at du har valgt korrekt passordtype. Sjekk at denne stemmer overens med typen som ble valgt når databasen ble opprettet.\n
+ • Kontroller at du har valgt korrekt databasefil.
+
+
+\n
+ • Tips: Dersom du mistenker at databasefilen kan ha blitt korrupt eller du ikke husker korrekt hovedpassord etter å ha endret det, kan du forsøke den sist fungerende filversjonen ved å klikke \"%1$s\" og velge den lokale sikkerhetskopien.
+
+\n
+• Tips: Keepass2Android har lagret den sist fungerende filversjonen i internt minne. Du kan åpne den ved å klikke på \"%1$s\" og velge den lokale sikkerhetskopien.
+
+Filen er korrupt. \n
+Her er noen tips som kan hjelpe med å feilsøke problemet:\n
+
+• Dersom du kopierte filen over USB (MTP-modus), vennligst forsøk på nytt med et verktøy som MyPhoneExplorer. MTP kan forkorte filer under enkelte omstendigheter.\n
+• Dersom du ikke får åpnet filen fra den samme posisjonen på PCen, er det svært sannsynlig at den faktisk har blitt korrupt. I så fall, benytt en sikkerhetskopi av databasen. Dersom du antar at det er Keepass2Android som har skyld i dette, vennligst kontakt kundestøtte.\n
+• Dersom du fortsatt er i stand til å åpne filen på din PC, vennligst kontakt kundestøtte. Du kan forsøke å lagre den med andre innstillinger (f.eks. upakket) på PCen også forsøke å åpne den på nytt i Keepass2Android.
+ Ulåst database
+ Varsel om at databasen har blitt låst opp
+ QuickUnlock
+ Varsel om at databasen har blitt låst med QuickUnlock
+ Varsel om oppføring
+ Varsel for å forenkle tilgangen til den valgte oppføringen.
+ Keepass2Android: En feil oppstod.
+ En uventet feil oppstod mens Keepass2Android kjørte. Vennligst hjelp oss å rette denne ved å tillate at appen sender feilrapporter.
+ Feilrapporter vil aldri inneholde noe innhold fra din database eller hovedpassord. Du kan deaktivere dem i applikasjonsinnstillingene.
Aktiver
Deaktiver
+ Spør etter feil
+ Send feilrapporter
+ Vis skjermtastatur for passordinntasting når fingeravtrykkleser er aktiv.
+
+Versjon 1.05\n
+* Benytter varslingskanaler på Android 8, slik at oppsett kan gjøres i systeminnstillingene\n
+* Viser varsel for oppføring\n
+* Benytter Adaptive Ikoner på Android 8, benytter rundt oppstartsikon på Android 7\n
+* Mulig å aktivere søk ved opplåsing (se innstillinger)\n
+* Endrer måten filer blir skrevet til gjennom Storage Access Framework, retter problemer med oppdatering av filer på Google Drive når disse ble åpnet med systemfilvelgeren\n
+* Lagt til noen informasjonstekster for å forhindre vanlige misforståelser\n
+* Oppretter lokale sikkerhetskopier av åpnede databaser for å redusere risiko for datatap\n
+* JSch oppdatert for å støtte nyere SSH-siffer\n
+* Mulig å endre tilkoblingsinnstillinger, f.eks. når WebDav-passordet har blitt byttet\n
+* Lagt til støtte for Yubikey Neos statiske passordmodus\n
+* Mulig å slå av forslag til Autofill-funksjonen\n
+* Fikser datalekkasje til logcat\n
+* Feilrettinger\n
+
+Versjon 1.04b\n
+* Unngå krasj når brukeren velger å benytte Autofill-funksjonen på Huawei-enheter.\n
+
+Versjon 1.04\n
+* Lagt til Autofill-tjeneste for Android 8.0 og senere.\n
+* Oppgradert biblioteker, byggeverktøy og Target SDK-versjon.\n
+
+Versjon 1.03\n
+* Tatt bort tilgjengelighetstjeneste for AutoFill etter anmodning fra Google. Se innstillingene for passordtilgang for å finne et programtillegg som utfyller denne oppgaven.\n
+* Tredjepartsapper kan brukes som lagringsalternativ igjen\n
+* Integrert bildeprogram for å vise vedlagte bilder uten å overføre de til andre apper\n
+* OkHttp oppgradert for å håndtere problemer med enkelte tilkoblinger\n
+* Støtte for KeeTrayTOTP-oppføringer, støtter nå Stream-oppføringer\n
+
+Versjon 1.02\n
+* Flere sikkerhetsforbedringer. Takker så mye for sikkerhetsrapporten til jean-baptiste.cayrou@thalesgroup.com og vincent.fargues@thalesgroup.com og for deres samarbeid!\n
+* Støtte for KeyboardSwapPlugin (se valgene for passordtilgang): Mulig å bytte inntastingsmetode automatisk på enheter uten root-tilgang. Takk til Mishaal Rahman fra XDA-Developers for å gjøre dete mulig.\n
+* Feilretting i Tilgjengelighetstjenesten for nylighe Chrome-versjoner\n
+* Feilretting for unødvendig tømming av fingeravtrykksdata\n
+* Feilrettinger av mindre krasjer\n
+* Dropbox SDK oppdatert for å sørge for fremtidig kompatibilitet\n
+* Fjernet feilrapportering gjennom Xamarin Insights\n
+* Oppdatert byggeverktøy\n
+
+Versjon 1.01-g\n
+* Feilretting for krasj når man forsøker å jobbe frakoblet\n
+* Feilretting for feil koding av FTP(S) påloggingsinformasjon\n
+* Feilretting for krasjer når man bruker OneDrive og på eldre Android-versjoner\n
+* Viser tidspunkter som lokal tid på oppføringssider\n
+
+Versjon 1.01-d\n
+* Feilretting for filopplisting på OneDrive\n
+* Mulig å overse sertifikatfeil også når bekreftelse av vertsnavn feiler (anbefales ikke for bruk i produksjon)\n
+* Feilretting for QuickUnlock, der den feiler til tross for at korrekt kode er angitt\n
+
+Versjon 0.9.8c\n
+* Feilretting for SSL-sikkerhetsproblem i Microsoft Live SDK (brukes for å få tilgang til filer i OneDrive)\n
+* Feilretting: Tidligere utgivelser inneholdt to inntastingsmetoder (der en krasjer)\n
+
+Versjon 1.01\n
+* Lagt til støtte for det nye KDBX-4-formatet (kompatibelt med Keepass 2.35) inkludert Argon 2-nøkkelavledning og ChaCha20-kryptering.\n
+* Omskriving av WebDav fillagring. Mulig å liste filer og støtter moderne kryptering.\n
+* Omskriving av FTP fillagring. Mulig å liste filer og støtter kryptering (FTPS).\n
+* Oppdatert til OneDrive SDK (det tidligere benyttede Live SDK oppdateres ikke lenger)\n
+* Oppdatert til versjon 2 av Dropbox SDK (det tidligere benyttede versjon 1 er ikke lenger understøttet).\n
+* Støtte for OwnCloud lagt til.\n
+* Spør etter lagringstilgang før åpning av lokale filer
+
+Versjon 1.0.0e\n
+* Feilretting for opplåsing med fingeravtrykk på eldre Samsung-enheter med Android 6\n
+* Støtte for x86-enheter lagt til\n
+* Mulig å skjule skjermtastatur mens man leser fingeravtrykk\n
+* Byggesystem oppdatert
+
+Versjon 1.0.0\n
+* Opplåsing vha. fingeravtrykk (krever Anroid 6.0+ eller en Samsung-enhet)\n
+* Tjeneste for Auto-Fill lagt til (krever Android 5.0+)\n
+* Støtte for oppføringsmaler\n
+* \"Arbeid frakoblet\"-modus lagt til\n
+* Mulig å kopiere oppføringer\n
+* Modus for autokomplettering for feltnavn\n
+* Mulig å fjerne element fra liste over siste brukte filer\n
+* Be om tillatelser forløpende ved behov under Android 6.0\n
+* Feilrettinger (i det innebygde tastaturet, når du velger ikoner)\n
+* Inneholder valg for å sende feilrapporter\n
+* Hjelpemeldinger lagt til på flere steder\n
+
+Versjon 0.9.9\n
+* Helt nytt design av brukergrensesnitt. Takk så mye til Stefano Pignataro (http://www.spstudio.at) for hans støtte!\n
+* Mulig med egendefinerte ikoner\n
+* Støtte for flervindumodus på Samsung-enheter\n
+* Økt standard antall runder med kryptering for nye databaser\n
+* Sjekk for duplikate nøkler for tilleggsfelter for å unngå tap av data\n
+
+Version 0.9.9c\n
+* Mørkt tema er tilbake\n
+* Du kan installere andre ikonpakker (eldgamle Windows-type ikoner er tilgjengelig i Play store)\n
+* Spørsmål om bekreftelse lagt til når elementer slettes uten søppelkurv\n
+* Feilrettinger (feil visning av hemmelig koding av engangspassord, feil appikon noen steder)\n
+
+Versjon 0.9.8b\n
+* Feilrettinger (lagring feilet for enkelte databaser, eksport til lokal enhet virket ikke, valg av enkelte innstillingsalternativer krasjet appen)\n
+
+Versjon 0.9.8\n
+* Støtte for Storage Access Framework (tillater skriving til SD-kort og Google Drive i KP2A Offline)\n
+* Prøver å oppdage feil ved inntasting av WebDAV URLer (katalog istedet for fil)\n
+* Endret skrifttype for passord\n
+* Mulig å bytte Dropbox-konto\n
+* Feilretting: Husker engangspassord
+
+Versjon 0.9.7b\n
+* Oversettelser oppdatert\n
+* Feilrettinger: Skrifttype for passord manglet i 0.9.7, sorter etter navn sorterte ikke grupper\n
+
+Versjon 0.9.7\n
+* Støtte for skriving av Keepass 1 (kdb)-database (beta!)\n
+* Bedre bytting tilbake til forrige tastatur (virker også på ikke-rootede enheter)\n
+* Støtte for KeyChallenge med variabel lengde\n
+* Forhindre skjermdump av skjermbildene for QuickUnlock og passord\n
+* Revers sorteringsrekkefølge for Sorter etter modifikasjonsdato (nå synkende)\n
+* Feilrettinger: Notatvisning oppdateres nå korrekt etter endringer, Passordvisning skjuler nå passordet korrekt (forhåpentligvis) på alle enheter, fikser problemet som gjorde det mulig å legge til en oppføring to ganger, fikser problemet med visning av advarsel om Duplikat UUID selv etter å ha reparert databasen\n
Utvidet mulighet til å donere en øl, eller noe annet
- 30 sekunder
@@ -457,6 +736,16 @@
- Middels
- Stor
+
+ - Lyst
+ - Mørkt
+
+ Utseende
+
+ - Ingen kryptering (FTP)
+ - Implisitt kryptering (FTP over TLS, FTPS)
+ - Eksplisitt kryptering (FTP over TLS, FTPS)
+
- Ikke husk brukernavn og passord
- Husk kun brukernavn
@@ -470,4 +759,27 @@
- Passord + utfordring-respons
- Passord + utfordring-respons-nøkkel (gjenopprettingsmodus)
+
+ - Overse bekreftelsesfeil i sertifikater
+ - Advare når bekreftelsen feiler
+ - Ikke godta ugyldige sertifikater
+
+ Kontroller at dette fungerer på ditt system og vurder å benytte det innebygde tastaturet dersom ikke.
+ Beskrivelse gitt av tillegget:
+ Keepass2Android støtter Androids Autofill-funksjon, men det ser ikke ut til at du har aktivert den ennå.
+ Aktiver Autofill
+ Beklager, det ser ikke ut til at din enhet støtter å åpne innstillingene direkte fra appen. Vennligst åpne systeminnstillingene for Autofill manuelt for å aktivere tjenesten.
+ Vis Autofill hjelp
+ Fyll inn med Keepass2Android
+ Kunne ikke knytte webdomenet %1$s til appen %2$s
+ Jeg skjønner
+ Ikke vis dette igjen
+ Husker du hovedpassordet?
+ Vær oppmerksom på at du ikke vil kunne åpne databasen uten hovednøkkelen. Det finnes ingen måte å \"nullstille\" hovedpassordet på.
+ Vær også oppmerksom på at opplåsing med fingeravtrykk fungerer ved at hovedpassordet lagres i Androids sikre lager. Dette lageret kan slettes av Android når som helst, f.eks. dersom du legger inn nytt fingeravtrykk i systeminnstillingene. Du kan ikke basere deg kun på fingeravtrykket, men vær så snill å sørge for å huske hovedpassordet!
+ Har du sikkerhetskopiert databasen?
+ Keepass2Android lagrer dine passord i en fil på valgfritt sted. Er du sikker på at du fortsatt har tilgang på denne filen dersom du mister telefonene eller den blir stålet, eller dersom filen blir ødelagt eller slettet? Vennligst kontroller at du alltid har en oppdatert sikkerhetskopi på et trygt sted!
+ For å opprette en sikkerhetskopi nå, gå til %1$s > %2$s > %3$s.
+ Er du forberedt på nødssituasjoner?
+ Har du noen gang vurdert hva som skjer dersom du ikke lenger har tilgang til passorddatabasen? Hva om du blir utsatt for en ulykke? Det er god praksis å overlate hovednøkkelen til en person du stoler helt på i tilfelle en nødssituasjon. Ellers vil ingen ha tilgang til dine passord.
diff --git a/src/keepass2android/Resources/values-nl/strings.xml b/src/keepass2android/Resources/values-nl/strings.xml
index 2242cdb0..389aee28 100644
--- a/src/keepass2android/Resources/values-nl/strings.xml
+++ b/src/keepass2android/Resources/values-nl/strings.xml
@@ -7,11 +7,11 @@
Keepass2Android is een wachtwoordmanager met lees/schrijf toegang tot KeePass 2.x databases in Android.
De gebruikersinterface is gebaseerd op KeepassDroid, een port ontwikkeld door Brian Pellin. Code voor de database operaties is gebaseerd op KeePass door Dominik Reichl. De Android robot is gereproduceerd of aangepast van het werk gemaakt en gedeeld door Google en gebruikt in overeenstemming met de voorwaarden beschreven in de Creative Commons 3.0 Attribution License.
SFTP ondersteuning is geïmplementeerd door middel van de JSch-bibliotheek onder BSD-licentie, gemaakt door JCraft, Inc.
- Het hamer-pictogram is gemaakt door John Caserta van het Noun Project. Het pinguïn-pictogram is gemaakt door Adriano Emerick van het Noun Project. Het veer-pictogram is gemaakt door Jon Testa van het Noun Project. Het Apple-pictogram is gemaakt door Ava Rowell van het Noun Project. Het picture-pictogram komt van https://icons8.com/icon/5570/Picture.
+ Het hamer-pictogram is gemaakt door John Caserta van het Noun Project. Het pinguïn-pictogram is gemaakt door Adriano Emerick van het Noun Project. Het veer-pictogram is gemaakt door Jon Testa van het Noun Project. Het Apple-pictogram is gemaakt door Ava Rowell van het Noun Project. Het pictogram-pictogram komt van https://icons8.com/icon/5570/Picture.
Accepteren
Weigeren
- Record toevoegen
- Invoer bewerken
+ Nieuw item
+ Item bewerken
URL invoeren
Groep toevoegen
Groep toevoegen
@@ -24,24 +24,24 @@
KP2A Offline
Toepassing timeout
Tijd tot het vergrendelen van de database bij inactiviteit.
- Applicatie proces beëindigen
+ Applicatieproces beëindigen
Sluiten-Knop
Laat een knop zien in het wachtwoordscherm om de applicatie te beëindigen (voor paranoïde gebruikers)
Applicatie
Applicatie-instellingen
Toon groepsnaam in zoekresultaat
- Toon groepsnaam onder record namen in zoekresultaten. Bruikbaar als verschillende records dezelfde naam hebben.
+ Toon groepsnaam onder item namen in zoekresultaten. Handig als verschillende items dezelfde naam hebben.
Getoonde groep is nu: %1$s
- Toon groepsnaam in record venster
+ Toon groepsnaam in item venster
Sorry! Keepass2Android kan niet overweg met de ontvangen URI %1$s. Neem contact op met de ontwikkelaar!
- Eén invoer
- %1$d invoeren
+ Eén item
+ %1$d items
Pictogrammen-set
Meer...
Beveiliging
Weergave
Wachtwoordtoegang
- QuickUnlock
+ Snel Openen
Omgang met bestanden
Toetsenbord
Exporteer database...
@@ -52,10 +52,10 @@
Alleen beschikbaar voor lokale bestanden.
Bestand is opgeslagen in interne map.
De database is geïmporteerd. Druk op Ok om de database te openen van de nieuwe locatie. Let op: Vergeet niet om regelmatig de database te exporteren!
- Sleutelbestand geïmporteerd. Zorg voor een back-up voordat u het bestand verwijdert!
+ Sleutelbestand geïmporteerd. Zorg voor een back-up voordat je het bestand verwijdert!
Om de interne map te gebruiken moet de locatie van het sleutelbestand bewaard blijven. Pas uw beveiligingsinstellingen aan.
- Ontsluiten
- Database ontsluiten
+ Openen
+ Database openen
Haakjes
Annuleren
Klembord gewist.
@@ -66,13 +66,13 @@
Invoer is mogelijk via KP2A-toetsenbord
is beschikbaar
Kan venster om invoermethode te selecteren niet openen. Activeer toetsenbord handmatig.
- Activeer het Keepass2Android-toetsenbord in uw systeeminstellingen.
+ Activeer het Keepass2Android-toetsenbord in de systeeminstellingen.
Databasesleutel wordt aangemaakt…
Huidige groep
Huidige groep: Root
Database
Cijfers
- Keepass2Android biedt GEEN ENKELE GARANTIE; Dit is gratis software, u mag deze software verspreiden onder de voorwaarden van de GPL versie 2 of recenter.
+ Keepass2Android biedt GEEN ENKELE GARANTIE; Dit is gratis software, je mag deze software verspreiden onder de voorwaarden van de GPL versie 2 of recenter.
\u2026
Kopieer naar klembord
Sensor
@@ -82,19 +82,18 @@
Vingerafdruk herkend
Vingerafdrukontgrendeling vereist Android 6.0 of hoger.
Geen vingerafdrukhardware gevonden.
- U heeft nog geen vingerafdrukken geregistreerd op dit apparaat. Ga eerst naar systeeminstellingen.
+ Je hebt nog geen vingerafdrukken geregistreerd op dit apparaat. Ga eerst naar systeeminstellingen.
Vingerafdrukontgrendeling uitschakelen
Vingerafdrukontgrendeling inschakelen
- Vingerafdrukontgrendeling voor QuickUnlock inschakelen
+ Vingerafdrukontgrendeling voor Snel Openen inschakelen
Raak de sensor aan om database te ontgrendelen
Ontgrendelen via vingerafdruk mislukt. De sleutel is door Android als ongeldig gemarkeerd. Dit is meestal het geval als er een nieuwe vingerafdruk is ingesteld of als de beveiligingsinstellingen zijn gewijzigd.
Ontgrendelen van de database mislukt: Ongeldige sleutel. Vingerafdruk-ontgrendeling is uitgeschakeld want het opgeslagen hoofdwachtwoord is niet meer geldig.
- Schakel aub vingerafdruk-ontgrendelen opnieuw in voor het nieuwe hoofdwachtwoord.
- Ontgrendel aub met uw wachtwoord en schakel dan vingerafdruk-ontgrendeling weer in via de instellingen van de database.
+ Schakel alsjeblieft vingerafdruk-ontgrendelen opnieuw in voor het nieuwe hoofdwachtwoord.
+ Ontgrendel alsjeblieft met jouw wachtwoord en schakel dan vingerafdruk-ontgrendeling weer in via de instellingen van de database.
Niet gelukt om de vingerafdruk-sensor te initialiseren.
-
-Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door de Android Keystore en beschermd door authenticatie met uw vingerafdruk. Dit geeft de mogelijkheid uw database enkel met uw vingerafdruk te ontgrendelen.
- Gebruik authenticatie dmv vingerafdruk in plaats van QuckUnlock. U hoeft geen informatie met betrekking tot uw hoofdwachtwoord op te slaan.
+ Dit zal je hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door de Android Keystore en beschermd door authenticatie met jouw vingerafdruk. Dit geeft de mogelijkheid uw database enkel met jouw vingerafdruk te ontgrendelen.
+ Gebruik authenticatie d.m.v. vingerafdruk in plaats van de Snel Openen code. Dit slaat geen informatie op die gerelateerd is aan jouw hoofdwachtwoord.
Voer databasebestandsnaam in
Benaderd
Annuleren
@@ -197,7 +196,7 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Geen afhandeling voor deze url mogelijk.
Recente database openen (klik om te openen)
Niet in back-up en prullenbak zoeken
- Laat \'Backup\' en Prullenbak-groep weg uit zoekresultaten
+ Laat \'Back-up\' en Prullenbak-groep weg uit zoekresultaten
KeePass databasebestandsnaam
Geef databasewachtwoord
Selecteer hoofdsleutel type:
@@ -207,6 +206,7 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Onthoudt de locatie van de sleutelbestanden
Sleutelbestand opslaan
Verwijder
+ Bewerken
Rijndael (AES)
Root
Functie die sleutels maakt uit geheime waarden
@@ -216,7 +216,7 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Geheugen voor Argon 2 (bytes)
Parallellisme voor Argon 2
Databasenaam
- Standaard gebruikersnaam voor nieuwe invoer
+ Standaard gebruikersnaam voor nieuwe items
Database wordt opgeslagen…
Database exporteren…
Database succesvol geëxporteerd!
@@ -236,16 +236,16 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Open de gewenste groep en druk op \"%1$s\"!
Hier invoegen
Twofish
- Onderstrepen
+ Liggend streepje
Niet-ondersteunde databaseversie.
Hoofdletters
- Uw sd-kaart is momenteel ingesteld als alleen-lezen. U zult mogelijk wijzigingen in de database niet kunnen opslaan.
- Uw sd-kaart is momenteel ontkoppeld. U zult geen database kunnen openen of aanmaken.
+ De sd-kaart is momenteel ingesteld als alleen-lezen. Je zult mogelijk wijzigingen in de database niet kunnen opslaan.
+ De sd-kaart is momenteel ontkoppeld. Je kunt geen database openen of aanmaken.
Versie
Versiegeschiedenis
Keepass2Android is ontwikkeld door Philipp Crocoll.
Dankzij de bijdragen van de code door %1$s.
- Dank aan %1$s voor het ontwerp van het icoon en de layout.
+ Dank aan %1$s voor het ontwerp van het pictogram en de layout.
De Twofish Cipher Plugin voor Keepass werd ontwikkeld door Scott Greenberg en is opgenomen in KP2A.
Android-bestandskiezer is ontwikkeld door Hai Bison
Het KP2A toetsenbord is gebaseerd op het Gingerbread toetsenbord van het Android Open Source Project en gebruikt de Plugin Manager code van Hacker\'s Keybord van Klaus Weidner.
@@ -253,9 +253,9 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Bijdragers
Reguliere expressie
Tan vervalt na gebruik
- TAN-invoer markeren als vervallen na gebruik
+ TAN-items markeren als vervallen na gebruik
Geef gebruikersnaam weer in lijst
- Gebruikersnamen onder titels weergeven. Nuttig voor meerdere accounts of TANs.
+ Gebruikersnamen onder item titels weergeven. Handig voor meerdere accounts of TANs.
Onthoud databases
Onthoud onlangs geopende databases en deze in het geopende databasescherm weergeven.
Keepass2Android: Zoek wachtwoord
@@ -268,21 +268,24 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Bestand importeren naar nieuwe database...
De volledige URL moet worden opgegeven inclusief protocol zoals http://.
Te importeren bestand zal in de volgende stap geselecteerd worden.
- QuickUnlock inschakelen
- Voer de laatste %1$d karakters van uw wachtwoord in:
- QuickUnlock!
+ Snel Openen inschakelen
+ Voer de laatste %1$d karakters van je wachtwoord in:
+ Snel Openen code invoeren:
+ Snel Openen!
Database sluiten
- QuickUnlock standaard ingeschakeld
- Hiermee definieert u of QuickUnlock standaard is ingeschakeld of niet.
+ Snel Openen standaard ingeschakeld
+ Hiermee definieert u of Snel Openen standaard is ingeschakeld of niet.
Bescherm weergeven database
Wanneer ingeschakeld is het maken van screenshots niet toegestaan en zal geen miniatuur van de app worden weergegeven in de lijst met recente apps.
- QuickUnlock pictogram verbergen
- QuickUnlock helaas werkt niet zonder een notificatiepictogram weer te geven. Selecteer deze optie om een transparant pictogram te gebruiken.
- Verberg QuickUnlock pictogram
+ Snel Openen pictogram verbergen
+ Snel Openen helaas werkt niet zonder een notificatiepictogram weer te geven. Selecteer deze optie om een transparant pictogram te gebruiken.
+ Verberg Snel Openen pictogram
QuickUnlock vereist een notificatie om goed te werken. Selecteer deze optie om de notificatie pictogram niet te tonen.
- Lengte van QuickUnlock-sleutel
- Maximum aantal tekens gebruikt voor QuickUnlock wachtwoord.
- QuickUnlock is mislukt: verkeerd wachtwoord!
+ Lengte van sleutel voor Snel Openen
+ Maximum aantal tekens gebruikt voor Snel Openen wachtwoord.
+ Verberg Snel Openen lengte
+ Als ingeschakeld, wordt de lengte van de Snel Openen code niet weergegeven in het Snel Openen scherm.
+ Snel Openen is mislukt: verkeerd wachtwoord!
Map met bestandsbijlagen
Map waar bestandsbijlagen worden opgeslagen.
Bijlage opslaan
@@ -293,7 +296,7 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Bestand opgeslagen als %1$s.
Kon de bijlage niet opslaan in %1$s.
Onthoud zoektekst?
- Zou u graag de zoektekst \"%1$s\" willen opslaan in de geselecteerde regel, zodat het de volgende keer automatisch gevonden wordt?
+ Zou je graag de zoektekst \"%1$s\" willen opslaan in het geselecteerde item, zodat het de volgende keer automatisch gevonden wordt?
Ongeldige datum/tijdnotatie voor vervaldatum!
Een veldnaam is vereist voor elke waarde.
Een veldnaam kan niet tweemaal worden gebruikt (%1$s).
@@ -303,9 +306,9 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Bestandsbijlage toevoegen...
Toevoegen extra waarde
Extra waarde verwijderen
- %1$s: vergrendeld. QuickUnlock ingeschakeld.
+ %1$s: vergrendeld. Snel Openen ingeschakeld.
%1$s: Ontgrendeld.
- Serverreferenties invoeren
+ Voer server inloggegevens in
Bestandshandelingen
Gebruik bestand transacties voor het schrijven van databases
Vergrendel als scherm uit gaat
@@ -314,17 +317,23 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Het ingevoerde hoofdwachtwoord wissen bij het verlaten van het scherm als de database niet is ontgrendeld.
Vergrendel zodra app wordt verlaten
Vergrendel de database wanneer de app via de knop \'vorige\' verlaten wordt.
+ Activeer zoekveld vanaf start
+ Activeert het zoekveld in de groepsweergave na ontgrendelen of bij het zoeken voor een item
Verberg donatie-optie
Deze instelling is voor donateurs. Die is pas beschikbaar nadat Keepass2Android een tijdje wordt gebruikt.
- Zonder donaties zou deze app niet kunnen bestaan en constant verbeterd worden! Wanneer u nog niet gedoneerd heeft, overweeg dan dat nu te doen.
+ Zonder donaties zou deze app niet kunnen bestaan en constant verbeterd worden! Wanneer je nog niet gedoneerd hebt, overweeg dan dat nu te doen.
Nooit vragen om een donatie
- Ik geef u nog geen dubbeltje of ik heb al gedoneerd. Niet vragen om een donatie, zelfs niet op de verjaardag van de auteur.
+ Ik geef je nog geen dubbeltje of ik heb al gedoneerd. Niet vragen om een donatie, zelfs niet op de verjaardag van de auteur.
Database caching
Houd een kopie van externe databasebestanden in de cachemap van de toepassing. Hierdoor kunt u ook externe databases gebruiken wanneer u offline bent.
+ Lokale back-ups
+ Maak een lokale back-up na het goed openen van een database.
+ Lokale back-up bijwerken...
+ Lokale back-up van %1$s
SSL certificaten
- Bepaal het gedrag wanneer de certificaatvalidatie mislukt. P.S.: U kunt certificaten installeren op uw apparaat als de validatie mislukt!
+ Bepaal het gedrag wanneer de certificaatvalidatie mislukt. Merk op: Je kunt certificaten installeren op jouw apparaat als de validatie mislukt!
Cache wissen?
- Dit zal alle databasebestanden in de cache verwijderen. Eventuele wijzigingen die u hebt aangebracht terwijl u offline was en die nog niet zijn gesynchroniseerd zullen verloren gaan! Doorgaan?
+ Dit zal alle databasebestanden in de cache verwijderen. Eventuele wijzigingen die je hebt aangebracht terwijl je offline was en die nog niet zijn gesynchroniseerd zullen verloren gaan! Doorgaan?
Controleer op wijzigingen
Controleer of het bestand extern is bewerkt voordat u wijzigingen opslaat.
Controleren op dubbele UUIDs
@@ -336,9 +345,9 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Toegankelijkheid service voor AutoFill
Service voor automatisch aanvullen
KP2A toetsenbordmelding
- Maak volledige invoer mogelijk via het toetsenbord van de KP2A (aanbevolen).
+ Maak het volledige item toegankelijk via het toetsenbord van de KP2A (aanbevolen).
Wissel toetsenbord
- Open toetsenbord selectie venster als een regel beschikbaar is via KP2A toetsenbord na zoeken vanaf de browser of het toetsenbord.
+ Open toetsenbord selectie venster als een item beschikbaar is via KP2A toetsenbord na zoeken vanaf de browser of het toetsenbord.
Wissel toetsenbord
Automatisch overschakelen naar KP2A toetsenbord wanneer het item wordt geopend. Vereist een goed voorbereide KeyboardSwap Plugin of een geroot apparaat en de Secure Settings app met Systeem+.
Installeer de KeyboardSwap Plugin
@@ -349,31 +358,35 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Terugwisselen naar vorige toetsenbord wanneer geen item geopend is.
Toon icoon wanneer database ontgrendeld is
Toon doorlopend bericht terwijl de database ontgrendeld is.
+ Android 8 introduceert nieuw gedrag voor meldingen. Als je het pictogram van Keepass2Android\'s meldingen wilt verbergen kunt je dit wijzigen in de systeeminstellingen. Stel de prioriteit van de meldingencategorie op het minimum in.
+ Instellingen openen
+ Maakt me niet uit
+ Dit bestand is niet meer toegangelijk voor Keepass2Android. Het is verwijderd of de toegangsrechten zijn ingetrokken. Probeer opnieuw te openen, bijv. met \'Wijzig database\'.
Pre-load van databasebestand
Start laden op de achtergrond of het downloaden van het databasebestand tijdens het wachtwoord invoeren.
- Wilt u het bestaande binaire bestand met dezelfde naam overschrijven?
+ Wil je het bestaande binaire bestand met dezelfde naam overschrijven?
Overschrijf bestaande bestand?
Overschrijven
Hernoemen
Bijlage toevoegen mislukt.
Prullenbak
- Wilt u dit item permanent verwijderen? Druk op \"nee\" om te herstellen.
- Wilt u deze groep permanent verwijderen? Druk op \"nee\" om te recyclen.
- Wilt u de geselecteerde elementen permanent verwijderen? Druk op Nee om te behouden.
- Wilt u dit element permanent verwijderen?
- Wilt u deze groep permanent verwijderen?
- Wilt u de geselecteerde elementen permanent verwijderen?
+ Wil je dit item permanent verwijderen? Druk op \"nee\" om te behouden.
+ Wil je deze groep permanent verwijderen? Druk op \"nee\" om te behouden.
+ Wil je de geselecteerde elementen permanent verwijderen? Druk op Nee om te behouden.
+ Wil je dit item permanent verwijderen?
+ Wil je deze groep permanent verwijderen?
+ Wil je de geselecteerde elementen permanent verwijderen?
Definitief verwijderen?
Bestand opnieuw laden?
- Het bestand dat momenteel geopend is werd veranderd door een ander programma. Wilt u het herladen?
- Wilt u de wijzigingen echt ongedaan maken? (De knop Opslaan is aan de bovenkant van het formulier.)
+ Het bestand dat momenteel geopend is werd veranderd door een ander programma. Wil je het herladen?
+ Wil je de wijzigingen echt ongedaan maken? (De knop Opslaan is aan de bovenkant van het formulier.)
Wijzigingen negeren?
Geef suggesties of stem voor verbeteringen
Waardeer deze app
KP2A vertalen
- Invoer toevoegen…
+ Item toevoegen…
Groep toevoegen…
- Invoer wissen…
+ Item verwijderen…
Groep verwijderen…
Elementen verwijderen…
Wachtwoord instellen…
@@ -383,7 +396,7 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Leest database…
Doelbestand op veranderingen controleren…
Wijzigingen samenvoegen?
- Het databasebestand is extern bewerkt. Wilt u de wijzigingen ophalen en samenvoegen voordat u opslaat? Selecteer Nee als u de externe wijzigingen wilt overschrijven.
+ Het databasebestand is extern bewerkt. Wil je de wijzigingen ophalen en samenvoegen voordat je opslaat? Selecteer Nee als je de externe wijzigingen wilt overschrijven.
Samenvoegen van wijzigingen…
Ja, samenvoegen
Nee, overschrijven
@@ -399,7 +412,7 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Database met succes gesynchroniseerd!
Databases op veranderingen aan het controleren…
Kan niet extern opslaan naar: %1$s. Sla opnieuw op of gebruik het menu synchroniseren wanneer externe verbinding weer beschikbaar is.
- Kan niet extern openen: %1$s. Bestand geladen vanuit lokale cache. U kunt nog steeds wijzigingen aanbrengen in de database en deze later synchroniseren.
+ Kan niet extern openen: %1$s. Bestand geladen vanuit lokale cache. Je kunt nog steeds wijzigingen aanbrengen in de database en deze later synchroniseren.
Extern bestand bijgewerkt.
Lokaal bestand geopend in verband met een conflict met veranderingen in extern bestand. Gebruik het menu Synchroniseren om samen te voegen.
Extern bestand en cache zijn gesynchroniseerd.
@@ -411,8 +424,8 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
database bestand
OTP hulpbestand
Een fout is opgetreden:
- Database is corrupt: dubbele IDs gevonden. (Heeft U opgeslagen met Minikeepass?) Importeer alstublieft opnieuw in een nieuwe database met Keepass 2 voor de PC en selecteer \'Nieuwe id\'s maken\'.
- Deze foutmelding kunt u uitschakelen in Instellingen/Applicatie-instellingen/Omgang met bestanden/Controleren op dubbele UUIDs. Houd er rekening mee dat onverwacht gedrag kan optreden. Het is aanbevolen om de database te repareren.
+ Database is corrupt: dubbele IDs gevonden. (Heb je het opgeslagen met Minikeepass?) Importeer alstublieft opnieuw in een nieuwe database met Keepass 2 voor PC en selecteer \'Nieuwe id\'s maken\'.
+ Deze foutmelding kun je uitschakelen in Instellingen/Applicatie-instellingen/Omgang met bestanden/Controleren op dubbele UUIDs. Houd er rekening mee dat onverwacht gedrag kan optreden. Het is aanbevolen om de database te repareren.
Database synchroniseren…
Kan de groep niet naar deze groep verplaatsen.
Vandaag is het Oktoberfeest! Als je Keepass2Android leuk vind: zou het niet de uitgelezen dag zijn om mij te trakteren op een biertje?
@@ -439,38 +452,38 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
OwnCloud
Dropbox
Dropbox (KP2A map)
- Als u KP2A volledige toegang tot dropbox wilt geven, kiest u deze optie. Het zal alleen toegang vragen tot de map Apps/Keepass2Android. Dit is met name geschikt bij het maken van een nieuwe database. Als u al een database heeft, gebruik deze optie om de map te maken, plaats daarna het bestand in de map (vanaf uw PC) en kies deze optie opnieuw om het bestand te openen.
+ Als je KP2A volledige toegang tot dropbox wilt geven, kies je deze optie. Het zal alleen toegang vragen tot de map Apps/Keepass2Android. Dit is met name geschikt bij het maken van een nieuwe database. Als je al een database heeft, gebruik deze optie om de map te maken, plaats daarna het bestand in de map (vanaf uw PC) en kies deze optie opnieuw om het bestand te openen.
Google Drive
OneDrive
SFTP (SSH File Transfer)
Systeem bestand kiezer
Bestandstoegang initaliseren
Database locatie
- U kunt uw database lokaal op uw Android toestel of in de cloud opslaan (alleen de niet-Offline versie). Keepass2Android maakt de database beschikbaar, zelfs als u offline bent. Omdat de database veilig is versleuteld met AES 256 bit encryptie, kan niemand toegang krijgen tot uw wachtwoorden behalve u. We adviseren Dropbox te kiezen: Het is beschikbaar op al uw apparaten en voorziet zelfs in backups van vorige bestandsversies.
- Selecteer waar u de database wilt opslaan:
+ Je kunt jouw database lokaal op je Android toestel of in de cloud opslaan (alleen de niet-Offline versie). Keepass2Android maakt de database beschikbaar, zelfs als je offline bent. Omdat de database veilig is versleuteld met AES 256 bit encryptie, kan niemand toegang krijgen tot jouw wachtwoorden behalve jij. We adviseren Dropbox te kiezen: het is beschikbaar op al uw apparaten en voorziet zelfs in back-ups van vorige bestandsversies.
+ Selecteer waar je de database wilt opslaan:
Locatie wijzigen
Wanneer ingeschakeld zal Keepass2Android in de achtergrond blijven draaien, zelfs wanneer de database vergrendeld is. Hierdoor kan de database later met slechts een klein gedeelte van het hoofdwachtwoord worden ontgrendeld.
Hoofdwachtwoord
- Uw database is versleuteld met het hier ingevoerde wachtwoord. Kies een sterk wachtwoord om de database te beveiligen! Tip: Bedenk een zin of twee en gebruik de eerste letters van de woorden als wachtwoord. Gebruik ook de leestekens.
- Kies een hoofdwachtwoord om uw database te beschermen:
+ De database is versleuteld met het hier ingevoerde wachtwoord. Kies een sterk wachtwoord om de database te beveiligen! Tip: Bedenk een zin of twee en gebruik de eerste letters van de woorden als wachtwoord. Gebruik ook de leestekens.
+ Kies een hoofdwachtwoord om jouw database te beschermen:
Sleutelbestand
- Een sleutelbestand is feitelijk een wachtwoord opgeslagen in een bestand. Sleutelbestanden zijn doorgaans sterker dan hoofdwachtwoorden omdat de sleutel veel ingewikkelder kan zijn; hoewel het lastiger is om hem geheim te houden. Als u de database in de cloud opslaat, sla dan niet uw sleutelbestand daar ook op! Dat zou het volledig nutteloos maken! Belangrijk: verander de inhoud van het sleutelbestand niet na het maken van de database!
- Kies als u gebruik wilt maken van een sleutelbestand naast uw hoofdwachtwoord:
+ Een sleutelbestand is feitelijk een wachtwoord opgeslagen in een bestand. Sleutelbestanden zijn doorgaans sterker dan hoofdwachtwoorden omdat de sleutel veel ingewikkelder kan zijn; hoewel het lastiger is om hem geheim te houden. Als je de database in de cloud opslaat, sla dan niet jouw sleutelbestand daar ook op! Dat zou het volledig nutteloos maken! Belangrijk: verander de inhoud van het sleutelbestand niet na het maken van de database!
+ Kies als je gebruik wilt maken van een sleutelbestand naast het hoofdwachtwoord:
Gebruik sleutelbestand
Fout tijdens het toevoegen van het sleutelbestand!
Laad OTP hulpbestand…
- Geef de volgende eenmalige wachtwoorden (OTPs). Veeg uw Yubikey NEO langs de achterkant van uw apparaat voor NFC invoer.
+ Geef de volgende eenmalige wachtwoorden (OTPs). Veeg je Yubikey NEO langs de achterkant van het apparaat voor NFC invoer.
OTP %1$d
- Kon geen app vinden die deze Challenge-Response kan verwerken. Installeer aub Yubichallenge via Google Play.
+ Kon geen app vinden die deze Challenge-Response kan verwerken. Installeer alsjeblieft Yubichallenge via Google Play.
Kan het OTP hulpbestand niet laden!
- Gebruik de OtpKeyProv plugin in KeePass 2.x (PC) om uw database in te stellen voor gebruik met OTPs!
+ Gebruik de OtpKeyProv plugin in KeePass 2.x (PC) om jouw database in te stellen voor gebruik met OTPs!
Selecteer eerst de database. OTP is om veiligheidsredenen verwijderd.
OTP verwijderd: alle OTPs al ingevoerd!
Sluit eerst de database. OTP is verwijderd.
(Een of meerdere OTPs reeds beschikbaar)
OTP-geheim (bijv. 01 23 ab cd…)
Fout bij verwerken van OTP-geheim!
- OTP sleutel maken mislukt! Zorg ervoor dat u de juiste OTPs hebt ingevoerd.
+ OTP sleutel maken mislukt! Zorg ervoor dat je de juiste OTPs hebt ingevoerd.
Fout bijwerken OTP hulpbestand!
OTP hulpbestand opslaan…
De Challenge-Response was incorrect.
@@ -478,7 +491,7 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Gebruik de KeeChallenge plugin in KeePass 2.x (PC) om de database in te stellen voor gebruik met Challenge-Response!
Fout bij updaten van OTP-hulpbestand!
Veldnaam van TOTP-bron
- Wanneer u met Keepass 2 (PC) de plugin \"TrayTotp\" met afwijkende instellingen gebruikt, geef dan hier de naam van de willekeurige bron.
+ Wanneer je met Keepass 2 (PC) de plugin \"TrayTotp\" met afwijkende instellingen gebruikt, geef dan hier de naam van de willekeurige bron.
Veldnaam TOTP-instellingen
Geef de veldnaam van het instellingenveld van TrayTotp.
TrayTotp
@@ -496,33 +509,34 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Zoek plug-ins online
Reikwijdte
niet ingeschakeld
- %1$s vraagt gegevens voor %2$s.
- %1$s vraagt om gegevens. Selecteer aub een invoer.
+ %1$s vraagt inloggegevens voor %2$s.
+ %1$s vraagt om inloggegevens. Selecteer alsjeblieft een item.
Ingeschakeld
Notificaties voor database-acties
De plug-in zal worden medegedeeld wanneer een database wordt geopend, gesloten of opgeslagen.
- Gegevens huidige invoer
- De plug-in zal alle data van de huidige database-invoer krijgen en kan acties aanbieden en de weergave hiervan wijzigen.
- Zoek eigen referenties
- De plug-in wordt toegestaan om te zoeken naar de referenties die gekoppeld zijn met zijn eigen toepassingspakket.
- Zoek referenties
- De plug-in zal worden toegestaan te zoeken naar referenties voor specifieke websites of programma\'s.
+ Gegevens huidige item
+ De plug-in zal alle data van het huidige database item krijgen en kan acties aanbieden en de weergave van het item wijzigen.
+ Zoek eigen inloggegevens
+ De plug-in wordt toegestaan om te zoeken naar de inloggegevens die gekoppeld zijn met zijn eigen applicatie.
+ Zoek inloggegevens
+ De plug-in zal worden toegestaan te zoeken naar inloggegevens voor specifieke websites of programma\'s.
Verkrijg meer opslagmethodes
- Waarschuwing: Server certificaat validatie mislukt: %1$s. Installeer een passend root-certificaat op uw apparaat of zie instellingen!
- Fout: Server certificaat validatie mislukt! Installeer een passend root-certificaat op uw apparaat of zie instellingen!
+ Waarschuwing: Server certificaat validatie mislukt: %1$s. Installeer een passend root-certificaat op je apparaat of zie instellingen!
+ Fout: Server certificaat validatie mislukt! Installeer een passend root-certificaat op je apparaat of zie instellingen!
Kies bestandsformaat
- Sorry! Keepass2Android is onverwacht gesloten! Om veiligheidsredenen zijn uw referenties niet opgeslagen dus u dient de database opnieuw te openen. Opmerking: Dit hoort niet voor te komen. Gebeurt dit vaker, laat het me dan weten via crocoapps@gmail.com.
+ Sorry! Keepass2Android is onverwacht gesloten! Om veiligheidsredenen zijn je inloggegevens niet opgeslagen dus je dient de database opnieuw te openen. Opmerking: Dit hoort niet voor te komen. Gebeurt dit vaker, laat het me dan weten via crocoapps@gmail.com.
Het bestand is slechts tijdelijk beschikbaar voor Keepass2Android.
Het geselecteerde bestand is alleen-lezen.
Het geselecteerde bestand is alleen-lezen voor Keepass2Android vanwege beperkingen op Android 4.4 +.
- Om het te gebruiken moet u het kopiëren naar een andere locatie.
- Om het te bewerken moet u het kopiëren naar een andere locatie.
+ Om het te gebruiken moet je het kopiëren naar een andere locatie.
+ Om het te bewerken moet je het kopiëren naar een andere locatie.
Klik op OK om een locatie te kiezen waar het bestand naartoe moet worden gekopieerd.
Database is alleen-lezen
Keepass2Android heeft de huidige database geopend in de modus alleen-lezen.
- Het lijkt alsof u het bestand hebt geopend vanuit een externe app. Dit biedt geen ondersteuning voor schrijven. Als u wijzigingen wilt aanbrengen aan de database: sluit de database en selecteer \'database wijzigen\'. Open vervolgens het bestand indien mogelijk opnieuw vanaf een van de beschikbare opties.
- De alleen-lezen-modus is ingeschakeld. Schakel deze modus uit als u wijzigingen aan de database wilt doen.
- Schrijven is niet mogelijk vanwege beperkingen die zijn ingevoerd in Android KitKat. Als u wijzigingen wilt aanbrengen aan de database: sluit de database en selecteer \'database wijzigen\'. Open vervolgens het bestand met behulp van de bestandskiezer.
+ Het lijkt alsof je het bestand hebt geopend vanuit een externe app. Dit biedt geen ondersteuning voor schrijven. Als je wijzigingen wilt aanbrengen aan de database: sluit de database en selecteer \'database wijzigen\'. Open vervolgens het bestand indien mogelijk opnieuw vanaf een van de beschikbare opties.
+ De alleen-lezen-modus is ingeschakeld. Schakel deze modus uit als je wijzigingen aan de database wilt doen.
+ Schrijven is niet mogelijk vanwege beperkingen die zijn ingevoerd in Android KitKat. Als je wijzigingen wilt aanbrengen aan de database: sluit de database en selecteer \'database wijzigen\'. Open vervolgens het bestand met behulp van de bestandskiezer.
+ Lokale back-ups kunnen niet gewijzigd worden. Je kunt Database instellingen - Exporteer database gebruiken om deze back-up naar een andere locatie te exporteren en te heropenen. Dan zal deze beschrijfbaar zijn.
Pictogram toevoegen uit bestand...
Bestand kopiëren...
Kopiëren
@@ -545,34 +559,69 @@ Dit zal uw hoofdwachtwoord op dit apparaat opslaan. Het wordt versleuteld door d
Lidmaatschap
Veranderingen
Sjablonen toevoegen?
- Keepass2Android bevat elementsjablonen voor e-mailgegevens, WLAN-wachtwoorden, beveiligde notities en meer. Wilt u deze toevoegen aan de database? Als u Nee kiest dan kunt u ze later alsnog toevoegen via de database-instellingen.
+ Keepass2Android bevat itemsjablonen voor e-mailgegevens, WLAN-wachtwoorden, beveiligde notities en meer. Wil je deze toevoegen aan de database? Als je Nee kiest dan kun je ze later alsnog toevoegen via de database-instellingen.
Sjablonen aan de database toevoegen
- Let op! Dit is een proefversie en kan dus fouten bevatten! Als u ook maar *iets* onverwachts ervaart, laat het dan weten via de Google+ beta tester group of via e-mail.
+ Let op! Dit is een proefversie en kan dus fouten bevatten! Als je ook maar *iets* onverwachts ervaart, laat het dan weten via de Google+ beta tester group of via e-mail.
Ga verder
- De URI die u hebt ingevoerd lijkt niet in een bestandsnaam. Weet u zeker dat dit een geldig bestand is?
+ De URI die je hebt ingevoerd lijkt niet in een bestandsnaam. Weet je zeker dat dit een geldig bestand is?
Ongeldige sleutelcombinatie! Probeer het opnieuw.
- Ongeldige sleutelcombinatie! Controleer aub de volgende zaken:\n
+ Ongeldige sleutelcombinatie! Controleer alsjeblieft de volgende zaken:\n
- • Zorg dat u het correcte wachtwoord heeft ingevuld. Gebruik het oog-icoon om het ingevoerde wachtwoord te tonen.\n
- • Zorg dat u het correcte wachtwoordtype heeft gekozen. Dit dient overeen te komen met het type dat u gekozen heeft bij het aanmaken van de database.\n
- • Zorg dat u het juiste bestand heeft gekozen.
-
- Het bestand is beschadigd. \n
+ • Zorg dat je het correcte wachtwoord hebt ingevuld. Gebruik het oog-pictogram om het ingevoerde wachtwoord te tonen.\n
+ • Zorg dat je het correcte wachtwoordtype hebt gekozen. Dit dient overeen te komen met het type dat je gekozen heeft bij het aanmaken van de database.\n
+ • Zorg dat je het juiste bestand hebt gekozen.
+
+
+\n
+• Hint: als je denkt dat je database corrupt kan zijn, of als je het hoofdwachtwoord niet meer weet nadat je hebt gewijzigd, dan kun je proberen de laatst goed geopende versie te openen door \"%1$s\" te klikken en de lokale back-up te kiezen.
+
+\n
+• Hint: Keepass2Android heeft de laatst goed geopende versie opgeslagen in intern geheugen. Je kunt deze openen door op \"%1$s\" te klikken en de lokale back-up te kiezen.
+
+Het bestand is beschadigd. \n
Dit zijn enkele aanwijzingen om het probleem te diagnosticeren:\n
- • Als u het bestand via USB (MTP-modus) heeft gekopieerd: probeert u het opnieuw via een programma zoals MyPhoneExplorer. MTP kapt namelijk in sommige gevallen bestanden af.\n
- • Als u het bestand ook niet op uw PC kunt openen dan is het aannemelijk dat het bestand daadwerkelijk beschadigd is. Gebruik in dat geval een back-up van uw database. Als u vermoedt dat Keepass2Android het bestand heeft beschadigd neem dan aub contact op.\n
- • Als u het bestand wel kunt openen op uw PC, neem dan contact op. Wellicht kunt u het bestand met andere instellingen opslaan op uw PC (bv niet gezipt) en het daarna openen in Keepass2Android.
+ • Als je het bestand via USB (MTP-modus) hebt gekopieerd: probeer je het opnieuw via een programma zoals MyPhoneExplorer. MTP kapt namelijk in sommige gevallen bestanden af.\n
+ • Als je het bestand ook niet op jouw PC kunt openen dan is het aannemelijk dat het bestand daadwerkelijk beschadigd is. Gebruik in dat geval een back-up van de database. Als je vermoedt dat Keepass2Android het bestand heeft beschadigd neem dan alsjeblieft contact op.\n
+ • Als je het bestand wel kunt openen op jouw PC, neem dan contact op. Wellicht kun je het bestand met andere instellingen opslaan op jouw PC (bv niet gezipt) en het daarna openen in Keepass2Android.
-
+
+ Database geopend
+ Melding bij het openen van de database
+ Snel Openen
+ Meldingen over het openen van de database met Snel Openen
+ Item meldingen
+ Melding voor vereenvoudigde toegang van het nu geselecteerde item.
Keepass2Android: Er is een fout opgetreden.
Een onbekende fout is opgetreden tijdens het uitvoeren van Keepass2Android. Help ons deze fout op te lossen door een foutrapport op te sturen.
- Foutrapporten bevatten nooit de inhoud van uw database of uw hoofdwachtwoord. U kunt het sturen van foutrapporten uitschakelen bij de instellingen.
+ Foutrapporten bevatten nooit de inhoud van je database of het hoofdwachtwoord. Je kunt het sturen van foutrapporten uitschakelen bij de instellingen.
Inschakelen
Uitschakelen
Vragen na het optreden van een fout
Foutrapporten verzenden
Toon het toetsenbord voor wachtwoord invoer wanneer vingerafdruk scan actief is.
+
+ Version 1.05\n
+ * Gebruik melding kanalen op Android 8 met configuratie via systeem instellingen\n
+ * Toon pictogram in melding\n
+ * Gebruik adaptieve pictogrammen op Android 8, gebruik het ronde lanceer pictogram op Android 7\n
+ * Optie om direct te zoeken na openen (see instellingen)\n
+ * De manier waarop files worden geschreven via Storage Access Framework is veranderd, dit lost problemen op met het schrijven van files op Google Drive welke geopend waren via de Systeem bestanden kiezer\n
+ * Informatie teksten toegevoegd om vaak voorkomende misverstanden te voorkomen\n
+ * Maak lokaal een back-up van correct geopende databases om kans op dataverlies te verkleinen\n
+ * JSch geüpdatet om recentere SSH ciphers te ondersteunen\n
+ * Mogelijk gemaakt om verbindingsinstellingen te wijzigen, bijvoorbeeld als WebDav wachtwoord veranderde\n
+ * Ondersteuning voor Yubikey Neo\'s static password mode toegevoegd\n
+ * Automatisch aanvullen suggestie kan uitgezet worden\n
+ * Data lek naar logcat opgelost\n
+ * Diverse bugs opgelost\n
+
+
+ChangeLog_1_05
+
+Version 1.04b\n
+ * Voorkom vastlopen bij automatisch aanvullen op Huawei apparaten.\n
+
Versie 1.04\n
* Automatisch aanvullen toegevoegd voor Android 8.0 en hoger.\n
@@ -632,13 +681,13 @@ Versie 1.0.0e\
Versie 1.0.0\n
* Ontgrendelen met vingerafdruk (Android 6.0+ of Samsung-apparaat benodigd)\n
* AutoFill-functionaliteit toegevoegd (Android 5.0+ benodigd)\n
- * Ondersteuning voor elementsjablonen\n
+ * Ondersteuning voor itemsjablonen\n
* Offline werken-modus\n
- * Elementen kopiëren\n
+ * Items kopiëren\n
* Automatisch aanvullen voor veldnamen\n
* Bestanden weghalen uit lijst met recente bestanden\n
* In Android 6.0 machtigingen pas op het moment dat ze nodig zijn vragen\n
- * Fouten opgelost (in het ingebouwde toetsenbord, bij het kiezen van iconen)\n
+ * Fouten opgelost (in het ingebouwde toetsenbord, bij het kiezen van pictogrammen)\n
* Optie om foutrapporten op te sturen\n
* Helpteksten toegevoegd\n
@@ -652,9 +701,9 @@ Versie 0.9.9\n
Versie 0.9.9c\n
* Het donkere thema is terug\n
- * U kunt extra icoonpakketten installeren (antieke Windows-stijl-iconen zijn beschikbaar in de Play Store)\n
+ * Je kunt extra pictogrampakketten installeren (antieke Windows-stijl-pictogrammen zijn beschikbaar in de Play Store)\n
* Vraag om bevestiging bij verwijderen van elementen\n
- * Fouten opgelost (Verkeerde weergave van geheime OTP-codering, verkeerd app-icoon op sommige plaatsen)\n
+ * Fouten opgelost (Verkeerde weergave van geheime OTP-codering, verkeerd app-pictogram op sommige plaatsen)\n
Versie 0.9.8b\n
@@ -675,9 +724,9 @@ Versie 0.9.7b\n
* Schrijf ondersteuning voor Keepass 1 (kdb) databases (beta!)\n
* Beter terugschakelen naar het vorige toetsenbord (ook voor niet-geroote apparaten)\n
* Ondersteuning voor KeeChallenge met variable lengte challenges\n
- * Voorkomt screenshots van QuickUnlock en wachtwoordschermen\n
+ * Voorkomt screenshots van Snel Openen en wachtwoordschermen\n
* Omgekeerde sorteervolgorde voor Sorteren op wijzigingsdatum (nu aflopend)\n
- * Bug fixes: Notitie schermen nu correct vernieuwd na wijzigingen, Wachtwoord schermen verbergen nu het wachtwoord correct op (hopelijk) alle apparaten, probleem opgelost dat het toevoegen van dubbele records toestond, probleem opgelost waarbij de Dubbele UUID melding werd weergegeven na het repareren van de database\n
+ * Bug fixes: Notitie schermen nu correct vernieuwd na wijzigingen, Wachtwoord schermen verbergen nu het wachtwoord correct op (hopelijk) alle apparaten, probleem opgelost dat het toevoegen van dubbele items toestond, probleem opgelost waarbij de Dubbele UUID melding werd weergegeven na het repareren van de database\n
Versie 0.9.6\n
@@ -708,9 +757,9 @@ Versie 0.9.7b\n
Versie 0.9.4\n
* ondersteuning voor plug-ins toegevoegd: kijk bij de instellingen hoe je plug-ins kunt krijgen!\n
-* QR-plug-in toegevoegd (scan wachtwoorden, toon wachtwoorden als QR-code, stuur elementen naar andere apparaten)\n
-* InputStick-plug-in toegevoegd (stuur referenties via bluetooth naar de PC - Speciale InputStick USBstick vereist)\n
-* Apps van derden kunnen nu eenvoudig referenties opvragen bij KP2A. Ben je een ontwikkelaar? Voeg dit dan (indien van toepassing) aub toe aan jouw app!\n
+* QR-plug-in toegevoegd (scan wachtwoorden, toon wachtwoorden als QR-code, stuur items naar andere apparaten)\n
+* InputStick-plug-in toegevoegd (stuur inloggegevens via bluetooth naar de PC - Speciale InputStick USBstick vereist)\n
+* Apps van derden kunnen nu eenvoudig inloggegevens opvragen bij KP2A. Ben je een ontwikkelaar? Voeg dit dan (indien van toepassing) alsjeblieft toe aan jouw app!\n
* TOTP-ondersteuning toegevoegd (geschikt voor KeeOTP en TrayTotp)\n
* De app wordt niet langer gesloten door Android wanneer de database geopend is\n
* De database wordt niet langer vergrendeld wanneer de app via de \'vorige\'-toets verlaten wordt (zie instellingen)\n
@@ -722,7 +771,7 @@ Versie 0.9.7b\n
* UI verbeterd\n
* Fout verholpen in de Google Drive-interface\n
* Optie om de \"donatie\"-optie uit te schakelen\n
-* Icoon voor QuickUnlock nu verborgen op Android 4.2+\n
+* Pictogram voor Snel Openen nu verborgen op Android 4.2+\n
Versie 0.9.3 r5\n
* Verbeteringen van Xamarin: Keepass2Android is nu te gebruiken met ART op Android 4.4.2. Eindelijk!\n
@@ -762,8 +811,8 @@ Versie 0.9.7b\n
Versiie 0.8.6\n
* Ondersteuning voor Twofish codering\n
* Mogelijkheid om groepen te bewerken\n
- * Mogelijkheid om invoer en groepen te veranderen\n
- * QuickUnlock icoon kan transparant gemaakt worden (zie instellingen)\n
+ * Mogelijkheid om items en groepen te veranderen\n
+ * Snel Openen pictogram kan transparant gemaakt worden (zie instellingen)\n
* Bug fixes
@@ -771,7 +820,7 @@ Versie 0.9.7b\n
* Externe bestanden worden opgeslagen in de lokale applicatiecache om offline gebruik mogelijk te maken (inclusief wijzigen en latere synchronisatie)\n
* Notificatie-icoon om de versleutelingsstatus van de database weer te geven (zie instellingen)\n
* Verbeterde bepaling van versleutelingsstatus in sommige situaties\n
- * Database-bestanden worden in het geheugen geladen terwijl u het wachtwoord aan het typen bent voor betere prestaties (zie instellingen)\n
+ * Database-bestanden worden in het geheugen geladen terwijl je het wachtwoord aan het typen bent voor betere prestaties (zie instellingen)\n
* Items kunnen aan de root-groep worden toegevoegd \n
* Bug fixes (oplossing voor verwijzingen, problemen met toetsenbord op Italiaanse en Chinese toestellen)
@@ -785,14 +834,14 @@ Versie 0.9.7b\n
Bedankt aan Alex Vallat voor zijn bijdragen in de code!\n
Bedankt aan Niki Hüttner (www.close-cut.de) voor het nieuwe logo!\n
Versie 0.8.3\n
-* Gebruikersnaam/TAN index weergegeven in lijst (zie instellingen)\n
-* Regels kunnen gemaakt worden als een zoekopdracht van de broweser geen resultaten geeft\n
-* KP2A toetsenbord bied mogelijkheid om referenties te zoeken voor huidige app\n
-* App sluit automatisch na het selecteren van een regel voor gebruik in het toetsenbord\n
+* Gebruikersnaam/TAN index weergegeven in item lijst (zie instellingen)\n
+* Items kunnen gemaakt worden als een zoekopdracht van de browser geen resultaten geeft\n
+* KP2A toetsenbord bied mogelijkheid om inloggegevens te zoeken voor huidige app\n
+* App sluit automatisch na het selecteren van een item voor gebruik in het toetsenbord\n
* Toetsenbord selectievenster opent automatisch na het zoeken voor een URL (zie instellingen)\n
-* Plaatsvervangers in invoervelden worden vervangen voor het kopiëren (meeste plaatsvervangers ondersteund)\n
+* Plaatsvervangers in item velden worden vervangen vóór het kopiëren (de meeste plaatsvervangers worden ondersteund)\n
* kleine bug fixes
-Â Â
+Â Â
Version 0.8.2\n
* Ondersteuning voor Digest Authentication in WebDAV\n
* Bugfixes (OI File manager, Open URL)
@@ -811,7 +860,7 @@ Versie 0.9.7b\n
Uitgelezen kans om biertje te schenken of iets anders
Versie 0.7\n
* Verbeterde laadsnelheid: sleuteltransformaties zijn nu 10x sneller!\n
-* Keepass2Android soft-keyboard toegevoegd: Schakel naar dit toetsenbord over voor het invoeren van referenties. Beschermt u van klembord gebaseerde wachtwoord afluisterapps (schakel oude klembord meldingen uit in de instellingen)\n
+* Keepass2Android soft-keyboard toegevoegd: Schakel naar dit toetsenbord over voor het invoeren van inloggegevens. Beschermt je tegen klembord gebaseerde wachtwoord afluisterapps (schakel oude klembord meldingen uit in de instellingen)\n
* Optie toegevoegd om een biertje te doneren of iets anders (Zie menu)
Versie 0.6.2\n
* Google Drive/Dropbox/... integratie: Gebruik de officiële Google Drive or Dropbox App en open elke .kdbx-file. Dat zal nu KP2A openen.\n
@@ -875,11 +924,22 @@ Eerste publieke publicatie
- Waarschuw als validatie mislukt
- Accepteer geen ongeldige certificaten
- Controleer of dit werkt op uw systeem. Zo niet, overweeg dan het gebruik van het ingebouwde toetsenbord.
+ Controleer of dit werkt op jouw systeem. Zo niet, overweeg dan het gebruik van het ingebouwde toetsenbord.
Beschrijving door de plugin:
- Keepass2Android ondersteunt de functionaliteit voor automatisch aanvullen van Android, maar het lijkt er op dat u dit nog niet hebt ingeschakeld.
+ Keepass2Android ondersteunt de functionaliteit voor automatisch aanvullen van Android, maar het lijkt er op dat je dit nog niet hebt ingeschakeld.
Automatisch aanvullen inschakelen
+ Sorry, jouw apparaat ondersteund het openen van systeem instellingen vanuit de app niet. Ga zelf naar de systeem instellingen voor automatisch aanvullen om deze dienst te activeren.
Toon help voor automatisch aanvullen
Vullen met Keepass2Android
Kon domein %1$s niet koppelen met app %2$s
+ Ik begrijp het
+ Niet meer tonen
+ Weet je het hoofdwachtwoord nog?
+ Merk op dat zonder hoofdwachtwoord de database niet te openen is. Er is geen manier om het hoofdwachtwoord te \"resetten\".
+ Merk ook op dat een ontgrendelen met vingerafdruk werkt door jouw hoofdwachtwoord op de slaan in Androids veilige opslag. Deze opslag kan op een willekeurig moment door Android gewist worden, bijvoorbeeld als je een nieuwe vingerafdruk toevoegt in de systeem instellingen. Vertrouw dus niet op je vingerafdruk, maar onthoud alsjeblieft het hoofdwachtwoord!
+ Worden er back-ups gemaakt van jouw database?
+ Keepass2Android bewaart je wachtwoorden in een file op een door jou gekozen locatie. Weet je zeker dat je deze file nog steeds hebt als je telefoon verloren raakt, of gestolen, of als de file gewist wordt? Zorg alsjeblieft altijd voor een recente back-up op een veilige plaats!
+ Om nu een back-up te maken, ga naar %1$s > %2$s > %3$s.
+ Ben je voorbereid op nood situaties?
+ Heb je ooit nagedacht over wat er gebeurd als je niet meer in staat bent om je wachtwoorden database te gebruiken? Wat als je een ongeluk krijgt? Veel mensen geven voor noodgevallen hun hoofdwachtwoord aan een persoon die ze vertrouwen. Anders heeft niemand meer toegang tot jouw wachtwoorden.
diff --git a/src/keepass2android/Resources/values-pl/strings.xml b/src/keepass2android/Resources/values-pl/strings.xml
index fa7ea47c..a6752eff 100644
--- a/src/keepass2android/Resources/values-pl/strings.xml
+++ b/src/keepass2android/Resources/values-pl/strings.xml
@@ -87,7 +87,11 @@
Włącz odblokowywanie odciskiem palca
Włącz odblokowywanie odciskiem palca dla QuickUnlock
Czujnik dotykowy do odblokowania bazy danych
+ Odblokowanie linii papilarnych nie powiodło Klucz deszyfrowania został unieważniony przez system operacyjny Android. Zwykle dzieje się tak, gdy zarejestrowano nowy odcisk palca lub zmieniono ustawienia zabezpieczeń.
+ Odblokowywanie bazy danych nie powiodło się: nieprawidłowy klucz złożony. Linii papilarnych Unlock została wyłączona, ponieważ najwyraźniej zapisane hasła głównego nie jest już prawidłowy.
Proszę ponownie aktywować odblokowywanie przy pomocy odcisku palca dla nowego hasła głównego.
+ Proszę odblokować używając twojego hasła, następnie restart Skanera Odcisków pałcow w bazie ustawień.
+ Nie udało się zainicować sensora czujnika linii papilarnych.
To zachowa twoje hasła główne na tym urządzeniu.
zaszyfrowane przy pomocy zestawu kluczy Androida i chronione
@@ -332,6 +336,7 @@ To zachowa twoje hasła główne na tym urządzeniu.
Oddzielne powiadomienia
Pokaż oddzielne powiadomienia dla kopiowania nazwy użytkownika i hasła do schowka oraz aktywacji klawiatury.
AutoUzupełnienie – usługa dostępności
+ Serwis autowypwłnienia
Powiadomienie klawiatury KP2A
Udostępnij pełny wpis przez klawiaturę KP2A (zalecane).
Przełącz klawiaturę
@@ -492,6 +497,7 @@ To zachowa twoje hasła główne na tym urządzeniu.
wyłączone
Znajdź wtyczki online
Zakresy
+ nie włączone
%1$s żąda poświadczeń dla %2$s.
%1$s żąda poświadczeń. Wybierz wpis.
Włączone
@@ -571,6 +577,9 @@ To zachowa twoje hasła główne na tym urządzeniu.
Zapytaj po wystąpieniu błędu
Wyślij raporty o błędach
Pokaż klawiaturę ekranową do wpisywania hasła podczas skanowania linii papilarnych.
+ Wersja 1.0.4 \n
+ * dodano serwis autowypełniania dla Android\'a 8.0 i dalej. \n
+ * ulepszono biblioteki, narzędzia budownicze oraz wersję Cela SDK \n
Wersja 1.03\n
* Usunięto usługę dostępności AutoUzupełniania, zgodnie z żądaniem Google. Proszę zobaczyć ustawienia dostępu do hasła, gdzie można znaleźć plugin replikujący poprzednią funkcjonalność.\n
@@ -857,4 +866,8 @@ Podziękowania dla Niki Hüttner (www.close-cut.de) za nowe logo!\n
Upewnij się, że to działa na twoim systemie, a jeśli nie to rozważ użycie wbudowanej klawiatury.
Opis dostarczony przez wtyczkÄ™:
+ Keepass2Android wspiera funkcję autowypełnianie Androida, ale widać że nie włączyłeś jej.
+ Włącz Autowypełnianie
+ Pokaż pomoc autowypełniania
+ Wypełnij z Keepass2Android
diff --git a/src/keepass2android/Resources/values-pt-rBR/strings.xml b/src/keepass2android/Resources/values-pt-rBR/strings.xml
index 2ebf6cb5..9b1265af 100644
--- a/src/keepass2android/Resources/values-pt-rBR/strings.xml
+++ b/src/keepass2android/Resources/values-pt-rBR/strings.xml
@@ -87,7 +87,11 @@
Ativar por completo o Desbloqueio de Digital
Ativar o Desbloqueio de Digital para o QuickUnlock
Sensor de toque para desbloquear a base de dados
+ Desbloqueio por impressão digital falhou: Chave para desencriptação foi invalidada pelo sistema Android. Isto costuma acontecer se for adicionada uma nova impressão digital ao sistema ou se os parâmetros de segurança forem alterados.
+ Desbloqueio da base de dados falhado: Chave composta inválida. O desbloqueio por impressão digital foi desativado porque aparentemente a chave mestra arquivada não é válida.
Por favor, reative o Desbloquear com Impressão Digital para a nova senha mestre.
+ Por favor desbloqueie com sua senha e reative o desbloqueio por impressão digital nas configurações da base de dados.
+ Falha ao inicializar o sensor de impressão digital.
Isto armazenará a sua senha mestre neste dispositivo, criptografada com a Armazenagem
de Chaves do Android e protegida usando a autenticação com impressão digital. Permite desblo-
@@ -205,6 +209,7 @@
Lembrar o local dos arquivos chave
Salvar arquivo chave
Remover
+ Editar
Rijndael (AES)
Raiz
Função chave da derivação
@@ -268,6 +273,7 @@
O arquivo a ser importado será selecionado na próxima etapa.
Habilitar o QuickUnlock
Digite os últimos %1$d caracteres de sua senha:
+ Digite o código QuickUnlock:
Desbloqueio Rápido!
Fechar banco de dados
Habilitar Desbloqueio Rápido por padrão
@@ -280,6 +286,8 @@
QuickUnlock requer uma notificação para funcionar corretamente. Selecione esta opção para exibir uma notificação sem um Ãcone.
Comprimento da senha do QuickUnlock
Número máximo de caracteres usado como senha do QuickUnlock.
+ Esconder o tamanho do código QuickUnlock
+ Se ativado, o tamanho do código QuickUnlock não é exibido durante a digitação.
O QuickUnlock falhou: senha incorreta!
Pasta de anexos
Pasta onde os anexos de arquivos são salvos.
@@ -312,6 +320,8 @@
Limpar a senha mestra digitada ao sair da tela sem desbloquear a base de dados.
Bloquear quando deixar o app
Feche o banco de dados quando sair do app pressionando o botão voltar.
+ Ativar campo de procura ao iniciar
+ Ativa o campo de pesquisa no modo de exibição de grupo após o desbloqueio ou quando à procura de um registro
Ocultar a opção de doação
Esta configuração é para doadores. Está disponÃvel depois de usar o Keepass2Android por um tempo apenas.
Sem doações, este app não existiria e não poderia ser melhorado continuamente! Se você ainda não doou, por favor, considere fazer uma doação agora.
@@ -319,6 +329,10 @@
Já doei ou não doarei nenhum centavo. Não me peça doação novamente, nem no aniversário do criador.
Cache do banco de dados
Mantém uma cópia de arquivos remotos de banco de dados no diretório de cache do aplicativo. Isto permite o uso de bancos de dados remotos mesmo desconectado.
+ Cópias de segurança locais
+ Cria um backup local após carregar com sucesso o banco de dados.
+ Atualizando a cópia de segurança local...
+ Cópia de segurança local de %1$s
Certificados SSL
Definir o comportamento quando uma validação de certificado falhar. Nota: você pode instalar certificados no seu dispositivo se a validação falhar!
Limpar o cache?
@@ -332,6 +346,7 @@
Notificações separadas
Exibir notificações separadas para copiar nome de usuário e senha para área de transferência e ativar o teclado.
Serviço de Acessibilidade para Preenchimento Automático
+ Serviço de preenchimento automático
Notificação do teclado KP2A
Tornar toda a entrada disponÃvel através do teclado KP2A (recomendado).
Trocar teclado
@@ -346,6 +361,10 @@
Retornar ao teclado anterior se não há entrada aberta.
Ãcone de notificação enquanto desbloqueado
Mostra uma notificação permanente enquanto o banco de dados está desbloqueado.
+ O android 8 introduziu um novo comportamento para as notificações. Se quiser esconder o Ãcone de notificação do Keepass2Android, faça através das configurações do sistema. Altere a importância da categoria de notificação para MÃnimo.
+ Abrir as configurações
+ Eu não ligo
+ O arquivo não está mais acessÃvel ao Keepass2Android. Pode ter sido removido ou as permissões de acesso foram revogadas. É necessário reabrir o arquivo, por exemplo usando \"Alterar banco de dados\".
Pré-carregar arquivo de banco de dados
Inicia o carregamento ou download em segundo plano do arquivo de banco de dados durante a inserção da senha.
Você deseja sobrescrever o binário existente com o mesmo nome?
@@ -492,6 +511,7 @@
desativado
Encontrar plug-ins on-line
Escopos
+ desativado
%1$s está solicitando credenciais para %2$s.
%1$s está solicitando credenciais. Por favor, selecione uma entrada.
Ativado
@@ -519,6 +539,7 @@
Parece que você abriu o arquivo de um aplicativo externo. Esta forma não oferece suporte a gravação. Se você desejar fazer alterações na base de dados, por favor, feche-o e selecione Alterar a base de dados. Depois, se possÃvel, abra o arquivo a partir de uma das opções disponÃveis.
O sinalizador somente leitura foi definido. Remova-o se você desejar fazer alterações na base de dados.
Não é possÃvel gravar devido a restrições introduzidas no Android KitKat. Se você desejar fazer alterações na base de dados, feche-a e selecione Alterar a base de dados. Depois, abra o arquivo usando o Seletor de arquivo do sistema.
+ Os backups locais não podem ser modificados. Mas você pode usar \"Configuração de banco de dados\" - \"Exportar banco de dados\" para outro local e reabri-lo. Então poderá alterá-lo.
Adicionar Ãcone do arquivo...
Copiando arquivo...
Copiar
@@ -554,6 +575,11 @@
• Assegure-se de ter selecionado o arquivo correto da base de dados.
+
+ \n • Dica: se você acha que seu arquivo de banco de dados pode estar corrompido, ou não se lembra da chave mestra após modificá-lo, você pode tentar com a última versão do arquivo aberto com êxito, clicando em \"%1$s\" e selecionando o backup local.
+
+ • \n Dica: Keepass2Android tem armazenado a última versão do arquivo aberto com êxito na memória interna. Você pode abri-lo clicando em \"%1$s\" e selecionando o backup local.
+
O arquivo está corrompido.\n
Aqui estão algumas dicas que podem ajudar a diagnosticar o problema:\n
@@ -563,6 +589,12 @@
• Se você é capaz de abrir o arquivo no seu computador, entre em contato com o suporte. Você pode tentar salvá-lo com configurações diferentes (p.e. descompactado) no computador e tentar abri-lo novamente com o Keepass2Android.
+ Banco de dados desbloqueado
+ Notificação sobre o banco de dados sendo desbloqueado
+ Desbloqueio rápido
+ Notificação sobre o banco de dados sendo bloqueado com QuickUnlock
+ Notificações de entrada
+ Notificação para simplificar o acesso à entrada selecionada.
Keepass2Android: Um erro ocorreu.
Um erro inesperado ocorreu durante a execução do Keepass2Android. Por favor ajude-nos a consertá-lo permitindo que o aplicativo envie relatórios de erros.
Relatórios de erros nunca conterão nenhum conteúdo de sua base de dados ou senha mestre. Você pode desabilitá-los nas configurações da aplicação.
@@ -571,6 +603,28 @@
Perguntar após erro
Enviar relatórios de erros
Mostre o teclado compacto para senhas quando a verificação de impressão digital estiver ativa.
+
+Versão 1.05\n
+* Usa o canal de notificações para o Android 8, permitindo configuração através das configurações do sistema\n
+* Mostra o Ãcone nas notificações\n
+* Uso de Ãcones adaptativos para Android 8, usa Ãcone redondo no launcher para Android 7\n
+* Permite ativar a pesquisa após desbloqueio (ver configurações)\n
+* Alterada a maneira que os arquivos são escritos através do framework de acesso ao armazenamento, corrigidos problemas com a atualização de arquivos no Google Drive abertos através do selecionador de arquivos do sistema\n
+* Adicionados textos informativos para evitar confusões comuns\n
+* Criação de cópia de segurança local de base de dados aberta com sucesso para reduzir o risco de perda de dados\n
+* Atualizado JSch para suportar as cifras SSH mais recentes\n
+* Permite editar configurações de conexão, por exemplo para quando a senha WebDav é alterada\n
+* Adicionado suporte para mode de senha estática do YubiKey Neo\n
+* Permite desligar a sugestão de Auto preenchimento\n
+* Corrigido o vazamento de dados para o logcat\n
+* Correção de bugs\n
+
+Versão 1.04b\n
+* Evita a falha da aplicação quando o usuário tenta ativar o auto preenchimento em equipamentos Huawei.\n
+
+Versão 1.04\n
+ * Adicionado serviço de auto preenchimento para android 8.0 e posterior.\n
+ * Atualizadas bibliotecas, ferramentas de construção e versão de SDK.\n
Versão 1.03\n
* Remoção do Serviço de Acessibilidade para Preenchimento Automático conforme requisitado pelo Google. Favor consultar as Configuraçãoes de acesso à senha para encontrar um plugin que replica a funcionalidade anterior\n
@@ -872,4 +926,20 @@ Lançamento público inicial
Certifique-se de que isto funciona no seu sistema e considere usar o teclado embutido se não.
Descrição fornecida pelo plugin:
+ Keepass2Android suporta o preenchimento automático do sistema Android mas parece que você ainda não o ativou.
+ Ativar preenchimento automático
+ Desculpe, parece que seu dispositivo não tem suporte para abrir as configurações de dentro do aplicativo. Acesse manualmente as configurações do sistema para habilitar o serviço de preenchimento automático.
+ Mostrar ajuda de preenchimento automático
+ Preencher com Keepass2Android
+ Não foi possÃvel associar o domÃnio %1$s com a aplicação %2$s
+ Entendido
+ Não mostrar novamente
+ Você se lembra de sua senha mestra?
+ Observe que você não será capaz de abrir o seu banco de dados sem a chave mestra. Não há nenhuma maneira para \"zerar\" a senha mestra.
+ Também note que o desbloqueio por impressão digital funciona guardando a sua chave mestra no armazenamento seguro do Android. Este armazenamento pode ser apagado pelo Android a qualquer momento, por exemplo se adicionar uma nova impressão digital ao sistema. Portanto não dependa apenas da sua impressão digital, lembre-se sempre da sua chave mestra, por favor!
+ Seu banco de dados tem backup?
+ Keepass2Android armazena suas senhas em um arquivo em um local de sua escolha. Tem certeza que você ainda pode acessar este arquivo quando seu telefone fica perdido ou roubado, ou quando o arquivo for destruÃdo ou excluÃdo? Por favor, certifique-se de ter sempre um backup atualizado em lugar seguro!
+ Para criar uma cópia de segurança, vá em %1$s > %2$s > %3$s.
+ Está preparado para casos de emergência?
+ Já pensou o que acontece se você não for capaz de acessar seu banco de dados de senhas? Se você tiver um acidente? É uma boa prática transmitir sua chave mestra para uma pessoa de confiança para casos de emergência. Caso contrário, ninguém terá acesso a suas senhas.
diff --git a/src/keepass2android/Resources/values-pt-rPT/strings.xml b/src/keepass2android/Resources/values-pt-rPT/strings.xml
index e35f27c1..5fdea35f 100644
--- a/src/keepass2android/Resources/values-pt-rPT/strings.xml
+++ b/src/keepass2android/Resources/values-pt-rPT/strings.xml
@@ -207,6 +207,7 @@ Muito útil se existirem muitos resultados iguais.
Lembrar localização dos ficheiros-chave
Guardar ficheiro-chave
Remover
+ Editar
Rijndael (AES)
Raiz
Função de derivação de chave
@@ -270,6 +271,7 @@ Muito útil se existirem muitos resultados iguais.
O ficheiro a ser importado será selecionado na próxima etapa.
Ativar o Desbloqueio-Rápido
Insira os últimos %1$d caracteres de sua palavra-passe:
+ Introduza o código de desbloqueio rápido:
Desbloqueio-Rápido!
Fechar base de dados
Ativar Desbloqueio-Rápido por defeito
@@ -282,6 +284,8 @@ Muito útil se existirem muitos resultados iguais.
O Desbloqueio-Rápido exige uma notificação para funcionar corretamente. Selecione esta opção para mostrar uma notificação sem um Ãcone.
Comprimento da chave do Desbloqueio-Rápido
Número máximo de caracteres usado como palavra-passe de Desbloqueio-Rápido.
+ Esconder o comprimento do código de desbloqueio rápido
+ Se ativo, o comprimento do código de desbloqueio rápido não será exibido no ecrã de desbloqueio rápido.
Desbloqueio-Rápido falhou: palavra-passe incorreta!
Pasta para os anexos
Pasta para onde os anexos são guardados.
@@ -314,6 +318,8 @@ Muito útil se existirem muitos resultados iguais.
Limpe a palavra-passe mestra quando abandonar o ecrã sem desbloquear a base de dados.
Bloquear ao sair da aplicação
Bloquear a base de dados ao fechar a aplicação pressionando o botão voltar.
+ Ativar campo de procura ao iniciar
+ Ativa o campo de procura na vista de grupo após desbloquear ou quando procura por uma entrada
Esconder opção para doar
Esta configuração é para doadores. Estará disponÃvel após usar o Keepass2Android por algum tempo.
Sem doações, esta aplicação não existiria e nem poderia ser melhorada continuamente! Se ainda não doou, por favor, considere fazer uma doação agora.
@@ -321,6 +327,10 @@ Muito útil se existirem muitos resultados iguais.
Não vou doar um cêntimo ou já doei. Não voltar a pedir uma doação, nem no aniversário do autor.
Cache da base de dados
Guardar uma cópia das bases de dados remotas no diretório de cache da aplicação. Isto permite para usar bases de dados remotas, mesmo offline.
+ Copias de segurança local
+ Cria uma cópia de segurança local após carregar com sucesso a base de dados.
+ Atualizando a cópia de segurança local...
+ Cópia de segurança local de %1$s
Certificados SSL
Defina o comportamento quando a validação do certificado falhar. Atenção: pode instalar certificados no seu dispositivo se a validação falhar!
Eliminar a cache?
@@ -349,6 +359,10 @@ Muito útil se existirem muitos resultados iguais.
Alternar para teclado anterior se não houver entrada aberta.
Ãcone de notificação enquanto desbloqueado
Mostrar uma notificação em curso enquanto a base de dados está desbloqueada.
+ O android 8 introduziu um novo comportamento para notificações. Se quiser pode esconder o icon das notificações do Keepass2Android, por favor configure isto através das configurações do sistema. Defina a importância das notificações para o mÃnimo.
+ Abrir configurações
+ Não quero saber
+ O ficheiro já não está acessÃvel pelo Kepass2Android. Ou foi removido ou as permissões de acesso foram revogadas. Por favor reabra o ficheiro, por exemplo altere a base de dados.
Pré-carregar o ficheiro da base de dados
Iniciar o carregamento ou transferência em segundo plano do ficheiro da base de dados durante a inserção da palavra-passe.
Pretende substituir o binário existente com o mesmo nome?
@@ -523,6 +537,7 @@ Muito útil se existirem muitos resultados iguais.
Parece que abriu o ficheiro a partir de uma aplicação externa. Desta forma não oferece suporte para escrita. Se quiser fazer alterações na base de dados, feche a base de dados e selecione Alterar base de dados. De seguida, abra o ficheiro com uma das opções disponÃveis, se possÃvel.
Está ativado o indicador somente leitura. Remova-o se desejar fazer alterações na base de dados.
Escrever não é possÃvel devido a restrições introduzidas no Android KitKat. Se você quiser fazer alterações no banco de dados, feche o banco de dados e selecione o banco de dados de alteração. De seguida, abra o arquivo usando o seletor de arquivo de sistema.
+ Backup local não pode ser modificado. Você pode usar as configurações da base de dados - Exportar base de dados para exportar esta cópia de segurança para outra localização a partir da qual você pode-a abrir. Irá permitir a escrita novamente.
Adicionar Ãcone a partir de um ficheiro...
A copiar ficheiro...
Cópia
@@ -558,6 +573,12 @@ Muito útil se existirem muitos resultados iguais.
• Certifique ter selecionado o ficheiro correto da base de dados.
+
+\n
+ • Dica: se você acha que seu ficheiro de base de dados possa estar corrompido ou não se lembra da chave mestra após modificá-la, você pode tentar com a última versão do ficheiro aberto com sucesso, clicando em \"%1$s\" e selecionando a cópia de segurança local.
+
+\n
+ • Dica: Keepass2Android guardou com sucesso a versão do último ficheiro aberto com sucesso na memória interna. Você pode abri-lo clicando em \"%1$s\" e selecionado a cópia de segurança local.
O ficheiro está corrupto.\n
Aqui estão algumas dicas que podem ajudar a diagnosticar o problema:\n
@@ -567,6 +588,12 @@ Muito útil se existirem muitos resultados iguais.
• Se é capaz de abrir o ficheiro no seu computador, entre em contacto com o suporte. Pode tentar grava-lo com definições diferentes (p.e. descompactado) no computador e tentar abri-lo novamente com o Keepass2Android.
+ Base de dados debloqueada
+ Notificação acerca da base de dados sendo desbloqueada
+ Desbloqueio rápido
+ Notificação acerca da base de dados sendo desbloqueada com desbloqueio rápido
+ Entrada de notificações
+ Notificação para simplificar o acesso à entrada selecionada.
Keepass2Android: Ocorreu um erro.
Ocorreu um erro inesperado durante a execução do Keepass2Android. Por favor ajude-nos a corrigir, permitindo que a aplicação envie relatórios de erros.
Relatórios de erros nunca irão conter nenhum conteúdo de sua base de dados ou palavra-passe mestra. Pode desativa-los nas definições da aplicação.
@@ -575,6 +602,24 @@ Muito útil se existirem muitos resultados iguais.
Perguntar depois do erro
Enviar relatórios de erro
Mostrar teclado para inserção de palavra-passe quando a verificação de impressão digital estiver ativa.
+
+Versão 1.05\n
+* Usa o canal de notificações para o Android 8, permitindo configuração através das configurações do sistema\n
+* Mostra o icon da entrada na notificação\n
+* Uso de icons adaptativos para Android 8, usa icon de lançamento redondo para Android 7\n
+* Permite ativar a procura após desbloqueio (ver configurações)\n
+* Alterada a maneira que os ficheiros são escritos através da framework de acesso ao armazenamento, corrigidos problemas com a atualização de ficheiros na Google Drive abertos através do sistema de escolha de ficheiros\n
+* Adicionados textos informativos sobre confusões comuns\n
+* Criação de cópia de segurança local de base de dados aberta com sucesso para reduzir o risco de perda de dados\n
+* Atualizado JSch para suportar as cifras SSH mais recentes\n
+* Permite editar configurações de ligações, por exemplo quando a password WebDav é alterada\n
+* Adicionado suporte para YubiKey Neo\'s modo de password estática\n
+* Permite desligar a sugestão de Auto preenchimento\n
+* Corrigido a fuga de dados para o logcat\n
+* Correção de bugs\n
+
+Versão 1.04b\n
+* Evita a falha da aplicação quando o utilizador tenta ativar o auto preenchimento em equipamentos Huawei.\n
Versão 1.04\n
* Adicionado serviço de auto preenchimento para android 8.0 e posterior.\n
@@ -880,7 +925,19 @@ Lançamento público inicial
Descrição fornecida pela extensão:
Keepass2Android suporta o Auto preenchimento do sistema Android mas parece que ainda não o ativou.
Ativar o auto preenchimento
+ Lamento, parece que o seu dispositivo não suporta abrir as configurações dentro da aplicação. Por favor vá manualmente às configurações do sistema para auto preenchimento para ativar o serviço.
Mostrar ajuda para auto preenchimento
Preencher com Keepass2Android
Não foi possÃvel associar o domÃnio %1$s com a aplicação %2$s
+ Eu entendo
+ Não mostrar novamente
+ Recorda-se da sua chave mestra?
+ Note que não vai conseguir abrir a sua base de dados sem a sua chave mestra.
+Não há forma de fazer \"reset\" à chave mestra.
+ Também note que o desbloqueio por impressão digital funciona por guardar a sua chave mestra no armazenamento seguro do Android. Este armazenamento pode ser apagado pelo Android a qualquer altura, por exemplo se adicionar uma nova impressão digital ao sistema. Portanto não dependa apenas da sua impressão digital, lembre-se sempre da sua chave mestra, por favor!
+ Fez cópia de segurança da sua base de dados?
+ Keepass2Android guarda as suas passwords num ficheiro numa localização do seu dispositivo à sua escolha. Tem a certeza que consegue aceder ao ficheiro caso o seu telemóvel seja perdido ou roubado, ou caso o ficheiro seja destruÃdo ou apagado? Por favor, tenha a certeza que tem uma cópia de segurança atualizada num local seguro!
+ Para criar uma cópia de segurança agora, por favor ir a %1$s > %2$s > %3$s.
+ Está preparado para casos de emergência?
+ Já considerou em o que acontece caso você não consiga aceder à sua base de dados? E se tem um acidente? É uma boa prática dar a sua senha mestra a alguém de sua confiança para situações de emergência. Ninguém vai conseguir aceder às suas passwords de outra forma.
diff --git a/src/keepass2android/Resources/values-ru/strings.xml b/src/keepass2android/Resources/values-ru/strings.xml
index 59c78bec..bbb9bcc1 100644
--- a/src/keepass2android/Resources/values-ru/strings.xml
+++ b/src/keepass2android/Resources/values-ru/strings.xml
@@ -22,9 +22,9 @@
KP2A
Keepass2Android в автономном режиме
KP2A в автономном режиме
- Блокировка базы
+ Таймаут блокировки базы
Задержка блокировки при бездейÑтвии
- Закрыть приложение
+ Принудительно закрыть приложение
Кнопка закрытиÑ
Показать кнопку Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° Ñкране Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼ (Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð½Ð¾Ð¸ÐºÐ¾Ð²)
Приложение
@@ -78,26 +78,22 @@
КоÑнитеÑÑŒ датчика
Подтвердите отпечатком пальца, чтобы продолжить
Ðе удалоÑÑŒ уÑтановить разблокировку отпечатком пальца:
- Отпечатки пальцев не раÑпознаны. Повторите еще раз
+ Отпечаток не раÑпознан. Повторите ещё раз
Отпечаток пальца раÑпознан
Ð”Ð»Ñ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ отпечатком пальца требуетÑÑ Android 6.0 или более поздней верÑии.
- Ðе найдено уÑтройÑтво Ð´Ð»Ñ Ñ€Ð°ÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð¿ÐµÑ‡Ð°Ñ‚ÐºÐ¾Ð² пальцев.
+ Сканер отпечатка пальцев на обнаружен.
У Ð²Ð°Ñ Ð½Ðµ зарегиÑтрированы отпечатки пальцев на Ñтом уÑтройÑтве. ПожалуйÑта, Ñначала перейдите в ÑиÑтемные наÑтройки.
- Отключить разблокировку отпечатками пальцев
- Включить полную разблокировку отпечатками пальцев
- Включить разблокировку отпечатками пальцев Ð´Ð»Ñ Ð‘Ñ‹ÑтройРазблокировки
- ПрикоÑнутьÑÑ Ðº датчику, чтобы разблокировать базу данных
+ Отключить доÑтуп по отпечатку пальца
+ Включить полную разблокировку отпечатком пальца
+ Включить разблокировку отпечатком пальца Ð´Ð»Ñ Ð‘Ñ‹ÑтройРазблокировки
+ ПрикоÑнутьÑÑ Ðº датчику, чтобы разблокировать БД
Ошибка разблокировки отпечатком пальца. Ключ Ð´ÐµÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ñ‹Ð» Ñброшен операционной ÑиÑтемой. Ðто проиÑходит, еÑли был зарегиÑтрирован новый отпечаток пальца или были изменены наÑтройки безопаÑноÑти.
Ошибка при разблокировании базы данных: неверный ÑоÑтавной ключ. Разблокирование Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ отпечатка пальца было отключено, так как хранÑщийÑÑ Ð¼Ð°Ñтер-пароль больше не работает.
- ПожалуйÑта включите разблокировку отпечатками пальцев Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ маÑтер-паролÑ.
+ Ð”Ð»Ñ ÑƒÑтановки нового маÑтер-Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ повторно доÑтуп по отпечатку пальца.
ПожалуйÑта, разблокируйте Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вашего Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸ затем заново включите функцию Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ отпечатка пальца в наÑтройках базы данных.
Ðе получилоÑÑŒ запуÑтить ÑенÑор отпечатков пальцев.
-
- Ðто Ñохранит ваш маÑтер-пароль на Ñтом уÑтройÑтве,
- зашифрует при помощи Android Keystore и защитит
- иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸ÑŽ по отпечаткам пальцев. Позволит разблокировать базу данных отпечатком пальца.
-
- Разрешить иÑпользовать отпечаток пальца вмеÑто кода QuickUnlock. Ðто не потребует Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸, ÑвÑзанной Ñ Ð²Ð°ÑˆÐ¸Ð¼ маÑтер-паролем.
+ Ваш маÑтер-пароль будет Ñохранен на данном уÑтройÑтве в Хранилище учетных данных Ñ Ð´Ð¾Ñтупом по отпечатку пальца. ДоÑтуп к базе паролей будет разрешен только по отпечатку пальца.
+ Разрешить иÑпользовать отпечаток пальца вмеÑто кода QuickUnlock. Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ Ð²Ð°ÑˆÐ¸Ð¼ маÑтер-паролем не ÑохранÑетÑÑ.
Введите Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° базы данных
ДоÑтуп
Отмена
@@ -175,7 +171,7 @@
ÐаÑтройки
ÐаÑтройки базы данных
Удалить
- Создать дубликат
+ Дублировать
ПеремеÑтить в другую группу
ПеремеÑтить
Перейти к родительÑкой группе
@@ -210,6 +206,7 @@
Запоминать пути к файлам-ключам
Сохранить файл-ключ
Удалить из ÑпиÑка
+ Изменить
Ðлгоритм ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Rijndael (AES)
Корень
Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ€Ð¸Ð²Ð°Ñ†Ð¸Ð¸ ключа
@@ -232,7 +229,7 @@
Сортировка по дате изменениÑ
ОÑтавить порÑдок по-умолчанию
ОÑобые
- Что найти
+ Что ищем
Результаты поиÑка
ПоиÑк в
Выбрать другую запиÑÑŒ
@@ -273,6 +270,7 @@
Ð’ Ñледующем шаге будет выбран файл Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ.
Включить QuickUnlock
Введите поÑледние %1$d Ñимволов вашего паролÑ:
+ ВвеÑти код Ð´Ð»Ñ Ð‘Ñ‹ÑтройРазблокировки:
БыÑтраÑРазблокировка!
Закрыть БД
Включить БыÑтруюРазблокировку по-умолчанию
@@ -282,9 +280,11 @@
Скрыть значок БыÑтройРазблокировки
К Ñожалению, БыÑтраÑРазблокировка не работает без Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° уведомлений. Включите Ñтот параметр Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾Ð³Ð¾ значка.
Скрыть значок БыÑтройРазблокировки
- БыÑтраÑРазблокировка требует ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¹ работы. Выберите Ñтот параметр Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ· значка.
+ QuickUnlock требует ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñвоей работы. Выберите Ñтот параметр чтобы отображать уведомление без иконки.
Длина ключа БыÑтройРазблокировки
МакÑимальное количеÑтво Ñимволов, иÑпользуемых как пароль БыÑтройРазблокировки.
+ Скрыть значок БыÑтройРазблокировки
+ ЕÑли включено, длина кода Ð´Ð»Ñ Ð‘Ñ‹ÑтройРазблокировки не будет отображатьÑÑ Ð½Ð° Ñкране.
БыÑтраÑРазблокировка не удалаÑÑŒ: неправильный пароль!
Каталог файлов-вложений
Каталог Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ñ… файлов.
@@ -317,13 +317,19 @@
ОчиÑтить введенный маÑтер-пароль при покидании Ñкрана без разблокировки базы данных.
Блокировать при выходе из приложениÑ
Блокировать БД при выходе кнопкой \"назад\".
+ Ðктивировать поле поиÑка при Ñтарте
+ Ðктивировать поле поиÑка в группе поÑле разблокировки или когда ищем значение
Скрыть опцию пожертвованиÑ
Ðта наÑтройка предназначена Ð´Ð»Ñ Ñ‚ÐµÑ…, кто пожертвовал. Она доÑтупна только поÑле иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Keepass2Android какое-то времÑ.
- Без Ð¿Ð¾Ð¶ÐµÑ€Ñ‚Ð²Ð¾Ð²Ð°Ð½Ð¸Ñ Ñто приложение не будет ÑущеÑтвовать и поÑтоÑнно ÑовершенÑтвоватьÑÑ! ЕÑли вы еще Ñтого не Ñделали, пожалуйÑта, пожертвуйте ÑейчаÑ.
+ Без Ð¿Ð¾Ð¶ÐµÑ€Ñ‚Ð²Ð¾Ð²Ð°Ð½Ð¸Ñ Ñто приложение не будет ÑущеÑтвовать и поÑтоÑнно ÑовершенÑтвоватьÑÑ! ЕÑли вы еще Ñтого не Ñделали, ÑÐµÐ¹Ñ‡Ð°Ñ Ñамое времÑ.
Ðикогда не Ñпрашивать о пожертвовании
Я не дам вам ни копейки, или Ñ ÑƒÐ¶Ðµ пожертвовал. Ðе Ñпрашивать о пожертвовании даже в день Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°.
КÑширование базы данных
СохранÑть копию удалённой базы данных в папке кÑша приложениÑ. Ðто даÑÑ‚ возможноÑть иÑпользовать удалённые базы в даже без доÑтупа к Ñети.
+ Локальные резервные копии
+ Создать локальную резервную копию поÑле уÑпешной загрузки БД.
+ Обновление локальной резервной копии...
+ Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ %1$s
SSL-Ñертификаты
Определите поведение при Ñбое проверки Ñертификата. Примечание: Ð’Ñ‹ можете уÑтановить Ñертификаты на вашем уÑтройÑтве, еÑли проверка не пройдена!
ОчиÑтить кÑш?
@@ -350,8 +356,12 @@
ПереключатьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки на клавиатуру KP2A только поÑле иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ \"Отправить URL\" (но не в других вариантах Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи)
Переключить клавиатуру обратно
ПереключитьÑÑ Ð½Ð°Ð·Ð°Ð´ на предыдущую клавиатуру, когда ни одна запиÑÑŒ не открыта.
- Значок ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ разблокировке
+ Уведомление, когда база разблокирована
Показывать уведомление, когда база разблокирована.
+ Android 8 предÑтавил нововведение Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹. ЕÑли Ð’Ñ‹ хотите Ñкрыть значок уведомлений Keepass2Android, наÑтройте его Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑиÑтемных наÑтроек. УÑтановите значение категории уведомлений как Минимум.
+ Открыть наÑтройки
+ Мне вÑÑ‘ равно
+ Файл больше недоÑтупен Ð´Ð»Ñ Keepass2Android. Либо он был удален, либо Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупа были отменены. ПожалуйÑта, откройте файл еще раз, например, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð˜Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ БД.
ÐŸÑ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° файла базы данных
ЗапуÑк фоновой загрузки или ÑÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° базы данных во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð° паролÑ.
Ð’Ñ‹ хотите перезапиÑать ÑущеÑтвующий двоичный файл Ñ Ñ‚ÐµÐ¼ же именем?
@@ -362,7 +372,7 @@
Корзина
Ð’Ñ‹ хотите окончательно удалить Ñту запиÑÑŒ? Ðажмите Ðет, чтобы перемеÑтить в корзину.
Ð’Ñ‹ хотите окончательно удалить Ñту группу? Ðажмите Ðет, чтобы перемеÑтить в корзину.
- Ð’Ñ‹ хотите удалить навÑегда выбранные Ñлементы? Ðажмите No Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹.
+ Ð’Ñ‹ хотите окончательно удалить Ñту запиÑÑŒ? Ðажмите Ðет, чтобы перемеÑтить в корзину.
Ð’Ñ‹ хотите навÑегда удалить Ñту запиÑÑŒ?
Ð’Ñ‹ хотите навÑегда удалить Ñту группу?
Ð’Ñ‹ хотите навÑегда удалить выбранные Ñлементы?
@@ -393,7 +403,7 @@
Работать в автономном режиме
Работать онлайн
ИÑпользование локальной копии файла в кÑше позволит избежать трат Ñетевого трафика. Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑохранÑÑŽÑ‚ÑÑ Ð² локальном кÑше и будут загружены только при переключении обратно в онлайн-режим.
- Работаем в автономном режиме.
+ Работать в автономном режиме.
Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÑшированной базы данных…
Скачивание удалённого файла…
Загрузка файла…
@@ -476,9 +486,9 @@
Ðе удалоÑÑŒ Ñоздать ключ одноразовых паролей! УбедитеÑÑŒ, что вы ввели корректные одноразовые пароли.
Ошибка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñпомогательного файла одноразовых паролей!
Сохранение вÑпомогательного файла одноразовых паролей…
- Ответа на Ð·Ð°Ð¿Ñ€Ð¾Ñ ÑвлÑетÑÑ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼.
+ Ответ на Ð·Ð°Ð¿Ñ€Ð¾Ñ ÑвлÑетÑÑ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼.
Ðе удалоÑÑŒ загрузить файл вÑпомогательной задачи!
- ПожалуйÑта, иÑпользуйте плагин KeeChallenge в KeePass 2.x (ПК) Ð´Ð»Ñ Ð½Ð°Ñтройки базы данных Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð¼ на запроÑ!
+ ПожалуйÑта, иÑпользуйте плагин KeeChallenge в KeePass 2.x (ПК) Ð´Ð»Ñ Ð½Ð°Ñтройки базы данных Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ñ€Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ паролÑ!
Ошибка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñпомогательного файла одноразовых паролей (OTP)!
Ð˜Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ TOTP
ЕÑли вы иÑпользуете плагин Keepass 2 \"TrayTotp\" Ñ Ð½ÐµÑтандартными наÑтройками, введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² ÑоответÑтвии Ñ Ð½Ð°Ñтройками на ПК.
@@ -502,7 +512,7 @@
%1$s запрашивает учетные данные Ð´Ð»Ñ %2$s.
%1$s запрашивает учетные данные. ПожалуйÑта, выберите запиÑÑŒ.
Включено
- Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ дейÑтвиÑÑ… Ñ Ð±Ð°Ð·Ð¾Ð¹ данных
+ Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ дейÑтвиÑÑ… Ñ Ð±Ð°Ð·Ð¾Ð¹
Плагин будет уведомлÑть при открытии, закрытии и Ñохранении базы данных.
Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ данных
Плагин будет получать вÑÑŽ информацию о текущей запиÑи базы данных и получит разрешение на предложение операций и модификацию внешнего вида Ñтой запиÑи.
@@ -526,6 +536,7 @@
КажетÑÑ, вы открыли файл из внешнего приложениÑ. ПоÑтому запиÑÑŒ не поддерживаетÑÑ. ЕÑли вы хотите внеÑти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² базу данных, пожалуйÑта, закройте ее и выберите пункт изменить базу данных. Затем откройте файл одним из доÑтупных вариантов, еÑли Ñто возможно.
УÑтановлен флаг только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ. Удалите Ñтот флаг, еÑли вы хотите внеÑти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² базу данных.
ЗапиÑÑŒ невозможна из-за ограничениÑ, введенного в Android KitKat. ЕÑли вы хотите внеÑти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² базу данных, закройте ее и выберите пункт изменить базу данных. Затем откройте файл Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑиÑтемного ÑредÑтва выбора файлов.
+ Локальные резервные копии не могут быть изменены. Ð’Ñ‹ можете иÑпользовать ÐаÑтройки БД - ÐкÑпорт БД Ð´Ð»Ñ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ¸ Ñтой резервной копии в другое меÑто, из которого Ð’Ñ‹ можете ее повторно открыть.
Добавить значок из файла...
Копируем файл...
Копировать
@@ -560,6 +571,13 @@
• УбедитеÑÑŒ, что вы выбрали правильный тип паролÑ. УбедитеÑÑŒ, что он Ñовпадает Ñ Ñ‚ÐµÐ¼ типом, который вы указывали при Ñоздании базы данных.\n
• УбедитеÑÑŒ, что вы выбрали правильный файл Ñ Ð±Ð°Ð·Ð¾Ð¹ данных.
+
+ \n
+ • ПодÑказка: ЕÑли Ð’Ñ‹ думаете, что файл БД может быть поврежден, или Ð’Ñ‹ не помните маÑтер-пароль поÑле его изменениÑ, то Ð’Ñ‹ можете попробовать поÑледнюю уÑпешно открытую верÑию файла, нажав на \"%1$s\", и выбрать локальную резервную копию.
+
+ \n
+ • ПодÑказка: Keepass2Android Ñохранил поÑледнюю уÑпешно открытую верÑию файла во внутреннюю памÑть. Ð’Ñ‹ можете открыть его, нажав на \"%1$s\", и выбрать локальную резервную копию.
+
Файл поврежден. \n
Тут приведены неÑколько подÑказок, которые могут помочь в решении Ñтой проблемы:\n
@@ -569,14 +587,40 @@
• ЕÑли файл открываетÑÑ Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ перÑонального компьютера, ÑвÑжитеÑÑŒ Ñ Ð½Ð°Ð¼Ð¸. Ð’Ñ‹ можете Ñохранить его Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ параметрами (например, в раÑпакованном виде) и попробовать открыть его Ñнова в Keepass2Android.
+ БД разблокирована
+ Уведомление о том, что БД разблокирована
+ БыÑтраÑРазблокировка
+ Уведомление о том, что БД будет заблокирована БыÑтройРазблокировкой
+ Уведомление о запиÑи
+ Уведомление Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ð¾Ð³Ð¾ доÑтупа к выбранной в данный момент запиÑи.
Keepass2Android: Произошла ошибка.
- ÐÐµÐ¿Ñ€ÐµÐ´Ð²Ð¸Ð´ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° произошла при запуÑке Keepass2Android. ПожалуйÑта, помогите нам иÑправить Ñто, позвольте приложению отправлÑть отчеты об ошибках.
+ ÐÐµÐ¿Ñ€ÐµÐ´Ð²Ð¸Ð´ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° произошла при запуÑке Keepass2Android. ПожалуйÑта, помогите нам иÑправить Ñто, разрешив приложению отправлÑть отчеты об ошибках.
Отчеты об ошибках никогда не будут Ñодержать любое Ñодержимое базы данных или маÑтер-пароль. Ð’Ñ‹ можете отключить их в наÑтройках приложениÑ.
Включить
Отключить
СпроÑить поÑле ошибки
Отправить отчёт об ошибке
Показывать клавиатуру Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð° паролÑ, еÑли Ñканер отпечатка пальца включен.
+
+ ВерÑÐ¸Ñ 1.05\n
+ * ИÑпользование каналов уведомлений Ð´Ð»Ñ Android 8 можно включить в ÑиÑтемных наÑтройках\n
+ * Показ иконки запиÑи в Ñтроке уведомлениÑ\n
+ * ИÑпользование адаптивных иконок Ð´Ð»Ñ Android 8, Ð´Ð»Ñ Android 7 - ÐºÑ€ÑƒÐ³Ð»Ð°Ñ Ð¸ÐºÐ¾Ð½ÐºÐ° лаунчера\n
+ * Можно активировать поиÑк при разблокировке (Ñм. ÐаÑтройки)\n
+ * Изменен ÑпоÑоб запиÑи файлов через Storage Access Framework, уÑтранÑет проблемы Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ файлов на Google.ДиÑке, открытых Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑиÑтемного \"Выбора файлов\"\n
+ * Добавлен некоторый информационный текÑÑ‚, чтобы избежать некоторых раÑпроÑтраненных заблуждений\n
+ * Создание локальных резервных копий уÑпешно открытых БД Ð´Ð»Ñ ÑÐ½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ñ€Ð¸Ñка потери данных\n
+ * Обновлен JSch Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ поÑледних шифров SSH\n
+ * ВозможноÑть Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² подключениÑ, например, при изменении Ð¿Ð°Ñ€Ð¾Ð»Ñ WebDav\n
+ * Добавлена поддержка режима ÑтатичеÑкого Ð¿Ð°Ñ€Ð¾Ð»Ñ Yubikey Neo\n
+ * ВозможноÑть отключить предложение ÐвтоЗаполнениÑ\n
+ * ИÑправлена утечка данных в logcat\n
+ * Другие иÑправлениÑ\n
+
+
+ ВерÑÐ¸Ñ 1.04b\n
+ * ИÑправление Ñбоев, когда пользователь пытаетÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ ÐвтоЗаполнение на уÑтройÑтвах Huawei.\n
+
ВерÑÐ¸Ñ 1.04\n * Добавлена Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ввода Ð´Ð»Ñ Ðндроида верÑий 8.0 и выше.\n * Обновлены библиотеки, инÑтрументы ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ Target SDK верÑиÑ.\n
@@ -867,8 +911,19 @@
УбедитеÑÑŒ, что Ñто работает на вашей ÑиÑтеме и иÑпользуйте вÑтроенную клавиатуру, еÑли нет.
ОпиÑание предоÑтавлено плагином:
Keepass2Android поддерживает функцию автоматичеÑкого ввода, но, вероÑтно, вы ещё не включили её.
- Включить Ðвтоввод
- Показать помощь по автоматичеÑкому вводу
- Ð’Ñтавить Ñ Keepass2Android
+ Включить автозаполнение
+ Извините, похоже, что Ваше уÑтройÑтво не поддерживает открытие наÑтроек внутри приложениÑ. Перейдите в ÑиÑтемные наÑтройки и вручную включите Ñлужбу ÐвтоЗаполнениÑ.
+ Показать помощь по автозаполнению
+ Ðвтозаполнить при помощи Keepass2Android
Ðе получаетÑÑ Ð°ÑÑоциировать домен %1$s Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ %2$s
+ Я понÑл
+ Больше не показывать
+ Ð’Ñ‹ помните Ваш маÑтер-пароль?
+ Обратите внимание, что Ð’Ñ‹ не Ñможете открыть БД без маÑтер-ключа. Ðе ÑущеÑтвует никакого ÑпоÑоба \"ÑброÑить\"маÑтер-пароль.
+ Также обратите внимание, что разблокировка по отпечатку пальца работает, ÑохранÑÑ Ð’Ð°Ñˆ маÑтер-ключ в безопаÑном хранилище Android. Ðто хранилище может быть удалено Ñамой ÑиÑтемой Android в любое времÑ, например, еÑли Ð’Ñ‹ добавите новый отпечаток пальца в ÑиÑтемные наÑтройки. Так что не полагайтеÑÑŒ только на отпечаток пальца, помните Ñвой маÑтер-пароль, пожалуйÑта!
+ У Ð’Ð°Ñ ÐµÑть Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð‘Ð”?
+ Keepass2Android хранит Ваши пароли в файле в выбранном Вами меÑте. Ð’Ñ‹ уверены, что можете получить доÑтуп к Ñтому файлу, еÑли Ваш телефон будет потерÑн или украден, или когда файл будет уничтожен или удален? ПожалуйÑта, убедитеÑÑŒ, что у Ð’Ð°Ñ ÐµÑть Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð² надежном меÑте!
+ Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð¹ копии, перейдите %1$s > %2$s > %3$s.
+ Ð Ð’Ñ‹ готовы к чрезвычайным ÑитуациÑм?
+ Ð’Ñ‹ когда-нибудь задумывалиÑÑŒ, что произойдет, еÑли Ð’Ñ‹ больше не Ñможете получить доÑтуп к БД Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñми? Что делать, еÑли Ñто произойдет? Хорошим ÑпоÑобом будет передача Вашего маÑтер-ключа неÑкольким доверенным лицам как раз Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… чрезвычайных Ñитуаций. Ð’ противном Ñлучае никто не будет иметь доÑтуп к Вашим паролÑм.
diff --git a/src/keepass2android/Resources/values-sk/strings.xml b/src/keepass2android/Resources/values-sk/strings.xml
index 3d88aa2e..0394da52 100644
--- a/src/keepass2android/Resources/values-sk/strings.xml
+++ b/src/keepass2android/Resources/values-sk/strings.xml
@@ -87,7 +87,11 @@
Zapnúť úplné odomknutie odtlaÄkom
Zapnúť odomykanie odtlaÄkom pre rýchle odomknutie
Dotykový senzor pre odomknutie databázy
+ Odomykanie odtlaÄkom prsta zlyhalo. OS Android zneplatnil deÅ¡ifrovacà kľúÄ. Toto sa stáva väÄÅ¡inou vtedy, keÄ bol zapÃsaný nový odtlaÄok prsta alebo doÅ¡lo k zmene bezpeÄnostných nastavenÃ.
+ Odomknutie databázy bolo neúspeÅ¡né: neplatný kompozitný kľúÄ. Odomknutie odtlaÄkom prsta bolo deaktivované, pretože uložené primárne heslo už zjavne nie je platné.
ProsÃm zapnite Odomknutie odtlaÄkom pre nové primárne heslo.
+ ProsÃm vykonajte odomknutie pomocou hesla a potom v nastaveniach databázy opäť aktivujte odomykanie odtlaÄkom prsta.
+ Inicializácia snÃmaÄa odtlaÄkov prsta bola neúspeÅ¡ná.
Týmto uložÃte vaÅ¡e primárne heslo na tomto zariadenÃ,
v Å¡ifrovanej podobe, s použitÃm Android Keystore a s ochranou
@@ -206,6 +210,7 @@
ZapamätaÅ¥ si umiestnenie súboru s kľúÄom
UložiÅ¥ súbor s kľúÄom
Odstrániť
+ Upraviť
Rijndael (AES)
Hlavný
Funkcia odvodenia kľúÄa
@@ -269,6 +274,7 @@
Súbor na importovanie bude vybraný v ÄalÅ¡om kroku.
Zapnúť rýchle odomknutie
Zadajte posledných %1$d znakov z hesla:
+ Zadajte kód QuickUnlock:
Rýchle odomknutie!
Zatvoriť databázu
Zapnúť rýchle odomknutie
@@ -281,6 +287,8 @@
Rýchle odomknutie vyžaduje korektné fungovanie notifikáciÃ. Ak chcete zobraziÅ¥ notifikáciu bez ikony, prosÃm vyberte túto možnosÅ¥.
Dĺžka kľúÄa na rýchle odomknutie
Max. poÄet znakov použitých ako heslo na rýchle odomknutie.
+ Skryť dĺžku QuickUnlock
+ Ak je zapnuté, nezobrazà sa dĺžka kódu QuickUnlick a obrazovke pre funkciu QuickUnlock.
Rýchle odomknutie zlyhalo: nesprávne heslo!
PrieÄinok pre prÃlohy
PrieÄinok, do ktorého sa uložia prÃlohy.
@@ -313,6 +321,8 @@
Pri opustenà obrazovky bez odomknutia databázy vyÄistiÅ¥ zadané primárne heslo.
Uzamknúť pri opustenà aplikácie
Uzamknúť databázu pri opustenà aplikácie stlaÄenÃm tlaÄidla Späť.
+ AktivovaÅ¥ vyhľadávacie pole pri spustenÃ
+ Aktivuje pole pre vyhľadávanie v zobrazenà skupiny, hneÄ po odomknutà alebo pri hľadanà záznamu
Skryť možnosti prispenia
Toto nastavenie je urÄené pre sponzorov. Je dostupné po použità Keepass2Android, len na chvÃľu.
Bez prÃspevkov by táto aplikácia neexistovala a nebolo by možné ju neustále vylepÅ¡ovaÅ¥! Ak ste eÅ¡te neprispeli na jej vývoj, prosÃm zvážte možnosÅ¥ prispenia teraz.
@@ -320,6 +330,10 @@
Nechcem prispieÅ¥ niÄÃm alebo som už prispel. NepýtaÅ¥ sa na prÃspevok, ani na autorove narodeniny.
Ukladať do vyr. pamäte
ZachovaÅ¥ kópiu súborov vzdialenej databázy v prieÄinku vyr. pamäte programu. Takto môžete použÃvaÅ¥ vzdialené databázy aj v režime offline.
+ Lokálne zálohy
+ Po úspeÅ¡nom naÄÃtanà databázy vytvoriÅ¥ lokálnu záložnú kópiu.
+ Aktualizovanie lokálnej zálohy...
+ Lokálna záloha %1$s
Certifikáty SSL
Definujte postup pri zlyhanà overenia certifikátu. Poznámka: pri zlyhanà overenia môžete na zariadenie nainštalovať certifikáty!
Vymazať vyrovnávaciu pamäť?
@@ -333,6 +347,7 @@
Oddeliť notifikácie
ZobraziÅ¥ oddelené notifikácie pre kopÃrovanie mena použÃvateľa a hesla do schránky a aktivovanie klávesnice.
Automatické dopĺňanie - služba pre prÃstupnosÅ¥
+ Služba automatického dopĺňania
Notifikácia klávesnice KP2A
SprÃstupniÅ¥ celý záznam cez klávesnicu KP2A (odporúÄa sa).
Prepnúť klávesnicu
@@ -347,6 +362,10 @@
Prepnúť späť na predchádzajúcu klávesnicu, ak nebol otvorený záznam.
NotifikaÄná ikona poÄas odomknutia
Zobraziť prichádzajúcu notifikáciu aj pri odomknutej databáze.
+ Android 8 obsahuje nové postupy pre notifikácie. Ak chcete skryÅ¥ ikonu pre notifikácie aplikácie Keepass2Android, prosÃm nakonfigurujte ich cez nastavenia systému. DôležitosÅ¥ kategórie notifikácià nastavte na minimum.
+ Otvoriť nastavenia
+ NezaujÃma ma to
+ Súbor už nie je dostupný pre Keepass2Android. BuÄ bol odstránený alebo boli zruÅ¡ené prÃstupové oprávnenia. ProsÃm znovu otvorte súbor, naprÃklad prÃkazom pre zmenu databázy.
Vopred naÄÃtaÅ¥ databázu
SpustiÅ¥ naÄÃtavanie alebo sÅ¥ahovanie databázového súboru na pozadÃ, poÄas záznamu hesla.
Chcete prepÃsaÅ¥ existujúci binárny súbor s použitÃm rovnakého názvu?
@@ -493,6 +512,7 @@
vypnuté
VyhľadaÅ¥ prÃdavné moduly online
Úrovne oprávnenÃ
+ neaktÃvne
%1$s požaduje prihlasovacie údaje pre %2$s.
%1$s požaduje prihlasovacie údaje. ProsÃm vyberte záznam.
Zapnuté
@@ -520,6 +540,7 @@
Zdá sa, že ste súbor otvorili z externej aplikácie. Takýmto spôsobom vÅ¡ak nie je podporovaný zápis. Ak chcete v databáze nieÄo zmeniÅ¥, prosÃm zatvorte ju a vyberte možnosÅ¥ ZmeniÅ¥ databázu. Potom súbor otvorte pomocou jednej z dostupných možnostÃ.
Je nastavený prÃznak: Len na ÄÃtanie. Ak chcete nieÄo v databáze zmeniÅ¥, odstráňte ho.
Zápis nie je možný z dôvodu obmedzenà v systéme Android KitKat. Ak chcete databázu upraviÅ¥, zatvorte ju a vyberte možnosÅ¥ ZmeniÅ¥ databázu. Potom otvorte súbor pomocou systémovej súÄasti na výber súboru.
+ Lokálne zálohy nemožno upraviÅ¥. Môžete použiÅ¥ prÃkaz Nastavenia databázy - Export databázy na vyexportovanie tejto zálohy na iné miesto, z ktorého ju môžete znovu otvoriÅ¥. Potom bude zápis opäť povolený.
Pridať ikonu zo súboru...
Prebieha kopÃrovanie súboru...
KopÃrovanie
@@ -555,6 +576,13 @@
• Uistite sa, že je vybraný správny súbor s databázou.
+
+ \n
+ • Pomôcka: Ak si myslÃte, že je VaÅ¡a databáza poÅ¡kodená alebo si nepamätáte primárny kÄ¾ÃºÄ po úprave, môžete to skúsiÅ¥ s naposledy otvorenou verziou súboru, kliknutÃm na \"%1$s\" a vybranÃm lokálnej zálohy.
+
+ \n
+ • Pomôcka: Keepass2Android uložil naposledy otvorenú verziu súboru v internej pamäti. Môžete ju otvoriÅ¥ kliknutÃm na \"%1$s\" a výberom lokálnej zálohy.
+
Súbor je poškodený. \n
Tu je niekoľko nápadov, ktoré vám môžu pomôcť odhaliť problém:\n
@@ -564,6 +592,12 @@
• Ak je možné otvoriÅ¥ súbor na poÄÃtaÄi, prosÃm kontaktujte podporu. Môžete sa pokúsiÅ¥ uložiÅ¥ ho s rôznymi nastaveniami (naprÃklad v nezbalenom stave) an poÄÃtaÄi a potom sa pokúsiÅ¥ otvoriÅ¥ ho v aplikácii Keepass2Android.
+ Databáza odomknutá
+ Notifikácia o odomknutà databázy
+ QuickUnlock
+ Notifikácia o uzamknutà databázy pomocou funkcie QuickUnlock
+ Notifikácie záznamu
+ Notifikácia na zjednoduÅ¡enie prÃstupu k práve vybranému záznamu.
Keepass2Android: Došlo k nejakej chybe.
PoÄas behu aplikácie Keepass2Android doÅ¡lo k neoÄakávanej chybe. ProsÃm pomôžte nám s jej opravou tým, že umožnÃte aplikácii odosielaÅ¥ záznamy o chybách.
Záznamy o chybách nikdy nebudú obsahovaÅ¥ niÄ z vaÅ¡ej databázy a ani primárne heslo. Túto funkciu môžete zablokovaÅ¥ v nastaveniach aplikácie.
@@ -572,6 +606,31 @@
Opýtať sa po výskyte chyby
Odosielanie záznamov o chybe
ZobraziÅ¥ softvérovú klávesnicu pre zadanie hesla ak je aktÃvny odtlaÄok.
+
+ Verzia 1.05\n
+ * Použitie notifikaÄných kanálov pre Android 8, umožňujúce konfigurovanie pomocou nastavenà systému\n
+ * Zobrazenie ikony záznamu v notifikácii\n
+ * Použitie adaptÃvnych ikon pre Android 8, použitie zaoblených ikon spúšťaÄa pre Android 7\n
+ * Možné aktivovanie vyhľadávania po odomknutà (pozrite si nastavenia)\n
+ * Zmena spôsobu zapisovania súborov cez Storage Access Framework, opravené problémy s aktualizovanÃm súborov v Google Drive, otvorených cez súÄasÅ¥ System file picker\n
+ * Pridanie niekoľkých informaÄných textov, aby sa zabránilo nejasnostiam\n
+ * Vytváranie lokálnych záloh úspeÅ¡ne otvorených databáz, aby sa znÞilo riziko straty údajov\n
+ * Aktualizované JSch pre podporu viacerých posledných šifier SSH\n
+ * Umožnenie úpravy nastavenà pripojenia, naprÃklad po zmene hesla WebDav\n
+ * Pridaná podpora pre režim statického hesla Yubikey Neo\n
+ * Umožnenie zablokovania automatických návrhov\n
+ * Zablokovaný únik dát do logcat\n
+ * Opravy chýb\n
+
+
+ Verzia 1.04b\n
+ * RieÅ¡enie pádu v prÃpade, že sa použÃvateľ pokúsi o zapnutie automatického dopĺňania za zariadeniach Huawei.\n
+
+
+ Verzia 1.04\n
+ * Pridaná služba automatického dopĺňania pre Android 8.0 a novÅ¡Ã.\n
+ * Aktualizované knižnice, nástroje na zostavenie a cieľová verzia SDK.\n
+
Verzia 1.03\n
* Odstránená služba pre prÃstupnosÅ¥ pre funkciu automatického dopĺňania, podľa požiadavky Google. Ak chcete nájsÅ¥ prÃdavný modul poskytujúci túto funkciu, prosÃm pozrite si nastavenia prÃstupu k heslu.\n
@@ -884,4 +943,20 @@ Prvé verejné vydanie
Uistite sa, že to funguje na vaÅ¡om systéme a v prÃpade nefunkÄnosti zvážte použitie integrovanej klávesnice.
Popis poskytovaný prÃdavným modulom:
+ Keepass2Android podporuje automatické dopĺňanie systému Android, ale zdá sa, že ste ho ešte neaktivovali.
+ Zapnúť automatické dopĺňanie
+ PrepáÄte, zdá sa, že VaÅ¡e zariadenie nepodporuje otvorenie nastavenà priamo z aplikácie. ProsÃm prejdite na nastavenia systému manuálne a zapnite službu pre automatické dopĺňanie.
+ ZobraziÅ¥ pomocnÃka pre automatické dopĺňanie
+ Doplniť s Keepass2Android
+ Nemožno asociovať webové doménu %1$s s aplikáciou %2$s
+ Rozumiem
+ Už nezobrazovať
+ Pamätáte si svoje primárne heslo?
+ Pamätajte na to, že bez svojho primárneho kľúÄa nebudete môcÅ¥ otvoriÅ¥ databázu. Neexistuje žiadny \"reset\" primárneho hesla.
+ Pozn.: odomykanie odtlaÄkom prsta funguje s uloženÃm prim. kľúÄa v bezpeÄnom úložisku pre Android. Toto úložisko môže systém Android kedykoľvek vymazaÅ¥, napr. ak do nastavenà systému pridáte nový odtlaÄok. Takže sa nespoliehajte na odtlaÄok prsta, ale zapamätajte si primárne heslo!
+ Je Vaša databáza zálohovaná?
+ Keepass2Android ukladá VaÅ¡e heslá do súboru vo vybranom umiestnenÃ. Ste si istÃ, že k tomuto miestu budete maÅ¥ prÃstup aj po strate Äi krádeži telefónu, alebo keÄ sa súbor zniÄà Äi poÅ¡kodÃ? ProsÃm uistite sa, že vždy máte aktuálnu zálohu na bezpeÄnom mieste!
+ Zálohu vytvorÃte prejdenÃm na %1$s > %2$s > %3$s.
+ Ste pripravenà na núdzové prÃpady?
+ Premýšľali ste niekedy nad tým, Äo sa stane, keby ste nemali prÃstup ku svojej databáze hesiel? ÄŒo keÄ sa nieÄo stane? Je dobré poskytnúť svoj primárny kÄ¾ÃºÄ nejakej dôveryhodnej osobe, pre núdzové prÃpady. V opaÄnom prÃpade by nikto nemal prÃstup k VaÅ¡Ãm heslám.
diff --git a/src/keepass2android/Resources/values-sv/strings.xml b/src/keepass2android/Resources/values-sv/strings.xml
index 30592225..cabad919 100644
--- a/src/keepass2android/Resources/values-sv/strings.xml
+++ b/src/keepass2android/Resources/values-sv/strings.xml
@@ -186,7 +186,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Sök
Avancerad sökning
GÃ¥ till URL
- Byt databas…
+ Byt databas
Visa alla fält
Minus
Aldrig
@@ -207,6 +207,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Kom ihåg platsen för nyckelfilen
Spara nyckelfil
Ta bort
+ Ändra
Rijndael (AES)
Root
Nyckelhärledningsfunktion
@@ -270,6 +271,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Fil att importera väljs i nästa steg.
Aktivera Snabbupplåsning
Ange de sista %1$d tecknen av ditt lösenord:
+ Ange snabbupplåsningskod:
Snabbupplåsning!
Stäng databas
Aktivera Snabbupplåsning som standard
@@ -282,6 +284,8 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Snabbupplåsning kräver en avisering för att fungera korrekt. Välj detta alternativ för att visa en avisering utan en ikon.
Snabbupplåsningsnyckelns längd
Maximalt antal tecken som används som snabbupplåsningslösenord.
+ Dölj snabbupplåsningslängd
+ Om aktiverat visas ej längden på snabbupplåsningskoden på snabbupplåsningsskärmen.
Snabbupplåsning misslyckades: fel lösenord!
Katalog för bifogade filer
Katalog där bifogade filer sparas.
@@ -310,10 +314,12 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Använda filtransaktioner för att skriva till databaser
Lås när skärmen är avstängd
Lås databasen när skärmen är avstängd.
- Töm angivna huvudlösenord
+ Töm angivet huvudlösenord
Töm det angivna huvudlösenordet när du lämnar skärmen utan att låsa upp databasen.
Lås när du lämnar programmet
Lås databasen när programmet stängs av genom att trycka på bakåtknappen.
+ Aktiva sökfält vid start
+ Aktiverar sökfältet i gruppvyn efter upplåsning eller vid sökning efter en post
Dölja donationsalternativ
Denna inställning är för donatorer. Den blir tillgänglig efter ett tags användade av Keepass2Android.
Utan donationer skulle detta program inte existera och inte kontinuerligt förbättras! Om du inte har ännu donerat, överväg gärna detta nu.
@@ -321,6 +327,10 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Jag kommer inte ge dig ett öre eller jag har redan donerat. Be inte om en donation, inte ens på utvecklarens födelsedag.
Databascachning
Behåll en kopia av fjärrdatabasfiler i programmets cachekatalog. Detta gör det möjligt för att använda fjärrdatabaser även när du är offline.
+ Lokala säkerhetskopior
+ Skapa en lokal säkerhetskopia efter framgångsrikt ha laddat en databas.
+ Uppdatera lokal säkerhetskopia...
+ Lokal säkerhetskopia av %1$s
SSL-certifikat
Definiera beteendet när certifikatvalidering misslyckas. Obs: du kan installera certifikat på enheten om valideringen misslyckas!
Rensa cache?
@@ -329,7 +339,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Kontrollera om filen ändrades externt innan ändringarna sparas.
Sök efter duplett-UUIDs
Kontrollera om databasfilen är skadad genom att ha flera poster med samma ID. Detta kan orsaka oväntade beteenden.
- Urklipps-aviseringar
+ Urklippsaviseringar
Gör användarnamn och lösenord tillgängliga via aviseringsfältet och urklipp. Akta dig för lösenords-sniffers!
Separera aviseringar
Visa separata aviseringar för att kopiera användarnamn och lösenord till urklipp och aktivera tangentbordet.
@@ -339,18 +349,22 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Gör hela posten tillgänglig genom KP2A-tangentbordet(rekommenderas).
Byt tangentbord
Öppna tangentbordets-dialogen när posten är tillgänglig via KP2A tangentbord efter sökning från webbläsaren.
- Auto-byt tangentbord
- Automatiskt växla till KP2A tangentbord när posten öppnas. Kräver korrekt inställd KeyboardSwap-Plugin eller en rotad enhet och Secure Settings-program med System+.
+ Byt tangentbord automatiskt
+ Växla automatiskt till KP2A tangentbord när posten öppnas. Kräver korrekt inställd KeyboardSwap-Plugin eller en rotad enhet och Secure Settings-program med System+.
Installera KeyboardSwap-Plugin
Detta plugin gör för att växla till KP2A tangentbordet utan rot. Kräver ADB.
- Auto-byt endast efter sökning
+ Byt automatiskt endast efter sökning
Byt endast automatiskt till KP2A tangentbord efter funktionen dela URL (men inte när du öppnar en post på annat sätt)
Byt tillbaka tangentbord
Växla tillbaka till föregående tangentbord när ingen post är öppen.
Aviseringsikon medan olåst
Visa en aviseringsikon medan databasen är olåst.
+ Android 8 har introducerat ett nytt beteende för aviseringar. Om du vill dölja ikonen för Keypass2Android-aviseringar, var god konfigurera detta under systeminställningarna. Sätt signifikansnivån på aviseringskategorin till Minimum.
+ Öppna inställningar
+ Jag bryr mig inte
+ Filen är inte längre tillgänglig för Keepass2Android. Antingen var den borttagen eller så har accessrättigheterna blivit återkallade. Var god öppna filen igen, t.ex. med Byt databas.
Förladda databasfilen
- Starta laddning eller nedladdning av databasfilen i bakgrunden under tiden lösenordsinmatningen.
+ Starta laddning eller nedladdning av databasfilen i bakgrunden under tiden du anger lösenordet.
Vill du skriva över den befintliga binärfilen med samma namn?
Skriv över befintlig fil?
Skriv över
@@ -392,7 +406,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Undvik all nätverkstrafik med hjälp av den lokala cachede kopian av filen. Ändringarna lagras i den lokala cachen endast och kommer endast att laddas upp när du växlar tillbaka till online-läge.
Arbetar offline.
Synkronisering cachad databas…
- Laddar ner fil…
+ Laddar ner fjärrfil…
Laddar upp fil…
Ã…terställer fjärrfil…
Filerna är synkroniserade.
@@ -406,7 +420,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Uppdaterade lokal cache kopia av %1$s.
Inga ändringar upptäcktes.
Uppdaterade cachad fil med engångslösenord: Fjärräknaren hade högre värde.
- Uppdaterade fjärrfil med engångslösenord: Lokala äknaren hade högre värde.
+ Uppdaterade fjärrfil med engångslösenord: Lokala räknaren hade högre värde.
Synkronisera fil med engÃ¥ngslösenord…
databasfil
Engångslösenordsfil
@@ -415,7 +429,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Du kan inaktivera detta felmeddelande i Inställningar/Programinställningar/Filhantering/Sök efter dubbletter UUIDs. Observera att du kan uppleva oväntat beteende. Det rekommenderas att fixa databasen.
Synkronisera databas…
Kan inte flytta grupp till denna grupp.
- Idag är det Oktoberfest! Om du gillar Keepass2Android: skulle inte idag vara en bra dag att köpa mig en öl?
+ Idag är det Oktoberfest! Om du gillar Keepass2Android: skulle det väl vara en bra dag att köpa mig en öl?
10: e maj? Det är min födelsedag! Om du gillar detta program, varför inte skicka mig några födelsedagshälsningar tillsammans med en liten födelsedagspresent? Detta skulle verkligen göra mig glad! :-)
Åh, missade du min födelsedag den 10 maj! Om du gillar denna app, varför inte skicka några födelsedagshälsningar och en liten födelsedagspresent? Det är ännu inte för sent att göra mig glad! :-)
Berätta mer!
@@ -480,7 +494,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Tidsbaserade engångslösenords-fröfältnamn
Om du använder Keepass 2 pluginet â€TrayTotp†med icke-standard inställningar, ange fältnamnet för fröfältet här enligt inställningarna pÃ¥ datorn.
Tidsbaserade engångslösenords-inställningsfältnamn
- Ange fältnamnet för snställningsfältet för TrayTotp här.
+ Ange fältnamnet för inställningsfältet för TrayTotp här.
TrayTotp
Loggfil för felsökning
Använd loggfil
@@ -502,7 +516,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Databas åtgärdsaviseringar
Plugin kommer att meddelas när en databas öppnas, stängs eller sparad.
Aktuell postdata
- Plugin kommer att få alla dat om den aktuella databasposten och kommer att tillåtas att erbjuda åtgärder och ändra visningen av den.
+ Plugin kommer att få alla data om den aktuella databasposten och kommer att tillåtas att erbjuda åtgärder och ändra visningen av den.
Efterfråga egna autentiseringsuppgifter
Plugin kommer att tillåtas att efterfråga de autentiseringsuppgifter som är associerade med det egna programpaketet.
Efterfråga autentiseringsuppgifter
@@ -523,6 +537,7 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Det verkar som du öppnade filen från en extern app. Detta sätt har inte stöd för skrivning. Om du vill göra ändringar i databasen, var god stäng databasen och välj ändra databas. Öppna sedan filen från en av de tillgängliga alternativen om möjligt.
Skrivskyddsflaggan är satt. Ta bort flaggan om du vill göra ändringar i databasen.
Skrivning är inte möjligt på grund av begränsningar som införts i Android KitKat. Om du vill göra ändringar i databasen, stäng databasen och välj ändra databas. Öppna sedan filen med systemets filväljare.
+ Lokala säkerhetskopior kan inte ändras. Du kan änvända Databasinställningar - Exportera databas för att exportera denna säkerhetskopia till en annan plats från vilken du kan öppna den igen. Då kommer den återigen vara skrivbar.
Lägg till ikon från fil...
Kopierar fil...
Kopiera
@@ -547,14 +562,26 @@ Detta kommer att spara ditt huvudlösenord på denna enhet, krypterat med Androi
Lägg till mallar?
Keepass2Android innehåller postmallar för e-postkonton, WiFi-lösenord, säkra anteckningar med mera. Vill du lägga till dessa till din databas? Om du väljer Nej, kan du lägga till dem senare i databasinställningarna.
Lägg till mallar till databas
- Observera! Detta är en förhandsversion och kan komma med några brister! Om du upplever *någo * oväntat, låt mig veta (på Google+ betatest-grupp eller via e-post).
+ Observera! Detta är en förhandsversion och kan komma med några brister! Om du upplever *något* oväntat, låt mig veta (på Google+ betatest-grupp eller via e-post).
Fortsätt
Den URI som du har angett ser inte ut som ett filnamn. Är du säker på att detta är en giltig fil?
- Ogiltig sammansatt nyckeln! Vänligen försök igen.
+ Ogiltig sammansatt nyckel! Vänligen försök igen.
Ogiltig sammansatt nyckel! Vänligen prova följande steg för att låsa upp din databas: \n • Se till att du har angett rätt lösenord. Använd ögonikonen för att visa det inmatade lösenordet. \n • Se till att du har valt rätt lösenordstyp. Kontrollera den matcher den typ som används när du skapade databasen. \n • Se till att du har valt rätt databasfil.
+
+\n
+ • Tips: om du tror att din databasfil kan vara skadad eller om du inte kommer ihåg huvudnyckeln efter att ha ändrat den, så kan du försöka med den senast lyckade öppnade filversionen genom att klicka \"%1$s\" och välj lokal säkerhetskopia.
+
+\n
+ • Tips: Keepass2Androi har sparat den senast lyckade öppnade filversionen i internminnet. Du kan öppna den genom att klicka \"%1$s\" och välja lokal säkerhetskopia.
Filen är skadad. \n Här är några tips som kan hjälpa till att diagnostisera ärendet: \n-• Om du har kopierat filen via USB (MTP-läge), var god försök igen med verktyg som MyPhoneExplorer. MTP trunkerar filer i vissa fall. \n-• Om du inte kan öppna filen från samma plats på din dator, är det mycket troligt att filen faktiskt är skadad. Använd en säkerhetskopia av databasen. Om du antar att Keepass2Android har skadat filen, vänligen kontakta support. \n • Om du fortfarande kan öppna filen på din dator, vänligen kontakta support. Du kan försöka spara den med olika inställningar (t.ex. uppzippad) på datorn och försöka att öppna den i Keepass2Android igen.
+ Databas upplåst
+ Avisering om att databasen blivit upplåst
+ Snabbupplåsning
+ Avisering om att databasen blivit upplåst med snabbupplåsning
+ Postaviseringar
+ Avisering för att underlätta tillgång till den nuvarande markerade posten.
Keepass2Android: Ett fel uppstod.
Ett oväntat fel uppstod när du körde Keepass2Android. Snälla hjälp oss fixa detta genom att tillåta appen att skicka felrapporter.
Felrapporter innehåller aldrig något innehåll från din databas eller huvudlösenord. Du kan inaktivera dem i programinställningarna.
@@ -562,7 +589,27 @@ Filen är skadad. \n Här är några tips som kan hjälpa till att diagnostisera
Inaktivera
Fråga efter fel
Skicka felrapporter
- Visa Skärmtangentbordet för lösenordsindata när fingeravtrycks-scan är aktiv.
+ Visa skärmtangentbordet för lösenordsindata när fingeravtrycksläsning är aktiv.
+
+ Version 1.05\n
+ * Använd Android 8s avisteringskanaler, möjliggör inställning genom systeminställningar\n
+ * Visa en postikon i avisering\n
+ * Använd adaptiva ikoner för Android 8, använd rund startikon för Android 7\n
+ * Tillåt att aktivera sök vid upplåsning (se inställningar)\n
+ * Ändrade sättet filer skrivs genom Lagningsaccessramverket, löser problem med att uppdatera filer på Google Drive öppnade med systemfilväljaren\n
+ * Lade till några informationstexter för att undvika vanliga missuppfattningar\n
+ * Lade till lokala säkerhetskopior av lyckade öppnade databaser för att reducera risken att tappa data\n
+ * Updaterade JSch för att stödja mer nyliga SSH krypton\n
+ * Tillåter att ändra anslutningsinställningar, t.ex. genom WebDav ändrat lösenord\n
+ * Lade till stöd för Yubikey Neoss statiska lösenordsläge\n
+ * Tillåter att stänga av autofyllförslag\n
+ * Löste dataläckage till logcat\n
+ * buggfixar\n
+
+
+ Version 1.04b\n
+ * Underviker krasch när användare försöker aktivera autofyll på Huawei-enheter.\n
+
Version 1.04\n
* Lade till Autofyll-service for Android 8.0 and senare.\n
@@ -576,13 +623,13 @@ Version 1.03
* Stöd för KeyTrayTOTP-poster, stödjer nu Steam-poster
-Version 1.02\n * Slera säkerhetsförbättringar. Mycket tack för säkerhetsrapporten av jean-baptiste.cayrou@thalesgroup.com och vincent.fargues@thalesgroup.com och för deras samarbete! \n * Stöd för KeyboardSwapPlugin (se lösenordstillgänglighets-alternativ): gör det möjligt för att växla inmatningsmetod automatiskt på icke-rotade enheter. Tack vare Mishaal Rahman från XDA-Developers är detta möjligt. \n * Fix för tillgänglighet-tjänsten med senaste Chrome versioner\n * Fix för onödiga tömning av fingeravtrycksdata\n * Fix för mindre krasher\n * Uppdaterad Dropbox SDK att säkerställa framtida kompatibilitet \n * Tagit bort felrapportering genom Xamarin Insights\n * Uppdaterad byggverktyg\n
+Version 1.02\n * Flera säkerhetsförbättringar. Mycket tack för säkerhetsrapporten av jean-baptiste.cayrou@thalesgroup.com och vincent.fargues@thalesgroup.com och för deras samarbete! \n * Stöd för KeyboardSwapPlugin (se lösenordstillgänglighets-alternativ): gör det möjligt för att växla inmatningsmetod automatiskt på icke-rotade enheter. Tack vare Mishaal Rahman från XDA-Developers är detta möjligt. \n * Fix för tillgänglighet-tjänsten med senaste Chrome versioner\n * Fix för onödiga tömning av fingeravtrycksdata\n * Fix för mindre krasher\n * Uppdaterad Dropbox SDK att säkerställa framtida kompatibilitet \n * Tagit bort felrapportering genom Xamarin Insights\n * Uppdaterad byggverktyg\n
Version 1.01-g\n * Fix för krasch när du försöker arbeta offline\n * Fix för felaktig kodning av FTP(S) autentiseringsuppgifter\n * Fix för kraschar när du använder OneDrive och äldre Android versioner\n * Visa lokal tid i postskärmen\n
-Version 1.01-d\n * Fix för OneDrive fil-listning\n * Tillåt att ignorera certifikatfel också när värdnamns-verifiering misslyckas (rekommenderas inte för produktionsanvändning) \n * Fix för att snabbupplåsning ibland misslyckas trots rätt upplåsningskod\n
+Version 1.01-d\n * Fix för OneDrive fil-listning\n * Tillåt att ignorera certifikatfel också när verifiering av värdnamn misslyckats (rekommenderas inte för produktionsanvändning) \n * Fix för att snabbupplåsning ibland misslyckas trots rätt upplåsningskod\n
-Version 0.9.8c\n * Fix för SSL-säkerhetsproblem i Microsoft Live SDK (används när åtkomst till filer via OneDrive) \n * Bug fix: Tidigare version innehöll två inputmetoder (en krashade) \n
+Version 0.9.8c\n * Fix för SSL-säkerhetsproblem i Microsoft Live SDK (används för åtkomst till filer via OneDrive) \n * Bug fix: Tidigare version innehöll två inputmetoder (en krashade) \n
Version 1.01\n * Lagt till stöd för det nya KDBX-4-formatet (kompatibel med Keepass 2.35) inklusive Argon2 nyckelhärledning och ChaCha20 kryptering. \n * Återimplementerad WebDav fillagring, nu tillåts filhantering och stöder modern kryptering. \n * Återimplementerat FTP-fillagring, kan nu bläddra och stöder kryptering (FTPS). \n * Uppdaterat till OneDrive SDK (tidigare använt Live SDK vilken inte uppdateras längre) \n * Uppdaterade till Dropbox SDK version 2 (tidigare använt version 1 SDK vilken är inaktuell). \n * Lade till stöd för OwnCloud.\n * Bekräftelse för lagring innan öppning av lokala filer
@@ -597,7 +644,7 @@ Version 1.0.0\n * Fingeravtrycksupplåsning (kräver Android 6.0 + eller en Sams
Version 0.9.9\n * Komplett UI omdesign. Tack mycket till Stefano Pignataro (http://www.spstudio.at) för hans hjälp!\n * Tillåt att lägga till anpassade iconer\n * Stöd för flerfönsterläge på Samsung enheter\n * Ökade standardantalet av krypteringsrundor för nya databaser\n * Kontroll för duplettnycklar av ytterligare fält för att undvika att förlora data\n
-Version 0.9.9c\n * Mörkt tema är tillbaka\n * Du kan installera andra ikonpaket (gamla Windowlika-ikoner finns på Play store) \n * Lade till bekräftelse när du tar bort element utan papperskorg\n * Buggfixar (felaktig visning av angångslösenords hemliga enkodning, fel app-ikon på vissa ställen) \n
+Version 0.9.9c\n * Mörkt tema är tillbaka\n * Du kan installera andra ikonpaket (gamla Windows lika ikoner finns på Play store) \n * Lade till bekräftelse när du tar bort element utan papperskorg\n * Buggfixar (felaktig visning av engångslösenords hemliga enkodning, fel app-ikon på vissa ställen) \n
Version 0.9.8b\n * Buggfixar (Spara misslyckades för vissa databaser, exportera till lokal enhet ej fungerande, välja vissa inställningar kraschade appen) \n
@@ -690,7 +737,18 @@ Version 0.9.6\n * Tillåt att importera nyckelfil och/eller lokala databasfil ti
Beskrivning av plugin:
Keepass2Android stödjer Androids Autofyll-funktion men det ser ut som du inte har aktiverat det ännu.
Aktivera Autofyll
- Visa Autofyll-hjälp
+ Förlåt, det verkar som att din enhet inte stödjer öppna inställningarna inifrån appen. Var god öppna systeminställnignarna manuellt för autofyll för att aktivera tjänsten.
+ Visa hjälp för autofyll
Fyll med Keepass2Android
Kunde inte associera webbdomän %1$s med app %2$s
+ Jag förstår
+ Visa inte igen
+ Kommer du ihåg ditt huvudlösenord?
+ Observera att du inte kommer ha möjlighet att öppna din databas utan huvudlösenordet. Det finns inget sätt att \"återställa\" huvudlösenordet.
+ Observera också att fingeravtrycksupplåsning fungerar genom att spara ditt huvudlösenord i Androids säkra lagringsutrymme. Detta utrymme kan tas bort av Android när som helst, t.ex. om du lägger till ett nytt fingeravtryck i systeminställnignar. Så förlita dig inte på ditt fingeravtryck utan var god kom ihåg ditt huvudlösenord!
+ Är din databas säkerhetskopierad?
+ Keypass2Android sparar dina lösenord i en fil på en plats du väljer. Är du säker på att du fortfarande har åtkomst till denna fil när din telefon tappas bort eller blir stulen eller när filen förstörs eller tas bort? Var god säkerställ att du alltid har en uppdaterad backup på en säker plats!
+ För att skapa en backup nu, gå till %1$s > %2$s > %3$s.
+ Är du förberedd för nödfall?
+ Övervägde du någonsin vad som händer om du inte längre har tillgång till din lösenordsdatabas? Ifall du råkar ut för en olycka? Det är god sed att lämna över ditt huvudlösenord till någon person du litar på för nödfall. Annars kommer ingen ha tillgång till dina lösenord.
diff --git a/src/keepass2android/Resources/values-tr/strings.xml b/src/keepass2android/Resources/values-tr/strings.xml
index 257b9768..bc98d482 100644
--- a/src/keepass2android/Resources/values-tr/strings.xml
+++ b/src/keepass2android/Resources/values-tr/strings.xml
@@ -45,7 +45,7 @@
Dosya iÅŸlemleri
Klavye
Veriyi dışarı aktar...
- Parmak izi açma
+ Parmak iziyle açma
Veri tabanını iç klasöre aktar
Anahtar dosyasını iç klasöre aktar
Klavye deÄŸiÅŸimi
@@ -143,8 +143,8 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Grup adı
Anahtar dosyası
Uzunluk
- ÅŸifre
- Åžifre
+ parola
+ Parola
Başlık
İnternet adresi
İnternet adresinin yerine geçin
@@ -176,9 +176,9 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Başka bir gruba taşı
Taşı
Üst gruba git
- Bır bira ısmarla...
+ Bir bira ısmarla...
Düzenle
- Åžifreyi gizle
+ Parolayı gizle
Veritabanını kilitle
Aç
Kapat
@@ -207,9 +207,10 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Anahtar dosyalarının konumunu hatırlar
Anahtar dosyasını kaydet
Kaldır
+ Düzenle
Rijndael (AES)
Kök
- English
+ Anahtar türetme fonksiyonu
Şifreleme tur sayısı
Fazla tur sayısı kaba kuvvet saldırılarına karşı ek koruma sağlar, ama yüklemeyi ve kaydetmeyi epeyce yavaşlatır.
Tur sayısı
@@ -229,7 +230,7 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Değiştirme tarihine göre sırala
Varsayılan düzeni koru
Özel
- Ne bul
+ Bul
Arama sonuçları
Arama yeri
Başka bir kayıt seçin
@@ -270,6 +271,7 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Alınacak dosya bir sonraki ekranda seçilecektir.
ÇabukAç etkinleştir
Parolanızın son %1$d karakterini girin:
+ Hızlı açma kodunu girin:
Kilidi ÇabukAç!
Veritabanı kapat
ÇabukAç varsayılan olarak etkinleştir
@@ -282,8 +284,10 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Çabuk açın düzgün çalışması için bir bildirim gerekir. Bir simge olmadan bildirim görüntülenmesi için bu seçeneği seçin.
ÇabukAç anahtar uzunluğu
ÇabukAç anahtar uzunluğu karakter sayısının üst sınırı.
+ Hızlı Açma kodunun uzunluğunu gizle
+ Etkinse, Hızlı Açma kodunun uzunluğu ekranda görüntülenmez.
ÇabukAç başarısız oldu: yanlış şifre!
- Ek dosyaları klasörü
+ Ek dosyalar klasörü
Ek dosyalarının kaydedileceği klasör.
Ek dosyayı kaydet
Ek dosyayı kaydedecek konumu seç.
@@ -314,13 +318,19 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Veri tabanı açılmadan parola ekranından ayrılırsam girilmiş ana parolayı temizle.
Uygulamadan ayrılınca kilitle
Geri düğmesine basarak uygulamadan ayrılırken veri tabanını kilitle.
+ Başlangıçta arama alanını etkinleştir
+ Kilit açıldıktan sonra veya kayıt aranırken grup görünümündeki arama alanını etkinleştirir
Bağış seçeneğini gizle
Bu ayar bağışçılar içindir. Sadece Keepass2Android bir süre kullandıktan sonra geçerlidir.
Bağışlar olmadan, bu uygulama var olamazdı ve sürekli olarak geliştirilemezdi! Henüz bağış yapmadıysan, lütfen şimdi bir bağış yapmayı düşün.
Asla bağış isteme
Sana bir kuruş bile vermeyeceğim ya da zaten bağış yapmıştım. Yazarın doğum gününde bile bağış isteme.
- Veritabanı önbelleğe al
+ Veritabanını önbelleğe al
Uzak veritabanı dosyalarının bir kopyası uygulama önbellek klasöründe tutulur. Bu uzak veritabanlarını çevrimdışı iken bile kullanmanıza izin verir.
+ Yerel yedekler
+ Bir veritabanı başarıyla yükledikten sonra yerel bir yedek kopyasını oluştur.
+ Yerel yedek güncelleştiriliyor...
+ %1$s yerel yedeÄŸi
SSL sertifikalar
Sertifika doğrulaması başarısız olduğunda ne yapılacak! Not: Doğrulama başarısız olduğunda sertifikaları aygıtınıza yükleyebilirsiniz.
Önbelleği temizle?
@@ -333,7 +343,7 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Kullanıcı adı ve parola bildirim çubuğu ve Pano üzerinden erişilebilir hale getirir. Parola algılayıcılara dikkat edin!
Bildirimler
Kullanıcı adıyla parolayı panoya kopyalamak ve klavyeyi etkinleştirmek için bildirimleri göster.
- Otomatik Doldur EriÅŸilebilirlik Hizmeti
+ Otomatik Doldurma EriÅŸilebilirlik Hizmeti
Otomatik Doldurma Hizmeti
KP2A klavye bildirimi
Tam girişi KP2A klavyesinden erişilebilir yapın (önerilir).
@@ -349,6 +359,10 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Bir kayıt açılmadığında önceki klavyeye döner.
Kilitli deÄŸilken bildirim simgesi
Veritabanı kilitli değilken devam eden bir bildirim gösterir.
+ Android 8, bildirimler için yeni davranışlar getirdi. Keepass2Android\'in bildirimleri için simgeyi gizlemek istiyorsanız, lütfen bunu sistem ayarlarından yapılandırın. Bildirim kategorisinin önemini Minimum olarak ayarlayın.
+ Ayarları aç
+ Umrumda deÄŸil
+ Keepass2Android artık dosyaya erişemiyor. Dosya ya silindi yada erişim izinleri iptal edildi. Lütfen Veritabanını değiştir seçeneğiyle dosyayı yeniden açın.
Veritabanı dosyasını önceden yükleme
Veritabanı dosyası yükleme veya indirmeyi şifre girişi sırasında arka planda başlatın.
Varolan ek dosyayı aynı isim ile üzerine yazmak mı istiyorsunuz?
@@ -367,9 +381,9 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Dosyayı yeniden yükle?
Şu anda açık olan dosya başka bir program tarafından değiştirildi. Yeniden yüklemek istiyor musunuz?
Yaptığınız değişiklikleri atmak istiyor musunuz? (Kaydet düğmesi formun üst kısmında.)
- Değişiklikler atılsın mı?
- Önermek veya iyileştirmeler için oy
- Bu app değerini biç
+ DeÄŸiÅŸiklikler iptal edilsin mi?
+ İyileştirme öner
+ Bu uygulamayı puanla
KP2A\'yı tercüme et
Kayıt ekleniyor…
Grup ekleniyor…
@@ -523,6 +537,7 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Görünüşe göre bir dış uygulamadan dosya açıldı. Bu şekilde yazma desteklenmiyor. Veritabanında değişiklik yapmak istiyorsanız, lütfen veritabanını kapatın ve veritabanı değiştiri seçin. Mümkünse kullanılabilir seçeneklerden biriyle dosyayı açın.
Salt okunur bayrağı ayarlandı. Veritabanında değişiklik yapmak istiyorsanız, bu bayrağı kaldırın.
Android KitKat sürümündeki kısıtlamalar nedeniyle yazma mümkün değil. Veri tabanında değişiklik yapmak istiyorsanız, veri tabanını kapatın ve veri tabanı değiştir seçeneğini seçin. Sonra sistem dosya seçicisini kullanarak dosyayı açın.
+ Yerel yedeklemeler değiştirilemez. Bu yedeği yeniden açabileceğiniz bir alana aktarmak için, Veritabanı Ayarları - Veri Tabanını Dışa Aktar yolunu kullanabilirsiniz. Böylece değiştirilebilir olacaktır.
Dosyadan simge ekle...
Dosyalar kopyalanıyor...
Kopyala
@@ -558,6 +573,12 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
• Doğru veri tabanı dosyasını seçtiğinizden emin olun.
+
+ \n
+ • İpucu: Veritabanı dosyanız bozulduysa veya ana anahtarınızı değiştirdikten sonra hatırlamıyorsanız, \"%1$s\" tıklayarak başarıyla açılan son yerel yedeklemenizi kullanmayı deneyebilirsiniz.
+
+ \n
+ • İpucu: Keepass2Android başarıyla açılan son dosya sürümünü dahili hafızaya kaydeder. \"%1$s\" öğesine tıklayıp yerel yedeği seçerek açabilirsiniz.
Dosya bozulmuÅŸ. \n
Sorunu teşhis etmek için size yardımcı olabilecek bazı ipuçları:\n
@@ -567,6 +588,12 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
• Aynı dosyayı bilgisayaranızda açabiliyorsanız, desteğe başvurun. Dosyayı farklı ayarlarla (örn. zipden çıkarılmış şekilde) kaydedebilir ve Keepass2Android ile yeniden açmayı deneyebilirsiniz.
+ Veritabanı açıldı
+ Açılan veritabanıyla ilgili bildirim
+ Hızlı Aç
+ Çabuk Aç ile kilitlenen veritabanı hakkında bildirim
+ Kayıt bildirimleri
+ Seçili kayıta erişimi kolaylaştırmak için bildirim.
Keepass2Android: Bir hata oluÅŸtu.
Keepass2Android çalışırken beklenmeyen bir hata oluştu. Lütfen uygulamadan hata raporlarını göndermek için izin vererek düzeltmemize yardımcı olun.
Hata raporları asla herhangi bir veri tabanı içeriğinizi veya ana parolanızı içermez. Hata raporlarını uygulama ayarlarından devre dışı bırakabilirsiniz.
@@ -575,19 +602,38 @@ Bu seçenek, ana parolanızı Android Keystore ile şifreler ve parmak iziyle k
Hatadan sonra sor
Hata raporlarını gönder
Parmak izi tarama etkin olduğunda parola girişi için yazılım klavyesini göster.
+
+ Sürüm 1.05\n
+ * Android 8 için, sistem ayarlarından yapılandırmaya izin verilen bildirim kanalları kullanıldı\n
+ * Bildirimlerde kayıt simgesi gösterildi\n
+ * Android 7 için yuvarlak başlatıcı simgeleri, 8 içinse uyarlanabilir simgeler kullanıldı\n
+ * Kilit açıldıktan sonra aramayı etkinleştirmeye izin ver (ayarlara bakın)\n
+ * Dosyaların Storage Access Framework aracılığıyla yazılma şekli değiştirildi, sistem dosya seçicisiyle açılan Google Drive\'daki dosyaların güncellenmesiyle ilgili sorunlar giderildi\n
+ * Bazı yanlış anlamaları önlemek için bilgi metinleri eklendi\n
+ * Veri kaybı riskini azaltmak için başarıyla açılan veritabanlarının yerel yedeklerini oluşturma\n
+ * Daha yeni SSH şifrelemelerini desteklemek için JSch güncellendi\n
+ * Bağlantı ayarlarını düzenlemeye izin verildi, ör. WebDav şifresi değiştiğinde\n
+ * Yubikey Neo\'nun statik ÅŸifre modu desteklendi\n
+ * Otomatik doldurma önerisini devre dışı bırakmaya izin verildi\n
+ * Logcat veri sızıntısı düzeltildi\n
+ * Hata düzeltmeleri\n
+
+
+ Sürüm 1.04b\n
+ * Kullanıcı otomatik doldurmayı seçtiğinde Huawei cihazlarda oluşan çökme giderildi.\n
+
-Sürüm 1.04 \ n
- * Android 8.0 ve sonrası için Otomatik Doldurma hizmeti eklendi. \ n
- * Yükseltilmiş kütüphaneler, araçlar oluşturun ve Target SDK sürümü. \ n
-
+ Sürüm 1.04\n
+ * Android 8.0 ve sonrası için Otomatik Doldurma hizmeti eklendi.\n
+ * Yükseltilmiş kütüphaneler, araçlar ve Target SDK sürümü.\n
-Sürüm 1.03 \ n
- * Otomatik Doldurma için Google tarafından istenen erişilebilirlik hizmetini kaldırdı. Önceki işlevleri çoğaltan bir eklenti bulmak için lütfen şifre erişim ayarlarına bakın. \ n
- * Tekrar depolama seçeneği olarak üçüncü taraf uygulamaları eklendi \ n
- * Ekli resimleri başka uygulamalara aktarmadan görüntüleyebilmek için tümleşik resim görüntüleyici \ n
- * Bazı bağlantılarla sorunları düzeltmek için OkHttp\'yi geliştirildi \ n
- * Buhar girişlerini destekleyen KeeTrayTOTP girdileri için destek \ n
+ Sürüm 1.03\n
+ * Google tarafından istenen şekilde Otomatik Doldurma için erişilebilirlik hizmeti kaldırıldı. Önceki işlevselliği sağlayan bir eklenti bulmak için lütfen şifre erişim ayarlarına bakın.\n
+ * Depolama seçeneği olarak tekrar üçüncü taraf uygulamaları eklendi\n
+ * Ekli resimleri başka uygulamalara aktarmadan görüntüleyebilmek için tümleşik resim görüntüleyici eklendi\n
+ * Bazı bağlantılarla ilgili sorunları düzeltmek için OkHttp yükseltildi\n
+ * KeeTrayTOTP kayıt desteği, artık Steam kayıtları destekleniyor\n
Sürüm 1.02\n
@@ -707,61 +753,63 @@ Sürüm 1.03 \ n
* Polonya küçük klavye düzeni, klavye ayarları teması düzeltilerek geliÅŸtirildi(Wiktor Åawski\'ye teÅŸekkürler)\n
- Version 0.9.5\n
- * Fixed issues with file browsing (especially on Android 4.4)\n
- * Fixed issue with loading .kdb files (Keepass 1) on Nexus 5 with Android Lollipop\n
- * Added option to prevent taking screenshots/displaying app in recent apps list\n
- * Fixed issue with Google Drive file storage\n
- * Allow key files on deliberate storage types\n
- * Updated build tools --> apk size increased :-(\n
- I have promised some more changes. They will come with the next release - sorry. I wanted to publish these hot fixes as soon as possible.
+ Sürüm 0.9.5\n
+ * Dosya taraması ile ilgili sorunlar düzeltildi (özellikle Android 4.4 sürümünde)\n
+ * Android Lollipop sürümlü Nexus 5 cihazlardaki .kdb dosya yükleme sorunu düzeltildi\n
+ * Son uygulamalar listesinden görüntüleme ve ekran görüntüsü almayı engelleme seçeneği eklendi\n
+ * Google Drive depolama alanıyla ilgili sorun düzeltildi (normal sürüm)\n
+ * Güvenli depolama türlerinde anahtar dosyalarına izin verildi (normal sürüm)\n
+ * Resmi güvenlik yamasını içeren Dropbox SDK güncellendi (normal sürüm)\n
+ * --> yapım araçları güncellendi, uygulama boyutu arttırıldı :-(\n
+ Daha fazla değişiklik için söz vermiştim fakat onlar sonraki sürümle gelecekler. Bu sıcak düzeltmeleri en kısa sürede yayınlamak istedim.
- Version 0.9.4\n
- * added plug-in support: See settings for how to get plug-ins!\n
- * published QR plug-in (scan passwords, display passwords as QR code, transfer entries to other KP2A devices)\n
- * published InputStick plugin (transfer credentials to your PC via bluetooth - requires InputStick USB stick)\n
- * Third party apps can now simply implement querying KP2A for credentials. Are you a developer? Please add this to your app if suitable!\n
- * added TOTP support (compatible with KeeOTP and TrayTotp)\n
- * app should no longer be killed by Android when database is open\n
- * database is no longer locked when leaving the app with the back button (see settings)\n
- * display group names in search results view (*)\n
- * added context menu in search results view including \"Navigate to parent\" option (*)\n
- * added option to display group name in entry view (*)\n
- * (*) thanks to Matthieu for implementing these features!\n
- * support KeeChallenge (with Yubikey NEO). Thanks to Ben Rush for implementing the connector!\n
- * improved user interface\n
- * fixed a bug in Google Drive interface\n
- * added option to disable the \"donate\" option\n
- * QuickUnlock icon now hidden on Android 4.2+ devices by default\n
+ Sürüm 0.9.4\n
+ * Eklenti desteği eklendi: Eklentileri nasıl edineceğinize ayarlardan bakın!\n
+ * QR eklentisini yayınladı (şifreleri tarayın, QR kodu olarak şifreleri görüntüleyin, diğer KP2A cihazlarınıza kayıtları aktarın)\n
+ * InputStick eklentisi yayınlandı (Bluetooth üzerinden bilgisayarınıza kimlik bilgilerini transfer edin - InputStick USB cihazı gerekir)\n
+ * Üçüncü taraf uygulamaları kimlik bilgileri için KP2A sorgusu yapabilir. Bir geliştirici misiniz? Lütfen uygunsa bunu uygulamanıza ekleyin!\n
+ * TOTP desteÄŸi eklendi (KeeOTP ve TrayTotp ile uyumlu)\n
+ * Veritabanı açıkken uygulama Android tarafından kapatılmıyor\n
+ * Uygulamadan geri tuşuyla ayrıldığınızda veritabanı artık kilitlenmiyor (ayarkara bakın)\n
+ * Arama sonuçlarında grup adları gösteriliyor (*)\n
+ * Arama sonuçları görünümünde \"Navigate to parent\" seçeneğini içeren menü eklendi (*)\n
+ * Kayıt görünümünde grup adını görüntülemek için seçenek eklendi (*)\n
+ * (*) bu özellikler için Matthieu\' ya teşekkürler!\n
+ * KeeChallenge desteği (Yubikey NEO ile). Ben Rush \' a teşekkürler!\n
+ * Geliştirilmiş kullanıcı arayüzü\n
+ * Google Drive arayüzündeki bir hata düzeltildi\n
+ * \"bağış\" seçeneğini devre dışı bırakmak için seçenek eklendi\n
+ * ÇabukAç simgesi Android 4.2+ cihazlarda varsayılan olarak gizlendi\n
- Version 0.9.3 r5\n
- * Incorporated fixes from Xamarin: Keepass2Android now compatible with ART on Android 4.4.2. Finally!\n
- * Bug fixes: bugs in synchronization (refresh display, correct check for changes on http), bugs on Android 2.x devices, bugs in Google Drive and OneDrive storage implementations, clear clipboard on close database, bug opening attachments, display problems with keyboard\n
+ Sürüm 0.9.3 r5\n
+ * Xamarin’den gelen düzeltmeler: Keepass2Android artık Android 4.4.2’de ART ile uyumlu. Nihayet!\n
+ * Hata düzeltmeleri: Senkronizasyondaki hatalar (ekranı yenileme, http değişikliklerini doğru olarak kontrol etme), Android 2.x cihazlarındaki hatalar, Google Drive ve OneDrive depolama uygulamalarındaki hatalar, kapanan veritabanında pano temizlenmesi, ekleri açma hatası, klavye ile ilgili görüntüleme sorunları\n
- Version 0.9.3\n
- * New keyboard with many improvements. See settings to customize.\n
- * Read-only support for kdb (Keepass 1 files). Experimental!\n
- * Added SFTP support\n
- * Added workaround for bug in ART (Android 4.4.2)\n
- * Bug fixes\n
+ Sürüm 0.9.3\n
+ * Bir çok geliştirmeler ile yeni klavye. Özelleştirme ayarlarına bakın\n
+ * Salt okunur kdb desteği (Keepass 1 dosyaları). Deneysel!\n
+ * SFTP desteÄŸi eklendi\n
+ * ART (Android 4.4.2) \' deki hata için geçici çözüm eklendi\n
+ * Hata düzeltmeleri\n
- Version 0.9.2\n
- * Added OTP support (compatible with OtpKeyProv plugin)\n
- * Integrated NFC support for OTPs from YubiKey NEO \n
- * Several UI improvements\n
- * Integrated Keepass 2.24 library\n
- * Added option to kill the app process (see settings)\n
- * Bug fixes\n
+ Sürüm 0.9.2\n
+ * OTP desteÄŸi eklendi (OtpKeyProv eklentisi ile uyumlu)\n
+ * YubiKey NEO dan OTPs için entegre NFC desteği\n
+ * Birkaç UI geliştirmesi\n
+ * Entegre Keepass 2.24 kütüphanesi\n
+ * Uygulamayı sonlandırmak için seçenek eklendi (ayarlara bakın)\n
+ * Geliştirilmiş SSL sertifikası doğrulaması\n
+ * Hata düzeltmeleri\n
- Version 0.9.1\n
- * Integrated SkyDrive support (Keepass2Android regular edition only)\n
- * Fixed problems with Google Drive integration\n
- * Added NTLM support
+ Sürüm 0.9.1\n
+ * Entegre SkyDrive desteği (yalnızca Keepass2Android normal sürümü)\n
+ * Google Drive entegrasyonu ile ilgili sorunlar düzeltildi\n
+ * NTLM desteÄŸi eklendi
Sürüm 0.9\n
@@ -780,68 +828,68 @@ Sürüm 1.03 \ n
* Hata düzeltmeleri
- Version 0.8.5\n
- * Remote files are stored in the local application cache to allow offline usage (including editing and later synchronization). See settings. \n
- * Notification icon to visualize the lock-state of the database (see settings)\n
- * Improved determination of lock-state in some situations\n
- * Database files are loaded to memory while you are typing your password for increased loading speed (see settings)\n
- * Entries can be added to root group\n
- * Bug fixes (resolving reference fields, problems with keyboard on Italian an Chinese devices)
+ Sürüm 0.8.5\n
+ * Çevrimdışı kullanımda uzak dosyalar yerel uygulama önbelleğinde depolanıyor (düzenleme ve daha sonra senkronizasyon içerir). Ayarlara bakın.\n
+ * Veritabanının kilit durumunu görmek için bildirim simgesi eklendi (ayarlara bakın)\n
+ * Bazı durumlarda kilit durumunun daha iyi belirlenmesi\n
+ * Yükleme hızının artması için parolanızı yazarken veritabanı dosyaları belleğe yüklenir (ayarlara bakın)\n
+ * Kayıtlar kök gurubuna eklenebiliyor\n
+ * Hata düzeltmeleri ( İtalyanca ve Çince cihazlardaki klavye ile ilgili referans alanlarının çözümlenmesi)
- Version 0.8.4\n
- * External database changes are detected and merged when saving\n
- * Improved loading performance\n
- * Improved search toolbar with suggestions\n
- * New App logo!\n
- * Added support for .kdbp format for faster loading/saving\n
- * Improved editing of extra strings and hidden display when protected\n
- Thanks to Alex Vallat for his code contributions!\n
- Thanks to Niki Hüttner (www.close-cut.de) for the new logo!\n
+ Sürüm 0.8.4\n
+ * Harici veritabanı değişiklikleri algılanır ve kaydedilirken birleştirilir\n
+ * Geliştirilmiş yükleme performansı\n
+ * Önerili arama çubuğu geliştirildi\n
+ * Yeni uygulama logosu!\n
+ * .kdbp formatı için daha hızlı yükleme / kaydetme desteği\n
+ * Korunurken ekstra dizelerde ve gizli ekranda iyileÅŸtirmeler\n
+ Kod katkılarından dolayı Alex Vallat\'a teşekkürler!\n
+ Yeni logo için Niki Hüttner\'e (www.close-cut.de) teşekkürler!\n
- Version 0.8.3\n
-* Username/TAN index displayed in entry list (see settings)\n
-* Entries can be created if search from browser doesn\'t return results\n
-* KP2A keyboard provides possibility to search for credentials for current app\n
-* App automatically closes after selecting an entry for use in keyboard\n
-* Keyboard selection dialog automatically opens after search for URL (see settings)\n
-* Placeholders in entry fields are replaced before copying (most placeholders supported)\n
-* minor bug fixes
-Â Â
- Version 0.8.2\n
-* Support for Digest Authentication in WebDAV\n
-* Bugfixes (OI File manager, Open URL)
+ Sürüm 0.8.3\n
+* Kayıt listesinde Kullanıcı adı/TAN dizini görüntülenir (ayarlara bakın)\n
+* Tarayıcıdan arama sonuçları dönmezse, kayıtlar oluşturulabilir\n
+* KP2A klavye, geçerli uygulamada kimlik bilgilerini arama olanağı sağlar\n
+* Klavyeden kullanmak için bir kayıt seçildiğinde uygulama otomatik kapanır\n
+* URL için arama yaptıktan sonra klavye seçimi iletişim kutusu otomatik olarak açılır (ayarlara bakın)\n
+* Kayıt alanlarındaki değişkenler kopyalanmadan önce yenilendi (daha fazlası destekleniyor)\n
+* Küçük hata düzeltmeleri
+
+ Sürüm 0.8.2\n
+* WebDAV\'da Özet Kimlik Doğrulama Desteği\n
+* Hata düzeltmeleri (OI Dosya yöneticisi, Open URL)
- Version 0.8.1\n
-* KP2A Offline and \"Online\" can be installed both again\n
-* Added new translations (thanks to all contributors!)
+ Sürüm 0.8.1\n
+* KP2A Çevrimdışı ve \"Çevrimiçi\" tekrar yüklenebilir\n
+* Yeni çeviriler eklendi (tüm katkıda bulunanlara teşekkürler!)
Sürüm 0.8\n
-* Improved user interface especially for Android 4.x devices\n
-* Allow using deliberate file managers for selecting existing files\n
-* Added safer way for opening attachments (through cache directory)\n
-* fixed bugs in Edit activity\n
-* probably introduced new bugs :-)
+* Özellikle Android 4.x cihazlar için geliştirilmiş kullanıcı arayüzü\n
+* Mevcut dosyaları seçmek için güvenli dosya yöneticilerini kullanmaya izin verildi\n
+* Ekleri açmak için daha güvenli bir yol eklendi (önbellek dizini aracılığıyla)\n
+* Düzenle kısmındaki hatalar düzeltildi\n
+* Muhtemelen yeni hatalar gelecek :-)
Bir bira veya başka bir bağış için genişletilmiş imkanı
- Version 0.7\n
-* Increased loading speed: key transformations now 10x faster!\n
-* Added Keepass2Android soft-keyboard: Switch to this keyboard for entering credentials. Shields you from clipboard-based password sniffers (disable old clipboard notifications in the options)\n
-* Added option to donate a beer or something else (see menu)
- Version 0.6.2\n
-* Google Drive/Dropbox/... integration: Use the official Google Drive or Dropbox App and open any .kdbx-file. This will now bring up KP2A.\n
-* Improved Search Dialog \n
-* Improved search results for Share URL with subdomains\n
-* Added options to give feedback, and rate and translate the app in the menu\n
+ Sürüm 0.7\n
+* Artan yükleme hızı: anahtar dönüşümleri artık 10 kat daha hızlı!\n
+* Keepass2Android klavye eklendi: Kimlik bilgilerini girmek için bu klavyeye geçin. Panoya dayalı şifre avcılarından sizi korur (seçeneklerden eski pano bildirimlerini devre dışı bırakın)\n
+* Bir bira ya da başka bir şey bağışlamak için seçenek eklendi (menüye bakın)
+ Sürüm 0.6.2\n
+* Google Drive/Dropbox/... entegrasyonu: Resmi Google Drive or Dropbox uygulamalarıyla .kdbx dosyaları açılabilecek.\n
+* Geliştirilmiş Arama İletişim Kutusu\n
+* Alt alan adlarına sahip URL için geliştirilmiş arama sonuçları\n
+* Geri bildirimde bulunmak, uygulamayı derecelendirmek ve çevirmek için seçenekler eklendi\n
\n
-Version 0.6.1\n
-* Detect when database changes in the background (i.e. due to activity of a sync app)\n
-* Improved searching for URLs from the browser\n
-* Confirm dialog when discarding changes\n
+Sürüm 0.6.1\n
+* Veritabanının arka planda ne zaman değiştiğini algılanması\n
+* Tarayıcıdan gelen URL’lerin aranması iyileştirildi\n
+* DeÄŸiÅŸiklikler iptal edilirken onay iletiÅŸim kutusu eklendi\n
\n
-Version 0.6\n
-Initial public release
-Â Â
+Sürüm 0.6\n
+İlk sürüm
+
- 30 saniye
- 1 dakika
@@ -894,7 +942,18 @@ Initial public release
Eklenti tarafından sağlanan açıklama:
Keepass2Android, Android\'in Otomatik Doldurma özelliğini destekliyor ancak henüz etkinleştirilmemişe benziyor.
Otomatik Doldurmayı Etkinleştir
+ Üzgünüz, cihazınız uygulamanın içinden ayarları açmayı desteklemiyor. Otomatik Doldurma hizmetini etkinleştirmek için sistem ayarlarına girin.
Otomatik doldurma yardımını göster
Keepass2Android ile doldurun
Web alanı ilişkilendirmek Could %1$s uygulaması ile %2$s
+ Anladım
+ Tekrar gösterme
+ Ana parolanızı hatırlıyor musunuz?
+ Veritabanınızı ana anahtar olmadan açamayacağınızı unutmayın. Ana şifrenin \"sıfırlanmasının\" bir yolu yoktur.
+ Ayrıca parmak izi kilidinin, ana anahtarınızı Android\'in güvenli deposunda saklayarak çalıştığını unutmayın. Sistem ayarlarına yeni bir parmak izi eklediğinizde bu depolama alanı Android tarafından silinebilir. Bu yüzden parmak izine güvenip, ana şifrenizi unutmayın!
+ Veritabanınız yedeklendi mi?
+ Keepass2Android, şifrelerinizi seçtiğiniz konumda bir dosyada saklar. Telefonunuz kaybolduğunda, çalındığında, dosya bozulduğunda veya silindiğinde bu dosyaya hala erişebileceğinizden emin misiniz? Lütfen daima güvenli bir yerde güncel bir yedeğinizin olduğundan emin olun!
+ Şimdi bir yedek oluşturmak için %1$s > %2$s > %3$s \'e gidin.
+ Acil durumlar için hazır mısın?
+ Şifre veritabanınıza erişmediğinizde ne olacağını hiç düşündünüz mü? Ya bir kaza geçirirsen? Acil durumlar için ana anahtarınızı güvenilir bir kişiye iletmek iyi bir yöntemdir. Aksi halde şifrelerinize kimse erişemez.
diff --git a/src/keepass2android/Resources/values-uk/strings.xml b/src/keepass2android/Resources/values-uk/strings.xml
index c1000cc4..304575a0 100644
--- a/src/keepass2android/Resources/values-uk/strings.xml
+++ b/src/keepass2android/Resources/values-uk/strings.xml
@@ -87,7 +87,11 @@
Увімкнути повне Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð±Ð¸Ñ‚ÐºÐ°Ð¼Ð¸ пальців
Увімкнути Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð±Ð¸Ñ‚ÐºÐ°Ð¼Ð¸ пальців Ð´Ð»Ñ QuickUnlock
ТоркнітьÑÑ Ð´Ð°Ñ‚Ñ‡Ð¸ÐºÐ°, щоб розблокувати базу даних
+ Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ відбитком. Ключ Ð´ÐµÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ був Ñхвалений ОС Android. Зазвичай, це траплÑєтьÑÑ ÐºÐ¾Ð»Ð¸ було введено новий відбиток або змінилиÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸.
+ Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ базу даних: ÐедійÑний композитний ключ. Ð Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð±Ð¸Ñ‚ÐºÐ¾Ð¼ Ð¿Ð°Ð»ÑŒÑ†Ñ Ð±ÑƒÐ»Ð¾ вимкнено, тому що, Ñхоже, збережений головний пароль більше недійÑний.
Будь лаÑка, повторно увімкніть Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° відбитком Ð¿Ð°Ð»ÑŒÑ†Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ головного паролÑ.
+ Розблокуйте за допомогою паролÑ, а потім активуйте Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð±Ð¸Ñ‚ÐºÐ¾Ð¼ Ð¿Ð°Ð»ÑŒÑ†Ñ Ð² налаштуваннÑÑ… бази даних.
+ Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ датчик відбитків пальців.
Це збереже ваш головний пароль на цьому приÑтрої,
зашифрованому за допомогою Android Keystore і захищеному
@@ -206,6 +210,7 @@
Пам\'Ñтати Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¸Ñ… файлів
Зберігати ключовий файл
Вилучити
+ Змінити
Rijndael (AES)
Корінь
Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð°
@@ -269,6 +274,7 @@
Файл Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ñƒ буде обраний на наÑтупному кроці.
Увімкнути QuickUnlock
Введіть оÑтанні %1$d Ñимволи паролÑ:
+ Введіть код QuickUnlock:
QuickUnlock!
Закрити базу
Увімкнути QuickUnlock типово
@@ -281,6 +287,8 @@
QuickUnlock потребує ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð½Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ— роботи. Виберіть цей параметр Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñповіщень без піктограми.
Довжина ключа QuickUnlock
МакÑимальна кількіÑть Ñимволів, що викориÑтовуютьÑÑ Ñк пароль QuickUnlock.
+ Приховати довжину QuickUnlock
+ Якщо увімкнено, довжина коду QuickUnlock не показуєтьÑÑ Ð½Ð° екрані блокуваннÑ.
Ðеправильний пароль QuickUnlock!
Каталог вкладених файлів
Каталог Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð¸Ñ… файлів.
@@ -313,6 +321,8 @@
Стирати введений головний пароль, Ñкщо база даних не розблокована.
Блокувати при виході з програми
Блокувати базу даних при виході з програми натиÑканнÑм кнопки \"назад\".
+ Ðктивувати поле пошуку при запуÑку
+ Ðктивує поле пошуку в груповому виглÑді піÑÐ»Ñ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡Ð¸ пошуку запиÑу
Приховати опцію внеÑку
Це Ð¾Ð¿Ñ†Ñ–Ñ Ð´Ð»Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті внеÑку. Вона Ñтає доÑтупна лише через деÑкий Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Keepass2Android.
Без внеÑків Ñ†Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° не Ñ–Ñнувала б Ñ– не вдоÑконалювалаÑÑ Ð±! Якщо ви ще не зробили внеÑок, розглÑньте можливіÑть зробити це зараз.
@@ -320,6 +330,10 @@
Я не дам вам ані копійки, або Ñ Ð²Ð¶Ðµ зробив внеÑок. Ðе питати про внеÑок, навіть в день Ð½Ð°Ñ€Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°.
ÐšÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¸ даних
Зберігати копію файлів віддаленої бази даних в каталозі кешу програми. Це дозволÑÑ” викориÑтовувати віддалені бази даних навіть в автономному режимі.
+ Локальні резервні копії
+ Створювати локальну резервну копію піÑÐ»Ñ ÑƒÑпішного Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð±Ð°Ð·Ð¸.
+ ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ñ— резервної копії...
+ Локальна резервна ÐºÐ¾Ð¿Ñ–Ñ %1$s
SSL-Ñертифікати
Визначають поведінку, коли перевірка Ñертифікату не вдалаÑÑ. Примітка: ви можете вÑтановити Ñертифікати на приÑтрої, Ñкщо перевірка не вдалаÑÑ!
ОчиÑтити кеш?
@@ -333,6 +347,7 @@
Окремі ÑповіщеннÑ
Показувати окремі ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ñ–Ð¼ÐµÐ½Ñ– кориÑтувача й Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð¾ буфера обміну та активації клавіатури.
Служба доÑтупноÑті Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ
+ Служба автозаповненнÑ
Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ð°Ñ‚ÑƒÑ€Ð¸ KP2A
Зробити веÑÑŒ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾Ñтупним через клавіатуру KP2A (рекомендовано).
Перемикати клавіатуру
@@ -347,6 +362,10 @@
Змінювати клавіатуру на попередню, Ñкщо не відкрито жодного запиÑу.
Піктограма в облаÑті Ñповіщень
Показувати піктограму в облаÑті Ñповіщень, коли база даних розблокована.
+ Ð’ Android 8 з\'ÑвилаÑÑ Ð½Ð¾Ð²Ð° поведінка Ð´Ð»Ñ Ñповіщень. Якщо ви хочете приховати піктограму Ñповіщень Keepass2Android, налаштуйте це в ÑиÑтемних налаштуваннÑÑ…. Ð’Ñтановіть важливіÑть категорії Ñповіщень на мінімальний рівень.
+ Відкрити налаштуваннÑ
+ Мені байдуже
+ Файл більше не доÑтупний Ð´Ð»Ñ Keepass2Android. Його було вилучено, або відкликано дозвіл на доÑтуп. Відкрийте файл повторно, наприклад через меню Змінити базу даних.
Попереднє завантаженнÑ
Починати Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ бази даних під Ñ‡Ð°Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ.
Хочете перезапиÑати наÑвний бінарний файл з тим Ñамим іменем?
@@ -493,6 +512,7 @@
вимкнено
Знайти плагіни онлайн
ОблаÑті
+ не увімкнено
%1$s запитує облікові дані Ð´Ð»Ñ %2$s.
%1$s запитує облікові дані. Будь лаÑка, виберіть запиÑ.
Увімкнено
@@ -520,6 +540,7 @@
Схоже, що ви відкрили файл із зовнішньої програми. Цей ÑпоÑіб не підтримує запиÑ. Якщо ви хочете внеÑти зміни в базу паролів, закрийте Ñ—Ñ— та виберіть Змінити базу паролів. ПіÑÐ»Ñ Ñ‡Ð¾Ð³Ð¾ відкрийте файл за допомогою одного з доÑтупних варіантів.
Ð’Ñтановлено прапорець тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ. Приберіть цей прапорець, Ñкщо ви хочете внеÑти зміни в базу даних.
Ð—Ð°Ð¿Ð¸Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ð¹, через обмеженнÑ, Ñкі впроваджено починаючи з Android KitKat. Якщо ви хочете внеÑти зміни в базу паролів, закрийте Ñ—Ñ— та виберіть Змінити базу паролів. ПіÑÐ»Ñ Ñ‡Ð¾Ð³Ð¾ відкрийте файл, викориÑтовуючи ÑиÑтемний заÑіб вибору файлів.
+ Локальні резервні копії неможливо змінювати. Ви можете ÑкориÑтатиÑÑ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ”ÑŽ екÑпорту в налаштуваннÑÑ…, щоб екÑпортувати базу даних в інше розташуваннÑ, піÑÐ»Ñ Ñ‡Ð¾Ð³Ð¾ відкрити Ñ—Ñ—. Ð’ цьому випадку можна буде вноÑити зміни.
Додати піктограму з файлу...
ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ...
Копіювати
@@ -555,6 +576,13 @@
• ПереконайтеÑÑ, що ви обрали правильний файл бази паролів.
+
+ \n
+ • Підказка: Якщо ви вважаєте, що ваша база даних могла бути пошкоджена, або ви не пам\'Ñтаєте головний пароль піÑÐ»Ñ Ñ—Ñ— зміни, ви можете Ñпробувати відкрити оÑтанню верÑÑ–ÑŽ файлу, торкнувшиÑÑŒ \"%1$s\" Ñ– обравши локальну резервну копію.
+
+ \n
+ • Підказка: Keepass2Android зберіг оÑтанню робочу верÑÑ–ÑŽ файлу у внутрішньому Ñховищі. Ви можете відкрити Ñ—Ñ—, торкнувшиÑÑŒ \"%1$s\" Ñ– обравши локальну резервну копію.
+
Файл пошкоджений. \n
ОÑÑŒ кілька порад, Ñкі можуть допомогти виÑвити проблему:\n
@@ -564,6 +592,12 @@
• Якщо ви можете відкрити цей файл на комп\'ютері, будь лаÑка, зв\'ÑжітьÑÑ Ð· технічною підтримкою. Ви можете Ñпробувати зберегти його з іншими налаштуваннÑми (наприклад, незапакованим) на комп\'ютері та відкрити в Keepass2Android.
+ База даних розблокована
+ Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¸ даних
+ QuickUnlock
+ Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¸ даних з QuickUnlock
+ Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу
+ Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñтого доÑтупу до обраного запиÑу.
Keepass2Android: СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°.
Під Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Keepass2Android ÑталаÑÑ Ð½ÐµÐ¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÑƒÐ²Ð°Ð½Ð° помилка. Допоможіть нам Ñ—Ñ— виправити, дозволивши програмі надÑилати звіти про помилки.
Звіти про помилки ніколи не будуть міÑтити будь-Ñкої інформації з вашої бази паролів чи головний пароль. Ви можете вимкнути Ñ—Ñ… в налаштуваннÑÑ… програми.
@@ -572,6 +606,31 @@
Запитати піÑÐ»Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸
ÐадÑилати звіти про помилки
Показувати клавіатуру Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ñƒ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ð³Ð¾ ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð±Ð¸Ñ‚ÐºÑ–Ð² пальців.
+
+ ВерÑÑ–Ñ 1.05\n
+ * ВикориÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ñ–Ð² Ñповіщень Ð´Ð»Ñ Android 8 з можливіÑтю ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· ÑиÑтемні налаштуваннÑ\n
+ * Показ піктограми запиÑу в облаÑті Ñповіщень\n
+ * ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð°Ð´Ð°Ð¿Ñ‚Ð¸Ð²Ð½Ð¸Ñ… піктограм Ð´Ð»Ñ Android 8, викориÑÑ‚Ð°Ð½Ð½Ñ ÐºÑ€ÑƒÐ³Ð»Ð¾Ñ— піктограми запуÑку Ð´Ð»Ñ Android 7\n
+ * МожливіÑть активації пошуку одразу піÑÐ»Ñ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ (в налаштуваннÑÑ…)\n
+ * Зміна ÑпоÑобу запиÑу файлів через Storage Access Framework, виправлено помилку Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² на Google ДиÑку, відкритих через ÑиÑтемний вибір файлів\n
+ * Додано деÑкі інформаційні ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ Ð½ÐµÐ¿Ð¾Ñ€Ð¾Ð·ÑƒÐ¼Ñ–Ð½ÑŒ\n
+ * Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… резервних копій уÑпішно відкритих баз даних Ð´Ð»Ñ Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ñ€Ð¸Ð·Ð¸ÐºÑƒ втрати даних\n
+ * Оновлено JSch Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ найновіших протоколів SSH\n
+ * Дозвіл Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ з\'єднаннÑ, наприклад, коли змінено пароль WebDav\n
+ * Додано підтримку Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ñтатичного Ð¿Ð°Ñ€Ð¾Ð»Ñ Yubikey Neo\n
+ * МожливіÑть Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ð¹ автозаповненнÑ\n
+ * Виправлено витік даних до logcat\n
+ * виправлено інші помилки\n
+
+
+ВерÑÑ–Ñ 1.04b\n
+ * Виправлено збій, Ñкий виникав при Ñпробі увімкнути Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð½Ð° приÑтроÑÑ… Huawei.\n
+
+
+ ВерÑÑ–Ñ 1.04\n
+ * Додано Ñлужбу Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ Android 8.0 Ñ– новіше.\n
+ * Оновлено бібліотеки, інÑтрументи ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ– верÑÑ–ÑŽ Target SDK.\n
+
ВерÑÑ–Ñ 1.03\n
* Вилучено Ñлужбу Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð½Ð° запит Google. ДивітьÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ÑтупноÑті паролів, щоб знайти плагін, Ñкий відтворює попередню функціональніÑть.\n
@@ -884,4 +943,20 @@ Initial public release
ПереконайтеÑÑ, що це працює на вашій ÑиÑтемі, Ñ– Ñкщо не працює, розглÑньте можливіÑть викориÑÑ‚Ð°Ð½Ð½Ñ Ñтандартної клавіатури.
ÐžÐ¿Ð¸Ñ Ð½Ð°Ð´Ð°Ñ”Ñ‚ÑŒÑÑ Ð¿Ð»Ð°Ð³Ñ–Ð½Ð¾Ð¼:
+ Keepass2Android підтримує функцію Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Android, але, Ñхоже, ви Ñ—Ñ— ще не активували.
+ Увімкнути автозаповненнÑ
+ Шкода, але ваш приÑтрій не підтримує Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ вÑередині програми. Перейдіть вручну до ÑиÑтемних налаштувань автозаповненнÑ, щоб увімкнути Ñлужбу.
+ Показати довідку з автозаповненнÑ
+ Заповнити з Keepass2Android
+ Ðе вдалоÑÑ Ð°Ñоціювати домен %1$s з програмою %2$s
+ Я розумію
+ Ðе показувати знову
+ Ви пам\'Ñтаєте Ñвій головний пароль?
+ Зауважте, що ви не зможете відкрити Ñвою базу даних без головного паролÑ. Відновити головний пароль неможливо.
+ Також пам\'Ñтайте, що при розблокуванні відбитком Ð¿Ð°Ð»ÑŒÑ†Ñ Ð²Ð°Ñˆ головний пароль зберігаєтьÑÑ Ð² захищеному Ñховищі Android. Це Ñховище може бути очищене ÑиÑтемою в будь-Ñкий момент, наприклад, Ñкщо ви додаÑте новий відбиток в налаштуваннÑÑ… ÑиÑтеми. Отже, не покладайтеÑÑ Ñ†Ñ–Ð»ÐºÐ¾Ð¼ на відбитки пальців, а завжди пам\'Ñтайте Ñвій головний пароль!
+ Чи Ñтворена резервна ÐºÐ¾Ð¿Ñ–Ñ Ð²Ð°ÑˆÐ¾Ñ— бази даних?
+ Keepass2Android зберігає ваші паролі в файлі у вибраному вами розташуванні. Ви впевнені, що вÑе ще маєте доÑтуп до цього файлу, Ñкщо втратите доÑтуп до Ñвого приÑтрою, або Ñкщо файл буде пошкоджено чи видалено? ПереконайтеÑÑ, що у Ð²Ð°Ñ Ð·Ð°Ð²Ð¶Ð´Ð¸ Ñ” оновлена резервна ÐºÐ¾Ð¿Ñ–Ñ Ð² надійному міÑці!
+ Щоб Ñтворити резервну копію зараз, перейдіть до %1$s > %2$s > %3$s.
+ Ви готові до непередбачуваних випадків?
+ Ви коли-небудь думали про те, що ÑтанетьÑÑ, Ñкщо ви втратите доÑтуп до вашої бази паролів? Що, Ñк ÑталаÑÑŒ непередбачувана подіÑ? Завжди добре, щоб довірена людина мала доÑтуп до вашого головного паролÑ. Інакше, ніхто не зможе отримати доÑтуп до вашої бази паролів в надзвичайній Ñитуації.
diff --git a/src/keepass2android/Resources/values-vi/strings.xml b/src/keepass2android/Resources/values-vi/strings.xml
index 83ad54cd..4ae397c5 100644
--- a/src/keepass2android/Resources/values-vi/strings.xml
+++ b/src/keepass2android/Resources/values-vi/strings.xml
@@ -88,6 +88,7 @@
Báºt Mở khoá vân tay cho Mở khoá nhanh
Chạm và o cảm biến để mở khoá cơ sở dữ liệu
Xin vui lòng kÃch hoạt lại mở khóa vân tay cho máºt khẩu chá»§ má»›i.
+ Khởi động cảm biến vân tay thất bại.
Äiá»u nà y sẽ lưu trữ máºt khẩu chá»§ cá»§a bạn trên thiết bị nà y,
được mã hóa với Android Keystore và được bảo vệ
@@ -753,4 +754,10 @@ Bản phát hà nh chÃnh thức đầu tiên
- Cảnh báo khi xác nháºn không thà nh công
- Không chấp nháºn các chứng chỉ không hợp lệ
+ Mô tả của phần mở rộng:
+ Keepass2Android há»— trợ chức năng Tá»± động Ä‘iá»n cá»§a Android nhưng có vẻ bạn chưa báºt chức năng nà y.
+ Báºt Tá»± động Ä‘iá»n
+ Xem trợ giúp vá» Tá»± động Ä‘iá»n
+ Äiá»n và o vá»›i Keepass2Android
+ Không thể liên kết tên miá»n trang web %1$s vá»›i ứng dụng %2$s
diff --git a/src/keepass2android/Resources/values-zh-rCN/strings.xml b/src/keepass2android/Resources/values-zh-rCN/strings.xml
index 9db3c82e..971327a7 100644
--- a/src/keepass2android/Resources/values-zh-rCN/strings.xml
+++ b/src/keepass2android/Resources/values-zh-rCN/strings.xml
@@ -7,10 +7,11 @@
Keepass2Android æ˜¯ä¸€æ¬¾æ”¯æŒ Keepass 2.x æ•°æ®åº“读写的密ç 管ç†åº”用。
用户界é¢åŸºäºŽç”± Brian Pellin å¼€å‘çš„ KeepassDroid。数æ®åº“æ“ä½œçš„ä»£ç æ˜¯åŸºäºŽ Dominik Reichl å¼€å‘çš„KeePassã€‚æ ¹æ®google的创作共用3.0许å¯ä¸çš„æ¡æ¬¾ä¸çš„创建和申请æ¡ä¾‹çš„æè¿°å¯¹android机器人进行了转载或者修改。
SFTP ç”± JCraft,Inc. 创建的 JSch 库(基于BSD许å¯è¯ï¼‰æ¥æ”¯æŒ
+ 锤åå›¾æ ‡æ˜¯ç”±John Caserta通过Noun Project创建的。ä¼é¹…å›¾æ ‡æ˜¯ç”±Adriano Emerick通过Noun Projectåˆ›å»ºçš„ã€‚ç¾½æ¯›å›¾æ ‡æ˜¯ç”± Jon Testa通过Noun Projectåˆ›å»ºçš„ã€‚è‹¹æžœå›¾æ ‡æ˜¯ç”±Ava Rowell通过Noun Projectåˆ›å»ºçš„ã€‚å›¾ç‰‡å›¾æ ‡æ¥è‡ª https://icons8.com/icon/5570/Picture 。
接å—
æ‹’ç»
æ·»åŠ æ¡ç›®
- 编辑项目
+ 编辑æ¡ç›®
创建URLæ¡ç›®
æ·»åŠ ç¾¤ç»„
æ·»åŠ ç¾¤ç»„
@@ -30,7 +31,7 @@
应用程åºè®¾ç½®
在æœç´¢ç»“æžœä¸æ˜¾ç¤ºç¾¤ç»„å
在æœç´¢ç»“æžœä¸æ¡ç›®æ ‡é¢˜ä¸‹æ˜¾ç¤ºç¾¤ç»„åã€‚å¦‚æžœå‡ ä¸ªæ¡ç›®å…·æœ‰ç›¸åŒçš„å称时会很有用。
- 显示当å‰ç¾¤ç»„:%1$s
+ 当剿˜¾ç¤ºç¾¤ç»„:%1$s
在æ¡ç›®è§†å›¾ä¸æ˜¾ç¤ºç¾¤ç»„å
对ä¸èµ· ï¼Keepass2Android ä¸èƒ½å¤„ç†è¿”回的 URI %1$s。请è”系开å‘者 ï¼
1个项目
@@ -39,7 +40,7 @@
å‘现更多...
安全
显示
- 密ç 输入å£
+ 密ç 输入接å£
快速解é”
文件æ“作
键盘
@@ -75,22 +76,24 @@
\u2026
å¤åˆ¶åˆ°å‰ªè´´æ¿
è§¦æ‘¸ä¼ æ„Ÿå™¨
- 确认以指纹继ç»
- ä¸èƒ½å®‰è£…指纹解é”:
- æŒ‡çº¹æ— æ³•è¯†åˆ«.请é‡è¯•
+ 确认指纹以继ç»
+ æ— æ³•è®¾ç½®æŒ‡çº¹è§£é”:
+ æŒ‡çº¹æ— æ³•è¯†åˆ«ã€‚è¯·é‡è¯•
指纹识别æˆåŠŸ
- 指纹识别需è¦android 6.0或更新的版本.
- 未检测到指纹识别硬件.
- ä½ è¿˜æœªåœ¨è¿™ä¸ªè®¾å¤‡ä¸Šç™»è®°è¿‡æŒ‡çº¹.请先去系统ä¸è¿›è¡Œè®¾ç½®.
+ 指纹识别需è¦Android 6.0或更新的版本。
+ 未检测到指纹识别硬件。
+ ä½ è¿˜æœªåœ¨è¿™ä¸ªè®¾å¤‡ä¸Šå½•å…¥è¿‡æŒ‡çº¹ã€‚è¯·å…ˆå‰å¾€ç³»ç»Ÿè®¾ç½®ã€‚
ç¦ç”¨æŒ‡çº¹è§£é”
å¯ç”¨å®Œæ•´çš„æŒ‡çº¹è§£é”
对快速解é”å¯ç”¨æŒ‡çº¹è§£é”
è§¦æ‘¸æ„Ÿåº”è§£é”æ•°æ®åº“
- 请为这个新的主密ç 釿–°å¯ç”¨æŒ‡çº¹è§£é”.
- 这将ä¿å˜ä½ 的主密ç 在这å°è®¾å¤‡ä¸Š.
-使用android密ç å˜å‚¨åº“æ¥è§£å¯†å’Œä¿æŠ¤
-使用指纹认è¯.åªå…è®¸é€šè¿‡ä½ çš„æŒ‡çº¹æ¥è§£é”ä½ çš„æ•°æ®åº“.
- å…è®¸ä½¿ç”¨æŒ‡çº¹è®¤è¯æ¥ä»£æ›¿å¿«é€Ÿè§£é”代ç .ä¸å†éœ€è¦ä¿å˜ä»»ä½•ä¸Žä½ çš„ä¸»å¯†ç å…³è”的信æ¯.
+ 指纹解é”失败。解密密钥已被 Android æ“ä½œç³»ç»Ÿæ ‡è®°ä¸ºå¤±æ•ˆã€‚è¿™é€šå¸¸å‘生在注册了新的指纹或更改了安全设置åŽã€‚
+ è§£é”æ•°æ®åº“失败:å¤åˆå¯†é’¥æ— 效。由于å˜å‚¨çš„主密钥ä¸å†æœ‰æ•ˆï¼ŒæŒ‡çº¹è§£é”已被ç¦ç”¨ã€‚
+ 请为这个新的主密ç 釿–°å¯ç”¨æŒ‡çº¹è§£é”。
+ 请用密ç è§£é”,然åŽåœ¨æ•°æ®åº“设置ä¸é‡æ–°å¯ç”¨æŒ‡çº¹è§£é”。
+ åˆå§‹åŒ–æŒ‡çº¹ä¼ æ„Ÿå™¨å¤±è´¥ã€‚
+ æ¤é€‰é¡¹å°†ä¼šæŠŠä¸»å¯†ç ä¿å˜åœ¨è¿™å°è®¾å¤‡ä¸Šï¼Œä½¿ç”¨Androidå¯†é’¥åº“åŠ å¯†ï¼Œå¹¶ä½¿ç”¨æŒ‡çº¹æŽˆæƒè¿›è¡Œä¿æŠ¤ã€‚åªæœ‰ä½ 的指纹æ‰èƒ½è§£é”æ•°æ®åº“。
+ å…è®¸ä½¿ç”¨æŒ‡çº¹è®¤è¯æ¥ä»£æ›¿å¿«é€Ÿè§£é”代ç 。ä¸å†éœ€è¦ä¿å˜ä»»ä½•ä¸Žä½ çš„ä¸»å¯†ç å…³è”的信æ¯ã€‚
输入数æ®åº“å:
访问时间
å–æ¶ˆ
@@ -123,7 +126,7 @@
è·¯å¾„æ— æ•ˆã€‚
用户åä¸èƒ½ä¸ºç©ºã€‚
å¯†ç æˆ–者密钥文件ä¸èƒ½ä¸ºç©ºã€‚
- 至少必须选择一个密ç 生æˆç±»åž‹
+ 必须选择至少一个密ç 生æˆç±»åž‹
密ç ä¸åŒ¹é…。
å¯†é’¥åŠ å¯†æ¬¡æ•°å¿…é¡»ä¸ºæ•°å—。
傿•°å¿…须是一个数å—
@@ -203,6 +206,7 @@
è®°ä½å¯†é’¥æ–‡ä»¶çš„ä½ç½®
ä¿å˜å¯†é’¥æ–‡ä»¶
移除
+ 编辑
Rijndael åŠ å¯†ï¼ˆAES)
管ç†å‘˜æƒé™
密匙派生函数
@@ -244,7 +248,7 @@
感谢 %1$s æä¾›çš„å›¾æ ‡å’Œç•Œé¢è®¾è®¡.
包å«åœ¨ KP2A ä¸çš„åŒé±¼ç®—法æ’件是由 Scott Greenberg 为 Keepass å¼€å‘的。
Android 文件选择器是由 Hai Bison å¼€å‘çš„
- KP2A 键盘基于 Android 开放æºä»£ç 项目的姜饼键盘,并使用黑客 Klaus Weidner 的键盘æ’件管ç†å™¨ä»£ç 。
+ KP2A 键盘基于 Android 开放æºä»£ç 项目的姜饼键盘,并使用 Klaus Weidner 的黑客键盘æ’件管ç†å™¨ä»£ç 。
请注æ„
贡献者
æ£åˆ™è¡¨è¾¾å¼
@@ -266,6 +270,7 @@
所导入的文件将在下一æ¥è¢«é€‰ä¸
å¯ç”¨å¿«é€Ÿè§£é”
è¾“å…¥ä½ å¯†ç çš„æœ€åŽ %1$d 个å—符
+ 输入快速解é”密ç :
快速解é”ï¼
关闿•°æ®åº“
默认å¯ç”¨å¿«é€Ÿè§£é”
@@ -278,6 +283,8 @@
快速解é”需è¦ä¸€æ¡é€šçŸ¥ä»¥èƒ½æ£å¸¸è¿è¡Œã€‚选䏿œ¬é€‰é¡¹ä»¥æ˜¾ç¤ºä¸€æ¡ä¸å¸¦å›¾æ ‡çš„通知。
快速解é”密钥的长度
快速解é”密ç 的最大长度
+ éšè—快速解é”密ç 长度
+ è‹¥å¯ç”¨ï¼Œå¿«é€Ÿè§£é”所需的密ç 长度ä¸ä¼šå†æ˜¾ç¤ºåœ¨å¿«é€Ÿè§£é”界é¢ä¸Šã€‚
è§£é”失败:密ç 错误ï¼
文件附件目录
附件所ä¿å˜åˆ°çš„目录ä½ç½®
@@ -285,6 +292,7 @@
请选择ä¿å˜è¯¥é™„ä»¶çš„ä½ç½®ã€‚
ä¿å˜åˆ° SD å¡
ä¿å˜åˆ°ç¼“å˜å¹¶æ‰“å¼€
+ åœ¨å†…éƒ¨å›¾åƒæŸ¥çœ‹å™¨ä¸æ˜¾ç¤º
ä¿å˜æ–‡ä»¶åˆ° %1$s 。
æ— æ³•ä¿å˜é™„件到 %1$s 。
记忆æœç´¢æ–‡æœ¬ï¼Ÿ
@@ -309,6 +317,8 @@
å½“æ²¡æœ‰è§£é”æ•°æ®åº“就退出时,清除已输入的主密ç 。
离开应用时é”定
当通过点按返回键离开本应用时é”定数æ®åº“
+ å¯åŠ¨æ—¶è‡ªåŠ¨æ¿€æ´»æœç´¢åŒºåŸŸ
+ 当进入分组视图或开始æœç´¢æ¡ç›®æ—¶è‡ªåŠ¨å°†ç„¦ç‚¹è½¬è‡³æœç´¢åŒºåŸŸ
éšè—æèµ 选项
本设置为æèµ è€…è®¾å®šã€‚åªæœ‰å½“使用 Keepass2Android ä¸€æ®µæ—¶é—´åŽæ‰å¯ç”¨ã€‚
è‹¥æ²¡æœ‰ææ¬¾ï¼Œæœ¬åº”用就ä¸å˜åœ¨ä¹Ÿä¸ä¼šæœ‰ä¸æ–地改进ï¼è‹¥æ‚¨å°šæœªæèµ ,请考虑现在æèµ å§ï¼
@@ -316,6 +326,10 @@
我ä¸ä¼šæèµ æˆ–å·²ç»æèµ . 请ä¸è¦ç»§ç»è¦æ±‚æèµ , å³ä¾¿æ˜¯åœ¨å¼€å‘者的生日.
æ•°æ®åº“缓å˜
在程åºç¼“å˜ç›®å½•ä¿å˜ä¸€ä»½è¿œç¨‹æ•°æ®åº“文件副本。这å…许离线的时候使用远程数æ®åº“。
+ 本地备份
+ 在æˆåŠŸè¿›å…¥æ•°æ®åº“åŽåˆ›å»ºæœ¬åœ°å¤‡ä»½ã€‚
+ æ£åœ¨æ›´æ–°æœ¬åœ°å¤‡ä»½...
+ 本地备份:%1$s
SSL è¯ä¹¦
定义当è¯ä¹¦éªŒè¯å¤±è´¥æ—¶çš„行为。注æ„:如果验è¯å¤±è´¥æ‚¨å¯ä»¥åœ¨æ‚¨çš„设备上安装è¯ä¹¦ï¼
清除缓å˜ï¼Ÿ
@@ -324,10 +338,14 @@
检查文件是å¦åœ¨ä¿å˜å˜æ›´ä¹‹å‰è¢«å¤–部修改。
检查é‡å¤çš„ UUID
通过检查数æ®åº“æ–‡ä»¶æ˜¯å¦æœ‰å¤šä¸ªç›¸åŒ ID 的项目,æ¥åˆ¤æ–æ•°æ®åº“æ˜¯å¦æŸå。这å¯èƒ½ä¼šå¯¼è‡´æ„外的行为。
- 剪贴æ¿çš„通知
+ 剪贴æ¿é€šçŸ¥
让用户å和密ç å¯é€šè¿‡é€šçŸ¥æ 和剪贴æ¿è®¿é—®ã€‚谨防密ç 嗅探器 ï¼
独立的通知
为å¤åˆ¶è´¦æˆ·ä¿¡æ¯å’Œæ¿€æ´»é”®ç›˜åˆ†åˆ«æ˜¾ç¤ºé€šçŸ¥
+ 自动填充æœåŠ¡ï¼ˆè¾…åŠ©åŠŸèƒ½ï¼‰
+ 自动填充æœåŠ¡
+ KP2A 键盘通知
+ 使整个æ¡ç›®å¯é€šè¿‡ KP2A é”®ç›˜èŽ·å– ï¼ˆæŽ¨è)。
切æ¢é”®ç›˜
当从æµè§ˆå™¨æœç´¢æˆ–键盘åŽå¯ç”¨é€šè¿‡ KP2A é”®ç›˜è¾“å…¥æ—¶ï¼Œæ‰“å¼€é”®ç›˜é€‰æ‹©å¯¹è¯æ¡†ã€‚
自动切æ¢é”®ç›˜
@@ -340,6 +358,10 @@
没有打开æ¡ç›®æ—¶ï¼Œåˆ‡æ¢å›žåŽŸæ¥çš„键盘。
è§£é”æ—¶é€šçŸ¥å›¾æ ‡
当数æ®åº“处于解é”çŠ¶æ€æ æŒç»æ˜¾ç¤ºé€šçŸ¥ã€‚
+ Android 8.0çš„é€šçŸ¥å¼•å…¥äº†æ–°çš„è¡Œä¸ºã€‚è‹¥ä½ æƒ³éšè—Keepass2Androidçš„é€šçŸ¥å›¾æ ‡ï¼Œè¯·å‰å¾€ç³»ç»Ÿè®¾ç½®ï¼Œå°†é€šçŸ¥çš„é‡è¦æ€§è®¾ä¸ºä¸ç‰ã€‚
+ 打开设置
+ æ— æ‰€è°“
+ Keepass2Androidæ— æ³•è®¿é—®æ¤æ–‡ä»¶ã€‚文件å¯èƒ½å·²è¢«åˆ 除,或其访问æƒé™å—é™ã€‚请使用“更改数æ®åº“â€é‡æ–°æ‰“开文件。
预载入数æ®åº“文件
当输入密ç 项时å¯åЍåŽå°åŠ è½½æˆ–ä¸‹è½½æ•°æ®åº“文件。
是å¦è¦ä»¥ç›¸åŒçš„åå—覆盖现有的文件?
@@ -349,7 +371,7 @@
æœªèƒ½æ·»åŠ é™„ä»¶ã€‚
回收站
是å¦è¦æ°¸ä¹…åˆ é™¤æ¤æ¡ç›®ï¼ŸæŒ‰å¦å–消。
- 是å¦è¦æ°¸ä¹…åˆ é™¤æ¤ç¾¤ç»„?按å¦å–消æ“作。
+ 是å¦è¦æ°¸ä¹…åˆ é™¤æ¤ç¾¤ç»„?按å¦å°†å…¶æ”¾å…¥å›žæ”¶ç«™ã€‚
ä½ æƒ³è¦æ°¸ä¹…åˆ é™¤é€‰å®šçš„å…ƒç´ ï¼Ÿé€‰å¦å›žåˆ°åžƒåœ¾ç®±ã€‚
ä½ æƒ³å®Œå…¨çš„åˆ é™¤è¿™ä¸ªç™»é™†è®°å½•å—?
ä½ æƒ³æ°¸ä¹…çš„åˆ é™¤è¿™ä¸ªç»„å—?
@@ -369,7 +391,7 @@
åˆ é™¤å…ƒç´ ä¸…
设置密ç ...
撤消更改...
- å˜æ›´ä¸»é”®...
+ å˜æ›´ä¸»å¯†é’¥...
è§£ç æ•°æ®åº“...
è§£æžæ•°æ®åº“...
æ£€æŸ¥ç›®æ ‡æ–‡ä»¶çš„æ›´æ”¹...
@@ -440,13 +462,13 @@
您å¯ä»¥åœ¨æ‚¨çš„ Andr​​oid 设备或云端å˜å‚¨ä½ 的数æ®åº“(éžç¦»çº¿ç‰ˆæœ¬ï¼‰ã€‚ å³ä½¿æ‚¨å¤„äºŽè„±æœºçŠ¶æ€ Keepass2Android 也ä¾ç„¶å¯ä»¥ä½¿ç”¨ã€‚æ•°æ®åº“采用安全的 AES 256 ä½åŠ å¯†ï¼Œè‹¥æ²¡æœ‰æ‚¨çš„å¯†ç ä»»ä½•äººéƒ½æ— æ³•è®¿é—®å®ƒã€‚æˆ‘ä»¬å»ºè®®é€‰æ‹©å˜å‚¨åœ¨ Dropbox:在所有设备上皆å¯è®¿é—®ï¼Œç”šè‡³è¿˜æä¾›äº†æ–‡ä»¶çš„æ—©æœŸç‰ˆæœ¬å¤‡ä»½ã€‚
选择数æ®åº“å˜å‚¨çš„ä½ç½®ï¼š
更改ä½ç½®
- 一旦å¯ç”¨,å³ä¾¿æ•°æ®åº“被é”定,Keepass2Androidå°†åœåœ¨åŽå°è¿è¡Œ.è¿™æ ·å…许仅用主密ç 的一å°éƒ¨åˆ†æ¥è§£é”æ•°æ®åº“.
+ 一旦å¯ç”¨ï¼Œå³ä¾¿æ•°æ®åº“被é”定,Keepass2Androidå°†ä»ç„¶åŽå°è¿è¡Œã€‚è¿™æ ·å…许仅用主密ç 的一å°éƒ¨åˆ†æ¥è§£é”æ•°æ®åº“。
主密ç
您的数æ®åº“是使用您在æ¤å¤„输入的密ç è¿›è¡ŒåŠ å¯†çš„ã€‚ä¸ºäº†ä¿è¯æ•°æ®åº“的安全请选择强密ç ï¼å»ºè®®ï¼šåŒæ—¶ä½¿ç”¨å¤§å°å†™è‹±æ–‡å—æ¯ã€æ•°å—åŠç‰¹æ®Šå—符。
è¯·é€‰æ‹©ä¸€ä¸ªä¸»å¯†ç æ¥ä¿æŠ¤æ‚¨çš„æ•°æ®åº“:
密钥文件
- 密钥文件基本上是å˜å‚¨åœ¨ä¸€ä¸ªæ–‡ä»¶ä¸ã€‚密钥文件通常比密ç 夿‚å’Œå¯é å¾—å¤šï¼Œä½†æ˜¯ä¹Ÿéš¾ä»¥ä¿æŒæœºå¯†ã€‚如果您的密钥ä¿å˜åœ¨äº‘端,这将使得安全性大大é™ä½Žã€‚é‡è¦æç¤ºï¼šåˆ›å»ºå¯†é’¥æ–‡ä»¶åŽä¸è¦ä¿®æ”¹å®ƒã€‚
- 选择是å¦ç”¨å¯†é’¥æ–‡ä»¶è€Œä¸æ˜¯æ‚¨çš„主密ç :
+ å¯†é’¥æ–‡ä»¶ç®€å•æ¥è¯´å°±æ˜¯ä¿å˜æˆæ–‡ä»¶çš„密ç 。密钥文件通常比密ç 夿‚å’Œå¯é 得多,但是也更难将其éšè—。如果您将数æ®åº“ä¿å˜åœ¨äº‘端,åƒä¸‡ä¸è¦æŠŠå¯†é’¥æ–‡ä»¶ä¹Ÿæ”¾ä¸ŠåŽ»ï¼è¿™æ ·åšä¼šä½¿å¯†é’¥æ–‡ä»¶å˜å¾—æ¯«æ— æ„义ï¼é‡è¦æç¤ºï¼šåˆ›å»ºæ•°æ®åº“åŽï¼Œä¸è¦å¯¹å¯†é’¥æ–‡ä»¶åšå‡ºä¿®æ”¹ã€‚
+ 勾选以在使用主密ç 之余é¢å¤–使用一个密钥文件:
使用密钥文件
æ·»åŠ å¯†é’¥æ–‡ä»¶æ—¶å‡ºé”™ ï¼
åŠ è½½ä¸€æ¬¡æ€§å¯†ç 辅助文件......
@@ -473,6 +495,10 @@
TOTP å—æ®µå称设置
åœ¨è¿™é‡Œè¾“å…¥è®¾ç½®å—æ®µçš„å—æ®µåç§° TrayTotp
TrayTotp
+ 调试用日志文件
+ 使用日志文件
+ 将应用输出写入本地日志文件
+ å‘é€è°ƒè¯•日志...
载入ä¸...
æ’ä»¶
包å称:
@@ -482,6 +508,7 @@
å·²ç¦ç”¨
å‘现在线æ’ä»¶
作用域
+ 未å¯ç”¨
%1$s æ£åœ¨è¯·æ±‚ %2$s çš„è¯ä¹¦
%1$s æ£åœ¨è¯·æ±‚è¯ä¹¦ã€‚请选择一个æ¡ç›®ã€‚
å·²å¯ç”¨
@@ -509,6 +536,7 @@
这看起æ¥åƒä½ 从一个外部app打开这个文件.è¿™ç§æ–¹å¼ä¸æ”¯æŒå†™å…¥.å¦‚æžœä½ æƒ³ä¿®æ”¹æ•°æ®åº“,è¯·å…ˆå…³é—æ•°æ®åº“并且选择修改数æ®åº“.ç„¶åŽå¦‚æžœå¯èƒ½çš„è¯ä»Žä¸€ä¸ªå¯ç”¨çš„选项打开这个文件.
å·²ç»è®¾ç½®äº†åªè¯»æ ‡è®°.å¦‚æžœä½ æƒ³ä¿®æ”¹æ•°æ®åº“è¯·è§£é™¤è¿™ä¸ªæ ‡è®°.
å› ä¸ºå¼•å…¥äº†android KitKat çš„é™åˆ¶ä¸èƒ½è¿›è¡Œå†™å…¥.å¦‚æžœä½ æƒ³å¯¹æ•°æ®åº“进行修改,è¯·å…ˆå…³é—æ•°æ®åº“ç„¶åŽé€‰æ‹©ä¿®æ”¹æ•°æ®åº“.接下æ¥ä½¿ç”¨æ–‡ä»¶ç³»ç»Ÿé€‰æ‹©å™¨æ‰“开文件.
+ æ— æ³•ä¿®æ”¹æœ¬åœ°å¤‡ä»½ã€‚ä½ å¯ä»¥ä½¿ç”¨â€œæ•°æ®åº“设置 - 导出数æ®åº“â€å°†æ¤å¤‡ä»½å¯¼å‡ºè‡³ä¸€ä¸ªä½ å¯ä»¥é‡æ–°æ‰“开的ä½ç½®ï¼Œä¹‹åŽä¾¿å¯è¿›è¡Œä¿®æ”¹ã€‚
ä»Žæ–‡ä»¶æ·»åŠ å›¾æ ‡...
æ£åœ¨å¤åˆ¶æ–‡ä»¶...
副本
@@ -537,24 +565,70 @@
请注æ„ï¼è¿™æ˜¯ä¸€ä¸ªé¢„览版本,å¯èƒ½ä¼šæœ‰ä¸€äº›ç¼ºé™·ï¼å¦‚果您é‡åˆ°â€œä»»ä½•â€æ„外,请告诉我(通过Google+ beta tester group或电å邮件)。
ç»§ç»
您输入的 URI ä¸åƒæ˜¯ä¸€ä¸ªæ–‡ä»¶å。您确定这是一个有效的文件å—?
- æ— æ•ˆçš„ç»„åˆé”®!请é‡è¯•.
+ å¤åˆå¯†é’¥æ— 效ï¼è¯·é‡è¯•。
æ— æ•ˆçš„ç»„åˆé”®!请按照下é¢çš„æ¥éª¤è§£é”ä½ çš„æ•°æ®åº“:
•确ä¿ä½ 输入了æ£ç¡®çš„密ç .使用眼ç›å›¾æ ‡å³å¯æ˜¾ç¤ºä½ 输入的密ç .
•确ä¿ä½ å·²ç»é€‰æ‹©äº†æ£ç¡®çš„å¯†ç æ ¼å¼.ç¡®ä¿ä½¿ç”¨çš„类型与创建的数æ®åº“匹é….
•确ä¿ä½ å·²ç»é€‰æ‹©äº†æ£ç¡®çš„æ•°æ®åº“文件.
+
+\n
+ • æç¤ºï¼šå¦‚æžœä½ è®¤ä¸ºæ•°æ®åº“å·²æŸåï¼Œæˆ–ä½ åœ¨æ›´æ”¹ä¸»å¯†é’¥åŽæŠŠå®ƒå¿˜äº†ï¼Œä½ å¯ä»¥ç‚¹å‡»â€œ%1$sâ€å¹¶é€‰æ‹©æœ¬åœ°å¤‡ä»½ä»¥å°è¯•最åŽä¸€æ¬¡æˆåŠŸæ‰“å¼€çš„æ–‡ä»¶ç‰ˆæœ¬ã€‚
+
+ \n
+ • æç¤ºï¼šKeepass2Android已将最åŽä¸€æ¬¡æˆåŠŸæ‰“å¼€ç‰ˆæœ¬ä¿å˜åˆ°å†…部å˜å‚¨ä¸ã€‚点击“%1$sâ€å¹¶é€‰æ‹©æœ¬åœ°å¤‡ä»½ä»¥æ‰“开它。
+
文件已æŸå。\n
在这里是一些æç¤ºï¼Œè¿™å¯èƒ½ä¼šæœ‰åŠ©äºŽè¯Šæ–问题: \n
• 如果您通过 USB (MTP 模å¼)å¤åˆ¶è¯¥æ–‡ä»¶ï¼Œè¯·ç”¨ç±»åž‹ MyPhoneExplorer è¿™æ ·çš„å·¥å…·å†è¯•一次。在æŸäº›æƒ…况下MTP会 æˆªæ–æ–‡ä»¶ \n
• å¦‚æžœæ‚¨æ— æ³•åœ¨æ‚¨çš„ PC 上相åŒçš„ä½ç½®æ‰“开该文件,很有å¯èƒ½è¯¥æ–‡ä»¶å®žé™…上已æŸå。请使用数æ®åº“å¤‡ä»½ã€‚å¦‚æžœä½ å‡è®¾ Keepass2Android 的文件已æŸå,请è”系开å‘者 \n
• å¦‚æžœä½ ä»ç„¶å¯ä»¥æ‰“开您的 PC 上的文件,请与支æŒäººå‘˜è”ç³»ã€‚ä½ å¯ä»¥å°è¯•以ä¸åŒçš„设置 (例如解压缩)将其ä¿å˜åˆ° PC,然åŽé‡è¯•,å†åœ¨ Keepass2Android 䏿‰“开。
+ æ•°æ®åº“已解é”
+ æ•°æ®åº“è§£é”通知
+ 快速解é”
+ æ•°æ®åº“ä»¥å¿«é€Ÿè§£é”æ–¹å¼é”定通知
+ å¯†ç æ¡ç›®é€šçŸ¥
+ 选定æ¡ç›®å¿«é€Ÿè¿›å…¥é€šçŸ¥
Keepass2Android: 出现一个错误。
è¿è¡Œ Keepass2Android 时出现æ„外的错误。请通过å…许应用程åºå‘é€é”™è¯¯æŠ¥å‘Šæ¥å¸®åŠ©æˆ‘ä»¬è¿›è¡Œä¿®å¤ã€‚
- 错误报告ç»å¯¹ä¸ä¼šåŒ…å«ä»»ä½•内容的数æ®åº“或主密ç 。您å¯ä»¥åœ¨åº”用程åºè®¾ç½®ä¸ç¦ç”¨å®ƒä»¬ã€‚
+ 错误报告ç»å¯¹ä¸ä¼šåŒ…嫿•°æ®åº“或主密ç 的任何内容。您å¯ä»¥åœ¨åº”用程åºè®¾ç½®ä¸ç¦ç”¨å®ƒä»¬ã€‚
å¯ç”¨
ç¦ç”¨
出错åŽè¯¢é—®
å‘é€é”™è¯¯æŠ¥å‘Š
å¯ç”¨æŒ‡çº¹æ‰«ææ—¶æ˜¾ç¤ºè½¯é”®ç›˜ç”¨äºŽå¯†ç 输入.
+
+ 版本 1.05\n
+ * 采用Android 8的通知通é“,接å—系统设置的控制\n
+ * åœ¨é€šçŸ¥ä¸æ˜¾ç¤ºæ¡ç›®å›¾æ ‡\n
+ * 采用Android 8çš„è‡ªé€‚åº”å›¾æ ‡ï¼Œåœ¨Android 7çš„å¯åЍ噍䏿˜¾ç¤ºä¸ºåœ†å½¢å›¾æ ‡\n
+ * å…许在解é”åŽè‡ªåŠ¨è¿›å…¥æœç´¢çжæ€ï¼ˆè¯¦è§è®¾ç½®ï¼‰\n
+ * 更改在å˜å‚¨è®¿é—®æ¡†æž¶ä¸çš„写文件方å¼ï¼Œä¿®å¤äº†é€šè¿‡ç³»ç»Ÿæ–‡ä»¶æµè§ˆå™¨ä¸é€‰æ‹©Google云端硬盘文件时的文件更新问题\n
+ * åŠ å…¥äº†ä¸€äº›è¯´æ˜Žæ–‡å—é¿å…误解\n
+ * 为æˆåŠŸæ‰“å¼€çš„æ•°æ®åº“实行本地备份,é¿å…æ•°æ®ä¸¢å¤±\n
+ * æ›´æ–°JSchä»¥æ”¯æŒæ›´å¤šSSHåŠ å¯†åè®®\n
+ * å…许更改连接设置,如修改WebDAV密ç \n
+ * åŠ å…¥Yubikey Neoçš„é™æ€å¯†ç æ¨¡å¼æ”¯æŒ\n
+ * å…许ç¦ç”¨è‡ªåŠ¨å¡«å……å»ºè®®\n
+ * ä¿®å¤logcatçš„æ•°æ®æ³„露\n
+ * 错误修å¤\n
+
+
+ 版本 1.04b\n
+ * åŽä¸ºè®¾å¤‡ç”¨æˆ·åœ¨å¯ç”¨è‡ªåŠ¨å¡«å……åŠŸèƒ½æ—¶ä¸å†å´©æºƒã€‚\n
+
+
+ 1.04版\n
+ * 为 Android 8.0 åŠä»¥ä¸Šç‰ˆæœ¬æ·»åŠ äº†è‡ªåŠ¨å¡«å……æœåŠ¡ã€‚\n
+ * å‡çº§äº†åº“ã€æž„å»ºå·¥å…·å’Œç›®æ ‡ SDK 版本。\n
+
+
+ 1.03版\n
+ * æ ¹æ® Google 的请求,移除了用于自动填充的辅助功能æœåŠ¡ã€‚è¯·å‚é˜…å¯†ç æƒé™è®¾ç½®ä»¥æŸ¥æ‰¾å¤çް以å‰åŠŸèƒ½çš„æ’件。\n
+ * 釿–°æ·»åŠ äº†ç¬¬ä¸‰æ–¹åº”ç”¨ä½œä¸ºå˜å‚¨é€‰é¡¹çš„功能。\n
+ * å†…ç½®äº†æ— éœ€å°†é™„åŠ çš„å›¾ç‰‡ä¼ è¾“è‡³å…¶ä»–åº”ç”¨å³å¯æŸ¥çœ‹å›¾ç‰‡çš„图片查看器。\n
+ * å‡çº§äº† OkHttp 以修å¤ä¸€äº›è¿žæŽ¥é—®é¢˜\n
+ * æ·»åŠ äº† KeeTrayTOTP æ¡ç›®çš„æ”¯æŒï¼ŒçŽ°åœ¨æ”¯æŒäº† Steam æ¡ç›®ã€‚\n
+
版本 1.02\n
* å‡ é¡¹å®‰å…¨æ”¹è¿›ã€‚éžå¸¸æ„Ÿè°¢jean-baptiste.cayrou@thalesgroup.com å’Œ vincent.fargues@thalesgroup.com 的安全报告与åˆä½œ ï¼ \n
@@ -829,4 +903,20 @@ Initial public release
请确认您的系统å¯ä»¥ä½¿ç”¨ï¼Œå¦åˆ™è¯·ä½¿ç”¨å†…置键盘。
为æ’ä»¶æä¾›è¯´æ˜Žï¼š
+ Keepass2Android æ”¯æŒ Android 的自动填充功能,但看起æ¥ä½ 还没有å¯ç”¨å®ƒã€‚
+ å¯ç”¨è‡ªåЍ填充
+ 抱æ‰ï¼Œä½ çš„è®¾å¤‡è²Œä¼¼ä¸æ”¯æŒç›´æŽ¥åœ¨åº”用内唤出系统设置。请亲自å‰å¾€ç³»ç»Ÿè®¾ç½®ï¼Œå¯åŠ¨è‡ªåŠ¨å¡«å……æœåŠ¡ã€‚
+ 显示自动填充帮助
+ 使用 Keepass2Android 填充
+ æ— æ³•å…³è” Web 域 %1$s ä¸Žåº”ç”¨ç¨‹åº %2$s
+ 我明白了
+ ä¸å†æ˜¾ç¤º
+ ä½ è¿˜è®°å¾—ä½ çš„ä¸»å¯†ç å—?
+ 请注æ„ï¼Œæ²¡æœ‰ä¸»å¯†é’¥ï¼Œä½ å°†æ— æ³•æ‰“å¼€æ•°æ®åº“。ä¸å˜åœ¨ä»»ä½•“é‡ç½®â€ä¸»å¯†é’¥çš„æ–¹æ³•。
+ å¦å¤–éœ€è¦æ³¨æ„çš„æ˜¯ï¼ŒæŒ‡çº¹è§£é”æ˜¯é€šè¿‡å°†ä¸»å¯†é’¥ä¿å˜åœ¨Android的安全å˜å‚¨ä¸è€Œå®žçŽ°çš„ã€‚å®‰å…¨å˜å‚¨ä¼šéšæ—¶è¢«Androidåˆ é™¤ï¼Œä¾‹å¦‚å½“ä½ åœ¨ç³»ç»Ÿè®¾ç½®ä¸æ·»åŠ äº†æ–°æŒ‡çº¹æ—¶ã€‚å› æ¤ï¼Œä¸è¦ä¾èµ–指纹解é”,请åƒä¸‡è®°ä½ä½ 的主密钥ï¼
+ ä½ çš„æ•°æ®åº“备份过了å—?
+ Keepass2Android将会在指定ä½ç½®å¤„ä¿å˜ä¸€ä¸ªå¯†ç æ•°æ®æ–‡ä»¶ã€‚ä½ ç¡®å®šåœ¨ä½ æ‰‹æœºä¸¢å¤±ã€å¤±çªƒï¼Œæˆ–文件éåˆ°ç ´åå’Œä¸¢å¤±çš„æƒ…å†µä¸‹ï¼Œä½ è¿˜èƒ½æ‰¾åˆ°è¿™ä¸ªæ–‡ä»¶å—?请确ä¿ä½ åœ¨å®‰å…¨çš„åœ°æ–¹ç•™æœ‰ä¸€ä»½åŠæ—¶æ›´æ–°çš„æ•°æ®å¤‡ä»½ï¼
+ è¦ç«‹å³åˆ›å»ºå¤‡ä»½ï¼Œå‰å¾€ %1$s > %2$s > %3$s。
+ ä½ å‡†å¤‡å¥½åº”å¯¹çªå‘情况了å—?
+ ä½ æ˜¯å¦è€ƒè™‘è¿‡ï¼Œå½“ä½ çªç„¶æ— æ³•æ‰“å¼€ä½ çš„å¯†ç æ•°æ®åº“æ—¶ï¼Œè¯¥æ€Žä¹ˆåŠžï¼Ÿä¸‡ä¸€ä½ ä¸å¹¸å‘生事故,åˆè¯¥æ€Žä¹ˆåŠžï¼Ÿä½ åº”è¯¥å°†ä¸»å¯†é’¥æ‰˜ä»˜ç»™ä¸€ä¸ªå€¼å¾—ä¿¡ä»»çš„äººï¼Œä»¥åº”å¯¹çªå‘情况。除æ¤ä»¥å¤–çš„å…¶ä»–äººéƒ½æ— æ³•æŸ¥çœ‹ä½ çš„å¯†ç 。
diff --git a/src/keepass2android/Resources/values-zh-rTW/strings.xml b/src/keepass2android/Resources/values-zh-rTW/strings.xml
index d0f7f015..bee5d398 100644
--- a/src/keepass2android/Resources/values-zh-rTW/strings.xml
+++ b/src/keepass2android/Resources/values-zh-rTW/strings.xml
@@ -5,8 +5,9 @@
回饋æ„見:
主é :
Keepass2Android 是 Android 版本的 KeePass 密碼管ç†è»Ÿé«”。
- The User Interface is based on a port of KeepassDroid developed by Brian Pellin. Code for database operations is based on KeePass by Dominik Reichl. The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.
+ 界é¢åŸºæ–¼ç”± Brian Pellin 所移æ¤çš„ KeepassDroid。資料庫æ“作代碼基於由 Dominik Reichl 開發的 KeePass。Android 機器人圖示是以 Google 所創作åŠåˆ†äº«çš„作å“ï¼Œä¾æ“šå‰µç”¨CC-姓忍™ç¤º 3.0 æŽˆæ¬Šæ¢æ¬¾è€Œè¡ç”ŸåŠä¿®æ”¹è€Œæˆã€‚
SFTP æ”¯æ´æ˜¯ä½¿ç”¨ JCraft,inc. çš„ JSch 資料庫所寫且授權於 BSD 授權。
+ 錘å圖示由來自 Noun Project çš„ John Caserta 所製作。ä¼éµåœ–示由來自 Noun Project çš„ Adriano Emerick 所製作。羽毛圖示由來自 Noun Project çš„ Jon Testa 所製作。蘋果圖示由來自 Noun Project çš„ Ava Rowell 所製作。而圖片圖示則來自 https://icons8.com/icon/5570/Picture 。
接å—
拒絕
æ·»åŠ é …ç›®
@@ -71,7 +72,7 @@
ç•¶å‰ç¾¤ï¼šRoot
資料庫
數å—
- Keepass2Android版權æ¸Philipp Crocoll;軟體ä¸å¸¶æœ‰çµ•å°æ“”ä¿ï¼›æ˜¯è‡ªç”±è»Ÿé«”,您å¯åœ¨éµå¾ªGPL 2或者更高版本的情æ³ä¸‹é‡æ–°ç™¼ä½ˆã€‚䏿–‡ç°¡ç¹é«”ç¿»è¯ï¼šwangkf@gmail.com
+ Keepass2Android ç‰ˆæ¬Šæ¸ Philipp Crocoll;軟體ä¸å¸¶æœ‰çµ•å°æ“”ä¿ï¼›æ˜¯è‡ªç”±è»Ÿé«”,您å¯åœ¨éµå¾ª GPL 2 或者更高版本的情æ³ä¸‹é‡æ–°ç™¼ä½ˆã€‚
\u2026
複製到剪切簿
觸控感應器
@@ -86,7 +87,11 @@
啟用完整指紋解鎖
啟用指紋解鎖進行快速解鎖
觸碰指紋感應器以解鎖資料庫
+ æŒ‡ç´‹è§£éŽ–å¤±æ•—ã€‚è§£å¯†é‡‘é‘°è¢«ç³»çµ±è‰æ˜Žç„¡æ•ˆï¼Œä½ å¯èƒ½è¨»å†Šäº†æ–°çš„æŒ‡ç´‹æˆ–更改了安全è¨ç½®ã€‚
+ 解鎖資料庫失敗:無效的複åˆé‡‘鑰。由於已儲å˜çš„主密碼ä¸å†æœ‰æ•ˆï¼ŒæŒ‡ç´‹è§£éŽ–äº¦ç„¡æ•ˆã€‚
è«‹é‡æ–°ç‚ºæ–°çš„主密碼啟用指紋解鎖
+ è«‹ä½¿ç”¨ä½ çš„å¯†ç¢¼è§£éŽ–ä¸¦æ–¼è³‡æ–™åº«è¨ç½®ä¸é‡æ–°å•Ÿç”¨æŒ‡ç´‹è§£éŽ–ã€‚
+ åˆå§‹åŒ–指紋感測器失敗。
這將把主密碼å˜åœ¨ä½ è£ç½®ä¸Šï¼Œ
並é€éŽ Android Keystore åŠ å¯†
@@ -287,6 +292,7 @@
è«‹é¸æ“‡ä¿å˜è©²é™„ä»¶çš„ä½ç½®ã€‚
ä¿å˜åˆ° SD å¡
ä¿å˜å å˜ä¸¦æ‰“é–‹
+ 以內部圖片ç€è¦½å™¨é¡¯ç¤º
將檔案ä¿å˜åˆ° %1$s。
å¯ä¸ä¿å˜é™„件到 %1$s。
還記得æœç´¢çš„æ–‡å—å—Ž?
@@ -330,8 +336,16 @@
使用者å稱和密碼å¯ä»¥è—‰ç”±é€šçŸ¥åˆ—和剪貼簿å–得。謹防密碼竊å–器ï¼
分開的通知
顯示分開的通知以便用於將使用者å和密碼複製到剪貼簿並啟動éµç›¤ã€‚
+ 自動填入 無障礙輔助æœå‹™
+ 自動填入æœå‹™
+ KP2A éµç›¤é€šçŸ¥
+ é€éŽ KP2A éµç›¤å–å¾—é …ç›®è³‡è¨Šï¼ˆæŽ¨è–¦ï¼‰ã€‚
切æ›éµç›¤
從ç€è¦½å™¨æœç´¢å¾Œï¼Œç•¶é …ç›®å¯é€éŽKP2A éµç›¤å–得時打開éµç›¤é¸æ“‡å°è©±æ–¹å¡Š 。
+ 自動切æ›éµç›¤
+ é …ç›®æ‰“é–‹æ™‚è‡ªå‹•åˆ‡æ›ç‚º KP2A éµç›¤ã€‚需è¨å®šå¥½ KeybrardSwap(éµç›¤åˆ‡æ›ï¼‰å¤–掛程å¼ï¼Œæˆ–在已 ROOT çš„è¨å‚™ä¸æŽˆäºˆæ¬Šé™è¨±å¯ã€‚
+ å®‰è£ KeyboardSwap(éµç›¤åˆ‡æ›ï¼‰å¤–掛程å¼
+ 該外掛程å¼ç„¡éœ€ ROOT å³å¯è‡ªå‹•åˆ‡æ› KP2A éµç›¤ï¼Œä½†éœ€è¦é€éŽ ADB(åµéŒ¯ä»‹é¢ï¼‰æŽˆäºˆæ¬Šé™ã€‚
æœç´¢å¾Œæ‰è‡ªå‹•切æ›
åƒ…ç”±åˆ†äº«é€£çµæ–¹å¼è‡ªå‹•切æ›åˆ° KP2A éµç›¤ï¼ˆä½†ä¸åŒ…æ‹¬å…¶ä»–æ‰“é–‹é …ç›®çš„æ–¹å¼ï¼‰
éµç›¤åˆ‡æ›å›žä¾†
@@ -471,6 +485,10 @@
TOTP 欄ä½å稱è¨ç½®
為 TrayTotp 在這裡輸入è¨ç½®æ¬„ä½çš„æ¬„ä½å稱。
TrayTotp
+ åµéŒ¯ç”¨é‹è¡Œæ—¥èªŒ
+ 啟用é‹è¡Œæ—¥èªŒ
+ 記錄應用程å¼è¼¸å‡ºè‡³æœ¬åœ°æ—¥èªŒæª”案
+ 發é€åµéŒ¯æ—¥èªŒâ€¦
載入丅
外掛程å¼
套件å稱:
@@ -480,6 +498,7 @@
ç¦ç”¨
查找線上外掛程å¼
範åœ
+ 未啟用
%1$s æ£åœ¨è«‹æ±‚ %2$s 的憑証。
%1$s æ£åœ¨è«‹æ±‚çš„æ†‘è¨¼ã€‚è«‹é¸æ“‡ä¸€å€‹é …目。
啟用
@@ -531,6 +550,7 @@
新增樣本?
Keepass2Android 有附些 E-Mail 帳號ã€ç„¡ç·šç¶²è·¯å¯†ç¢¼ã€å®‰å…¨è¨˜äº‹ç‰æ¨£æœ¬ã€‚æƒ³æŠŠé€™äº›åŠ åˆ°è³‡æ–™åº«ä¸å—Žï¼Ÿå¦‚æžœä¸æƒ³çš„è©±ï¼Œä½ å¾…æœƒå¯ä»¥åœ¨è³‡æ–™åº«è¨å®šä¸åŠ å…¥ã€‚
æ·»åŠ ç¯„æœ¬åˆ°è³‡æ–™åº«
+ 請注æ„ï¼ä½ æ£ä½¿ç”¨é 覽版本,使用時å¯èƒ½æœƒå‡ºç¾å•題ï¼å¦‚æžœä½ é‡åˆ°ä»»ä½•å•題,煩請以 Google+ 測試者群組或電å郵件告知。
繼續
您輸入的 URI ä¸åƒä¸€å€‹æª”案åã€‚ä½ ç¢ºå®šé€™æ˜¯ä¸€å€‹æœ‰æ•ˆçš„æª”?
複åˆé‡‘鑰無效ï¼è«‹é‡è©¦ã€‚
@@ -555,6 +575,43 @@
æ¯æ¬¡è©¢å•
傳é€éŒ¯èª¤å ±å‘Š
指紋掃æè™•於活動狀態時顯示軟éµç›¤ä»¥è¼¸å…¥å¯†ç¢¼ã€‚
+
+ 版本 1.04\n
+ * 新增 Android 8.0 或以上的自動填入æœå‹™ã€‚\n
+ * å‡ç´šå‡½å¼åº«ã€æ§‹å»ºå·¥å…·ä»¥åŠç›®æ¨™ SDK 版本。\n
+
+
+ 版本 1.03\n
+ * 便“š Google 請求移除自動填入用的無障礙輔助æœå‹™ã€‚請至「密碼輸入訪å•ã€è¨å®šå°‹æ‰¾å¾©ç¾è©²åŠŸèƒ½çš„æ’件。\n
+ * 冿¬¡åŠ å…¥ç¬¬ä¸‰æ–¹æ‡‰ç”¨ç¨‹å¼ä½œçˆ²å˜å„²é¸é …\n
+ * 內建圖片ç€è¦½å™¨ç”¨ä»¥ç€è¦½é™„å¸¶åœ–ç‰‡ï¼Œå…æ–¼æŠŠåœ–片轉移至其他應用程å¼\n
+ * å‡ç´š OkHttp 以修復一些連線å•題\n
+ * æ”¯æ´ KeeTrayTOTP é …ç›®, ç¾å·²æ”¯æ´ Steam é …ç›®\n
+
+
+ Version 1.02\n
+ * 數個安全性改進。è¬åˆ†æ„Ÿè¬ä¾†è‡ª jean-baptiste.cayrou@thalesgroup.comå’Œvincent.fargues@thalesgroup.com 二ä½çš„å®‰å…¨æ€§å ±å‘ŠåŠåˆä½œï¼\n
+ * æ”¯æ´ KeyboardSwapPlugin (見「密碼輸入訪å•ã€è¨ç½®): å…è¨±åœ¨éž Root è£ç½®ä¸Šè‡ªå‹•切æ›è¼¸å…¥æ³•。感è¬ä¾†è‡ª XDA-Developers çš„ Mishaal Rahman 使其å¯è¡Œã€‚\n
+ * 修復無障礙輔助æœå‹™èˆ‡æœ€è¿‘數版 Chrome 的兼容性\n
+ * 修復ä¸å¿…的指紋數據清除\n
+ * 修復崩潰\n
+ * å‡ç´š Dropbox SDK 確定未來的兼容性\n
+ * é€éŽ Xamarin Insights ç§»é™¤éŒ¯èª¤å›žå ±\n
+ * å‡ç´šæ§‹å»ºå·¥å…·\n
+
+
+ 版本 1.01-g\n
+ * 修復嘗試離線æ“作時的崩潰\n
+ * ä¿®å¾©ä¸æ£ç¢ºçš„ FTP(S) 身份驗è‰è³‡è¨Šç·¨ç¢¼\n
+ * 修復在舊 Android 版本使用 OneDrive 發生的崩潰\n
+ * åœ¨é …ç›®ç•«é¢ä»¥æœ¬åœ°æ™‚間顯示時間\n
+
+
+ 版本 1.01-d\n
+ * 修復 OneDrive 檔案清單\n
+ * 在主機å稱驗è‰å¤±æ•—時,å…è¨±å¿½ç•¥è‰æ›¸éŒ¯èª¤ (ä¸æŽ¨è–¦ç”¨æ–¼ç”Ÿç”¢ç”¨é€”)\n
+ * 修復有時候輸入æ£ç¢ºè§£éŽ–å¯†ç¢¼è€Œ QuickUnlock 失敗的å•題\n
+
版本0.9.8c\n
* 修補 Microsoft Live SDK (用於 OneDrive) çš„ SSL æ¼æ´žã€‚\n
@@ -574,7 +631,197 @@
* åŽŸç”Ÿæ”¯æŒ x86 è¨å‚™ã€‚\n
* å…è¨±åœ¨æŒ‡ç´‹æŽƒææœŸé–“éš±è—軟éµç›¤ã€‚\n
* 構建系統更新。
+
+ 版本 1.0.0\n
+ * 指紋解鎖 (éœ€è¦ Android 6.0+ 或 Samsung è£ç½®)\n
+ * 新增自動填入æœå‹™ (éœ€è¦ Android 5.0+)\n
+ * æ–°å¢žé …ç›®ç¯„æœ¬æ”¯æ´\n
+ * 新增「離線æ“ä½œã€æ¨¡å¼\n
+ * å…è¨±è¤‡è£½é …ç›®\n
+ * 欄ä½åç¨±çš„è‡ªå‹•å®Œæˆæ¨¡å¼\n
+ * å…許從最近文件列表ä¸ç§»é™¤é …ç›®\n
+ * 在 Android 6.0 é‹è¡Œæ™‚請求權é™\n
+ * 錯誤修復 (在內建éµç›¤, 鏿“‡åœ–示時)\n
+ * 包å«ç™¼é€éŒ¯èª¤å ±å‘Šçš„é¸é …\n
+ * 在數處新增幫助訊æ¯\n
+
+
+ 版本 0.9.9\n
+ * 完æˆä½¿ç”¨è€…介é¢çš„釿–°è¨è¨ˆã€‚è¬åˆ†æ„Ÿè¬ Stefano Pignataro (http://www.spstudio.at) 的幫助ï¼\n
+ * å…許新增自定義圖示\n
+ * 支æ´åœ¨ Samsung è£ç½®ä¸Šçš„多視窗模å¼\n
+ * å¢žåŠ äº†æ–°è³‡æ–™åº«çš„åŠ å¯†é»˜èªå›žæ•¸\n
+ * 檢查é¡å¤–欄ä½çš„é‡è¤‡é …目以å…丟失數據\n
+
+
+
+版本 0.9.9c \n
+* 夜間佈景回顧 \n
+* 您å¯å®‰è£å…¶ä»–圖示包(Play 商店å¯ä¸‹è¼‰åˆ°ç¶“å…¸ Windows é¢¨æ ¼çš„åœ–ç¤ºï¼‰ \n
+* 直接移除æ¢ç›®è€Œä¸æ”¾å…¥å›žæ”¶æ¡¶æ™‚æ·»åŠ ç¢ºèªæç¤º \n
+* 錯誤修æ£ï¼šå› 一次性密碼檔編碼å•é¡Œæ‰€è‡´çš„éŒ¯èª¤é¡¯ç¤ºã€æŸäº›å ´æ™¯ä¸‹é¡¯ç¤ºéŒ¯èª¤çš„圖示 \n
+
+版本 0.9.8b \n
+* 錯誤修æ£ï¼šæŸäº›è³‡æ–™åº«å˜å–失敗ã€åŒ¯å‡ºè‡³æœ¬æ©Ÿé‹ä½œç•°å¸¸ã€å€‹åˆ¥å好è¨å®šå°Žè‡´ç„¡å›žæ‡‰ä¹‹æƒ…形。\n
+
+版本 0.9.8 \n
+* 支æŒå˜è²¯è¨ªå•框架(KP2A 離線版å…è¨±å¯«å…¥è¨˜æ†¶å¡æˆ– Google Drive) \n
+* 當使用者éµå…¥ WebDAV 連çµï¼ˆå®šå‘è‡³è³‡æ–™å¤¾è€Œéžæª”案)時,嘗試åµéŒ¯ \n
+* 變更密碼å—é«” \n
+* å…許更改 Dropbox 帳戶 \ n
+* 錯誤修æ£ï¼šç¾å¯è¨˜å–一次性密碼 \n
+
+版本 0.9.7b \n
+* æ›´æ–°ç¿»è¯ \n
+* 錯誤修æ£ï¼š0.9.7 版本ä¸ç¼ºå°‘密碼å—é«”ã€æŒ‰åç¨±æŽ’åºæ²’有排åºåˆ†çµ„ \n
+
+版本 0.9.7 \n
+* 支æ´è®€å¯« Keepass 1 (kdb) 資料庫(測試版)\n
+* 更完美的切回原先的éµç›¤ï¼ˆç„¡éœ€ ROOT)\n
+* æ”¯æ´ KeeChallenge 外掛程å¼èˆ‡å¯è®Šé•·åº¦çš„金鑰檔 \n
+* 阻æ¢åœ¨å¿«é€Ÿè§£éŽ–å’Œéµå…¥å¯†ç¢¼ä»‹é¢æˆªå–熒幕 \n
+* 修改按日期排åºçš„åå‘é †åºç‚ºé™åº \n
+* 錯誤修æ£ï¼šè¨»é‡‹ç¾å¯æ£ç¢ºæ›´æ–°ã€å¯†ç¢¼ç¾å¯åœ¨æ‰€æœ‰è¨å‚™ä¸Šéš±è—顯示(但願如æ¤ï¼‰ã€ä¿®æ£åŒä¸€æ¢ç›®å¯æ·»åŠ å…©æ¬¡çš„å•題ã€ä¿®æ£å³ä¾¿åœ¨ä¿®å¾©è³‡æ–™åº«å¾Œä»ç„¶å¤šæ¬¡å½ˆå‡º UUID è¦ç¤ºçš„å•題 \n
+
+版本 0.9.6 \n
+* å…許將金鑰檔或本機資料庫檔案導入到應用程å¼å…§éƒ¨è³‡æ–™å¤¾ï¼ˆåƒè¦‹è¨å®šï¼‰\n
+* 支æ´å¤šç¨®æŽ’åºæ–¹æ³• \n
+* 改進了自動éµç›¤åˆ‡æ›çš„å好 \n
+* 更新了應用程å¼å¾½æ¨™å’Œé€šçŸ¥æ¬„è¨è¨ˆï¼Œç”± Pignataro (http://www.spstudio.at) æä¾› \n
+* 密碼產生器記ä½ä¸Šæ¬¡çš„è¨å®š \n
+* 為 Android 5 熒幕鎖定時的通知消æ¯è¨å®šå¯è¦‹æ€§ \n
+* 離開應用程å¼ä½†æœªæŒ‰ä¸‹ã€Œç¢ºå®šã€æ™‚æ¸…é™¤ä¸»å¯†ç¢¼æ¬„ä½ \n
+* ä¿®æ£éƒ¨åˆ†è¨å‚™çš„éµç›¤è¨å®šä¸ç¼ºå°‘輸入語言的å•題 \n
+* ä¿®æ£å·² ROOT è¨å‚™ä¸Šè‡ªå‹•éµç›¤åˆ‡æ›çš„å•題 \n
+* æ·»åŠ è³‡æ–™åº«æª¢æŸ¥åŠŸèƒ½ï¼ˆé‡è¤‡çš„ UUID)\n
+* åœ¨æª¢æ¸¬åˆ°æ›´æ”¹æ™‚è‡ªå‹•é‡æ–°è¼‰å…¥è³‡æ–™åº«ï¼Œè§£æ±ºäº†é¡¯ç¤ºä¸»å¯†ç¢¼çš„安全隱患 \n
+* 改進了波è˜èªžå°éµç›¤å¸ƒå±€ï¼Œä¿®æ£éµç›¤è¨å®šä½ˆæ™¯ï¼ˆæ„Ÿè¬ Wiktor Åawski) \n
+
+版本 0.9.5 \n
+* ä¿®æ£æª”案查看(特別是 Android 4.4)ä¸çš„å•題 \n
+* ä¿®æ£é‹è¡Œ Android Lollipop çš„ Nexus 5 載入 .kbd (keepass 1) 檔的å•題 \n
+* å¢žåŠ è¨å®šä»¥åœ¨ç¸½è¦½åˆ—表ä¸éš±è—å¿«ç…§æˆ–æ‡‰ç”¨ç¨‹å¼ \n
+* ä¿®æ£ Google Drive 檔案å˜å–çš„å•題(常è¦ç‰ˆï¼‰\n
+* å…許金鑰檔按指定的檔案類型å˜å–(常è¦ç‰ˆï¼‰\n
+* æ›´æ–° DropBox SDK 與安全性修補程å¼ï¼ˆå¸¸è¦ç‰ˆï¼‰\n
+* 更新構建工具 --> APK ç¨‹å¼æª”é«”ç©å¢žåŠ :-( \n
+我ä¿è‰é‚„會有更多的更新,它們將在下個版本ä¸åˆ°ä¾†ã€‚-- 抱æ‰ï¼Œæˆ‘想先盡快推é€é€™äº›ç†±ä¿®è£œç¨‹å¼ã€‚
+
+版本 0.9.4 \n
+* 支æ´å¤–掛程å¼ï¼šåƒé–±è¨å®šä»¥ç²å–å¤–æŽ›ç¨‹å¼ \n
+* 發表 QR 碼外掛(掃æå¯†ç¢¼ã€ä»¥ QR 碼顯示密碼ã€å°‡æ¢ç›®å‚³é€åˆ°å…¶ä»– KP2A è¨å‚™ï¼‰\n
+* 發表 InputStick 外掛(é€éŽè—ç‰™å°‡æ•¸ä½æ†‘è‰å‚³é€åˆ°æ‚¨çš„電腦 - 需æé… InputStick USB 外è¨ï¼‰\n
+* 第三方應用程å¼ç¾å¯è¼•鬆查詢 KP2A 的憑è‰ã€‚ä½ æ˜¯é–‹ç™¼è€…å—Žï¼Ÿè‹¥åˆé©è«‹ç‚ºæ‚¨çš„æ‡‰ç”¨å¢žè¨é€™ä¸€æ”¯æ´ï¼\n
+* æ”¯æ´ TOTP å…©æ¥é©Ÿé©—è‰ï¼ˆèˆ‡ KeeOTP å’Œ TrayTotp 外掛相容)\n
+* 打開資料庫時,應用程åºä¸å†è¢« Android ä¼‘çœ \n
+* ä½¿ç”¨å¾Œé€€æŒ‰éˆ•é›¢é–‹ç¨‹å¼æ™‚,數據庫ä¸å†è¢«éŽ–å®šï¼ˆåƒé–±è¨å®šï¼‰\ n
+* æœç´¢è¦–圖ä¸é¡¯ç¤ºåˆ†çµ„ (*)\n
+* æœç´¢è¦–åœ–ä¸æ·»åŠ ä¸Šä¸‹æ–‡é¸å–®ï¼ŒåŒ…括「返回主é¸å–®ã€ (*)\n
+* æ¢ç›®è¦–圖ä¸é¡¯ç¤ºåˆ†çµ„ (*)\n
+* (*) æ„Ÿè¬ Matthieu è½å¯¦é€™äº›åŠŸèƒ½ï¼\n
+* æ”¯æ´ KeeChallenge 與 Yubikey NEO å¤–æŽ›ã€‚æ„Ÿè¬ Ben Rush 實ç¾é€™ä¸€åŠŸèƒ½ï¼\n
+* æ”¹é€²ä½¿ç”¨è€…ä»‹é¢ \n
+* ä¿®æ£ Google 雲端硬碟介é¢ä¸çš„錯誤 \n
+
+版本 0.9.3 r5 \n
+* åˆä½µä¾†è‡ª Xamarin 的修補程å¼ï¼šKeepass2Android ç¾åœ¨èˆ‡ Android 4.4.2 上的 ART 虛擬機相容。\n
+* ä¿®æ£ï¼šåŒæ¥éŽç¨‹ä¸çš„錯誤(刷新顯示,æ£ç¢ºæª¢æ¸¬ HTTP 上的更改)ã€Android 2.x è¨å‚™ä¸Šçš„å•題ã€Google 雲端硬碟與微軟
+ OneDrive çš„å˜å–å•題ã€é—œé–‰è³‡æ–™åº«åŒæ™‚清除剪貼æ¿ã€æ‰“é–‹é™„åŠ æª”æ¡ˆæ™‚çš„éŒ¯èª¤ã€éµç›¤é¡¯ç¤ºçš„å•題 \n
+
+版本 0.9.3 \n
+* æ–°éµç›¤åŒ…å«è¨±å¤šæ”¹é€²ï¼Œåƒé–±è¨å®šã€‚ \n
+* 新增 kdb (Keepass 1) 檔案的唯讀支æ´ã€‚實驗ä¸ï¼ \n
+* 新增 SFTP æ”¯æ´ \n
+* æ·»åŠ ART 虛擬機環境出錯的解決辦法 (Android 4.4.2)\n
+* å…¶å®ƒä¿®æ£ \n
+
+版本 0.9.2 \n
+* 新增 OTP 支æ´ï¼ˆç›¸å®¹æ–¼ OtpKeyProv 外掛程å¼ï¼‰\n
+* 內建 NFC 支æ´ï¼Œå¯ä»Ž YubiKey NEO 外掛ç²å–一次性密碼 \n
+* å¤šè™•ä»‹é¢æ”¹é€² \n
+* é›†æˆ Keepass 2.24 程å¼åº« \n
+* æ–°å¢žçµæŸç¨‹å¼é¸å–®ï¼ˆåƒé–±è¨å®šï¼‰\n
+* 改進 SSL 電忆‘è‰æ ¡é©— \n
+* 其它å•é¡Œä¿®æ£ \n
+
+版本 0.9.1 \n
+*內建 SkyDrive 支æ´ï¼ˆåƒ…é©ç”¨æ–¼ Keepass2Android 常è¦ç‰ˆï¼‰\n
+*ä¿®æ£ Google 雲端硬碟的å•題 \n
+*新增 NTLM 支æ´
+
+版本 0.9 \n
+* 內建 Dropbox 與 Google Drive 支æ´ï¼ˆå˜å–資料庫,僅 Keepass2Android 常è¦ç‰ˆæ”¯æ´ï¼‰\n
+* 內建檔案管ç†å™¨ï¼ˆä»°è³´æ–¼ HBA çš„ android-filechooser)\n
+* æ”¹é€²æ–°å¢žè³‡æ–™åº«æ™‚çš„ä½¿ç”¨è€…ä»‹é¢ \n
+* 自定義å—é«” DejaVu Sans Mono 用於顯示密碼 \n
+* 其它å•題修æ£
+
+版本 0.8.6 \n
+* æ”¯æ´ Twofish åŠ å¯†ç®—æ³• \n
+* å…許編輯分組 \n
+* å…許移動æ¢ç›®å’Œåˆ†çµ„ \n
+* 快速解鎖圖示å¯ä»¥è®Šæˆé€æ˜Žï¼ˆåƒé–±è¨å®šï¼‰\n
+* 其它å•題修æ£
+
+版本 0.8.5 \n
+* é 端檔案å˜å„²æ–¼ç¨‹å¼å¿«å–ä¸ä»¥å…è¨±é›¢ç·šä½¿ç”¨ï¼ˆåŒ…æ‹¬ç·¨è¼¯å’Œå¾ŒçºŒçš„åŒæ¥ï¼‰ï¼Œè©³æƒ…åƒé–±è¨å®š \n
+* 通知圖示展ç¾è³‡æ–™åº«çš„鎖定狀態(åƒé–±è¨å®šï¼‰\ n
+* 在æŸäº›æƒ…æ³ä¸‹æ”¹é€²äº†éŽ–å®šç‹€æ…‹çš„ç¢ºå®š \n
+* éµå…¥å¯†ç¢¼æ™‚ï¼Œè³‡æ–™åº«æœƒåŠ è¼‰åˆ°è¨˜æ†¶é«”ä¸ä»¥æå‡è§£éŽ–é€Ÿåº¦ï¼ˆåƒé–±è¨å®šï¼‰\ n
+* æ¢ç›®å¯æ·»åŠ åˆ°æ ¹ç›®éŒ„ \n
+* ä¿®æ£éŒ¯èª¤ï¼šè§£æžå¼•用欄ä½ã€æ„大利語和漢語è¨å‚™ä¸Šçš„éµç›¤å•題
+
+版本 0.8.4\n
+* ä¿å˜è³‡æ–™åº«æ™‚會檢測並åˆä½µå¤–部更改 \n
+* æ”¹é€²åŠ è¼‰æ€§èƒ½ \n
+* 改進æœç´¢æ¬„å»ºè° \n
+* 新的程å¼å¾½æ¨™ï¼\n
+* 新增 .kdbp 支æ´ä»¥åŠ å¿«è³‡æ–™å˜å–效率 \n
+* æ”¹é€²äº†é™„åŠ æ¬„ä½çš„編輯,並在å—ä¿è·çš„æƒ…æ³ä¸‹éš±è—顯示 \n
+æ„Ÿè¬ Alex Vallat è²¢ç»ç¨‹å¼ç¢¼ï¼\n
+æ„Ÿè¬ NikiHüttner (www.close-cut.de) æä¾›çš„æ–°å¾½æ¨™ï¼\n
+ 版本 0.8.3 \n
+* æ¢ç›®åˆ—表ä¸é¡¯ç¤ºä½¿ç”¨è€…å稱與 TAN 索引(å‚阅è¨å®šï¼‰\n
+* è‹¥æª¢ç´¢æ²’æœ‰è¿”å›žçµæžœï¼Œå‰‡å¯ç›´æŽ¥æ–°å»ºæ¢ç›® \n
+* KP2A éµç›¤æä¾›äº†ä¾¿æ·æŸ¥è©¢ç•¶å‰ç¨‹å¼æ†‘æ“šçš„å…¥å£ \n
+* 點é¸è¦ç”¨æ–¼éµç›¤è‡ªå‹•éµå…¥çš„æ¢ç›®å¾Œï¼Œç¨‹å¼è‡ªå‹•關閉 \n
+* 檢索超連çµå¾Œæœƒè‡ªå‹•打開éµç›¤çš„é¸å–介é¢ï¼ˆåƒé–±è¨å®šï¼‰\n
+* éµå…¥å—段ä¸çš„ä½”ä½ç¬¦åœ¨ç²˜è²¼å‰è¢«æ›¿æ›ï¼ˆæ”¯æ´å¤šä½”ä½ç¬¦ï¼‰\n
+* ä¿®æ£äº†ä¸€äº›å°éŒ¯èª¤
+ 版本 0.8.2 \n
+* æ”¯æ´ WebDAV ä¸çš„æ‘˜è¦å¼èº«ä»½æ ¡é©— \n
+* ä¿®æ£ï¼šOI 檔案管ç†å™¨ã€æ‰“開超連çµ
+
+ 版本 0.8.1 \n
+* KP2A 離線版和常è¦ç‰ˆå¯åŒæ™‚è¢«å®‰è£ \n
+* 新增翻è¯ï¼ˆæ„Ÿè¬æ‰€æœ‰è¯è€…ï¼ï¼‰
+
+ 版本 0.8版 \n
+* 改進使用者介é¢ï¼Œç‰¹åˆ¥æ˜¯ Android 4.x è¨å‚™ \n
+* å¯ä½¿ç”¨æŒ‡å®šçš„æª”案管ç†å™¨ \n
+* æ–°å¢žæ›´å®‰å…¨çš„æ–¹å¼æ‰“é–‹é™„åŠ æª”æ¡ˆï¼ˆé€éŽå¿«å–)\n
+* ä¿®æ£ç·¨è¼¯å™¨ä¸çš„錯誤 \n
+* å¯èƒ½å¼•入了新的 Bug :-)
+
æå‡ºä¸€ç“¶å•¤é…’或別的æ±è¥¿ä»¥æ“´å±•K2Açš„å¯èƒ½æ€§
+ 版本 0.7 \n
+* æé«˜è¼‰å…¥é€Ÿåº¦ï¼šé‡‘鑰轉æ›ç¾åœ¨å¿«äº†åå€ï¼\n
+* æ·»åŠ Keepass2Android 虛擬éµç›¤ï¼šåˆ‡æ›åˆ°æ¤éµç›¤éµå…¥æ†‘據,å¯è¦é¿åŸºæ–¼å‰ªè²¼ç°¿çš„密碼監è½å™¨ï¼ˆåœ¨è¨å®šä¸ç¦ç”¨èˆŠçš„剪貼簿通知)\n
+* 新增æè´ˆå•¤é…’或其他æ±è¥¿çš„é¸å–®
+ 版本 0.6.2\n
+* Google Drive/Dropbox/... æ•´åˆï¼šä½¿ç”¨å®˜æ–¹ Google Drive 或 Dropbox 應用程å¼ä¸¦é–‹å•Ÿä»»ä½• .kdbx 檔案,將自動開啟 KP2A。\n
+* 改善æœç´¢çš„å°è©±æ–¹å¡Š \n
+* 改善帶ååŸŸçš„åˆ†äº«éˆæŽ¥çš„æœç´¢çµæžœ\n
+* 在é¸å–®æ–°å¢žå›žé¥‹ã€è©•價以åŠç¿»è¯æœ¬æ‡‰ç”¨ç¨‹å¼çš„é¸é …\n
+\n
+版本 0.6.1\n
+* 嵿¸¬èƒŒæ™¯ä¸çš„資料庫變更 (i.e. 由應用程å¼çš„åŒæ¥æ´»å‹•所引致的)\n
+* 改善ç€è¦½å™¨éˆæŽ¥çš„æœç´¢\n
+* 放棄變更時的確èªå°è©±æ–¹å¡Š\n
+\n
+版本 0.6\n
+首個公眾發放版本
+
- 30ç§’
- 1分é˜
@@ -623,4 +870,11 @@
- ç•¶é©—è‰å¤±æ•—時發出è¦å‘Š
- 䏿ޥå—䏿£ç¢ºæ†‘è‰
+ 請確ä¿å®ƒé©ç”¨æ–¼æ‚¨çš„系統,å¦å‰‡è«‹è€ƒæ…®ä½¿ç”¨å…§å»ºéµç›¤ã€‚
+ å¤–æŽ›ç¨‹å¼æä¾›çš„èªªæ˜Žæª”ï¼š
+ Keepass2Android æ”¯æ´ Android 的自動填入功能, ä½ è¦å•Ÿç”¨å®ƒå—Žï¼Ÿ
+ 啟用自動填入
+ 顯示有關自動填入的說明
+ 以 Keepass2Android 填入
+ 無法關è¯ç¶²åŸŸ %1$s èˆ‡æ‡‰ç”¨ç¨‹å¼ %2$s
diff --git a/src/keepass2android/Resources/values/config.xml b/src/keepass2android/Resources/values/config.xml
index 86b60f8c..6e333614 100644
--- a/src/keepass2android/Resources/values/config.xml
+++ b/src/keepass2android/Resources/values/config.xml
@@ -97,6 +97,7 @@
FileHandling_prefs_key
keyboardswitch_prefs_key
AutoFill_prefs_key
+ QuickUnlockHideLength_key
OfflineMode_key
@@ -118,6 +119,7 @@
NoDonationReminder
UseOfflineCache
+ CreateBackups_key
AcceptAllServerCertificates
CheckForFileChangesOnSave
CheckForDuplicateUuids_key
diff --git a/src/keepass2android/Resources/values/strings.xml b/src/keepass2android/Resources/values/strings.xml
index 6cca8edc..05ad1e62 100644
--- a/src/keepass2android/Resources/values/strings.xml
+++ b/src/keepass2android/Resources/values/strings.xml
@@ -218,6 +218,7 @@
Remembers the location of key files
Save key file
Remove
+ Edit
Rijndael (AES)
Root
@@ -290,6 +291,7 @@
File to import will be selected in the next step.
Enable QuickUnlock
Enter last %1$d characters of your password:
+ Enter QuickUnlock code:
QuickUnlock!
Close database
Enable QuickUnlock by default
@@ -302,6 +304,9 @@
QuickUnlock requires a notification to work properly. Select this option to display a notification without an icon.
Length of QuickUnlock key
Maximum number of characters used as QuickUnlock password.
+ Hide QuickUnlock length
+ If enabled, the length of the QuickUnlock code is not displayed on the QuickUnlock screen.
+
QuickUnlock failed: incorrect password!
File attachments directory
Directory where file attachments are saved to.
@@ -341,6 +346,9 @@
Lock when leaving app
Lock the database when leaving the app by pressing the back button.
+ Activate search field on start
+ Activates search field in the group view after unlocking or when searching for an entry
+
Hide donation option
This setting is for donators. Becomes available after using Keepass2Android for a while.
Without donations, this app would not exist and would not be improved continually! If you have not yet donated, please consider making a donation now.
@@ -352,7 +360,14 @@
Database caching
Keep a copy of remote database files in the application cache directory. This allows to use remote databases even when offline.
- SSL certificates
+ Local backups
+ Create a local backup copy after successfully loading a database.
+ Updating local backup...
+ Local backup of %1$s
+
+
+
+ SSL certificates
Define the behavior when certificate validation fails. Note: you can install certificates on your device if validation fails!
@@ -391,6 +406,12 @@
Notification icon while unlocked
Show a notification icon while the database is unlocked.
+
+ Android 8 has introduced new behavior for notifications. If you want to hide the icon for Keepass2Android\'s notifications, please configure this through the system settings. Set the importance of the notification category to Minimum.
+ Open settings
+ I don\'t care
+
+ The file is no longer accessible to Keepass2Android. Either it was removed or the access permissions have been revoked. Please use re-open the file, e.g. using Change database.
Pre-load database file
Start background loading or downloading of the database file during password entry.
@@ -622,6 +643,7 @@
It seems like you opened the file from an external app. This way does not support writing. If you want to make changes to the database, please close the database and select Change database. Then open the file from one of the available options if possible.
The read-only flag is set. Remove this flag if you want to make changes to the database.
Writing is not possible because of restrictions introduced in Android KitKat. If you want to make changes to the database, close the database and select Change database. Then open the file using System file picker.
+ Local backups cannot be modified. You can use Database settings - Export database to export this backup to another location from which you can re-open it. It will then be writable again.
Add icon from file...
@@ -671,6 +693,15 @@
• Make sure you have selected the correct database file.
+
+
+ \n
+ • Hint: If you think your database file might be corrupt or you do not remember the master key after modifying it, you can try with the last successfully opened file version by clicking "%1$s" and selecting the local backup.
+
+
+ \n
+ • Hint: Keepass2Android has stored the last successfully opened file version in internal memory. You can open it by clicking "%1$s" and selecting the local backup.
+
File is corrupted. \n
@@ -682,6 +713,15 @@
+ Database unlocked
+ Notification about the database being unlocked
+
+ QuickUnlock
+ Notification about the database being locked with QuickUnlock
+
+ Entry notifications
+ Notification to simplify access to the currently selected entry.
+
Keepass2Android: An error occurred.
An unexpected error occurred while running Keepass2Android. Please help us fix this by allowing the app to send error reports.
Error reports will never contain any contents of your database or master password. You can disable them in the application settings.
@@ -692,6 +732,22 @@
Show soft keyboard for password input when fingerprint scan is active.
+
+ Version 1.05\n
+ * Use notification channels for Android 8, allowing configuration through system settings\n
+ * Show entry icon in notication\n
+ * Use Adaptive Icons for Android 8, use round launcher icon for Android 7\n
+ * Allow to activate search upon unlock (see settings)\n
+ * Changed the way files are written through Storage Access Framework, fixes issues with updating files on Google Drive opened through System file picker\n
+ * Added some info texts to avoid some common misunderstandings\n
+ * Create local backups of successfully opened databases to reduce risk of data loss\n
+ * Updated JSch to support more recent SSH ciphers\n
+ * Allow to edit connection settings, e.g. when WebDav password changed\n
+ * Added support for Yubikey Neo\'s static password mode\n
+ * Allow to disable Autofill suggestion\n
+ * Fixed data leakage to logcat\n
+ * bug fixes\n
+
Version 1.04b\n
@@ -1054,4 +1110,19 @@ Initial public release
Fill with Keepass2Android
Could not associate web domain %1$s with app %2$s
+ I understand
+ Do not show again
+
+ Do you remember your master password?
+ Note that you will not be able to open your database without the master key. There is no way to "reset" the master password.
+ Also note that fingerprint unlock works by storing your master key in Android\'s secure storage. This storage may be deleted by Android at any time, e.g. if you add a new fingerprint in the system settings. So don\'t rely on your fingerprint but remember your master password, please!
+
+ Is your database backed up?
+ Keepass2Android stores your passwords in a file on a location of your choice. Are you sure you can still access this file when your phone gets lost or stolen, or when the file gets destroyed or deleted? Please make sure you always have an up-to-date backup at a safe place!
+ To create a backup now, go to %1$s > %2$s > %3$s.
+
+ Are you prepared for emergency cases?
+ Did you ever consider what happens if you are no longer able to access your password database? What if you have an accident? It is good practice to pass your master key to some trusted person for emergency cases. Nobody will have access to your passwords otherwise.
+
+
diff --git a/src/keepass2android/Resources/xml/preferences.xml b/src/keepass2android/Resources/xml/preferences.xml
index 5ab3772e..91dd9d9e 100644
--- a/src/keepass2android/Resources/xml/preferences.xml
+++ b/src/keepass2android/Resources/xml/preferences.xml
@@ -268,6 +268,14 @@
android:title="@string/ViewDatabaseSecure_title"
android:key="@string/ViewDatabaseSecure_key" />
+
+
+
+
+
+
+
entryFields, Context ctx, bool muteWarnings)
+ {
+ TotpData res = new TotpData();
+ string data;
+ if (!entryFields.TryGetValue("otp", out data))
+ {
+ return res;
+ }
+
+ string otpUriStart = "otpauth://totp/";
+
+ if (!data.StartsWith(otpUriStart))
+ return res;
+
+
+ try
+ {
+ Uri myUri = new Uri(data);
+ var parsedQuery = HttpUtility.ParseQueryString(myUri.Query);
+ res.TotpSeed = parsedQuery.Get("secret");
+ res.Length = parsedQuery.Get("digits");
+ res.Duration = parsedQuery.Get("period");
+ //set defaults according to https://github.com/google/google-authenticator/wiki/Key-Uri-Format
+ if (res.Length == null)
+ res.Length = "6";
+ if (res.Duration == null)
+ res.Duration = "30";
+ }
+ catch (Exception)
+ {
+ return res;
+ }
+
+ res.IsTotpEnry = true;
+ return res;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/keepass2android/Totp/Kp2aTotp.cs b/src/keepass2android/Totp/Kp2aTotp.cs
index 04f4af99..9a67b71c 100644
--- a/src/keepass2android/Totp/Kp2aTotp.cs
+++ b/src/keepass2android/Totp/Kp2aTotp.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
@@ -11,7 +10,7 @@ namespace keepass2android
class Kp2aTotp
{
- readonly ITotpPluginAdapter[] _pluginAdapters = new ITotpPluginAdapter[] { new TrayTotpPluginAdapter(), new KeeOtpPluginAdapter() };
+ readonly ITotpPluginAdapter[] _pluginAdapters = new ITotpPluginAdapter[] { new TrayTotpPluginAdapter(), new KeeOtpPluginAdapter(), new KeeWebOtpPluginAdapter() };
public void OnOpenEntry()
{
diff --git a/src/keepass2android/Utils/Util.cs b/src/keepass2android/Utils/Util.cs
index 26e85bd0..3a94590d 100644
--- a/src/keepass2android/Utils/Util.cs
+++ b/src/keepass2android/Utils/Util.cs
@@ -39,8 +39,8 @@ namespace keepass2android
{
public class Util {
-
- public static Bitmap DrawableToBitmap(Drawable drawable)
+
+ public static Bitmap DrawableToBitmap(Drawable drawable)
{
Bitmap bitmap = null;
@@ -64,29 +64,53 @@ namespace keepass2android
Canvas canvas = new Canvas(bitmap);
drawable.SetBounds(0, 0, canvas.Width, canvas.Height);
- drawable.Draw(canvas);
- return bitmap;
+
+ drawable.Draw(canvas);
+
+
+
+ return bitmap;
}
+ public static Bitmap ChangeImageColor(Bitmap sourceBitmap, Color color)
+ {
+ Bitmap temp = Bitmap.CreateBitmap(sourceBitmap, 0, 0,
+ sourceBitmap.Width, sourceBitmap.Height);
+ Bitmap resultBitmap = temp.Copy(Bitmap.Config.Argb8888, true);
+ Paint p = new Paint();
+ ColorFilter filter = new LightingColorFilter(color.ToArgb(), 0);
+ p.SetColorFilter(filter);
- public static float convertDpToPixel(float dp, Context context)
+ Canvas canvas = new Canvas(resultBitmap);
+ canvas.DrawBitmap(resultBitmap, 0, 0, p);
+ return resultBitmap;
+ }
+
+
+ public static float convertDpToPixel(float dp, Context context)
{
Resources resources = context.Resources;
DisplayMetrics metrics = resources.DisplayMetrics;
float px = dp * metrics.Density;
return px;
}
- public static String GetClipboard(Context context) {
- Android.Text.ClipboardManager clipboard = (Android.Text.ClipboardManager) context.GetSystemService(Context.ClipboardService);
- return clipboard.Text;
- }
+ public static String GetClipboard(Context context)
+ {
+ Android.Content.ClipboardManager clipboardManager = (ClipboardManager)context.GetSystemService(Context.ClipboardService);
+ var clip = clipboardManager.PrimaryClip;
+ if (clip != null && clip.ItemCount > 0)
+ {
+ return clip.GetItemAt(0).CoerceToText(context);
+ }
+ return "";
+ }
public static void CopyToClipboard(Context context, String text) {
- Android.Text.ClipboardManager clipboard = (Android.Text.ClipboardManager) context.GetSystemService(Context.ClipboardService);
- clipboard.Text = text;
- //some devices don't accept empty strings. Replace with *** then.
- if (clipboard.Text == "")
- clipboard.Text = "***";
+ Android.Content.ClipboardManager clipboardManager = (ClipboardManager)context.GetSystemService(Context.ClipboardService);
+ if (text == "")
+ text = "***";
+ ClipData clipData = Android.Content.ClipData.NewPlainText("KP2A", text);
+ clipboardManager.PrimaryClip = clipData;
}
public static void GotoUrl(Context context, String url) {
@@ -505,6 +529,13 @@ namespace keepass2android
return memoryStream;
}
+
+ public static Bitmap MakeLargeIcon(Bitmap unscaled, Context context)
+ {
+ int height = (int)(0.9 * context.Resources.GetDimension(Android.Resource.Dimension.NotificationLargeIconHeight));
+ int width = (int)(0.9 * context.Resources.GetDimension(Android.Resource.Dimension.NotificationLargeIconWidth));
+ return Bitmap.CreateScaledBitmap(unscaled, width, height, true);
+ }
}
}
diff --git a/src/keepass2android/app/App.cs b/src/keepass2android/app/App.cs
index fc859254..f7448d20 100644
--- a/src/keepass2android/app/App.cs
+++ b/src/keepass2android/app/App.cs
@@ -21,6 +21,7 @@ using System.IO;
using System.Net.Security;
using Android.App;
using Android.Content;
+using Android.Graphics;
using Android.Graphics.Drawables;
using Android.OS;
using Android.Runtime;
@@ -32,12 +33,15 @@ using KeePassLib.Keys;
using KeePassLib.Serialization;
using Android.Preferences;
using Android.Support.V4.App;
+using Android.Support.V4.Content;
#if !EXCLUDE_TWOFISH
using TwofishCipher;
#endif
using Keepass2android.Pluginsdk;
using keepass2android.Io;
using keepass2android.addons.OtpKeyProv;
+using KeePassLib.Interfaces;
+using KeePassLib.Utility;
#if !NoNet
using Keepass2android.Javafilestorage;
using GoogleDriveFileStorage = keepass2android.Io.GoogleDriveFileStorage;
@@ -84,7 +88,7 @@ namespace keepass2android
public const string PackagePart = "keepass2android";
public const string Searchable = "@xml/searchable";
#endif
- public const int LauncherIcon = Resource.Drawable.ic_launcher_online;
+ public const int LauncherIcon = Resource.Mipmap.ic_launcher_online;
public const int NotificationLockedIcon = Resource.Drawable.ic_notify_loaded;
public const int NotificationUnlockedIcon = Resource.Drawable.ic_notify_locked;
@@ -159,11 +163,69 @@ namespace keepass2android
- public void LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, CompositeKey compositeKey, ProgressDialogStatusLogger statusLogger, IDatabaseFormat databaseFormat)
- {
- _db.LoadData(this, ioConnectionInfo, memoryStream, compositeKey, statusLogger, databaseFormat);
+ public void LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, CompositeKey compositeKey,
+ ProgressDialogStatusLogger statusLogger, IDatabaseFormat databaseFormat)
+ {
+ var prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
+ var createBackup = prefs.GetBoolean(Application.Context.GetString(Resource.String.CreateBackups_key), true)
+ && !(new LocalFileStorage(this).IsLocalBackup(ioConnectionInfo));
- UpdateOngoingNotification();
+ MemoryStream backupCopy = new MemoryStream();
+ if (createBackup)
+ {
+
+ memoryStream.CopyTo(backupCopy);
+ backupCopy.Seek(0, SeekOrigin.Begin);
+ //reset stream if we need to reuse it later:
+ memoryStream.Seek(0, SeekOrigin.Begin);
+ }
+
+
+ _db.LoadData(this, ioConnectionInfo, memoryStream, compositeKey, statusLogger, databaseFormat);
+
+ if (createBackup)
+ {
+ statusLogger.UpdateMessage(Application.Context.GetString(Resource.String.UpdatingBackup));
+ Java.IO.File internalDirectory = IoUtil.GetInternalDirectory(Application.Context);
+ string baseDisplayName = App.Kp2a.GetFileStorage(ioConnectionInfo).GetDisplayName(ioConnectionInfo);
+ string targetPath = baseDisplayName;
+ var charsToRemove = "|\\?*<\":>+[]/'";
+ foreach (char c in charsToRemove)
+ {
+ targetPath = targetPath.Replace(c.ToString(), string.Empty);
+ }
+ if (targetPath == "")
+ targetPath = "local_backup";
+
+ var targetIoc = IOConnectionInfo.FromPath(new Java.IO.File(internalDirectory, targetPath).CanonicalPath);
+
+ using (var transaction = new LocalFileStorage(App.Kp2a).OpenWriteTransaction(targetIoc, false))
+ {
+ var file = transaction.OpenFile();
+ backupCopy.CopyTo(file);
+ transaction.CommitWrite();
+ }
+ Java.Lang.Object baseIocDisplayName = baseDisplayName;
+
+ string keyfile = App.Kp2a.FileDbHelper.GetKeyFileForFile(ioConnectionInfo.Path);
+ App.Kp2a.StoreOpenedFileAsRecent(targetIoc, keyfile, Application.Context.
+ GetString(Resource.String.LocalBackupOf, new Java.Lang.Object[]{baseIocDisplayName}));
+
+ prefs.Edit()
+ .PutBoolean(IoUtil.GetIocPrefKey(ioConnectionInfo, "has_local_backup"), true)
+ .PutBoolean(IoUtil.GetIocPrefKey(targetIoc, "is_local_backup"), true)
+ .Commit();
+
+
+ }
+ else
+ {
+ prefs.Edit()
+ .PutBoolean(IoUtil.GetIocPrefKey(ioConnectionInfo, "has_local_backup"), false) //there might be an older local backup, but we won't "advertise" this anymore
+ .Commit();
+ }
+
+ UpdateOngoingNotification();
}
internal void UnlockDatabase()
@@ -179,14 +241,21 @@ namespace keepass2android
{
// Start or update the notification icon service to reflect the current state
var ctx = Application.Context;
- StartOnGoingService(ctx);
- }
+ if (DatabaseIsUnlocked || QuickLocked)
+ {
+ ContextCompat.StartForegroundService(ctx, new Intent(ctx, typeof(OngoingNotificationsService)));
+ }
+ else
+ {
+ //Anrdoid 8 requires that we call StartForeground() shortly after starting the service with StartForegroundService.
+ //This is not possible when we're closing the service. In this case we don't use the StopSelf in the OngoingNotificationsService.OnStartCommand() anymore but directly stop the service.
- public static void StartOnGoingService(Context ctx)
- {
- ctx.StartService(new Intent(ctx, typeof (OngoingNotificationsService)));
- }
+ OngoingNotificationsService.CancelNotifications(ctx); //The docs are not 100% clear if OnDestroy() will be called immediately. So make sure the notifications are up to date.
+ ctx.StopService(new Intent(ctx, typeof(OngoingNotificationsService)));
+ }
+ }
+
public bool DatabaseIsUnlocked
{
get { return _db.Loaded && !QuickLocked; }
@@ -300,9 +369,9 @@ namespace keepass2android
dialog.Show();
}
- public void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile)
+ public void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile, string displayName = "")
{
- FileDbHelper.CreateFile(ioc, keyfile);
+ FileDbHelper.CreateFile(ioc, keyfile, displayName);
}
public string GetResourceString(UiStringKey key)
@@ -610,9 +679,9 @@ namespace keepass2android
{
get { return new CertificateErrorHandlerImpl(this); }
}
+
-
- public class CertificateErrorHandlerImpl : Java.Lang.Object, Keepass2android.Javafilestorage.ICertificateErrorHandler
+ public class CertificateErrorHandlerImpl : Java.Lang.Object, Keepass2android.Javafilestorage.ICertificateErrorHandler
{
private readonly Kp2aApp _app;
@@ -713,7 +782,10 @@ namespace keepass2android
string errorMessage = e.Message;
if (e is OfflineModeException)
errorMessage = GetResourceString(UiStringKey.InOfflineMode);
- return errorMessage;
+ if (e is DocumentAccessRevokedException)
+ errorMessage = GetResourceString(UiStringKey.DocumentAccessRevoked);
+
+ return errorMessage;
}
@@ -845,29 +917,98 @@ namespace keepass2android
#endif
public class App : Application {
- public App (IntPtr javaReference, JniHandleOwnership transfer)
+ public const string NotificationChannelIdUnlocked = "channel_db_unlocked_5";
+ public const string NotificationChannelIdQuicklocked = "channel_db_quicklocked_5";
+ public const string NotificationChannelIdEntry = "channel_db_entry_5";
+
+ public App (IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer)
{
}
public static readonly Kp2aApp Kp2a = new Kp2aApp();
-
- public override void OnCreate() {
- base.OnCreate();
+
+ private static void InitThaiCalendarCrashFix()
+ {
+ var localeIdentifier = Java.Util.Locale.Default.ToString();
+ if (localeIdentifier == "th_TH")
+ {
+ new System.Globalization.ThaiBuddhistCalendar();
+ }
+ }
+
+ public override void OnCreate()
+ {
+ InitThaiCalendarCrashFix();
+
+ base.OnCreate();
Kp2aLog.Log("Creating application "+PackageName+". Version=" + PackageManager.GetPackageInfo(PackageName, 0).VersionCode);
+ CreateNotificationChannels();
+
Kp2a.OnCreate(this);
AndroidEnvironment.UnhandledExceptionRaiser += MyApp_UnhandledExceptionHandler;
- }
+
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.AddAction(Intents.LockDatabase);
+ intentFilter.AddAction(Intents.CloseDatabase);
+ Context.RegisterReceiver(broadcastReceiver, intentFilter);
+ }
+
+ private ApplicationBroadcastReceiver broadcastReceiver = new ApplicationBroadcastReceiver();
-
-
- public override void OnTerminate() {
+ private void CreateNotificationChannels()
+ {
+ if ((int)Build.VERSION.SdkInt < 26)
+ return;
+ NotificationManager mNotificationManager =
+ (NotificationManager)GetSystemService(Context.NotificationService);
+
+ {
+ string name = GetString(Resource.String.DbUnlockedChannel_name);
+ string desc = GetString(Resource.String.DbUnlockedChannel_desc);
+ NotificationChannel mChannel =
+ new NotificationChannel(NotificationChannelIdUnlocked, name, NotificationImportance.Min);
+ mChannel.Description = desc;
+ mChannel.EnableLights(false);
+ mChannel.EnableVibration(false);
+ mChannel.SetSound(null, null);
+ mNotificationManager.CreateNotificationChannel(mChannel);
+ }
+
+ {
+ string name = GetString(Resource.String.DbQuicklockedChannel_name);
+ string desc = GetString(Resource.String.DbQuicklockedChannel_desc);
+ NotificationChannel mChannel =
+ new NotificationChannel(NotificationChannelIdQuicklocked, name, NotificationImportance.Min);
+ mChannel.Description = desc;
+ mChannel.EnableLights(false);
+ mChannel.EnableVibration(false);
+ mChannel.SetSound(null, null);
+ mNotificationManager.CreateNotificationChannel(mChannel);
+ }
+
+ {
+ string name = GetString(Resource.String.EntryChannel_name);
+ string desc = GetString(Resource.String.EntryChannel_desc);
+ NotificationChannel mChannel =
+ new NotificationChannel(NotificationChannelIdEntry, name, NotificationImportance.Default);
+ mChannel.Description = desc;
+ mChannel.EnableLights(false);
+ mChannel.EnableVibration(false);
+ mChannel.SetSound(null, null);
+ mNotificationManager.CreateNotificationChannel(mChannel);
+ }
+ }
+
+
+ public override void OnTerminate() {
base.OnTerminate();
Kp2aLog.Log("Terminating application");
Kp2a.OnTerminate();
+ Context.UnregisterReceiver(broadcastReceiver);
}
private void MyApp_UnhandledExceptionHandler(object sender, RaiseThrowableEventArgs e)
diff --git a/src/keepass2android/app/AppTask.cs b/src/keepass2android/app/AppTask.cs
index 2b12a81f..95ed520d 100644
--- a/src/keepass2android/app/AppTask.cs
+++ b/src/keepass2android/app/AppTask.cs
@@ -152,22 +152,40 @@ namespace keepass2android
/// Activities call the task at special points so tasks can change the behaviour at these points.
public abstract class AppTask
{
- ///
- /// Loads the parameters of the task from the given bundle
- ///
- public virtual void Setup(Bundle b)
- {}
+ ///
+ /// Loads the parameters of the task from the given bundle
+ ///
+ public virtual void Setup(Bundle b)
+ {
+ CanActivateSearchViewOnStart = b.GetBoolean(CanActivateSearchViewOnStartKey, true);
- ///
- /// Returns the parameters of the task for storage in a bundle or intent
- ///
- /// The extras.
- public virtual IEnumerable Extras {
- get
- {
- yield break;
- }
- }
+ }
+
+ public const String CanActivateSearchViewOnStartKey = "CanActivateSearchViewOnStart";
+
+ ///
+ /// Can be overwritten to indicate that it is not desired to bring up the search view when starting a groupactivity
+ ///
+ public virtual bool CanActivateSearchViewOnStart
+ {
+ get;
+ set;
+ }
+
+
+ ///
+ /// Returns the parameters of the task for storage in a bundle or intent
+ ///
+ /// The extras.
+ public virtual IEnumerable Extras
+ {
+ get
+ {
+ yield return new BoolExtra { Key = CanActivateSearchViewOnStartKey, Value = CanActivateSearchViewOnStart };
+ }
+ }
+
+
public virtual void AfterUnlockDatabase(PasswordActivity act)
{
@@ -581,7 +599,13 @@ namespace keepass2android
///
public class MoveElementsTask: AppTask
{
- public const String UuidsKey = "MoveElement_Uuids";
+ public override bool CanActivateSearchViewOnStart
+ {
+ get { return false; }
+ set { }
+ }
+
+ public const String UuidsKey = "MoveElement_Uuids";
public IEnumerable Uuids
{
@@ -632,10 +656,16 @@ namespace keepass2android
ShowUserNotifications = true;
}
- ///
- /// extra key if only a URL is passed. optional.
- ///
- public const String UrlKey = "CreateEntry_Url";
+ public override bool CanActivateSearchViewOnStart
+ {
+ get { return false; }
+ set { }
+ }
+
+ ///
+ /// extra key if only a URL is passed. optional.
+ ///
+ public const String UrlKey = "CreateEntry_Url";
///
/// extra key if a json serialized key/value mapping is passed. optional.
@@ -739,9 +769,15 @@ namespace keepass2android
///
public abstract class NavigateAndLaunchTask: AppTask
{
- // All group Uuid are stored in guuidKey + indice
- // The last one is the destination group
- public const String NumberOfGroupsKey = "NumberOfGroups";
+ public override bool CanActivateSearchViewOnStart
+ {
+ get { return false; }
+ set { }
+ }
+
+ // All group Uuid are stored in guuidKey + indice
+ // The last one is the destination group
+ public const String NumberOfGroupsKey = "NumberOfGroups";
public const String GUuidKey = "gUuidKey";
public const String FullGroupNameKey = "fullGroupNameKey";
public const String ToastEnableKey = "toastEnableKey";
diff --git a/src/keepass2android/app/ApplicationBroadcastReceiver.cs b/src/keepass2android/app/ApplicationBroadcastReceiver.cs
index e1096c39..51ba4303 100644
--- a/src/keepass2android/app/ApplicationBroadcastReceiver.cs
+++ b/src/keepass2android/app/ApplicationBroadcastReceiver.cs
@@ -8,7 +8,6 @@ using Android.Preferences;
namespace keepass2android
{
[BroadcastReceiver]
- [IntentFilter(new[] { Intents.LockDatabase, Intents.CloseDatabase })]
public class ApplicationBroadcastReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
diff --git a/src/keepass2android/fileselect/FileDbHelper.cs b/src/keepass2android/fileselect/FileDbHelper.cs
index 7e01e3d5..edd5910d 100644
--- a/src/keepass2android/fileselect/FileDbHelper.cs
+++ b/src/keepass2android/fileselect/FileDbHelper.cs
@@ -34,13 +34,14 @@ namespace keepass2android
private const String DatabaseName = "keepass2android";
private const String FileTable = "files";
- private const int DatabaseVersion = 1;
+ private const int DatabaseVersion = 2;
private const int MaxFiles = 15;
public const String KeyFileId = "_id";
public const String KeyFileFilename = "fileName";
- public const String KeyFileUsername = "username";
+ public const String KeyFileDisplayname = "displayname";
+ public const String KeyFileUsername = "username";
public const String KeyFilePassword = "password";
public const String KeyFileCredsavemode = "credSaveMode";
public const String KeyFileKeyfile = "keyFile";
@@ -48,12 +49,14 @@ namespace keepass2android
private const String DatabaseCreate =
"create table " + FileTable + " ( " + KeyFileId + " integer primary key autoincrement, "
- + KeyFileFilename + " text not null, "
- + KeyFileKeyfile + " text, "
+ + KeyFileFilename + " text not null, "
+ + KeyFileKeyfile + " text, "
+ KeyFileUsername + " text, "
+ KeyFilePassword + " text, "
+ KeyFileCredsavemode + " integer not null,"
- + KeyFileUpdated + " integer not null);";
+ + KeyFileUpdated + " integer not null,"
+ + KeyFileDisplayname + " text "
+ +");";
private readonly Context mCtx;
private DatabaseHelper mDbHelper;
@@ -71,7 +74,11 @@ namespace keepass2android
public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- // Only one database version so far
+ if (oldVersion == 1)
+ {
+ db.ExecSQL("alter table " + FileTable + " add column " + KeyFileDisplayname + " text ");
+ }
+
}
}
@@ -94,7 +101,7 @@ namespace keepass2android
mDb.Close();
}
- public long CreateFile(IOConnectionInfo ioc, String keyFile) {
+ public long CreateFile(IOConnectionInfo ioc, string keyFile, string displayName = "") {
// Check to see if this filename is already used
ICursor cursor;
@@ -126,6 +133,7 @@ namespace keepass2android
vals.Put(KeyFileUsername, iocToStore.UserName);
vals.Put(KeyFilePassword, iocToStore.Password);
vals.Put(KeyFileCredsavemode, (int)iocToStore.CredSaveMode);
+ vals.Put(KeyFileDisplayname, displayName);
result = mDb.Update(FileTable, vals, KeyFileId + " = " + id, null);
@@ -138,8 +146,9 @@ namespace keepass2android
vals.Put(KeyFilePassword, iocToStore.Password);
vals.Put(KeyFileCredsavemode, (int)iocToStore.CredSaveMode);
vals.Put(KeyFileUpdated, Java.Lang.JavaSystem.CurrentTimeMillis());
-
- result = mDb.Insert(FileTable, null, vals);
+ vals.Put(KeyFileDisplayname, displayName);
+
+ result = mDb.Insert(FileTable, null, vals);
}
// Delete all but the last X records
@@ -193,7 +202,8 @@ namespace keepass2android
KeyFileKeyfile,
KeyFileUsername,
KeyFilePassword,
- KeyFileCredsavemode
+ KeyFileCredsavemode,
+ KeyFileDisplayname
};
}
diff --git a/src/keepass2android/fileselect/FileSelectActivity.cs b/src/keepass2android/fileselect/FileSelectActivity.cs
index a6b0a953..1097c566 100644
--- a/src/keepass2android/fileselect/FileSelectActivity.cs
+++ b/src/keepass2android/fileselect/FileSelectActivity.cs
@@ -72,8 +72,9 @@ namespace keepass2android
internal AppTask AppTask;
private const int RequestCodeSelectIoc = 456;
+ private const int RequestCodeEditIoc = 457;
- public const string NoForwardToPasswordActivity = "NoForwardToPasswordActivity";
+ public const string NoForwardToPasswordActivity = "NoForwardToPasswordActivity";
protected override void OnCreate(Bundle savedInstanceState)
{
@@ -200,35 +201,121 @@ namespace keepass2android
outState.PutBoolean(BundleKeyRecentMode, _recentMode);
}
-
-
- class MyViewBinder: Java.Lang.Object, SimpleCursorAdapter.IViewBinder
- {
- private readonly Kp2aApp _app;
- public MyViewBinder(Kp2aApp app)
- {
- _app = app;
- }
+ class MyCursorAdapter: CursorAdapter
+ {
+ private LayoutInflater cursorInflater;
+ private readonly FileSelectActivity _activity;
+ private IKp2aApp _app;
- public bool SetViewValue(View view, ICursor cursor, int columnIndex)
- {
- if (columnIndex == 1)
- {
- String path = cursor.GetString(columnIndex);
- TextView textView = (TextView)view;
- IOConnectionInfo ioc = new IOConnectionInfo {Path = path};
- var fileStorage = _app.GetFileStorage(ioc);
- textView.Text = fileStorage.GetDisplayName(ioc);
- textView.Tag = ioc.Path;
- return true;
- }
+ public MyCursorAdapter(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
+ {
+ }
- return false;
- }
- }
-
- private void FillData()
+ public MyCursorAdapter(FileSelectActivity activity, ICursor c, IKp2aApp app) : base(activity, c)
+ {
+ _activity = activity;
+ _app = app;
+ }
+
+ public MyCursorAdapter(Context context, ICursor c, bool autoRequery) : base(context, c, autoRequery)
+ {
+ }
+
+ public MyCursorAdapter(Context context, ICursor c, CursorAdapterFlags flags) : base(context, c, flags)
+ {
+
+ }
+
+ public override void BindView(View view, Context context, ICursor cursor)
+ {
+
+ String path = cursor.GetString(1);
+
+ TextView textView = view.FindViewById(Resource.Id.file_filename);
+ IOConnectionInfo ioc = new IOConnectionInfo { Path = path };
+ var fileStorage = _app.GetFileStorage(ioc);
+
+ String displayName = cursor.GetString(6);
+ if (string.IsNullOrEmpty(displayName))
+ {
+ displayName = fileStorage.GetDisplayName(ioc);
+
+ }
+
+ textView.Text = displayName;
+ textView.Tag = ioc.Path;
+
+ }
+
+ public override View NewView(Context context, ICursor cursor, ViewGroup parent)
+ {
+ if (cursorInflater == null)
+ cursorInflater = (LayoutInflater)context.GetSystemService( Context.LayoutInflaterService);
+ View view = cursorInflater.Inflate(Resource.Layout.file_row, parent, false);
+
+ view.FindViewById(Resource.Id.group_name_vdots).Click += (sender, args) =>
+ {
+ Handler handler = new Handler(Looper.MainLooper);
+ handler.Post(() =>
+ {
+ PopupMenu popupMenu = new PopupMenu(context, view.FindViewById(Resource.Id.group_name_vdots));
+
+ AccessManager.PreparePopup(popupMenu);
+ int remove = 0;
+ int edit = 1;
+ popupMenu.Menu.Add(0, remove, 0, context.GetString(Resource.String.remove_from_filelist)).SetIcon(Resource.Drawable.ic_menu_delete_grey);
+
+ TextView textView = view.FindViewById(Resource.Id.file_filename);
+
+ String filename = (string)textView.Tag;
+ IOConnectionInfo ioc = new IOConnectionInfo { Path = filename };
+ if (FileSelectHelper.CanEditIoc(ioc))
+ {
+ popupMenu.Menu.Add(0, edit, 0, context.GetString(Resource.String.edit)).SetIcon(Resource.Drawable.ic_menu_edit_grey);
+ }
+
+
+ popupMenu.MenuItemClick += delegate(object sender2, PopupMenu.MenuItemClickEventArgs args2)
+ {
+ if (args2.Item.ItemId == remove)
+ {
+ App.Kp2a.FileDbHelper.DeleteFile(filename);
+
+ cursor.Requery();
+ }
+ if (args2.Item.ItemId == edit)
+ {
+ var fsh = new FileSelectHelper(_activity, false, RequestCodeEditIoc);
+ fsh.OnOpen += (o, newConnectionInfo) =>
+ {
+ _activity.EditFileEntry(filename, newConnectionInfo);
+ };
+ fsh.PerformManualFileSelect(filename);
+
+ }
+ };
+ popupMenu.Show();
+ });
+ };
+
+ return view;
+ }
+
+
+ }
+
+ private void EditFileEntry(string filename, IOConnectionInfo newConnectionInfo)
+ {
+ _dbHelper.CreateFile(newConnectionInfo, _dbHelper.GetKeyFileForFile(filename));
+ _dbHelper.DeleteFile(filename);
+
+ LaunchPasswordActivityForIoc(newConnectionInfo);
+
+ }
+
+
+ private void FillData()
{
// Get all of the rows from the database and create the item list
ICursor filesCursor = _dbHelper.FetchAllFiles();
@@ -241,15 +328,15 @@ namespace keepass2android
// and an array of the fields we want to bind those fields to (in this
// case just text1)
int[] to = new[] { Resource.Id.file_filename };
-
+ /*
// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter recentFilesAdapter = new SimpleCursorAdapter(this,
Resource.Layout.file_row, filesCursor, from, to);
recentFilesAdapter.ViewBinder = new MyViewBinder(App.Kp2a);
-
- FragmentManager.FindFragmentById(Resource.Id.recent_files).SetAdapter(recentFilesAdapter);
+ */
+ FragmentManager.FindFragmentById(Resource.Id.recent_files).SetAdapter(new MyCursorAdapter(this, filesCursor,App.Kp2a));
}
@@ -284,9 +371,9 @@ namespace keepass2android
Finish();
}
- public void OnListItemClick(ListView l, View v, int position, long id) {
-
- ICursor cursor = _dbHelper.FetchFile(id);
+ public void OnListItemClick(ListView l, View v, int position, long id)
+ {
+ ICursor cursor = _dbHelper.FetchFile(id);
StartManagingCursor(cursor);
IOConnectionInfo ioc = _dbHelper.CursorToIoc(cursor);
@@ -328,8 +415,15 @@ namespace keepass2android
PasswordActivity.SetIoConnectionFromIntent(ioc, data);
LaunchPasswordActivityForIoc(ioc);
}
-
- }
+
+ if ((resultCode == Result.Ok) && (requestCode == RequestCodeEditIoc))
+ {
+ string filename = Util.IntentToFilename(data, this);
+
+ LaunchPasswordActivityForIoc(IOConnectionInfo.FromPath(filename));
+ }
+
+ }
protected override void OnResume()
{
@@ -462,30 +556,7 @@ namespace keepass2android
cursor.Requery();
}
- public override void OnCreateContextMenu(IContextMenu menu, View v, IContextMenuContextMenuInfo menuInfo)
- {
- base.OnCreateContextMenu(menu, v, menuInfo);
- menu.Add(0, Menu.First, 0, Resource.String.remove_from_filelist);
- }
-
- public override bool OnContextItemSelected(IMenuItem item)
- {
- if (item.ItemId == Menu.First)
- {
- AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo)item.MenuInfo;
-
- TextView tv = (TextView)acmi.TargetView;
- String filename = (string)tv.Tag;
- App.Kp2a.FileDbHelper.DeleteFile(filename);
-
- RefreshList();
-
-
- return true;
- }
- return base.OnContextItemSelected(item);
-
- }
+
}
}
diff --git a/src/keepass2android/icons/DrawableFactory.cs b/src/keepass2android/icons/DrawableFactory.cs
index 78085c50..ea82ccf2 100644
--- a/src/keepass2android/icons/DrawableFactory.cs
+++ b/src/keepass2android/icons/DrawableFactory.cs
@@ -101,7 +101,21 @@ private static Drawable _blank;
{
string packageName = PreferenceManager.GetDefaultSharedPreferences(Application.Context).GetString("IconSetKey", context.PackageName);
- Resources res = context.PackageManager.GetResourcesForApplication(packageName);
+ Resources res;
+ try
+ {
+ res = context.PackageManager.GetResourcesForApplication(packageName);
+ }
+ catch (Exception)
+ {
+ //can happen after uninstalling icons
+ packageName = context.PackageName;
+ res = context.PackageManager.GetResourcesForApplication(packageName);
+ PreferenceManager.GetDefaultSharedPreferences(Application.Context)
+ .Edit()
+ .PutString("IconSetKey", packageName)
+ .Commit();
+ }
try
{
diff --git a/src/keepass2android/keepass2android.csproj b/src/keepass2android/keepass2android.csproj
index a565f9a1..82ad4a7a 100644
--- a/src/keepass2android/keepass2android.csproj
+++ b/src/keepass2android/keepass2android.csproj
@@ -106,6 +106,7 @@
+
@@ -162,6 +163,7 @@
+
@@ -247,6 +249,7 @@
+
@@ -631,23 +634,16 @@
-
-
-
-
-
-
-
Designer
@@ -816,6 +812,7 @@
+
@@ -1592,12 +1589,6 @@
-
-
-
-
-
-
@@ -1765,18 +1756,85 @@
-
- False
- 25.1.1.0
-
-
- False
- 25.1.1.0
-
-
- False
- 25.1.1.0
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/keepass2android/search/SearchProvider.cs b/src/keepass2android/search/SearchProvider.cs
index 56c2b367..e638f740 100644
--- a/src/keepass2android/search/SearchProvider.cs
+++ b/src/keepass2android/search/SearchProvider.cs
@@ -121,8 +121,9 @@ namespace keepass2android.search
var customIconUuid = new PwUuid(MemUtil.HexStringToByteArray(uri.GetQueryParameter(CustomIconUuidParameter)));
var iconDrawable = _db.DrawableFactory.GetIconDrawable(App.Context, _db.KpDatabase, iconId, customIconUuid, false) as BitmapDrawable;
- if (iconDrawable != null)
- {
+ if ((iconDrawable != null) && (iconDrawable.Bitmap != null))
+
+ {
var pipe = ParcelFileDescriptor.CreatePipe();
var outStream = new OutputStreamInvoker(new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]));
diff --git a/src/keepass2android/services/AutofillBase/StructureParser.cs b/src/keepass2android/services/AutofillBase/StructureParser.cs
index 8f50388e..908baad1 100644
--- a/src/keepass2android/services/AutofillBase/StructureParser.cs
+++ b/src/keepass2android/services/AutofillBase/StructureParser.cs
@@ -7,6 +7,7 @@ using Android.Text;
using Android.Util;
using Android.Views;
using Android.Views.Autofill;
+using Android.Views.InputMethods;
using keepass2android.services.AutofillBase.model;
using FilledAutofillFieldCollection = keepass2android.services.AutofillBase.model.FilledAutofillFieldCollection;
@@ -152,16 +153,36 @@ namespace keepass2android.services.AutofillBase
|| (f.Hint?.ToLowerInvariant().Contains("password") ?? false);
}
- private static bool IsPassword(AssistStructure.ViewNode f)
+ private static bool IsInputTypeClass(InputTypes inputType, InputTypes inputTypeClass)
{
- return
+ if (!InputTypes.MaskClass.HasFlag(inputTypeClass))
+ throw new Exception("invalid inputTypeClas");
+ return (((int)inputType) & (int)InputTypes.MaskClass) == (int) (inputTypeClass);
+ }
+ private static bool IsInputTypeVariation(InputTypes inputType, InputTypes inputTypeVariation)
+ {
+ if (!InputTypes.MaskVariation.HasFlag(inputTypeVariation))
+ throw new Exception("invalid inputTypeVariation");
+ return (((int)inputType) & (int)InputTypes.MaskVariation) == (int)(inputTypeVariation);
+ }
+
+ private static bool IsPassword(AssistStructure.ViewNode f)
+ {
+ InputTypes inputType = f.InputType;
+
+ return
(!f.IdEntry?.ToLowerInvariant().Contains("search") ?? true) &&
(!f.Hint?.ToLowerInvariant().Contains("search") ?? true) &&
(
- f.InputType.HasFlag(InputTypes.TextVariationPassword) ||
- f.InputType.HasFlag(InputTypes.TextVariationVisiblePassword) ||
- f.InputType.HasFlag(InputTypes.TextVariationWebPassword) ||
- (f.HtmlInfo?.Attributes.Any(p => p.First.ToString() == "type" && p.Second.ToString() == "password") ?? false)
+ (IsInputTypeClass(inputType, InputTypes.ClassText)
+ &&
+ (
+ IsInputTypeVariation(inputType, InputTypes.TextVariationPassword)
+ || IsInputTypeVariation(inputType, InputTypes.TextVariationVisiblePassword)
+ || IsInputTypeVariation(inputType, InputTypes.TextVariationWebPassword)
+ )
+ )
+ || (f.HtmlInfo?.Attributes.Any(p => p.First.ToString() == "type" && p.Second.ToString() == "password") ?? false)
);
}
diff --git a/src/keepass2android/services/CopyToClipboardService.cs b/src/keepass2android/services/CopyToClipboardService.cs
index 9761c3c3..205cbd21 100644
--- a/src/keepass2android/services/CopyToClipboardService.cs
+++ b/src/keepass2android/services/CopyToClipboardService.cs
@@ -24,6 +24,8 @@ using Java.Util;
using Android.App;
using Android.Content;
+using Android.Graphics;
+using Android.Graphics.Drawables;
using Android.OS;
using Android.Runtime;
using Android.Widget;
@@ -75,23 +77,23 @@ namespace keepass2android
_hasKeyboard = true;
}
- public int CreateNotifications(string entryName)
+ public int CreateNotifications(string entryName, Bitmap entryIcon)
{
if (((int)Build.VERSION.SdkInt < 16) ||
(PreferenceManager.GetDefaultSharedPreferences(_ctx)
.GetBoolean(_ctx.GetString(Resource.String.ShowSeparateNotifications_key),
_ctx.Resources.GetBoolean(Resource.Boolean.ShowSeparateNotifications_default))))
{
- return CreateSeparateNotifications(entryName);
+ return CreateSeparateNotifications(entryName, entryIcon);
}
else
{
- return CreateCombinedNotification(entryName);
+ return CreateCombinedNotification(entryName, entryIcon);
}
}
- private int CreateCombinedNotification(string entryName)
+ private int CreateCombinedNotification(string entryName, Bitmap entryIcon)
{
if ((!_hasUsername) && (!_hasPassword) && (!_hasKeyboard))
return 0;
@@ -100,12 +102,12 @@ namespace keepass2android
if (_hasKeyboard)
{
notificationBuilder = GetNotificationBuilder(Intents.CheckKeyboard, Resource.String.available_through_keyboard,
- Resource.Drawable.ic_notify_keyboard, entryName);
+ Resource.Drawable.ic_notify_keyboard, entryName, entryIcon);
}
else
{
notificationBuilder = GetNotificationBuilder(null, Resource.String.entry_is_available, Resource.Drawable.ic_launcher_gray,
- entryName);
+ entryName, entryIcon);
}
//add action buttons to base notification:
@@ -127,14 +129,14 @@ namespace keepass2android
return 1;
}
- private int CreateSeparateNotifications(string entryName)
+ private int CreateSeparateNotifications(string entryName, Bitmap entryIcon)
{
int numNotifications = 0;
if (_hasPassword)
{
// only show notification if password is available
Notification password = GetNotification(Intents.CopyPassword, Resource.String.copy_password,
- Resource.Drawable.ic_action_password, entryName);
+ Resource.Drawable.ic_action_password, entryName, entryIcon);
numNotifications++;
password.DeleteIntent = CreateDeleteIntent(NotifyPassword);
_notificationManager.Notify(NotifyPassword, password);
@@ -143,7 +145,7 @@ namespace keepass2android
{
// only show notification if username is available
Notification username = GetNotification(Intents.CopyUsername, Resource.String.copy_username,
- Resource.Drawable.ic_action_username, entryName);
+ Resource.Drawable.ic_action_username, entryName, entryIcon);
username.DeleteIntent = CreateDeleteIntent(NotifyUsername);
_notificationManager.Notify(NotifyUsername, username);
numNotifications++;
@@ -152,7 +154,7 @@ namespace keepass2android
{
// only show notification if username is available
Notification keyboard = GetNotification(Intents.CheckKeyboard, Resource.String.available_through_keyboard,
- Resource.Drawable.ic_notify_keyboard, entryName);
+ Resource.Drawable.ic_notify_keyboard, entryName, entryIcon);
keyboard.DeleteIntent = CreateDeleteIntent(NotifyKeyboard);
_notificationManager.Notify(NotifyKeyboard, keyboard);
numNotifications++;
@@ -173,14 +175,14 @@ namespace keepass2android
}
- private Notification GetNotification(String intentText, int descResId, int drawableResId, String entryName)
+ private Notification GetNotification(string intentText, int descResId, int drawableResId, string entryName, Bitmap entryIcon)
{
- var builder = GetNotificationBuilder(intentText, descResId, drawableResId, entryName);
+ var builder = GetNotificationBuilder(intentText, descResId, drawableResId, entryName, entryIcon);
return builder.Build();
}
- private NotificationCompat.Builder GetNotificationBuilder(string intentText, int descResId, int drawableResId, string entryName)
+ private NotificationCompat.Builder GetNotificationBuilder(string intentText, int descResId, int drawableResId, string entryName, Bitmap entryIcon)
{
String desc = _ctx.GetString(descResId);
@@ -198,22 +200,24 @@ namespace keepass2android
pending = GetPendingIntent(intentText, descResId);
}
- var builder = new NotificationCompat.Builder(_ctx);
+ var builder = new NotificationCompat.Builder(_ctx, App.NotificationChannelIdEntry);
builder.SetSmallIcon(drawableResId)
.SetContentText(desc)
.SetContentTitle(entryName)
- .SetWhen(Java.Lang.JavaSystem.CurrentTimeMillis())
+ .SetWhen(Java.Lang.JavaSystem.CurrentTimeMillis())
.SetTicker(entryName + ": " + desc)
.SetVisibility((int)Android.App.NotificationVisibility.Secret)
.SetContentIntent(pending);
+ if (entryIcon != null)
+ builder.SetLargeIcon(entryIcon);
return builder;
}
private PendingIntent GetPendingIntent(string intentText, int descResId)
{
PendingIntent pending;
- Intent intent = new Intent(intentText);
- intent.SetPackage(_ctx.PackageName);
+ Intent intent = new Intent(_ctx, typeof(CopyToClipboardBroadcastReceiver));
+ intent.SetAction(intentText);
pending = PendingIntent.GetBroadcast(_ctx, descResId, intent, PendingIntentFlags.CancelCurrent);
return pending;
}
@@ -388,13 +392,29 @@ namespace keepass2android
private const string ActionNotificationCancelled = "notification_cancelled";
- public void DisplayAccessNotifications(PwEntryOutput entry, bool closeAfterCreate, string searchUrl)
+
+
+
+ public void DisplayAccessNotifications(PwEntryOutput entry, bool closeAfterCreate, string searchUrl)
{
var hadKeyboardData = ClearNotifications();
String entryName = entry.OutputStrings.ReadSafe(PwDefs.TitleField);
- ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
+ var bmp = Util.DrawableToBitmap(App.Kp2a.GetDb().DrawableFactory.GetIconDrawable(this,
+ App.Kp2a.GetDb().KpDatabase, entry.Entry.IconId, entry.Entry.CustomIconUuid, false));
+
+
+ if (!(((entry.Entry.CustomIconUuid != null) && (!entry.Entry.CustomIconUuid.Equals(PwUuid.Zero))))
+ && PreferenceManager.GetDefaultSharedPreferences(this).GetString("IconSetKey", PackageName) == PackageName)
+ {
+ Color drawingColor = new Color(189, 189, 189);
+ bmp = Util.ChangeImageColor(bmp, drawingColor);
+ }
+
+ Bitmap entryIcon = Util.MakeLargeIcon(bmp, this);
+
+ ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
var notBuilder = new PasswordAccessNotificationBuilder(this, _notificationManager);
if (prefs.GetBoolean(GetString(Resource.String.CopyToClipboardNotification_key), Resources.GetBoolean(Resource.Boolean.CopyToClipboardNotification_default)))
{
@@ -447,19 +467,14 @@ namespace keepass2android
{
ClearKeyboard(true); //this clears again and then (this is the point) broadcasts that we no longer have keyboard data
}
- _numElementsToWaitFor = notBuilder.CreateNotifications(entryName);
+ _numElementsToWaitFor = notBuilder.CreateNotifications(entryName, entryIcon);
if (_numElementsToWaitFor == 0)
{
StopSelf();
return;
}
-
- IntentFilter filter = new IntentFilter();
- filter.AddAction(Intents.CopyUsername);
- filter.AddAction(Intents.CopyPassword);
- filter.AddAction(Intents.CheckKeyboard);
-
+
//register receiver to get notified when notifications are discarded in which case we can shutdown the service
_notificationDeletedBroadcastReceiver = new NotificationDeletedBroadcastReceiver(this);
IntentFilter deletefilter = new IntentFilter();
@@ -632,21 +647,38 @@ namespace keepass2android
public override void Run()
{
String currentClip = Util.GetClipboard(_service);
- _handler.Post(() => _service.OnWaitElementDeleted(ClearClipboard));
+ DoPostClear();
if (currentClip.Equals(_clearText))
{
- Util.CopyToClipboard(_service, "");
- _handler.Post(() =>
- {
- string message = _service.GetString(Resource.String.ClearClipboard) + " "
- + _service.GetString(Resource.String.ClearClipboardWarning);
- Android.Util.Log.Debug("KP2A", message);
- Toast.MakeText(_service,
- message,
- ToastLength.Long).Show();
- });
+ Util.CopyToClipboard(_service, "");
+ DoPostWarn();
}
}
+
+ private void DoPostWarn()
+ {
+ _handler.Post(ShowClipboardWarning);
+ }
+
+ private void DoPostClear()
+ {
+ _handler.Post(DoClearClipboard);
+ }
+
+ private void DoClearClipboard()
+ {
+ _service.OnWaitElementDeleted(CopyToClipboardService.ClearClipboard);
+ }
+
+ private void ShowClipboardWarning()
+ {
+ string message = _service.GetString(Resource.String.ClearClipboard) + " "
+ + _service.GetString(Resource.String.ClearClipboardWarning);
+ Android.Util.Log.Debug("KP2A", message);
+ Toast.MakeText(_service,
+ message,
+ ToastLength.Long).Show();
+ }
}
@@ -757,7 +789,6 @@ namespace keepass2android
}
[BroadcastReceiver(Permission = "keepass2android." + AppNames.PackagePart + ".permission.CopyToClipboard")]
- [IntentFilter(new[] { Intents.CopyUsername, Intents.CopyPassword, Intents.CheckKeyboard })]
class CopyToClipboardBroadcastReceiver : BroadcastReceiver
{
public CopyToClipboardBroadcastReceiver(IntPtr javaReference, JniHandleOwnership transfer)
diff --git a/src/keepass2android/services/OngoingNotificationsService.cs b/src/keepass2android/services/OngoingNotificationsService.cs
index 17925a67..dfda57e0 100644
--- a/src/keepass2android/services/OngoingNotificationsService.cs
+++ b/src/keepass2android/services/OngoingNotificationsService.cs
@@ -48,7 +48,7 @@ namespace keepass2android
public override void OnCreate()
{
base.OnCreate();
-
+
_screenOffReceiver = new ScreenOffReceiver();
IntentFilter filter = new IntentFilter();
filter.AddAction(Intent.ActionScreenOff);
@@ -65,11 +65,11 @@ namespace keepass2android
// Set the icon to reflect the current state
if (App.Kp2a.DatabaseIsUnlocked)
{
- // Clear current foreground status and QuickUnlock icon
- StopForeground(true);
+ // Clear QuickUnlock icon
+ notificationManager.Cancel(QuickUnlockId);
- //use foreground again to let the app not be killed too easily.
- StartForeground(UnlockedWarningId, GetUnlockedNotification());
+ //use foreground again to let the app not be killed too easily.
+ StartForeground(UnlockedWarningId, GetUnlockedNotification());
}
else
{
@@ -104,24 +104,30 @@ namespace keepass2android
{
base.OnDestroy();
- var notificationManager = (NotificationManager)GetSystemService(NotificationService);
- notificationManager.Cancel(UnlockedWarningId);
- // Quick Unlock notification should be removed automatically by the service (if present), as it was the foreground notification.
+ CancelNotifications(this);
- Kp2aLog.Log("OngoingNotificationsService.OnDestroy");
+ Kp2aLog.Log("OngoingNotificationsService.OnDestroy");
// If the service is killed, then lock the database immediately
if (App.Kp2a.DatabaseIsUnlocked)
{
- App.Kp2a.LockDatabase();
+ App.Kp2a.LockDatabase(false);
}
- //also remove any notifications of the app
- notificationManager.CancelAll();
UnregisterReceiver(_screenOffReceiver);
}
-
- public override IBinder OnBind(Intent intent)
+
+ public static void CancelNotifications(Context ctx)
+ {
+ var notificationManager = (NotificationManager) ctx.GetSystemService(NotificationService);
+ notificationManager.Cancel(UnlockedWarningId);
+ // Quick Unlock notification should be removed automatically by the service (if present), as it was the foreground notification.
+
+ //also remove any notifications of the app
+ notificationManager.CancelAll();
+ }
+
+ public override IBinder OnBind(Intent intent)
{
return null;
}
@@ -139,7 +145,7 @@ namespace keepass2android
grayIconResouceId = Resource.Drawable.transparent;
}
NotificationCompat.Builder builder =
- new NotificationCompat.Builder(this)
+ new NotificationCompat.Builder(this, App.NotificationChannelIdQuicklocked)
.SetSmallIcon(grayIconResouceId)
.SetLargeIcon(MakeLargeIcon(BitmapFactory.DecodeResource(Resources, AppNames.NotificationLockedIcon)))
.SetVisibility((int)Android.App.NotificationVisibility.Secret)
@@ -163,7 +169,7 @@ namespace keepass2android
builder.SetContentIntent(GetSwitchToAppPendingIntent());
// Additional action to allow locking the database
builder.AddAction(Android.Resource.Drawable.IcLockLock, GetString(Resource.String.QuickUnlock_lockButton),
- PendingIntent.GetBroadcast(this, 0, new Intent(Intents.CloseDatabase), PendingIntentFlags.UpdateCurrent));
+ PendingIntent.GetBroadcast(this, 0, new Intent(this, typeof(ApplicationBroadcastReceiver)).SetAction(Intents.CloseDatabase), PendingIntentFlags.UpdateCurrent));
return builder.Build();
@@ -171,9 +177,7 @@ namespace keepass2android
private Bitmap MakeLargeIcon(Bitmap unscaled)
{
- int height = (int)(0.9*Resources.GetDimension(Android.Resource.Dimension.NotificationLargeIconHeight));
- int width = (int)(0.9*Resources.GetDimension(Android.Resource.Dimension.NotificationLargeIconWidth));
- return Bitmap.CreateScaledBitmap(unscaled, width, height, true);
+ return Util.MakeLargeIcon(unscaled, this);
}
#endregion
@@ -183,7 +187,7 @@ namespace keepass2android
private Notification GetUnlockedNotification()
{
NotificationCompat.Builder builder =
- new NotificationCompat.Builder(this)
+ new NotificationCompat.Builder(this, App.NotificationChannelIdUnlocked)
.SetOngoing(true)
.SetSmallIcon(Resource.Drawable.ic_notify)
.SetLargeIcon(MakeLargeIcon(BitmapFactory.DecodeResource(Resources, AppNames.NotificationUnlockedIcon)))
@@ -208,7 +212,7 @@ namespace keepass2android
// Default action is to show Kp2A
builder.SetContentIntent(GetSwitchToAppPendingIntent());
// Additional action to allow locking the database
- builder.AddAction(Resource.Drawable.ic_action_lock, GetString(Resource.String.menu_lock), PendingIntent.GetBroadcast(this, 0, new Intent(Intents.LockDatabase), PendingIntentFlags.UpdateCurrent));
+ builder.AddAction(Resource.Drawable.ic_action_lock, GetString(Resource.String.menu_lock), PendingIntent.GetBroadcast(this, 0, new Intent(this, typeof(ApplicationBroadcastReceiver)).SetAction(Intents.LockDatabase), PendingIntentFlags.UpdateCurrent));
return builder.Build();
}
diff --git a/src/keepass2android/settings/DatabaseSettingsActivity.cs b/src/keepass2android/settings/DatabaseSettingsActivity.cs
index ce9d6fd2..5b7f4094 100644
--- a/src/keepass2android/settings/DatabaseSettingsActivity.cs
+++ b/src/keepass2android/settings/DatabaseSettingsActivity.cs
@@ -364,9 +364,16 @@ namespace keepass2android
// Re-use the change handlers for the application settings
FindPreference(GetString(Resource.String.keyfile_key)).PreferenceChange += OnRememberKeyFileHistoryChanged;
- FindPreference(GetString(Resource.String.ShowUnlockedNotification_key)).PreferenceChange += OnShowUnlockedNotificationChanged;
- FindPreference(GetString(Resource.String.ShowUnlockedNotification_key)).PreferenceChange += OnShowUnlockedNotificationChanged;
- FindPreference(GetString(Resource.String.DebugLog_key)).PreferenceChange += OnDebugLogChanged;
+ var unlockedNotificationPref = FindPreference(GetString(Resource.String.ShowUnlockedNotification_key));
+ unlockedNotificationPref.PreferenceChange += OnShowUnlockedNotificationChanged;
+ if ((int)Build.VERSION.SdkInt >= 26)
+ {
+ //use system notification channels to control notification visibility
+ unlockedNotificationPref.Parent.RemovePreference(unlockedNotificationPref);
+ }
+
+
+ FindPreference(GetString(Resource.String.DebugLog_key)).PreferenceChange += OnDebugLogChanged;
FindPreference(GetString(Resource.String.DebugLog_send_key)).PreferenceClick += OnSendDebug;
UpdateAutofillPref();
@@ -448,10 +455,16 @@ namespace keepass2android
Preference hideQuickUnlockTranspIconPref = FindPreference(GetString(Resource.String.QuickUnlockIconHidden_key));
Preference hideQuickUnlockIconPref = FindPreference(GetString(Resource.String.QuickUnlockIconHidden16_key));
var quickUnlockScreen = ((PreferenceScreen)FindPreference(GetString(Resource.String.QuickUnlock_prefs_key)));
- if ((int)Android.OS.Build.VERSION.SdkInt >= 16)
+ if ((int)Android.OS.Build.VERSION.SdkInt >= 26)
+ {
+ //use notification channels
+ quickUnlockScreen.RemovePreference(hideQuickUnlockTranspIconPref);
+ quickUnlockScreen.RemovePreference(hideQuickUnlockIconPref);
+ }
+ else if ((int)Android.OS.Build.VERSION.SdkInt >= 16)
{
quickUnlockScreen.RemovePreference(hideQuickUnlockTranspIconPref);
- FindPreference(GetString(Resource.String.ShowUnlockedNotification_key)).PreferenceChange += (sender, args) => App.Kp2a.UpdateOngoingNotification();
+ unlockedNotificationPref.PreferenceChange += (sender, args) => App.Kp2a.UpdateOngoingNotification();
hideQuickUnlockIconPref.PreferenceChange += delegate { App.Kp2a.UpdateOngoingNotification(); };
}
else
@@ -462,7 +475,7 @@ namespace keepass2android
delegate { App.Kp2a.UpdateOngoingNotification(); };
((PreferenceScreen)FindPreference(GetString(Resource.String.display_prefs_key))).RemovePreference(
- FindPreference(GetString(Resource.String.ShowUnlockedNotification_key)));
+ unlockedNotificationPref);
}
}
catch (Exception ex)
@@ -852,7 +865,7 @@ namespace keepass2android
{
CompositeKey masterKey = App.Kp2a.GetDb().KpDatabase.MasterKey;
var sourceIoc = ((KcpKeyFile)masterKey.GetUserKey(typeof(KcpKeyFile))).Ioc;
- var newIoc = ImportFileToInternalDirectory(sourceIoc);
+ var newIoc = IoUtil.ImportFileToInternalDirectory(sourceIoc, Activity, App.Kp2a);
((KcpKeyFile)masterKey.GetUserKey(typeof(KcpKeyFile))).ResetIoc(newIoc);
var keyfileString = IOConnectionInfo.SerializeToString(newIoc);
App.Kp2a.StoreOpenedFileAsRecent(App.Kp2a.GetDb().Ioc, keyfileString);
@@ -892,7 +905,9 @@ namespace keepass2android
{
//Import db/key file preferences:
Preference importDb = FindPreference("import_db_prefs");
- if (!App.Kp2a.GetDb().Ioc.IsLocalFile())
+ bool isLocalOrContent =
+ App.Kp2a.GetDb().Ioc.IsLocalFile() || App.Kp2a.GetDb().Ioc.Path.StartsWith("content://");
+ if (!isLocalOrContent)
{
importDb.Summary = GetString(Resource.String.OnlyAvailableForLocalFiles);
importDb.Enabled = false;
@@ -919,7 +934,7 @@ namespace keepass2android
try
{
var sourceIoc = App.Kp2a.GetDb().Ioc;
- var newIoc = ImportFileToInternalDirectory(sourceIoc);
+ var newIoc = IoUtil.ImportFileToInternalDirectory(sourceIoc, Activity, App.Kp2a);
return () =>
{
var builder = new AlertDialog.Builder(Activity);
@@ -953,32 +968,6 @@ namespace keepass2android
}
- private IOConnectionInfo ImportFileToInternalDirectory(IOConnectionInfo sourceIoc)
- {
- Java.IO.File internalDirectory = IoUtil.GetInternalDirectory(Activity);
- string targetPath = UrlUtil.GetFileName(sourceIoc.Path);
- targetPath = targetPath.Trim("|\\?*<\":>+[]/'".ToCharArray());
- if (targetPath == "")
- targetPath = "imported";
- if (new File(internalDirectory, targetPath).Exists())
- {
- int c = 1;
- var ext = UrlUtil.GetExtension(targetPath);
- var filenameWithoutExt = UrlUtil.StripExtension(targetPath);
- do
- {
- c++;
- targetPath = filenameWithoutExt + c;
- if (!String.IsNullOrEmpty(ext))
- targetPath += "." + ext;
- } while (new File(internalDirectory, targetPath).Exists());
- }
- var targetIoc = IOConnectionInfo.FromPath(new File(internalDirectory, targetPath).CanonicalPath);
-
- IoUtil.Copy(targetIoc, sourceIoc, App.Kp2a);
- return targetIoc;
- }
-
private void SetAlgorithm(Database db, Preference algorithm)
diff --git a/src/keepass2android/timeout/TimeoutHelper.cs b/src/keepass2android/timeout/TimeoutHelper.cs
index 04ca4425..c49e6383 100644
--- a/src/keepass2android/timeout/TimeoutHelper.cs
+++ b/src/keepass2android/timeout/TimeoutHelper.cs
@@ -35,7 +35,7 @@ namespace keepass2android
private static PendingIntent BuildIntent(Context ctx)
{
- return PendingIntent.GetBroadcast(ctx, 0, new Intent(Intents.LockDatabase), PendingIntentFlags.UpdateCurrent);
+ return PendingIntent.GetBroadcast(ctx, 0, new Intent(ctx, typeof(ApplicationBroadcastReceiver)).SetAction(Intents.LockDatabase), PendingIntentFlags.UpdateCurrent);
}
public static void Start(Context ctx)
diff --git a/src/keepass2android/views/GroupListItemView.cs b/src/keepass2android/views/GroupListItemView.cs
index 8eaefbcf..57ab984f 100644
--- a/src/keepass2android/views/GroupListItemView.cs
+++ b/src/keepass2android/views/GroupListItemView.cs
@@ -20,6 +20,7 @@ namespace keepass2android.view
: base(context)
{
_groupBaseActivity = context;
+
}
public GroupListItemView(Context context, IAttributeSet attrs)
diff --git a/src/keepass2android/views/PwEntryView.cs b/src/keepass2android/views/PwEntryView.cs
index 81e40c75..930b692e 100644
--- a/src/keepass2android/views/PwEntryView.cs
+++ b/src/keepass2android/views/PwEntryView.cs
@@ -103,8 +103,11 @@ namespace keepass2android.view
{
_entry = pw;
_pos = pos;
-
- ImageView iv = (ImageView)ev.FindViewById(Resource.Id.icon);
+ ev.FindViewById(Resource.Id.icon).Visibility = ViewStates.Visible;
+ ev.FindViewById(Resource.Id.check_mark).Visibility = ViewStates.Invisible;
+
+
+ ImageView iv = (ImageView)ev.FindViewById(Resource.Id.icon);
bool isExpired = pw.Expires && pw.ExpiryTime < DateTime.Now;
if (isExpired)
{
diff --git a/src/keepass2android/views/PwGroupView.cs b/src/keepass2android/views/PwGroupView.cs
index 5feba08b..f94157b0 100644
--- a/src/keepass2android/views/PwGroupView.cs
+++ b/src/keepass2android/views/PwGroupView.cs
@@ -22,6 +22,7 @@ using Android.Runtime;
using Android.Views;
using Android.Widget;
using KeePassLib;
+using Object = Java.Lang.Object;
namespace keepass2android.view
{
@@ -64,7 +65,10 @@ namespace keepass2android.view
gv.FindViewById(Resource.Id.group_icon_bkg).Visibility = App.Kp2a.GetDb().DrawableFactory.IsWhiteIconSet ? ViewStates.Visible : ViewStates.Gone;
- PopulateView(gv, pw);
+ gv.FindViewById(Resource.Id.icon).Visibility = ViewStates.Visible;
+ gv.FindViewById(Resource.Id.check_mark).Visibility = ViewStates.Invisible;
+
+ PopulateView(gv, pw);
LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.WrapContent);
@@ -76,8 +80,11 @@ namespace keepass2android.view
ImageView iv = (ImageView) gv.FindViewById(Resource.Id.icon);
App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(iv, _groupBaseActivity, App.Kp2a.GetDb().KpDatabase, pw.IconId, pw.CustomIconUuid, true);
-
- _textview.Text = pw.Name;
+ gv.FindViewById(Resource.Id.icon).Visibility = ViewStates.Visible;
+ gv.FindViewById(Resource.Id.check_mark).Visibility = ViewStates.Invisible;
+
+
+ _textview.Text = pw.Name;
if (_defaultTextColor == null)
_defaultTextColor = _textview.TextColors.DefaultColor;
@@ -91,11 +98,15 @@ namespace keepass2android.view
_textview.SetTextColor(new Color((int)_defaultTextColor));
_label.Text = _groupBaseActivity.GetString (Resource.String.group)+" - ";
- uint numEntries = CountEntries (pw);
- if (numEntries == 1)
- _label.Text += Context.GetString (Resource.String.Entry_singular);
- else
- _label.Text += Context.GetString (Resource.String.Entry_plural, new Java.Lang.Object[] { numEntries });
+ uint numEntries = CountEntries (pw);
+ if (numEntries == 1)
+ _label.Text += Context.GetString(Resource.String.Entry_singular);
+ else
+ {
+ Java.Lang.Object obj = (int)numEntries;
+ _label.Text += Context.GetString(Resource.String.Entry_plural, obj);
+ }
+
}
uint CountEntries(PwGroup g)
@@ -159,5 +170,26 @@ namespace keepass2android.view
LaunchGroup();
}
}
+
+
+ internal class JavaObjectAdapter : Java.Lang.Object
+ {
+ private readonly uint _value;
+ public JavaObjectAdapter(uint value)
+ {
+ _value = value;
+ }
+
+ public JavaObjectAdapter(System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer)
+ : base(handle, transfer)
+ {
+
+ }
+
+ public override string ToString()
+ {
+ return _value.ToString();
+ }
+ }
}
diff --git a/src/netftpandroid b/src/netftpandroid
index 040e8bbe..23df4cf1 160000
--- a/src/netftpandroid
+++ b/src/netftpandroid
@@ -1 +1 @@
-Subproject commit 040e8bbe564bd140203255e11c86c01c2f7c1892
+Subproject commit 23df4cf135857eb33f3656567d08ec228d96d4b5