Compare commits
98 Commits
2818-feat-
...
translatio
Author | SHA1 | Date | |
---|---|---|---|
![]() |
38aaa91c5b | ||
![]() |
8ebe1bb0d9 | ||
![]() |
bef3463a0d | ||
![]() |
7537820d79 | ||
![]() |
79127ee4ae | ||
![]() |
c367f94512 | ||
![]() |
04b455425b | ||
![]() |
130a6eb9bf | ||
![]() |
9490731f9a | ||
![]() |
8db227477d | ||
![]() |
1c720ac3d9 | ||
![]() |
581c897299 | ||
![]() |
c3936d05cc | ||
![]() |
7f7844f33e | ||
![]() |
ba140b0612 | ||
![]() |
9cba21cd7f | ||
![]() |
0f3ad02ecb | ||
![]() |
2859a53d0e | ||
![]() |
edb5590dd3 | ||
![]() |
f385fef48d | ||
![]() |
05a340aa4d | ||
![]() |
2191421f62 | ||
![]() |
11f0ac2b4f | ||
![]() |
54ea326d2b | ||
![]() |
d2f2e19c24 | ||
![]() |
741bb4346e | ||
![]() |
714e36c14d | ||
![]() |
86cba725f8 | ||
![]() |
2207c02064 | ||
![]() |
0687da9174 | ||
![]() |
1d2a6d2c15 | ||
![]() |
47a323dd5c | ||
![]() |
5660f8b1d2 | ||
![]() |
3ac238cc2b | ||
![]() |
57fcfc11c4 | ||
![]() |
c80b61e8f4 | ||
![]() |
d38f60e059 | ||
![]() |
f4197eee5d | ||
![]() |
271dcfc19c | ||
![]() |
011a939c39 | ||
![]() |
ee2b67a5dd | ||
![]() |
9cf1606064 | ||
![]() |
df5f72262c | ||
![]() |
902f4a8f34 | ||
![]() |
1a2b7c59aa | ||
![]() |
ddced3d7b1 | ||
![]() |
ecab74bfec | ||
![]() |
82e927cb93 | ||
![]() |
45abdf4382 | ||
![]() |
33cc95ff87 | ||
![]() |
a977c75b64 | ||
![]() |
3da07765ca | ||
![]() |
7d450865f7 | ||
![]() |
14b01088ea | ||
![]() |
4770b99127 | ||
![]() |
b556eef642 | ||
![]() |
b31ec9fba0 | ||
![]() |
13e653f45d | ||
![]() |
75df57022a | ||
![]() |
10690ddf84 | ||
![]() |
4f4f85ea9d | ||
![]() |
d1da69f7a3 | ||
![]() |
93a18a60b0 | ||
![]() |
11f8f318da | ||
![]() |
ec3b236ac3 | ||
![]() |
2fc9d2b9cb | ||
![]() |
290623a85c | ||
![]() |
0df85ed593 | ||
![]() |
3e696437c6 | ||
![]() |
b9fb4d127c | ||
![]() |
1afc69d715 | ||
![]() |
cf06572aef | ||
![]() |
0e7522923d | ||
![]() |
5a2df80101 | ||
![]() |
a0b80f706e | ||
![]() |
1119ca31f6 | ||
![]() |
d817e39c5d | ||
![]() |
2f0881b917 | ||
![]() |
01666682b0 | ||
![]() |
2a56bee949 | ||
![]() |
78ed72390f | ||
![]() |
17a83a731a | ||
![]() |
a6a17be1eb | ||
![]() |
3d9a29c04b | ||
![]() |
ae10cde944 | ||
![]() |
8f947d6bd6 | ||
![]() |
c950a1d686 | ||
![]() |
50ef6f176c | ||
![]() |
c65136307d | ||
![]() |
2ef38695eb | ||
![]() |
bbdc223de3 | ||
![]() |
ab4ce573a0 | ||
![]() |
5bac055c80 | ||
![]() |
dbb5d402ed | ||
![]() |
0a34855fd5 | ||
![]() |
e870f63024 | ||
![]() |
29102af02c | ||
![]() |
da15c02b29 |
1
Makefile
@@ -20,7 +20,6 @@
|
||||
# - nuget: restore NuGet packages
|
||||
# - msbuild: build the project
|
||||
# - apk: same as all
|
||||
# - manifestlink: creates a symlink (to be used in building) to the AndroidManifest corresponding to the selected Flavor
|
||||
#
|
||||
# - distclean: run a 'git clean -xdff'. Remove everyhing that is not in the git tree.
|
||||
# - clean: all clean_* targets below
|
||||
|
@@ -1,7 +1,7 @@
|
||||
files:
|
||||
- source: src/keepass2android-app/Resources/values/strings.xml
|
||||
- source: src/keepass2android/Resources/values/strings.xml
|
||||
translation: >-
|
||||
/src/keepass2android-app/Resources/values-%two_letters_code%/%original_file_name%
|
||||
/src/keepass2android/Resources/values-%two_letters_code%/%original_file_name%
|
||||
translate_attributes: '0'
|
||||
content_segmentation: '0'
|
||||
languages_mapping:
|
||||
|
5
docs/AccServiceAutoFill.md
Normal file
@@ -0,0 +1,5 @@
|
||||
As of December 2017, Google does not accept the use of Accessibility services for anything except helping people with disabilities. This means that Keepass2Android can no longer provide the accessibility service based AutoFill feature. Otherwise, Google would remove Keepass2Android from Play Store.
|
||||
|
||||
If you want to continue using this feature, please [install the Accessibility service based AutoFill plugin](https://github.com/PhilippC/kp2a_accservice_autofill/releases/).
|
||||
|
||||
After installation, please enable the accessibility service "KP2A AutoFillPlugin" in the Android system settings. When trying to use the plugin for the first time, KP2A will ask you if the plugin may access the Keepass database. Please accept this to use the plugin.
|
18
docs/Advanced-usage-of-the-Keepass2Android-keyboard.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Installing dictionaries
|
||||
Keepass2Android will load dictionaries for your current language both from AnySoftKeyboard and from Hacker's keyboard.
|
||||
* For AnySoftKeyboard dictionaries visit: [https://play.google.com/store/search?q=anysoftkeyboard+dictionary&c=apps](https://play.google.com/store/search?q=anysoftkeyboard+dictionary&c=apps)
|
||||
* For Hacker's Keyboard dictionaries visit: [https://play.google.com/store/search?q=hacker%27s%20keyboard%20dictionary&c=apps](https://play.google.com/store/search?q=hacker%27s%20keyboard%20dictionary&c=apps)
|
||||
|
||||
# Automatic keyboard switching (requires ADB)
|
||||
Starting with Keepass2Android 1.02-pre1, you can use the [KeyboardSwap Plugin](https://play.google.com/store/apps/details?id=keepass2android.plugin.keyboardswap2) to switch to the KP2A keyboard automatically instead of bringing up the Input method selection dialog (e.g. after using the Share URL feature). To setup the plugin please follow the instructions on [the PlayStore website](https://play.google.com/store/apps/details?id=keepass2android.plugin.keyboardswap2)
|
||||
|
||||
# Deprecated: Automatic keyboard switching on rooted devices
|
||||
|
||||
In order to automatically switch to the KP2A keyboard and back, you need to
|
||||
* have a rooted device (per Android security policies)
|
||||
* have at least KP2A version 0.9.3-pre2
|
||||
* install the Secure Settings app with the "System+" module available in Secure Settings v. 1.3.4 and above. **Note:** This is no longer available for recent Android versions.
|
||||
* Go to the KP2A keyboard settings. Enable auto-switch on rooted devices.
|
||||
|
||||
If you go to a website, select "Share URL" -> Keepass2Android, the keyboard should be switched as soon as you locate the entry or when it's found automatically.
|
||||
|
239
docs/Build.readme.md
Normal file
@@ -0,0 +1,239 @@
|
||||
# How to build Keepass2Android
|
||||
|
||||
## Overview
|
||||
|
||||
Keepass2Android is a Mono for Android app. This means that you need Xamarin's Mono for Android to build it. However, it also uses several components written in Java, so there are also Android-Studio projects involved. To make things even worse, parts of the keyboard and kdb-library are written in native code.
|
||||
|
||||
To build KP2A from scratch, you need:
|
||||
- Xamarin's Mono for Android (also included in Visual Studio)
|
||||
- Android SDK & NDK
|
||||
|
||||
Prior to building Keepass2Android, you need to build some of its components (from command line). Then you can build the full project either through Visual Studio, or through command line.
|
||||
|
||||
By using the command line, you can build on Windows, macOS or Linux.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
### Common to all architectures
|
||||
- Install Android SDK & NDK (either manually with Google's [sdkmanager](https://developer.android.com/studio/command-line/sdkmanager), or through Android Studio). Visual Studio also installs a version of it, but in the end the directory must be writable and in a path without spaces (see below) so as to be able to build the components.
|
||||
- Fetch the main repository of Keepass2Android and all submodules
|
||||
- Note that VisualStudio can do this for you, otherwise run:
|
||||
- `git submodule init && git submodule update`
|
||||
|
||||
### On Windows or macOS
|
||||
- Install Visual Studio (for example 2019) with Xamarin.Android (ie. with capability to build Android apps). This should provide the needed tools like
|
||||
- Xamarin.Android
|
||||
- MSBuild
|
||||
- Java JDK
|
||||
- If you plan to build also from the command line:
|
||||
- Install the MSVC build tools of visual studio. They provide the `vcvarsall.bat` file which among other things adds MSBuild to the PATH.
|
||||
- Install [NuGet](https://www.nuget.org/downloads) to build also with "make". Alternatively, on Windows, if you use [chocolatey](https://chocolatey.org), run as administrator:
|
||||
- `choco install nuget.commandline`
|
||||
- Check that you have access to 'GNU make'.
|
||||
- On Windows, it is usually not available by default. But the Android NDK provides it. You can find it in `%ANDROID_NDK_ROOT%\prebuilt\windows-x86_64\bin\make.exe`. Alternatively, on Windows, if you use [chocolatey](https://chocolatey.org), run as administrator:
|
||||
- `choco install make`
|
||||
- On macOS, it is usually only installed if you have developer command line tools installed or if you use [homebrew](https://brew.sh) or [macports](https://www.macports.org/). As an alternative it may be available in the Android NDK at `%ANDROID_NDK_ROOT%/prebuilt/darwin-x86_64/bin/make`.
|
||||
|
||||
### On Linux
|
||||
- Install Java's JDK
|
||||
- On Debian, for example: `apt install default-jdk-headless`.
|
||||
|
||||
- Install [Mono](https://www.mono-project.com/)
|
||||
- This should provide `msbuild` & `xabuild` binary
|
||||
- On Debian, after having added the repo from above, install with `apt install -t <repo_name> mono-devel msbuild`. A value for `<repo_name>` could be `stable-buster` for example, depending on which one you chose. You could also install the `mono-complete` package if you prefer.
|
||||
|
||||
- Install Xamarin.Android
|
||||
- ~~Option 1: Use the mono-project [CI builds](https://dev.azure.com/xamarin/public/_build/latest?definitionId=48&branchName=main&stageName=Linux)~~ **NOTE:** KP2A now requires Xamarin.Android v13, which is newer than the current CI build; until a more recent CI build is available, this option is unfortunately no longer viable.
|
||||
- Option 2: [Build it from source](https://github.com/xamarin/xamarin-android/blob/master/Documentation/README.md#building-from-source)
|
||||
|
||||
- Install NuGet package of your distribution
|
||||
- On Debian/Ubuntu: `apt install nuget`
|
||||
|
||||
- Install [libzip](https://libzip.org/) for your distribution for some Xamarin.Android versions
|
||||
- This may not be relevant anymore: for example, with Xamarin.Android 11.4.99. this is not needed.
|
||||
- Some versions of Xamarin may require `libzip4`. If you are in this case:
|
||||
- On Debian/Ubuntu, install it with `apt install libzip4`.
|
||||
- Other distributions ship only `libzip5`. As a dirty workaround, it's possible to symlink `libzip.so.5` to `libzip.so.4`. Luckily, it appears to be working. For example:
|
||||
- `sudo ln -s /usr/lib/libzip.so.5 /usr/lib/libzip.so.4`
|
||||
- or `sudo ln -s /usr/lib64/libzip.so.5 /usr/lib/libzip.so.4`
|
||||
|
||||
## Building the required components:
|
||||
|
||||
This is done on the command line and requires the Android SDK & NDK and Java JDK.
|
||||
|
||||
### On Windows
|
||||
- Setup your environment:
|
||||
- Set these environment variables for Android's SDK & NDK
|
||||
- `ANDROID_HOME` (for example `set ANDROID_HOME=C:\PATH\TO\android-sdk`)
|
||||
- `ANDROID_SDK_ROOT` (for example `set ANDROID_SDK_ROOT=C:\PATH\TO\android-sdk`)
|
||||
- `ANDROID_NDK_ROOT` (for example `set ANDROID_NDK_ROOT=C:\PATH\TO\android-sdk\ndk\version`)
|
||||
|
||||
**Note:** Care must be taken when setting the above variables to **not** include a trailing backslash in the path. A trailing backslash may cause `make` to fail.
|
||||
|
||||
**Note**: If the path to the Android SDK contains spaces, you **must** do one of these:
|
||||
- either put the Android SDK into a path without spaces.
|
||||
- or create a symlink to that path which doesn't contain spaces. Attention: this requires **administrator** priveleges. For example:
|
||||
|
||||
```
|
||||
IF NOT EXIST C:\Android ( MKDIR C:\Android ) &&
|
||||
MKLINK /D C:\Android\android-sdk "C:\Program Files (x86)\Android\android-sdk"
|
||||
```
|
||||
This is because [Android NDK doesn't support being installed in a path with spaces](https://github.com/android/ndk/issues/1400).
|
||||
|
||||
**Note**: The Android SDK path will require to be writeable because during the build, some missing components might be downloaded & installed.
|
||||
|
||||
- If you have "GNU make" available on your windows system, you may build by using the Makefile. You can also find a `make` executable in `%ANDROID_NDK_ROOT%\prebuilt\windows-x86_64\bin\make.exe`. To use it, see the instructions for Linux/macOS. Basically, just run `make` or `mingw32-make` depending on which distribution of GNU make for windows you have installed.
|
||||
|
||||
- Otherwise proceed as below:
|
||||
|
||||
1. Build argon2
|
||||
|
||||
```
|
||||
cd src/java/argon2
|
||||
%ANDROID_NDK_ROOT%/ndk-build.cmd
|
||||
```
|
||||
1. Build the other java components
|
||||
|
||||
```
|
||||
cd src/build-scripts
|
||||
build-java.bat
|
||||
```
|
||||
|
||||
`build-java.bat` will call `gradlew` for several Java modules.
|
||||
|
||||
**Notes:**
|
||||
|
||||
- For building the java parts, it is suggested to keep a short name (e.g. "c:\projects\keepass2android") for the root project directory. Otherwise the Windows path length limit might be hit when building.
|
||||
- Before building the java parts, make sure you have set the ANDROID_HOME variable or create a local.properties file inside the directories with a gradlew file. It is recommended to use the same SDK location as that of the Xamarin build.
|
||||
- On some environments, `make` can fail to properly use the detected `MSBUILD` tools. This seems to be due to long pathnames and/or spaces in pathnames. It may be required to explicitly set the `MSBUILD` path using 8.3 "short" path notation:
|
||||
- Determine the location of `MSBUILD` (e.g. `C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe`)
|
||||
- [Generate the "short" path](https://superuser.com/a/728792) of that location (e.g.: `C:\PROGRA~1\MICROS~2\2022\COMMUN~1\MSBuild\Current\Bin\MSBuild.exe`)
|
||||
- When running `make` specify the location of ``MSBUILD` explicitly (e.g.: `make MSBUILD="C:\PROGRA~1\MICROS~2\2022\COMMUN~1\MSBuild\Current\Bin\MSBuild.exe`
|
||||
|
||||
|
||||
### On Linux/macOS
|
||||
|
||||
- Setup your environment:
|
||||
- Set these environment variables for Android's SDK & NDK
|
||||
- `ANDROID_HOME` (for example `export ANDROID_HOME=/path/to/android-sdk/`)
|
||||
- `ANDROID_SDK_ROOT` (for example `export ANDROID_SDK_ROOT=/path/to/android-sdk/`)
|
||||
- `ANDROID_NDK_ROOT` (for example `export ANDROID_NDK_ROOT=/path/to/android-sdk/ndk/version`)
|
||||
|
||||
- Update your PATH environment variable so that it can access `nuget`, `msbuild` or `xabuild` (for linux):
|
||||
- On Linux:
|
||||
- add `xabuild` to your path: `export PATH=/path/to/xamarin.android-oss/bin/Release/bin/:$PATH`
|
||||
- On macOS:
|
||||
- you may similarly need to add `msbuild` & `nuget` to your PATH.
|
||||
|
||||
- Start the build:
|
||||
- This will use the Makefile at the root of the project (requires GNU make). To build everything (components & Keepass2Android APK) in a single command simply run:
|
||||
|
||||
```
|
||||
make
|
||||
```
|
||||
|
||||
- Otherwise, if you prefer to do step by step
|
||||
|
||||
1. Build argon2
|
||||
|
||||
```
|
||||
make native
|
||||
```
|
||||
|
||||
1. Build the other java components
|
||||
|
||||
```
|
||||
make java
|
||||
```
|
||||
|
||||
## Building Keepass2Android:
|
||||
|
||||
These are the basic steps to build Keepass2Android. You can also build Keepass2Android Offline. For this, configure the build by using the [Flavors](#Flavors).
|
||||
|
||||
### With Visual Studio
|
||||
|
||||
- On windows or on macOS open the src/KeePass.sln file with visual studio, and choose to build the project named 'keepass2android-app'
|
||||
|
||||
### Command Line
|
||||
|
||||
#### Windows, Macos & Linux
|
||||
to build the APK, simply run:
|
||||
|
||||
```
|
||||
make
|
||||
```
|
||||
|
||||
or to skip building the APK:
|
||||
|
||||
```
|
||||
make msbuild
|
||||
```
|
||||
|
||||
## Where is the APK ?
|
||||
The Apk can be installed on a device.
|
||||
It is located in `src/keepass2android/bin/*/*-Signed.apk`
|
||||
|
||||
If you build with Visual Studio, the APK is not produced automatically. You need to perform some extra step. See the documentation of Visual Studio on how to proceed.
|
||||
|
||||
## Flavors
|
||||
|
||||
Keepass2Android is distributed in two flavors.
|
||||
- Keepass2Android (aka `net`)
|
||||
- Keepass2Android Offline (aka `nonet`)
|
||||
|
||||
The flavor is set through a MSBuild Property named "`Flavor`". The possible values are '`Net`' and '`NoNet`'.
|
||||
|
||||
The value of the Flavor property is used in 2 projects:
|
||||
- `keepass2android-app` (in `src/keepass2android`)
|
||||
- `Kp2aBusinessLogic` (in `src/keepass2android`)
|
||||
|
||||
Its value is set inside the `*.csproj` file (XML format) of each project in the `Project`/`PropertyGroup`/`Flavor` node.
|
||||
By default its value is set to an empty string so that development is made with `AndroidManifest_debug.xml` on the '`net`' flavor.
|
||||
|
||||
This is the behaviour of the build system depending on the value of Flavor:
|
||||
| Flavor | What is built | `AndroidManifest.xml` used |
|
||||
| ----- | ----- | ----- |
|
||||
| `` (empty string): This is the default value. | Keepass2Android | `AndroidManifest_debug.xml` |
|
||||
| `Net` | Keepass2Android | `AndroidManifest_net.xml` |
|
||||
| `NoNet` | Keepass2Android Offline | `AndroidManifest_nonet.xml` |
|
||||
|
||||
### Select/Change flavor:
|
||||
|
||||
When building, by default, the flavor is not set. So the value used is the value of the Flavor property in *.csproj file. This should result on doing a build of the 'net' flavor.
|
||||
|
||||
You can force the Flavor by setting the Flavor property.
|
||||
|
||||
Proceed this way:
|
||||
|
||||
#### Command line
|
||||
|
||||
##### Windows, Macos & Linux
|
||||
|
||||
To force building 'net' with `make`, run:
|
||||
|
||||
```
|
||||
make Flavor=Net
|
||||
```
|
||||
|
||||
To build 'nonet' with `make`, run:
|
||||
|
||||
```
|
||||
make Flavor=NoNet
|
||||
```
|
||||
|
||||
##### MSBuild
|
||||
|
||||
To build with MSBuild directly on the command line, set the flavor with `-p:Flavor=value` argument. For example:
|
||||
|
||||
```
|
||||
MSBuild src/KeePass.sln ... -p:Flavor=NoNet
|
||||
```
|
||||
|
||||
#### Visual Studio
|
||||
When building with Visual Studio, edit the `*.csproj` file (XML format) and set the value in the `Project`/`PropertyGroup`/`Flavor` node. This is needed only for the projects that use the flavors.
|
||||
|
||||
**Note:** When switching between flavors, be sure to clean the previous build before.
|
||||
|
||||
## Makefile
|
||||
|
||||
It is possible to override the project's default 'Flavor' (Net, NoNet) and 'Configuration' (Release, Debug) by passing it as argument to `make`. See the header of the Makefile to see what can be done.
|
118
docs/Comparison-of-Keepass-apps-for-Android.md
Normal file
@@ -0,0 +1,118 @@
|
||||
<div class="wikidoc">
|
||||
<h1>Comparison of Keepass apps for Android</h1>
|
||||
<p>This page was created to give you a short overview of the features of Keepass2Android vs. Keepass2Android Offline. As Keepass2Android is based on Keepassdroid (by Brian Pellin), there are quite a few similarities here, as well, so we added Keepass2Android
|
||||
vs. Keepassdroid comparison as well. "Better" properties are highlighted in bold. The page was created in 12/2013. If any information is out of date, please leave a note in the comments section.</p>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>
|
||||
<h3>Keepass2Android</h3>
|
||||
</th>
|
||||
<th>
|
||||
<h3>Keepass2Android Offline</h3>
|
||||
</th>
|
||||
<th>
|
||||
<h3>Keepassdroid</h3>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Play Store link</strong></td>
|
||||
<td><a href="https://play.google.com/store/apps/details?id=keepass2android.keepass2android">https://play.google.com/store/apps/details?id=keepass2android.keepass2android</a></td>
|
||||
<td><a href="https://play.google.com/store/apps/details?id=keepass2android.keepass2android_nonet">https://play.google.com/store/apps/details?id=keepass2android.keepass2android_nonet</a></td>
|
||||
<td><a href="https://play.google.com/store/apps/details?id=com.android.keepass">https://play.google.com/store/apps/details?id=com.android.keepass</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Technology</strong></td>
|
||||
<td>Mono for Android, Java</td>
|
||||
<td>Mono for Android, Java</td>
|
||||
<td>Java</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Keepass 2.x (kdbx) support</strong></td>
|
||||
<td><strong>write and read</strong></td>
|
||||
<td><strong>write and read</strong></td>
|
||||
<td>read (write in beta)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Keepass 2.x feature support</strong></td>
|
||||
<td><strong>Viewing and editing of tags, attachments, additional fields, TAN support</strong></td>
|
||||
<td><strong>Viewing and editing of tags, attachments, additional fields, TAN support</strong></td>
|
||||
<td>Edit standard fields only, no display/edit of attachments</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Keepass 1.x (kdb) support</strong></td>
|
||||
<td>currently read-only</td>
|
||||
<td>currently read-only</td>
|
||||
<td><strong>yes</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Storage locations</strong></td>
|
||||
<td>SD Card,<strong> Cloud (Dropbox, Google Drive, OneDrive), Web (FTP/HTTP/HTTPS/WebDav), SFTP</strong></td>
|
||||
<td>SD Card</td>
|
||||
<td>SD Card</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>File choosers</strong></td>
|
||||
<td><strong>Internal or third party</strong></td>
|
||||
<td><strong>Internal or third party</strong></td>
|
||||
<td>Third party</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Required permissions</strong></td>
|
||||
<td>Internet, SD card, Manage accounts</td>
|
||||
<td><strong>SD card</strong></td>
|
||||
<td><strong>SD card</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Android 4.x style</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Database locking</strong></td>
|
||||
<td><strong>QuickUnlock</strong> or full lock</td>
|
||||
<td><strong>QuickUnlock</strong> or full lock</td>
|
||||
<td>Full lock only</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Browser integration</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Secure keyboard</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Database unlocking</strong></td>
|
||||
<td><strong>password, keyfile, One-Time-Passwords (supports Yubikey NEO with NFC), KeeChallenge</strong></td>
|
||||
<td><strong>password, keyfile, One-Time-Passwords (supports Yubikey NEO with NFC), KeeChallenge</strong></td>
|
||||
<td>password, keyfile</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Keepass plugin compatibility</strong></td>
|
||||
<td><strong>Twofish Cipher, KeeChallenge, TrayTOTP, KeeOTP</strong></td>
|
||||
<td><strong>Twofish Cipher, KeeChallenge, TrayTOTP, KeeOTP</strong></td>
|
||||
<td>Twofish Cipher</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Extensible with plugins</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Database export</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p> </p>
|
||||
</div><div class="ClearBoth"></div>
|
@@ -1 +1,125 @@
|
||||
This page has been moved to the [wiki](https://github.com/PhilippC/keepass2android/wiki/Documentation)
|
||||
**Note:** This is an incomplete and preliminary documentation. More documentation will be added as requests come in or when the app is more feature stable.
|
||||
If you want, I'd be happy if you contribute texts for this place!
|
||||
|
||||
If you think something is missing in the documentation, please create an issue at https://github.com/PhilippC/keepass2android/issues
|
||||
|
||||
# What you should know and think about
|
||||
If you store important information using Keepass2Android, you should know a little bit about what's going on:
|
||||
* Keepass2Android stores your password in an encrypted file. It is *your responsibility* to backup this file regularly and safely.
|
||||
* There is no way for anyone, including the app's author, to access the information stored in your password database without
|
||||
* having the database file
|
||||
* knowing the master password (and additional second factor if you chose one)
|
||||
This means that **if you forget the master password, your database is lost**! So make sure you remember the password and retain any second factor method (if one is used).
|
||||
* You might also want to think about:
|
||||
* What happens if I have an accident? Should any trusted person be able to access my database?
|
||||
* What happens if my phone gets lost or stolen? Do I know how to recover my database from a backup or the cloud?
|
||||
|
||||
|
||||
# Getting started
|
||||
|
||||
## Opening an existing database
|
||||
Many users are already using Keepass 2 on Windows and thus have their passwords stored in a Keepass database, typically a file with ending .kdbx. For opening such an existing database, there are two main options:
|
||||
* You can open the file directly if it is located on a webserver or in the cloud. Use "Open Database" on the startscreen. By default, files from the cloud or servers are cached in the application's cache directory after loading them once. This allows to access your files even when you're offline.
|
||||
* If you don't have your database stored on a webserver or in the cloud (or if you're using KP2A Offline) you need to copy your kdbx-Database to your phone. I suggest to use a sync tool like FolderSync. Such a tool copies your database to your local storage, so you always have it accessible. FolderSync can access your database if you have it on a network share or use any other common storage.
|
||||
|
||||
## Creating a new database
|
||||
Select "Create new database" from the start screen. Tap the integrated help icons for more information. Note that by default, the database is created as a local file. Please consider making backups regularly or select a location in the cloud.
|
||||
|
||||
## Getting passwords into password fields
|
||||
There are many ways how to enter the passwords from your database in the corresponding fields. By default, the clipboard as well as the KP2A keyboard are activated in the settings:
|
||||
* The KP2A keyboard is the recommended way because it's safe against clipboard loggers: Whenever you select an entry, the KP2A keyboard notification will appear in the notification bar. Click it to activate the keyboard. (The first time you do this, you are required to enable the keyboard in the system settings. This must be done by the user for Android security reasons.) As soon as it's activated, you can tap a field where you want to enter data from the selected entry. The KP2A keyboard will come up. Click the KP2A key (on the bottom left) to select whether you want to enter Username/password etc. When you're done, click the Keyboard key (next to the KP2A key) to switch back to your favorite keyboard.
|
||||
* You can enable the Keepass2Android Autofill service in the system's Autofill settings (Android 8+) which allows to fill data using Android's accessibility system. This works with many apps including Firefox browser but is not supported for Chrome (when writing this).
|
||||
* The clipboard based approach can be used as well: Pull the notification bar down and select "Copy username/password to clipboard". Then long-tap the field where you want to paste the data. A small "paste" button should come up. Note, however, that information in the clipboard can be monitored by all apps on your device and clearing the clipboard is not always possible.
|
||||
|
||||
These options can be used in different workflows:
|
||||
### Browser-based workflow
|
||||
If you are browsing the web and need to enter crendentials for a webpage, a simple and powerful workflow is to use the "Share URL" option from the browser's menu. Then select Keepass2Android (or KP2A Offline). Open your database (if it's not already opened) and select the entry you want to enter (if KP2A did not already select the appropriate entry). Use the built-in keyboard or the clipboard to enter the password.
|
||||
### Autofill service based workflow
|
||||
If you have enabled the autofill service and open a (supported) app with a password field, a dropdown appears. Select "Fill with Keepass2Android" to select the appropriate entry. When you return to the app, the password and user field should be filled already.
|
||||
### KP2A based workflow for websites
|
||||
Open KP2A, open your database, select your entry (in this step, the notification bar items should show up already). Now click the URL link of the entry to open a browser window with the website. Use one of the methods described above to enter the credentials.
|
||||
### KP2A Keyboard based workflow
|
||||
When you are in a text field, you can use the Android icon in the notification bar to switch to the KP2A keyboard. Hit the KP2A key to select an icon. After it's selected, hit the KP2A key again to enter the desired field.
|
||||
|
||||
## Creating a new account
|
||||
Assume you want to create an account on a website. If you do not have a database yet, see above. As soon as you have a database, you may proceed as follows:
|
||||
* Go to the website you want to create the account for
|
||||
* Select Share/Share URL from the browser's menu and tap "Keepass2Android"
|
||||
* Log in to your database (if it's not already unlocked)
|
||||
* You will see the search result screen with "No search results"
|
||||
* Tap "Create entry for URL"
|
||||
* Choose the desired group, then tap the "+"-button to add an entry.
|
||||
* Tap the "..." button next to the password field to launch the password generator, create your password and then select "Accept"
|
||||
* Enter a name for the entry
|
||||
* Enter the username you want to use for the entry
|
||||
* Tap "Save" on the top
|
||||
* You should see notifications like "Entry is available through KP2A keyboard" and/or "Copy username/password to clipboard". If not, view the new entry by clicking it.
|
||||
* Return back to the browser.
|
||||
* Use the notifications to enter your new credentials. See "Getting passwords into the password fields" for more details.
|
||||
* If the user name you entered is not available or valid, choose a different one but copy it to clipboard. After creating the account, don't forget to update the new entry.
|
||||
|
||||
# Keepass2Android vs Keepass2Android Offline vs Keepassdroid
|
||||
What's the difference between these apps? There is a short comparison on [Comparison of Keepass apps for Android](Comparison-of-Keepass-apps-for-Android.md) to help you pick the best for you!
|
||||
|
||||
# Advanced topics
|
||||
## YubiKey NEO support for One-Time-Passwords
|
||||
Please see the [How to use Keepass2Android with YubiKey NEO](How-to-use-Keepass2Android-with-YubiKey-NEO.md) page.
|
||||
|
||||
## Advanced usage of the Keepass2Android keyboard
|
||||
Please see the [Advanced usage of the Keepass2Android keyboard](Advanced-usage-of-the-Keepass2Android-keyboard.md) page.
|
||||
|
||||
## Using Keepass2Android like an authenticator app to generate Time-based One-Time-Passwords (TOTPs)
|
||||
Please see [Generating TOTPs with Keepass2Android](Generating-TOTPs.md)
|
||||
|
||||
# FAQ
|
||||
|
||||
## Should I use the KP2A keyboard for entering passwords?
|
||||
The KP2A keyboard is meant to quickly "paste" or "type" values from your database to any text fields by using the KP2A icon. The QUERTY keyboard is just for convenience (if you just have the KP2A keyboard activated and need to enter a few letters). However, every other (trustworthy) keyboard is ok as well to enter sensitive information: Keyboard's aren't unsafe in Android. Only the clipboard is. Thus, the KP2A keyboard allows to get information out of the database without using the clipboard.
|
||||
**You can use any keyboard when you enter the main database password**
|
||||
|
||||
## Is it safe to store my kdbx file in the cloud?
|
||||
While it may happen that someone gets access to your kdbx file in the cloud, there is still no need to worry: the purpose of encryption is to protect the data even in case someone gets the kdbx file! As long as you are using a safe master key, you're safe! [Key files](https://keepass.info/help/base/keys.html#keyfiles) can help with securing the database even more.
|
||||
|
||||
## Doesn't Keepass2Android create automatic backups?
|
||||
Yes and no. Yes: Keepass2Android stores the last successfully opened file as a read-only backup locally on the phone (unless you disable this is in the settings). This should make sure that even if the file gets destroyed during a save operation or gets deleted by accident, you should always have a version that can be opened. (Don't mix this up with the internal file cache which is not meant as a backup and can easily be overwritten even with a corrupt file. This internal file cache is meant for providing writable access even when the original file is not reachable, e.g. when you're offline.)
|
||||
No: The local backup has two shortcomings: It is only one backup and does not allow to revert to older versions. So if you deleted an entry from the database, it might be deleted in the local backup soon as well. The even more important shortcoming is that it is just a local backup. It won't help when your phone gets lost or broken. Please create additional backups on seperate storage!
|
||||
|
||||
## How do I backup the database?
|
||||
If you have stored your database on the cloud, you might rely on your cloud storage providers backups. Make sure they allow you to revert to older revisions in case the file gets corrupted for some reason.
|
||||
If you are working with a local database file, make sure you create regular backups. I suggest you have an aumotated mechanism, e.g. with FolderSync (Lite) which can copy local files from your device to other locations, e.g. your PC in a local network. You can also use USB or tools like MyPhoneExploror to transfer data to your PC. Or, you use a removable storage like an SD card which you keep in a safe place after making the backup.
|
||||
In all cases, you need to verify that your backup is readable! It's even best to test this on another device (e.g. a PC), so you simulate the case that you may lose your phone.
|
||||
|
||||
## I can open my database with fingerprint, but don't remember my master password!
|
||||
It's time for action! As soon as possible, select Settings - Database - Export and choose unencrypted XML (don't put this on the cloud but on a local file). Transfer this file to a PC and import it to a new kdbx file, e.g. with Keepass2. Choose a new master password and make sure you don't forget this password!
|
||||
|
||||
## How can I transfer data from one device to another?
|
||||
* If you are about to get a new Android device, you should make sure you're not losing your passwords in the transition! The first thing you need to make sure is that you can access your .kdbx file (which stores the passwords) on the new device. If it is already stored in the cloud, you only need to make sure you know how to setup the cloud storage on the new device (it might require a password, so make sure you have access to that!).
|
||||
* If the .kdbx-file is stored locally on the old device, make sure you have an up-to-date backup (see above). You can then transfer that backup copy to the new device. (Note: transferring via USB causes data corruption in some cases, use MyPhoneExplorer or similar tools to be sure this does not happen.)
|
||||
* If you are securing your password database with a keyfile, also transfer this key file to the new device.
|
||||
* If you are opening your database with a fingerprint, make sure you also know the master password because fingerprint will not be available immediately on the new device.
|
||||
|
||||
## Why is Keepass2Android's apk so big?
|
||||
Please see [Keepass2Android Apk](Keepass2Android-Apk.md) for more information.
|
||||
|
||||
## I get a message "File is trashed" when reading or writing a file on Google Drive
|
||||
This happens because ocaml-fuse (I guess you are on Linux and use that) moves files to trash and then creates a new one instead of correctly updating the file on Google Drive (each file has a unique ID which Keepass2Android uses). Fortunately, this was fixed: https://github.com/astrada/google-drive-ocamlfuse/issues/494. After activating this option, please select "Change database" in KP2A, tap ,"Open file" and browse to the file on Google Drive again. After that, the message should no longer pop up.
|
||||
|
||||
## I get a message "The name must not be empty: null" when opening from Google Drive
|
||||
Please follow these steps:
|
||||
|
||||
* select "Change database" on the password screen, then "Open database" and browse to your file again
|
||||
* go to Android app settings and disable all permissions for the KP2A app. Then try again to open the database file.
|
||||
* reboot the device
|
||||
|
||||
(Before running the following steps, make sure you don't have local changes in your database which have not been synchronized with Google Drive (this can happen if you worked offline). If you have, please open the database from the local cache and go to settings - database settings - export database and make a backup copy of the data.)
|
||||
|
||||
* clear KP2A's app cache in the Android settings
|
||||
* uninstall & reinstall
|
||||
|
||||
One of these has helped all users so far, but unfortunately it's not totally clear to me why different steps are required (or nothing for most users).
|
||||
|
||||
# For developers
|
||||
If you are interested in adding new features, you have two options:
|
||||
Either your features can be implemented as a plug-in. Please see [How to create a plug-in?](How-to-create-a-plug-in_.md) for more information. Or you add the features directly in the source code of the projects and create a pull request.
|
||||
|
||||
If you want to build Keepass2Android, check the [build guide](Build.readme.md).
|
||||
|
@@ -1 +1,53 @@
|
||||
This page has been moved to the [wiki](https://github.com/PhilippC/keepass2android/wiki/Generating-TOTPs)
|
||||
|
||||
## TOTP in brief
|
||||
TOTP stands for [Time-based One-Time Password algorithm](https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm) which is one of the most common way proposed by websites to do a [two-factor authentication (2FA)](https://en.wikipedia.org/wiki/Multi-factor_authentication).
|
||||
|
||||
On these websites, this option will often be mentioned in the 2FA configuration menu as things like "_use code generated by an application_", "_use [Google] Authenticator app_".
|
||||
|
||||
You're prompted to scan a QR code with the app, which essentially contains a code called "_seed_", usually with a form like "_AZER TYUI OPQS DFGH JKLM_", used to generate TOTPs. The seed can be also directly copied if there is no scanning option on the app.
|
||||
|
||||
Most common apps:
|
||||
|
||||
- Google Authenticator
|
||||
- Authy
|
||||
- Microsoft Authenticator
|
||||
- FreeOTP
|
||||
- LastPass Authenticator
|
||||
|
||||
## TOTP in KeePass and benefits
|
||||
In KeePass (by Dominik Reichl) there is are several ways to enable this Authenticator app ability:
|
||||
|
||||
- built-in TOTP support: https://keepass.info/help/base/placeholders.html#otp
|
||||
- [KeePassOTP plugin](https://keepass.info/plugins.html#kpotp)
|
||||
- [KeeOtp plugin](https://keepass.info/plugins.html#keeotp)
|
||||
- [KeeTrayTOTP plugin](https://keepass.info/plugins.html#keetraytotp) (note the name "_TrayTOTP_" on this one for later)
|
||||
|
||||
KeePassXC also supports TOTP: https://keepassxc.org/docs/KeePassXC_UserGuide#_adding_totp_to_an_entry
|
||||
|
||||
The greatest benefits are:
|
||||
|
||||
- the seed stays available contrary to the above apps (for which it's more or less hard to backup/restore/switch with another app)
|
||||
- TOTPs are available wherever the KeePass database is available. But conceptually it's not really 2FA anymore (all things are stored in the same place).
|
||||
|
||||
The different implementations use different ways of storing the TOTP seed (or secret, or key) and optional settings (e.g. the length of the TOTP to generate) within an entry inside the kdbx database. Keepass2Android attempts to be able to read the different formats, but can only write one:
|
||||
|
||||
## TOTP in Keepass2Android
|
||||
|
||||
If you use any of the tools mentioned above, you can set up TOTP entries with them. Keepass2Android can read those entries and generate TOTPs if any of the following styles are used:
|
||||
|
||||
* Keepass2 style: used when there are TimeOtp-Secret(-XXX) fields in the entry
|
||||
* KeeOtpPlugin style: used when there is an otp field containing a query string in the form of key=abc&step=X&size=Y (step and size are optional)
|
||||
* KeeWebOtp/Key Uri Format style: used when entry contains a URL starting with otpauth://totp/, e.g. otpauth://totp/?secret=abc (https://github.com/google/google-authenticator/wiki/Key-Uri-Format)
|
||||
* KeeTrayTotp style:
|
||||
* requires a non-empty seed field (default key is "TOTP seed", can be changed in KP2A settings), value is base32 encoded data
|
||||
* requires a non-empty settings field (default key is "TOTP Settings", can be changed as well), value is expected to be a csv-separated array with [Duration];Length(;TimeCorrectionURL). Length is either an integer value or "S" to indicate Steam encoding
|
||||
|
||||
In order to view the generated TOTP code in KP2A, open the corresponding entry. You can then
|
||||
* use a dynamically generated field called "_TOTP_" containing the TOTP or
|
||||
* use the "Copy TOTP" button on the system notification for the selected entry or
|
||||
* switch to the KP2A keyboard and use the TOTP button to insert the TOTP value into the target app or browser
|
||||
|
||||
If you want to configure an entry to contain the TOTP fields, it is suggested to enter edit mode for the entry. Then click the "Configure TOTP" button. You can either enter the data manually or scan a QR code with the information.
|
||||
|
||||
### Spaces in otp field
|
||||
Make sure that the URI doesn't contain spaces, otherwise KeePass2Android will fail to generate TOTPs as a space is an invalid character. If your URIs have spaces, check [this comment](https://github.com/PhilippC/keepass2android/issues/1248#issuecomment-628035961)._
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 20 KiB |
BIN
docs/How to use Keepass2Android with YubiKey NEO_image_2.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
docs/How to use Keepass2Android with YubiKey NEO_image_thumb.png
Normal file
After Width: | Height: | Size: 87 KiB |
157
docs/How-to-create-a-plug-in_.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# How to create a plug-in or connect from your app
|
||||
|
||||
Creating a plug-in for Keepass2Android or enabling your app to query credentials from Keepass2Android is pretty simple. Please follow the steps below to get started. In case you have any questions, please contact me.
|
||||
|
||||
## Preparations
|
||||
First check out the source code and import the Keepass2AndroidPluginSDK from [https://github.com/PhilippC/keepass2android/tree/master/src/java/Keepass2AndroidPluginSDK2](https://github.com/PhilippC/keepass2android/tree/master/src/java/Keepass2AndroidPluginSDK2/) into your workspace. You should be able to build this library project.
|
||||
|
||||
Now add a reference to the PluginSDK library from your existing app or add a new plug-in app and then add the reference.
|
||||
|
||||
## Authorization
|
||||
|
||||
Keepass2Android stores very sensitive user data and therefore implements a plug-in authorization scheme based on broadcasts sent between the plug-in and the host app (=Keepass2Android or Keepass2Android Offline). Before your app/plug-in gets any information from KP2A, the user will have to grant your app/plug-in access to KP2A. As not every app/plug-in requires access to all information, you must specify which scopes are required by your app. The implemented scopes can be found in [https://github.com/PhilippC/keepass2android/tree/master/src/java/Keepass2AndroidPluginSDK2/src/keepass2android/pluginsdk/Strings.java](https://github.com/PhilippC/keepass2android/tree/master/src/java/Keepass2AndroidPluginSDK2/src/keepass2android/pluginsdk/Strings.java).
|
||||
|
||||
To tell Kp2a that you're a plug-in, you need to add a simple BroadcastReceiver like this:
|
||||
|
||||
```java
|
||||
|
||||
public class PluginAAccessReceiver extends keepass2android.pluginsdk.PluginAccessBroadcastReceiver
|
||||
{
|
||||
|
||||
@Override
|
||||
public ArrayList<String> getScopes() {
|
||||
ArrayList<String> scopes = new ArrayList<String>();
|
||||
scopes.add(Strings.SCOPE_DATABASE_ACTIONS);
|
||||
scopes.add(Strings.SCOPE_CURRENT_ENTRY);
|
||||
return scopes;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
Here, you define the method getScopes where the list of scopes is created which must be granted by the user. The actual logic of the authorization process is implemented by the base class in the sdk.
|
||||
|
||||
In order to make this broadcast receiver visible to KP2A, add the following lines (probably with the name adapted to your class name) in the AndroidManifest.xml:
|
||||
|
||||
```xml
|
||||
<receiver android:name="PluginAAccessReceiver" android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="keepass2android.ACTION_TRIGGER_REQUEST_ACCESS" />
|
||||
<action android:name="keepass2android.ACTION_RECEIVE_ACCESS" />
|
||||
<action android:name="keepass2android.ACTION_REVOKE_ACCESS" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
```
|
||||
|
||||
Please also add a few strings in your resource files (e.g. strings.xml) with the following keys:
|
||||
|
||||
```xml
|
||||
<string name="kp2aplugin_title">The Great PluginA</string>
|
||||
<string name="kp2aplugin_shortdesc">Test plugin to demonstrate how plugins work</string>
|
||||
<string name="kp2aplugin_author">[your name here](your-name-here)</string>
|
||||
```
|
||||
These strings will be displayed to the user when KP2A asks if access should be granted.
|
||||
|
||||
## Modifying the entry view
|
||||
You can add menu options for the full entry or for individual fields of the entry when displayed to the user. This is done, for example, by the QR plugin ([https://play.google.com/store/apps/details?id=keepass2android.plugin.qr](https://play.google.com/store/apps/details?id=keepass2android.plugin.qr)).
|
||||
In addition, it is even possible to add new fields or modify existing fields. Please see the sample plugin "PluginA" for a simple example on how to do this:
|
||||
[https://github.com/PhilippC/keepass2android-sampleplugin/blob/main/src/keepass2android/plugina/PluginAAccessReceiver.java](https://github.com/PhilippC/keepass2android-sampleplugin/blob/main/src/keepass2android/plugina/PluginAAccessReceiver.java)
|
||||
|
||||
## Querying credentials
|
||||
KP2A 0.9.4 adds a great opportunity for third party apps: Instead of prompting the user to enter credentials or a passphrase, the app should try to get the data from KP2A if it is installed: If the user grants (or previously granted) access for the app, KP2A will automatically retrieve the matching entry. User action is only required if the KP2A database is locked (user will usually unlock it with the short QuickUnlock code) or if no matching entry is found (user can then create a new entry or select an existing one. in the latter case KP2A will offer to add entry information so that the entry will be found automatically next time).
|
||||
|
||||
To implement this, simply follow the steps descrIbed above in the sections Preparation and Authorization. Then, wherever appropriate in your app, do something like this:
|
||||
|
||||
```java
|
||||
try
|
||||
{
|
||||
PlaceholderFragment.this.startActivityForResult(
|
||||
Kp2aControl.getQueryEntryIntentForOwnPackage(),
|
||||
1);
|
||||
}
|
||||
catch (ActivityNotFoundException e)
|
||||
{
|
||||
Toast.makeText(
|
||||
PlaceholderFragment.this.getActivity(),
|
||||
"no KP2A host app found",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
(of course you can use `PacketManager` to check if the intent can be started instead of catching the `Exception`).
|
||||
|
||||
Instead of querying credentials associated with your own app, you might want to query other credentials as well. instead of `KpControl.getQueryEntryIntentForOwnPackage()` use
|
||||
`Kp2aControl.getQueryEntryIntent("google.com")`
|
||||
This requires \{"SCOPE_QUERY_CREDENTIALS (whereas getQueryEntryIntentForOwnPackage() requires SCOPE_QUERY_CREDENTIALS_FOR_OWN_PACKAGE)"\}.
|
||||
|
||||
The credential data can be retrieved in onActivityResult():
|
||||
|
||||
```java
|
||||
if ((requestCode == 1) //queryEntry for own package
|
||||
&& (resultCode == RESULT_OK)) // ensure user granted access and selected something
|
||||
{
|
||||
HashMap<String, String> credentials = Kp2aControl.getEntryFieldsFromIntent(data);
|
||||
if (!credentials.isEmpty())
|
||||
{
|
||||
//here we go!
|
||||
Toast.makeText(
|
||||
getActivity(),
|
||||
"retrieved credenitals! Username="+credentials.get(KeepassDefs.UserNameField),
|
||||
Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Note that you get access to all strings (Title, Username, Password, URL, Notes + any user defined strings) in the entry. This may be in intersting in combination with the following section:
|
||||
|
||||
## Storing data in KP2A
|
||||
If you allow the user to set up an account in your app or create a password, e.g. for encryption, please add an option to store this data in the Keepass2Android database, as this will lead to great workflows for the user. It's as simple as
|
||||
|
||||
```java
|
||||
try {
|
||||
HashMap<String, String> fields = new HashMap<String, String>();
|
||||
//standard fields
|
||||
fields.put(KeepassDefs.TitleField, "plugin A");
|
||||
fields.put(KeepassDefs.UserNameField, "John Doe");
|
||||
fields.put(KeepassDefs.PasswordField, "top secret");
|
||||
//associate entry with our app. If we would require the URL field for a web URL,
|
||||
//this string could be added in any other (e.g. a custom) field
|
||||
fields.put(KeepassDefs.UrlField, "androidapp://"+getActivity().getPackageName());
|
||||
//custom field:
|
||||
fields.put(PLUGIN_A_PASSPHRASE, "some long text");
|
||||
//mark custom field as protected (i.e. display masked, enable memory protection in Keepass2)
|
||||
ArrayList<String> protectedFields = new ArrayList<String>();
|
||||
protectedFields.add(PLUGIN_A_PASSPHRASE);
|
||||
|
||||
//add to KP2A
|
||||
PlaceholderFragment.this.startActivityForResult(
|
||||
Kp2aControl.getAddEntryIntent(fields, protectedFields),
|
||||
2);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Toast.makeText(
|
||||
PlaceholderFragment.this.getActivity(),
|
||||
"no KP2A host app found",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
```
|
||||
|
||||
Note that this does not even require access authorization because the user will actively save the entry anyways (after selecting the group where to create it.)
|
||||
|
||||
## Get information about database actions
|
||||
With {"SCOPE_DATABASE_ACTIONS"}, you will be informed when the user opens, closes, locks or unlocks the database including the file name information.
|
||||
|
||||
PluginA uses this to simply display a toast message in its ActionReceiver:
|
||||
|
||||
```java
|
||||
@Override
|
||||
protected void dbAction(DatabaseAction db) {
|
||||
|
||||
Log.d("PluginA", db.getAction() + " in file " + db.getFileDisplayName() + " ("+db.getFilePath()+")");
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Sample plugin
|
||||
Most example code from above is taken from the simple sample plugin "PluginA" as can be found on [https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/](https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/)
|
31
docs/How-to-use-Keepass2Android-with-YubiKey-NEO.md
Normal file
@@ -0,0 +1,31 @@
|
||||
<div class="wikidoc">
|
||||
<h1>How to use Keepass2Android with YubiKey NEO</h1>
|
||||
<p>Please refer to the documentation on the Keepass website (<a href="http://keepass.info/help/kb/yubikey.html">http://keepass.info/help/kb/yubikey.html</a>) or the Yubico website (<a href="http://www.yubico.com/applications/password-management/consumer/keepass/">http://www.yubico.com/applications/password-management/consumer/keepass/</a>)
|
||||
on how to set up a Keepass 2 database with Yubikey/OTP protection.<br>
|
||||
<br>
|
||||
After successful setup you should have the database file, e.g. yubi.kdbx, and the OTP auxiliary file, e.g. yubi.otp.xml, both in the same folder.<br>
|
||||
<a href="How to use Keepass2Android with YubiKey NEO_OTPAuxFile_2.png"><img title="OTPAuxFile" src="How to use Keepass2Android with YubiKey NEO_OTPAuxFile_thumb.png" alt="OTPAuxFile" width="513" height="40" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
|
||||
<p>Make sure you make <strong>both files</strong> available to Keepass2Android, e.g. by placing them both in your Dropbox.</p>
|
||||
<p>Now you should check your NDEF setup of the Yubikey NEO. Therefore, go to the Tools menu in the Yubico Personalization Utility. Select the same slot as used for OTPs with Keepass 2. The default setting for NDEF type and payload should work. If you experience
|
||||
problems, you may use the configuration as shown in this screenshot or simply press the “Reset” button:</p>
|
||||
<p><a href="How to use Keepass2Android with YubiKey NEO_image_2.png"><img title="image" src="How to use Keepass2Android with YubiKey NEO_image_thumb.png" alt="image" width="760" height="622" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
|
||||
<p><br>
|
||||
<br>
|
||||
In Keepass2Android, select "Open file" and locate your database file, e.g. yubi.kdbx.<br>
|
||||
<br>
|
||||
In the password screen under "Select master key type" select "Password + OTP".</p>
|
||||
<p><a href="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-50_2.png"><img title="Screenshot_2013-12-13-06-38-50" src="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-50_thumb.png" alt="Screenshot_2013-12-13-06-38-50" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
|
||||
<p>Click "Load auxiliary OTP file". This is required to load the information how many OTPs must be entered. As loading the file might require user action in some cases, this is not performed automatically.<br>
|
||||
<a href="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-12_2.png"><img title="Screenshot_2013-12-13-06-38-12" src="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-12_thumb.png" alt="Screenshot_2013-12-13-06-38-12" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a><br>
|
||||
After loading the OTP auxiliary file, you should see a few text fields for entering the OTPs. Now swipe your YubiKey NEO at the back of your Android device. If you have multiple apps which can handle NFC actions, you might be prompted to select which app to
|
||||
use. Select Keepass2Android in this case. Swipe your YubiKey again until all OTP fields are filled. Note: You don't need to select the next text field, this is done automatically!<br>
|
||||
<a href="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-36_2.png"><img title="Screenshot_2013-12-13-06-38-36" src="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-38-36_thumb.png" alt="Screenshot_2013-12-13-06-38-36" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a><br>
|
||||
Don't forget to also enter your password and click OK. You will see the “Saving auxiliary OTP file…” dialog. Note that there is some encryption envolved which is probably fast on your PC but might take some time on your mobile device. You
|
||||
can reduce the look-ahead window length to speed this up.<br>
|
||||
<a href="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-39-47_2.png"><img title="Screenshot_2013-12-13-06-39-47" src="How to use Keepass2Android with YubiKey NEO_Screenshot_2013-12-13-06-39-47_thumb.png" alt="Screenshot_2013-12-13-06-39-47" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
|
||||
<h2> </h2>
|
||||
<h2>A note about offline access</h2>
|
||||
<p>If your database is stored in the cloud or on the web, you can still access it if you have enabled file caching (which is on by default). With OTPs, this becomes a little bit more complicated: If you repeatedly open your datbase while being offline, the
|
||||
OTP counter stored on the Yubikey will be increased. Don’t forget to synchronize the database (which will also synchronize the OTP auxiliary file) as soon as possible to avoid problems with accessing your database on other devices! If you often need
|
||||
to open the database while you’re offline, consider increasing the look-ahead window length!</p>
|
||||
</div><div class="ClearBoth"></div>
|
25
docs/Keepass2Android-Apk.md
Normal file
@@ -0,0 +1,25 @@
|
||||
Keepass2Android's apk is pretty big, e.g. when comparing to Keepassdroid. The main difference is that Keepass2Android is built on Mono for Android. Mono is an open-source implementation of the Microsoft .Net Framework (installed on pretty much every Windows PC). On Windows, the .net framework requires several hundred MB (but only once, not for every application). On Android devices, Mono is not installed globally. Instead, it is packaged into every app. The more features from Mono are required, the bigger the package becomes.
|
||||
|
||||
Here's a list of what is contained in the Keepass2Android 0.9.1 application package:
|
||||
|
||||
```
|
||||
Mono for Android
|
||||
.net dlls 5.0 MB
|
||||
Runtime 2.5 MB
|
||||
Google libraries 0.8 MB
|
||||
(for Drive support)
|
||||
|
||||
Resources Strings, Icons.. 2.1 MB
|
||||
Password Font 0.2 MB
|
||||
Java Code including Dropbox 1.1 MB
|
||||
GDrive, SkyDrive
|
||||
libraries
|
||||
|
||||
Keepass library 0.2 MB
|
||||
Keepass2Android Code 0.3 MB
|
||||
Java/Mono bindings 0.5 MB
|
||||
|
||||
rest 0.3 MB
|
||||
|
||||
TOTAL 13 MB
|
||||
```
|
20
docs/OreoAutoFill.md
Normal file
@@ -0,0 +1,20 @@
|
||||
Google has introduced the Android Autofill interface in Android 8. Keepass2Android supports this interface. In most Android apps and all Autofill-enabled browsers, this is the most convenient way of entering passwords. As soon as you focus a field, you will see a popup "Fill with Keepass2Android".
|
||||
|
||||
<img src="autofill-facebook.png" />
|
||||
|
||||
After clicking this popup, you can unlock your KP2A database. If automatic look up succeeds, KP2A will close automatically, if not you are prompted to select the entry you want to auto-fill. When returning to the target app, the fields should be filled automatically already.
|
||||
|
||||
As of January 2018, the following browsers are known to have Android Autofill support:
|
||||
|
||||
* Firefox Focus / Firefox Klar
|
||||
* Opera Mini
|
||||
|
||||
These browsers do not (yet) have autofill support:
|
||||
|
||||
* Google Chrome
|
||||
* Firefox for Android ([bugzilla entry](https://bugzilla.mozilla.org/show_bug.cgi?id=1352011))
|
||||
* Brave-Browser
|
||||
* Opera
|
||||
|
||||
Please use the Share-URL-feature and the built-in KP2A keyboard for these browsers.
|
||||
|
@@ -1 +1,25 @@
|
||||
This page has been moved to the [wiki](https://github.com/PhilippC/keepass2android/wiki/Privacy-Policy)
|
||||
# Who we are
|
||||
|
||||
Philipp Crocoll
|
||||
Wallonenstr. 4
|
||||
76297 Stutensee
|
||||
Germany
|
||||
|
||||
is the author of Keepass2Android and Keepass2Android Offline.
|
||||
|
||||
# What data is collected?
|
||||
|
||||
The contents of your password database is yours and is never collected by us. Keepass2Android stores this data on a location chosen by the user and encrypted in the Keepass database format. The app author does not have any access, neither to the files nor the contents. Depending on the user's choice of the storage location, the files may be stored on third-party servers like Dropbox or Google Drive.
|
||||
|
||||
Keepass2Android does not collect personal identifiable information. For debugging purposes, the user may activate creating a debug log. This collects data inside the app and is not accessible to any other app nor the author of the app, unless the user explicitly sends the debug log to the author. Debug logs usually do not contain personal identifiable information, except if such information is part of file or folder names. Debug logs will not be shared with third parties unless explicitly authorized by the sender.
|
||||
|
||||
# What Android permissions are required?
|
||||
|
||||
* **Internet** (Keepass2Android regular only): Required to allow the user to read/store password databases or key files on remote locations, e.g. Dropbox or via WebDav.
|
||||
* **Contacts/Accounts** (Keepass2Android regular only): Required by the Google Drive SDK. If you want to access files on Google Drive, you are prompted to select one of the Google Accounts on your phone to use. The permission is required to query the list of Google accounts on the device. Keepass2Android does not access your personal contacts.
|
||||
* **Storage**: Required to allow the user to read/store password databases or key files on the device locally.
|
||||
* **Fingerprint/Biometric**: Required if you want to use biometric unlock.
|
||||
* **Vibrate**: Required by the built-in keyboard (vibrate on key press)
|
||||
* **Camera**: Required for scanning OTP QR Codes
|
||||
* **Foreground service**: Required to keep the app alive for QuickUnlock (so you don't need to enter your full master password repeatedly)
|
||||
|
||||
|
@@ -2,8 +2,8 @@
|
||||
|
||||
|
||||
# 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", secured with a strong key.
|
||||
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 2.x and KeepassXC on PCs as well as many other KeePass ports for a variety of platforms.
|
||||
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 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).
|
||||
@@ -17,7 +17,11 @@ Beta-releases can be obtained by opting in to the [Beta testing channel](https:/
|
||||
* [Make a donation](http://philipp.crocoll.net/donate.php)
|
||||
|
||||
# How do I learn more?
|
||||
Please see the [wiki](https://github.com/PhilippC/keepass2android/wiki/Documentation) for further information.
|
||||
Please see the [documentation](Documentation.md).
|
||||
|
||||
# How do I build the project?
|
||||
If you want to build Keepass2Android, check the [build guide](Build.readme.md).
|
||||
|
||||
The project homepage is https://philipp.crocoll.net/keepass2android/index.php
|
||||
|
||||
<img src="https://github.com/PhilippC/keepass2android/actions/workflows/build.yml/badge.svg" alt="build status" /> [Build status](https://github.com/PhilippC/keepass2android/actions)
|
||||
|
72
docs/SFTP-Credentials.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# SFTP Open/Create Database Credentials Documentation
|
||||
|
||||
## Basic Settings
|
||||
* **Host** -- the hostname or IP address of the SFTP server to connect to
|
||||
* **Port** -- the listening TCP port of the SFTP server to connect to (default: 22)
|
||||
* **Username** -- the user/account name on the SFTP server that has access to the database
|
||||
* **Initial directory** -- The path on the SFTP server that will be used as a starting point when choosing the remote database file
|
||||
|
||||
### Authentication Modes
|
||||
|
||||
#### Password
|
||||
Authenticate using a password
|
||||
|
||||
* **Password** -- the password associated with **username** used to log into the SFTP server
|
||||
|
||||
#### K2A Private/Public Key
|
||||
Authenticate using a private/public key pair that is generated internally by KP2A
|
||||
|
||||
* **SEND PUBLIC KEY...** -- Opens a standard Android "Share" screen containing the KP2A public key content. This allows for the public key to be sent via email, SMS, etc. This public key will need to be added to the SFTP server's user's "authorized keys" to allow private/public key authentication.
|
||||
|
||||
#### Custom Private Key
|
||||
Authenticate using an existing private/public key pair. Use this option instead of *K2A Private/Public Key* if you wish to use a key pair that is already set up for this **username** on the SFTP server.
|
||||
|
||||
* **Selected private key** -- a combo-box containing a list of custom private keys that KP2A knows about, and a special `[Add new...]` option.
|
||||
##### Add A New Private Key
|
||||
* Select `[Add new...]`
|
||||
* Enter a name for the new key in **New key name**
|
||||
* Enter the private key contents (text) into **New key content**. **TIP:** The easiest way to accomplish this is to open the private key file in a text editor on the device, **Select All**, **Copy** to the clipboard, and paste it into **New key content**.
|
||||
* Tap **SAVE PRIVATE KEY** to add the new key to the known list.
|
||||
|
||||
##### Use An Existing Private Key
|
||||
* To use a private key that has already been imported into KP2A, simply select it from the list of keys.
|
||||
|
||||
##### Remove An Existing Key
|
||||
* To remove a private that has been imported into KP2A, select it from the list and tap **DELETE PRIVATE KEY**.
|
||||
|
||||
A **key passphrase** can be supplied (if the key pair requires it)
|
||||
|
||||
## Advanced Settings
|
||||
* **Connection timeout seconds** -- the number of seconds to wait for a connection to the server before giving up and considering the server as unavailable/unreachable
|
||||
|
||||
### Key Algorithm Manipulation
|
||||
**NOTE: It is very rare that these fields need to be (or should be) specified. Use at your own risk!**
|
||||
|
||||
* **Key Exchange (KEX) Algorithm(s)** -- Explicitly set or modify the ordered list of Key Exchange algorithms that the SSH/SFTP client library will try to use
|
||||
* **Server Host Key Algorithm(s)** -- Explicitly set or modify the ordered list of Server Host Key algorithms that the SSH/SFTP client library will try to use
|
||||
|
||||
#### How It Works
|
||||
The SSH/SFTP client has a pre-defined ordered list of algorithm names that it will use to negotiate with the server to handle key exchange. In rare cases there are compatibility issues where Android OS has not properly implemented full support for algorithms listed. This can result in a connection failure, even if there is a suitable algorithm available (of lesser priority in the list).
|
||||
|
||||
The fields listed above allow these lists to be manipulated in the following ways to overcome/workaround such problems. The value is a comma-separated list of "algorithm spec" entries. Specs can be one of:
|
||||
|
||||
* Direct replacement of values -- Ex: `primary_alg,secondary_alg`
|
||||
* Prepend to values -- Ex: `+try_first_alg`
|
||||
* Append to values -- Ex: `try_last_alg+`
|
||||
* Remove a specific value -- Ex: `-bad_alg`
|
||||
* Remove values matching prefix -- Ex: `-bad_starting_with*`
|
||||
* Remove values matching suffix -- Ex: `-*bad_ending_with`
|
||||
* Remove values matching substring -- Ex: `-*bad_middle*`
|
||||
* Remove values matching prefix and suffix -- Ex: `-alg_begin*end`
|
||||
|
||||
For example, assume the system's KEX algorithm list is:
|
||||
`ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256`
|
||||
|
||||
These are various outcomes (user KEX field -> result):
|
||||
|
||||
* Prefix removal: `-ec*` --> `diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256`
|
||||
* Suffix removal, appending: `-*256,+first_alg,almost_last_alg+,last_alg+` --> `first_alg,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,almost_last_alg,last_alg`
|
||||
* Direct replacement: `first_alg,middle_alg,last_alg` --> `first_alg,middle_alg,last_alg`
|
||||
|
||||
## Selecting A Database
|
||||
Once all applicable fields have been entered and/or options selected, tapping **OK** will attempt to connect to the SFTP server. First time connections may pop up a dialog window asking to accept the host's authenticity (tap **yes** if the host is trusted), as well as potentially creating a new `known_hosts` file (tap **yes** to do so). If the connection is successful, a remote file browser screen will open. Navigate and select the Keepass database to open.
|
1
docs/_config.yml
Normal file
@@ -0,0 +1 @@
|
||||
theme: jekyll-theme-slate
|
BIN
docs/autofill-facebook.png
Normal file
After Width: | Height: | Size: 69 KiB |
@@ -1,48 +0,0 @@
|
||||
Additions allow you to add arbitrary C# to the generated classes
|
||||
before they are compiled. This can be helpful for providing convenience
|
||||
methods or adding pure C# classes.
|
||||
|
||||
== Adding Methods to Generated Classes ==
|
||||
|
||||
Let's say the library being bound has a Rectangle class with a constructor
|
||||
that takes an x and y position, and a width and length size. It will look like
|
||||
this:
|
||||
|
||||
public partial class Rectangle
|
||||
{
|
||||
public Rectangle (int x, int y, int width, int height)
|
||||
{
|
||||
// JNI bindings
|
||||
}
|
||||
}
|
||||
|
||||
Imagine we want to add a constructor to this class that takes a Point and
|
||||
Size structure instead of 4 ints. We can add a new file called Rectangle.cs
|
||||
with a partial class containing our new method:
|
||||
|
||||
public partial class Rectangle
|
||||
{
|
||||
public Rectangle (Point location, Size size) :
|
||||
this (location.X, location.Y, size.Width, size.Height)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
At compile time, the additions class will be added to the generated class
|
||||
and the final assembly will a Rectangle class with both constructors.
|
||||
|
||||
|
||||
== Adding C# Classes ==
|
||||
|
||||
Another thing that can be done is adding fully C# managed classes to the
|
||||
generated library. In the above example, let's assume that there isn't a
|
||||
Point class available in Java or our library. The one we create doesn't need
|
||||
to interact with Java, so we'll create it like a normal class in C#.
|
||||
|
||||
By adding a Point.cs file with this class, it will end up in the binding library:
|
||||
|
||||
public class Point
|
||||
{
|
||||
public int X { get; set; }
|
||||
public int Y { get; set; }
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0-android</TargetFramework>
|
||||
<SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@@ -1,14 +0,0 @@
|
||||
<enum-field-mappings>
|
||||
<!--
|
||||
This example converts the constants Fragment_id, Fragment_name,
|
||||
and Fragment_tag from android.support.v4.app.FragmentActivity.FragmentTag
|
||||
to an enum called Android.Support.V4.App.FragmentTagType with values
|
||||
Id, Name, and Tag.
|
||||
|
||||
<mapping jni-class="android/support/v4/app/FragmentActivity$FragmentTag" clr-enum-type="Android.Support.V4.App.FragmentTagType">
|
||||
<field jni-name="Fragment_name" clr-name="Name" value="0" />
|
||||
<field jni-name="Fragment_id" clr-name="Id" value="1" />
|
||||
<field jni-name="Fragment_tag" clr-name="Tag" value="2" />
|
||||
</mapping>
|
||||
-->
|
||||
</enum-field-mappings>
|
@@ -1,13 +0,0 @@
|
||||
<enum-method-mappings>
|
||||
<!--
|
||||
This example changes the Java method:
|
||||
android.support.v4.app.Fragment.SavedState.writeToParcel (int flags)
|
||||
to be:
|
||||
android.support.v4.app.Fragment.SavedState.writeToParcel (Android.OS.ParcelableWriteFlags flags)
|
||||
when bound in C#.
|
||||
|
||||
<mapping jni-class="android/support/v4/app/Fragment.SavedState">
|
||||
<method jni-name="writeToParcel" parameter="flags" clr-enum-type="Android.OS.ParcelableWriteFlags" />
|
||||
</mapping>
|
||||
-->
|
||||
</enum-method-mappings>
|
@@ -1,35 +0,0 @@
|
||||
<metadata>
|
||||
|
||||
<remove-node path="/api/package[@name='com.dropbox.core']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.http']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.json']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.oauth']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.sdk.android']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.stone']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.util']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v1']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.account']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.callbacks']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.check']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.seenstate']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.teamcommon']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.secondaryemails']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.async']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.auth']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.common']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.contacts']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.fileproperties']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.filerequests']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.files']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.paper']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.openid']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.sharing']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.team']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.teamlog']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.teampolicies']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.users']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.v2.userscommon']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.android']" />
|
||||
<remove-node path="/api/package[@name='com.dropbox.core.android']" />
|
||||
</metadata>
|
@@ -29,8 +29,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PCloudBindings", "PCloudBin
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kp2aAutofillParser.Tests", "Kp2aAutofillParser.Tests\Kp2aAutofillParser.Tests.csproj", "{F5A2A8F9-C084-498F-9603-9D927BA5C626}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DropboxBinding", "DropboxBinding\DropboxBinding.csproj", "{2FE6E335-E834-4F86-AB83-2C5D225DA929}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -371,30 +369,6 @@ Global
|
||||
{F5A2A8F9-C084-498F-9603-9D927BA5C626}.ReleaseNoNet|Win32.Build.0 = Release|Any CPU
|
||||
{F5A2A8F9-C084-498F-9603-9D927BA5C626}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
|
||||
{F5A2A8F9-C084-498F-9603-9D927BA5C626}.ReleaseNoNet|x64.Build.0 = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Debug|Win32.Build.0 = Debug|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Release|Win32.Build.0 = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.ReleaseNoNet|Win32.Build.0 = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
|
||||
{2FE6E335-E834-4F86-AB83-2C5D225DA929}.ReleaseNoNet|x64.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@@ -35,6 +35,8 @@ namespace KeePassLib.Cryptography
|
||||
{
|
||||
get
|
||||
{
|
||||
Debug.Assert(m_dicts.Count > 0); // Should be initialized
|
||||
|
||||
int iMaxLen = 0;
|
||||
foreach(int iLen in m_dicts.Keys)
|
||||
{
|
||||
|
@@ -445,9 +445,6 @@ namespace Kp2aAutofillParser
|
||||
|
||||
public static string ToCanonicalHint(string hint)
|
||||
{
|
||||
//avoid crash when looking up a null key
|
||||
if (hint == null)
|
||||
return "";
|
||||
string canonicalHint;
|
||||
if (!hintToCanonicalReplacement.TryGetValue(hint, out canonicalHint))
|
||||
canonicalHint = hint;
|
||||
@@ -733,7 +730,7 @@ namespace Kp2aAutofillParser
|
||||
{
|
||||
public List<TField> InputFields { get; set; } = new List<TField>();
|
||||
|
||||
public string? PackageId { get; set; } = null;
|
||||
public string PackageId { get; set; } = null;
|
||||
public string WebDomain { get; set; } = null;
|
||||
}
|
||||
|
||||
@@ -844,7 +841,6 @@ namespace Kp2aAutofillParser
|
||||
continue;
|
||||
if (viewHints.Where(h => h != null).Select(AutofillHintsHelper.ToCanonicalHint).Intersect(_autofillHintsForLogin).Any())
|
||||
{
|
||||
|
||||
AddFieldToHintMap(viewNode, viewHints.Where(h => h != null).Select(AutofillHintsHelper.ToCanonicalHint).ToHashSet().ToArray());
|
||||
}
|
||||
|
||||
|
@@ -1148,46 +1148,30 @@ namespace keepass2android.Io
|
||||
});
|
||||
}
|
||||
|
||||
string? driveId = parentPath.DriveId;
|
||||
if ((string.IsNullOrEmpty(driveId)) && (drives?.Any() == true))
|
||||
{
|
||||
driveId = drives.First().Id;
|
||||
}
|
||||
|
||||
|
||||
if (!CanListShares)
|
||||
return result;
|
||||
|
||||
|
||||
try
|
||||
var sharedWithMeResponse = await client.Drives[driveId].SharedWithMe.GetAsSharedWithMeGetResponseAsync();
|
||||
|
||||
foreach (DriveItem i in sharedWithMeResponse?.Value ?? [])
|
||||
{
|
||||
string? driveId = parentPath.DriveId;
|
||||
if (string.IsNullOrEmpty(driveId))
|
||||
var oneDrive2ItemLocation = parentPath.BuildShare(i.RemoteItem.Id, i.RemoteItem.Name, i.RemoteItem.WebUrl, i.RemoteItem.ParentReference.DriveId);
|
||||
FileDescription sharedFileEntry = new FileDescription()
|
||||
{
|
||||
driveId = (await client.Me.Drive.GetAsync()).Id;
|
||||
}
|
||||
if ((string.IsNullOrEmpty(driveId)) && (drives?.Any() == true))
|
||||
{
|
||||
driveId = drives.First().Id;
|
||||
}
|
||||
CanWrite = true, CanRead = true, DisplayName = i.Name,
|
||||
IsDirectory = true,
|
||||
Path = oneDrive2ItemLocation.ToString()
|
||||
};
|
||||
result.Add(sharedFileEntry);
|
||||
|
||||
var sharedWithMeResponse = await client.Drives[driveId].SharedWithMe.GetAsSharedWithMeGetResponseAsync();
|
||||
|
||||
foreach (DriveItem i in sharedWithMeResponse?.Value ?? [])
|
||||
{
|
||||
var oneDrive2ItemLocation = parentPath.BuildShare(i.RemoteItem.Id, i.RemoteItem.Name, i.RemoteItem.WebUrl, i.RemoteItem.ParentReference.DriveId);
|
||||
FileDescription sharedFileEntry = new FileDescription()
|
||||
{
|
||||
CanWrite = true,
|
||||
CanRead = true,
|
||||
DisplayName = i.Name,
|
||||
IsDirectory = (i.Folder != null) || ((i.RemoteItem != null) && (i.RemoteItem.Folder != null)),
|
||||
Path = oneDrive2ItemLocation.ToString()
|
||||
};
|
||||
result.Add(sharedFileEntry);
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logDebug("Failed to list shares: " + e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@@ -12,6 +12,7 @@
|
||||
<PackageReference Include="FluentFTP" Version="51.1.0" />
|
||||
<PackageReference Include="MegaApiClient" Version="1.10.4" />
|
||||
<PackageReference Include="Microsoft.Graph" Version="5.68.0" />
|
||||
<PackageReference Include="Microsoft.Graph.Auth" Version="1.0.0-preview.7" />
|
||||
<PackageReference Include="Microsoft.Identity.Client" Version="4.67.1" />
|
||||
<PackageReference Include="Xamarin.AndroidX.Browser" Version="1.8.0" />
|
||||
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.13.1.5" />
|
||||
|
@@ -138,8 +138,7 @@ namespace keepass2android
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (string.Equals(host, otherHost, StringComparison.OrdinalIgnoreCase) ||
|
||||
host.EndsWith("." + otherHost, StringComparison.OrdinalIgnoreCase))
|
||||
if (host.IndexOf(otherHost, StringComparison.InvariantCultureIgnoreCase) > -1)
|
||||
{
|
||||
pgResults.AddEntry(entry, false);
|
||||
}
|
||||
|
@@ -41,8 +41,7 @@ dependencies {
|
||||
exclude group: 'com.google.android.google-play-services'
|
||||
}
|
||||
implementation 'com.google.apis:google-api-services-drive:v2-rev102-1.16.0-rc'
|
||||
implementation 'com.dropbox.core:dropbox-core-sdk:7.0.0'
|
||||
implementation 'com.dropbox.core:dropbox-android-sdk:7.0.0'
|
||||
implementation 'com.dropbox.core:dropbox-core-sdk:5.4.6'
|
||||
implementation 'com.google.api-client:google-api-client:1.30.5'
|
||||
implementation 'com.google.api-client:google-api-client-android:1.30.5'
|
||||
|
||||
|
@@ -7,7 +7,6 @@ import com.dropbox.core.DbxOAuth1Upgrader;
|
||||
import com.dropbox.core.DbxRequestConfig;
|
||||
import com.dropbox.core.InvalidAccessTokenException;
|
||||
import com.dropbox.core.android.Auth;
|
||||
|
||||
import com.dropbox.core.json.JsonReadException;
|
||||
import com.dropbox.core.oauth.DbxCredential;
|
||||
import com.dropbox.core.v2.DbxClientV2;
|
||||
@@ -155,7 +154,7 @@ public class DropboxV2Storage extends JavaFileStorageBase
|
||||
{
|
||||
if ((previousFileVersion == null) || (previousFileVersion.equals("")))
|
||||
return false;
|
||||
path = removeProtocol(path);
|
||||
path = removeProtocol(path);
|
||||
try {
|
||||
Metadata entry = dbxClient.files().getMetadata(path);
|
||||
return !String.valueOf(entry.hashCode()) .equals(previousFileVersion);
|
||||
|
@@ -304,11 +304,6 @@ public class WebDavStorage extends JavaFileStorageBase {
|
||||
//relative path:
|
||||
e.path = buildPathFromHref(parentPath, r.href);
|
||||
}
|
||||
if ( (parentPath.indexOf("@") != -1) && (e.path.indexOf("@") == -1))
|
||||
{
|
||||
//username/password not contained in .href response. Add it back from parentPath:
|
||||
e.path = parentPath.substring(0, parentPath.indexOf("@")+1) + e.path.substring(e.path.indexOf("://")+3);
|
||||
}
|
||||
|
||||
if ((depth == 1) && e.isDirectory)
|
||||
{
|
||||
|
@@ -113,15 +113,4 @@ extends Activity implements JavaFileStorage.FileStorageSetupActivity {
|
||||
return state;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
MainActivity.storageToTest.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@@ -147,7 +147,6 @@ import java.util.List;
|
||||
//import keepass2android.javafilestorage.DropboxCloudRailStorage;
|
||||
import keepass2android.javafilestorage.DropboxV2Storage;
|
||||
import keepass2android.javafilestorage.GoogleDriveAppDataFileStorage;
|
||||
import keepass2android.javafilestorage.GoogleDriveFullFileStorage;
|
||||
import keepass2android.javafilestorage.ICertificateErrorHandler;
|
||||
import keepass2android.javafilestorage.JavaFileStorage;
|
||||
import keepass2android.javafilestorage.JavaFileStorage.FileEntry;
|
||||
@@ -548,7 +547,7 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
|
||||
|
||||
|
||||
//storageToTest = new GoogleDriveAppDataFileStorage();
|
||||
/*storageToTest = new WebDavStorage(new ICertificateErrorHandler() {
|
||||
storageToTest = new WebDavStorage(new ICertificateErrorHandler() {
|
||||
@Override
|
||||
public boolean onValidationError(String error) {
|
||||
return false;
|
||||
@@ -559,11 +558,10 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
|
||||
return false;
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
//storageToTest = new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
||||
//storageToTest = new DropboxFileStorage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
||||
//storageToTest = new DropboxAppFolderFileStorage(ctx,"ax0268uydp1ya57", "3s86datjhkihwyc", true);
|
||||
storageToTest = new GoogleDriveFullFileStorage();
|
||||
|
||||
|
||||
return storageToTest;
|
||||
@@ -582,8 +580,6 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
|
||||
getMenuInflater().inflate(R.menu.main, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
|
@@ -356,13 +356,7 @@ public class KP2AKeyboard extends InputMethodService
|
||||
pFilter.addAction("android.intent.action.PACKAGE_ADDED");
|
||||
pFilter.addAction("android.intent.action.PACKAGE_REPLACED");
|
||||
pFilter.addAction("android.intent.action.PACKAGE_REMOVED");
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
registerReceiver(mPluginManager, pFilter, RECEIVER_EXPORTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
registerReceiver(mPluginManager, pFilter);
|
||||
}
|
||||
registerReceiver(mPluginManager, pFilter);
|
||||
|
||||
|
||||
LatinIMEUtil.GCUtils.getInstance().reset();
|
||||
@@ -381,28 +375,16 @@ public class KP2AKeyboard extends InputMethodService
|
||||
|
||||
// register to receive ringer mode changes for silent mode
|
||||
IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
registerReceiver(mSilentModeReceiver, filter, RECEIVER_EXPORTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
registerReceiver(mSilentModeReceiver, filter);
|
||||
}
|
||||
|
||||
registerReceiver(mSilentModeReceiver, filter);
|
||||
|
||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
||||
|
||||
//check if we have KP2A data available:
|
||||
mHadKp2aData = mShowKp2aKeyboard = KeyboardData.hasData();
|
||||
mHadKp2aData = mShowKp2aKeyboard = keepass2android.kbbridge.KeyboardData.hasData();
|
||||
|
||||
mClearKeyboardReceiver = new ClearKeyboardBroadcastReceiver();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
registerReceiver(mClearKeyboardReceiver, new IntentFilter(get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this)), RECEIVER_EXPORTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
registerReceiver(mClearKeyboardReceiver, new IntentFilter(get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this)));
|
||||
}
|
||||
Log.d("KP2AK", "registered receiver for clear keyboard broadcast: "+get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this));
|
||||
registerReceiver(mClearKeyboardReceiver, new IntentFilter(get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this)));
|
||||
android.util.Log.d("KP2AK", "registered receiver for clear keyboard broadcast: "+get_KEEPASS2ANDROID_KEYBOARD_CLEARED(this));
|
||||
|
||||
}
|
||||
|
||||
|
@@ -164,7 +164,7 @@
|
||||
<!-- Short message to tell the user the system is ready for them to speak. -->
|
||||
<string name="voice_listening">Гаварыце</string>
|
||||
<!-- Short message shown after the user finishes speaking. -->
|
||||
<string name="voice_working">Апрацоўка</string>
|
||||
<string name="voice_working">Апрацоўванне</string>
|
||||
<!-- Short message shown before the user should speak. -->
|
||||
<!-- Short message shown when a generic error occurs. -->
|
||||
<string name="voice_error">Памылка. Паўтарыце спробу.</string>
|
||||
|
@@ -19,7 +19,7 @@
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<!-- Title for Latin keyboard -->
|
||||
<string name="english_ime_name">Keepass2Android-Tastatur</string>
|
||||
<string name="english_ime_name">KeePass2Android-Tastatur</string>
|
||||
<!-- Title for Latin keyboard settings activity / dialog -->
|
||||
<string name="english_ime_settings">Android-Tastatureinstellungen</string>
|
||||
<!-- Title for Latin keyboard input options dialog -->
|
||||
@@ -49,7 +49,7 @@
|
||||
<!-- Description for text prediction -->
|
||||
<string name="prediction_summary">Automatische Vervollständigung während der Eingabe aktivieren</string>
|
||||
<!-- Dialog title for auto complete choices -->
|
||||
<string name="auto_complete_dialog_title">Autovervollständigung</string>
|
||||
<string name="auto_complete_dialog_title">Automatische. Vervollständigung </string>
|
||||
<!-- Option to enable text prediction in landscape -->
|
||||
<string name="prediction_landscape">Textfeld vergrößern</string>
|
||||
<!-- Description for text prediction -->
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="auto_punctuate">Autom. Zeichensetzung</string>
|
||||
<!-- Description for auto punctuate -->
|
||||
<!-- Option to enable quick fixes -->
|
||||
<string name="quick_fixes">Schnelle Korrektur</string>
|
||||
<string name="quick_fixes">Schnelle Fixierung</string>
|
||||
<!-- Description for quick fixes -->
|
||||
<string name="quick_fixes_summary">Korrigiert gängige Tippfehler</string>
|
||||
<!-- Option to enable showing suggestions -->
|
||||
@@ -112,7 +112,7 @@
|
||||
<!-- Tip to long press on typed word to add to dictionary -->
|
||||
<string name="tip_add_to_dictionary">Lange auf das Wort ganz links außen drücken, um es zum Wörterbuch hinzuzufügen</string>
|
||||
<!-- Instruction to touch the bubble to continue -->
|
||||
<string name="touch_to_continue">Diesen Hinweis antippen, um fortzufahren.»</string>
|
||||
<string name="touch_to_continue">Diesen Hinweis berühren, um fortzufahren.»</string>
|
||||
<!-- Instruction to touch the bubble to start typing -->
|
||||
<string name="touch_to_finish">Hier berühren, um diesen Hinweis zu schließen und mit dem Tippen zu beginnen!</string>
|
||||
<!-- Tutorial tip 1 - The keyboard opens any time you touch a text field -->
|
||||
@@ -138,7 +138,7 @@
|
||||
<!-- Label for "switch to symbols" key. Must be short to fit on key! -->
|
||||
<string name="label_symbol_key">\?123</string>
|
||||
<!-- Label for "switch to numeric" key. Must be short to fit on key! -->
|
||||
<string name="label_phone_key">123</string>
|
||||
<string name="label_phone_key">Nummer</string>
|
||||
<!-- Label for "switch to alphabetic" key. Must be short to fit on key! -->
|
||||
<string name="label_alpha_key">ABC</string>
|
||||
<!-- Label for ALT modifier key. Must be short to fit on key! -->
|
||||
@@ -161,7 +161,7 @@
|
||||
"Swipe across keyboard to speak"). Also shown when enabling settings. -->
|
||||
<string name="voice_hint_dialog_message">Um die Spracheingabe zu verwenden, drücken Sie die Mikrofontaste oder ziehen Sie Ihren Finger über die Bildschirmtastatur.</string>
|
||||
<!-- Short message to tell the user the system is ready for them to speak. -->
|
||||
<string name="voice_listening">Jetzt sprechen</string>
|
||||
<string name="voice_listening">Sprechen Sie jetzt</string>
|
||||
<!-- Short message shown after the user finishes speaking. -->
|
||||
<string name="voice_working">Vorgang läuft</string>
|
||||
<!-- Short message shown before the user should speak. -->
|
||||
@@ -186,7 +186,7 @@
|
||||
<!-- Short hint shown in candidate view to explain voice input. -->
|
||||
<string name="voice_swipe_hint"><b>„Hinweis:“</b>„ Ziehen Sie zum Sprechen den Finger über die Tastatur.“</string>
|
||||
<!-- Short hint shown in candidate view to explain that user can speak punctuation. -->
|
||||
<string name="voice_punctuation_hint"><b>Hinweis: </b>Versuche beim nächsten Mal, Satzzeichen wie „Punkt“, „Komma“ oder „Fragezeichen“ per Sprachbefehl einzugeben.</string>
|
||||
<string name="voice_punctuation_hint"><b>„Hinweis: “</b>„ Versuchen Sie beim nächsten Mal, Satzzeichen wie „Punkt“, „Komma“ oder „Fragezeichen“ per Sprachbefehl einzugeben.“</string>
|
||||
<!-- Label on button to stop recognition. Must be short to fit on button. -->
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<!-- Label on button when an error occurs -->
|
||||
@@ -216,7 +216,7 @@
|
||||
<!-- appears above image showing the user to click on a TextView to show the IME -->
|
||||
<string name="open_the_keyboard"><font size="17"><b>„Tastatur öffnen“\n</b></font><font size="3">\n</font>„Berühren Sie ein beliebiges Textfeld.“</string>
|
||||
<!-- appears above the image showing the back button used to close the keyboard -->
|
||||
<string name="close_the_keyboard"><font size="17"><b>Tastatur schließen\n</b></font><font size="3">\n</font>Drücken die Zurück-Taste.</string>
|
||||
<string name="close_the_keyboard"><font size="17"><b>„Tastatur schließen“\n</b></font><font size="3">\n</font>„Drücken Sie die Zurück-Taste.“</string>
|
||||
<!-- appears above image showing how to use touch and hold -->
|
||||
<string name="touch_and_hold"><font size="17"><b>„Für Optionen eine Taste berühren und gedrückt halten“\n</b></font><font size="3">\n</font>„Greifen Sie auf Satzzeichen und Akzente zu.“</string>
|
||||
<!-- appears above image showing how to access keyboard settings -->
|
||||
|
@@ -64,6 +64,8 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
|
||||
Log.d("KP2A_FC_P", "onCreate");
|
||||
|
||||
BaseFileProviderUtils.registerProviderInfo(_ID,
|
||||
getAuthority());
|
||||
|
||||
@@ -220,12 +222,12 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
try
|
||||
{
|
||||
checkConnection(uri);
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P", "checking connection for " + uri + " ok.");
|
||||
Log.d("KP2A_FC_P", "checking connection for " + uri + " ok.");
|
||||
return null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P","Check connection failed with: " + e.toString());
|
||||
Log.d("KP2A_FC_P","Check connection failed with: " + e.toString());
|
||||
|
||||
MatrixCursor matrixCursor = new MatrixCursor(BaseFileProviderUtils.CONNECTION_CHECK_CURSOR_COLUMNS);
|
||||
RowBuilder newRow = matrixCursor.newRow();
|
||||
@@ -253,7 +255,7 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
}
|
||||
catch (FileNotFoundException ex)
|
||||
{
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P","File not found. Ignore.");
|
||||
Log.d("KP2A_FC_P","File not found. Ignore.");
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -274,8 +276,8 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
MatrixCursor matrixCursor = null;
|
||||
|
||||
String lastPathSegment = uri.getLastPathSegment();
|
||||
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P", "lastPathSegment:" + lastPathSegment);
|
||||
|
||||
Log.d("KP2A_FC_P", "lastPathSegment:" + lastPathSegment);
|
||||
|
||||
if (BaseFile.CMD_CANCEL.equals(lastPathSegment)) {
|
||||
int taskId = ProviderUtils.getIntQueryParam(uri,
|
||||
@@ -359,7 +361,7 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
|
||||
} else if (BaseFile.CMD_CHECK_CONNECTION.equals(lastPathSegment))
|
||||
{
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P","Check connection...");
|
||||
Log.d("KP2A_FC_P","Check connection...");
|
||||
return getCheckConnectionCursor(uri);
|
||||
}
|
||||
|
||||
@@ -468,7 +470,7 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
String displayName = getFileEntryCached(dirName).displayName;
|
||||
newRow.add(displayName);
|
||||
|
||||
if (Utils.doLog()) Log.d(CLASSNAME, "Returning name " + displayName+" for " +dirName);
|
||||
Log.d(CLASSNAME, "Returning name " + displayName+" for " +dirName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -688,7 +690,7 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P", "sortFiles() >> "+e);
|
||||
Log.d("KP2A_FC_P", "sortFiles() >> "+e);
|
||||
throw e;
|
||||
}
|
||||
}// sortFiles()
|
||||
@@ -775,14 +777,14 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
path = removeTrailingSlash(path);
|
||||
if (path.indexOf("://") == -1)
|
||||
{
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P", "invalid path: " + path);
|
||||
Log.d("KP2A_FC_P", "invalid path: " + path);
|
||||
return null;
|
||||
}
|
||||
String pathWithoutProtocol = path.substring(path.indexOf("://") + 3);
|
||||
int lastSlashPos = path.lastIndexOf("/");
|
||||
if (pathWithoutProtocol.indexOf("/") == -1)
|
||||
{
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P", "parent of " + path + " is null");
|
||||
Log.d("KP2A_FC_P", "parent of " + path + " is null");
|
||||
return null;
|
||||
}
|
||||
else
|
||||
@@ -791,7 +793,7 @@ public abstract class Kp2aFileProvider extends BaseFileProvider {
|
||||
if (params != null) {
|
||||
parent += params;
|
||||
}
|
||||
if (Utils.doLog()) Log.d("KP2A_FC_P", "parent of " + path +" is " + parent);
|
||||
Log.d("KP2A_FC_P", "parent of " + path +" is " + parent);
|
||||
return parent;
|
||||
}
|
||||
}
|
||||
|
@@ -56,7 +56,7 @@
|
||||
<string name="afc_title_sort_by">Sortieren nach…</string>
|
||||
<string name="afc_yesterday">Gestern</string>
|
||||
<plurals name="afc_title_choose_directories">
|
||||
<item quantity="one">Ordner wählen…</item>
|
||||
<item quantity="one">Ordner wählen …</item>
|
||||
<item quantity="other">Verzeichnisse wählen</item>
|
||||
</plurals>
|
||||
<plurals name="afc_title_choose_files">
|
||||
@@ -64,7 +64,7 @@
|
||||
<item quantity="other">Dateien wählen …</item>
|
||||
</plurals>
|
||||
<plurals name="afc_title_choose_files_directories">
|
||||
<item quantity="one">Datei/Ordner wählen…</item>
|
||||
<item quantity="one">Datei/Ordner wählen …</item>
|
||||
<item quantity="other">Dateien/Ordner wählen …</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
@@ -14,11 +14,9 @@ using Android.Runtime;
|
||||
using Android.Text;
|
||||
using Android.Text.Method;
|
||||
using Android.Text.Util;
|
||||
using Android.Util;
|
||||
using Android.Views;
|
||||
using Android.Webkit;
|
||||
using Android.Widget;
|
||||
using AndroidX.Core.Content;
|
||||
using Google.Android.Material.Dialog;
|
||||
using keepass2android;
|
||||
|
||||
@@ -31,16 +29,7 @@ namespace keepass2android
|
||||
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(ctx);
|
||||
builder.SetTitle(ctx.GetString(Resource.String.ChangeLog_title));
|
||||
List<string> changeLog = new List<string>{
|
||||
BuildChangelogString(ctx, new List<int>{Resource.Array.ChangeLog_1_12
|
||||
#if !NoNet
|
||||
,Resource.Array.ChangeLog_1_12_net
|
||||
#endif
|
||||
}, "1.12"),
|
||||
BuildChangelogString(ctx, new List<int>{Resource.Array.ChangeLog_1_11
|
||||
#if !NoNet
|
||||
,Resource.Array.ChangeLog_1_11_net
|
||||
#endif
|
||||
}, "1.11"),
|
||||
BuildChangelogString(ctx, new List<int>{Resource.Array.ChangeLog_1_11,Resource.Array.ChangeLog_1_11_net}, "1.11"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_10, "1.10"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_09e, "1.09e"),
|
||||
BuildChangelogString(ctx, Resource.Array.ChangeLog_1_09d, "1.09d"),
|
||||
@@ -110,28 +99,32 @@ namespace keepass2android
|
||||
warning = ctx.GetString(Resource.String.PreviewWarning);
|
||||
}
|
||||
|
||||
builder.SetPositiveButton(Android.Resource.String.Ok, (dlgSender, dlgEvt) => {((AndroidX.AppCompat.App.AlertDialog)dlgSender).Dismiss(); });
|
||||
builder.SetPositiveButton(Android.Resource.String.Ok, (dlgSender, dlgEvt) => {((AlertDialog)dlgSender).Dismiss(); });
|
||||
builder.SetCancelable(false);
|
||||
|
||||
WebView wv = new WebView(ctx);
|
||||
|
||||
|
||||
|
||||
|
||||
wv.SetBackgroundColor(Color.White);
|
||||
wv.LoadDataWithBaseURL(null, GetLog(changeLog, warning, ctx), "text/html", "UTF-8", null);
|
||||
|
||||
|
||||
//builder.SetMessage("");
|
||||
builder.SetView(wv);
|
||||
Dialog dialog = builder.Create();
|
||||
dialog.DismissEvent += (sender, e) =>
|
||||
dialog.DismissEvent += (sender, e) =>
|
||||
{
|
||||
onDismiss();
|
||||
};
|
||||
wv.SetBackgroundColor(Color.Transparent);
|
||||
wv.LoadDataWithBaseURL(null, GetLog(changeLog, warning, dialog.Context), "text/html", "UTF-8", null);
|
||||
dialog.Show();
|
||||
/*TextView message = (TextView)dialog.FindViewById(Android.Resource.Id.Message);
|
||||
|
||||
|
||||
message.TextFormatted = Html.FromHtml(ConcatChangeLog(ctx, changeLog.ToArray()));
|
||||
message.AutoLinkMask=MatchOptions.WebUrls;*/
|
||||
|
||||
dialog.Show();
|
||||
}
|
||||
|
||||
private static string BuildChangelogString(Context ctx, int changeLogResId, string version)
|
||||
private static string BuildChangelogString(Context ctx, int changeLogResId, string version)
|
||||
{
|
||||
return BuildChangelogString(ctx, new List<int>() { changeLogResId }, version);
|
||||
|
||||
@@ -157,44 +150,32 @@ namespace keepass2android
|
||||
|
||||
}
|
||||
|
||||
private const string HtmlEnd = @"</body>
|
||||
</html>";
|
||||
|
||||
private static string GetLog(List<string> changeLog, string warning, Context ctx)
|
||||
{
|
||||
string secondaryColor = "31628D";
|
||||
string onSurfaceColor = "171D1E";
|
||||
if (((int)ctx.Resources.Configuration.UiMode & (int)UiMode.NightMask) == (int)UiMode.NightYes)
|
||||
{
|
||||
secondaryColor = "99CBFF";
|
||||
onSurfaceColor = "E1E4D6";
|
||||
}
|
||||
|
||||
|
||||
string HtmlStart = @"<html>
|
||||
private const string HtmlStart = @"<html>
|
||||
<head>
|
||||
<style type='text/css'>
|
||||
a { color:#"+ onSurfaceColor + @" }
|
||||
a { color:#000000 }
|
||||
div.title {
|
||||
color:"+ secondaryColor+@";
|
||||
color:287AA9;
|
||||
font-size:1.2em;
|
||||
font-weight:bold;
|
||||
margin-top:1em;
|
||||
margin-bottom:0.5em;
|
||||
text-align:center }
|
||||
div.subtitle {
|
||||
color:"+ secondaryColor+@";
|
||||
color:287AA9;
|
||||
font-size:0.8em;
|
||||
margin-bottom:1em;
|
||||
text-align:center }
|
||||
div.freetext { color:#"+ onSurfaceColor + @" }
|
||||
div.list { color:#"+ onSurfaceColor + @" }
|
||||
div.freetext { color:#000000 }
|
||||
div.list { color:#000000 }
|
||||
</style>
|
||||
</head>
|
||||
<body>";
|
||||
|
||||
|
||||
StringBuilder sb = new StringBuilder(HtmlStart);
|
||||
private const string HtmlEnd = @"</body>
|
||||
</html>";
|
||||
private static string GetLog(List<string> changeLog, string warning, Context ctx)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(HtmlStart);
|
||||
if (!string.IsNullOrEmpty(warning))
|
||||
{
|
||||
sb.Append(warning);
|
||||
|
@@ -53,7 +53,6 @@ using keepass2android.fileselect;
|
||||
using KeeTrayTOTP.Libraries;
|
||||
using Boolean = Java.Lang.Boolean;
|
||||
using Android.Util;
|
||||
using AndroidX.Core.Content;
|
||||
using Google.Android.Material.Dialog;
|
||||
using keepass2android;
|
||||
|
||||
@@ -492,9 +491,9 @@ namespace keepass2android
|
||||
App.Kp2a.LastOpenedEntry = new PwEntryOutput(Entry, App.Kp2a.CurrentDb);
|
||||
|
||||
_pluginActionReceiver = new PluginActionReceiver(this);
|
||||
ContextCompat.RegisterReceiver(this, _pluginActionReceiver, new IntentFilter(Strings.ActionAddEntryAction), (int)ReceiverFlags.Exported);
|
||||
RegisterReceiver(_pluginActionReceiver, new IntentFilter(Strings.ActionAddEntryAction), ReceiverFlags.Exported);
|
||||
_pluginFieldReceiver = new PluginFieldReceiver(this);
|
||||
ContextCompat.RegisterReceiver(this, _pluginFieldReceiver, new IntentFilter(Strings.ActionSetEntryField), (int)ReceiverFlags.Exported);
|
||||
RegisterReceiver(_pluginFieldReceiver, new IntentFilter(Strings.ActionSetEntryField), ReceiverFlags.Exported);
|
||||
|
||||
var notifyPluginsOnOpenThread = new Thread(NotifyPluginsOnOpen);
|
||||
notifyPluginsOnOpenThread.Start();
|
||||
|
@@ -37,7 +37,6 @@ using System.Net;
|
||||
using System.Text;
|
||||
using Android.Content.Res;
|
||||
using Android.Database;
|
||||
using Android.Gms.Common;
|
||||
using Android.Gms.Tasks;
|
||||
using Android.Graphics;
|
||||
using Android.Graphics.Drawables;
|
||||
@@ -1156,12 +1155,6 @@ namespace keepass2android
|
||||
|
||||
dlgView.FindViewById<Button>(Resource.Id.totp_scan).Click += async (object o, EventArgs args) =>
|
||||
{
|
||||
if (GoogleApiAvailability.Instance.IsGooglePlayServicesAvailable(this) != ConnectionResult.Success)
|
||||
{
|
||||
Toast.MakeText(this, Resource.String.qr_scanning_error_no_google_play_services, ToastLength.Long);
|
||||
return;
|
||||
}
|
||||
|
||||
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
|
||||
.SetBarcodeFormats(Barcode.FormatQrCode)
|
||||
.Build();
|
||||
|
@@ -185,56 +185,48 @@ namespace keepass2android
|
||||
|
||||
public override View GetView(int position, View convertView, ViewGroup parent)
|
||||
{
|
||||
try
|
||||
{
|
||||
View currView;
|
||||
if (convertView == null)
|
||||
{
|
||||
LayoutInflater li = (LayoutInflater)_act.GetSystemService(LayoutInflaterService);
|
||||
currView = li.Inflate(Resource.Layout.icon, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
currView = convertView;
|
||||
}
|
||||
TextView tv = (TextView)currView.FindViewById(Resource.Id.icon_text);
|
||||
ImageView iv = (ImageView)currView.FindViewById(Resource.Id.icon_image);
|
||||
View currView;
|
||||
if(convertView == null)
|
||||
{
|
||||
LayoutInflater li = (LayoutInflater) _act.GetSystemService(LayoutInflaterService);
|
||||
currView = li.Inflate(Resource.Layout.icon, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
currView = convertView;
|
||||
}
|
||||
TextView tv = (TextView) currView.FindViewById(Resource.Id.icon_text);
|
||||
ImageView iv = (ImageView) currView.FindViewById(Resource.Id.icon_image);
|
||||
|
||||
if (position < (int)PwIcon.Count)
|
||||
{
|
||||
tv.Text = "" + position;
|
||||
var drawable = App.Kp2a.CurrentDb .DrawableFactory.GetIconDrawable(_act, App.Kp2a.CurrentDb.KpDatabase, (KeePassLib.PwIcon) position, null, false);
|
||||
drawable = new BitmapDrawable(Util.DrawableToBitmap(drawable));
|
||||
iv.SetImageDrawable(drawable);
|
||||
//App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(iv, _act, App.Kp2a.GetDb().KpDatabase, (KeePassLib.PwIcon) position, null, false);
|
||||
|
||||
if (position < (int)PwIcon.Count)
|
||||
{
|
||||
tv.Text = "" + position;
|
||||
var drawable = App.Kp2a.CurrentDb.DrawableFactory.GetIconDrawable(_act, App.Kp2a.CurrentDb.KpDatabase, (KeePassLib.PwIcon)position, null, false);
|
||||
drawable = new BitmapDrawable(Util.DrawableToBitmap(drawable));
|
||||
iv.SetImageDrawable(drawable);
|
||||
//App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(iv, _act, App.Kp2a.GetDb().KpDatabase, (KeePassLib.PwIcon) position, null, false);
|
||||
if (
|
||||
PreferenceManager.GetDefaultSharedPreferences(currView.Context)
|
||||
.GetString("IconSetKey", currView.Context.PackageName) == currView.Context.PackageName)
|
||||
{
|
||||
Android.Graphics.PorterDuff.Mode mMode = Android.Graphics.PorterDuff.Mode.SrcAtop;
|
||||
Color color = new Color(189, 189, 189);
|
||||
iv.SetColorFilter(color, mMode);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
int pos = position - (int)PwIcon.Count;
|
||||
var icon = _db.CustomIcons[pos];
|
||||
tv.Text = pos.ToString();
|
||||
iv.SetColorFilter(null);
|
||||
iv.SetImageBitmap(icon.Image);
|
||||
|
||||
}
|
||||
|
||||
if (PreferenceManager.GetDefaultSharedPreferences(currView.Context)
|
||||
.GetString("IconSetKey", currView.Context.PackageName) == currView.Context.PackageName)
|
||||
{
|
||||
Android.Graphics.PorterDuff.Mode mMode = Android.Graphics.PorterDuff.Mode.SrcAtop;
|
||||
Color color = new Color(189, 189, 189);
|
||||
iv.SetColorFilter(color, mMode);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
int pos = position - (int)PwIcon.Count;
|
||||
var icon = _db.CustomIcons[pos];
|
||||
tv.Text = pos.ToString();
|
||||
iv.SetColorFilter(null);
|
||||
iv.SetImageBitmap(icon.Image);
|
||||
|
||||
}
|
||||
|
||||
return currView;
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Kp2aLog.LogUnexpectedError(e);
|
||||
throw;
|
||||
}
|
||||
|
||||
return currView;
|
||||
}
|
||||
|
||||
public bool IsCustomIcon(int position)
|
||||
|
@@ -21,7 +21,6 @@ using Android.OS;
|
||||
using Android.Preferences;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using AndroidX.Core.Content;
|
||||
using KeePassLib.Serialization;
|
||||
|
||||
namespace keepass2android
|
||||
@@ -70,7 +69,7 @@ namespace keepass2android
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.AddAction(Intents.DatabaseLocked);
|
||||
filter.AddAction(Intent.ActionScreenOff);
|
||||
ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported);
|
||||
RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
|
@@ -21,7 +21,6 @@ using Android.OS;
|
||||
using Android.Preferences;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using AndroidX.Core.Content;
|
||||
using KeePassLib.Serialization;
|
||||
|
||||
namespace keepass2android
|
||||
@@ -56,7 +55,7 @@ namespace keepass2android
|
||||
|
||||
filter.AddAction(Intents.DatabaseLocked);
|
||||
filter.AddAction(Intent.ActionScreenOff);
|
||||
ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported);
|
||||
RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
|
||||
|
||||
}
|
||||
|
||||
|
@@ -18,7 +18,6 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file
|
||||
using System;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using AndroidX.Core.Content;
|
||||
using KeePassLib.Serialization;
|
||||
|
||||
namespace keepass2android
|
||||
@@ -40,7 +39,7 @@ namespace keepass2android
|
||||
_intentReceiver = new LockCloseActivityBroadcastReceiver(this);
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.AddAction(Intents.DatabaseLocked);
|
||||
ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported);
|
||||
RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
|
||||
}
|
||||
|
||||
protected override void OnResume() {
|
||||
|
@@ -47,8 +47,8 @@
|
||||
<permission android:description="@string/permission_desc2" android:icon="@drawable/ic_notify_locked" android:label="KP2A entry search" android:name="keepass2android.keepass2android_debug.permission.KP2aInternalSearch" android:protectionLevel="signature" />
|
||||
<permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android_debug.permission.Kp2aChooseAutofill" android:protectionLevel="signature" />
|
||||
<application
|
||||
android:icon="@mipmap/ic_launcher_debug"
|
||||
android:roundIcon="@mipmap/ic_launcher_debug_round"
|
||||
android:icon="@mipmap/ic_launcher_online"
|
||||
android:roundIcon="@mipmap/ic_launcher_online_round"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
>
|
||||
<meta-data
|
||||
@@ -243,15 +243,6 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
||||
<action android:name="keepass2android.ACTION_START_WITH_TASK" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="otpauth"/>
|
||||
<data android:host="totp"/>
|
||||
<data android:host="hotp"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" />
|
||||
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionCode="204"
|
||||
android:versionName="1.12-r3"
|
||||
android:versionCode="200"
|
||||
android:versionName="1.11-r0"
|
||||
package="keepass2android.keepass2android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="auto">
|
||||
@@ -255,14 +255,7 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
||||
<action android:name="keepass2android.ACTION_START_WITH_TASK" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="otpauth"/>
|
||||
<data android:host="totp"/>
|
||||
<data android:host="hotp"/>
|
||||
</intent-filter>
|
||||
x
|
||||
</activity>
|
||||
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" />
|
||||
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
|
||||
|
@@ -236,14 +236,6 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik
|
||||
<action android:name="keepass2android.ACTION_START_WITH_TASK" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="otpauth"/>
|
||||
<data android:host="totp"/>
|
||||
<data android:host="hotp"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" />
|
||||
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
|
||||
|
@@ -48,6 +48,11 @@ namespace keepass2android
|
||||
Finish();
|
||||
};
|
||||
|
||||
var toolbar = FindViewById<AndroidX.AppCompat.Widget.Toolbar>(Resource.Id.mytoolbar);
|
||||
|
||||
SetSupportActionBar(toolbar);
|
||||
|
||||
SupportActionBar.Title = AppNames.AppName;
|
||||
}
|
||||
|
||||
protected override void OnResume()
|
||||
|
@@ -1,24 +0,0 @@
|
||||
using Android.Content.PM;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
[Activity(Label = AppNames.AppName,
|
||||
MainLauncher = false,
|
||||
Theme = "@style/Kp2aTheme_BlueNoActionBar",
|
||||
Exported = true)]
|
||||
///For autofill, we sometimes need to pass an intent to an inline presentation which never gets fired. We use this as a dummy activity.
|
||||
public class NullActivity: Activity
|
||||
{
|
||||
protected override void OnCreate(Bundle savedInstanceState)
|
||||
{
|
||||
Kp2aLog.Log("NullActivity.OnCreate - this is unexpected.");
|
||||
base.OnCreate(savedInstanceState);
|
||||
Finish();
|
||||
}
|
||||
}
|
||||
}
|
@@ -65,7 +65,6 @@ using Enum = System.Enum;
|
||||
using Exception = System.Exception;
|
||||
using String = System.String;
|
||||
using Toolbar = AndroidX.AppCompat.Widget.Toolbar;
|
||||
using AndroidX.Core.Content;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
@@ -648,7 +647,7 @@ namespace keepass2android
|
||||
_intentReceiver = new PasswordActivityBroadcastReceiver(this);
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.AddAction(Intent.ActionScreenOff);
|
||||
ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported);
|
||||
RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
|
||||
|
||||
|
||||
//use FlagSecure to make sure the last (revealed) character of the master password is not visible in recent apps
|
||||
|
@@ -34,7 +34,6 @@ using keepass2android;
|
||||
using KeePassLib;
|
||||
using KeePassLib.Serialization;
|
||||
using Toolbar = AndroidX.AppCompat.Widget.Toolbar;
|
||||
using AndroidX.Core.Content;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
@@ -154,7 +153,7 @@ namespace keepass2android
|
||||
_intentReceiver = new QuickUnlockBroadcastReceiver(this);
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.AddAction(Intents.DatabaseLocked);
|
||||
ContextCompat.RegisterReceiver(this, _intentReceiver, filter, (int)ReceiverFlags.Exported);
|
||||
RegisterReceiver(_intentReceiver, filter, ReceiverFlags.Exported);
|
||||
|
||||
Util.SetNoPersonalizedLearning(FindViewById<EditText>(Resource.Id.QuickUnlock_password));
|
||||
|
||||
|
@@ -69,7 +69,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
@@ -83,7 +82,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:inputType="textPassword"
|
||||
android:hint="@string/hint_pass"
|
||||
android:hint="password"
|
||||
android:importantForAccessibility="no"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<LinearLayout
|
||||
@@ -136,7 +135,6 @@
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:id="@+id/entry_extras_container"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
@@ -175,7 +173,6 @@
|
||||
</LinearLayout>
|
||||
<!-- file attachments -->
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:id="@+id/entry_binaries_container"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
@@ -231,7 +228,6 @@
|
||||
</LinearLayout>
|
||||
<!--expires-->
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:id="@+id/expires_section"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
|
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 20 KiB |
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">التعليقات</string>
|
||||
<string name="AboutText">Keepass2Android هو مدير كلمات سر يتيح القراءة والكتابة على قواعد بيانات KeePass 2.x على نظام الـAndroid.</string>
|
||||
@@ -754,5 +754,6 @@
|
||||
<string name="AutofillWarning_Intro">أنت على وشك إدراج بيانات اعتماد للنطاق \"%1$s\" في التطبيق \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">إذا كنت تثق في \"%2$s\" بالانتماء إلى \"%1$s\" أو كنت تثق في التطبيق \"%2$s\" لعدم إساءة استخدام بيانات الاعتماد (e. . لأنه تطبيق متصفح موثوق به)، من المفضل المتابعة. إذا لم يكن الأمر كذلك ، يرجى الإلغاء .</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">قبول دائمًا في \"%1$s\"</string>
|
||||
<string name="english_ime_settings">إعدادات لوحة مفاتيح Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">إعدادات لوحة مفاتيح Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Əks əlaqə</string>
|
||||
<string name="CreditsTextSFTP">SFTP dəstəyi, JCraft, Inc. tərəfindən yaradılmış JSch kitabxanası altında BSD lisenziyası ilə həyata keçirilmişdir.</string>
|
||||
@@ -84,5 +84,6 @@
|
||||
<string name="AutofillWarning_title">Təhlükəsizlik xəbərdarlığı: Tanınmayan domen/tətbiq bağlantısı</string>
|
||||
<string name="AutofillWarning_Intro">\"%2$s\" tətbiqinə \"%1$s\" domeni üçün kimlik məlumatlarını daxil edirsiniz.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">\"%1$s\" səyyahında həmişə qəbul et</string>
|
||||
<string name="english_ime_settings">Android klaviatura tənzimləmələri</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Android klaviatura tənzimləmələri</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Зваротная сувязь</string>
|
||||
<string name="AboutText">Keepass2Android - кіраўнік пароляў для Android з паўнавартаснай падтрымкай базаў даных KeePass 2.x.</string>
|
||||
@@ -28,7 +28,7 @@
|
||||
<string name="application_settings">Налады праграмы</string>
|
||||
<string name="ShowGroupnameInSearchResult_title">Паказваць назву групы ў выніках пошуку</string>
|
||||
<string name="ShowGroupnameInSearchResult_resume">Паказваць пад назвай запісу ў выніках пошуку назву групы. Будзе карысна, калі ў запісаў аднолькавыя назвы.</string>
|
||||
<string name="NavigationToGroupCompleted_message">Адлюстраванне групы зараз: %1$s</string>
|
||||
<string name="NavigationToGroupCompleted_message">Зараз паказваецца група: %1$s</string>
|
||||
<string name="AutofillDisabledQueriesPreference_title">Адключаныя мэты аўтазапаўнення</string>
|
||||
<string name="AutofillDisabledQueriesPreference_summary">Прагляд спіса праграм і сайтаў, для якіх аўтазапаўненне адключана</string>
|
||||
<string name="OfferSaveCredentials_summary">Калі ўключана, сістэма будзе пытацца, ці захоўваць уліковыя даныя пасля таго, як вы ўвялі даныя ў палі аўтазапаўнення.</string>
|
||||
@@ -40,10 +40,10 @@
|
||||
<string name="IconSet_title">Набор значкоў</string>
|
||||
<string name="IconSet_install">Шукаць яшчэ…</string>
|
||||
<string name="security_prefs">Бяспека</string>
|
||||
<string name="display_prefs">Адлюстраванне</string>
|
||||
<string name="display_prefs">Паказ элементаў</string>
|
||||
<string name="password_access_prefs">Доступ да пароляў</string>
|
||||
<string name="QuickUnlock_prefs">Хуткае разблакаванне</string>
|
||||
<string name="FileHandling_prefs">Апрацоўка файлаў</string>
|
||||
<string name="FileHandling_prefs">Апрацоўванне файлаў</string>
|
||||
<string name="keyboard_prefs">Клавіятура</string>
|
||||
<string name="export_prefs">Экспарт базы даных…</string>
|
||||
<string name="fingerprint_prefs">Разблакаванне з дапамогай біяметрычных даных</string>
|
||||
@@ -216,7 +216,7 @@
|
||||
<string name="master_key_type">Абярыце тып галоўнага ключа:</string>
|
||||
<string name="progress_create">Стварэнне базы даных…</string>
|
||||
<string name="create_database">Стварыць базу даных</string>
|
||||
<string name="progress_title">Апрацоўка…</string>
|
||||
<string name="progress_title">Апрацоўванне…</string>
|
||||
<string name="remember_keyfile_summary">Памятаць шлях да файлаў ключоў</string>
|
||||
<string name="remember_keyfile_title">Захаванне файла ключа</string>
|
||||
<string name="remove_from_filelist">Выдаліць</string>
|
||||
@@ -493,7 +493,7 @@
|
||||
<string name="otp_aux_file">Дапаможны файл OTP (аднаразовых пароляў) </string>
|
||||
<string name="ErrorOcurred">Адбылася памылка:</string>
|
||||
<string name="DuplicateUuidsError">База даных пашкоджаная: выяўлены паўторныя ідэнтыфікатары. (Вы захавалі базу ў Minikeepass?) Імпартуйце новую базу даных з дапамогай Keepass 2 для ПК і абярыце \"Стварыць новыя ідэнтыфікатары\".</string>
|
||||
<string name="DuplicateUuidsErrorAdditional">Вы можаце адключыць паведамленне пра памылку ў \"Налады / Налады праграмы / Апрацоўка файлаў / Праверка на наяўнасць дублікатаў ідэнтыфікатараў\". Рэкамендуецца выправіць базу даных.</string>
|
||||
<string name="DuplicateUuidsErrorAdditional">Вы можаце адключыць паведамленне пра памылку ў \"Налады / Налады праграмы / Апрацоўванне файлаў / Праверка на наяўнасць дублікатаў ідэнтыфікатараў\". Рэкамендуецца выправіць базу даных.</string>
|
||||
<string name="synchronize_database_menu">Сінхранізаваць базу даных…</string>
|
||||
<string name="CannotMoveGroupHere">Немагчыма перамясціць групу ў гэтую групу.</string>
|
||||
<string name="donate_question">Сёння Актобэрфэст! Калі вам падабаецца Keepass2Android, ці не найлепшы гэта дзень, каб купіць мне піва?</string>
|
||||
@@ -601,11 +601,11 @@
|
||||
<string name="TrayTotp_SettingsField_title">Назва поля налад TOTP</string>
|
||||
<string name="TrayTotp_SettingsField_summary">Увядзіце сюды назву поля для налад TrayTotp.</string>
|
||||
<string name="TrayTotp_prefs">TrayTotp</string>
|
||||
<string name="DebugLog_prefs_prefs">Файл журнала для адладкі</string>
|
||||
<string name="DebugLog_prefs_prefs">Файл журнала для адладжвання</string>
|
||||
<string name="DebugLog_title">Выкарыстоўваць файл журнала</string>
|
||||
<string name="FtpDebug_title">Журнал адладжвання FTP/SFTP</string>
|
||||
<string name="DebugLog_summary">Запісваць выходныя даныя праграмы ў лакальны файл журнала</string>
|
||||
<string name="DebugLog_send">Адправіць журнал адладкі…</string>
|
||||
<string name="DebugLog_send">Адправіць журнал адладжвання…</string>
|
||||
<string name="loading">Загрузка…</string>
|
||||
<string name="plugins">Убудовы</string>
|
||||
<string name="plugin_packagename">Назва пакунка:</string>
|
||||
@@ -672,6 +672,25 @@
|
||||
<string name="Continue">Працягнуць</string>
|
||||
<string name="NoFilenameWarning">Не падобна, каб URI-адрас сканчаўся назвай файла. Вы ўвялі правільны адрас?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Хібны складаны ключ! Паспрабуйце яшчэ раз.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">Хібны складаны ключ! Каб разблакаваць базу даных, паспрабуйце выканаць наступныя дзеянні:\n
|
||||
|
||||
• Пераканайцеся, што ўводзіце правільны пароль. Націсніце значок вока, каб праверыць пароль.\n
|
||||
• Пераканайцеся, што абралі правільны тып пароля. Пераканайцеся, што абралі гэты тып падчас стварэння базы даных.\n
|
||||
• Пераканайцеся, што абралі правільны файл базы даных.
|
||||
</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Падказка: калі вы думаеце, што ваша база даных пашкоджаная або забыліся на галоўны пароль пасля яго змены, вы можаце паспрабаваць адкрыць апошнюю паспяхова адкрытую версію файла, націснуўшы \"%1$s\" і абраўшы лакальную рэзервовую копію.</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Падказка: Keepass2Android захоўвае ва ўнутраным сховішчы апошнюю паспяхова адкрытую версію файла. Яе можна адкрыць, націснуўшы \"%1$s\" і абраўшы лакальную рэзервовую копію.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp"> Файл пашкоджаны. \n
|
||||
Тут пададзена некалькі падказак, якія могуць дапамагчы развязаць гэтую праблему:\n
|
||||
|
||||
• Калі вы скапіявалі файл праз USB (Рэжым MTP), паспрабуйце яшчэ раз з дапамогай інструмента кшталту MyPhoneExplorer. MTP можа абразаць файлы.\n
|
||||
• Калі вы не можаце адкрыць файл нават з камп\'ютара, то хутчэй за ўсё файл пашкоджаны. Паспрабуйце адкрыць рэзервовую копію. Калі ёсць нагода вінаваціць у гэтым Keepass2Android, звяжыцеся з намі.\n
|
||||
• Калі файл адкрываецца з камп\'ютара, звяжыцеся з намі. Вы можаце захаваць файл з рознымі параметрамі і паспрабаваць адкрыць яго ў Keepass2Android.
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Адкрыць іншую базу даных…</string>
|
||||
<string name="select_database">Абраць базу даных</string>
|
||||
<string name="configure_child_dbs">Наладжванне даччыных базаў даных…</string>
|
||||
@@ -844,5 +863,6 @@
|
||||
<string name="AutofillWarning_Intro">Вы хочаце ўставіць уліковыя даныя для дамена \"%1$s\" у праграму \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Калі ёсць упэўненасць, што \"%2$s\" належыць \"%1$s\" або вы давяраеце \"%2$s\", не злоўжывайце ўліковымі данымі (напрыклад, гэта давераная праграма браўзера). Калі ўсё добра, можна працягнуць. Калі не, скасуйце.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Заўсёды ўхваляць у \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Налады клавіятуры Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Налады клавіятуры Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Отзив</string>
|
||||
<string name="AboutText">Keepass2Android е мениджър за пароли който осигурява достъп четене/записване до KeePass 2.x база данни на Android.</string>
|
||||
@@ -463,5 +463,6 @@
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
<string name="english_ime_settings">Настройки на клавиатурата на Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Настройки на клавиатурата на Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Suggeriments</string>
|
||||
<string name="AboutText">Keepass2Android és una implementació per Android de KeePass password manager.</string>
|
||||
@@ -755,5 +755,6 @@
|
||||
<string name="switch_ime_text">Si us plau, activa el teclat Keepass2Android.</string>
|
||||
<string name="switch_ime_reopen">Reintenta</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Acceptar sempre en \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Configuració del teclat d\'Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Configuració del teclat d\'Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Zpětná vazba</string>
|
||||
<string name="AboutText">Keepass2Android je správce hesel pro práci se soubory KeePass 2.x. na platformě Android.</string>
|
||||
@@ -717,19 +717,6 @@
|
||||
<string name="EntryChannel_desc">Upozornění pro usnadnění přístupu k momentálně zvolené položce.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Zavřít databázi po třech neúspěšných pokusech o odemknutí.</string>
|
||||
<string name="WarnFingerprintInvalidated">Varování! Biometrické ověření může být zneplatněno Androidem, např. po přidání nového otisku prstu do nastavení zařízení. Ujistěte se, že vždy víte, jak odemknout pomocí hlavního hesla!</string>
|
||||
<string-array name="ChangeLog_1_12">
|
||||
<item>Aktualizováno z Xamarin Android na .net 8</item>
|
||||
<item>Aktualizováno na Target SDK 34</item>
|
||||
<item>Aktualizováno na uživatelské rozhraní Material 3</item>
|
||||
<item>Vylepšení automatického vyplňování pro práci s aplikacemi Compose</item>
|
||||
<item>Oprava přiřazování názvů hostitelů v automatickém vyplňování a vyhledávání</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_12_net">
|
||||
<item>Aktualizováno OneDrive SDK na verzi 5.68</item>
|
||||
<item>Aktualizováno Dropbox SDK na verzi 7.0.0</item>
|
||||
<item>Aktualizován Gradle, NewtonsoftJson, FluentFTP, MegaApiClient a okhttp</item>
|
||||
<item>Oprava chyby ve výběru souborů WebDav</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_11">
|
||||
<item>Přidána plovoucí akční tlačítka pro vyhledávání a přehled TOTP (pokud jsou přítomny položky TOTP).</item>
|
||||
<item>Vylepšeno zobrazení polí TOTP přidáním indikátoru časového limitu a jeho výraznějším zobrazením.</item>
|
||||
@@ -1163,7 +1150,6 @@ První veřejné vydání
|
||||
<string name="AutofillWarning_Intro">Chystáte se vložit přihlašovací údaje pro doménu \"%1$s\" do aplikace \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Pokud věříte že \"%2$s\" patří k \"%1$s\", nebo důvěřujete \"%2$s\" že nezneužije přihlašovací údaje (např. pokud se jedná o důvěryhodný prohlížeč), můžete pokračovat. Pokud tomu tak není, zrušte prosím tuto akci.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Přijmout vždy v \"%1$s\"</string>
|
||||
<string name="kp2a_switch_on_sendgodone">Přepnout zpět po dokončení</string>
|
||||
<string name="kp2a_switch_on_sendgodone_summary">Přepnout zpět při stisknutí tlačítka odeslat/pokračovat/ukončit</string>
|
||||
<string name="english_ime_settings">Nastavení klávesnice Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Nastavení klávesnice Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Tilbagemelding</string>
|
||||
<string name="AboutText">Keepass2Android er en adgangskodehåndterings-app, der giver læse-/skriveadgang til KeePass 2.x-databaser på Android.</string>
|
||||
@@ -818,5 +818,6 @@
|
||||
<string name="AutofillWarning_Intro">Du er ved at indsætte legitimationsoplysninger for domæne \"%1$s\" i appen \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Hvis du stoler på at \"%2$s\" tilhører \"%1$s\", eller du stoler på at app\'en \"%2$s\" ikke misbruger legitimationsoplysningerne (f.eks. fordi det er en betroet browser app), er det ok at fortsætte. Ellers bedes du annullere.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Accepter altid i \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Indstillinger for Keepass2Android-tastatur</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Indstillinger for Keepass2Android-tastatur</string>
|
||||
|
||||
</resources>
|
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Feedback</string>
|
||||
<string name="AboutText">Keepass2Android ist ein Passwortmanager, der KeePass 2.x-Datenbanken verwalten kann.</string>
|
||||
<string name="AboutText">Keepass2Android ist ein Passwortmanager mit Lese- und Schreib-Zugriff auf KeePass 2.x Datenbanken.</string>
|
||||
<string name="CreditsText">Die Benutzeroberfläche basiert auf einem Port von Keepassdroid (entwickelt von Brian Pellin) nach Mono for Android. Der Code für die Datenbank-Operationen nutzt eine angepasste Version einer Bibliothek aus KeePass (entwickelt von Dominik Reichl).
|
||||
Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die Google durchgeführt und zur Verfügung gestellt hat; er wird nach den Bedingungen der Creative Commons 3.0 Attribution License genutzt.</string>
|
||||
<string name="CreditsTextSFTP">SFTP-Unterstützung ist implementiert unter Verwendung der JSch-Bibliothekvmit BSD-Lizenz der Fa. JCraft Inc.</string>
|
||||
<string name="CreditsTextSFTP">SFTP-Unterstützung ist implementiert unter Nutzung der JSch-Bibliothek (BSD-Lizenz), erstellt durch JCraft, Inc.</string>
|
||||
<string name="CreditsIcons">Das Hammer-Icon wurde von John Caserta (Noun Project) erstellt. Das Pinguin-Icon wurde von Adriano Emerick (Noun Project) erstellt. Das Feder-Icon wurde von Jon Testa (Noun Project) erstellt. Das Apfel-Icon wurde von Ava Rowell (Noun Project) erstellt. Das Bild-Icon stammt von https://icons8.com/icon/5570/Picture.</string>
|
||||
<string name="accept">Akzeptieren</string>
|
||||
<string name="deny">Verweigern</string>
|
||||
@@ -28,7 +28,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="application">Anwendung</string>
|
||||
<string name="application_settings">Anwendungseinstellungen</string>
|
||||
<string name="ShowGroupnameInSearchResult_title">Gruppennamen im Suchergebnis anzeigen</string>
|
||||
<string name="ShowGroupnameInSearchResult_resume">Gruppennamen unter den Eintragstiteln im Suchergebnis anzeigen. Nützlich, wenn es mehrere Einträge mit demselben Namen gibt.</string>
|
||||
<string name="ShowGroupnameInSearchResult_resume">Gruppennamen unter den Eintragstiteln im Suchergebnis anzeigen. Nützlich, wenn es mehrere Einträge mit dem selben Namen gibt.</string>
|
||||
<string name="NavigationToGroupCompleted_message">Angezeigte Gruppe ist jetzt: %1$s</string>
|
||||
<string name="AutofillDisabledQueriesPreference_title">Deaktivierte AutoFill-Ziele</string>
|
||||
<string name="AutofillDisabledQueriesPreference_summary">Zeigt eine Liste von Apps und Webseiten, für die AutoFill deaktiviert ist.</string>
|
||||
@@ -123,7 +123,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="entry_extra_strings">Zusätzliche Felder</string>
|
||||
<string name="entry_binaries">Datei-Anhänge</string>
|
||||
<string name="entry_history">Vorherige Versionen</string>
|
||||
<string name="error_can_not_handle_uri">Keepass2Android kann diese URI nicht verarbeiten.</string>
|
||||
<string name="error_can_not_handle_uri">Keepass2Android kann diese Adresse nicht verarbeiten.</string>
|
||||
<string name="error_could_not_create_group">Fehler beim Erstellen der Gruppe.</string>
|
||||
<string name="error_could_not_create_parent">Verzeichnis konnte nicht erstellt werden.</string>
|
||||
<string name="error_database_exists">Diese Datei existiert bereits.</string>
|
||||
@@ -295,7 +295,7 @@ Der Android Robot wird genutzt und wurde modifiziert basierend auf Arbeiten, die
|
||||
<string name="TanExpiresOnUse_title">TAN verfällt bei Verwendung</string>
|
||||
<string name="TanExpiresOnUse_summary">TAN-Einträge als abgelaufen markieren, wenn sie verwendet werden</string>
|
||||
<string name="ShowUsernameInList_title">Benutzernamen in Liste anzeigen</string>
|
||||
<string name="ShowUsernameInList_summary">Benutzernamen unter den Eintragstiteln anzeigen. Nützlich für mehrere Konten bei einem Dienst oder für TANs.</string>
|
||||
<string name="ShowUsernameInList_summary">Zeige Benutzernamen unter den Titeln der Einträge. Hilfreich bei mehreren Accounts für einen Dienst oder bei TANs.</string>
|
||||
<string name="RememberRecentFiles_title">Datenbanken merken</string>
|
||||
<string name="RememberRecentFiles_summary">Dateinamen der bisher geöffneten Datenbanken speichern und im Bildschirm zum Öffnen der Datenbank anzeigen.</string>
|
||||
<string name="NoDalVerification_title">Keine Digital-Asset-Link-Verifikation</string>
|
||||
@@ -1134,8 +1134,8 @@ Erstes öffentliches Release</string>
|
||||
<string name="backup_infotext_head">Gibt es eine Sicherung der Datenbank?</string>
|
||||
<string name="backup_infotext_main">Keepass2Android speichert die Passwörter in einer Datei an einem frei wählbarem Speicherort.Ist sichergestellt, dass die Datei auch dann noch verfügbar ist, wenn das Telefon verloren geht oder gestohlen wird, oder wenn die Datei zerstört oder gelöscht wird? Bitte sicherstellen, dass immer eine aktuelle Kopie an einem sichern Ort aufbewahrt wird!</string>
|
||||
<string name="backup_infotext_note">Um jetzt eine Sicherung zu erstellen, nach %1$s > %2$s > %3$s gehen.</string>
|
||||
<string name="emergency_infotext_head">Hast du für Notfälle vorgesorgt?</string>
|
||||
<string name="emergency_infotext_main">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.</string>
|
||||
<string name="emergency_infotext_head">Ist man auf Notfälle vorbereitet?</string>
|
||||
<string name="emergency_infotext_main">Wurde schon einmal darüber nachgedacht, was passiert, wenn man keinen Zugriff mehr zu seiner Passwortdatenbank hat? Was ist, wenn man einen Unfall hat? Es ist eine vernünftige Maßnahme, den Hauptschlüssel für Notfälle an eine vertrauenswürdige Person weiterzugeben. Andernfalls hat niemand Zugang zu den Passwörtern.</string>
|
||||
<string name="no_secure_display">Der aktuell gültige Bildschirm ist nicht als sicher eingestuft. Das bedeutet, dass Bildschirmfotos von anderen Anwendungen erstellt werden könnten. Keepass2Android ist so konfiguriert, dass sensible Informationen nur auf sicheren Bildschirmen angezeigt werden. Bitte zu einem sicheren Bildschirm wechseln (z. B. durch Abklemmen eines HDMI-Monitors) oder die App-Einstellungen ändern.</string>
|
||||
<string name="disable_secure_screen_check">Diese Nachricht deaktivieren</string>
|
||||
<string name="switch_ime_text">Bitte die Keepass2Android-Tastatur aktivieren.</string>
|
||||
@@ -1144,7 +1144,6 @@ Erstes öffentliches Release</string>
|
||||
<string name="AutofillWarning_Intro">Hiermit werden Anmeldeinformationen für die Domäne „%1$s“ in die Anwendung „%2$s“ eingefügt.</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Wenn darauf vertraut wird, dass „%2$s“ zu „%1$s“ gehört, oder wenn darauf vertraut wird, dass die App „%2$s“ die Anmeldeinformationen nicht missbraucht (z. B. weil es sich um eine vertrauenswürdige Browser-App handelt), kann fortgefahren werden. Falls nicht, bitte abbrechen.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Für „%1$s“ immer akzeptieren</string>
|
||||
<string name="kp2a_switch_on_sendgodone">Tastatur zurückwechseln wenn fertig</string>
|
||||
<string name="kp2a_switch_on_sendgodone_summary">Beim Drücken von Senden/Los/Fertig zurückschalten</string>
|
||||
<string name="english_ime_settings">Android-Tastatureinstellungen</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Keepass2Android-Tastatureinstellungen</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Σχόλια</string>
|
||||
<string name="AboutText">Το KP2A είναι ένας διαχειριστής συνθηματικών, που παρέχει την δυνατότητα ανάγνωσης/εγγραφής σε βάσεις δεδομένων του KeePass 2.x στο Android.</string>
|
||||
@@ -865,5 +865,6 @@
|
||||
<string name="AutofillWarning_Intro">Πρόκειται να εισάγετε διαπιστευτήρια για τον τομέα \"%1$s\" στην εφαρμογή \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Εάν εμπιστεύεστε ότι το \"%2$s\" ανήκει στο \"%1$s\" ή εμπιστεύεστε ότι η εφαρμογή \"%2$s\" δεν καταχράται τα διαπιστευτήρια (πχ. επειδή είναι μια αξιόπιστη εφαρμογή περιήγησης), είναι εντάξει να συνεχίσετε. Αν όχι, ακυρώστε.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Αποδοχή πάντα στο \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Ρυθμίσεις πληκτρολογίου Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Ρυθμίσεις πληκτρολογίου Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Sugerencias</string>
|
||||
<string name="AboutText">Keepass2Android es una implementación completa para Android del gestor de contraseñas KeePass 2.x.</string>
|
||||
@@ -681,15 +681,14 @@
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Sugerencia: Si piensas que la Base de Datos está dañada o no recuerdas la contraseña maestra después de cambiarla, inténtalo con la última versión de la Base de Datos abierta con éxito pulsando en \"%1$s\" y seleccionando la copia local.
|
||||
</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Sugerencia: Keepass2Android ha almacenado la última versión del archivo abierto con éxito en el almacenamiento interno. Puedes abrirlo tocando \"%1$s\" y seleccionando la copia de seguridad local.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp"> El archivo está corrupto. \n
|
||||
Aquí hay algunas sugerencias que podrían ayudar a diagnosticar el problema:\n
|
||||
<string name="HintLocalBackupOtherError">\n
|
||||
Consejo: Keepass2Android ha guardado la última versión de la base de datos que abriste con éxito en la memoria interna. Puedes abrirlo tocando \"%1$s\" y seleccionando la copia de seguridad local.</string>
|
||||
<string name="CorruptDatabaseHelp"> El Archivo está dañado. \n
|
||||
Estas son algunas sugerencias que pueden ayudarle a diagnosticar el problema:\n
|
||||
|
||||
• Si copiaste el archivo a través de USB ( modo MTP), por favor inténtalo de nuevo usando una herramienta como MyPhoneExplorer. MTP trunca los archivos en ciertos casos.\n
|
||||
• Si no puedes abrir el archivo desde la misma localización en tu PC, es muy probable que el archivo en realidad esté corrupto. En ese caso, por favor usa una copia de seguridad de la base de datos. Si asumes que Keepass2Android ha corrompido el archivo, por favor contacta con el equipo de soporte.\n
|
||||
• Si aún puedes abrir el archivo en tu PC, por favor contacta con el equipo de soporte. Podrías intentar guardarlo con una configuración diferente (p.ej. descomprimido) en el PC y volver a intentar abrirlo en Keepass2Android.
|
||||
• Si usted copió el archivo por medio de USB (Modo MTP), por favor inténtelo de nuevo con herramientas como MyPhoneExplorer. MTP trunca archivos en algunas ocasiones.\n
|
||||
• Si usted no puede abrir el archivo desde la misma ubicación en su PC, es muy probable que el archivo esté dañado. Por favor use un respaldo de la base de datos. Si usted cree que Keepass2Android ha dañado el archivo, por favor contacte a soporte.\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.
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Abrir otrar base de datos…</string>
|
||||
@@ -1175,7 +1174,6 @@
|
||||
<string name="AutofillWarning_Intro">Está a punto de insertar credenciales para el dominio \"%1$s\" en la aplicación \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Si confía en que \"%2$s\" pertenece a \"%1$s\", o confía en que la aplicación \"%2$s\" no utilizará mal las credenciales (p. e. porque es una aplicación de navegador de confianza), está bien continuar. Si no, por favor cancele.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Aceptar siempre en \"%1$s\"</string>
|
||||
<string name="kp2a_switch_on_sendgodone">Volver cuando termine</string>
|
||||
<string name="kp2a_switch_on_sendgodone_summary">Volver cuando se presione enviar/ir/finalizado</string>
|
||||
<string name="english_ime_settings">Ajustes del teclado de Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Ajustes del teclado de Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Iruzkinak</string>
|
||||
<string name="AboutText">Keepass2Android pasahitz kudeatzaile bat da, Androiden KeePass 2.x datu-baseetan irakurketa/idazketa ahalbideratzen duena. </string>
|
||||
@@ -435,5 +435,6 @@
|
||||
<item>Ohartarazi balidazioak huts egitean</item>
|
||||
<item>Do not accept invalid certificates</item>
|
||||
</string-array>
|
||||
<string name="english_ime_settings">Android teklatuaren ezarpenak</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Android teklatuaren ezarpenak</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">ﺑﺎﺯﺧﻮﺭﺩ</string>
|
||||
<string name="AboutText">برنامهٔ Keepass2Android یک برنامهٔ مدیریت گذرواژه است که دسترسی خواندنی/نوشتنی به پایگاهدادههای KeePass 2.x را در اندروید فراهم میکند.</string>
|
||||
@@ -788,5 +788,6 @@ mycloud.me.com/webdav/ )</string>
|
||||
<string name="AutofillWarning_Intro">در حال واردکردن اطلاعات شناسایی برای دامنهٔ «%1$s» در برنامهٔ «%2$s» هستید.</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">اگر اعتماد دارید که «%2$s» به «%1$s» تعلق دارد یا اعتماد دارید که برنامهٔ «%2$s» از اطلاعات شناسایی سوءاستفاده نمیکند (مثلاً مرورگری قابلاعتماد است)، بدون نگرانی ادامه دهید، در غیر این صورت لغو کنید.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">در «%1$s» همیشه بپذیر</string>
|
||||
<string name="english_ime_settings">تنظیمات صفحه کلید Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">تنظیمات صفحه کلید Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Palaute</string>
|
||||
<string name="AboutText">Keepass2Android on salasanojen hallintaohjelma, jolla voit katsella ja muokata KeePass 2.x tietokantoja Androidilla.</string>
|
||||
@@ -763,5 +763,6 @@
|
||||
<string name="no_secure_display">Nykyistä näyttöä ei ole merkitty turvalliseksi. Tämä tarkoittaa sitä että muut sovellukset voivat tehdä kuvankaappauksen. Keepass2Android on näyttää arkaluontoisia tietoja vain suojatuissa näytöissä. Vaihda suojattuun näyttöön (esimerkiksi irrottamalla HDMI-näyttö) tai muuta sovelluksen asetuksia.</string>
|
||||
<string name="disable_secure_screen_check">Poista tämä viesti käytöstä</string>
|
||||
<string name="switch_ime_reopen">Yritä uudelleen</string>
|
||||
<string name="english_ime_settings">Keepass2Android-näppäimistön asetukset</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Keepass2Android-näppäimistön asetukset</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Commentaires </string>
|
||||
<string name="AboutText">Keepass2Android est un gestionnaire de mot de passe pour Android permettant de lire et écrire des bases de données KeePass 2.x.</string>
|
||||
@@ -672,24 +672,24 @@
|
||||
<string name="Continue">Suivant</string>
|
||||
<string name="NoFilenameWarning">L\'URI que vous avez entré ne ressemble pas à un nom de fichier. Etes-vous sûr qu\'il s\'agit d\'un fichier valide ?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Clé composite invalide ! S\'il vous plaît essayez encore.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp"> Clé composite non valide ! Veuillez essayer les étapes suivantes pour déverrouiller votre base de données :\n
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">Clé composite invalide ! Veuillez essayer les étapes suivantes pour déverrouiller votre base de données :\n
|
||||
|
||||
• Assurez-vous que vous avez saisi le bon mot de passe. Utilisez l\'icône en forme d\'œil pour révéler le mot de passe saisi.\n
|
||||
• Assurez-vous que vous avez sélectionné le bon type de mot de passe et qu\'il correspond à celui utilisé lors de la création de la base de données.\n
|
||||
• Assurez-vous que vous avez sélectionné le bon fichier de base de données.
|
||||
• Assurez-vous d\'avoir saisi le bon mot de passe. Utilisez l\'icône de l\'œil pour révéler le mot de passe saisi.\n
|
||||
• Assurez-vous d\'avoir sélectionné le bon type de mot de passe. Assurez-vous qu\'il correspond au type utilisé lors de la création de la base de données.\n
|
||||
• Assurez-vous d\'avoir sélectionné le bon fichier de base de données.
|
||||
</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Indice : si vous pensez que votre fichier de base de données est corrompu ou que vous ne vous souvenez pas de la clé principale après l\'avoir modifiée, vous pouvez essayer avec la dernière version du fichier ouverte avec succès en appuyant sur « %1$s » et en sélectionnant la sauvegarde locale.
|
||||
• Astuce : si vous pensez que votre fichier de base de données est corrompu ou que vous ne vous souvenez pas de la clé principale après l\'avoir modifiée, vous pouvez essayer avec la dernière version du fichier ouverte avec succès en appuyant sur \"%1$s\" et en sélectionnant la sauvegarde locale.
|
||||
</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Indice : Keepass2Android a enregistré la dernière version de fichier ouverte avec succès sur le stockage interne. Vous pouvez l\'ouvrir en appuyant sur « %1$s » et en sélectionnant la sauvegarde locale.
|
||||
• Astuce : Keepass2Android a stocké la dernière version du fichier ouvert avec succès sur le stockage interne. Vous pouvez l\'ouvrir en appuyant sur \"%1$s\" et en sélectionnant la sauvegarde locale.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp"> Le fichier est corrompu.\n
|
||||
Voici quelques conseils qui pourraient aider à diagnostiquer le problème :\n
|
||||
<string name="CorruptDatabaseHelp"> Le fichier est corrompu. \n
|
||||
Voici quelques conseils qui pourraient vous aider à diagnostiquer le problème :\n
|
||||
|
||||
• Si vous avez copié le fichier via USB (mode MTP), essayez à nouveau en utilisant un outil comme MyPhoneExplorer. MTP tronque les fichiers dans certains cas.\n
|
||||
• Si vous ne pouvez pas ouvrir le fichier à partir du même emplacement sur votre PC, il est très probable que le fichier soit corrompu. Veuillez alors utiliser une sauvegarde de la base de données. Si vous pensez que Keepass2Android a corrompu le fichier, veuillez contacter l\'équipe d\'assistance.\n
|
||||
• Si vous pouvez toujours ouvrir le fichier sur votre PC, essayez de l\'enregistrer avec des paramètres différents (par ex. décompressé) sur le PC et réessayer de l\'ouvrir dans Keepass2Android. Sinon, veuillez contacter l\'équipe d\'assistance.
|
||||
• Si vous avez copié le fichier via USB (mode MTP), essayez à nouveau en utilisant un outil comme MyPhoneExplorer. Le mode MTP tronque les fichiers dans certains cas.\n
|
||||
• Si vous ne pouvez pas ouvrir le fichier à partir du même emplacement sur votre PC, il est très probable que le fichier soit corrompu. Veuillez alors utiliser une sauvegarde de la base de données. Si vous pensez que Keepass2Android a corrompu le fichier, veuillez contacter le support.\n
|
||||
• Si vous pouvez toujours ouvrir le fichier sur votre PC, veuillez contacter le support. Vous pouvez essayer de le sauvegarder avec des paramètres différents (ex. le décompresser) sur le PC et réessayer de l\'ouvrir dans Keepass2Android.
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Ouvrir une autre base de données…</string>
|
||||
@@ -719,13 +719,6 @@
|
||||
<string name="EntryChannel_desc">Notification pour simplifier l\'accès à l\'entrée actuellement sélectionnée.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Fermer la base de données après trois tentatives de déverrouillage biométrique échouées.</string>
|
||||
<string name="WarnFingerprintInvalidated">Attention ! L\'authentification biométrique peut être invalidée par Android, par ex. après avoir ajouté une nouvelle empreinte digitale dans les paramètres de votre appareil. Assurez-vous de toujours savoir comment déverrouiller avec votre mot de passe maître !</string>
|
||||
<string-array name="ChangeLog_1_12">
|
||||
<item>Mise à niveau de Xamarin Android vers. net 8</item>
|
||||
<item>Mise à niveau vers Target SDK 34</item>
|
||||
<item>Mise à niveau vers l\'interface utilisateur Material 3</item>
|
||||
<item>Improve autofill to work with Compose apps</item>
|
||||
<item>Fix hostname matching in autofill and search</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_11">
|
||||
<item>Ajout de boutons d\'action flottants pour la recherche et l\'aperçu TOTP (si des entrées TOTP sont présentes).</item>
|
||||
<item>Amélioration de l\'affichage des champs TOTP en ajoutant un indicateur de dépassement de délai et en le montrant plus en évidence.</item>
|
||||
@@ -911,5 +904,6 @@
|
||||
<string name="AutofillWarning_Intro">Vous êtes sur le point d\'insérer des identifiants pour le domaine \"%1$s\" dans l\'application \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Si vous faites confiance à \"%2$s\" pour appartenir à \"%1$s\" ou que vous faites confiance à l\'application \"%2$s\" pour ne pas abuser des identifiants (ex. parce que c\'est une application de navigateur de confiance), il est possible de continuer. Si ce n\'est pas le cas, veuillez annuler.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Accepter toujours dans \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Paramètres du clavier Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Paramètres du clavier Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.net-->
|
||||
<resources>
|
||||
<string name="about_feedback">Suxestións (feedback)</string>
|
||||
<string name="AboutText">Keepass2Andoird é un xestor de contrasinais que aporta acceso de lectura/escritura ás bases de datos KeePass 2.x de Android.</string>
|
||||
|
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.net-->
|
||||
<resources>
|
||||
<string name="about_feedback">משוב</string>
|
||||
<string name="AboutText">Keepass2Android הוא מנהל סיסמאות המאפשר לקרוא/לכתוב מסדי נתונים של KeePass2 באנדרואיד.</string>
|
||||
@@ -269,5 +270,4 @@
|
||||
<item>KP2A Private/Public key</item>
|
||||
<item>Custom Private key</item>
|
||||
</string-array>
|
||||
<string name="english_ime_settings">הגדרות של מקלדת אנדרואיד</string>
|
||||
</resources>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Povratna informacija</string>
|
||||
<string name="AboutText">Keepass2Android je upravitelj lozinki koji pruža pregled i uređivanje KeePass 2.x baza podataka na Android uređajima.</string>
|
||||
@@ -755,5 +755,6 @@
|
||||
<string name="switch_ime_reopen">Pokušaj ponovno</string>
|
||||
<string name="AutofillWarning_title">Upozorenje Sigurnosti: Nepoznata domena/veza aplikacije</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Prehvati uvijek u \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Postavke tipkovnice za Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Postavke tipkovnice za Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Visszajelzés</string>
|
||||
<string name="AboutText">Keepass2Android egy jelszókezelő alkalmazás, amely KeePass 2.x adatbázisokhoz írás-olvasási hozzáférést biztosít Android eszközökön.</string>
|
||||
@@ -766,5 +766,6 @@
|
||||
<string name="AutofillWarning_Intro">A(z) \"%1$s\" tartományhoz tartozó azonosítókat készül a(z) \"%2$s\" alkalmazás számára elérhetővé tenni.</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Ha megbízik abban, hogy a(z) \"%1$s\" tartomány a(z) \"%2$s\" alkalmazáshoz tartozik, vagy megbízik abban, hogy az alkalmazás nem él vissza a titkos adatokkal (mert például egy megbízható böngészőprogram), folytassa. Ha nem, szakítsa meg a folyamatot.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Mindig fogadja el itt: \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Keepass2Android billentyűzetbeállítások</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Keepass2Android billentyűzetbeállítások</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.net-->
|
||||
<resources>
|
||||
<string name="about_feedback">Umpan balik</string>
|
||||
<string name="AboutText">Keepass2Android adalah pengelola sandi yang menyediakan akses baca/tulis ke basis data KeePass 2.x pada Android.</string>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Commenti</string>
|
||||
<string name="AboutText">Keepass2Android è un gestore di password per Android che supporta l\'accesso in lettura/scrittura ai database di KeePass 2.x.</string>
|
||||
@@ -672,6 +672,26 @@
|
||||
<string name="Continue">Continua</string>
|
||||
<string name="NoFilenameWarning">L\'URI inserito non sembra il nome di un file. Sei sicuro che sia un file valido?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Chiave composita non valida! Riprova.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp"> Chiave composita non valida! Prova i seguenti passaggi per sbloccare il database:\n
|
||||
|
||||
• Assicurati di aver inserito la password corretta. Usa l\'icona occhio per rivelare la password inserita.\n
|
||||
• Assicurati di aver selezionato il tipo di password corretto. Assicurarsi che questo corrisponda al tipo usato durante la creazione del database.\n
|
||||
• Assicurati di aver selezionato il file database corretto.
|
||||
</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Dritta: Se pensi che il tuo file di database possa essere danneggiato o non ricordi la chiave principale dopo averla modificata, puoi provare con l\'ultima versione del file aperta correttamente toccando \"%1$s\" e selezionando il backup locale.
|
||||
</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Dritta: Keepass2Android ha memorizzato l\'ultima versione del file aperta crrettamente nella memoria interna. Puoi aprirla toccando \"%1$s\" e selezionando il backup locale.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp">Il file è danneggiato. \n
|
||||
Ecco alcune dritte che potrebbero aiutare a diagnosticare il problema:\n
|
||||
|
||||
• Se hai copiato il file su USB (in modo MTP), per favore riprova usando uno strumento come MyPhoneExplorer. MTP in alcuni casi tronca i file.\n
|
||||
• Se non puoi aprire il file dalla stessa posizione sul tuo PC, è molto probabile che il file sia in realtà danneggiato. Usare un backup del database. Se si assume che Keepass2Android abbia corrotto il file, contattare il gruppo di assistenza.\n
|
||||
• Se puoi ancora aprire il file sul tuo PC, contatta il gruppo di assistenza. Potresti provare a salvarlo con diverse impostazioni (ad esempio non compresso) sul PC e riprovare ad aprire in Keepass2Android.
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Apri un altro database…</string>
|
||||
<string name="select_database">Seleziona il database</string>
|
||||
<string name="configure_child_dbs">Configura i database figli…</string>
|
||||
@@ -989,5 +1009,6 @@
|
||||
<string name="AutofillWarning_Intro">Stai per inserire le credenziali per il dominio \"%1$s\" nell\'app \"%2$s\"</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Se ti fidi di \"%2$s\" ad appartenere a \"%1$s\" o se ti fidi dell\'app \"%2$s\" a non abusare delle credenziali (es. perché si tratta di un\'applicazione sicura), è possibile continuare. Altrimenti si prega di annullare.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Accetta sempre in \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Impostazioni tastiera Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Impostazioni tastiera Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">フィードバック</string>
|
||||
<string name="AboutText">Keepass2Android は Android で KeePass 2.x データベースを読み書きするパスワードマネージャーです。</string>
|
||||
@@ -643,7 +643,7 @@
|
||||
<string name="ReadOnlyReason_PreKitKat">外部アプリからファイルを開いたようです。ファイルへの書き込みはできません。データベースを編集する場合は、データベースを閉じて「データベースを変更」を選択してください。対応している場合は、いずれかのオプションからファイルを開くことができます。</string>
|
||||
<string name="ReadOnlyReason_ReadOnlyFlag">読み取り専用フラグが設定されます。データベースを編集する場合は、このフラグを削除してください。</string>
|
||||
<string name="ReadOnlyReason_ReadOnlyKitKat">Android KitKat で導入された制限のため、書き込みは不可能です。データベースを編集する場合は、データベースを閉じて「データベースを変更」を選択してください。その後、システムのファイル選択を使用してファイルを開いてください。</string>
|
||||
<string name="ReadOnlyReason_LocalBackup">ローカルバックアップは変更できません。[データベースの設定] > [データベースをエクスポート] から、この自由に開ける場所へエクスポートしてください。その後、再び書き込み可能になります。</string>
|
||||
<string name="ReadOnlyReason_LocalBackup">ローカルバックアップは変更できません。[データベースの設定] > [データベースをエクスポート] から、この自由に開ける場所へエクスポートしてください。その後、再び書き込み可能になります。</string>
|
||||
<string name="AddCustomIcon">ファイルからアイコンを追加...</string>
|
||||
<string name="CopyingFile">ファイルをコピーしています...</string>
|
||||
<string name="DuplicateTitle">コピー</string>
|
||||
@@ -718,19 +718,6 @@
|
||||
<string name="EntryChannel_desc">選択中のエントリーへ簡単にアクセスするための通知</string>
|
||||
<string name="CloseDbAfterFailedAttempts">生体認証ロック解除に 3 回失敗すると、データベースを閉じます。</string>
|
||||
<string name="WarnFingerprintInvalidated">警告! 生体認証は、例えば、新たな指紋をデバイスに追加したときなどに Android によって無効にされる可能性があります。常にマスターパスワードによる解除方法を覚えておいてください!</string>
|
||||
<string-array name="ChangeLog_1_12">
|
||||
<item>Xamarin Android から .net 8 にアップグレード</item>
|
||||
<item>ターゲットを SDK 34 にアップグレード</item>
|
||||
<item>ユーザーインターフェイスを Material 3 にアップグレード</item>
|
||||
<item>Compose アプリでの自動入力機能を改善</item>
|
||||
<item>自動入力と検索でホスト名の一致条件を修正</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_12_net">
|
||||
<item>OneDrive SDK をバージョン 5.68 にアップグレード</item>
|
||||
<item>Dropbox SDK をバージョン 7.0.0 にアップグレード</item>
|
||||
<item>Gradle、NewtonsoftJson、FluentFTP、MegaApiClient、okhttp をアップグレード</item>
|
||||
<item>WebDav ファイル選択のバグを修正</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_11">
|
||||
<item>検索と TOTP 一覧 (TOTP エントリーが存在する場合) のフローティングアクションボタンを追加</item>
|
||||
<item>タイムアウト表示を追加し、より目立つように TOTP フィールドの表示を改善</item>
|
||||
@@ -1194,5 +1181,6 @@
|
||||
<string name="AutofillWarning_Intro">ドメイン「%1$s」のアカウント情報をアプリ「%2$s」に挿入しようとしています。</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">「%2$s」が信頼できて「%1$s」に属するか、アプリ「%2$s」を信頼していて、アカウント情報の誤用ではない場合 (信頼できるブラウザアプリなど) であれば続行しても問題ありません。そうでない場合はキャンセルしてください。</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">常に「%1$s」に同意</string>
|
||||
<string name="english_ime_settings">Keepass2Android キーボードの設定</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Keepass2Android キーボードの設定</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">의견 보내기</string>
|
||||
<string name="AboutText">Keepass2Android는 Android에서 KeePass 2.x 데이터베이스에 대한 읽기/쓰기 액세스를 제공하는 암호 관리자입니다.</string>
|
||||
@@ -745,5 +745,6 @@ Keepass2Android는 오프라인에서도 데이터베이스 파일의 사용이
|
||||
<string name="AutofillWarning_Intro">\"%2$s\" 앱을 통해 \"%1$s\" 도메인에 신용 정보를 입력하려고 합니다</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">\"%1$s\"를 통해서 \"%2$s\"를 사용 하는 것에 대해 신뢰하시거나 \"%2$s\" 앱이 신용 정보를 남용하지 않을 것이라고 신뢰하신다면 (예: 검증된 브라우저 앱의 경우), 계속 하셔도 괜찮습니다. 그렇지 않다면 취소해 주십시오.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">항상 \"%1$s\" 앱을 쓰는 경우를 제외함</string>
|
||||
<string name="english_ime_settings">Keepass2Android 키보드 설정</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Keepass2Android 키보드 설정</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">അഭിപ്രായം</string>
|
||||
<string name="accept">അംഗീകരിക്കുക</string>
|
||||
@@ -221,5 +221,5 @@
|
||||
</string-array>
|
||||
<string name="understand">എനിക്ക് മനസിലായി</string>
|
||||
<string name="dont_show_again">വീണ്ടും കാണിക്കരുത്</string>
|
||||
<string name="english_ime_settings">ആൻഡ്രോയിഡ് കീബോർഡ് ക്രമീകരണങ്ങൾ</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">ആൻഡ്രോയിഡ് കീബോർഡ് ക്രമീകരണങ്ങൾ</string>
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Tilbakemelding</string>
|
||||
<string name="AboutText">Keepass2Android er en android-utgave av KeePass passordbestyrer.</string>
|
||||
@@ -589,5 +589,6 @@
|
||||
<string name="backup_infotext_note">For å opprette en sikkerhetskopi nå, gå til %1$s > %2$s > %3$s.</string>
|
||||
<string name="emergency_infotext_head">Er du forberedt på nødssituasjoner?</string>
|
||||
<string name="emergency_infotext_main">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.</string>
|
||||
<string name="english_ime_settings">Innstillinger for Keepass2Android tastatur</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Innstillinger for Keepass2Android tastatur</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Terugkoppeling</string>
|
||||
<string name="AboutText">Keepass2Android is een wachtwoordbeheerder die lees-/schrijftoegang biedt tot KeePass 2.x-databases op Android.</string>
|
||||
@@ -977,5 +977,6 @@ ChangeLog_1_05 </string>
|
||||
<string name="AutofillWarning_Intro">Je staat op het punt, om inloggegevens voor domein \"%1$s\" in te voegen in de app \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Als je vertrouwt dat \"%2$s\" tot \"%1$s\" behoort, of je vertrouwt dat app \"%2$s\" de inloggegevens niet misbruikt (bijvoorbeeld omdat het een vertrouwde browser-app is), kun je doorgaan. Anders annuleren.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Altijd accepteren in \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Instellingen voor Keepass2Android-toetsenbord</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Instellingen voor Keepass2Android-toetsenbord</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.net-->
|
||||
<resources>
|
||||
<string name="about_feedback">Tilbakemelding</string>
|
||||
<string name="AboutText">Keepass2Android er ei android-utgåve av KeePass passordstyrar.</string>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Opinie</string>
|
||||
<string name="AboutText">Keepass2Android to menedżer haseł umożliwiający odczyt i zapis baz danych programu KeePass 2.x w systemie Android.</string>
|
||||
@@ -900,5 +900,6 @@
|
||||
<string name="AutofillWarning_Intro">Zamierzasz wstawić poświadczenia dla domeny \"%1$s\" do aplikacji \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Jeśli ufasz \"%2$s\" należącym do \"%1$s\" lub ufasz aplikacji \"%2$s\", aby nie używać danych logowania (np. ponieważ jest to zaufana aplikacja przeglądarki), jest w porządku, aby kontynuować. Jeśli nie, proszę anulować.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Akceptuj zawsze w \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Ustawienia klawiatury Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Ustawienia klawiatury Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Comentários</string>
|
||||
<string name="AboutText">Keepass2Android é uma implementação do gerenciador de senhas KeePass.</string>
|
||||
@@ -721,19 +721,6 @@
|
||||
<string name="EntryChannel_desc">Notificação para simplificar o acesso à entrada selecionada.</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Fechar banco de dados após três tentativas de desbloqueio biométrico falhadas.</string>
|
||||
<string name="WarnFingerprintInvalidated">Alerta! Autenticação biométrica pode ser invalidada pelo Android, por exemplo: depois de adicionar uma nova digital nas configurações do seu dispositivo. Esteja certo de sempre saber como desbloquear com sua senha mestra!</string>
|
||||
<string-array name="ChangeLog_1_12">
|
||||
<item>Atualizado de Xamarin Android para .NET 8</item>
|
||||
<item>Atualizado para o Target SDK 34</item>
|
||||
<item>Atualizado para a interface de usuário Material 3</item>
|
||||
<item>Melhorado o preenchimento automático para trabalhar com aplicativos Compose</item>
|
||||
<item>Corrigido a correspondência do nome do host em preenchimento automático e pesquisa</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_12_net">
|
||||
<item>Atualizado o OneDrive SDK para a versão 5.68</item>
|
||||
<item>Dropbox SDK atualizado para a versão 7.0.0</item>
|
||||
<item>Atualizado Gradle, Newtonsoftjson, Fluentftp, Megaapiclient e okhttp</item>
|
||||
<item>Correção na seleção de arquivo WebDav</item>
|
||||
</string-array>
|
||||
<string-array name="ChangeLog_1_11">
|
||||
<item>Adicionados botões de ação flutuantes para pesquisa e visão geral do TOTP (se entradas TOTP estiverem presentes).</item>
|
||||
<item>Exibição aprimorada de campos TOTP adicionando um indicador de tempo limite e mostrando-o com mais destaque.</item>
|
||||
@@ -1197,7 +1184,6 @@
|
||||
<string name="AutofillWarning_Intro">Você esta prestes a inserir credenciais do domínio \"%1$s\" no app \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Se você confia em \"%2$s\" para pertencer \"%1$s\" ou se você confia no app \"%2$s\" a não mal-usar as credenciais (ex. por causa de um app de navegador confiável), é ok para continuar. Se não, por favor cancele.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Aceitar sempre em \"%1$s\"</string>
|
||||
<string name="kp2a_switch_on_sendgodone">Voltar quando terminar</string>
|
||||
<string name="kp2a_switch_on_sendgodone_summary">Voltar ao pressionar enviar/ir/concluído</string>
|
||||
<string name="english_ime_settings">Configurações do teclado Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Configurações do teclado Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Opinião</string>
|
||||
<string name="AboutText">Keepass2Android é um gestor de palavras-passe, que fornece acesso de leitura/gravação às bases de dados do KeePass 2.x em Android.</string>
|
||||
@@ -672,6 +672,26 @@
|
||||
<string name="Continue">Continuar</string>
|
||||
<string name="NoFilenameWarning">A URI inserida não parece ser um nome de ficheiro. Tem a certeza que este é um ficheiro válido?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Chave composta inválida! Por favor, tente novamente.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp"> Chave composta inválida! Tente os seguintes passos para desbloquear a sua base de dados:\n
|
||||
|
||||
• Certifique-se que introduziu a palavra-passe correta. Utilize o ícone do olho para ver a palavra-passe introduzida.\n
|
||||
• Certifique-se que selecionou o tipo de palavra-passe correto. Certifique-se que este corresponde ao tipo utilizado quando criou a base de dados.\n
|
||||
• Certifique-se que selecionou o ficheiro da base de dados correto.
|
||||
</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• Dica: se pensa que o ficheiro da base de dados pode estar corrompido ou se não se lembra da chave-mestra depois de o alterar, pode tentar com a última versão do ficheiro aberta com êxito tocando em \"%1$s\" e selecionar a cópia de segurança local.
|
||||
</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
• Sugestão: o Keepass2Android guardou a última versão do ficheiro aberta com êxito no armazenamento interno. Pode abri-la tocando em \"%1$s\" e selecionar a cópia de segurança local.
|
||||
</string>
|
||||
<string name="CorruptDatabaseHelp"> O ficheiro está corrompido. \n
|
||||
Eis algumas sugestões para ajudar a diagnosticar o problema:\n
|
||||
|
||||
• Se tiver copiado o ficheiro através de USB (modo MTP), tente novamente utilizando uma ferramenta como o MyPhoneExplorer. O MTP trunca os ficheiros em determinados casos.\n
|
||||
• Se não conseguir abrir o ficheiro a partir da mesma localização no seu PC, é muito provável que o ficheiro esteja realmente corrompido. Por favor, use uma cópia de segurança da base de dados. Se acha que o Keepass2Android corrompeu o ficheiro, entre em contacto com a equipa de suporte.\n
|
||||
• Se ainda conseguir abrir o ficheiro no seu PC, contacte a equipa de apoio. Pode tentar gurdá-lo com configurações diferentes (por exemplo, descompactado) no PC e tentar abrir novamente no Keepass2Android.
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Abrir outra base de dados…</string>
|
||||
<string name="select_database">Escolher a base de dados</string>
|
||||
<string name="configure_child_dbs">Configurar bases de dados filhas…</string>
|
||||
@@ -1152,5 +1172,6 @@ Não há forma de fazer \"reset\" à chave mestra.</string>
|
||||
<string name="AutofillWarning_Intro">Está prestes a inserir credenciais para o domínio \"%1$s\" na aplicação \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Se confia em \"%2$s\" para pertencer a \"%1$s\" ou confia na aplicação \"%2$s\" para que esta não utilize indevidamente as credenciais (por ex. por ser uma aplicação de navegação confiável), pode continuar. Caso contrário cancele.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Aceitar sempre em \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Configurações de teclado Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Configurações de teclado Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,15 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Feedback</string>
|
||||
<string name="AboutText">Keepass2Android este un manager de parole ce oferă citire/scriere la baze de date KeePass 2.x pe Android.</string>
|
||||
<string name="CreditsText">Interfaţa cu utilizatorul este bazată pe un port al KeepassDroid dezvoltat de Brian Pellin. Codul pentru operaţiunile cu baza de date este bazat pe KeePass de Dominik Reichl. Robotul Android este reprodus sau modificate din materiale create şi împărtăşite de Google şi utilizate în conformitate cu condiţiile descrise de licenţa Creative Commons Attribution 3.0.</string>
|
||||
<string name="CreditsTextSFTP">Suportul pentru SFTP este implementat folosind librăria JSch sub licență BDS, creată de JCraft, Inc.</string>
|
||||
<string name="CreditsIcons">Iconița cu un ciocan este creată de John Caserta de la proiectul Noun. Cea cu un pinguin este realizată de Jon Testa de la același proiect. Iconița cu un măr este creată de Ava Rowell de la proiectul Noun fiind și ea. Iconița-imagine este de pe https://icons8.com/icon/5570/Picture.</string>
|
||||
<string name="accept">Acceptă</string>
|
||||
<string name="accept">Accepta</string>
|
||||
<string name="deny">Interzice</string>
|
||||
<string name="add_entry">Adăugă o înregistrare</string>
|
||||
<string name="edit_entry">Editează înregistrarea</string>
|
||||
<string name="add_url_entry">Creare intrare pentru URL</string>
|
||||
<string name="edit_entry">Editeaza inregistrare</string>
|
||||
<string name="add_url_entry">Creați înregistrare pentru URL</string>
|
||||
<string name="add_group">Adăugă un grup</string>
|
||||
<string name="add_group_title">Adăugare grup</string>
|
||||
<string name="edit_group_title">Editează Grupul</string>
|
||||
@@ -31,7 +31,7 @@
|
||||
<string name="NavigationToGroupCompleted_message">Grupul afișat este acum: %1$s</string>
|
||||
<string name="AutofillDisabledQueriesPreference_title">Obiective de completare automată dezactivate</string>
|
||||
<string name="AutofillDisabledQueriesPreference_summary">Vizualizează o listă de aplicații și site-uri pentru care completarea automată a fost dezactivată</string>
|
||||
<string name="OfferSaveCredentials_summary">Dacă este activat, Android va întreba dacă vrei să salvezi acreditările după ce ai introdus manual datele în câmpurile care pot fi completate automat.</string>
|
||||
<string name="OfferSaveCredentials_summary">Dacă este activat, Android va întreba dacă vrei să salvezi credențialele după ce ai introdus manual datele în câmpurile care pot fi completate automat.</string>
|
||||
<string name="OfferSaveCredentials_title">Oferă salvarea datelor de autentificare</string>
|
||||
<string name="ShowGroupInEntry_title">Arată numele grupului în vizualizarea înregistrărilor</string>
|
||||
<string name="unknown_uri_scheme">Scuze! Keepass2Android nu poate interpreta URI-ul returnat %1$s. Te rog să contactezi producătorul!</string>
|
||||
@@ -47,15 +47,15 @@
|
||||
<string name="keyboard_prefs">Tastatură</string>
|
||||
<string name="export_prefs">Exportă baza de date...</string>
|
||||
<string name="fingerprint_prefs">Deblocare biometrică</string>
|
||||
<string name="import_db_prefs">Importă baza de date în dosarul intern</string>
|
||||
<string name="import_keyfile_prefs">Importă fișierul cheie în dosarul intern</string>
|
||||
<string name="import_db_prefs">Importă baza de date în folderul intern</string>
|
||||
<string name="import_keyfile_prefs">Importă fișierul cheie în folderul intern</string>
|
||||
<string name="export_keyfile_prefs">Importă fișierul cheie din folderul intern</string>
|
||||
<string name="keyboardswitch_prefs">Comutare tastaturi</string>
|
||||
<string name="OnlyAvailableForLocalFiles">Valabil doar pentru fișiere locale.</string>
|
||||
<string name="FileIsInInternalDirectory">Fișierul este stocat în dosarul intern.</string>
|
||||
<string name="DatabaseFileMoved">Baza de date a fost copiată în dosarul intern. Apasă Ok pentru a o deschide din noua locație. Notă: Nu uita să exporți periodic baza de date pe un spațiu de stocare sigur!</string>
|
||||
<string name="KeyfileMoved">Fișierul-cheie a fost copiat în dosarul intern. Asigură-te că ai o copie de rezervă înainte de al șterge din locația curentă!</string>
|
||||
<string name="KeyfileMoveRequiresRememberKeyfile">Imposibil de folosit dosarul intern când locația fișierului cheie nu este memorară. Schimbă preferințele de securitate.</string>
|
||||
<string name="FileIsInInternalDirectory">Fișierul este stocat în folderul intern.</string>
|
||||
<string name="DatabaseFileMoved">Baza de date a fost copiată în folderul intern. Apasă Ok pentru a o deschide din noua locație. Notă: Nu uita să exporți periodic baza de date pe un spațiu de stocare sigur!</string>
|
||||
<string name="KeyfileMoved">Fișierul-cheie a fost copiat în folderul intern. Asigură-te că ai o copie de rezervă înainte de al șterge din locația curentă!</string>
|
||||
<string name="KeyfileMoveRequiresRememberKeyfile">Imposibil de folosit folderul intern când locația fișierului cheie nu este memorară. Schimbă preferințele de securitate.</string>
|
||||
<string name="unlock_database_button">Deblocare</string>
|
||||
<string name="unlock_database_title">Deblocarea bazei de date</string>
|
||||
<string name="brackets">Paranteze</string>
|
||||
@@ -83,22 +83,22 @@
|
||||
<string name="ellipsis">\u2026</string>
|
||||
<string name="copy_to_clipboard">Copiază în clipboard</string>
|
||||
<string name="SystemLanguage">Limba sistemului</string>
|
||||
<string name="fingerprint_description">Autentifică-te pentru a continua</string>
|
||||
<string name="fingerprint_fatal">Nu se poate configura Deblocarea biometrică:</string>
|
||||
<string name="fingerprint_description">Vă rugăm să vă autentificați pentru a continua</string>
|
||||
<string name="fingerprint_fatal">Nu se poate seta deblocarea prin amprentă:</string>
|
||||
<string name="fingerprint_not_recognized">Autentificare biometrică eșuată. Încearcă din nou</string>
|
||||
<string name="fingerprint_success">Autentificarea biometrică a reușit</string>
|
||||
<string name="fingerprint_success">Autentificarea cu amprentă a reușit.</string>
|
||||
<string name="fingerprint_os_error">Deblocarea biometrică necesită Android 6.0 sau mai nou.</string>
|
||||
<string name="fingerprint_hardware_error">Nici un hardware biometric detectat.</string>
|
||||
<string name="fingerprint_no_enrolled">Nu ai configurat autentificarea biometrică pe acest dispozitiv. Accesează mai întâi setările sistemului.</string>
|
||||
<string name="fingerprint_hardware_error">Nu s-a detectat dispozitiv pentru recunoaștere a amprentei.</string>
|
||||
<string name="fingerprint_no_enrolled">Nu ați configurat autentificarea biometrică pe acest dispozitiv. Vă rugăm să mergeți mai întâi la setările sistemului.</string>
|
||||
<string name="disable_fingerprint_unlock">Dezactivează deblocarea biometrică</string>
|
||||
<string name="enable_fingerprint_unlock">Activează deblocarea biometrică completă</string>
|
||||
<string name="enable_fingerprint_quickunlock">Activează deblocarea biometrică pentru QuickUnlock</string>
|
||||
<string name="fingerprint_unlock_failed">Deblocarea biometrică a eșuat. Cheia de decriptare a fost invalidată de Android OS. Acest lucru se întâmplă de obicei dacă o autentificare biometrică sau setările de securitate au fost modificate. </string>
|
||||
<string name="fingerprint_disabled_wrong_masterkey">Deblocarea bazei de date a eșuat: Cheie compozită invalidă. Deblocarea biometrică a fost dezactivată deoarece aparent parola principală stocată nu mai este validă. </string>
|
||||
<string name="fingerprint_reenable">Vă rugăm reactivați deblocarea biometrică pentru noua parolă principală.</string>
|
||||
<string name="fingerprint_reenable2">Deblochează cu parola și apoi reactivează deblocarea biometrică în setările bazei de date.</string>
|
||||
<string name="fingerprint_reenable2">Vă rugăm să deblocați cu parola dvs. și apoi să reactivați deblocarea biometrică în setările bazei de date.</string>
|
||||
<string name="FingerprintInitFailed">Inițializarea autentificării biometrice a eșuat. </string>
|
||||
<string name="FingerprintSetupFailed">Criptarea datelor a eșuat. Acest lucru se poate întâmpla dacă adaugi sau elimini amprentele din setările de sistem în timp ce Keepass2Android așteaptă amprenta.</string>
|
||||
<string name="FingerprintSetupFailed">Criptarea datelor a eșuat. Acest lucru se poate întâmpla dacă adăugați sau eliminați amprentele din setările de sistem în timp ce Keepass2Android vă așteaptă amprenta.</string>
|
||||
<string name="enable_fingerprint_unlock_Info">Aceasta va stoca parola principală pe acest dispozitiv, criptată cu Keystore Android și protejată folosind autentificarea biometrică. Permite deblocarea bazei de date doar folosind biometria.</string>
|
||||
<string name="enable_fingerprint_quickunlock_Info">Permite utilizarea autentificării biometrice în locul codului QuickUnlock. Nu stochează nicio informație legată de parola principală.</string>
|
||||
<string name="enter_filename">Alegeți numele bazei de date</string>
|
||||
@@ -131,7 +131,7 @@
|
||||
<string name="error_filename_required">Este necesar un nume fișier.</string>
|
||||
<string name="error_file_not_create">Nu s-a putut crea fișierul</string>
|
||||
<string name="error_invalid_db">Bază de date invalidă.</string>
|
||||
<string name="error_invalid_path">Cale incorectă.</string>
|
||||
<string name="error_invalid_path">Cale invalidă.</string>
|
||||
<string name="error_no_name">Este necesar un nume.</string>
|
||||
<string name="error_nopass">Este necesară o parolă sau un fișier cheie.</string>
|
||||
<string name="error_pass_gen_type">Trebuie selectat cel puțin un tip de generare de parole</string>
|
||||
@@ -139,7 +139,7 @@
|
||||
<string name="error_rounds_not_number">Etapele trebuie să fie un număr.</string>
|
||||
<string name="error_param_not_number">Parametru trebuie să fie un număr.</string>
|
||||
<string name="error_title_required">Este necesar un titlu.</string>
|
||||
<string name="error_wrong_length">Introdu un număr întreg pozitiv în câmpul de lungime</string>
|
||||
<string name="error_wrong_length">Introduceți un număr întreg pozitiv în câmpul de lungime</string>
|
||||
<string name="FileNotFound">Fișierul nu s-a găsit.</string>
|
||||
<string name="file_browser">Browser fișiere</string>
|
||||
<string name="generate_password">Generare parolă</string>
|
||||
@@ -151,7 +151,6 @@
|
||||
<string name="hint_keyfile">fişier cheie</string>
|
||||
<string name="hint_length">lungime</string>
|
||||
<string name="hint_pass">parola</string>
|
||||
<string name="hint_keyfile_path">Calea cheii private SSH</string>
|
||||
<string name="hint_login_pass">Parolă</string>
|
||||
<string name="hint_title">nume</string>
|
||||
<string name="hint_url">URL</string>
|
||||
@@ -172,15 +171,11 @@
|
||||
<string name="MaskedPassword">*****</string>
|
||||
<string name="maskpass_title">Maschează parola</string>
|
||||
<string name="maskpass_summary">Ascunde parolele în mod implicit</string>
|
||||
<string name="masktotp_title">Mascare câmp TOTP</string>
|
||||
<string name="masktotp_summary">Ascunde câmpul TOTP în mod implicit</string>
|
||||
<string name="NoAutofillDisabling_title">Nicio opțiune pentru a dezactiva autocompletarea</string>
|
||||
<string name="NoAutofillDisabling_summary">Dacă este activat, aplicația nu va afișa opțiunea de a dezactiva completarea automată pentru înregistrări specifice.</string>
|
||||
<string name="menu_about">Despre</string>
|
||||
<string name="menu_change_key">Schimbă cheia principală</string>
|
||||
<string name="menu_copy_pass">Copiază parola</string>
|
||||
<string name="menu_copy_user">Copiază nume utilizator</string>
|
||||
<string name="menu_copy_totp">Copiază TOTP</string>
|
||||
<string name="menu_create">Crează</string>
|
||||
<string name="menu_app_settings">Setări</string>
|
||||
<string name="menu_db_settings">Setări bază de date</string>
|
||||
@@ -208,8 +203,8 @@
|
||||
<string name="no_keys">Nu sunt înregistrări în baza de date sau grup.</string>
|
||||
<string name="no_results">Nici un rezultat de căutare</string>
|
||||
<string name="no_url_handler">Niciun handler pentru acest URL.</string>
|
||||
<string name="open_recent">Deschide baza de date recentă (apasă pentru a deschide)</string>
|
||||
<string name="omitbackup_title">Nu căuta înregistrări în backup și coșul de gunoi</string>
|
||||
<string name="open_recent">Deschideți baza de date recentă (apăsați pentru a deschide)</string>
|
||||
<string name="omitbackup_title">Nu căuta înregistrări în backup şi coşul de gunoi</string>
|
||||
<string name="omitbackup_summary">Omite grupurile \'Backup\' şi \'Coş de gunoi\' din toate căutările</string>
|
||||
<string name="pass_filename">Nume fişier bază de date KeePass</string>
|
||||
<string name="password_title">Introduceţi parola bazei de date</string>
|
||||
@@ -224,12 +219,12 @@
|
||||
<string name="rijndael">Rijndael (AES)</string>
|
||||
<string name="root">Root</string>
|
||||
<string name="AutoReturnFromQuery_title">Revino în automat din ecranul de interogare</string>
|
||||
<string name="AutoReturnFromQuery_summary">Când cauți o intrare pentru o aplicație sau o pagină web: revine automat de pe ecranul de interogare dacă există o singură intrare potrivită în baza de date.</string>
|
||||
<string name="AutoReturnFromQuery_summary">Când căutați o intrare pentru o aplicație sau un sit în linie: reveniți automat de pe ecranul de interogare dacă există o singură înregistrare potrivită în baza de date.</string>
|
||||
<string name="KeyDerivFunc">Funcția de derivare a cheii</string>
|
||||
<string name="rounds">Etape de criptare</string>
|
||||
<string name="rounds_explaination">Mai multe etape de criptare oferă protecție împotriva atacurilor prin forță brută, dar pot încetini semnificativ încărcarea și salvarea.</string>
|
||||
<string name="rounds_explaination">Mai multe etape de criptare oferă protecţie împotriva atacurilor prin forță brută, dar pot încetini semnificativ încărcarea şi salvarea.</string>
|
||||
<string name="rounds_hint">etape</string>
|
||||
<string name="argon2memory">Memorie pentru Argon 2 (octeți)</string>
|
||||
<string name="argon2memory">Memorie pentru Argon 2 (octeţi)</string>
|
||||
<string name="argon2parallelism">Paralelismul pentru Argon 2</string>
|
||||
<string name="database_name">Numele bazei de date</string>
|
||||
<string name="default_username">Nume utilizator implicit pentru intrări noi</string>
|
||||
@@ -250,7 +245,7 @@
|
||||
<string name="at_least_one_from_each_group">Cel puțin unul din fiecare grup</string>
|
||||
<string name="exclude_lookalike">Exclude caractere asemănătoare</string>
|
||||
<string name="password_generation_profile">Profil</string>
|
||||
<string name="save_password_generation_profile_text">Introdu numele profilului pentru a fi salvat. Introdu un nume existent pentru suprascrie.</string>
|
||||
<string name="save_password_generation_profile_text">Introduceți numele profilului pentru a fi salvat. Introduceți un nume existent pentru suprascrie.</string>
|
||||
<string name="hint_wordcount">Numărul de cuvinte din expresia de acces</string>
|
||||
<string name="hint_wordseparator">Separator cuvinte</string>
|
||||
<string-array name="PasswordGeneratorModes">
|
||||
@@ -270,18 +265,18 @@
|
||||
<string name="search_in">Căutare în</string>
|
||||
<string name="select_other_entry">Selectaţi o altă înregistrare</string>
|
||||
<string name="select_group_then_add">Deschideți grupul dorit, apoi apăsaţi \"%1$s\"!</string>
|
||||
<string name="insert_element_here">Introdu aici</string>
|
||||
<string name="insert_element_here">Introduceţi aici</string>
|
||||
<string name="twofish">Twofish</string>
|
||||
<string name="underline">Subliniere</string>
|
||||
<string name="unsupported_db_version">Versiunea bazei de date nesuportată.</string>
|
||||
<string name="uppercase">Litere mari</string>
|
||||
<string name="warning_read_only">Cardul SD este momentan doar în citire. Nu vei putea salva modificările la baza de date.</string>
|
||||
<string name="warning_unmounted">Cardul SD nu este montat momentan. Nu vei putea încărca sau crea baza de date.</string>
|
||||
<string name="warning_read_only">Cardul sd este momentan read-only. Nu veți putea salva modificările la baza de date.</string>
|
||||
<string name="warning_unmounted">Cardul sd nu este montat momentan. Nu veți putea încărca sau crea baza de date.</string>
|
||||
<string name="version_label">Versiune</string>
|
||||
<string name="version_history">Istoric versiuni</string>
|
||||
<string name="author">Keepass2Android este creat de către Philipp Crocoll.</string>
|
||||
<string name="further_authors">Mulțumită contribuţiilor de cod de către %1$s.</string>
|
||||
<string name="designers">Pictogramă și design mulțumită contribuțiilor făcute de %1$s.</string>
|
||||
<string name="designers">Icoană și design mulțumită contribuțiilor făcute de %1$s.</string>
|
||||
<string name="supporters">Mulțumită sprijinului financiar din partea %1$s.</string>
|
||||
<string name="credit_plugin1">Plugin-ul pentru cifrul Twofish a fost creat de Scott Greenberg şi este inclus în KP2A.</string>
|
||||
<string name="credit_android_filechooser">android-filechooser a fost creat de Hai Bison</string>
|
||||
@@ -289,13 +284,11 @@
|
||||
<string name="please_note">Vă rugăm să reţineţi</string>
|
||||
<string name="contributors">Contribuitori</string>
|
||||
<string name="regular_expression">Regular expression</string>
|
||||
<string name="AlwaysMergeOnConflict_title">Se îmbină întotdeauna la conflict</string>
|
||||
<string name="AlwaysMergeOnConflict_summary">Când KeepAss2Android detectează că fișierul de la distanță a fost modificat, contopește întotdeauna modificările locale cu modificările de la distanță.</string>
|
||||
<string name="TanExpiresOnUse_title">TAN expiră la utilizare</string>
|
||||
<string name="TanExpiresOnUse_summary">Marchează înregistrările TAN ca expirate la utilizarea lor</string>
|
||||
<string name="ShowUsernameInList_title">Afișează numele utilizatorului în listă</string>
|
||||
<string name="ShowUsernameInList_summary">Afișează numele utilizatorului sub înregistrări. Util pentru conturi sau TAN-uri multiple.</string>
|
||||
<string name="RememberRecentFiles_title">Memorizează bazele de date</string>
|
||||
<string name="ShowUsernameInList_title">Afişează numele utilizatorului în listă</string>
|
||||
<string name="ShowUsernameInList_summary">Afişează numele utilizatorului sub înregistrări. Util pentru conturi sau TAN-uri multiple.</string>
|
||||
<string name="RememberRecentFiles_title">Reţine bazele de date</string>
|
||||
<string name="RememberRecentFiles_summary">Reţine baze de date deschise recent si afişează-le în ecranul de deschidere a bazelor de date.</string>
|
||||
<string name="NoDalVerification_title">Fără verificare DAL</string>
|
||||
<string name="NoDalVerification_summary">Dezactivează verificarea dacă domeniul și pachetul aplicației se potrivesc</string>
|
||||
@@ -305,16 +298,16 @@
|
||||
<string name="kp2a_findUrl">Găsește parola</string>
|
||||
<string name="excludeExpiredEntries">Exclude înregistrările expirate</string>
|
||||
<string name="search_options">Opţiuni</string>
|
||||
<string name="caseSensitive">Sensibil la majuscule</string>
|
||||
<string name="start_open_file">Deschide un fișier...</string>
|
||||
<string name="caseSensitive">Case sensitive</string>
|
||||
<string name="start_open_file">Deschide fişier...</string>
|
||||
<string name="start_create">Creează bază de date nouă...</string>
|
||||
<string name="start_open_url">Deschide URL...</string>
|
||||
<string name="start_create_import">Importă fișier în bază de date nouă...</string>
|
||||
<string name="start_create_import">Importă fişier în bază de date nouă...</string>
|
||||
<string name="enter_filename_details_url">Trebuie specificat URL-ul complet inclusiv protocolul, de exemplu http://.</string>
|
||||
<string name="enter_filename_details_create_import">Fișierul de importat va fi selectat la pasul următor.</string>
|
||||
<string name="enter_filename_details_create_import">Fişierul de importat va fi selectat la pasul următor.</string>
|
||||
<string name="enable_quickunlock">Activare QuickUnlock</string>
|
||||
<string name="QuickUnlock_label">Introdu ultimele %1$d caractere ale parolei.:</string>
|
||||
<string name="QuickUnlock_label_secure">Introdu codul QuickUnlock:</string>
|
||||
<string name="QuickUnlock_label">Introduceţi ultimele %1$d caractere ale parolei dvs.:</string>
|
||||
<string name="QuickUnlock_label_secure">Introduceți codul QuickUnlock:</string>
|
||||
<string name="QuickUnlock_button">QuickUnlock!</string>
|
||||
<string name="QuickUnlock_lockButton">Închide baza de date</string>
|
||||
<string name="QuickUnlockDefaultEnabled_title">Activează QuickUnlock implicit</string>
|
||||
@@ -329,8 +322,6 @@
|
||||
<string name="QuickUnlockLength_summary">Numărul maxim de caractere utilizate ca şi parolă QuickUnlock.</string>
|
||||
<string name="QuickUnlockHideLength_title">Ascunde lungimea QuickUnlock</string>
|
||||
<string name="QuickUnlockHideLength_summary">Dacă este activat, lungimea codului QuickUnlock nu este afișat pe ecranul QuickUnlock.</string>
|
||||
<string name="QuickUnlockKeyFromDatabase_title">Cheie QuickUnlock din intrarea bazei de date</string>
|
||||
<string name="QuickUnlockKeyFromDatabase_summary">Dacă baza de date activă conține o intrare cu titlul QuickUnlock în grupul său rădăcină, parola acestei intrări este utilizată ca cod QuickUnlock.</string>
|
||||
<string name="QuickUnlock_fail">QuickUnlock a eşuat: parolă incorectă!</string>
|
||||
<string name="SaveAttachmentDialog_title">Salvaţi ataşament</string>
|
||||
<string name="SaveAttachmentDialog_text">Selectaţi unde se salvează ataşamentul.</string>
|
||||
@@ -349,14 +340,9 @@
|
||||
<string name="protection">Câmp protejat</string>
|
||||
<string name="add_binary">Ataşează fişier...</string>
|
||||
<string name="add_extra_string">Adaugă câmp adiţional</string>
|
||||
<string name="configure_totp">Configurare TOTP</string>
|
||||
<string name="totp_secret_key">Cheie secretă</string>
|
||||
<string name="totp_encoding_rfc6238">Setări implicite pentru jetonul RFC6238</string>
|
||||
<string name="totp_encoding_steam">Setări pentru jetonul Steam</string>
|
||||
<string name="totp_encoding_custom">Setări jeton personalizat</string>
|
||||
<string name="totp_time_step">Pas temporal</string>
|
||||
<string name="totp_length">Lungime cod</string>
|
||||
<string name="totp_scan">Scanare cod QR</string>
|
||||
<string name="delete_extra_string">Şterge câmp adiţional</string>
|
||||
<string name="database_loaded_quickunlock_enabled">%1$s: Blocat. QuickUnlock activat.</string>
|
||||
<string name="database_loaded_unlocked">%1$s: Deblocat.</string>
|
||||
@@ -399,37 +385,18 @@
|
||||
<string name="ShowSeparateNotifications_summary">Arată notificări separate pentru copierea numelui utilizatorului și a parolei în clipboard și activarea tastaturii.</string>
|
||||
<string name="AccServiceAutoFill_prefs">Serviciu de accesibilitate de completare automată</string>
|
||||
<string name="AutoFill_prefs">Serviciu de completare automată</string>
|
||||
<string name="AutoFillTotp_prefs_ShowNotification_summary">Când se completează automat o înregistrare cu TOTP, afișează notificarea cu un buton Copiere TOTP</string>
|
||||
<string name="AutoFillTotp_prefs_ShowNotification_title">Arată notificarea introducerii</string>
|
||||
<string name="AutoFillTotp_prefs_title">Autocompletare pentru intrările TOTP</string>
|
||||
<string name="AutoFillTotp_prefs_CopyTotpToClipboard_title">Copiază TOTP în clipboard</string>
|
||||
<string name="AutoFillTotp_prefs_CopyTotpToClipboard_summary">Atunci când se completează automat o intrare cu TOTP, se copiază TOTP în clipboard</string>
|
||||
<string name="AutoFillTotp_prefs_ActivateKeyboard_summary">Atunci când se completează automat o intrare cu TOTP, se activează tastatura încorporată. Tastatura are un buton TOTP.</string>
|
||||
<string name="AutoFillTotp_prefs_ActivateKeyboard_title">Activare tastatură încorporată</string>
|
||||
<string name="TotpCopiedToClipboard">TOTP copiat în clipboard</string>
|
||||
<string name="ShowKp2aKeyboardNotification_title">Notificare tastatură KP2A</string>
|
||||
<string name="ShowKp2aKeyboardNotification_summary">Oferă întreaga înregistrare folosind tastatura KP2A (recomandat).</string>
|
||||
<string name="OpenKp2aKeyboardAutomatically_title">Comută tastatura</string>
|
||||
<string name="OpenKp2aKeyboardAutomatically_summary">Deschide fereastra de selecție a tastaturii când o înregistrare este disponibilă prin tastatura KP2A după căutarea din browser.</string>
|
||||
<string name="kp2a_switch_rooted">Schimbare automată a tastaturii</string>
|
||||
<string name="kp2a_switch_rooted_summary">Comutare automată la tastatura KP2A la deschiderea intrării. Necesită plugin-ul KeyboardSwap corect configurat sau unu dispozitiv cu access la root și a aplicației Secure Settings cu System+.</string>
|
||||
<string name="get_keyboardswap">Instalare Plugin KeyboardSwap</string>
|
||||
<string name="get_keyboardswap_summary">Acest plugin permite comutarea la tastatura KP2A fără root. Necesită ADB. </string>
|
||||
<string name="OpenKp2aKeyboardAutomaticallyOnlyAfterSearch_title">Comută automat tastatura doar după căutare</string>
|
||||
<string name="OpenKp2aKeyboardAutomaticallyOnlyAfterSearch_summary">Comută automat la tastatura KP2A doar după utilizarea funcției Share URL (și nu când se deschide o înregistrare în alt fel)</string>
|
||||
<string name="AutoSwitchBackKeyboard_title">Comutare înapoi la tastatură</string>
|
||||
<string name="AutoSwitchBackKeyboard_summary">Comută la tastatura precedentă când nici o înregistrare este deschisă.</string>
|
||||
<string name="ShowUnlockedNotification_title">Notificare cât timp e deblocat</string>
|
||||
<string name="ShowUnlockedNotification_summary">Afişează o notificare în timp ce baza de date este deblocată.</string>
|
||||
<string name="IconVisibilityInfo_Android8_text">Android 8 a introdus un nou comportament pentru notificări. Dacă dorești să ascunzi pictograma pentru notificările KeepAss2android, configurează acest lucru în setările sistemului. Setează importanța categoriei de notificări la minimum.</string>
|
||||
<string name="IconVisibilityInfo_Android8_btnSettings">Deschide setările</string>
|
||||
<string name="PostNotificationsPermissionInfo_text">Keepass2Android poate afișa o notificare de sistem în timp ce baza ta de date nu este blocată. Pentru ca acest lucru să funcționeze, acordă permisiunea.</string>
|
||||
<string name="DontCare">Nu-mi pasă</string>
|
||||
<string name="DocumentAccessRevoked">Fișierul nu mai este accesibil pentru KeepAss2android. Fie a fost eliminat, fie permisiunile de acces au fost revocate. Utilizează redeschiderea fișierului, de ex. folosind Schimbarea bazei de date.</string>
|
||||
<string name="PreloadDatabaseEnabled_title">Pre-încarcă fişierul bază de date</string>
|
||||
<string name="PreloadDatabaseEnabled_summary">Începe încărcarea sau descărcarea în fundal în timp ce se introduce parola.</string>
|
||||
<string name="SyncAfterQuickUnlock_title">Sincronizare după QuickUnlock</string>
|
||||
<string name="SyncAfterQuickUnlock_summary">Sincronizează baza de date cu fișierul de la distanță după deblocarea cu QuickUnlock.</string>
|
||||
<string name="AskOverwriteBinary">Doriţi să suprascrieţi binarul existent folosind acelaşi nume?</string>
|
||||
<string name="AskOverwriteBinary_title">Suprascrieţi binarul existent?</string>
|
||||
<string name="AskOverwriteBinary_yes">Suprascrie</string>
|
||||
@@ -466,16 +433,10 @@
|
||||
<string name="SynchronizingDatabase">Se îmbină modificările…</string>
|
||||
<string name="YesSynchronize">Da, îmbină</string>
|
||||
<string name="NoOverwrite">Nu, suprascrie</string>
|
||||
<string name="UseOfflineMode">Funcționare doar cu cache intern</string>
|
||||
<string name="UseOnlineMode">Sincronizează copia cache cu sursa</string>
|
||||
<string name="SynchronizingCachedDatabase">Sincronizează baza de date din cache…</string>
|
||||
<string name="DownloadingRemoteFile">Se încarcă fișierul sursă…</string>
|
||||
<string name="UploadingFile">Salvează fișierul…</string>
|
||||
<string name="RestoringRemoteFile">Se restaurează fișierul sursă…</string>
|
||||
<string name="FilesInSync">Fişierele sunt sincronizate.</string>
|
||||
<string name="SynchronizedDatabaseSuccessfully">Baza de date s-a sincronizat cu succes!</string>
|
||||
<string name="CheckingDatabaseForChanges">Se verifică baza de date pentru modificări…</string>
|
||||
<string name="UpdatedRemoteFileOnLoad">Fișier sursă actualizat.</string>
|
||||
<string name="RemoteDatabaseUnchanged">Nu s-au detectat modificări.</string>
|
||||
<string name="SynchronizingOtpAuxFile">Se sincronizează fișierul auxiliar OTP…</string>
|
||||
<string name="database_file">fișier bază de date</string>
|
||||
@@ -501,8 +462,6 @@
|
||||
<string name="enter_sftp_login_title">Introduceţi datele de conectare SFTP:</string>
|
||||
<string name="sftp_auth_mode">Mod autentificare</string>
|
||||
<string name="send_public_key">Trimite cheia publică...</string>
|
||||
<string name="select_private_keyfile">Selectează cheia privată...</string>
|
||||
<string name="private_key_delete">Cheie privată ștearsă: %1$s</string>
|
||||
<string name="enter_ftp_login_title">Introdu datele de conectare FTP:</string>
|
||||
<string name="select_storage_type">Selectaţi tipul de stocare:</string>
|
||||
<string name="filestoragename_file">Fişier local</string>
|
||||
@@ -567,7 +526,6 @@
|
||||
<string name="plugin_disabled">dezactivat</string>
|
||||
<string name="plugin_web">Caută plugin-uri online</string>
|
||||
<string name="plugin_scopes">Domenii</string>
|
||||
<string name="not_enabled">nu este activat</string>
|
||||
<string name="query_credentials_for_url">%1$s solicită date de login pentru %2$s.</string>
|
||||
<string name="query_credentials">%1$s solicită date de login. Selectează o înregistrare.</string>
|
||||
<string name="plugin_enabled_checkbox">Activat</string>
|
||||
@@ -616,7 +574,6 @@
|
||||
<string name="Continue">Continuare</string>
|
||||
<string name="NoFilenameWarning">URI introdus nu arata ca un nume de file. Sunteţi sigur că acesta este un file valid?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Cheie compusă invalidă! Vă rugăm să încercaţi din nou.</string>
|
||||
<string name="open_other_db">Deschide o altă bază de date…</string>
|
||||
<string name="select_database">Selectați baza de date</string>
|
||||
<string name="unspecified">nespecificat</string>
|
||||
<string name="child_db_enabled_on_this_device">Activat pe acest dispozitiv</string>
|
||||
@@ -630,16 +587,6 @@
|
||||
<string name="if_device_text">Activează pentru %1$s</string>
|
||||
<string name="DbQuicklockedChannel_name">QuickUnlock</string>
|
||||
<string name="CloseDbAfterFailedAttempts">Închide baza de date după trei încercări de deblocare biometrică eșuate.</string>
|
||||
<string-array name="ChangeLog_1_11">
|
||||
<item>Added floating action buttons for search and TOTP overview (if TOTP entries are present).</item>
|
||||
<item>Improved display of TOTP fields by adding a timeout indicator and showing it more prominently.</item>
|
||||
<item>TOTP can now be seen from the group view.</item>
|
||||
<item>Copy text value to clipboard on long-press in entry view.</item>
|
||||
<item>Make TOTP more easily accessible on the built-in keyboard.</item>
|
||||
<item>Show entry notification when autofilling a TOTP entry. This allows to copy the TOTP to clipboard. See preferences to configure the behavior.</item>
|
||||
<item>Updated TOTP implementation to resolve compatibility issues with KeePass2 and TrayTOTP</item>
|
||||
<item>Îmbunătățiri minore</item>
|
||||
</string-array>
|
||||
<string name="ChangeLog_keptDonate">Posibilitate extinsă de a dona o bere sau altceva</string>
|
||||
<string-array name="clipboard_timeout_options">
|
||||
<item>30 de secunde</item>
|
||||
@@ -664,14 +611,9 @@
|
||||
<string-array name="design_options">
|
||||
<item>Luminoasă</item>
|
||||
<item>Întunecată</item>
|
||||
<item>Setări de sistem</item>
|
||||
<item>System settings</item>
|
||||
</string-array>
|
||||
<string name="design_title">Design</string>
|
||||
<string-array name="ftp_encryption_modes">
|
||||
<item>Fără criptare (FTP)</item>
|
||||
<item>Implicit encryption (FTP over TLS, FTPS)</item>
|
||||
<item>Explicit encryption (FTP over TLS, FTPS)</item>
|
||||
</string-array>
|
||||
<string-array name="cred_remember_modes">
|
||||
<item>Nu reține numele utilizator și parola</item>
|
||||
<item>Reține doar numele de utilizator</item>
|
||||
@@ -697,25 +639,16 @@
|
||||
<item>Avertizează când validarea eșuează</item>
|
||||
<item>Nu accepta certificate invalide</item>
|
||||
</string-array>
|
||||
<string name="autofill_enable">Activare autocompletare</string>
|
||||
<string name="autofill_sign_in_prompt">Completează cu Keepass2Android</string>
|
||||
<string name="autofill_disable">Dezactivează completarea automată pentru %1$s</string>
|
||||
<string name="autofill_enable_for">Activează completare automată pentru %1$s</string>
|
||||
<string name="enable_fingerprint_hint">Keepass2Android a detectat dispozitive biometrice. Doriţi să activaţi deblocarea biometrică pentru această bază de date?</string>
|
||||
<string name="post_notifications_dialog_title">Permite notificări</string>
|
||||
<string name="post_notifications_dialog_allow">Permite notificări</string>
|
||||
<string name="post_notifications_dialog_notnow">Nu acum</string>
|
||||
<string name="understand">Am înțeles</string>
|
||||
<string name="dont_show_again">Nu mai afișa</string>
|
||||
<string name="masterkey_infotext_fingerprint_note">De asemenea, rețineți că Deblocarea biometrică funcționează prin stocarea cheii principale în spațiul de stocare securizat Android. Această stocare poate fi ștearsă de Android în orice moment, de ex. dacă adăugați o nouă amprentă în setările sistemului. Așa că nu vă bazați pe deblocarea biometrică ci retineți parola principală, vă rog!</string>
|
||||
<string name="disable_secure_screen_check">Dezactivează acest mesaj</string>
|
||||
<string name="switch_ime_text">Activează tastatura Keepass2Android.</string>
|
||||
<string name="switch_ime_reopen">Reîncercați</string>
|
||||
<string name="AutofillWarning_title">Alertă de securitate: Link nerecunoscut domeniu/aplicație</string>
|
||||
<string name="AutofillWarning_Intro">Sunteți pe cale de a insera datele de autentificare pentru domeniul \"%1$s\" în aplicația \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Dacă aveți încredere că \"%2$s\" aparține la \"%1$s\" sau dacă aveți încredere în aplicația \"%2$s\" să nu abuzeze de datele de autentificare (de ex. deoarece este o aplicație de încredere pentru browser), este in regulă să continuați. Dacă nu, vă rugăm să anulați.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Acceptați întotdeauna în \"%1$s\"</string>
|
||||
<string name="kp2a_switch_on_sendgodone">Comută înapoi când ai terminat</string>
|
||||
<string name="kp2a_switch_on_sendgodone_summary">Comută înapoi după apăsarea trimitere/înainte/terminat</string>
|
||||
<string name="english_ime_settings">Setările tastaturii Keepass2Android</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Setările tastaturii Keepass2Android</string>
|
||||
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="about_feedback">Оставить отзыв</string>
|
||||
<string name="AboutText">Keepass2Android — это менеджер паролей, обеспечивающий полноценную работу с базами KeePass 2.x на Android.</string>
|
||||
@@ -672,6 +672,23 @@
|
||||
<string name="Continue">Продолжить</string>
|
||||
<string name="NoFilenameWarning">URI, который Вы ввели, не похож на имя файла. Вы уверены, что это правильно?</string>
|
||||
<string name="FirstInvalidCompositeKeyError">Неверный составной ключ! Пожалуйста, попробуйте еще раз.</string>
|
||||
<string name="RepeatedInvalidCompositeKeyHelp">Неправильный составной ключ! Пожалуйста, попробуйте следующие шаги для разблокировки вашей базы данных:\n
|
||||
|
||||
• Убедитесь, что вы вводите правильный пароль. Используйте значок \"глаз\" для проверки вводимого пароля.\n
|
||||
• Убедитесь, что вы выбрали правильный тип пароля. Убедитесь, что он совпадает с тем типом, который вы указывали при создании базы данных.\n
|
||||
• Убедитесь, что вы выбрали правильный файл с базой данных.</string>
|
||||
<string name="HintLocalBackupInvalidCompositeKey"> \n
|
||||
• подсказка: если вы считаете, что файл базы данных может быть поврежден или не помните главный ключ после его изменения, вы можете попробовать с последней успешно открытой версией файла, нажав \"%1$s\" и выбрав локальную резервную копию.</string>
|
||||
<string name="HintLocalBackupOtherError"> \n
|
||||
&#82Подсказка: Keepass2Android сохранил последнюю успешно открытую версию файла во внутренней памяти. Его можно открыть, нажав \"%1$s\" и выбрав локальную резервную копию.</string>
|
||||
<string name="CorruptDatabaseHelp"> Файл поврежден. \n
|
||||
Тут приведены несколько подсказок, которые могут помочь в решении этой проблемы:\n
|
||||
|
||||
• Если вы скопировали файл через USB (MTP-Mode), попробуйте еще раз при помощи утилиты \"MyPhoneExplorer\". MTP-режим иногда обрезает файлы.\n
|
||||
• Если не удается открыть файл даже в вашем персональном компьютере, очень вероятно, что файл действительно поврежден. Пожалуйста, используйте резервную копию вашей базы данных. Если есть предположение, что в этом виноват \"Keepass2Android\", то свяжитесь с нами.\n
|
||||
• Если файл открывается с вашего персонального компьютера, свяжитесь с нами. Вы можете сохранить его с разными параметрами (например, в распакованном виде) и попробовать открыть его снова в \"Keepass2Android\".
|
||||
|
||||
</string>
|
||||
<string name="open_other_db">Открыть другую базу данных…</string>
|
||||
<string name="select_database">Выбрать базу данных</string>
|
||||
<string name="configure_child_dbs">Настройка дочерних баз данных…</string>
|
||||
@@ -868,5 +885,6 @@
|
||||
<string name="AutofillWarning_Intro">Вы собираетесь вставить учётные данные для домена \"%1$s\" в приложение \"%2$s\".</string>
|
||||
<string name="AutofillWarning_FillDomainInUntrustedApp">Если вы уверены, что \"%2$s\" принадлежит к \"%1$s\" или доверяете приложению \"%2$s\" не злоупотребляйте учётными данными (например, потому что это доверенное приложение браузера), если всё хорошо можно продолжить. Если нет, пожалуйста, отмените.</string>
|
||||
<string name="AutofillWarning_trustAsBrowser">Всегда принимать в \"%1$s\"</string>
|
||||
<string name="english_ime_settings">Настройки клавиатуры \"Keepass2Android\"</string>
|
||||
</resources>
|
||||
<string name="english_ime_settings">Настройки клавиатуры \"Keepass2Android\"</string>
|
||||
|
||||
</resources>
|