mirror of
https://github.com/bitwarden/mobile
synced 2025-12-05 23:53:33 +00:00
Compare commits
9 Commits
PM-4047/fi
...
community/
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1da62d8211 | ||
|
|
c5f1df6e4c | ||
|
|
cd45992e6b | ||
|
|
ed75aa7942 | ||
|
|
743bf06b24 | ||
|
|
73f3ffceb2 | ||
|
|
39881d2c7f | ||
|
|
fc79042212 | ||
|
|
dc6a0bbd33 |
31
.github/CODEOWNERS
vendored
31
.github/CODEOWNERS
vendored
@@ -1,31 +0,0 @@
|
|||||||
# Please sort lines alphabetically, this will ensure we don't accidentally add duplicates.
|
|
||||||
#
|
|
||||||
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
|
|
||||||
|
|
||||||
# The following owners will be the default owners for everything in the repo.
|
|
||||||
# Unless a later match takes precedence
|
|
||||||
# @bitwarden/tech-leads
|
|
||||||
|
|
||||||
@bitwarden/dept-development-mobile
|
|
||||||
|
|
||||||
## Auth team files ##
|
|
||||||
|
|
||||||
## Platform team files ##
|
|
||||||
appIcons @bitwarden/team-platform-dev
|
|
||||||
build.cake @bitwarden/team-platform-dev
|
|
||||||
|
|
||||||
## Vault team files ##
|
|
||||||
src/watchOS @bitwarden/team-vault-dev
|
|
||||||
|
|
||||||
## Tools team files ##
|
|
||||||
src/Core/Services/EmailForwarders @bitwarden/team-tools-dev
|
|
||||||
|
|
||||||
|
|
||||||
## Crowdin Sync files ##
|
|
||||||
src/App/Resources @bitwarden/tech-leads
|
|
||||||
src/watchOS/bitwarden/bitwarden\ WatchKit\ Extension/Localization @bitwarden/tech-leads
|
|
||||||
|
|
||||||
## Locales ##
|
|
||||||
src/App/Resources/AppResources.Designer.cs
|
|
||||||
src/App/Resources/AppResources.resx
|
|
||||||
src/watchOS/bitwarden/bitwarden\ WatchKit\ Extension/Localization/en.lproj
|
|
||||||
38
.github/workflows/build.yml
vendored
38
.github/workflows/build.yml
vendored
@@ -525,7 +525,7 @@ jobs:
|
|||||||
submodules: 'true'
|
submodules: 'true'
|
||||||
|
|
||||||
- name: Login to Azure - CI Subscription
|
- name: Login to Azure - CI Subscription
|
||||||
uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.6
|
uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf # v1.4.3
|
||||||
with:
|
with:
|
||||||
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
||||||
|
|
||||||
@@ -667,22 +667,6 @@ jobs:
|
|||||||
$configuration = "AppStore";
|
$configuration = "AppStore";
|
||||||
$platform = "iPhone";
|
$platform = "iPhone";
|
||||||
|
|
||||||
Write-Output "########################################"
|
|
||||||
Write-Output "##### Archive $configuration Configuration for $platform Platform"
|
|
||||||
Write-Output "########################################"
|
|
||||||
msbuild "$($env:GITHUB_WORKSPACE + "/src/iOS/iOS.csproj")" "/p:Platform=$platform" `
|
|
||||||
"/p:Configuration=$configuration" "/p:ArchiveOnBuild=true" "/t:`"Build`""
|
|
||||||
|
|
||||||
Write-Output "########################################"
|
|
||||||
Write-Output "##### Done"
|
|
||||||
Write-Output "########################################"
|
|
||||||
shell: pwsh
|
|
||||||
|
|
||||||
- name: Archive Build for Mobile Automation
|
|
||||||
run: |
|
|
||||||
$configuration = "Release";
|
|
||||||
$platform = "iPhoneSimulator";
|
|
||||||
|
|
||||||
Write-Output "########################################"
|
Write-Output "########################################"
|
||||||
Write-Output "##### Archive $configuration Configuration for $platform Platform"
|
Write-Output "##### Archive $configuration Configuration for $platform Platform"
|
||||||
Write-Output "########################################"
|
Write-Output "########################################"
|
||||||
@@ -705,15 +689,6 @@ jobs:
|
|||||||
-exportOptionsPlist $EXPORT_OPTIONS_PATH
|
-exportOptionsPlist $EXPORT_OPTIONS_PATH
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: Export .app for Automation CI
|
|
||||||
run: |
|
|
||||||
ARCHIVE_PATH="./src/iOS/bin/iPhoneSimulator/Release/BitwardeniOS.app"
|
|
||||||
EXPORT_PATH="./bitwarden-export"
|
|
||||||
|
|
||||||
zip -r -q -j BitwardeniOS.app.zip $ARCHIVE_PATH
|
|
||||||
mv BitwardeniOS.app.zip $EXPORT_PATH
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: Copy all dSYMs files to upload
|
- name: Copy all dSYMs files to upload
|
||||||
run: |
|
run: |
|
||||||
ARCHIVE_DSYMS_PATH="$HOME/Library/Developer/Xcode/Archives/*/*.xcarchive/dSYMs"
|
ARCHIVE_DSYMS_PATH="$HOME/Library/Developer/Xcode/Archives/*/*.xcarchive/dSYMs"
|
||||||
@@ -736,13 +711,6 @@ jobs:
|
|||||||
./bitwarden-export/dSYMs/*.*
|
./bitwarden-export/dSYMs/*.*
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Upload .app file for Automation CI
|
|
||||||
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0
|
|
||||||
with:
|
|
||||||
name: BitwardeniOS.app.zip
|
|
||||||
path: ./bitwarden-export/BitwardeniOS.app.zip
|
|
||||||
if-no-files-found: error
|
|
||||||
|
|
||||||
- name: Install AppCenter CLI
|
- name: Install AppCenter CLI
|
||||||
if: |
|
if: |
|
||||||
(github.ref == 'refs/heads/master'
|
(github.ref == 'refs/heads/master'
|
||||||
@@ -811,7 +779,7 @@ jobs:
|
|||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
||||||
|
|
||||||
- name: Login to Azure - CI Subscription
|
- name: Login to Azure - CI Subscription
|
||||||
uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.6
|
uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf # v1.4.3
|
||||||
with:
|
with:
|
||||||
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
||||||
|
|
||||||
@@ -877,7 +845,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Login to Azure - CI Subscription
|
- name: Login to Azure - CI Subscription
|
||||||
uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.6
|
uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf # v1.4.3
|
||||||
if: failure()
|
if: failure()
|
||||||
with:
|
with:
|
||||||
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
||||||
|
|||||||
4
.github/workflows/crowdin-pull.yml
vendored
4
.github/workflows/crowdin-pull.yml
vendored
@@ -18,13 +18,13 @@ jobs:
|
|||||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
||||||
|
|
||||||
- name: Login to Azure - CI Subscription
|
- name: Login to Azure - CI Subscription
|
||||||
uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.6
|
uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf # v1.4.3
|
||||||
with:
|
with:
|
||||||
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
||||||
|
|
||||||
- name: Retrieve secrets
|
- name: Retrieve secrets
|
||||||
id: retrieve-secrets
|
id: retrieve-secrets
|
||||||
uses: bitwarden/gh-actions/get-keyvault-secrets@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/get-keyvault-secrets@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
with:
|
with:
|
||||||
keyvault: "bitwarden-ci"
|
keyvault: "bitwarden-ci"
|
||||||
secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase"
|
secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase"
|
||||||
|
|||||||
2
.github/workflows/pr-labeler.yml
vendored
2
.github/workflows/pr-labeler.yml
vendored
@@ -12,6 +12,6 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/labeler@ac9175f8a1f3625fd0d4fb234536d26811351594 # v4.3.0
|
- uses: actions/labeler@ba790c862c380240c6d5e7427be5ace9a05c754b # v4.0.3
|
||||||
with:
|
with:
|
||||||
sync-labels: true
|
sync-labels: true
|
||||||
|
|||||||
12
.github/workflows/release.yml
vendored
12
.github/workflows/release.yml
vendored
@@ -38,11 +38,11 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
||||||
|
|
||||||
- name: Check Release Version
|
- name: Check Release Version
|
||||||
id: version
|
id: version
|
||||||
uses: bitwarden/gh-actions/release-version-check@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/release-version-check@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
with:
|
with:
|
||||||
release-type: ${{ github.event.inputs.release_type }}
|
release-type: ${{ github.event.inputs.release_type }}
|
||||||
project-type: xamarin
|
project-type: xamarin
|
||||||
@@ -87,7 +87,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
|
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
|
||||||
uses: ncipollo/release-action@6c75be85e571768fa31b40abf38de58ba0397db5 # v1.13.0
|
uses: ncipollo/release-action@40bb172bd05f266cf9ba4ff965cb61e9ee5f6d01 # v1.9.0
|
||||||
with:
|
with:
|
||||||
artifacts: "./com.x8bit.bitwarden.aab/com.x8bit.bitwarden.aab,
|
artifacts: "./com.x8bit.bitwarden.aab/com.x8bit.bitwarden.aab,
|
||||||
./com.x8bit.bitwarden.apk/com.x8bit.bitwarden.apk,
|
./com.x8bit.bitwarden.apk/com.x8bit.bitwarden.apk,
|
||||||
@@ -126,7 +126,7 @@ jobs:
|
|||||||
if: inputs.fdroid_publish
|
if: inputs.fdroid_publish
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
||||||
|
|
||||||
- name: Download F-Droid .apk artifact
|
- name: Download F-Droid .apk artifact
|
||||||
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
|
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
|
||||||
@@ -147,9 +147,9 @@ jobs:
|
|||||||
name: com.x8bit.bitwarden-fdroid.apk
|
name: com.x8bit.bitwarden-fdroid.apk
|
||||||
|
|
||||||
- name: Set up Node
|
- name: Set up Node
|
||||||
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1
|
uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561 # v2.5.1
|
||||||
with:
|
with:
|
||||||
node-version: '16.x'
|
node-version: '10.x'
|
||||||
|
|
||||||
- name: Set up F-Droid server
|
- name: Set up F-Droid server
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
2
.github/workflows/stale-bot.yml
vendored
2
.github/workflows/stale-bot.yml
vendored
@@ -11,7 +11,7 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: 'Run stale action'
|
- name: 'Run stale action'
|
||||||
uses: actions/stale@f7176fd3007623b69d27091f9b9d4ab7995f0a06 # v5.2.1
|
uses: actions/stale@3cc123766321e9f15a6676375c154ccffb12a358 # v5.0.0
|
||||||
with:
|
with:
|
||||||
stale-issue-label: 'needs-reply'
|
stale-issue-label: 'needs-reply'
|
||||||
stale-pr-label: 'needs-changes'
|
stale-pr-label: 'needs-changes'
|
||||||
|
|||||||
4
.github/workflows/version-auto-bump.yml
vendored
4
.github/workflows/version-auto-bump.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
version_number: ${{ steps.version.outputs.new-version }}
|
version_number: ${{ steps.version.outputs.new-version }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Branch
|
- name: Checkout Branch
|
||||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
||||||
|
|
||||||
- name: Calculate bumped version
|
- name: Calculate bumped version
|
||||||
id: version
|
id: version
|
||||||
@@ -35,5 +35,7 @@ jobs:
|
|||||||
name: Bump version to ${{ needs.setup.outputs.version_number }}
|
name: Bump version to ${{ needs.setup.outputs.version_number }}
|
||||||
needs: setup
|
needs: setup
|
||||||
uses: ./.github/workflows/version-bump.yml
|
uses: ./.github/workflows/version-bump.yml
|
||||||
|
secrets:
|
||||||
|
AZURE_PROD_KV_CREDENTIALS: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
||||||
with:
|
with:
|
||||||
version_number: ${{ needs.setup.outputs.version_number }}
|
version_number: ${{ needs.setup.outputs.version_number }}
|
||||||
|
|||||||
21
.github/workflows/version-bump.yml
vendored
21
.github/workflows/version-bump.yml
vendored
@@ -12,6 +12,9 @@ on:
|
|||||||
version_number:
|
version_number:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
secrets:
|
||||||
|
AZURE_PROD_KV_CREDENTIALS:
|
||||||
|
required: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bump_version:
|
bump_version:
|
||||||
@@ -19,22 +22,22 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Branch
|
- name: Checkout Branch
|
||||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
|
||||||
|
|
||||||
- name: Login to Azure - CI Subscription
|
- name: Login to Azure - CI Subscription
|
||||||
uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7
|
uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf # v1.4.3
|
||||||
with:
|
with:
|
||||||
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
|
||||||
|
|
||||||
- name: Retrieve secrets
|
- name: Retrieve secrets
|
||||||
id: retrieve-secrets
|
id: retrieve-secrets
|
||||||
uses: bitwarden/gh-actions/get-keyvault-secrets@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/get-keyvault-secrets@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
with:
|
with:
|
||||||
keyvault: "bitwarden-ci"
|
keyvault: "bitwarden-ci"
|
||||||
secrets: "github-gpg-private-key, github-gpg-private-key-passphrase"
|
secrets: "github-gpg-private-key, github-gpg-private-key-passphrase"
|
||||||
|
|
||||||
- name: Import GPG key
|
- name: Import GPG key
|
||||||
uses: crazy-max/ghaction-import-gpg@d6f3f49f3345e29369fe57596a3ca8f94c4d2ca7 # v5.4.0
|
uses: crazy-max/ghaction-import-gpg@111c56156bcc6918c056dbef52164cfa583dc549 # v5.2.0
|
||||||
with:
|
with:
|
||||||
gpg_private_key: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key }}
|
gpg_private_key: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key }}
|
||||||
passphrase: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key-passphrase }}
|
passphrase: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key-passphrase }}
|
||||||
@@ -45,31 +48,31 @@ jobs:
|
|||||||
run: git switch -c version_bump_${{ github.event.inputs.version_number }}
|
run: git switch -c version_bump_${{ github.event.inputs.version_number }}
|
||||||
|
|
||||||
- name: Bump Version - Android XML
|
- name: Bump Version - Android XML
|
||||||
uses: bitwarden/gh-actions/version-bump@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/version-bump@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
with:
|
with:
|
||||||
version: ${{ github.event.inputs.version_number }}
|
version: ${{ github.event.inputs.version_number }}
|
||||||
file_path: "./src/Android/Properties/AndroidManifest.xml"
|
file_path: "./src/Android/Properties/AndroidManifest.xml"
|
||||||
|
|
||||||
- name: Bump Version - iOS.Autofill
|
- name: Bump Version - iOS.Autofill
|
||||||
uses: bitwarden/gh-actions/version-bump@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/version-bump@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
with:
|
with:
|
||||||
version: ${{ github.event.inputs.version_number }}
|
version: ${{ github.event.inputs.version_number }}
|
||||||
file_path: "./src/iOS.Autofill/Info.plist"
|
file_path: "./src/iOS.Autofill/Info.plist"
|
||||||
|
|
||||||
- name: Bump Version - iOS.Extension
|
- name: Bump Version - iOS.Extension
|
||||||
uses: bitwarden/gh-actions/version-bump@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/version-bump@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
with:
|
with:
|
||||||
version: ${{ github.event.inputs.version_number }}
|
version: ${{ github.event.inputs.version_number }}
|
||||||
file_path: "./src/iOS.Extension/Info.plist"
|
file_path: "./src/iOS.Extension/Info.plist"
|
||||||
|
|
||||||
- name: Bump Version - iOS.ShareExtension
|
- name: Bump Version - iOS.ShareExtension
|
||||||
uses: bitwarden/gh-actions/version-bump@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/version-bump@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
with:
|
with:
|
||||||
version: ${{ github.event.inputs.version_number }}
|
version: ${{ github.event.inputs.version_number }}
|
||||||
file_path: "./src/iOS.ShareExtension/Info.plist"
|
file_path: "./src/iOS.ShareExtension/Info.plist"
|
||||||
|
|
||||||
- name: Bump Version - iOS
|
- name: Bump Version - iOS
|
||||||
uses: bitwarden/gh-actions/version-bump@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/version-bump@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
with:
|
with:
|
||||||
version: ${{ github.event.inputs.version_number }}
|
version: ${{ github.event.inputs.version_number }}
|
||||||
file_path: "./src/iOS/Info.plist"
|
file_path: "./src/iOS/Info.plist"
|
||||||
|
|||||||
2
.github/workflows/workflow-linter.yml
vendored
2
.github/workflows/workflow-linter.yml
vendored
@@ -8,4 +8,4 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
call-workflow:
|
call-workflow:
|
||||||
uses: bitwarden/gh-actions/.github/workflows/workflow-linter.yml@4a7ddc1b38ca5cb4e3e43578f4df5cabe4f55a67
|
uses: bitwarden/gh-actions/.github/workflows/workflow-linter.yml@34ecb67b2a357795dc893549df0795e7383ff50f
|
||||||
|
|||||||
@@ -77,21 +77,21 @@
|
|||||||
<PackageReference Include="Portable.BouncyCastle">
|
<PackageReference Include="Portable.BouncyCastle">
|
||||||
<Version>1.9.0</Version>
|
<Version>1.9.0</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.6.1.3" />
|
<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.5.1.1" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.18" />
|
<PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.16" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.CardView" Version="1.0.0.21" />
|
<PackageReference Include="Xamarin.AndroidX.CardView" Version="1.0.0.19" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.10.1.2" />
|
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.10.0" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.4.0.2" />
|
<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.3.1.1" />
|
||||||
<PackageReference Include="Xamarin.Essentials">
|
<PackageReference Include="Xamarin.Essentials">
|
||||||
<Version>1.8.0</Version>
|
<Version>1.7.5</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Xamarin.Firebase.Messaging">
|
<PackageReference Include="Xamarin.Firebase.Messaging">
|
||||||
<Version>123.1.2.2</Version>
|
<Version>123.1.1.1</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.9.0.2" />
|
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.8.0" />
|
||||||
<PackageReference Include="Xamarin.Google.Dagger" Version="2.46.1.2" />
|
<PackageReference Include="Xamarin.Google.Dagger" Version="2.44.2.1" />
|
||||||
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet">
|
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet">
|
||||||
<Version>118.0.1.5</Version>
|
<Version>118.0.1.3</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -68,9 +68,9 @@ namespace Bit.Droid
|
|||||||
ServiceContainer.Register<IDeleteAccountActionFlowExecutioner>("deleteAccountActionFlowExecutioner", deleteAccountActionFlowExecutioner);
|
ServiceContainer.Register<IDeleteAccountActionFlowExecutioner>("deleteAccountActionFlowExecutioner", deleteAccountActionFlowExecutioner);
|
||||||
|
|
||||||
var verificationActionsFlowHelper = new VerificationActionsFlowHelper(
|
var verificationActionsFlowHelper = new VerificationActionsFlowHelper(
|
||||||
|
ServiceContainer.Resolve<IKeyConnectorService>("keyConnectorService"),
|
||||||
ServiceContainer.Resolve<IPasswordRepromptService>("passwordRepromptService"),
|
ServiceContainer.Resolve<IPasswordRepromptService>("passwordRepromptService"),
|
||||||
ServiceContainer.Resolve<ICryptoService>("cryptoService"),
|
ServiceContainer.Resolve<ICryptoService>("cryptoService"));
|
||||||
ServiceContainer.Resolve<IUserVerificationService>());
|
|
||||||
ServiceContainer.Register<IVerificationActionsFlowHelper>("verificationActionsFlowHelper", verificationActionsFlowHelper);
|
ServiceContainer.Register<IVerificationActionsFlowHelper>("verificationActionsFlowHelper", verificationActionsFlowHelper);
|
||||||
|
|
||||||
var accountsManager = new AccountsManager(
|
var accountsManager = new AccountsManager(
|
||||||
@@ -156,10 +156,10 @@ namespace Bit.Droid
|
|||||||
messagingService, broadcasterService);
|
messagingService, broadcasterService);
|
||||||
var autofillHandler = new AutofillHandler(stateService, messagingService, clipboardService,
|
var autofillHandler = new AutofillHandler(stateService, messagingService, clipboardService,
|
||||||
platformUtilsService, new LazyResolve<IEventService>());
|
platformUtilsService, new LazyResolve<IEventService>());
|
||||||
|
var biometricService = new BiometricService(stateService);
|
||||||
var cryptoFunctionService = new PclCryptoFunctionService(cryptoPrimitiveService);
|
var cryptoFunctionService = new PclCryptoFunctionService(cryptoPrimitiveService);
|
||||||
var cryptoService = new CryptoService(stateService, cryptoFunctionService);
|
var cryptoService = new CryptoService(stateService, cryptoFunctionService);
|
||||||
var biometricService = new BiometricService(stateService, cryptoService);
|
var passwordRepromptService = new MobilePasswordRepromptService(platformUtilsService, cryptoService);
|
||||||
var passwordRepromptService = new MobilePasswordRepromptService(platformUtilsService, cryptoService, stateService);
|
|
||||||
|
|
||||||
ServiceContainer.Register<ISynchronousStorageService>(preferencesStorage);
|
ServiceContainer.Register<ISynchronousStorageService>(preferencesStorage);
|
||||||
ServiceContainer.Register<IBroadcasterService>("broadcasterService", broadcasterService);
|
ServiceContainer.Register<IBroadcasterService>("broadcasterService", broadcasterService);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:versionCode="1" android:versionName="2023.9.1" android:installLocation="internalOnly" package="com.x8bit.bitwarden">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:versionCode="1" android:versionName="2023.7.1" android:installLocation="internalOnly" package="com.x8bit.bitwarden">
|
||||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
|
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.NFC" />
|
<uses-permission android:name="android.permission.NFC" />
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Security.Keystore;
|
using Android.Security.Keystore;
|
||||||
using Bit.App.Services;
|
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
using Java.Security;
|
using Java.Security;
|
||||||
@@ -10,8 +9,10 @@ using Javax.Crypto;
|
|||||||
|
|
||||||
namespace Bit.Droid.Services
|
namespace Bit.Droid.Services
|
||||||
{
|
{
|
||||||
public class BiometricService : BaseBiometricService
|
public class BiometricService : IBiometricService
|
||||||
{
|
{
|
||||||
|
private readonly IStateService _stateService;
|
||||||
|
|
||||||
private const string KeyName = "com.8bit.bitwarden.biometric_integrity";
|
private const string KeyName = "com.8bit.bitwarden.biometric_integrity";
|
||||||
|
|
||||||
private const string KeyStoreName = "AndroidKeyStore";
|
private const string KeyStoreName = "AndroidKeyStore";
|
||||||
@@ -23,14 +24,14 @@ namespace Bit.Droid.Services
|
|||||||
|
|
||||||
private readonly KeyStore _keystore;
|
private readonly KeyStore _keystore;
|
||||||
|
|
||||||
public BiometricService(IStateService stateService, ICryptoService cryptoService)
|
public BiometricService(IStateService stateService)
|
||||||
: base(stateService, cryptoService)
|
|
||||||
{
|
{
|
||||||
|
_stateService = stateService;
|
||||||
_keystore = KeyStore.GetInstance(KeyStoreName);
|
_keystore = KeyStore.GetInstance(KeyStoreName);
|
||||||
_keystore.Load(null);
|
_keystore.Load(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task<bool> SetupBiometricAsync(string bioIntegritySrcKey = null)
|
public async Task<bool> SetupBiometricAsync(string bioIntegritySrcKey = null)
|
||||||
{
|
{
|
||||||
if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
|
if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
|
||||||
{
|
{
|
||||||
@@ -40,7 +41,7 @@ namespace Bit.Droid.Services
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task<bool> IsSystemBiometricIntegrityValidAsync(string bioIntegritySrcKey = null)
|
public async Task<bool> IsSystemBiometricIntegrityValidAsync(string bioIntegritySrcKey = null)
|
||||||
{
|
{
|
||||||
if (Build.VERSION.SdkInt < BuildVersionCodes.M)
|
if (Build.VERSION.SdkInt < BuildVersionCodes.M)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Bit.Core.Enums;
|
|
||||||
|
|
||||||
namespace Bit.App.Abstractions
|
namespace Bit.App.Abstractions
|
||||||
{
|
{
|
||||||
@@ -7,8 +6,10 @@ namespace Bit.App.Abstractions
|
|||||||
{
|
{
|
||||||
string[] ProtectedFields { get; }
|
string[] ProtectedFields { get; }
|
||||||
|
|
||||||
Task<bool> PromptAndCheckPasswordIfNeededAsync(CipherRepromptType repromptType = CipherRepromptType.Password);
|
Task<bool> ShowPasswordPromptAsync();
|
||||||
|
|
||||||
Task<(string password, bool valid)> ShowPasswordPromptAndGetItAsync();
|
Task<(string password, bool valid)> ShowPasswordPromptAndGetItAsync();
|
||||||
|
|
||||||
|
Task<bool> Enabled();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,9 +16,9 @@
|
|||||||
<PackageReference Include="Plugin.Fingerprint" Version="2.1.5" />
|
<PackageReference Include="Plugin.Fingerprint" Version="2.1.5" />
|
||||||
<PackageReference Include="SkiaSharp.Views.Forms" Version="2.88.3" />
|
<PackageReference Include="SkiaSharp.Views.Forms" Version="2.88.3" />
|
||||||
<PackageReference Include="Xamarin.CommunityToolkit" Version="2.0.6" />
|
<PackageReference Include="Xamarin.CommunityToolkit" Version="2.0.6" />
|
||||||
<PackageReference Include="Xamarin.Essentials" Version="1.8.0" />
|
<PackageReference Include="Xamarin.Essentials" Version="1.7.5" />
|
||||||
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.4.11.982" />
|
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.4.11.982" />
|
||||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2612" />
|
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2578" />
|
||||||
<PackageReference Include="ZXing.Net.Mobile" Version="2.4.1" />
|
<PackageReference Include="ZXing.Net.Mobile" Version="2.4.1" />
|
||||||
<PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.4.1" />
|
<PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.4.1" />
|
||||||
<PackageReference Include="MessagePack" Version="2.4.59" />
|
<PackageReference Include="MessagePack" Version="2.4.59" />
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace Bit.App.Controls
|
|||||||
|
|
||||||
public bool ShowHostname
|
public bool ShowHostname
|
||||||
{
|
{
|
||||||
get => !string.IsNullOrWhiteSpace(AccountView.Hostname);
|
get => !string.IsNullOrWhiteSpace(AccountView.Hostname) && AccountView.Hostname != "vault.bitwarden.com";
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsActive
|
public bool IsActive
|
||||||
|
|||||||
@@ -7,17 +7,17 @@ using Bit.App.Utilities;
|
|||||||
using Bit.Core;
|
using Bit.Core;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Models.Data;
|
using Bit.Core.Models.Data;
|
||||||
|
using Bit.Core.Models.Response;
|
||||||
|
using Bit.Core.Services;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Xamarin.CommunityToolkit.ObjectModel;
|
using Xamarin.CommunityToolkit.ObjectModel;
|
||||||
|
using Xamarin.Essentials;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
public class HomeViewModel : BaseViewModel
|
public class HomeViewModel : BaseViewModel
|
||||||
{
|
{
|
||||||
private const string LOGGING_IN_ON_US = "bitwarden.com";
|
|
||||||
private const string LOGGING_IN_ON_EU = "bitwarden.eu";
|
|
||||||
|
|
||||||
private readonly IStateService _stateService;
|
private readonly IStateService _stateService;
|
||||||
private readonly IMessagingService _messagingService;
|
private readonly IMessagingService _messagingService;
|
||||||
private readonly IPlatformUtilsService _platformUtilsService;
|
private readonly IPlatformUtilsService _platformUtilsService;
|
||||||
@@ -30,6 +30,8 @@ namespace Bit.App.Pages
|
|||||||
private bool _rememberEmail;
|
private bool _rememberEmail;
|
||||||
private string _email;
|
private string _email;
|
||||||
private string _selectedEnvironmentName;
|
private string _selectedEnvironmentName;
|
||||||
|
private bool _isEmailEnabled;
|
||||||
|
private bool _canLogin;
|
||||||
private bool _displayEuEnvironment;
|
private bool _displayEuEnvironment;
|
||||||
|
|
||||||
public HomeViewModel()
|
public HomeViewModel()
|
||||||
@@ -84,7 +86,7 @@ namespace Bit.App.Pages
|
|||||||
set => SetProperty(ref _selectedEnvironmentName, value);
|
set => SetProperty(ref _selectedEnvironmentName, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string RegionText => $"{AppResources.LoggingInOn}:";
|
public string RegionText => $"{AppResources.Region}:";
|
||||||
public bool CanContinue => !string.IsNullOrEmpty(Email);
|
public bool CanContinue => !string.IsNullOrEmpty(Email);
|
||||||
|
|
||||||
public FormattedString CreateAccountText
|
public FormattedString CreateAccountText
|
||||||
@@ -165,12 +167,12 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
_displayEuEnvironment = await _configService.GetFeatureFlagBoolAsync(Constants.DisplayEuEnvironmentFlag);
|
_displayEuEnvironment = await _configService.GetFeatureFlagBoolAsync(Constants.DisplayEuEnvironmentFlag);
|
||||||
var options = _displayEuEnvironment
|
var options = _displayEuEnvironment
|
||||||
? new string[] { LOGGING_IN_ON_US, LOGGING_IN_ON_EU, AppResources.SelfHosted }
|
? new string[] { AppResources.US, AppResources.EU, AppResources.SelfHosted }
|
||||||
: new string[] { LOGGING_IN_ON_US, AppResources.SelfHosted };
|
: new string[] { AppResources.US, AppResources.SelfHosted };
|
||||||
|
|
||||||
await Device.InvokeOnMainThreadAsync(async () =>
|
await Device.InvokeOnMainThreadAsync(async () =>
|
||||||
{
|
{
|
||||||
var result = await Page.DisplayActionSheet(AppResources.LoggingInOn, AppResources.Cancel, null, options);
|
var result = await Page.DisplayActionSheet(AppResources.DataRegion, AppResources.Cancel, null, options);
|
||||||
|
|
||||||
if (result is null || result == AppResources.Cancel)
|
if (result is null || result == AppResources.Cancel)
|
||||||
{
|
{
|
||||||
@@ -183,7 +185,7 @@ namespace Bit.App.Pages
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await _environmentService.SetUrlsAsync(result == LOGGING_IN_ON_EU ? EnvironmentUrlData.DefaultEU : EnvironmentUrlData.DefaultUS);
|
await _environmentService.SetUrlsAsync(result == AppResources.EU ? EnvironmentUrlData.DefaultEU : EnvironmentUrlData.DefaultUS);
|
||||||
await _configService.GetAsync(true);
|
await _configService.GetAsync(true);
|
||||||
SelectedEnvironmentName = result;
|
SelectedEnvironmentName = result;
|
||||||
});
|
});
|
||||||
@@ -196,17 +198,17 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
await _environmentService.SetUrlsAsync(EnvironmentUrlData.DefaultUS);
|
await _environmentService.SetUrlsAsync(EnvironmentUrlData.DefaultUS);
|
||||||
environmentsSaved = EnvironmentUrlData.DefaultUS;
|
environmentsSaved = EnvironmentUrlData.DefaultUS;
|
||||||
SelectedEnvironmentName = LOGGING_IN_ON_US;
|
SelectedEnvironmentName = AppResources.US;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (environmentsSaved.Base == EnvironmentUrlData.DefaultUS.Base)
|
if (environmentsSaved.Base == EnvironmentUrlData.DefaultUS.Base)
|
||||||
{
|
{
|
||||||
SelectedEnvironmentName = LOGGING_IN_ON_US;
|
SelectedEnvironmentName = AppResources.US;
|
||||||
}
|
}
|
||||||
else if (environmentsSaved.Base == EnvironmentUrlData.DefaultEU.Base)
|
else if (environmentsSaved.Base == EnvironmentUrlData.DefaultEU.Base)
|
||||||
{
|
{
|
||||||
SelectedEnvironmentName = LOGGING_IN_ON_EU;
|
SelectedEnvironmentName = AppResources.EU;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
<StackLayout StyleClass="box">
|
<StackLayout StyleClass="box">
|
||||||
<Grid
|
<Grid
|
||||||
StyleClass="box-row"
|
StyleClass="box-row"
|
||||||
IsVisible="{Binding PinEnabled}"
|
IsVisible="{Binding PinLock}"
|
||||||
Padding="0, 10, 0, 0">
|
Padding="0, 10, 0, 0">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
<Grid
|
<Grid
|
||||||
x:Name="_passwordGrid"
|
x:Name="_passwordGrid"
|
||||||
StyleClass="box-row"
|
StyleClass="box-row"
|
||||||
IsVisible="{Binding PinEnabled, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding PinLock, Converter={StaticResource inverseBool}}"
|
||||||
Padding="0, 10, 0, 0">
|
Padding="0, 10, 0, 0">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
|
|||||||
@@ -20,14 +20,13 @@ namespace Bit.App.Pages
|
|||||||
private bool _promptedAfterResume;
|
private bool _promptedAfterResume;
|
||||||
private bool _appeared;
|
private bool _appeared;
|
||||||
|
|
||||||
public LockPage(AppOptions appOptions = null, bool autoPromptBiometric = true, bool checkPendingAuthRequests = true)
|
public LockPage(AppOptions appOptions = null, bool autoPromptBiometric = true)
|
||||||
{
|
{
|
||||||
_appOptions = appOptions;
|
_appOptions = appOptions;
|
||||||
_autoPromptBiometric = autoPromptBiometric;
|
_autoPromptBiometric = autoPromptBiometric;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
_broadcasterService = ServiceContainer.Resolve<IBroadcasterService>();
|
_broadcasterService = ServiceContainer.Resolve<IBroadcasterService>();
|
||||||
_vm = BindingContext as LockPageViewModel;
|
_vm = BindingContext as LockPageViewModel;
|
||||||
_vm.CheckPendingAuthRequests = checkPendingAuthRequests;
|
|
||||||
_vm.Page = this;
|
_vm.Page = this;
|
||||||
_vm.UnlockedAction = () => Device.BeginInvokeOnMainThread(async () => await UnlockedAsync());
|
_vm.UnlockedAction = () => Device.BeginInvokeOnMainThread(async () => await UnlockedAsync());
|
||||||
|
|
||||||
@@ -45,7 +44,7 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_vm?.PinEnabled ?? false)
|
if (_vm?.PinLock ?? false)
|
||||||
{
|
{
|
||||||
return _pin;
|
return _pin;
|
||||||
}
|
}
|
||||||
@@ -55,7 +54,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public async Task PromptBiometricAfterResumeAsync()
|
public async Task PromptBiometricAfterResumeAsync()
|
||||||
{
|
{
|
||||||
if (_vm.BiometricEnabled)
|
if (_vm.BiometricLock)
|
||||||
{
|
{
|
||||||
await Task.Delay(500);
|
await Task.Delay(500);
|
||||||
if (!_promptedAfterResume)
|
if (!_promptedAfterResume)
|
||||||
@@ -92,13 +91,13 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
_vm.FocusSecretEntry += PerformFocusSecretEntry;
|
_vm.FocusSecretEntry += PerformFocusSecretEntry;
|
||||||
|
|
||||||
if (!_vm.BiometricEnabled)
|
if (!_vm.BiometricLock)
|
||||||
{
|
{
|
||||||
RequestFocus(SecretEntry);
|
RequestFocus(SecretEntry);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!_vm.HasMasterPassword && !_vm.PinEnabled)
|
if (_vm.UsingKeyConnector && !_vm.PinLock)
|
||||||
{
|
{
|
||||||
_passwordGrid.IsVisible = false;
|
_passwordGrid.IsVisible = false;
|
||||||
_unlockButton.IsVisible = false;
|
_unlockButton.IsVisible = false;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ using Bit.App.Utilities;
|
|||||||
using Bit.Core;
|
using Bit.Core;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Exceptions;
|
|
||||||
using Bit.Core.Models.Domain;
|
using Bit.Core.Models.Domain;
|
||||||
using Bit.Core.Models.Request;
|
using Bit.Core.Models.Request;
|
||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
@@ -28,27 +27,27 @@ namespace Bit.App.Pages
|
|||||||
private readonly IEnvironmentService _environmentService;
|
private readonly IEnvironmentService _environmentService;
|
||||||
private readonly IStateService _stateService;
|
private readonly IStateService _stateService;
|
||||||
private readonly IBiometricService _biometricService;
|
private readonly IBiometricService _biometricService;
|
||||||
private readonly IUserVerificationService _userVerificationService;
|
private readonly IKeyConnectorService _keyConnectorService;
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IWatchDeviceService _watchDeviceService;
|
private readonly IWatchDeviceService _watchDeviceService;
|
||||||
private readonly WeakEventManager<int?> _secretEntryFocusWeakEventManager = new WeakEventManager<int?>();
|
private readonly WeakEventManager<int?> _secretEntryFocusWeakEventManager = new WeakEventManager<int?>();
|
||||||
private readonly IPolicyService _policyService;
|
private readonly IPolicyService _policyService;
|
||||||
private readonly IPasswordGenerationService _passwordGenerationService;
|
private readonly IPasswordGenerationService _passwordGenerationService;
|
||||||
private IDeviceTrustCryptoService _deviceTrustCryptoService;
|
|
||||||
private readonly ISyncService _syncService;
|
|
||||||
private string _email;
|
private string _email;
|
||||||
private string _masterPassword;
|
private string _masterPassword;
|
||||||
private string _pin;
|
private string _pin;
|
||||||
private bool _showPassword;
|
private bool _showPassword;
|
||||||
private PinLockType _pinStatus;
|
private bool _pinLock;
|
||||||
private bool _pinEnabled;
|
private bool _biometricLock;
|
||||||
private bool _biometricEnabled;
|
|
||||||
private bool _biometricIntegrityValid = true;
|
private bool _biometricIntegrityValid = true;
|
||||||
private bool _biometricButtonVisible;
|
private bool _biometricButtonVisible;
|
||||||
private bool _hasMasterPassword;
|
private bool _usingKeyConnector;
|
||||||
private string _biometricButtonText;
|
private string _biometricButtonText;
|
||||||
private string _loggedInAsText;
|
private string _loggedInAsText;
|
||||||
private string _lockedVerifyText;
|
private string _lockedVerifyText;
|
||||||
|
private bool _isPinProtected;
|
||||||
|
private bool _isPinProtectedWithKey;
|
||||||
|
|
||||||
public LockPageViewModel()
|
public LockPageViewModel()
|
||||||
{
|
{
|
||||||
@@ -61,20 +60,17 @@ namespace Bit.App.Pages
|
|||||||
_environmentService = ServiceContainer.Resolve<IEnvironmentService>("environmentService");
|
_environmentService = ServiceContainer.Resolve<IEnvironmentService>("environmentService");
|
||||||
_stateService = ServiceContainer.Resolve<IStateService>("stateService");
|
_stateService = ServiceContainer.Resolve<IStateService>("stateService");
|
||||||
_biometricService = ServiceContainer.Resolve<IBiometricService>("biometricService");
|
_biometricService = ServiceContainer.Resolve<IBiometricService>("biometricService");
|
||||||
_userVerificationService = ServiceContainer.Resolve<IUserVerificationService>();
|
_keyConnectorService = ServiceContainer.Resolve<IKeyConnectorService>("keyConnectorService");
|
||||||
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
||||||
_watchDeviceService = ServiceContainer.Resolve<IWatchDeviceService>();
|
_watchDeviceService = ServiceContainer.Resolve<IWatchDeviceService>();
|
||||||
_policyService = ServiceContainer.Resolve<IPolicyService>();
|
_policyService = ServiceContainer.Resolve<IPolicyService>();
|
||||||
_passwordGenerationService = ServiceContainer.Resolve<IPasswordGenerationService>();
|
_passwordGenerationService = ServiceContainer.Resolve<IPasswordGenerationService>();
|
||||||
_deviceTrustCryptoService = ServiceContainer.Resolve<IDeviceTrustCryptoService>();
|
|
||||||
_syncService = ServiceContainer.Resolve<ISyncService>();
|
|
||||||
|
|
||||||
PageTitle = AppResources.VerifyMasterPassword;
|
PageTitle = AppResources.VerifyMasterPassword;
|
||||||
TogglePasswordCommand = new Command(TogglePassword);
|
TogglePasswordCommand = new Command(TogglePassword);
|
||||||
SubmitCommand = new Command(async () => await SubmitAsync());
|
SubmitCommand = new Command(async () => await SubmitAsync());
|
||||||
|
|
||||||
AccountSwitchingOverlayViewModel =
|
AccountSwitchingOverlayViewModel = new AccountSwitchingOverlayViewModel(_stateService, _messagingService, _logger)
|
||||||
new AccountSwitchingOverlayViewModel(_stateService, _messagingService, _logger)
|
|
||||||
{
|
{
|
||||||
AllowAddAccountRow = true,
|
AllowAddAccountRow = true,
|
||||||
AllowActiveAccountSelection = true
|
AllowActiveAccountSelection = true
|
||||||
@@ -104,21 +100,21 @@ namespace Bit.App.Pages
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool PinEnabled
|
public bool PinLock
|
||||||
{
|
{
|
||||||
get => _pinEnabled;
|
get => _pinLock;
|
||||||
set => SetProperty(ref _pinEnabled, value);
|
set => SetProperty(ref _pinLock, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasMasterPassword
|
public bool UsingKeyConnector
|
||||||
{
|
{
|
||||||
get => _hasMasterPassword;
|
get => _usingKeyConnector;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool BiometricEnabled
|
public bool BiometricLock
|
||||||
{
|
{
|
||||||
get => _biometricEnabled;
|
get => _biometricLock;
|
||||||
set => SetProperty(ref _biometricEnabled, value);
|
set => SetProperty(ref _biometricLock, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool BiometricIntegrityValid
|
public bool BiometricIntegrityValid
|
||||||
@@ -151,18 +147,12 @@ namespace Bit.App.Pages
|
|||||||
set => SetProperty(ref _lockedVerifyText, value);
|
set => SetProperty(ref _lockedVerifyText, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CheckPendingAuthRequests { get; set; }
|
|
||||||
|
|
||||||
public AccountSwitchingOverlayViewModel AccountSwitchingOverlayViewModel { get; }
|
public AccountSwitchingOverlayViewModel AccountSwitchingOverlayViewModel { get; }
|
||||||
|
|
||||||
public Command SubmitCommand { get; }
|
public Command SubmitCommand { get; }
|
||||||
public Command TogglePasswordCommand { get; }
|
public Command TogglePasswordCommand { get; }
|
||||||
|
|
||||||
public string ShowPasswordIcon => ShowPassword ? BitwardenIcons.EyeSlash : BitwardenIcons.Eye;
|
public string ShowPasswordIcon => ShowPassword ? BitwardenIcons.EyeSlash : BitwardenIcons.Eye;
|
||||||
public string PasswordVisibilityAccessibilityText => ShowPassword
|
public string PasswordVisibilityAccessibilityText => ShowPassword ? AppResources.PasswordIsVisibleTapToHide : AppResources.PasswordIsNotVisibleTapToShow;
|
||||||
? AppResources.PasswordIsVisibleTapToHide
|
|
||||||
: AppResources.PasswordIsNotVisibleTapToShow;
|
|
||||||
|
|
||||||
public Action UnlockedAction { get; set; }
|
public Action UnlockedAction { get; set; }
|
||||||
public event Action<int?> FocusSecretEntry
|
public event Action<int?> FocusSecretEntry
|
||||||
{
|
{
|
||||||
@@ -172,33 +162,18 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public async Task InitAsync()
|
public async Task InitAsync()
|
||||||
{
|
{
|
||||||
var pendingRequest = await _stateService.GetPendingAdminAuthRequestAsync();
|
(_isPinProtected, _isPinProtectedWithKey) = await _vaultTimeoutService.IsPinLockSetAsync();
|
||||||
if (pendingRequest != null && CheckPendingAuthRequests)
|
PinLock = (_isPinProtected && await _stateService.GetPinProtectedKeyAsync() != null) ||
|
||||||
|
_isPinProtectedWithKey;
|
||||||
|
BiometricLock = await _vaultTimeoutService.IsBiometricLockSetAsync() && await _cryptoService.HasKeyAsync();
|
||||||
|
|
||||||
|
// Users with key connector and without biometric or pin has no MP to unlock with
|
||||||
|
_usingKeyConnector = await _keyConnectorService.GetUsesKeyConnector();
|
||||||
|
if (_usingKeyConnector && !(BiometricLock || PinLock))
|
||||||
{
|
{
|
||||||
await _vaultTimeoutService.LogOutAsync();
|
await _vaultTimeoutService.LogOutAsync();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_pinStatus = await _vaultTimeoutService.GetPinLockTypeAsync();
|
|
||||||
|
|
||||||
var ephemeralPinSet = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync()
|
|
||||||
?? await _stateService.GetPinProtectedKeyAsync();
|
|
||||||
PinEnabled = (_pinStatus == PinLockType.Transient && ephemeralPinSet != null) ||
|
|
||||||
_pinStatus == PinLockType.Persistent;
|
|
||||||
|
|
||||||
BiometricEnabled = await IsBiometricsEnabledAsync();
|
|
||||||
|
|
||||||
// Users without MP and without biometric or pin has no MP to unlock with
|
|
||||||
_hasMasterPassword = await _userVerificationService.HasMasterPasswordAsync();
|
|
||||||
if (await _stateService.IsAuthenticatedAsync()
|
|
||||||
&& !_hasMasterPassword
|
|
||||||
&& !BiometricEnabled
|
|
||||||
&& !PinEnabled)
|
|
||||||
{
|
|
||||||
await _vaultTimeoutService.LogOutAsync();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_email = await _stateService.GetEmailAsync();
|
_email = await _stateService.GetEmailAsync();
|
||||||
if (string.IsNullOrWhiteSpace(_email))
|
if (string.IsNullOrWhiteSpace(_email))
|
||||||
{
|
{
|
||||||
@@ -213,20 +188,26 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
var webVaultHostname = CoreHelpers.GetHostname(webVault);
|
var webVaultHostname = CoreHelpers.GetHostname(webVault);
|
||||||
LoggedInAsText = string.Format(AppResources.LoggedInAsOn, _email, webVaultHostname);
|
LoggedInAsText = string.Format(AppResources.LoggedInAsOn, _email, webVaultHostname);
|
||||||
if (PinEnabled)
|
if (PinLock)
|
||||||
{
|
{
|
||||||
PageTitle = AppResources.VerifyPIN;
|
PageTitle = AppResources.VerifyPIN;
|
||||||
LockedVerifyText = AppResources.VaultLockedPIN;
|
LockedVerifyText = AppResources.VaultLockedPIN;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PageTitle = _hasMasterPassword ? AppResources.VerifyMasterPassword : AppResources.UnlockVault;
|
if (_usingKeyConnector)
|
||||||
LockedVerifyText = _hasMasterPassword
|
{
|
||||||
? AppResources.VaultLockedMasterPassword
|
PageTitle = AppResources.UnlockVault;
|
||||||
: AppResources.VaultLockedIdentity;
|
LockedVerifyText = AppResources.VaultLockedIdentity;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PageTitle = AppResources.VerifyMasterPassword;
|
||||||
|
LockedVerifyText = AppResources.VaultLockedMasterPassword;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BiometricEnabled)
|
if (BiometricLock)
|
||||||
{
|
{
|
||||||
BiometricIntegrityValid = await _platformUtilsService.IsBiometricIntegrityValidAsync();
|
BiometricIntegrityValid = await _platformUtilsService.IsBiometricIntegrityValidAsync();
|
||||||
if (!_biometricIntegrityValid)
|
if (!_biometricIntegrityValid)
|
||||||
@@ -242,98 +223,59 @@ namespace Bit.App.Pages
|
|||||||
BiometricButtonText = supportsFace ? AppResources.UseFaceIDToUnlock :
|
BiometricButtonText = supportsFace ? AppResources.UseFaceIDToUnlock :
|
||||||
AppResources.UseFingerprintToUnlock;
|
AppResources.UseFingerprintToUnlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SubmitAsync()
|
public async Task SubmitAsync()
|
||||||
{
|
{
|
||||||
ShowPassword = false;
|
if (PinLock && string.IsNullOrWhiteSpace(Pin))
|
||||||
try
|
|
||||||
{
|
|
||||||
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
|
|
||||||
if (PinEnabled)
|
|
||||||
{
|
|
||||||
await UnlockWithPinAsync(kdfConfig);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
await UnlockWithMasterPasswordAsync(kdfConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (LegacyUserException)
|
|
||||||
{
|
|
||||||
await HandleLegacyUserAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task UnlockWithPinAsync(KdfConfig kdfConfig)
|
|
||||||
{
|
|
||||||
if (PinEnabled && string.IsNullOrWhiteSpace(Pin))
|
|
||||||
{
|
{
|
||||||
await Page.DisplayAlert(AppResources.AnErrorHasOccurred,
|
await Page.DisplayAlert(AppResources.AnErrorHasOccurred,
|
||||||
string.Format(AppResources.ValidationFieldRequired, AppResources.PIN),
|
string.Format(AppResources.ValidationFieldRequired, AppResources.PIN),
|
||||||
AppResources.Ok);
|
AppResources.Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!PinLock && string.IsNullOrWhiteSpace(MasterPassword))
|
||||||
|
{
|
||||||
|
await Page.DisplayAlert(AppResources.AnErrorHasOccurred,
|
||||||
|
string.Format(AppResources.ValidationFieldRequired, AppResources.MasterPassword),
|
||||||
|
AppResources.Ok);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowPassword = false;
|
||||||
|
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
|
||||||
|
|
||||||
|
if (PinLock)
|
||||||
|
{
|
||||||
var failed = true;
|
var failed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
EncString userKeyPin;
|
if (_isPinProtected)
|
||||||
EncString oldPinProtected;
|
|
||||||
switch (_pinStatus)
|
|
||||||
{
|
{
|
||||||
case PinLockType.Persistent:
|
var key = await _cryptoService.MakeKeyFromPinAsync(Pin, _email,
|
||||||
{
|
|
||||||
userKeyPin = await _stateService.GetPinKeyEncryptedUserKeyAsync();
|
|
||||||
var oldEncryptedKey = await _stateService.GetPinProtectedAsync();
|
|
||||||
oldPinProtected = oldEncryptedKey != null ? new EncString(oldEncryptedKey) : null;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case PinLockType.Transient:
|
|
||||||
userKeyPin = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync();
|
|
||||||
oldPinProtected = await _stateService.GetPinProtectedKeyAsync();
|
|
||||||
break;
|
|
||||||
case PinLockType.Disabled:
|
|
||||||
default:
|
|
||||||
throw new Exception("Pin is disabled");
|
|
||||||
}
|
|
||||||
|
|
||||||
UserKey userKey;
|
|
||||||
if (oldPinProtected != null)
|
|
||||||
{
|
|
||||||
userKey = await _cryptoService.DecryptAndMigrateOldPinKeyAsync(
|
|
||||||
_pinStatus == PinLockType.Transient,
|
|
||||||
Pin,
|
|
||||||
_email,
|
|
||||||
kdfConfig,
|
kdfConfig,
|
||||||
oldPinProtected
|
await _stateService.GetPinProtectedKeyAsync());
|
||||||
);
|
var encKey = await _cryptoService.GetEncKeyAsync(key);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
userKey = await _cryptoService.DecryptUserKeyWithPinAsync(
|
|
||||||
Pin,
|
|
||||||
_email,
|
|
||||||
kdfConfig,
|
|
||||||
userKeyPin
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
var protectedPin = await _stateService.GetProtectedPinAsync();
|
var protectedPin = await _stateService.GetProtectedPinAsync();
|
||||||
var decryptedPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), userKey);
|
var decPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), encKey);
|
||||||
failed = decryptedPin != Pin;
|
failed = decPin != Pin;
|
||||||
if (!failed)
|
if (!failed)
|
||||||
{
|
{
|
||||||
Pin = string.Empty;
|
Pin = string.Empty;
|
||||||
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
||||||
await SetUserKeyAndContinueAsync(userKey);
|
await SetKeyAndContinueAsync(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (LegacyUserException)
|
else
|
||||||
{
|
{
|
||||||
throw;
|
var key = await _cryptoService.MakeKeyFromPinAsync(Pin, _email, kdfConfig);
|
||||||
|
failed = false;
|
||||||
|
Pin = string.Empty;
|
||||||
|
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
||||||
|
await SetKeyAndContinueAsync(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -351,38 +293,21 @@ namespace Bit.App.Pages
|
|||||||
AppResources.AnErrorHasOccurred);
|
AppResources.AnErrorHasOccurred);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
private async Task UnlockWithMasterPasswordAsync(KdfConfig kdfConfig)
|
|
||||||
{
|
{
|
||||||
if (!PinEnabled && string.IsNullOrWhiteSpace(MasterPassword))
|
var key = await _cryptoService.MakeKeyAsync(MasterPassword, _email, kdfConfig);
|
||||||
{
|
var storedKeyHash = await _cryptoService.GetKeyHashAsync();
|
||||||
await Page.DisplayAlert(AppResources.AnErrorHasOccurred,
|
|
||||||
string.Format(AppResources.ValidationFieldRequired, AppResources.MasterPassword),
|
|
||||||
AppResources.Ok);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var masterKey = await _cryptoService.MakeMasterKeyAsync(MasterPassword, _email, kdfConfig);
|
|
||||||
if (await _cryptoService.IsLegacyUserAsync(masterKey))
|
|
||||||
{
|
|
||||||
throw new LegacyUserException();
|
|
||||||
}
|
|
||||||
|
|
||||||
var storedKeyHash = await _cryptoService.GetMasterKeyHashAsync();
|
|
||||||
var passwordValid = false;
|
var passwordValid = false;
|
||||||
MasterPasswordPolicyOptions enforcedMasterPasswordOptions = null;
|
MasterPasswordPolicyOptions enforcedMasterPasswordOptions = null;
|
||||||
|
|
||||||
if (storedKeyHash != null)
|
if (storedKeyHash != null)
|
||||||
{
|
{
|
||||||
// Offline unlock possible
|
passwordValid = await _cryptoService.CompareAndUpdateKeyHashAsync(MasterPassword, key);
|
||||||
passwordValid = await _cryptoService.CompareAndUpdateKeyHashAsync(MasterPassword, masterKey);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Online unlock required
|
|
||||||
await _deviceActionService.ShowLoadingAsync(AppResources.Loading);
|
await _deviceActionService.ShowLoadingAsync(AppResources.Loading);
|
||||||
var keyHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, masterKey,
|
var keyHash = await _cryptoService.HashPasswordAsync(MasterPassword, key, HashPurpose.ServerAuthorization);
|
||||||
HashPurpose.ServerAuthorization);
|
|
||||||
var request = new PasswordVerificationRequest();
|
var request = new PasswordVerificationRequest();
|
||||||
request.MasterPasswordHash = keyHash;
|
request.MasterPasswordHash = keyHash;
|
||||||
|
|
||||||
@@ -391,9 +316,8 @@ namespace Bit.App.Pages
|
|||||||
var response = await _apiService.PostAccountVerifyPasswordAsync(request);
|
var response = await _apiService.PostAccountVerifyPasswordAsync(request);
|
||||||
enforcedMasterPasswordOptions = response.MasterPasswordPolicy;
|
enforcedMasterPasswordOptions = response.MasterPasswordPolicy;
|
||||||
passwordValid = true;
|
passwordValid = true;
|
||||||
var localKeyHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, masterKey,
|
var localKeyHash = await _cryptoService.HashPasswordAsync(MasterPassword, key, HashPurpose.LocalAuthorization);
|
||||||
HashPurpose.LocalAuthorization);
|
await _cryptoService.SetKeyHashAsync(localKeyHash);
|
||||||
await _cryptoService.SetMasterKeyHashAsync(localKeyHash);
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -401,9 +325,17 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (passwordValid)
|
if (passwordValid)
|
||||||
{
|
{
|
||||||
|
if (_isPinProtected)
|
||||||
|
{
|
||||||
|
var protectedPin = await _stateService.GetProtectedPinAsync();
|
||||||
|
var encKey = await _cryptoService.GetEncKeyAsync(key);
|
||||||
|
var decPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), encKey);
|
||||||
|
var pinKey = await _cryptoService.MakePinKeyAysnc(decPin, _email, kdfConfig);
|
||||||
|
await _stateService.SetPinProtectedKeyAsync(await _cryptoService.EncryptAsync(key.Key, pinKey));
|
||||||
|
}
|
||||||
|
|
||||||
if (await RequirePasswordChangeAsync(enforcedMasterPasswordOptions))
|
if (await RequirePasswordChangeAsync(enforcedMasterPasswordOptions))
|
||||||
{
|
{
|
||||||
// Save the ForcePasswordResetReason to force a password reset after unlock
|
// Save the ForcePasswordResetReason to force a password reset after unlock
|
||||||
@@ -413,13 +345,10 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
MasterPassword = string.Empty;
|
MasterPassword = string.Empty;
|
||||||
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
||||||
|
await SetKeyAndContinueAsync(key);
|
||||||
var userKey = await _cryptoService.DecryptUserKeyWithMasterKeyAsync(masterKey);
|
|
||||||
await _cryptoService.SetMasterKeyAsync(masterKey);
|
|
||||||
await SetUserKeyAndContinueAsync(userKey);
|
|
||||||
|
|
||||||
// Re-enable biometrics
|
// Re-enable biometrics
|
||||||
if (BiometricEnabled & !BiometricIntegrityValid)
|
if (BiometricLock & !BiometricIntegrityValid)
|
||||||
{
|
{
|
||||||
await _biometricService.SetupBiometricAsync();
|
await _biometricService.SetupBiometricAsync();
|
||||||
}
|
}
|
||||||
@@ -436,6 +365,7 @@ namespace Bit.App.Pages
|
|||||||
AppResources.AnErrorHasOccurred);
|
AppResources.AnErrorHasOccurred);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks if the master password requires updating to meet the enforced policy requirements
|
/// Checks if the master password requires updating to meet the enforced policy requirements
|
||||||
@@ -495,82 +425,44 @@ namespace Bit.App.Pages
|
|||||||
public void TogglePassword()
|
public void TogglePassword()
|
||||||
{
|
{
|
||||||
ShowPassword = !ShowPassword;
|
ShowPassword = !ShowPassword;
|
||||||
var secret = PinEnabled ? Pin : MasterPassword;
|
var secret = PinLock ? Pin : MasterPassword;
|
||||||
_secretEntryFocusWeakEventManager.RaiseEvent(string.IsNullOrEmpty(secret) ? 0 : secret.Length,
|
_secretEntryFocusWeakEventManager.RaiseEvent(string.IsNullOrEmpty(secret) ? 0 : secret.Length, nameof(FocusSecretEntry));
|
||||||
nameof(FocusSecretEntry));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PromptBiometricAsync()
|
public async Task PromptBiometricAsync()
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
BiometricIntegrityValid = await _platformUtilsService.IsBiometricIntegrityValidAsync();
|
BiometricIntegrityValid = await _platformUtilsService.IsBiometricIntegrityValidAsync();
|
||||||
BiometricButtonVisible = BiometricIntegrityValid;
|
BiometricButtonVisible = BiometricIntegrityValid;
|
||||||
if (!BiometricEnabled || !BiometricIntegrityValid)
|
if (!BiometricLock || !BiometricIntegrityValid)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var success = await _platformUtilsService.AuthenticateBiometricAsync(null,
|
var success = await _platformUtilsService.AuthenticateBiometricAsync(null,
|
||||||
PinEnabled ? AppResources.PIN : AppResources.MasterPassword,
|
PinLock ? AppResources.PIN : AppResources.MasterPassword,
|
||||||
() => _secretEntryFocusWeakEventManager.RaiseEvent((int?)null, nameof(FocusSecretEntry)),
|
() => _secretEntryFocusWeakEventManager.RaiseEvent((int?)null, nameof(FocusSecretEntry)));
|
||||||
!PinEnabled && !HasMasterPassword);
|
|
||||||
|
|
||||||
await _stateService.SetBiometricLockedAsync(!success);
|
await _stateService.SetBiometricLockedAsync(!success);
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
var userKey = await _cryptoService.GetBiometricUnlockKeyAsync();
|
await DoContinueAsync();
|
||||||
await SetUserKeyAndContinueAsync(userKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (LegacyUserException)
|
|
||||||
{
|
|
||||||
await HandleLegacyUserAsync();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SetUserKeyAndContinueAsync(UserKey key)
|
private async Task SetKeyAndContinueAsync(SymmetricCryptoKey key)
|
||||||
{
|
{
|
||||||
var hasKey = await _cryptoService.HasUserKeyAsync();
|
var hasKey = await _cryptoService.HasKeyAsync();
|
||||||
if (!hasKey)
|
if (!hasKey)
|
||||||
{
|
{
|
||||||
await _cryptoService.SetUserKeyAsync(key);
|
await _cryptoService.SetKeyAsync(key);
|
||||||
}
|
}
|
||||||
await _deviceTrustCryptoService.TrustDeviceIfNeededAsync();
|
|
||||||
await DoContinueAsync();
|
await DoContinueAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task DoContinueAsync()
|
private async Task DoContinueAsync()
|
||||||
{
|
{
|
||||||
_syncService.FullSyncAsync(false).FireAndForget();
|
|
||||||
await _stateService.SetBiometricLockedAsync(false);
|
await _stateService.SetBiometricLockedAsync(false);
|
||||||
_watchDeviceService.SyncDataToWatchAsync().FireAndForget();
|
_watchDeviceService.SyncDataToWatchAsync().FireAndForget();
|
||||||
_messagingService.Send("unlocked");
|
_messagingService.Send("unlocked");
|
||||||
UnlockedAction?.Invoke();
|
UnlockedAction?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<bool> IsBiometricsEnabledAsync()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return await _vaultTimeoutService.IsBiometricLockSetAsync() &&
|
|
||||||
await _biometricService.CanUseBiometricsUnlockAsync();
|
|
||||||
}
|
|
||||||
catch (LegacyUserException)
|
|
||||||
{
|
|
||||||
await HandleLegacyUserAsync();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task HandleLegacyUserAsync()
|
|
||||||
{
|
|
||||||
// Legacy users must migrate on web vault.
|
|
||||||
await _platformUtilsService.ShowDialogAsync(AppResources.EncryptionKeyMigrationRequiredDescriptionLong,
|
|
||||||
AppResources.AnErrorHasOccurred,
|
|
||||||
AppResources.Ok);
|
|
||||||
await _vaultTimeoutService.LogOutAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,76 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<pages:BaseContentPage
|
|
||||||
xmlns="http://xamarin.com/schemas/2014/forms"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
|
||||||
x:Class="Bit.App.Pages.LoginApproveDevicePage"
|
|
||||||
xmlns:pages="clr-namespace:Bit.App.Pages"
|
|
||||||
xmlns:u="clr-namespace:Bit.App.Utilities"
|
|
||||||
x:DataType="pages:LoginApproveDeviceViewModel"
|
|
||||||
x:Name="_page"
|
|
||||||
Title="{Binding PageTitle}">
|
|
||||||
|
|
||||||
<ContentPage.BindingContext>
|
|
||||||
<pages:LoginApproveDeviceViewModel />
|
|
||||||
</ContentPage.BindingContext>
|
|
||||||
|
|
||||||
<StackLayout Padding="10, 10">
|
|
||||||
<StackLayout Padding="5, 10" Orientation="Horizontal">
|
|
||||||
<StackLayout HorizontalOptions="FillAndExpand">
|
|
||||||
<Label
|
|
||||||
StyleClass="text-md"
|
|
||||||
Text="{u:I18n RememberThisDevice}"/>
|
|
||||||
<Label
|
|
||||||
StyleClass="box-sub-label"
|
|
||||||
Text="{u:I18n TurnOffUsingPublicDevice}"/>
|
|
||||||
</StackLayout>
|
|
||||||
<Switch
|
|
||||||
Scale="0.8"
|
|
||||||
IsToggled="{Binding RememberThisDevice}"
|
|
||||||
VerticalOptions="Center"/>
|
|
||||||
</StackLayout>
|
|
||||||
<StackLayout Margin="0, 20, 0, 0">
|
|
||||||
<Button
|
|
||||||
x:Name="_continue"
|
|
||||||
Text="{u:I18n Continue}"
|
|
||||||
StyleClass="btn-primary"
|
|
||||||
Command="{Binding ContinueCommand}"
|
|
||||||
IsVisible="{Binding IsNewUser}"/>
|
|
||||||
<Button
|
|
||||||
x:Name="_approveWithMyOtherDevice"
|
|
||||||
Text="{u:I18n ApproveWithMyOtherDevice}"
|
|
||||||
StyleClass="btn-primary"
|
|
||||||
Command="{Binding ApproveWithMyOtherDeviceCommand}"
|
|
||||||
IsVisible="{Binding ApproveWithMyOtherDeviceEnabled}"/>
|
|
||||||
<Button
|
|
||||||
x:Name="_requestAdminApproval"
|
|
||||||
Text="{u:I18n RequestAdminApproval}"
|
|
||||||
StyleClass="box-button-row"
|
|
||||||
Command="{Binding RequestAdminApprovalCommand}"
|
|
||||||
IsVisible="{Binding RequestAdminApprovalEnabled}"/>
|
|
||||||
<Button
|
|
||||||
x:Name="_approveWithMasterPassword"
|
|
||||||
Text="{u:I18n ApproveWithMasterPassword}"
|
|
||||||
StyleClass="box-button-row"
|
|
||||||
Command="{Binding ApproveWithMasterPasswordCommand}"
|
|
||||||
IsVisible="{Binding ApproveWithMasterPasswordEnabled}"/>
|
|
||||||
<Label
|
|
||||||
Text="{Binding LoggingInAsText}"
|
|
||||||
StyleClass="text-sm"
|
|
||||||
Margin="0,40,0,0"
|
|
||||||
AutomationId="LoggingInAsLabel"
|
|
||||||
/>
|
|
||||||
<Label
|
|
||||||
Text="{u:I18n NotYou}"
|
|
||||||
StyleClass="text-md"
|
|
||||||
HorizontalOptions="Start"
|
|
||||||
TextColor="{DynamicResource HyperlinkColor}"
|
|
||||||
AutomationId="NotYouLabel">
|
|
||||||
<Label.GestureRecognizers>
|
|
||||||
<TapGestureRecognizer Command="{Binding LogoutCommand}" />
|
|
||||||
</Label.GestureRecognizers>
|
|
||||||
</Label>
|
|
||||||
</StackLayout>
|
|
||||||
</StackLayout>
|
|
||||||
</pages:BaseContentPage>
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Bit.App.Models;
|
|
||||||
using Bit.App.Utilities;
|
|
||||||
using Bit.Core.Enums;
|
|
||||||
using Bit.Core.Utilities;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
|
||||||
{
|
|
||||||
public partial class LoginApproveDevicePage : BaseContentPage
|
|
||||||
{
|
|
||||||
|
|
||||||
private readonly LoginApproveDeviceViewModel _vm;
|
|
||||||
private readonly AppOptions _appOptions;
|
|
||||||
|
|
||||||
public LoginApproveDevicePage(AppOptions appOptions = null)
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
_vm = BindingContext as LoginApproveDeviceViewModel;
|
|
||||||
_vm.LogInWithMasterPasswordAction = () => StartLogInWithMasterPasswordAsync().FireAndForget();
|
|
||||||
_vm.LogInWithDeviceAction = () => StartLoginWithDeviceAsync().FireAndForget();
|
|
||||||
_vm.RequestAdminApprovalAction = () => RequestAdminApprovalAsync().FireAndForget();
|
|
||||||
_vm.ContinueToVaultAction = () => ContinueToVaultAsync().FireAndForget();
|
|
||||||
_vm.Page = this;
|
|
||||||
_appOptions = appOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnAppearing()
|
|
||||||
{
|
|
||||||
_vm.InitAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task ContinueToVaultAsync()
|
|
||||||
{
|
|
||||||
if (AppHelpers.SetAlternateMainPage(_appOptions))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var previousPage = await AppHelpers.ClearPreviousPage();
|
|
||||||
Application.Current.MainPage = new TabsPage(_appOptions, previousPage);
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task StartLogInWithMasterPasswordAsync()
|
|
||||||
{
|
|
||||||
var page = new LockPage(_appOptions, checkPendingAuthRequests: false);
|
|
||||||
await Navigation.PushModalAsync(new NavigationPage(page));
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task StartLoginWithDeviceAsync()
|
|
||||||
{
|
|
||||||
var page = new LoginPasswordlessRequestPage(_vm.Email, AuthRequestType.AuthenticateAndUnlock, _appOptions, true);
|
|
||||||
await Navigation.PushModalAsync(new NavigationPage(page));
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task RequestAdminApprovalAsync()
|
|
||||||
{
|
|
||||||
var page = new LoginPasswordlessRequestPage(_vm.Email, AuthRequestType.AdminApproval, _appOptions, true);
|
|
||||||
await Navigation.PushModalAsync(new NavigationPage(page));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,150 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Security.Cryptography.X509Certificates;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Input;
|
|
||||||
using Bit.App.Abstractions;
|
|
||||||
using Bit.App.Resources;
|
|
||||||
using Bit.App.Utilities.AccountManagement;
|
|
||||||
using Bit.Core.Abstractions;
|
|
||||||
using Bit.Core.Enums;
|
|
||||||
using Bit.Core.Models.Domain;
|
|
||||||
using Bit.Core.Models.Request;
|
|
||||||
using Bit.Core.Services;
|
|
||||||
using Bit.Core.Utilities;
|
|
||||||
using Xamarin.CommunityToolkit.ObjectModel;
|
|
||||||
using Xamarin.Essentials;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
|
||||||
{
|
|
||||||
public class LoginApproveDeviceViewModel : BaseViewModel
|
|
||||||
{
|
|
||||||
private bool _rememberThisDevice;
|
|
||||||
private bool _approveWithMyOtherDeviceEnabled;
|
|
||||||
private bool _requestAdminApprovalEnabled;
|
|
||||||
private bool _approveWithMasterPasswordEnabled;
|
|
||||||
private string _email;
|
|
||||||
private readonly IStateService _stateService;
|
|
||||||
private readonly IApiService _apiService;
|
|
||||||
private IDeviceTrustCryptoService _deviceTrustCryptoService;
|
|
||||||
private readonly IAuthService _authService;
|
|
||||||
private readonly ISyncService _syncService;
|
|
||||||
private readonly IMessagingService _messagingService;
|
|
||||||
|
|
||||||
public ICommand ApproveWithMyOtherDeviceCommand { get; }
|
|
||||||
public ICommand RequestAdminApprovalCommand { get; }
|
|
||||||
public ICommand ApproveWithMasterPasswordCommand { get; }
|
|
||||||
public ICommand ContinueCommand { get; }
|
|
||||||
public ICommand LogoutCommand { get; }
|
|
||||||
|
|
||||||
public Action LogInWithMasterPasswordAction { get; set; }
|
|
||||||
public Action LogInWithDeviceAction { get; set; }
|
|
||||||
public Action RequestAdminApprovalAction { get; set; }
|
|
||||||
public Action ContinueToVaultAction { get; set; }
|
|
||||||
|
|
||||||
public LoginApproveDeviceViewModel()
|
|
||||||
{
|
|
||||||
_stateService = ServiceContainer.Resolve<IStateService>();
|
|
||||||
_apiService = ServiceContainer.Resolve<IApiService>();
|
|
||||||
_deviceTrustCryptoService = ServiceContainer.Resolve<IDeviceTrustCryptoService>();
|
|
||||||
_authService = ServiceContainer.Resolve<IAuthService>();
|
|
||||||
_syncService = ServiceContainer.Resolve<ISyncService>();
|
|
||||||
_messagingService = ServiceContainer.Resolve<IMessagingService>();
|
|
||||||
|
|
||||||
PageTitle = AppResources.LogInInitiated;
|
|
||||||
RememberThisDevice = true;
|
|
||||||
|
|
||||||
ApproveWithMyOtherDeviceCommand = new AsyncCommand(() => SetDeviceTrustAndInvokeAsync(LogInWithDeviceAction),
|
|
||||||
onException: ex => HandleException(ex),
|
|
||||||
allowsMultipleExecutions: false);
|
|
||||||
|
|
||||||
RequestAdminApprovalCommand = new AsyncCommand(() => SetDeviceTrustAndInvokeAsync(RequestAdminApprovalAction),
|
|
||||||
onException: ex => HandleException(ex),
|
|
||||||
allowsMultipleExecutions: false);
|
|
||||||
|
|
||||||
ApproveWithMasterPasswordCommand = new AsyncCommand(() => SetDeviceTrustAndInvokeAsync(LogInWithMasterPasswordAction),
|
|
||||||
onException: ex => HandleException(ex),
|
|
||||||
allowsMultipleExecutions: false);
|
|
||||||
|
|
||||||
ContinueCommand = new AsyncCommand(CreateNewSsoUserAsync,
|
|
||||||
onException: ex => HandleException(ex),
|
|
||||||
allowsMultipleExecutions: false);
|
|
||||||
|
|
||||||
LogoutCommand = new Command(() => _messagingService.Send(AccountsManagerMessageCommands.LOGOUT));
|
|
||||||
}
|
|
||||||
|
|
||||||
public string LoggingInAsText => string.Format(AppResources.LoggingInAsX, Email);
|
|
||||||
|
|
||||||
public bool RememberThisDevice
|
|
||||||
{
|
|
||||||
get => _rememberThisDevice;
|
|
||||||
set => SetProperty(ref _rememberThisDevice, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ApproveWithMyOtherDeviceEnabled
|
|
||||||
{
|
|
||||||
get => _approveWithMyOtherDeviceEnabled;
|
|
||||||
set => SetProperty(ref _approveWithMyOtherDeviceEnabled, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool RequestAdminApprovalEnabled
|
|
||||||
{
|
|
||||||
get => _requestAdminApprovalEnabled;
|
|
||||||
set => SetProperty(ref _requestAdminApprovalEnabled, value,
|
|
||||||
additionalPropertyNames: new[] { nameof(IsNewUser) });
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ApproveWithMasterPasswordEnabled
|
|
||||||
{
|
|
||||||
get => _approveWithMasterPasswordEnabled;
|
|
||||||
set => SetProperty(ref _approveWithMasterPasswordEnabled, value,
|
|
||||||
additionalPropertyNames: new[] { nameof(IsNewUser) });
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsNewUser => !RequestAdminApprovalEnabled && !ApproveWithMasterPasswordEnabled;
|
|
||||||
|
|
||||||
public string Email
|
|
||||||
{
|
|
||||||
get => _email;
|
|
||||||
set => SetProperty(ref _email, value, additionalPropertyNames:
|
|
||||||
new string[] {
|
|
||||||
nameof(LoggingInAsText)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task InitAsync()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Email = await _stateService.GetActiveUserEmailAsync();
|
|
||||||
var decryptOptions = await _stateService.GetAccountDecryptionOptions();
|
|
||||||
RequestAdminApprovalEnabled = decryptOptions?.TrustedDeviceOption?.HasAdminApproval ?? false;
|
|
||||||
ApproveWithMasterPasswordEnabled = decryptOptions?.HasMasterPassword ?? false;
|
|
||||||
ApproveWithMyOtherDeviceEnabled = decryptOptions?.TrustedDeviceOption?.HasLoginApprovingDevice ?? false;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
HandleException(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task CreateNewSsoUserAsync()
|
|
||||||
{
|
|
||||||
await _authService.CreateNewSsoUserAsync(await _stateService.GetRememberedOrgIdentifierAsync());
|
|
||||||
if (RememberThisDevice)
|
|
||||||
{
|
|
||||||
await _deviceTrustCryptoService.TrustDeviceAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
_syncService.FullSyncAsync(true).FireAndForget();
|
|
||||||
await Device.InvokeOnMainThreadAsync(ContinueToVaultAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task SetDeviceTrustAndInvokeAsync(Action action)
|
|
||||||
{
|
|
||||||
await _deviceTrustCryptoService.SetShouldTrustDeviceAsync(RememberThisDevice);
|
|
||||||
await Device.InvokeOnMainThreadAsync(action);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -4,7 +4,6 @@ using Bit.App.Models;
|
|||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
using Bit.Core;
|
using Bit.Core;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Enums;
|
|
||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Xamarin.CommunityToolkit.ObjectModel;
|
using Xamarin.CommunityToolkit.ObjectModel;
|
||||||
@@ -136,7 +135,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
private async Task StartLoginWithDeviceAsync()
|
private async Task StartLoginWithDeviceAsync()
|
||||||
{
|
{
|
||||||
var page = new LoginPasswordlessRequestPage(_vm.Email, AuthRequestType.AuthenticateAndUnlock, _appOptions);
|
var page = new LoginPasswordlessRequestPage(_vm.Email, _appOptions);
|
||||||
await Navigation.PushModalAsync(new NavigationPage(page));
|
await Navigation.PushModalAsync(new NavigationPage(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -248,14 +248,6 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
|
|
||||||
if (response.RequiresEncryptionKeyMigration)
|
|
||||||
{
|
|
||||||
// Legacy users must migrate on web vault.
|
|
||||||
await _platformUtilsService.ShowDialogAsync(AppResources.EncryptionKeyMigrationRequiredDescriptionLong, AppResources.AnErrorHasOccurred,
|
|
||||||
AppResources.Ok);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response.TwoFactor)
|
if (response.TwoFactor)
|
||||||
{
|
{
|
||||||
StartTwoFactorAction?.Invoke();
|
StartTwoFactorAction?.Invoke();
|
||||||
|
|||||||
@@ -21,17 +21,17 @@
|
|||||||
<StackLayout
|
<StackLayout
|
||||||
Padding="7, 0, 7, 20">
|
Padding="7, 0, 7, 20">
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Title}"
|
Text="{u:I18n LogInInitiated}"
|
||||||
FontSize="Title"
|
FontSize="Title"
|
||||||
FontAttributes="Bold"
|
FontAttributes="Bold"
|
||||||
Margin="0,14,0,21"
|
Margin="0,14,0,21"
|
||||||
AutomationId="LogInInitiatedLabel" />
|
AutomationId="LogInInitiatedLabel" />
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding SubTitle}"
|
Text="{u:I18n ANotificationHasBeenSentToYourDevice}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
Margin="0,0,0,10"/>
|
Margin="0,0,0,10"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Description}"
|
Text="{u:I18n PleaseMakeSureYourVaultIsUnlockedAndTheFingerprintPhraseMatchesOnTheOtherDevice}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
Margin="0,0,0,24"/>
|
Margin="0,0,0,24"/>
|
||||||
<Label
|
<Label
|
||||||
@@ -40,33 +40,33 @@
|
|||||||
FontAttributes="Bold"/>
|
FontAttributes="Bold"/>
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
FormattedText="{Binding FingerprintPhrase}"
|
FormattedText="{Binding FingerprintPhrase}"
|
||||||
FontSize="Small"
|
FontSize="Medium"
|
||||||
TextColor="{DynamicResource FingerprintPhrase}"
|
TextColor="{DynamicResource FingerprintPhrase}"
|
||||||
AutomationId="FingerprintPhraseValue" />
|
AutomationId="FingerprintPhraseValue" />
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ResendNotification}"
|
Text="{u:I18n ResendNotification}"
|
||||||
IsVisible="{Binding ResendNotificationVisible}"
|
StyleClass="text-md"
|
||||||
StyleClass="text-sm"
|
|
||||||
FontAttributes="Bold"
|
|
||||||
HorizontalOptions="Start"
|
HorizontalOptions="Start"
|
||||||
Margin="0,24,0,0"
|
Margin="0,40,0,0"
|
||||||
TextColor="{DynamicResource HyperlinkColor}"
|
TextColor="{DynamicResource HyperlinkColor}"
|
||||||
AutomationId="ResendNotificationButton">
|
AutomationId="ResendNotificationButton">
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer Command="{Binding CreatePasswordlessLoginCommand}" />
|
<TapGestureRecognizer Command="{Binding CreatePasswordlessLoginCommand}" />
|
||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
</Label>
|
</Label>
|
||||||
<BoxView
|
<StackLayout
|
||||||
HeightRequest="1"
|
Orientation="Horizontal"
|
||||||
Margin="0,24,0,24"
|
Margin="0,30,0,0">
|
||||||
Color="{DynamicResource DisabledIconColor}" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding OtherOptions}"
|
Text="{u:I18n NeedAnotherOption}"
|
||||||
FontSize="Small"/>
|
FontSize="Small"
|
||||||
|
VerticalTextAlignment="End"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ViewAllLoginOptions}"
|
Text="{u:I18n ViewAllLoginOptions}"
|
||||||
StyleClass="text-sm"
|
StyleClass="text-md"
|
||||||
FontAttributes="Bold"
|
VerticalTextAlignment="End"
|
||||||
|
VerticalOptions="CenterAndExpand"
|
||||||
|
Margin="5, 0"
|
||||||
TextColor="{DynamicResource HyperlinkColor}"
|
TextColor="{DynamicResource HyperlinkColor}"
|
||||||
AutomationId="ViewAllLoginOptionsButton">
|
AutomationId="ViewAllLoginOptionsButton">
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
@@ -74,5 +74,7 @@
|
|||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
</Label>
|
</Label>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
|
</StackLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</pages:BaseContentPage>
|
</pages:BaseContentPage>
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Bit.App.Models;
|
using Bit.App.Models;
|
||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
using Bit.Core.Enums;
|
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
@@ -13,15 +12,13 @@ namespace Bit.App.Pages
|
|||||||
private LoginPasswordlessRequestViewModel _vm;
|
private LoginPasswordlessRequestViewModel _vm;
|
||||||
private readonly AppOptions _appOptions;
|
private readonly AppOptions _appOptions;
|
||||||
|
|
||||||
public LoginPasswordlessRequestPage(string email, AuthRequestType authRequestType, AppOptions appOptions = null, bool authingWithSso = false)
|
public LoginPasswordlessRequestPage(string email, AppOptions appOptions = null)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
_appOptions = appOptions;
|
_appOptions = appOptions;
|
||||||
_vm = BindingContext as LoginPasswordlessRequestViewModel;
|
_vm = BindingContext as LoginPasswordlessRequestViewModel;
|
||||||
_vm.Page = this;
|
_vm.Page = this;
|
||||||
_vm.Email = email;
|
_vm.Email = email;
|
||||||
_vm.AuthRequestType = authRequestType;
|
|
||||||
_vm.AuthingWithSso = authingWithSso;
|
|
||||||
_vm.StartTwoFactorAction = () => Device.BeginInvokeOnMainThread(async () => await StartTwoFactorAsync());
|
_vm.StartTwoFactorAction = () => Device.BeginInvokeOnMainThread(async () => await StartTwoFactorAsync());
|
||||||
_vm.LogInSuccessAction = () => Device.BeginInvokeOnMainThread(async () => await LogInSuccessAsync());
|
_vm.LogInSuccessAction = () => Device.BeginInvokeOnMainThread(async () => await LogInSuccessAsync());
|
||||||
_vm.UpdateTempPasswordAction = () => Device.BeginInvokeOnMainThread(async () => await UpdateTempPasswordAsync());
|
_vm.UpdateTempPasswordAction = () => Device.BeginInvokeOnMainThread(async () => await UpdateTempPasswordAsync());
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -12,9 +11,7 @@ using Bit.App.Utilities;
|
|||||||
using Bit.Core;
|
using Bit.Core;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Exceptions;
|
|
||||||
using Bit.Core.Models.Domain;
|
using Bit.Core.Models.Domain;
|
||||||
using Bit.Core.Models.Response;
|
|
||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Xamarin.CommunityToolkit.ObjectModel;
|
using Xamarin.CommunityToolkit.ObjectModel;
|
||||||
@@ -35,9 +32,6 @@ namespace Bit.App.Pages
|
|||||||
private IPlatformUtilsService _platformUtilsService;
|
private IPlatformUtilsService _platformUtilsService;
|
||||||
private IEnvironmentService _environmentService;
|
private IEnvironmentService _environmentService;
|
||||||
private ILogger _logger;
|
private ILogger _logger;
|
||||||
private IDeviceTrustCryptoService _deviceTrustCryptoService;
|
|
||||||
private readonly ICryptoFunctionService _cryptoFunctionService;
|
|
||||||
private readonly ICryptoService _cryptoService;
|
|
||||||
|
|
||||||
protected override II18nService i18nService => _i18nService;
|
protected override II18nService i18nService => _i18nService;
|
||||||
protected override IEnvironmentService environmentService => _environmentService;
|
protected override IEnvironmentService environmentService => _environmentService;
|
||||||
@@ -50,7 +44,6 @@ namespace Bit.App.Pages
|
|||||||
private string _email;
|
private string _email;
|
||||||
private string _requestId;
|
private string _requestId;
|
||||||
private string _requestAccessCode;
|
private string _requestAccessCode;
|
||||||
private AuthRequestType _authRequestType;
|
|
||||||
// Item1 publicKey, Item2 privateKey
|
// Item1 publicKey, Item2 privateKey
|
||||||
private Tuple<byte[], byte[]> _requestKeyPair;
|
private Tuple<byte[], byte[]> _requestKeyPair;
|
||||||
|
|
||||||
@@ -64,9 +57,8 @@ namespace Bit.App.Pages
|
|||||||
_i18nService = ServiceContainer.Resolve<II18nService>();
|
_i18nService = ServiceContainer.Resolve<II18nService>();
|
||||||
_stateService = ServiceContainer.Resolve<IStateService>();
|
_stateService = ServiceContainer.Resolve<IStateService>();
|
||||||
_logger = ServiceContainer.Resolve<ILogger>();
|
_logger = ServiceContainer.Resolve<ILogger>();
|
||||||
_deviceTrustCryptoService = ServiceContainer.Resolve<IDeviceTrustCryptoService>();
|
|
||||||
_cryptoFunctionService = ServiceContainer.Resolve<ICryptoFunctionService>();
|
PageTitle = AppResources.LogInWithAnotherDevice;
|
||||||
_cryptoService = ServiceContainer.Resolve<ICryptoService>();
|
|
||||||
|
|
||||||
CreatePasswordlessLoginCommand = new AsyncCommand(CreatePasswordlessLoginAsync,
|
CreatePasswordlessLoginCommand = new AsyncCommand(CreatePasswordlessLoginAsync,
|
||||||
onException: ex => HandleException(ex),
|
onException: ex => HandleException(ex),
|
||||||
@@ -81,91 +73,10 @@ namespace Bit.App.Pages
|
|||||||
public Action LogInSuccessAction { get; set; }
|
public Action LogInSuccessAction { get; set; }
|
||||||
public Action UpdateTempPasswordAction { get; set; }
|
public Action UpdateTempPasswordAction { get; set; }
|
||||||
public Action CloseAction { get; set; }
|
public Action CloseAction { get; set; }
|
||||||
public bool AuthingWithSso { get; set; }
|
|
||||||
|
|
||||||
public ICommand CreatePasswordlessLoginCommand { get; }
|
public ICommand CreatePasswordlessLoginCommand { get; }
|
||||||
public ICommand CloseCommand { get; }
|
public ICommand CloseCommand { get; }
|
||||||
|
|
||||||
public string HeaderTitle
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
switch (_authRequestType)
|
|
||||||
{
|
|
||||||
case AuthRequestType.AuthenticateAndUnlock:
|
|
||||||
return AppResources.LogInWithDevice;
|
|
||||||
case AuthRequestType.AdminApproval:
|
|
||||||
return AppResources.LogInInitiated;
|
|
||||||
default:
|
|
||||||
return string.Empty;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Title
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
switch (_authRequestType)
|
|
||||||
{
|
|
||||||
case AuthRequestType.AuthenticateAndUnlock:
|
|
||||||
return AppResources.LogInInitiated;
|
|
||||||
case AuthRequestType.AdminApproval:
|
|
||||||
return AppResources.AdminApprovalRequested;
|
|
||||||
default:
|
|
||||||
return string.Empty;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string SubTitle
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
switch (_authRequestType)
|
|
||||||
{
|
|
||||||
case AuthRequestType.AuthenticateAndUnlock:
|
|
||||||
return AppResources.ANotificationHasBeenSentToYourDevice;
|
|
||||||
case AuthRequestType.AdminApproval:
|
|
||||||
return AppResources.YourRequestHasBeenSentToYourAdmin;
|
|
||||||
default:
|
|
||||||
return string.Empty;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Description
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
switch (_authRequestType)
|
|
||||||
{
|
|
||||||
case AuthRequestType.AuthenticateAndUnlock:
|
|
||||||
return AppResources.PleaseMakeSureYourVaultIsUnlockedAndTheFingerprintPhraseMatchesOnTheOtherDevice;
|
|
||||||
case AuthRequestType.AdminApproval:
|
|
||||||
return AppResources.YouWillBeNotifiedOnceApproved;
|
|
||||||
default:
|
|
||||||
return string.Empty;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string OtherOptions
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
switch (_authRequestType)
|
|
||||||
{
|
|
||||||
case AuthRequestType.AuthenticateAndUnlock:
|
|
||||||
return AppResources.LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption;
|
|
||||||
case AuthRequestType.AdminApproval:
|
|
||||||
return AppResources.TroubleLoggingIn;
|
|
||||||
default:
|
|
||||||
return string.Empty;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string FingerprintPhrase
|
public string FingerprintPhrase
|
||||||
{
|
{
|
||||||
get => _fingerprintPhrase;
|
get => _fingerprintPhrase;
|
||||||
@@ -178,25 +89,6 @@ namespace Bit.App.Pages
|
|||||||
set => SetProperty(ref _email, value);
|
set => SetProperty(ref _email, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AuthRequestType AuthRequestType
|
|
||||||
{
|
|
||||||
get => _authRequestType;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
SetProperty(ref _authRequestType, value, additionalPropertyNames: new string[]
|
|
||||||
{
|
|
||||||
nameof(Title),
|
|
||||||
nameof(SubTitle),
|
|
||||||
nameof(Description),
|
|
||||||
nameof(OtherOptions),
|
|
||||||
nameof(ResendNotificationVisible)
|
|
||||||
});
|
|
||||||
PageTitle = HeaderTitle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ResendNotificationVisible => AuthRequestType == AuthRequestType.AuthenticateAndUnlock;
|
|
||||||
|
|
||||||
public void StartCheckLoginRequestStatus()
|
public void StartCheckLoginRequestStatus()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -227,39 +119,25 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
private async Task CheckLoginRequestStatus()
|
private async Task CheckLoginRequestStatus()
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(_requestId))
|
if (string.IsNullOrEmpty(_requestId) || string.IsNullOrEmpty(_requestAccessCode))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PasswordlessLoginResponse response = null;
|
var response = await _authService.GetPasswordlessLoginResponseAsync(_requestId, _requestAccessCode);
|
||||||
if (AuthingWithSso)
|
|
||||||
{
|
|
||||||
response = await _authService.GetPasswordlessLoginRequestByIdAsync(_requestId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
response = await _authService.GetPasswordlessLoginResquestAsync(_requestId, _requestAccessCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response?.RequestApproved != true)
|
if (response.RequestApproved == null || !response.RequestApproved.Value)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
StopCheckLoginRequestStatus();
|
StopCheckLoginRequestStatus();
|
||||||
|
|
||||||
var authResult = await _authService.LogInPasswordlessAsync(AuthingWithSso, Email, _requestAccessCode, _requestId, _requestKeyPair.Item2, response.Key, response.MasterPasswordHash);
|
var authResult = await _authService.LogInPasswordlessAsync(Email, _requestAccessCode, _requestId, _requestKeyPair.Item2, response.Key, response.MasterPasswordHash);
|
||||||
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
||||||
|
|
||||||
if (authResult == null && await _stateService.IsAuthenticatedAsync())
|
|
||||||
{
|
|
||||||
await HandleLoginCompleteAsync();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (await HandleCaptchaAsync(authResult.CaptchaSiteKey, authResult.CaptchaNeeded, CheckLoginRequestStatus))
|
if (await HandleCaptchaAsync(authResult.CaptchaSiteKey, authResult.CaptchaNeeded, CheckLoginRequestStatus))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -275,13 +153,10 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await HandleLoginCompleteAsync();
|
_syncService.FullSyncAsync(true).FireAndForget();
|
||||||
|
LogInSuccessAction?.Invoke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (ApiException ex) when (ex.Error?.StatusCode == System.Net.HttpStatusCode.BadRequest)
|
|
||||||
{
|
|
||||||
HandleException(ex);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
StartCheckLoginRequestStatus();
|
StartCheckLoginRequestStatus();
|
||||||
@@ -289,66 +164,31 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task HandleLoginCompleteAsync()
|
|
||||||
{
|
|
||||||
await _stateService.SetPendingAdminAuthRequestAsync(null);
|
|
||||||
_syncService.FullSyncAsync(true).FireAndForget();
|
|
||||||
LogInSuccessAction?.Invoke();
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task CreatePasswordlessLoginAsync()
|
private async Task CreatePasswordlessLoginAsync()
|
||||||
{
|
{
|
||||||
await Device.InvokeOnMainThreadAsync(() => _deviceActionService.ShowLoadingAsync(AppResources.Loading));
|
await Device.InvokeOnMainThreadAsync(() => _deviceActionService.ShowLoadingAsync(AppResources.Loading));
|
||||||
|
|
||||||
PasswordlessLoginResponse response = null;
|
var response = await _authService.PasswordlessCreateLoginRequestAsync(_email);
|
||||||
var pendingRequest = await _stateService.GetPendingAdminAuthRequestAsync();
|
if (response != null)
|
||||||
if (pendingRequest != null && _authRequestType == AuthRequestType.AdminApproval)
|
|
||||||
{
|
{
|
||||||
response = await _authService.GetPasswordlessLoginRequestByIdAsync(pendingRequest.Id);
|
|
||||||
if (response == null || (response.IsAnswered && !response.RequestApproved.Value))
|
|
||||||
{
|
|
||||||
// handle pending auth request not valid remove it from state
|
|
||||||
await _stateService.SetPendingAdminAuthRequestAsync(null);
|
|
||||||
pendingRequest = null;
|
|
||||||
response = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Derive pubKey from privKey in state to avoid MITM attacks
|
|
||||||
// Also generate FingerprintPhrase locally for the same reason
|
|
||||||
var derivedPublicKey = await _cryptoFunctionService.RsaExtractPublicKeyAsync(pendingRequest.PrivateKey);
|
|
||||||
response.FingerprintPhrase = string.Join("-", await _cryptoService.GetFingerprintAsync(Email, derivedPublicKey));
|
|
||||||
response.RequestKeyPair = new Tuple<byte[], byte[]>(derivedPublicKey, pendingRequest.PrivateKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response == null)
|
|
||||||
{
|
|
||||||
response = await _authService.PasswordlessCreateLoginRequestAsync(_email, AuthRequestType);
|
|
||||||
}
|
|
||||||
|
|
||||||
await HandlePasswordlessLoginAsync(response, pendingRequest == null && _authRequestType == AuthRequestType.AdminApproval);
|
|
||||||
await _deviceActionService.HideLoadingAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task HandlePasswordlessLoginAsync(PasswordlessLoginResponse response, bool createPendingAdminRequest)
|
|
||||||
{
|
|
||||||
if (response == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(response));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (createPendingAdminRequest)
|
|
||||||
{
|
|
||||||
var pendingAuthRequest = new PendingAdminAuthRequest { Id = response.Id, PrivateKey = response.RequestKeyPair.Item2 };
|
|
||||||
await _stateService.SetPendingAdminAuthRequestAsync(pendingAuthRequest);
|
|
||||||
}
|
|
||||||
|
|
||||||
FingerprintPhrase = response.FingerprintPhrase;
|
FingerprintPhrase = response.FingerprintPhrase;
|
||||||
_requestId = response.Id;
|
_requestId = response.Id;
|
||||||
_requestAccessCode = response.RequestAccessCode;
|
_requestAccessCode = response.RequestAccessCode;
|
||||||
_requestKeyPair = response.RequestKeyPair;
|
_requestKeyPair = response.RequestKeyPair;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await _deviceActionService.HideLoadingAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleException(Exception ex)
|
||||||
|
{
|
||||||
|
Xamarin.Essentials.MainThread.InvokeOnMainThreadAsync(async () =>
|
||||||
|
{
|
||||||
|
await _deviceActionService.HideLoadingAsync();
|
||||||
|
await _platformUtilsService.ShowDialogAsync(AppResources.GenericErrorMessage);
|
||||||
|
}).FireAndForget();
|
||||||
|
_logger.Exception(ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,6 @@ namespace Bit.App.Pages
|
|||||||
_vm.SsoAuthSuccessAction = () => Device.BeginInvokeOnMainThread(async () => await SsoAuthSuccessAsync());
|
_vm.SsoAuthSuccessAction = () => Device.BeginInvokeOnMainThread(async () => await SsoAuthSuccessAsync());
|
||||||
_vm.UpdateTempPasswordAction =
|
_vm.UpdateTempPasswordAction =
|
||||||
() => Device.BeginInvokeOnMainThread(async () => await UpdateTempPasswordAsync());
|
() => Device.BeginInvokeOnMainThread(async () => await UpdateTempPasswordAsync());
|
||||||
_vm.StartDeviceApprovalOptionsAction =
|
|
||||||
() => Device.BeginInvokeOnMainThread(async () => await StartDeviceApprovalOptionsAsync());
|
|
||||||
_vm.CloseAction = async () =>
|
_vm.CloseAction = async () =>
|
||||||
{
|
{
|
||||||
await Navigation.PopModalAsync();
|
await Navigation.PopModalAsync();
|
||||||
@@ -108,17 +106,10 @@ namespace Bit.App.Pages
|
|||||||
await Navigation.PushModalAsync(new NavigationPage(page));
|
await Navigation.PushModalAsync(new NavigationPage(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task StartDeviceApprovalOptionsAsync()
|
|
||||||
{
|
|
||||||
var page = new LoginApproveDevicePage();
|
|
||||||
await Navigation.PushModalAsync(new NavigationPage(page));
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task SsoAuthSuccessAsync()
|
private async Task SsoAuthSuccessAsync()
|
||||||
{
|
{
|
||||||
RestoreAppOptionsFromCopy();
|
RestoreAppOptionsFromCopy();
|
||||||
await AppHelpers.ClearPreviousPage();
|
await AppHelpers.ClearPreviousPage();
|
||||||
|
|
||||||
if (await _vaultTimeoutService.IsLockedAsync())
|
if (await _vaultTimeoutService.IsLockedAsync())
|
||||||
{
|
{
|
||||||
Application.Current.MainPage = new NavigationPage(new LockPage(_appOptions));
|
Application.Current.MainPage = new NavigationPage(new LockPage(_appOptions));
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ using Bit.Core.Abstractions;
|
|||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Exceptions;
|
using Bit.Core.Exceptions;
|
||||||
using Bit.Core.Models.Domain;
|
using Bit.Core.Models.Domain;
|
||||||
using Bit.Core.Services;
|
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Xamarin.CommunityToolkit.ObjectModel;
|
using Xamarin.CommunityToolkit.ObjectModel;
|
||||||
using Xamarin.Essentials;
|
using Xamarin.Essentials;
|
||||||
@@ -30,11 +29,8 @@ namespace Bit.App.Pages
|
|||||||
private readonly IStateService _stateService;
|
private readonly IStateService _stateService;
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IOrganizationService _organizationService;
|
private readonly IOrganizationService _organizationService;
|
||||||
private readonly IDeviceTrustCryptoService _deviceTrustCryptoService;
|
|
||||||
private readonly ICryptoService _cryptoService;
|
|
||||||
|
|
||||||
private string _orgIdentifier;
|
private string _orgIdentifier;
|
||||||
private bool _useEphemeralWebBrowserSession;
|
|
||||||
|
|
||||||
public LoginSsoPageViewModel()
|
public LoginSsoPageViewModel()
|
||||||
{
|
{
|
||||||
@@ -49,8 +45,7 @@ namespace Bit.App.Pages
|
|||||||
_stateService = ServiceContainer.Resolve<IStateService>("stateService");
|
_stateService = ServiceContainer.Resolve<IStateService>("stateService");
|
||||||
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
||||||
_organizationService = ServiceContainer.Resolve<IOrganizationService>();
|
_organizationService = ServiceContainer.Resolve<IOrganizationService>();
|
||||||
_deviceTrustCryptoService = ServiceContainer.Resolve<IDeviceTrustCryptoService>();
|
|
||||||
_cryptoService = ServiceContainer.Resolve<ICryptoService>();
|
|
||||||
|
|
||||||
PageTitle = AppResources.Bitwarden;
|
PageTitle = AppResources.Bitwarden;
|
||||||
LogInCommand = new AsyncCommand(LogInAsync, allowsMultipleExecutions: false);
|
LogInCommand = new AsyncCommand(LogInAsync, allowsMultipleExecutions: false);
|
||||||
@@ -66,7 +61,6 @@ namespace Bit.App.Pages
|
|||||||
public Action StartTwoFactorAction { get; set; }
|
public Action StartTwoFactorAction { get; set; }
|
||||||
public Action StartSetPasswordAction { get; set; }
|
public Action StartSetPasswordAction { get; set; }
|
||||||
public Action SsoAuthSuccessAction { get; set; }
|
public Action SsoAuthSuccessAction { get; set; }
|
||||||
public Action StartDeviceApprovalOptionsAction { get; set; }
|
|
||||||
public Action CloseAction { get; set; }
|
public Action CloseAction { get; set; }
|
||||||
public Action UpdateTempPasswordAction { get; set; }
|
public Action UpdateTempPasswordAction { get; set; }
|
||||||
|
|
||||||
@@ -115,7 +109,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
await _deviceActionService.ShowLoadingAsync(AppResources.LoggingIn);
|
await _deviceActionService.ShowLoadingAsync(AppResources.LoggingIn);
|
||||||
|
|
||||||
var response = await _apiService.PreValidateSsoAsync(OrgIdentifier);
|
var response = await _apiService.PreValidateSso(OrgIdentifier);
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(response?.Token))
|
if (string.IsNullOrWhiteSpace(response?.Token))
|
||||||
{
|
{
|
||||||
@@ -146,12 +140,10 @@ namespace Bit.App.Pages
|
|||||||
"ssoToken=" + Uri.EscapeDataString(ssoToken);
|
"ssoToken=" + Uri.EscapeDataString(ssoToken);
|
||||||
|
|
||||||
WebAuthenticatorResult authResult = null;
|
WebAuthenticatorResult authResult = null;
|
||||||
authResult = await WebAuthenticator.AuthenticateAsync(new WebAuthenticatorOptions()
|
|
||||||
{
|
authResult = await WebAuthenticator.AuthenticateAsync(new Uri(url),
|
||||||
CallbackUrl = new Uri(REDIRECT_URI),
|
new Uri(REDIRECT_URI));
|
||||||
Url = new Uri(url),
|
|
||||||
PrefersEphemeralWebBrowserSession = _useEphemeralWebBrowserSession,
|
|
||||||
});
|
|
||||||
|
|
||||||
var code = GetResultCode(authResult, state);
|
var code = GetResultCode(authResult, state);
|
||||||
if (!string.IsNullOrEmpty(code))
|
if (!string.IsNullOrEmpty(code))
|
||||||
@@ -176,8 +168,6 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
// user canceled
|
// user canceled
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
// Workaroung for cached expired sso token PM-3551
|
|
||||||
_useEphemeralWebBrowserSession = true;
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -207,93 +197,28 @@ namespace Bit.App.Pages
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await _authService.LogInSsoAsync(code, codeVerifier, REDIRECT_URI, orgId);
|
var response = await _authService.LogInSsoAsync(code, codeVerifier, REDIRECT_URI, orgId);
|
||||||
var decryptOptions = await _stateService.GetAccountDecryptionOptions();
|
|
||||||
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
||||||
await _stateService.SetRememberedOrgIdentifierAsync(OrgIdentifier);
|
await _stateService.SetRememberedOrgIdentifierAsync(OrgIdentifier);
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
if (response.TwoFactor)
|
if (response.TwoFactor)
|
||||||
{
|
{
|
||||||
StartTwoFactorAction?.Invoke();
|
StartTwoFactorAction?.Invoke();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else if (response.ResetMasterPassword)
|
||||||
// Trusted device option is sent regardless if this is a trusted device or not
|
|
||||||
// If it is trusted, it will have the necessary keys
|
|
||||||
if (decryptOptions?.TrustedDeviceOption != null)
|
|
||||||
{
|
|
||||||
if (await _deviceTrustCryptoService.IsDeviceTrustedAsync())
|
|
||||||
{
|
|
||||||
// If we have a device key but no keys on server, we need to remove the device key
|
|
||||||
if (decryptOptions.TrustedDeviceOption.EncryptedPrivateKey == null && decryptOptions.TrustedDeviceOption.EncryptedUserKey == null)
|
|
||||||
{
|
|
||||||
await _deviceTrustCryptoService.RemoveTrustedDeviceAsync();
|
|
||||||
StartDeviceApprovalOptionsAction?.Invoke();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// If user doesn't have a MP, but has reset password permission, they must set a MP
|
|
||||||
if (!decryptOptions.HasMasterPassword &&
|
|
||||||
decryptOptions.TrustedDeviceOption.HasManageResetPasswordPermission)
|
|
||||||
{
|
{
|
||||||
StartSetPasswordAction?.Invoke();
|
StartSetPasswordAction?.Invoke();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
// Update temp password only if the device is trusted and therefore has a decrypted User Key set
|
else if (response.ForcePasswordReset)
|
||||||
if (response.ForcePasswordReset)
|
|
||||||
{
|
{
|
||||||
UpdateTempPasswordAction?.Invoke();
|
UpdateTempPasswordAction?.Invoke();
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Device is trusted and has keys, so we can decrypt
|
|
||||||
_syncService.FullSyncAsync(true).FireAndForget();
|
|
||||||
SsoAuthSuccessAction?.Invoke();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check for pending Admin Auth requests before navigating to device approval options
|
|
||||||
var pendingRequest = await _stateService.GetPendingAdminAuthRequestAsync();
|
|
||||||
if (pendingRequest != null)
|
|
||||||
{
|
|
||||||
var authRequest = await _authService.GetPasswordlessLoginRequestByIdAsync(pendingRequest.Id);
|
|
||||||
if (authRequest?.RequestApproved == true)
|
|
||||||
{
|
|
||||||
var authResult = await _authService.LogInPasswordlessAsync(true, await _stateService.GetActiveUserEmailAsync(), authRequest.RequestAccessCode, pendingRequest.Id, pendingRequest.PrivateKey, authRequest.Key, authRequest.MasterPasswordHash);
|
|
||||||
if (authResult == null && await _stateService.IsAuthenticatedAsync())
|
|
||||||
{
|
|
||||||
await Xamarin.Essentials.MainThread.InvokeOnMainThreadAsync(
|
|
||||||
() => _platformUtilsService.ShowToast("info", null, AppResources.LoginApproved));
|
|
||||||
await _stateService.SetPendingAdminAuthRequestAsync(null);
|
|
||||||
_syncService.FullSyncAsync(true).FireAndForget();
|
|
||||||
SsoAuthSuccessAction?.Invoke();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _stateService.SetPendingAdminAuthRequestAsync(null);
|
var task = Task.Run(async () => await _syncService.FullSyncAsync(true));
|
||||||
StartDeviceApprovalOptionsAction?.Invoke();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StartDeviceApprovalOptionsAction?.Invoke();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// In the standard, non TDE case, a user must set password if they don't
|
|
||||||
// have one and they aren't using key connector.
|
|
||||||
// Note: TDE & Key connector are mutually exclusive org config options.
|
|
||||||
if (response.ResetMasterPassword || (decryptOptions?.RequireSetPassword == true))
|
|
||||||
{
|
|
||||||
// TODO: We need to look into how to handle this when Org removes TDE
|
|
||||||
// Will we have the User Key by now to set a new password?
|
|
||||||
StartSetPasswordAction?.Invoke();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_syncService.FullSyncAsync(true).FireAndForget();
|
|
||||||
SsoAuthSuccessAction?.Invoke();
|
SsoAuthSuccessAction?.Invoke();
|
||||||
}
|
}
|
||||||
catch (Exception)
|
}
|
||||||
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
await _platformUtilsService.ShowDialogAsync(AppResources.LoginSsoError,
|
await _platformUtilsService.ShowDialogAsync(AppResources.LoginSsoError,
|
||||||
|
|||||||
@@ -177,28 +177,25 @@ namespace Bit.App.Pages
|
|||||||
Name = string.IsNullOrWhiteSpace(Name) ? null : Name;
|
Name = string.IsNullOrWhiteSpace(Name) ? null : Name;
|
||||||
Email = Email.Trim().ToLower();
|
Email = Email.Trim().ToLower();
|
||||||
var kdfConfig = new KdfConfig(KdfType.PBKDF2_SHA256, Constants.Pbkdf2Iterations, null, null);
|
var kdfConfig = new KdfConfig(KdfType.PBKDF2_SHA256, Constants.Pbkdf2Iterations, null, null);
|
||||||
var newMasterKey = await _cryptoService.MakeMasterKeyAsync(MasterPassword, Email, kdfConfig);
|
var key = await _cryptoService.MakeKeyAsync(MasterPassword, Email, kdfConfig);
|
||||||
var (newUserKey, newProtectedUserKey) = await _cryptoService.EncryptUserKeyWithMasterKeyAsync(
|
var encKey = await _cryptoService.MakeEncKeyAsync(key);
|
||||||
newMasterKey,
|
var hashedPassword = await _cryptoService.HashPasswordAsync(MasterPassword, key);
|
||||||
await _cryptoService.MakeUserKeyAsync()
|
var keys = await _cryptoService.MakeKeyPairAsync(encKey.Item1);
|
||||||
);
|
|
||||||
var hashedPassword = await _cryptoService.HashMasterKeyAsync(MasterPassword, newMasterKey);
|
|
||||||
var (newPublicKey, newProtectedPrivateKey) = await _cryptoService.MakeKeyPairAsync(newUserKey);
|
|
||||||
var request = new RegisterRequest
|
var request = new RegisterRequest
|
||||||
{
|
{
|
||||||
Email = Email,
|
Email = Email,
|
||||||
Name = Name,
|
Name = Name,
|
||||||
MasterPasswordHash = hashedPassword,
|
MasterPasswordHash = hashedPassword,
|
||||||
MasterPasswordHint = Hint,
|
MasterPasswordHint = Hint,
|
||||||
Key = newProtectedUserKey.EncryptedString,
|
Key = encKey.Item2.EncryptedString,
|
||||||
Kdf = kdfConfig.Type,
|
Kdf = kdfConfig.Type,
|
||||||
KdfIterations = kdfConfig.Iterations,
|
KdfIterations = kdfConfig.Iterations,
|
||||||
KdfMemory = kdfConfig.Memory,
|
KdfMemory = kdfConfig.Memory,
|
||||||
KdfParallelism = kdfConfig.Parallelism,
|
KdfParallelism = kdfConfig.Parallelism,
|
||||||
Keys = new KeysRequest
|
Keys = new KeysRequest
|
||||||
{
|
{
|
||||||
PublicKey = newPublicKey,
|
PublicKey = keys.Item1,
|
||||||
EncryptedPrivateKey = newProtectedPrivateKey.EncryptedString
|
EncryptedPrivateKey = keys.Item2.EncryptedString
|
||||||
},
|
},
|
||||||
CaptchaResponse = _captchaToken,
|
CaptchaResponse = _captchaToken,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -30,14 +30,14 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public async Task Init()
|
public async Task Init()
|
||||||
{
|
{
|
||||||
Organization = await _keyConnectorService.GetManagingOrganizationAsync();
|
Organization = await _keyConnectorService.GetManagingOrganization();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task MigrateAccount()
|
public async Task MigrateAccount()
|
||||||
{
|
{
|
||||||
await _deviceActionService.ShowLoadingAsync(AppResources.Loading);
|
await _deviceActionService.ShowLoadingAsync(AppResources.Loading);
|
||||||
|
|
||||||
await _keyConnectorService.MigrateUserAsync();
|
await _keyConnectorService.MigrateUser();
|
||||||
await _syncService.FullSyncAsync(true);
|
await _syncService.FullSyncAsync(true);
|
||||||
|
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
@@ -47,7 +47,7 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
await _deviceActionService.ShowLoadingAsync(AppResources.Loading);
|
await _deviceActionService.ShowLoadingAsync(AppResources.Loading);
|
||||||
|
|
||||||
await _apiService.PostLeaveOrganizationAsync(Organization.Id);
|
await _apiService.PostLeaveOrganization(Organization.Id);
|
||||||
await _syncService.FullSyncAsync(true);
|
await _syncService.FullSyncAsync(true);
|
||||||
|
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
|
|||||||
@@ -51,8 +51,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ResetPasswordAutoEnrollInviteWarning}"
|
Text="{u:I18n ResetPasswordAutoEnrollInviteWarning}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Start"
|
HorizontalTextAlignment="Start" />
|
||||||
AutomationId="ResetPasswordAutoEnrollInviteWarningLabel" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid IsVisible="{Binding IsPolicyInEffect}"
|
<Grid IsVisible="{Binding IsPolicyInEffect}"
|
||||||
@@ -74,8 +73,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{Binding PolicySummary}"
|
Text="{Binding PolicySummary}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Start"
|
HorizontalTextAlignment="Start" />
|
||||||
AutomationId="PolicyInEffectLabel" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid StyleClass="box-row">
|
<Grid StyleClass="box-row">
|
||||||
@@ -100,8 +98,7 @@
|
|||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="MasterPasswordField" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -111,8 +108,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}" />
|
||||||
AutomationId="ToggleMasterPasswordVisibilityButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n MasterPasswordDescription}"
|
Text="{u:I18n MasterPasswordDescription}"
|
||||||
@@ -141,8 +137,7 @@
|
|||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="RetypePasswordField" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -152,8 +147,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}" />
|
||||||
AutomationId="ToggleRetypePasswordVisibilityButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<StackLayout StyleClass="box-row">
|
<StackLayout StyleClass="box-row">
|
||||||
<Label
|
<Label
|
||||||
@@ -164,8 +158,7 @@
|
|||||||
Text="{Binding Hint}"
|
Text="{Binding Hint}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
ReturnType="Go"
|
ReturnType="Go"
|
||||||
ReturnCommand="{Binding SubmitCommand}"
|
ReturnCommand="{Binding SubmitCommand}" />
|
||||||
AutomationId="MasterPasswordHintLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n MasterPasswordHintDescription}"
|
Text="{u:I18n MasterPasswordHintDescription}"
|
||||||
|
|||||||
@@ -165,18 +165,26 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
var kdfConfig = new KdfConfig(KdfType.PBKDF2_SHA256, Constants.Pbkdf2Iterations, null, null);
|
var kdfConfig = new KdfConfig(KdfType.PBKDF2_SHA256, Constants.Pbkdf2Iterations, null, null);
|
||||||
var email = await _stateService.GetEmailAsync();
|
var email = await _stateService.GetEmailAsync();
|
||||||
var newMasterKey = await _cryptoService.MakeMasterKeyAsync(MasterPassword, email, kdfConfig);
|
var key = await _cryptoService.MakeKeyAsync(MasterPassword, email, kdfConfig);
|
||||||
var masterPasswordHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, newMasterKey, HashPurpose.ServerAuthorization);
|
var masterPasswordHash = await _cryptoService.HashPasswordAsync(MasterPassword, key, HashPurpose.ServerAuthorization);
|
||||||
var localMasterPasswordHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, newMasterKey, HashPurpose.LocalAuthorization);
|
var localMasterPasswordHash = await _cryptoService.HashPasswordAsync(MasterPassword, key, HashPurpose.LocalAuthorization);
|
||||||
|
|
||||||
var (newUserKey, newProtectedUserKey) = await _cryptoService.EncryptUserKeyWithMasterKeyAsync(newMasterKey,
|
Tuple<SymmetricCryptoKey, EncString> encKey;
|
||||||
await _cryptoService.GetUserKeyAsync() ?? await _cryptoService.MakeUserKeyAsync());
|
var existingEncKey = await _cryptoService.GetEncKeyAsync();
|
||||||
|
if (existingEncKey == null)
|
||||||
|
{
|
||||||
|
encKey = await _cryptoService.MakeEncKeyAsync(key);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
encKey = await _cryptoService.RemakeEncKeyAsync(key);
|
||||||
|
}
|
||||||
|
|
||||||
var (newPublicKey, newProtectedPrivateKey) = await _cryptoService.MakeKeyPairAsync(newUserKey);
|
var keys = await _cryptoService.MakeKeyPairAsync(encKey.Item1);
|
||||||
var request = new SetPasswordRequest
|
var request = new SetPasswordRequest
|
||||||
{
|
{
|
||||||
MasterPasswordHash = masterPasswordHash,
|
MasterPasswordHash = masterPasswordHash,
|
||||||
Key = newProtectedUserKey.EncryptedString,
|
Key = encKey.Item2.EncryptedString,
|
||||||
MasterPasswordHint = Hint,
|
MasterPasswordHint = Hint,
|
||||||
Kdf = kdfConfig.Type.GetValueOrDefault(KdfType.PBKDF2_SHA256),
|
Kdf = kdfConfig.Type.GetValueOrDefault(KdfType.PBKDF2_SHA256),
|
||||||
KdfIterations = kdfConfig.Iterations.GetValueOrDefault(Constants.Pbkdf2Iterations),
|
KdfIterations = kdfConfig.Iterations.GetValueOrDefault(Constants.Pbkdf2Iterations),
|
||||||
@@ -185,8 +193,8 @@ namespace Bit.App.Pages
|
|||||||
OrgIdentifier = OrgIdentifier,
|
OrgIdentifier = OrgIdentifier,
|
||||||
Keys = new KeysRequest
|
Keys = new KeysRequest
|
||||||
{
|
{
|
||||||
PublicKey = newPublicKey,
|
PublicKey = keys.Item1,
|
||||||
EncryptedPrivateKey = newProtectedPrivateKey.EncryptedString
|
EncryptedPrivateKey = keys.Item2.EncryptedString
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -196,20 +204,19 @@ namespace Bit.App.Pages
|
|||||||
// Set Password and relevant information
|
// Set Password and relevant information
|
||||||
await _apiService.SetPasswordAsync(request);
|
await _apiService.SetPasswordAsync(request);
|
||||||
await _stateService.SetKdfConfigurationAsync(kdfConfig);
|
await _stateService.SetKdfConfigurationAsync(kdfConfig);
|
||||||
await _cryptoService.SetUserKeyAsync(newUserKey);
|
await _cryptoService.SetKeyAsync(key);
|
||||||
await _cryptoService.SetMasterKeyAsync(newMasterKey);
|
await _cryptoService.SetKeyHashAsync(localMasterPasswordHash);
|
||||||
await _cryptoService.SetMasterKeyHashAsync(localMasterPasswordHash);
|
await _cryptoService.SetEncKeyAsync(encKey.Item2.EncryptedString);
|
||||||
await _cryptoService.SetMasterKeyEncryptedUserKeyAsync(newProtectedUserKey.EncryptedString);
|
await _cryptoService.SetEncPrivateKeyAsync(keys.Item2.EncryptedString);
|
||||||
await _cryptoService.SetUserPrivateKeyAsync(newProtectedPrivateKey.EncryptedString);
|
|
||||||
|
|
||||||
if (ResetPasswordAutoEnroll)
|
if (ResetPasswordAutoEnroll)
|
||||||
{
|
{
|
||||||
// Grab Organization Keys
|
// Grab Organization Keys
|
||||||
var response = await _apiService.GetOrganizationKeysAsync(OrgId);
|
var response = await _apiService.GetOrganizationKeysAsync(OrgId);
|
||||||
var publicKey = CoreHelpers.Base64UrlDecode(response.PublicKey);
|
var publicKey = CoreHelpers.Base64UrlDecode(response.PublicKey);
|
||||||
// Grab User Key and encrypt with Org Public Key
|
// Grab user's Encryption Key and encrypt with Org Public Key
|
||||||
var userKey = await _cryptoService.GetUserKeyAsync();
|
var userEncKey = await _cryptoService.GetEncKeyAsync();
|
||||||
var encryptedKey = await _cryptoService.RsaEncryptAsync(userKey.Key, publicKey);
|
var encryptedKey = await _cryptoService.RsaEncryptAsync(userEncKey.Key, publicKey);
|
||||||
// Request
|
// Request
|
||||||
var resetRequest = new OrganizationUserResetPasswordEnrollmentRequest
|
var resetRequest = new OrganizationUserResetPasswordEnrollmentRequest
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ using Bit.App.Controls;
|
|||||||
using Bit.App.Models;
|
using Bit.App.Models;
|
||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Services;
|
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
|
||||||
@@ -18,29 +17,26 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
private TwoFactorPageViewModel _vm;
|
private TwoFactorPageViewModel _vm;
|
||||||
private bool _inited;
|
private bool _inited;
|
||||||
|
private bool _authingWithSso;
|
||||||
private string _orgIdentifier;
|
private string _orgIdentifier;
|
||||||
|
|
||||||
public TwoFactorPage(bool? authingWithSso = false, AppOptions appOptions = null, string orgIdentifier = null)
|
public TwoFactorPage(bool? authingWithSso = false, AppOptions appOptions = null, string orgIdentifier = null)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
SetActivityIndicator();
|
SetActivityIndicator();
|
||||||
|
_authingWithSso = authingWithSso ?? false;
|
||||||
_appOptions = appOptions;
|
_appOptions = appOptions;
|
||||||
_orgIdentifier = orgIdentifier;
|
_orgIdentifier = orgIdentifier;
|
||||||
_broadcasterService = ServiceContainer.Resolve<IBroadcasterService>("broadcasterService");
|
_broadcasterService = ServiceContainer.Resolve<IBroadcasterService>("broadcasterService");
|
||||||
_messagingService = ServiceContainer.Resolve<IMessagingService>("messagingService");
|
_messagingService = ServiceContainer.Resolve<IMessagingService>("messagingService");
|
||||||
_vm = BindingContext as TwoFactorPageViewModel;
|
_vm = BindingContext as TwoFactorPageViewModel;
|
||||||
_vm.Page = this;
|
_vm.Page = this;
|
||||||
_vm.AuthingWithSso = authingWithSso ?? false;
|
|
||||||
_vm.StartSetPasswordAction = () =>
|
_vm.StartSetPasswordAction = () =>
|
||||||
Device.BeginInvokeOnMainThread(async () => await StartSetPasswordAsync());
|
Device.BeginInvokeOnMainThread(async () => await StartSetPasswordAsync());
|
||||||
_vm.TwoFactorAuthSuccessAction = () =>
|
_vm.TwoFactorAuthSuccessAction = () =>
|
||||||
Device.BeginInvokeOnMainThread(async () => await TwoFactorAuthSuccessToMainAsync());
|
Device.BeginInvokeOnMainThread(async () => await TwoFactorAuthSuccessAsync());
|
||||||
_vm.LockAction = () =>
|
|
||||||
Device.BeginInvokeOnMainThread(TwoFactorAuthSuccessWithSSOLocked);
|
|
||||||
_vm.UpdateTempPasswordAction =
|
_vm.UpdateTempPasswordAction =
|
||||||
() => Device.BeginInvokeOnMainThread(async () => await UpdateTempPasswordAsync());
|
() => Device.BeginInvokeOnMainThread(async () => await UpdateTempPasswordAsync());
|
||||||
_vm.StartDeviceApprovalOptionsAction =
|
|
||||||
() => Device.BeginInvokeOnMainThread(async () => await StartDeviceApprovalOptionsAsync());
|
|
||||||
_vm.CloseAction = async () => await Navigation.PopModalAsync();
|
_vm.CloseAction = async () => await Navigation.PopModalAsync();
|
||||||
DuoWebView = _duoWebView;
|
DuoWebView = _duoWebView;
|
||||||
if (Device.RuntimePlatform == Device.Android)
|
if (Device.RuntimePlatform == Device.Android)
|
||||||
@@ -184,18 +180,13 @@ namespace Bit.App.Pages
|
|||||||
await Navigation.PushModalAsync(new NavigationPage(page));
|
await Navigation.PushModalAsync(new NavigationPage(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task StartDeviceApprovalOptionsAsync()
|
private async Task TwoFactorAuthSuccessAsync()
|
||||||
{
|
{
|
||||||
var page = new LoginApproveDevicePage();
|
if (_authingWithSso)
|
||||||
await Navigation.PushModalAsync(new NavigationPage(page));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TwoFactorAuthSuccessWithSSOLocked()
|
|
||||||
{
|
{
|
||||||
Application.Current.MainPage = new NavigationPage(new LockPage(_appOptions));
|
Application.Current.MainPage = new NavigationPage(new LockPage(_appOptions));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
private async Task TwoFactorAuthSuccessToMainAsync()
|
|
||||||
{
|
{
|
||||||
if (AppHelpers.SetAlternateMainPage(_appOptions))
|
if (AppHelpers.SetAlternateMainPage(_appOptions))
|
||||||
{
|
{
|
||||||
@@ -204,6 +195,7 @@ namespace Bit.App.Pages
|
|||||||
var previousPage = await AppHelpers.ClearPreviousPage();
|
var previousPage = await AppHelpers.ClearPreviousPage();
|
||||||
Application.Current.MainPage = new TabsPage(_appOptions, previousPage);
|
Application.Current.MainPage = new TabsPage(_appOptions, previousPage);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Token_TextChanged(object sender, TextChangedEventArgs e)
|
private void Token_TextChanged(object sender, TextChangedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ using Bit.Core.Abstractions;
|
|||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Exceptions;
|
using Bit.Core.Exceptions;
|
||||||
using Bit.Core.Models.Request;
|
using Bit.Core.Models.Request;
|
||||||
using Bit.Core.Services;
|
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Xamarin.CommunityToolkit.ObjectModel;
|
using Xamarin.CommunityToolkit.ObjectModel;
|
||||||
@@ -33,12 +32,12 @@ namespace Bit.App.Pages
|
|||||||
private readonly IStateService _stateService;
|
private readonly IStateService _stateService;
|
||||||
private readonly II18nService _i18nService;
|
private readonly II18nService _i18nService;
|
||||||
private readonly IAppIdService _appIdService;
|
private readonly IAppIdService _appIdService;
|
||||||
private readonly IVaultTimeoutService _vaultTimeoutService;
|
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IDeviceTrustCryptoService _deviceTrustCryptoService;
|
|
||||||
private TwoFactorProviderType? _selectedProviderType;
|
private TwoFactorProviderType? _selectedProviderType;
|
||||||
private string _totpInstruction;
|
private string _totpInstruction;
|
||||||
private string _webVaultUrl = "https://vault.bitwarden.com";
|
private string _webVaultUrl = "https://vault.bitwarden.com";
|
||||||
|
private bool _authingWithSso = false;
|
||||||
private bool _enableContinue = false;
|
private bool _enableContinue = false;
|
||||||
private bool _showContinue = true;
|
private bool _showContinue = true;
|
||||||
|
|
||||||
@@ -55,9 +54,7 @@ namespace Bit.App.Pages
|
|||||||
_stateService = ServiceContainer.Resolve<IStateService>("stateService");
|
_stateService = ServiceContainer.Resolve<IStateService>("stateService");
|
||||||
_i18nService = ServiceContainer.Resolve<II18nService>("i18nService");
|
_i18nService = ServiceContainer.Resolve<II18nService>("i18nService");
|
||||||
_appIdService = ServiceContainer.Resolve<IAppIdService>("appIdService");
|
_appIdService = ServiceContainer.Resolve<IAppIdService>("appIdService");
|
||||||
_vaultTimeoutService = ServiceContainer.Resolve<IVaultTimeoutService>();
|
|
||||||
_logger = ServiceContainer.Resolve<ILogger>();
|
_logger = ServiceContainer.Resolve<ILogger>();
|
||||||
_deviceTrustCryptoService = ServiceContainer.Resolve<IDeviceTrustCryptoService>();
|
|
||||||
|
|
||||||
PageTitle = AppResources.TwoStepLogin;
|
PageTitle = AppResources.TwoStepLogin;
|
||||||
SubmitCommand = new Command(async () => await SubmitAsync());
|
SubmitCommand = new Command(async () => await SubmitAsync());
|
||||||
@@ -72,8 +69,6 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public bool Remember { get; set; }
|
public bool Remember { get; set; }
|
||||||
|
|
||||||
public bool AuthingWithSso { get; set; }
|
|
||||||
|
|
||||||
public string Token { get; set; }
|
public string Token { get; set; }
|
||||||
|
|
||||||
public bool DuoMethod => SelectedProviderType == TwoFactorProviderType.Duo ||
|
public bool DuoMethod => SelectedProviderType == TwoFactorProviderType.Duo ||
|
||||||
@@ -123,8 +118,6 @@ namespace Bit.App.Pages
|
|||||||
public Command SubmitCommand { get; }
|
public Command SubmitCommand { get; }
|
||||||
public ICommand MoreCommand { get; }
|
public ICommand MoreCommand { get; }
|
||||||
public Action TwoFactorAuthSuccessAction { get; set; }
|
public Action TwoFactorAuthSuccessAction { get; set; }
|
||||||
public Action LockAction { get; set; }
|
|
||||||
public Action StartDeviceApprovalOptionsAction { get; set; }
|
|
||||||
public Action StartSetPasswordAction { get; set; }
|
public Action StartSetPasswordAction { get; set; }
|
||||||
public Action CloseAction { get; set; }
|
public Action CloseAction { get; set; }
|
||||||
public Action UpdateTempPasswordAction { get; set; }
|
public Action UpdateTempPasswordAction { get; set; }
|
||||||
@@ -143,6 +136,8 @@ namespace Bit.App.Pages
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_authingWithSso = _authService.AuthingWithSso();
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(_environmentService.BaseUrl))
|
if (!string.IsNullOrWhiteSpace(_environmentService.BaseUrl))
|
||||||
{
|
{
|
||||||
_webVaultUrl = _environmentService.BaseUrl;
|
_webVaultUrl = _environmentService.BaseUrl;
|
||||||
@@ -320,85 +315,22 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
var task = Task.Run(() => _syncService.FullSyncAsync(true));
|
var task = Task.Run(() => _syncService.FullSyncAsync(true));
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
var decryptOptions = await _stateService.GetAccountDecryptionOptions();
|
|
||||||
_messagingService.Send("listenYubiKeyOTP", false);
|
_messagingService.Send("listenYubiKeyOTP", false);
|
||||||
_broadcasterService.Unsubscribe(nameof(TwoFactorPage));
|
_broadcasterService.Unsubscribe(nameof(TwoFactorPage));
|
||||||
|
|
||||||
if (decryptOptions?.TrustedDeviceOption != null)
|
if (_authingWithSso && result.ResetMasterPassword)
|
||||||
{
|
|
||||||
if (await _deviceTrustCryptoService.IsDeviceTrustedAsync())
|
|
||||||
{
|
|
||||||
// If we have a device key but no keys on server, we need to remove the device key
|
|
||||||
if (decryptOptions.TrustedDeviceOption.EncryptedPrivateKey == null && decryptOptions.TrustedDeviceOption.EncryptedUserKey == null)
|
|
||||||
{
|
|
||||||
await _deviceTrustCryptoService.RemoveTrustedDeviceAsync();
|
|
||||||
StartDeviceApprovalOptionsAction?.Invoke();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// If user doesn't have a MP, but has reset password permission, they must set a MP
|
|
||||||
if (!decryptOptions.HasMasterPassword &&
|
|
||||||
decryptOptions.TrustedDeviceOption.HasManageResetPasswordPermission)
|
|
||||||
{
|
{
|
||||||
StartSetPasswordAction?.Invoke();
|
StartSetPasswordAction?.Invoke();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
// Update temp password only if the device is trusted and therefore has a decrypted User Key set
|
else if (result.ForcePasswordReset)
|
||||||
if (result.ForcePasswordReset)
|
|
||||||
{
|
{
|
||||||
UpdateTempPasswordAction?.Invoke();
|
UpdateTempPasswordAction?.Invoke();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Device is trusted and has keys, so we can decrypt
|
|
||||||
_syncService.FullSyncAsync(true).FireAndForget();
|
|
||||||
await TwoFactorAuthSuccessAsync();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check for pending Admin Auth requests before navigating to device approval options
|
|
||||||
var pendingRequest = await _stateService.GetPendingAdminAuthRequestAsync();
|
|
||||||
if (pendingRequest != null)
|
|
||||||
{
|
|
||||||
var authRequest = await _authService.GetPasswordlessLoginRequestByIdAsync(pendingRequest.Id);
|
|
||||||
if (authRequest?.RequestApproved == true)
|
|
||||||
{
|
|
||||||
var authResult = await _authService.LogInPasswordlessAsync(true, await _stateService.GetActiveUserEmailAsync(), authRequest.RequestAccessCode, pendingRequest.Id, pendingRequest.PrivateKey, authRequest.Key, authRequest.MasterPasswordHash);
|
|
||||||
if (authResult == null && await _stateService.IsAuthenticatedAsync())
|
|
||||||
{
|
|
||||||
await Xamarin.Essentials.MainThread.InvokeOnMainThreadAsync(
|
|
||||||
() => _platformUtilsService.ShowToast("info", null, AppResources.LoginApproved));
|
|
||||||
await _stateService.SetPendingAdminAuthRequestAsync(null);
|
|
||||||
_syncService.FullSyncAsync(true).FireAndForget();
|
|
||||||
await TwoFactorAuthSuccessAsync();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _stateService.SetPendingAdminAuthRequestAsync(null);
|
TwoFactorAuthSuccessAction?.Invoke();
|
||||||
StartDeviceApprovalOptionsAction?.Invoke();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
StartDeviceApprovalOptionsAction?.Invoke();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// In the standard, non TDE case, a user must set password if they don't
|
|
||||||
// have one and they aren't using key connector.
|
|
||||||
// Note: TDE & Key connector are mutually exclusive org config options.
|
|
||||||
if (result.ResetMasterPassword || (decryptOptions?.RequireSetPassword ?? false))
|
|
||||||
{
|
|
||||||
// TODO: We need to look into how to handle this when Org removes TDE
|
|
||||||
// Will we have the User Key by now to set a new password?
|
|
||||||
StartSetPasswordAction?.Invoke();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_syncService.FullSyncAsync(true).FireAndForget();
|
|
||||||
await TwoFactorAuthSuccessAsync();
|
|
||||||
}
|
|
||||||
catch (ApiException e)
|
catch (ApiException e)
|
||||||
{
|
{
|
||||||
_captchaToken = null;
|
_captchaToken = null;
|
||||||
@@ -466,8 +398,7 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
Email = _authService.Email,
|
Email = _authService.Email,
|
||||||
MasterPasswordHash = _authService.MasterPasswordHash,
|
MasterPasswordHash = _authService.MasterPasswordHash,
|
||||||
DeviceIdentifier = await _appIdService.GetAppIdAsync(),
|
DeviceIdentifier = await _appIdService.GetAppIdAsync()
|
||||||
SsoEmail2FaSessionToken = _authService.SsoEmail2FaSessionToken
|
|
||||||
};
|
};
|
||||||
await _apiService.PostTwoFactorEmailAsync(request);
|
await _apiService.PostTwoFactorEmailAsync(request);
|
||||||
if (showLoading)
|
if (showLoading)
|
||||||
@@ -491,17 +422,5 @@ namespace Bit.App.Pages
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task TwoFactorAuthSuccessAsync()
|
|
||||||
{
|
|
||||||
if (AuthingWithSso && await _vaultTimeoutService.IsLockedAsync())
|
|
||||||
{
|
|
||||||
LockAction?.Invoke();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TwoFactorAuthSuccessAction?.Invoke();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<pages:BaseContentPage
|
<pages:BaseContentPage
|
||||||
xmlns="http://xamarin.com/schemas/2014/forms"
|
xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
@@ -48,8 +48,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{Binding UpdateMasterPasswordWarningText }"
|
Text="{Binding UpdateMasterPasswordWarningText }"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="UpdatePasswordWarningLabel" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid IsVisible="{Binding IsPolicyInEffect}"
|
<Grid IsVisible="{Binding IsPolicyInEffect}"
|
||||||
@@ -72,8 +71,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{Binding PolicySummary}"
|
Text="{Binding PolicySummary}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Start"
|
HorizontalTextAlignment="Start" />
|
||||||
AutomationId="PolicySummaryLabel" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid StyleClass="box-row" IsVisible="{Binding RequireCurrentPassword }">
|
<Grid StyleClass="box-row" IsVisible="{Binding RequireCurrentPassword }">
|
||||||
@@ -98,8 +96,7 @@
|
|||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="MasterPasswordField" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -109,8 +106,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}" />
|
||||||
AutomationId="ToggleMasterPasswordVisibilityButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid StyleClass="box-row">
|
<Grid StyleClass="box-row">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@@ -134,8 +130,7 @@
|
|||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="NewPasswordField" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -145,8 +140,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}" />
|
||||||
AutomationId="NewPasswordVisibilityButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box">
|
<StackLayout StyleClass="box">
|
||||||
@@ -172,8 +166,7 @@
|
|||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="RetypePasswordField" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -183,8 +176,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}" />
|
||||||
AutomationId="ToggleRetypePasswordVisibilityButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<StackLayout StyleClass="box-row">
|
<StackLayout StyleClass="box-row">
|
||||||
<Label
|
<Label
|
||||||
@@ -195,8 +187,7 @@
|
|||||||
Text="{Binding Hint}"
|
Text="{Binding Hint}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
ReturnType="Go"
|
ReturnType="Go"
|
||||||
ReturnCommand="{Binding SubmitCommand}"
|
ReturnCommand="{Binding SubmitCommand}" />
|
||||||
AutomationId="MasterPasswordHintLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n MasterPasswordHintDescription}"
|
Text="{u:I18n MasterPasswordHintDescription}"
|
||||||
|
|||||||
@@ -93,12 +93,12 @@ namespace Bit.App.Pages
|
|||||||
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
|
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
|
||||||
var email = await _stateService.GetEmailAsync();
|
var email = await _stateService.GetEmailAsync();
|
||||||
|
|
||||||
// Create new master key and hash new password
|
// Create new key and hash new password
|
||||||
var masterKey = await _cryptoService.MakeMasterKeyAsync(MasterPassword, email, kdfConfig);
|
var key = await _cryptoService.MakeKeyAsync(MasterPassword, email, kdfConfig);
|
||||||
var masterPasswordHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, masterKey);
|
var masterPasswordHash = await _cryptoService.HashPasswordAsync(MasterPassword, key);
|
||||||
|
|
||||||
// Encrypt user key with new master key
|
// Create new encKey for the User
|
||||||
var (userKey, newProtectedUserKey) = await _cryptoService.EncryptUserKeyWithMasterKeyAsync(masterKey);
|
var newEncKey = await _cryptoService.RemakeEncKeyAsync(key);
|
||||||
|
|
||||||
// Initiate API action
|
// Initiate API action
|
||||||
try
|
try
|
||||||
@@ -108,10 +108,10 @@ namespace Bit.App.Pages
|
|||||||
switch (_reason)
|
switch (_reason)
|
||||||
{
|
{
|
||||||
case ForcePasswordResetReason.AdminForcePasswordReset:
|
case ForcePasswordResetReason.AdminForcePasswordReset:
|
||||||
await UpdateTempPasswordAsync(masterPasswordHash, newProtectedUserKey.EncryptedString);
|
await UpdateTempPasswordAsync(masterPasswordHash, newEncKey.Item2.EncryptedString);
|
||||||
break;
|
break;
|
||||||
case ForcePasswordResetReason.WeakMasterPasswordOnLogin:
|
case ForcePasswordResetReason.WeakMasterPasswordOnLogin:
|
||||||
await UpdatePasswordAsync(masterPasswordHash, newProtectedUserKey.EncryptedString);
|
await UpdatePasswordAsync(masterPasswordHash, newEncKey.Item2.EncryptedString);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
@@ -155,7 +155,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
private async Task UpdatePasswordAsync(string newMasterPasswordHash, string newEncKey)
|
private async Task UpdatePasswordAsync(string newMasterPasswordHash, string newEncKey)
|
||||||
{
|
{
|
||||||
var currentPasswordHash = await _cryptoService.HashMasterKeyAsync(CurrentMasterPassword, null);
|
var currentPasswordHash = await _cryptoService.HashPasswordAsync(CurrentMasterPassword, null);
|
||||||
|
|
||||||
var request = new PasswordRequest
|
var request = new PasswordRequest
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -150,12 +150,6 @@ namespace Bit.App.Pages
|
|||||||
private async Task SaveActivityAsync()
|
private async Task SaveActivityAsync()
|
||||||
{
|
{
|
||||||
SetServices();
|
SetServices();
|
||||||
if (await _stateService.GetActiveUserIdAsync() == null)
|
|
||||||
{
|
|
||||||
// Fresh install and/or all users logged out won't have an active user, skip saving last active time
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await _stateService.SetLastActiveTimeAsync(_deviceActionService.GetActiveTime());
|
await _stateService.SetLastActiveTimeAsync(_deviceActionService.GetActiveTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -275,7 +275,7 @@
|
|||||||
Margin="0,10,0,0"/>
|
Margin="0,10,0,0"/>
|
||||||
<Entry IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.AnonAddy}}"
|
<Entry IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.AnonAddy}}"
|
||||||
x:Name="_anonAddyDomainNameEntry"
|
x:Name="_anonAddyDomainNameEntry"
|
||||||
Text="{Binding AddyIoDomainName}"
|
Text="{Binding AnonAddyDomainName}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationId="AnonAddyDomainNameEntry" />
|
AutomationId="AnonAddyDomainNameEntry" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|||||||
@@ -545,7 +545,7 @@ namespace Bit.App.Pages
|
|||||||
set => SetProperty(ref _showForwardedEmailApiSecret, value);
|
set => SetProperty(ref _showForwardedEmailApiSecret, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string AddyIoDomainName
|
public string AnonAddyDomainName
|
||||||
{
|
{
|
||||||
get => _usernameOptions.AnonAddyDomainName;
|
get => _usernameOptions.AnonAddyDomainName;
|
||||||
set
|
set
|
||||||
@@ -553,7 +553,7 @@ namespace Bit.App.Pages
|
|||||||
if (_usernameOptions.AnonAddyDomainName != value)
|
if (_usernameOptions.AnonAddyDomainName != value)
|
||||||
{
|
{
|
||||||
_usernameOptions.AnonAddyDomainName = value;
|
_usernameOptions.AnonAddyDomainName = value;
|
||||||
TriggerPropertyChanged(nameof(AddyIoDomainName));
|
TriggerPropertyChanged(nameof(AnonAddyDomainName));
|
||||||
SaveUsernameOptionsAsync(false).FireAndForget();
|
SaveUsernameOptionsAsync(false).FireAndForget();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -793,7 +793,7 @@ namespace Bit.App.Pages
|
|||||||
TriggerPropertyChanged(nameof(CapitalizeRandomWordUsername));
|
TriggerPropertyChanged(nameof(CapitalizeRandomWordUsername));
|
||||||
TriggerPropertyChanged(nameof(ForwardedEmailApiSecret));
|
TriggerPropertyChanged(nameof(ForwardedEmailApiSecret));
|
||||||
TriggerPropertyChanged(nameof(ForwardedEmailApiSecretLabel));
|
TriggerPropertyChanged(nameof(ForwardedEmailApiSecretLabel));
|
||||||
TriggerPropertyChanged(nameof(AddyIoDomainName));
|
TriggerPropertyChanged(nameof(AnonAddyDomainName));
|
||||||
TriggerPropertyChanged(nameof(CatchAllEmailDomain));
|
TriggerPropertyChanged(nameof(CatchAllEmailDomain));
|
||||||
TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected));
|
TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected));
|
||||||
TriggerPropertyChanged(nameof(UsernameTypeSelected));
|
TriggerPropertyChanged(nameof(UsernameTypeSelected));
|
||||||
|
|||||||
@@ -175,7 +175,7 @@
|
|||||||
LineBreakMode="CharacterWrap"
|
LineBreakMode="CharacterWrap"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Start"
|
HorizontalTextAlignment="Center"
|
||||||
AutomationId="SendNoFileChosenLabel" />
|
AutomationId="SendNoFileChosenLabel" />
|
||||||
<Label
|
<Label
|
||||||
IsVisible="{Binding FileName, Converter={StaticResource notNull}}"
|
IsVisible="{Binding FileName, Converter={StaticResource notNull}}"
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
LineBreakMode="CharacterWrap"
|
LineBreakMode="CharacterWrap"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Start"
|
HorizontalTextAlignment="Center"
|
||||||
AutomationId="SendCurrentFileNameLabel" />
|
AutomationId="SendCurrentFileNameLabel" />
|
||||||
<Button
|
<Button
|
||||||
Text="{u:I18n ChooseFile}"
|
Text="{u:I18n ChooseFile}"
|
||||||
@@ -197,7 +197,7 @@
|
|||||||
Text="{u:I18n MaxFileSize}"
|
Text="{u:I18n MaxFileSize}"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Start" />
|
HorizontalTextAlignment="Center" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n TypeFileInfo}"
|
Text="{u:I18n TypeFileInfo}"
|
||||||
@@ -250,6 +250,20 @@
|
|||||||
AutomationId="SendHideTextByDefaultToggle" />
|
AutomationId="SendHideTextByDefaultToggle" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
<StackLayout
|
||||||
|
StyleClass="box-row, box-row-switch">
|
||||||
|
<Label
|
||||||
|
Text="{Binding ShareOnSaveText}"
|
||||||
|
StyleClass="box-label-regular"
|
||||||
|
VerticalOptions="Center"
|
||||||
|
HorizontalOptions="StartAndExpand" />
|
||||||
|
<Switch
|
||||||
|
IsToggled="{Binding ShareOnSave}"
|
||||||
|
IsEnabled="{Binding SendEnabled}"
|
||||||
|
HorizontalOptions="End"
|
||||||
|
Margin="10,0,0,0"
|
||||||
|
AutomationId="SendShareSendAfterSaveToggle" />
|
||||||
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Spacing="0"
|
Spacing="0"
|
||||||
|
|||||||
@@ -127,9 +127,10 @@ namespace Bit.App.Pages
|
|||||||
public SendType? Type { get; set; }
|
public SendType? Type { get; set; }
|
||||||
public byte[] FileData { get; set; }
|
public byte[] FileData { get; set; }
|
||||||
public string NewPassword { get; set; }
|
public string NewPassword { get; set; }
|
||||||
|
public bool ShareOnSave { get; set; }
|
||||||
public bool DisableHideEmailControl { get; set; }
|
public bool DisableHideEmailControl { get; set; }
|
||||||
public bool IsAddFromShare { get; set; }
|
public bool IsAddFromShare { get; set; }
|
||||||
public bool CopyInsteadOfShareAfterSaving { get; set; }
|
public string ShareOnSaveText => CopyInsteadOfShareAfterSaving ? AppResources.CopySendLinkOnSave : AppResources.ShareOnSave;
|
||||||
public string OptionsAccessilibityText => ShowOptions ? AppResources.OptionsExpanded : AppResources.OptionsCollapsed;
|
public string OptionsAccessilibityText => ShowOptions ? AppResources.OptionsExpanded : AppResources.OptionsCollapsed;
|
||||||
public List<KeyValuePair<string, SendType>> TypeOptions { get; }
|
public List<KeyValuePair<string, SendType>> TypeOptions { get; }
|
||||||
public List<KeyValuePair<string, string>> DeletionTypeOptions { get; }
|
public List<KeyValuePair<string, string>> DeletionTypeOptions { get; }
|
||||||
@@ -183,6 +184,15 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public bool CopyInsteadOfShareAfterSaving
|
||||||
|
{
|
||||||
|
get => _copyInsteadOfShareAfterSaving;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
SetProperty(ref _copyInsteadOfShareAfterSaving, value);
|
||||||
|
TriggerPropertyChanged(nameof(ShareOnSaveText));
|
||||||
|
}
|
||||||
|
}
|
||||||
public SendView Send
|
public SendView Send
|
||||||
{
|
{
|
||||||
get => _send;
|
get => _send;
|
||||||
@@ -402,11 +412,19 @@ namespace Bit.App.Pages
|
|||||||
_messagingService.Send("sendUpdated");
|
_messagingService.Send("sendUpdated");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ShareOnSave)
|
||||||
|
{
|
||||||
|
_platformUtilsService.ShowToast("success", null,
|
||||||
|
EditMode ? AppResources.SendUpdated : AppResources.NewSendCreated);
|
||||||
|
}
|
||||||
|
|
||||||
if (!CopyInsteadOfShareAfterSaving)
|
if (!CopyInsteadOfShareAfterSaving)
|
||||||
{
|
{
|
||||||
await CloseAsync();
|
await CloseAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ShareOnSave)
|
||||||
|
{
|
||||||
var savedSend = await _sendService.GetAsync(sendId);
|
var savedSend = await _sendService.GetAsync(sendId);
|
||||||
if (savedSend != null)
|
if (savedSend != null)
|
||||||
{
|
{
|
||||||
@@ -423,6 +441,7 @@ namespace Bit.App.Pages
|
|||||||
await AppHelpers.ShareSendUrlAsync(savedSendView);
|
await AppHelpers.ShareSendUrlAsync(savedSendView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (CopyInsteadOfShareAfterSaving)
|
if (CopyInsteadOfShareAfterSaving)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -94,13 +94,13 @@
|
|||||||
LineBreakMode="CharacterWrap"
|
LineBreakMode="CharacterWrap"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Start" />
|
HorizontalTextAlignment="Center" />
|
||||||
<Label
|
<Label
|
||||||
Margin="0, 5, 0, 0"
|
Margin="0, 5, 0, 0"
|
||||||
Text="{u:I18n MaxFileSize}"
|
Text="{u:I18n MaxFileSize}"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Start" />
|
HorizontalTextAlignment="Center" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
@@ -145,6 +145,19 @@
|
|||||||
Margin="10,0,0,0" />
|
Margin="10,0,0,0" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
<StackLayout
|
||||||
|
StyleClass="box-row, box-row-switch">
|
||||||
|
<Label
|
||||||
|
Text="{Binding ShareOnSaveText}"
|
||||||
|
StyleClass="box-label-regular"
|
||||||
|
VerticalOptions="Center"
|
||||||
|
HorizontalOptions="StartAndExpand" />
|
||||||
|
<Switch
|
||||||
|
IsToggled="{Binding ShareOnSave}"
|
||||||
|
IsEnabled="{Binding SendEnabled}"
|
||||||
|
HorizontalOptions="End"
|
||||||
|
Margin="10,0,0,0" />
|
||||||
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Spacing="0"
|
Spacing="0"
|
||||||
|
|||||||
@@ -38,8 +38,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{u:I18n DisablePersonalVaultExportPolicyInEffect}"
|
Text="{u:I18n DisablePersonalVaultExportPolicyInEffect}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="DisablePrivateVaultPolicyLabel" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
<Grid
|
<Grid
|
||||||
RowSpacing="10"
|
RowSpacing="10"
|
||||||
@@ -56,8 +55,7 @@
|
|||||||
SelectedIndex="{Binding FileFormatSelectedIndex}"
|
SelectedIndex="{Binding FileFormatSelectedIndex}"
|
||||||
SelectedIndexChanged="FileFormat_Changed"
|
SelectedIndexChanged="FileFormat_Changed"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
IsEnabled="{Binding DisablePrivateVaultPolicyEnabled, Converter={StaticResource inverseBool}}"
|
IsEnabled="{Binding DisablePrivateVaultPolicyEnabled, Converter={StaticResource inverseBool}}" />
|
||||||
AutomationId="FileFormatPicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
StyleClass="box-row"
|
StyleClass="box-row"
|
||||||
@@ -74,8 +72,7 @@
|
|||||||
HorizontalOptions="Fill"
|
HorizontalOptions="Fill"
|
||||||
VerticalOptions="End"
|
VerticalOptions="End"
|
||||||
IsEnabled="{Binding DisablePrivateVaultPolicyEnabled, Converter={StaticResource inverseBool}}"
|
IsEnabled="{Binding DisablePrivateVaultPolicyEnabled, Converter={StaticResource inverseBool}}"
|
||||||
Margin="0,0,0,10"
|
Margin="0,0,0,10"/>
|
||||||
AutomationId="SendTOTPCodeButton" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Grid
|
<Grid
|
||||||
StyleClass="box-row"
|
StyleClass="box-row"
|
||||||
@@ -99,8 +96,7 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
ReturnType="Go"
|
ReturnType="Go"
|
||||||
ReturnCommand="{Binding ExportVaultCommand}"
|
ReturnCommand="{Binding ExportVaultCommand}" />
|
||||||
AutomationId="MasterPasswordEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -110,8 +106,7 @@
|
|||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
||||||
IsVisible="{Binding UseOTPVerification, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding UseOTPVerification, Converter={StaticResource inverseBool}}"/>
|
||||||
AutomationId="TogglePasswordVisibilityButton" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ConfirmYourIdentity}"
|
Text="{u:I18n ConfirmYourIdentity}"
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
@@ -133,8 +128,7 @@
|
|||||||
Clicked="ExportVault_Clicked"
|
Clicked="ExportVault_Clicked"
|
||||||
HorizontalOptions="Fill"
|
HorizontalOptions="Fill"
|
||||||
VerticalOptions="End"
|
VerticalOptions="End"
|
||||||
IsEnabled="{Binding DisablePrivateVaultPolicyEnabled, Converter={StaticResource inverseBool}}"
|
IsEnabled="{Binding DisablePrivateVaultPolicyEnabled, Converter={StaticResource inverseBool}}"/>
|
||||||
AutomationId="ExportVaultButton" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ namespace Bit.App.Pages
|
|||||||
private readonly II18nService _i18nService;
|
private readonly II18nService _i18nService;
|
||||||
private readonly IExportService _exportService;
|
private readonly IExportService _exportService;
|
||||||
private readonly IPolicyService _policyService;
|
private readonly IPolicyService _policyService;
|
||||||
|
private readonly IKeyConnectorService _keyConnectorService;
|
||||||
private readonly IUserVerificationService _userVerificationService;
|
private readonly IUserVerificationService _userVerificationService;
|
||||||
private readonly IApiService _apiService;
|
private readonly IApiService _apiService;
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
@@ -44,7 +45,8 @@ namespace Bit.App.Pages
|
|||||||
_i18nService = ServiceContainer.Resolve<II18nService>("i18nService");
|
_i18nService = ServiceContainer.Resolve<II18nService>("i18nService");
|
||||||
_exportService = ServiceContainer.Resolve<IExportService>("exportService");
|
_exportService = ServiceContainer.Resolve<IExportService>("exportService");
|
||||||
_policyService = ServiceContainer.Resolve<IPolicyService>("policyService");
|
_policyService = ServiceContainer.Resolve<IPolicyService>("policyService");
|
||||||
_userVerificationService = ServiceContainer.Resolve<IUserVerificationService>();
|
_keyConnectorService = ServiceContainer.Resolve<IKeyConnectorService>("keyConnectorService");
|
||||||
|
_userVerificationService = ServiceContainer.Resolve<IUserVerificationService>("userVerificationService");
|
||||||
_apiService = ServiceContainer.Resolve<IApiService>("apiService");
|
_apiService = ServiceContainer.Resolve<IApiService>("apiService");
|
||||||
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
||||||
|
|
||||||
@@ -65,7 +67,7 @@ namespace Bit.App.Pages
|
|||||||
_initialized = true;
|
_initialized = true;
|
||||||
FileFormatSelectedIndex = FileFormatOptions.FindIndex(k => k.Key == "json");
|
FileFormatSelectedIndex = FileFormatOptions.FindIndex(k => k.Key == "json");
|
||||||
DisablePrivateVaultPolicyEnabled = await _policyService.PolicyAppliesToUser(PolicyType.DisablePersonalVaultExport);
|
DisablePrivateVaultPolicyEnabled = await _policyService.PolicyAppliesToUser(PolicyType.DisablePersonalVaultExport);
|
||||||
UseOTPVerification = !await _userVerificationService.HasMasterPasswordAsync(true);
|
UseOTPVerification = await _keyConnectorService.GetUsesKeyConnector();
|
||||||
|
|
||||||
if (UseOTPVerification)
|
if (UseOTPVerification)
|
||||||
{
|
{
|
||||||
@@ -163,9 +165,9 @@ namespace Bit.App.Pages
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var verificationType = await _userVerificationService.HasMasterPasswordAsync(true)
|
var verificationType = await _keyConnectorService.GetUsesKeyConnector()
|
||||||
? VerificationType.MasterPassword
|
? VerificationType.OTP
|
||||||
: VerificationType.OTP;
|
: VerificationType.MasterPassword;
|
||||||
if (!await _userVerificationService.VerifyUser(Secret, verificationType))
|
if (!await _userVerificationService.VerifyUser(Secret, verificationType))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -32,8 +32,7 @@
|
|||||||
Padding="10, 0"
|
Padding="10, 0"
|
||||||
RowSpacing="0"
|
RowSpacing="0"
|
||||||
RowDefinitions="*, Auto, *, 10"
|
RowDefinitions="*, Auto, *, 10"
|
||||||
ColumnDefinitions="*, *"
|
ColumnDefinitions="*, *">
|
||||||
AutomationId="LoginRequestCell">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n FingerprintPhrase}"
|
Text="{u:I18n FingerprintPhrase}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
@@ -46,23 +45,20 @@
|
|||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
Padding="0, 5, 0, 10"
|
Padding="0, 5, 0, 10"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center"
|
||||||
TextColor="{DynamicResource FingerprintPhrase}"
|
TextColor="{DynamicResource FingerprintPhrase}"/>
|
||||||
AutomationId="FingerprintPhraseLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
HorizontalOptions="Start"
|
HorizontalOptions="Start"
|
||||||
HorizontalTextAlignment="Start"
|
HorizontalTextAlignment="Start"
|
||||||
Text="{Binding RequestDeviceType}"
|
Text="{Binding RequestDeviceType}"
|
||||||
StyleClass="list-header-sub"
|
StyleClass="list-header-sub" />
|
||||||
AutomationId="RequestDeviceLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
Text="{Binding CreationDate, Converter={StaticResource dateTime}}"
|
Text="{Binding CreationDate, Converter={StaticResource dateTime}}"
|
||||||
StyleClass="list-header-sub"
|
StyleClass="list-header-sub" />
|
||||||
AutomationId="RequestDateLabel" />
|
|
||||||
<BoxView
|
<BoxView
|
||||||
StyleClass="list-section-separator-top, list-section-separator-top-platform"
|
StyleClass="list-section-separator-top, list-section-separator-top-platform"
|
||||||
VerticalOptions="End"
|
VerticalOptions="End"
|
||||||
@@ -98,8 +94,7 @@
|
|||||||
Margin="10,0"
|
Margin="10,0"
|
||||||
Icon="{Binding Source={x:Static core:BitwardenIcons.Trash}}"
|
Icon="{Binding Source={x:Static core:BitwardenIcons.Trash}}"
|
||||||
Label="{u:I18n DeclineAllRequests}"
|
Label="{u:I18n DeclineAllRequests}"
|
||||||
ButtonCommand="{Binding DeclineAllRequestsCommand}"
|
ButtonCommand="{Binding DeclineAllRequestsCommand}"/>
|
||||||
AutomationId="DeleteAllRequestsButton" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</ContentPage.Resources>
|
</ContentPage.Resources>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace Bit.App.Pages
|
|||||||
private readonly IBiometricService _biometricService;
|
private readonly IBiometricService _biometricService;
|
||||||
private readonly IPolicyService _policyService;
|
private readonly IPolicyService _policyService;
|
||||||
private readonly ILocalizeService _localizeService;
|
private readonly ILocalizeService _localizeService;
|
||||||
private readonly IUserVerificationService _userVerificationService;
|
private readonly IKeyConnectorService _keyConnectorService;
|
||||||
private readonly IClipboardService _clipboardService;
|
private readonly IClipboardService _clipboardService;
|
||||||
private readonly ILogger _loggerService;
|
private readonly ILogger _loggerService;
|
||||||
private readonly IPushNotificationService _pushNotificationService;
|
private readonly IPushNotificationService _pushNotificationService;
|
||||||
@@ -48,7 +48,6 @@ namespace Bit.App.Pages
|
|||||||
private bool _reportLoggingEnabled;
|
private bool _reportLoggingEnabled;
|
||||||
private bool _approvePasswordlessLoginRequests;
|
private bool _approvePasswordlessLoginRequests;
|
||||||
private bool _shouldConnectToWatch;
|
private bool _shouldConnectToWatch;
|
||||||
private bool _hasMasterPassword;
|
|
||||||
private readonly static List<KeyValuePair<string, int?>> VaultTimeoutOptions =
|
private readonly static List<KeyValuePair<string, int?>> VaultTimeoutOptions =
|
||||||
new List<KeyValuePair<string, int?>>
|
new List<KeyValuePair<string, int?>>
|
||||||
{
|
{
|
||||||
@@ -89,7 +88,7 @@ namespace Bit.App.Pages
|
|||||||
_biometricService = ServiceContainer.Resolve<IBiometricService>("biometricService");
|
_biometricService = ServiceContainer.Resolve<IBiometricService>("biometricService");
|
||||||
_policyService = ServiceContainer.Resolve<IPolicyService>("policyService");
|
_policyService = ServiceContainer.Resolve<IPolicyService>("policyService");
|
||||||
_localizeService = ServiceContainer.Resolve<ILocalizeService>("localizeService");
|
_localizeService = ServiceContainer.Resolve<ILocalizeService>("localizeService");
|
||||||
_userVerificationService = ServiceContainer.Resolve<IUserVerificationService>();
|
_keyConnectorService = ServiceContainer.Resolve<IKeyConnectorService>("keyConnectorService");
|
||||||
_clipboardService = ServiceContainer.Resolve<IClipboardService>("clipboardService");
|
_clipboardService = ServiceContainer.Resolve<IClipboardService>("clipboardService");
|
||||||
_loggerService = ServiceContainer.Resolve<ILogger>("logger");
|
_loggerService = ServiceContainer.Resolve<ILogger>("logger");
|
||||||
_pushNotificationService = ServiceContainer.Resolve<IPushNotificationService>();
|
_pushNotificationService = ServiceContainer.Resolve<IPushNotificationService>();
|
||||||
@@ -101,17 +100,12 @@ namespace Bit.App.Pages
|
|||||||
ExecuteSettingItemCommand = new AsyncCommand<SettingsPageListItem>(item => item.ExecuteAsync(), onException: _loggerService.Exception, allowsMultipleExecutions: false);
|
ExecuteSettingItemCommand = new AsyncCommand<SettingsPageListItem>(item => item.ExecuteAsync(), onException: _loggerService.Exception, allowsMultipleExecutions: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsVaultTimeoutActionLockAllowed => _hasMasterPassword || _biometric || _pin;
|
|
||||||
|
|
||||||
public ObservableRangeCollection<ISettingsPageListItem> GroupedItems { get; set; }
|
public ObservableRangeCollection<ISettingsPageListItem> GroupedItems { get; set; }
|
||||||
|
|
||||||
public IAsyncCommand<SettingsPageListItem> ExecuteSettingItemCommand { get; }
|
public IAsyncCommand<SettingsPageListItem> ExecuteSettingItemCommand { get; }
|
||||||
|
|
||||||
public async Task InitAsync()
|
public async Task InitAsync()
|
||||||
{
|
{
|
||||||
var decryptionOptions = await _stateService.GetAccountDecryptionOptions();
|
|
||||||
// set has true for backwards compatibility
|
|
||||||
_hasMasterPassword = decryptionOptions?.HasMasterPassword ?? true;
|
|
||||||
_supportsBiometric = await _platformUtilsService.SupportsBiometricAsync();
|
_supportsBiometric = await _platformUtilsService.SupportsBiometricAsync();
|
||||||
var lastSync = await _syncService.GetLastSyncAsync();
|
var lastSync = await _syncService.GetLastSyncAsync();
|
||||||
if (lastSync != null)
|
if (lastSync != null)
|
||||||
@@ -130,17 +124,8 @@ namespace Bit.App.Pages
|
|||||||
_vaultTimeoutDisplayValue = _vaultTimeoutOptions.FirstOrDefault(o => o.Value == _vaultTimeout).Key;
|
_vaultTimeoutDisplayValue = _vaultTimeoutOptions.FirstOrDefault(o => o.Value == _vaultTimeout).Key;
|
||||||
_vaultTimeoutDisplayValue ??= _vaultTimeoutOptions.Where(o => o.Value == CustomVaultTimeoutValue).First().Key;
|
_vaultTimeoutDisplayValue ??= _vaultTimeoutOptions.Where(o => o.Value == CustomVaultTimeoutValue).First().Key;
|
||||||
|
|
||||||
|
var action = await _vaultTimeoutService.GetVaultTimeoutAction() ?? VaultTimeoutAction.Lock;
|
||||||
var pinSet = await _vaultTimeoutService.GetPinLockTypeAsync();
|
_vaultTimeoutActionDisplayValue = _vaultTimeoutActionOptions.FirstOrDefault(o => o.Value == action).Key;
|
||||||
_pin = pinSet != PinLockType.Disabled;
|
|
||||||
_biometric = await _vaultTimeoutService.IsBiometricLockSetAsync();
|
|
||||||
var timeoutAction = await _vaultTimeoutService.GetVaultTimeoutAction() ?? VaultTimeoutAction.Lock;
|
|
||||||
if (!IsVaultTimeoutActionLockAllowed && timeoutAction == VaultTimeoutAction.Lock)
|
|
||||||
{
|
|
||||||
timeoutAction = VaultTimeoutAction.Logout;
|
|
||||||
await _vaultTimeoutService.SetVaultTimeoutOptionsAsync(_vaultTimeout, VaultTimeoutAction.Logout);
|
|
||||||
}
|
|
||||||
_vaultTimeoutActionDisplayValue = _vaultTimeoutActionOptions.FirstOrDefault(o => o.Value == timeoutAction).Key;
|
|
||||||
|
|
||||||
if (await _policyService.PolicyAppliesToUser(PolicyType.MaximumVaultTimeout))
|
if (await _policyService.PolicyAppliesToUser(PolicyType.MaximumVaultTimeout))
|
||||||
{
|
{
|
||||||
@@ -152,6 +137,10 @@ namespace Bit.App.Pages
|
|||||||
(t.Value > 0 || t.Value == CustomVaultTimeoutValue) &&
|
(t.Value > 0 || t.Value == CustomVaultTimeoutValue) &&
|
||||||
t.Value != null).ToList();
|
t.Value != null).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var pinSet = await _vaultTimeoutService.IsPinLockSetAsync();
|
||||||
|
_pin = pinSet.Item1 || pinSet.Item2;
|
||||||
|
_biometric = await _vaultTimeoutService.IsBiometricLockSetAsync();
|
||||||
_screenCaptureAllowed = await _stateService.GetScreenCaptureAllowedAsync();
|
_screenCaptureAllowed = await _stateService.GetScreenCaptureAllowedAsync();
|
||||||
|
|
||||||
if (_vaultTimeoutDisplayValue == null)
|
if (_vaultTimeoutDisplayValue == null)
|
||||||
@@ -159,7 +148,8 @@ namespace Bit.App.Pages
|
|||||||
_vaultTimeoutDisplayValue = AppResources.Custom;
|
_vaultTimeoutDisplayValue = AppResources.Custom;
|
||||||
}
|
}
|
||||||
|
|
||||||
_showChangeMasterPassword = IncludeLinksWithSubscriptionInfo() && await _userVerificationService.HasMasterPasswordAsync();
|
_showChangeMasterPassword = IncludeLinksWithSubscriptionInfo() &&
|
||||||
|
!await _keyConnectorService.GetUsesKeyConnector();
|
||||||
_reportLoggingEnabled = await _loggerService.IsEnabled();
|
_reportLoggingEnabled = await _loggerService.IsEnabled();
|
||||||
_approvePasswordlessLoginRequests = await _stateService.GetApprovePasswordlessLoginsAsync();
|
_approvePasswordlessLoginRequests = await _stateService.GetApprovePasswordlessLoginsAsync();
|
||||||
_shouldConnectToWatch = await _stateService.GetShouldConnectToWatchAsync();
|
_shouldConnectToWatch = await _stateService.GetShouldConnectToWatchAsync();
|
||||||
@@ -333,7 +323,6 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
if (oldTimeout != newTimeout)
|
if (oldTimeout != newTimeout)
|
||||||
{
|
{
|
||||||
await _cryptoService.RefreshKeysAsync();
|
|
||||||
await Device.InvokeOnMainThreadAsync(BuildList);
|
await Device.InvokeOnMainThreadAsync(BuildList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -398,11 +387,8 @@ namespace Bit.App.Pages
|
|||||||
// do nothing if we have a policy set
|
// do nothing if we have a policy set
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
var options = _vaultTimeoutActionOptions.Select(o =>
|
||||||
var options = IsVaultTimeoutActionLockAllowed
|
o.Key == _vaultTimeoutActionDisplayValue ? $"✓ {o.Key}" : o.Key).ToArray();
|
||||||
? _vaultTimeoutActionOptions.Select(o => CreateSelectableOption(o.Key, _vaultTimeoutActionDisplayValue == o.Key)).ToArray()
|
|
||||||
: _vaultTimeoutActionOptions.Where(o => o.Value == VaultTimeoutAction.Logout).Select(v => ToSelectedOption(v.Key)).ToArray();
|
|
||||||
|
|
||||||
var selection = await Page.DisplayActionSheet(AppResources.VaultTimeoutAction,
|
var selection = await Page.DisplayActionSheet(AppResources.VaultTimeoutAction,
|
||||||
AppResources.Cancel, null, options);
|
AppResources.Cancel, null, options);
|
||||||
if (selection == null || selection == AppResources.Cancel)
|
if (selection == null || selection == AppResources.Cancel)
|
||||||
@@ -442,7 +428,7 @@ namespace Bit.App.Pages
|
|||||||
if (!string.IsNullOrWhiteSpace(pin))
|
if (!string.IsNullOrWhiteSpace(pin))
|
||||||
{
|
{
|
||||||
var masterPassOnRestart = false;
|
var masterPassOnRestart = false;
|
||||||
if (await _userVerificationService.HasMasterPasswordAsync())
|
if (!await _keyConnectorService.GetUsesKeyConnector())
|
||||||
{
|
{
|
||||||
masterPassOnRestart = await _platformUtilsService.ShowDialogAsync(
|
masterPassOnRestart = await _platformUtilsService.ShowDialogAsync(
|
||||||
AppResources.PINRequireMasterPasswordRestart, AppResources.UnlockWithPIN,
|
AppResources.PINRequireMasterPasswordRestart, AppResources.UnlockWithPIN,
|
||||||
@@ -451,20 +437,19 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
|
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
|
||||||
var email = await _stateService.GetEmailAsync();
|
var email = await _stateService.GetEmailAsync();
|
||||||
var pinKey = await _cryptoService.MakePinKeyAsync(pin, email, kdfConfig);
|
var pinKey = await _cryptoService.MakePinKeyAysnc(pin, email, kdfConfig);
|
||||||
var userKey = await _cryptoService.GetUserKeyAsync();
|
var key = await _cryptoService.GetKeyAsync();
|
||||||
var protectedPinKey = await _cryptoService.EncryptAsync(userKey.Key, pinKey);
|
var pinProtectedKey = await _cryptoService.EncryptAsync(key.Key, pinKey);
|
||||||
|
|
||||||
var encPin = await _cryptoService.EncryptAsync(pin);
|
|
||||||
await _stateService.SetProtectedPinAsync(encPin.EncryptedString);
|
|
||||||
|
|
||||||
if (masterPassOnRestart)
|
if (masterPassOnRestart)
|
||||||
{
|
{
|
||||||
await _stateService.SetPinKeyEncryptedUserKeyEphemeralAsync(protectedPinKey);
|
var encPin = await _cryptoService.EncryptAsync(pin);
|
||||||
|
await _stateService.SetProtectedPinAsync(encPin.EncryptedString);
|
||||||
|
await _stateService.SetPinProtectedKeyAsync(pinProtectedKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _stateService.SetPinKeyEncryptedUserKeyAsync(protectedPinKey);
|
await _stateService.SetPinProtectedAsync(pinProtectedKey.EncryptedString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -474,8 +459,8 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
if (!_pin)
|
if (!_pin)
|
||||||
{
|
{
|
||||||
|
await _cryptoService.ClearPinProtectedKeyAsync();
|
||||||
await _vaultTimeoutService.ClearAsync();
|
await _vaultTimeoutService.ClearAsync();
|
||||||
await UpdateVaultTimeoutActionIfNeededAsync();
|
|
||||||
}
|
}
|
||||||
BuildList();
|
BuildList();
|
||||||
}
|
}
|
||||||
@@ -504,10 +489,9 @@ namespace Bit.App.Pages
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _stateService.SetBiometricUnlockAsync(null);
|
await _stateService.SetBiometricUnlockAsync(null);
|
||||||
await UpdateVaultTimeoutActionIfNeededAsync();
|
|
||||||
}
|
}
|
||||||
await _stateService.SetBiometricLockedAsync(false);
|
await _stateService.SetBiometricLockedAsync(false);
|
||||||
await _cryptoService.RefreshKeysAsync();
|
await _cryptoService.ToggleKeyAsync();
|
||||||
BuildList();
|
BuildList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -851,11 +835,9 @@ namespace Bit.App.Pages
|
|||||||
return _vaultTimeoutOptions.FirstOrDefault(o => o.Key == key).Value;
|
return _vaultTimeoutOptions.FirstOrDefault(o => o.Key == key).Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string CreateSelectableOption(string option, bool selected) => selected ? ToSelectedOption(option) : option;
|
private string CreateSelectableOption(string option, bool selected) => selected ? $"✓ {option}" : option;
|
||||||
|
|
||||||
private bool CompareSelection(string selection, string compareTo) => selection == compareTo || selection == ToSelectedOption(compareTo);
|
private bool CompareSelection(string selection, string compareTo) => selection == compareTo || selection == $"✓ {compareTo}";
|
||||||
|
|
||||||
private string ToSelectedOption(string option) => $"✓ {option}";
|
|
||||||
|
|
||||||
public async Task SetScreenCaptureAllowedAsync()
|
public async Task SetScreenCaptureAllowedAsync()
|
||||||
{
|
{
|
||||||
@@ -887,17 +869,5 @@ namespace Bit.App.Pages
|
|||||||
await _watchDeviceService.SetShouldConnectToWatchAsync(_shouldConnectToWatch);
|
await _watchDeviceService.SetShouldConnectToWatchAsync(_shouldConnectToWatch);
|
||||||
BuildList();
|
BuildList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task UpdateVaultTimeoutActionIfNeededAsync()
|
|
||||||
{
|
|
||||||
if (IsVaultTimeoutActionLockAllowed)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_vaultTimeoutActionDisplayValue = _vaultTimeoutActionOptions.First(o => o.Value == VaultTimeoutAction.Logout).Key;
|
|
||||||
await _vaultTimeoutService.SetVaultTimeoutOptionsAsync(_vaultTimeout, VaultTimeoutAction.Logout);
|
|
||||||
_deviceActionService.Toast(AppResources.VaultTimeoutActionChangedToLogOut);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
await UpdateVaultButtonTitleAsync();
|
await UpdateVaultButtonTitleAsync();
|
||||||
if (await _keyConnectorService.UserNeedsMigrationAsync())
|
if (await _keyConnectorService.UserNeedsMigration())
|
||||||
{
|
{
|
||||||
_messagingService.Send("convertAccountToKeyConnector");
|
_messagingService.Send("convertAccountToKeyConnector");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ namespace Bit.App.Pages
|
|||||||
_cipherDomain = await _cipherService.GetAsync(CipherId);
|
_cipherDomain = await _cipherService.GetAsync(CipherId);
|
||||||
Cipher = await _cipherDomain.DecryptAsync();
|
Cipher = await _cipherDomain.DecryptAsync();
|
||||||
LoadAttachments();
|
LoadAttachments();
|
||||||
_hasUpdatedKey = await _cryptoService.HasUserKeyAsync();
|
_hasUpdatedKey = await _cryptoService.HasEncKeyAsync();
|
||||||
var canAccessPremium = await _stateService.CanAccessPremiumAsync();
|
var canAccessPremium = await _stateService.CanAccessPremiumAsync();
|
||||||
_canAccessAttachments = canAccessPremium || Cipher.OrganizationId != null;
|
_canAccessAttachments = canAccessPremium || Cipher.OrganizationId != null;
|
||||||
if (!_canAccessAttachments)
|
if (!_canAccessAttachments)
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ namespace Bit.App.Pages
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!await _passwordRepromptService.PromptAndCheckPasswordIfNeededAsync(cipher.Reprompt))
|
if (cipher.Reprompt != CipherRepromptType.None && !await _passwordRepromptService.ShowPasswordPromptAsync())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace Bit.App.Pages
|
|||||||
set => SetProperty(ref _cipher, value, additionalPropertyNames: AdditionalPropertiesToRaiseOnCipherChanged);
|
set => SetProperty(ref _cipher, value, additionalPropertyNames: AdditionalPropertiesToRaiseOnCipherChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string CreationDate => string.Format(AppResources.CreatedXY, Cipher.CreationDate.ToShortDateString(), Cipher.CreationDate.ToShortTimeString());
|
public string CreationDate => string.Format(AppResources.CreatedX, Cipher.CreationDate.ToShortDateString());
|
||||||
|
|
||||||
public AsyncCommand CheckPasswordCommand { get; }
|
public AsyncCommand CheckPasswordCommand { get; }
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,7 @@
|
|||||||
Margin="0,10,0,0"
|
Margin="0,10,0,0"
|
||||||
IsVisible="{Binding ShowPasskeyInfo}"/>
|
IsVisible="{Binding ShowPasskeyInfo}"/>
|
||||||
<Entry
|
<Entry
|
||||||
Text="{Binding CreationDate}"
|
Text="{u:I18n AvailableForTwoStepLogin}"
|
||||||
IsEnabled="False"
|
IsEnabled="False"
|
||||||
StyleClass="box-value,text-muted"
|
StyleClass="box-value,text-muted"
|
||||||
IsVisible="{Binding ShowPasskeyInfo}" />
|
IsVisible="{Binding ShowPasskeyInfo}" />
|
||||||
@@ -650,6 +650,38 @@
|
|||||||
AutomationId="IdentityCountryEntry" />
|
AutomationId="IdentityCountryEntry" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
|
<StackLayout IsVisible="{Binding IsFido2Key}" Spacing="0" Padding="0">
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n Username}"
|
||||||
|
StyleClass="box-label"
|
||||||
|
Margin="0,10,0,0"/>
|
||||||
|
<Entry
|
||||||
|
x:Name="_fido2KeyUsernameEntry"
|
||||||
|
Text="{Binding Cipher.Fido2Key.UserName}"
|
||||||
|
StyleClass="box-value"
|
||||||
|
Grid.Row="1"/>
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n Passkey}"
|
||||||
|
StyleClass="box-label"
|
||||||
|
Margin="0,10,0,0"/>
|
||||||
|
<Entry
|
||||||
|
Text="{Binding CreationDate}"
|
||||||
|
IsEnabled="False"
|
||||||
|
StyleClass="box-value,text-muted" />
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n Application}"
|
||||||
|
StyleClass="box-label"
|
||||||
|
Margin="0,10,0,0"/>
|
||||||
|
<Entry
|
||||||
|
Text="{Binding Cipher.Fido2Key.LaunchUri}"
|
||||||
|
IsEnabled="False"
|
||||||
|
StyleClass="box-value,text-muted" />
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey}"
|
||||||
|
StyleClass="box-sub-label" />
|
||||||
|
</StackLayout>
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box" IsVisible="{Binding IsLogin}">
|
<StackLayout StyleClass="box" IsVisible="{Binding IsLogin}">
|
||||||
<StackLayout StyleClass="box-row-header">
|
<StackLayout StyleClass="box-row-header">
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace Bit.App.Pages
|
|||||||
private readonly IDeviceActionService _deviceActionService;
|
private readonly IDeviceActionService _deviceActionService;
|
||||||
private readonly IAutofillHandler _autofillHandler;
|
private readonly IAutofillHandler _autofillHandler;
|
||||||
private readonly IVaultTimeoutService _vaultTimeoutService;
|
private readonly IVaultTimeoutService _vaultTimeoutService;
|
||||||
private readonly IUserVerificationService _userVerificationService;
|
private readonly IKeyConnectorService _keyConnectorService;
|
||||||
|
|
||||||
private CipherAddEditPageViewModel _vm;
|
private CipherAddEditPageViewModel _vm;
|
||||||
private bool _fromAutofill;
|
private bool _fromAutofill;
|
||||||
@@ -43,7 +43,7 @@ namespace Bit.App.Pages
|
|||||||
_deviceActionService = ServiceContainer.Resolve<IDeviceActionService>("deviceActionService");
|
_deviceActionService = ServiceContainer.Resolve<IDeviceActionService>("deviceActionService");
|
||||||
_autofillHandler = ServiceContainer.Resolve<IAutofillHandler>();
|
_autofillHandler = ServiceContainer.Resolve<IAutofillHandler>();
|
||||||
_vaultTimeoutService = ServiceContainer.Resolve<IVaultTimeoutService>("vaultTimeoutService");
|
_vaultTimeoutService = ServiceContainer.Resolve<IVaultTimeoutService>("vaultTimeoutService");
|
||||||
_userVerificationService = ServiceContainer.Resolve<IUserVerificationService>();
|
_keyConnectorService = ServiceContainer.Resolve<IKeyConnectorService>("keyConnectorService");
|
||||||
|
|
||||||
_appOptions = appOptions;
|
_appOptions = appOptions;
|
||||||
_fromAutofill = fromAutofill;
|
_fromAutofill = fromAutofill;
|
||||||
@@ -175,8 +175,8 @@ namespace Bit.App.Pages
|
|||||||
RequestFocus(_nameEntry);
|
RequestFocus(_nameEntry);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// Hide password reprompt option if using key connector
|
||||||
_passwordPrompt.IsVisible = await _userVerificationService.HasMasterPasswordAsync();
|
_passwordPrompt.IsVisible = !await _keyConnectorService.GetUsesKeyConnector();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnDisappearing()
|
protected override void OnDisappearing()
|
||||||
|
|||||||
@@ -296,6 +296,7 @@ namespace Bit.App.Pages
|
|||||||
public bool IsIdentity => Cipher?.Type == CipherType.Identity;
|
public bool IsIdentity => Cipher?.Type == CipherType.Identity;
|
||||||
public bool IsCard => Cipher?.Type == CipherType.Card;
|
public bool IsCard => Cipher?.Type == CipherType.Card;
|
||||||
public bool IsSecureNote => Cipher?.Type == CipherType.SecureNote;
|
public bool IsSecureNote => Cipher?.Type == CipherType.SecureNote;
|
||||||
|
public bool IsFido2Key => Cipher?.Type == CipherType.Fido2Key;
|
||||||
public bool ShowUris => IsLogin && Cipher.Login.HasUris;
|
public bool ShowUris => IsLogin && Cipher.Login.HasUris;
|
||||||
public bool ShowAttachments => Cipher.HasAttachments;
|
public bool ShowAttachments => Cipher.HasAttachments;
|
||||||
public string ShowPasswordIcon => ShowPassword ? BitwardenIcons.EyeSlash : BitwardenIcons.Eye;
|
public string ShowPasswordIcon => ShowPassword ? BitwardenIcons.EyeSlash : BitwardenIcons.Eye;
|
||||||
@@ -308,7 +309,7 @@ namespace Bit.App.Pages
|
|||||||
public string PasswordVisibilityAccessibilityText => ShowPassword ? AppResources.PasswordIsVisibleTapToHide : AppResources.PasswordIsNotVisibleTapToShow;
|
public string PasswordVisibilityAccessibilityText => ShowPassword ? AppResources.PasswordIsVisibleTapToHide : AppResources.PasswordIsNotVisibleTapToShow;
|
||||||
public bool HasTotpValue => IsLogin && !string.IsNullOrEmpty(Cipher?.Login?.Totp);
|
public bool HasTotpValue => IsLogin && !string.IsNullOrEmpty(Cipher?.Login?.Totp);
|
||||||
public string SetupTotpText => $"{BitwardenIcons.Camera} {AppResources.SetupTotp}";
|
public string SetupTotpText => $"{BitwardenIcons.Camera} {AppResources.SetupTotp}";
|
||||||
public bool ShowPasskeyInfo => Cipher?.HasFido2Key == true && !CloneMode;
|
public bool ShowPasskeyInfo => Cipher?.Login?.Fido2Key != null && !CloneMode;
|
||||||
|
|
||||||
public void Init()
|
public void Init()
|
||||||
{
|
{
|
||||||
@@ -370,7 +371,7 @@ namespace Bit.App.Pages
|
|||||||
if (Cipher.Type == CipherType.Login)
|
if (Cipher.Type == CipherType.Login)
|
||||||
{
|
{
|
||||||
// passkeys can't be cloned
|
// passkeys can't be cloned
|
||||||
Cipher.Login.Fido2Keys = null;
|
Cipher.Login.Fido2Key = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (appOptions?.OtpData != null && Cipher.Type == CipherType.Login)
|
if (appOptions?.OtpData != null && Cipher.Type == CipherType.Login)
|
||||||
|
|||||||
@@ -199,12 +199,12 @@
|
|||||||
Text="{u:I18n Passkey}"
|
Text="{u:I18n Passkey}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Margin="0,10,0,0"
|
Margin="0,10,0,0"
|
||||||
IsVisible="{Binding Cipher.Login.MainFido2Key, Converter={StaticResource notNull}}"/>
|
IsVisible="{Binding Cipher.Login.Fido2Key, Converter={StaticResource notNull}}"/>
|
||||||
<Entry
|
<Entry
|
||||||
Text="{Binding CreationDate}"
|
Text="{u:I18n AvailableForTwoStepLogin}"
|
||||||
IsEnabled="False"
|
IsEnabled="False"
|
||||||
StyleClass="box-value,text-muted"
|
StyleClass="box-value,text-muted"
|
||||||
IsVisible="{Binding Cipher.Login.MainFido2Key, Converter={StaticResource notNull}}" />
|
IsVisible="{Binding Cipher.Login.Fido2Key, Converter={StaticResource notNull}}" />
|
||||||
<Grid StyleClass="box-row"
|
<Grid StyleClass="box-row"
|
||||||
IsVisible="{Binding ShowTotp}"
|
IsVisible="{Binding ShowTotp}"
|
||||||
AutomationId="ItemRow">
|
AutomationId="ItemRow">
|
||||||
@@ -579,6 +579,64 @@
|
|||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" IsVisible="{Binding ShowIdentityAddress}" />
|
<BoxView StyleClass="box-row-separator" IsVisible="{Binding ShowIdentityAddress}" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
<StackLayout
|
||||||
|
IsVisible="{Binding IsFido2Key}"
|
||||||
|
Spacing="0"
|
||||||
|
Padding="0"
|
||||||
|
Margin="0,10,0,0">
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n Username}"
|
||||||
|
StyleClass="box-label" />
|
||||||
|
<Label
|
||||||
|
Text="{Binding Cipher.Fido2Key.UserName, Mode=OneWay}"
|
||||||
|
StyleClass="box-value" />
|
||||||
|
<BoxView StyleClass="box-row-separator" Margin="0,10,0,0" />
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n Passkey}"
|
||||||
|
StyleClass="box-label"
|
||||||
|
Margin="0,10,0,0" />
|
||||||
|
<Label
|
||||||
|
Text="{Binding CreationDate, Mode=OneWay}"
|
||||||
|
StyleClass="box-value" />
|
||||||
|
<BoxView StyleClass="box-row-separator" Margin="0,10,0,0" />
|
||||||
|
<Grid
|
||||||
|
StyleClass="box-row"
|
||||||
|
RowDefinitions="Auto,*,Auto"
|
||||||
|
ColumnDefinitions="*,Auto,Auto">
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n Application}"
|
||||||
|
StyleClass="box-label" />
|
||||||
|
<Label
|
||||||
|
Grid.Row="1"
|
||||||
|
Text="{Binding Cipher.Fido2Key.LaunchUri, Mode=OneWay}"
|
||||||
|
StyleClass="box-value" />
|
||||||
|
<controls:IconButton
|
||||||
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
|
Text="{Binding Source={x:Static core:BitwardenIcons.ShareSquare}}"
|
||||||
|
Command="{Binding LaunchUriCommand}"
|
||||||
|
CommandParameter="{Binding Cipher.Fido2Key}"
|
||||||
|
Grid.Column="1"
|
||||||
|
Grid.RowSpan="2"
|
||||||
|
VerticalOptions="End"
|
||||||
|
IsVisible="{Binding Cipher.Fido2Key.CanLaunch, Mode=OneWay}"
|
||||||
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
|
AutomationProperties.Name="{u:I18n Launch}" />
|
||||||
|
<controls:IconButton
|
||||||
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
|
Command="{Binding CopyCommand}"
|
||||||
|
CommandParameter="Fido2KeyApplication"
|
||||||
|
Grid.Column="2"
|
||||||
|
Grid.RowSpan="2"
|
||||||
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
|
AutomationProperties.Name="{u:I18n CopyApplication}" />
|
||||||
|
<BoxView
|
||||||
|
StyleClass="box-row-separator"
|
||||||
|
Margin="0,3,0,0"
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.ColumnSpan="3" />
|
||||||
|
</Grid>
|
||||||
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box" IsVisible="{Binding ShowUris}">
|
<StackLayout StyleClass="box" IsVisible="{Binding ShowUris}">
|
||||||
<StackLayout StyleClass="box-row-header">
|
<StackLayout StyleClass="box-row-header">
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ namespace Bit.App.Pages
|
|||||||
public bool IsIdentity => Cipher?.Type == Core.Enums.CipherType.Identity;
|
public bool IsIdentity => Cipher?.Type == Core.Enums.CipherType.Identity;
|
||||||
public bool IsCard => Cipher?.Type == Core.Enums.CipherType.Card;
|
public bool IsCard => Cipher?.Type == Core.Enums.CipherType.Card;
|
||||||
public bool IsSecureNote => Cipher?.Type == Core.Enums.CipherType.SecureNote;
|
public bool IsSecureNote => Cipher?.Type == Core.Enums.CipherType.SecureNote;
|
||||||
|
public bool IsFido2Key => Cipher?.Type == Core.Enums.CipherType.Fido2Key;
|
||||||
public FormattedString ColoredPassword => GeneratedValueFormatter.Format(Cipher.Login.Password);
|
public FormattedString ColoredPassword => GeneratedValueFormatter.Format(Cipher.Login.Password);
|
||||||
public FormattedString UpdatedText
|
public FormattedString UpdatedText
|
||||||
{
|
{
|
||||||
@@ -648,6 +649,11 @@ namespace Bit.App.Pages
|
|||||||
text = Cipher.Card.Code;
|
text = Cipher.Card.Code;
|
||||||
name = AppResources.SecurityCode;
|
name = AppResources.SecurityCode;
|
||||||
}
|
}
|
||||||
|
else if (id == "Fido2KeyApplication")
|
||||||
|
{
|
||||||
|
text = Cipher.Fido2Key?.LaunchUri;
|
||||||
|
name = AppResources.Application;
|
||||||
|
}
|
||||||
|
|
||||||
if (text != null)
|
if (text != null)
|
||||||
{
|
{
|
||||||
@@ -692,22 +698,28 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public async Task<bool> PromptPasswordAsync()
|
public async Task<bool> PromptPasswordAsync()
|
||||||
{
|
{
|
||||||
if (_passwordReprompted)
|
if (Cipher.Reprompt == CipherRepromptType.None || _passwordReprompted)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _passwordReprompted = await _passwordRepromptService.PromptAndCheckPasswordIfNeededAsync(Cipher.Reprompt);
|
return _passwordReprompted = await _passwordRepromptService.ShowPasswordPromptAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<bool> CanCloneAsync()
|
private async Task<bool> CanCloneAsync()
|
||||||
{
|
{
|
||||||
if (!Cipher.HasFido2Key)
|
if (Cipher.Type == CipherType.Fido2Key)
|
||||||
{
|
{
|
||||||
return true;
|
await _platformUtilsService.ShowDialogAsync(AppResources.PasskeyWillNotBeCopied);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Cipher.Type == CipherType.Login && Cipher.Login?.Fido2Key != null)
|
||||||
|
{
|
||||||
return await _platformUtilsService.ShowDialogAsync(AppResources.ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem, AppResources.PasskeyWillNotBeCopied, AppResources.Yes, AppResources.No);
|
return await _platformUtilsService.ShowDialogAsync(AppResources.ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem, AppResources.PasskeyWillNotBeCopied, AppResources.Yes, AppResources.No);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
if (_appOptions?.OtpData != null)
|
if (_appOptions?.OtpData != null)
|
||||||
{
|
{
|
||||||
if (!await _passwordRepromptService.PromptAndCheckPasswordIfNeededAsync(cipher.Reprompt))
|
if (cipher.Reprompt != CipherRepromptType.None && !await _passwordRepromptService.ShowPasswordPromptAsync())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -208,7 +208,7 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
else if (selection == AppResources.Autofill || selection == AppResources.AutofillAndSave)
|
else if (selection == AppResources.Autofill || selection == AppResources.AutofillAndSave)
|
||||||
{
|
{
|
||||||
if (!await _passwordRepromptService.PromptAndCheckPasswordIfNeededAsync(cipher.Reprompt))
|
if (cipher.Reprompt != CipherRepromptType.None && !await _passwordRepromptService.ShowPasswordPromptAsync())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,9 @@ namespace Bit.App.Pages
|
|||||||
case CipherType.Identity:
|
case CipherType.Identity:
|
||||||
_name = AppResources.TypeIdentity;
|
_name = AppResources.TypeIdentity;
|
||||||
break;
|
break;
|
||||||
|
case CipherType.Fido2Key:
|
||||||
|
_name = AppResources.Passkey;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -108,6 +111,9 @@ namespace Bit.App.Pages
|
|||||||
case CipherType.Identity:
|
case CipherType.Identity:
|
||||||
_icon = BitwardenIcons.IdCard;
|
_icon = BitwardenIcons.IdCard;
|
||||||
break;
|
break;
|
||||||
|
case CipherType.Fido2Key:
|
||||||
|
_icon = BitwardenIcons.Passkey;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
_icon = BitwardenIcons.Globe;
|
_icon = BitwardenIcons.Globe;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -569,7 +569,7 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
Filter = c => !c.IsDeleted
|
Filter = c => !c.IsDeleted
|
||||||
&&
|
&&
|
||||||
Type.Value == c.Type;
|
Type.Value.IsEqualToOrCanSignIn(c.Type);
|
||||||
}
|
}
|
||||||
else if (FolderId != null)
|
else if (FolderId != null)
|
||||||
{
|
{
|
||||||
@@ -636,7 +636,9 @@ namespace Bit.App.Pages
|
|||||||
NoFolderCiphers.Add(c);
|
NoFolderCiphers.Add(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
_typeCounts[c.Type] = _typeCounts.TryGetValue(c.Type, out var currentTypeCount)
|
// Fido2Key ciphers should be counted as Login ciphers
|
||||||
|
var countType = c.Type == CipherType.Fido2Key ? CipherType.Login : c.Type;
|
||||||
|
_typeCounts[countType] = _typeCounts.TryGetValue(countType, out var currentTypeCount)
|
||||||
? currentTypeCount + 1
|
? currentTypeCount + 1
|
||||||
: 1;
|
: 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
var cipher = listItem.Cipher;
|
var cipher = listItem.Cipher;
|
||||||
|
|
||||||
if (!await _passwordRepromptService.PromptAndCheckPasswordIfNeededAsync(cipher.Reprompt))
|
if (cipher.Reprompt != CipherRepromptType.None && !await _passwordRepromptService.ShowPasswordPromptAsync())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
202
src/App/Resources/AppResources.Designer.cs
generated
202
src/App/Resources/AppResources.Designer.cs
generated
@@ -256,15 +256,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Account logged out..
|
|
||||||
/// </summary>
|
|
||||||
public static string AccountLoggedOutBiometricExceeded {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("AccountLoggedOutBiometricExceeded", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Account logged out successfully.
|
/// Looks up a localized string similar to Account logged out successfully.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -427,24 +418,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to addy.io.
|
|
||||||
/// </summary>
|
|
||||||
public static string AddyIo {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("AddyIo", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Admin approval requested.
|
|
||||||
/// </summary>
|
|
||||||
public static string AdminApprovalRequested {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("AdminApprovalRequested", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to All.
|
/// Looks up a localized string similar to All.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -526,6 +499,15 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to AnonAddy.
|
||||||
|
/// </summary>
|
||||||
|
public static string AnonAddy {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AnonAddy", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to A notification has been sent to your device..
|
/// Looks up a localized string similar to A notification has been sent to your device..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -589,24 +571,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Approve with master password.
|
|
||||||
/// </summary>
|
|
||||||
public static string ApproveWithMasterPassword {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("ApproveWithMasterPassword", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Approve with my other device.
|
|
||||||
/// </summary>
|
|
||||||
public static string ApproveWithMyOtherDevice {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("ApproveWithMyOtherDevice", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to April.
|
/// Looks up a localized string similar to April.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1750,15 +1714,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Created {0}, {1}.
|
|
||||||
/// </summary>
|
|
||||||
public static string CreatedXY {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("CreatedXY", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Creating account....
|
/// Looks up a localized string similar to Creating account....
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -2371,15 +2326,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Encryption key migration required. Please login through the web vault to update your encryption key..
|
|
||||||
/// </summary>
|
|
||||||
public static string EncryptionKeyMigrationRequiredDescriptionLong {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("EncryptionKeyMigrationRequiredDescriptionLong", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Enter your account email address to receive your master password hint..
|
/// Looks up a localized string similar to Enter your account email address to receive your master password hint..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -3748,15 +3694,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Logged in!.
|
|
||||||
/// </summary>
|
|
||||||
public static string LoggedIn {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("LoggedIn", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Logged in as {0} on {1}..
|
/// Looks up a localized string similar to Logged in as {0} on {1}..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -3775,15 +3712,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Logging in as {0}.
|
|
||||||
/// </summary>
|
|
||||||
public static string LoggingInAsX {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("LoggingInAsX", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Logging in as {0} on {1}.
|
/// Looks up a localized string similar to Logging in as {0} on {1}.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -3793,15 +3721,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Logging in on.
|
|
||||||
/// </summary>
|
|
||||||
public static string LoggingInOn {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("LoggingInOn", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Log In.
|
/// Looks up a localized string similar to Log In.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -3820,15 +3739,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Login approved.
|
|
||||||
/// </summary>
|
|
||||||
public static string LoginApproved {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("LoginApproved", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Login attempt by {0} on {1}.
|
/// Looks up a localized string similar to Login attempt by {0} on {1}.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -3966,24 +3876,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Log in with device.
|
|
||||||
/// </summary>
|
|
||||||
public static string LogInWithDevice {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("LogInWithDevice", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Log in with device must be set up in the settings of the Bitwarden app. Need another option?.
|
|
||||||
/// </summary>
|
|
||||||
public static string LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Log in with master password.
|
/// Looks up a localized string similar to Log in with master password.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -5444,15 +5336,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Remember this device.
|
|
||||||
/// </summary>
|
|
||||||
public static string RememberThisDevice {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("RememberThisDevice", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Remove.
|
/// Looks up a localized string similar to Remove.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -5525,15 +5408,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Request admin approval.
|
|
||||||
/// </summary>
|
|
||||||
public static string RequestAdminApproval {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("RequestAdminApproval", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Request one-time password.
|
/// Looks up a localized string similar to Request one-time password.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -6395,10 +6269,10 @@ namespace Bit.App.Resources {
|
|||||||
public static string ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem {
|
public static string ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem {
|
||||||
get {
|
get {
|
||||||
return ResourceManager.GetString("ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem", resourceCulture);
|
return ResourceManager.GetString("ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem", resourceCulture);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to There are no blocked URIs.
|
/// Looks up a localized string similar to There are no blocked URIs.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string ThereAreNoBlockedURIs {
|
public static string ThereAreNoBlockedURIs {
|
||||||
@@ -6525,15 +6399,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Too many attempts.
|
|
||||||
/// </summary>
|
|
||||||
public static string TooManyAttempts {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("TooManyAttempts", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to TOTP.
|
/// Looks up a localized string similar to TOTP.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -6570,15 +6435,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Trouble logging in?.
|
|
||||||
/// </summary>
|
|
||||||
public static string TroubleLoggingIn {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("TroubleLoggingIn", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Try again.
|
/// Looks up a localized string similar to Try again.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -6588,15 +6444,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Turn off using a public device.
|
|
||||||
/// </summary>
|
|
||||||
public static string TurnOffUsingPublicDevice {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("TurnOffUsingPublicDevice", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to 20 seconds.
|
/// Looks up a localized string similar to 20 seconds.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -6787,7 +6634,7 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve..
|
/// Looks up a localized string similar to Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve {
|
public static string UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve {
|
||||||
get {
|
get {
|
||||||
@@ -7128,15 +6975,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Vault timeout action changed to log out.
|
|
||||||
/// </summary>
|
|
||||||
public static string VaultTimeoutActionChangedToLogOut {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("VaultTimeoutActionChangedToLogOut", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Your organization policies have set your vault timeout action to {0}..
|
/// Looks up a localized string similar to Your organization policies have set your vault timeout action to {0}..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -7515,24 +7353,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Your request has been sent to your admin..
|
|
||||||
/// </summary>
|
|
||||||
public static string YourRequestHasBeenSentToYourAdmin {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("YourRequestHasBeenSentToYourAdmin", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to You will be notified once approved. .
|
|
||||||
/// </summary>
|
|
||||||
public static string YouWillBeNotifiedOnceApproved {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("YouWillBeNotifiedOnceApproved", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to To continue, hold your YubiKey NEO against the back of the device or insert your YubiKey into your device's USB port, then touch its button..
|
/// Looks up a localized string similar to To continue, hold your YubiKey NEO against the back of the device or insert your YubiKey into your device's USB port, then touch its button..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Skandering gebeur outomaties.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>U kan nie hierdie funksie gebruik tot u u enkripsiesleutel bygewerk het nie.</value>
|
<value>U kan nie hierdie funksie gebruik tot u u enkripsiesleutel bygewerk het nie.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Leer meer</value>
|
<value>Leer meer</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ kies u Voeg TOTP toe om die sleutel veilig te bewaar</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Diens</value>
|
<value>Diens</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@ Wil u na die rekening omskakel?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Huidige hoofwagwoord</value>
|
<value>Huidige hoofwagwoord</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2680,7 +2659,7 @@ Wil u na die rekening omskakel?</value>
|
|||||||
<value>Hulpteks vir vra weer vir hoofwagwoord</value>
|
<value>Hulpteks vir vra weer vir hoofwagwoord</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Ontgrendeling kan misluk as daar onvoldoende geheue is. Verminder u KDF-geheue-instellings om dit op te los.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Ongeldige API-sleutel</value>
|
<value>Ongeldige API-sleutel</value>
|
||||||
@@ -2688,24 +2667,6 @@ Wil u na die rekening omskakel?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Ongeldige API-teken</value>
|
<value>Ongeldige API-teken</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@ Wil u na die rekening omskakel?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -125,14 +125,14 @@
|
|||||||
<comment>Add/create a new entity (verb).</comment>
|
<comment>Add/create a new entity (verb).</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddFolder" xml:space="preserve">
|
<data name="AddFolder" xml:space="preserve">
|
||||||
<value>إضافة مجلّد</value>
|
<value>مجلد مضاف</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddItem" xml:space="preserve">
|
<data name="AddItem" xml:space="preserve">
|
||||||
<value>إضافة عنصر</value>
|
<value>تمت إضافة العنصر</value>
|
||||||
<comment>The title for the add item page.</comment>
|
<comment>The title for the add item page.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnErrorHasOccurred" xml:space="preserve">
|
<data name="AnErrorHasOccurred" xml:space="preserve">
|
||||||
<value>لقد حدث خطأ.</value>
|
<value>كان هناك خطأ.</value>
|
||||||
<comment>Alert title when something goes wrong.</comment>
|
<comment>Alert title when something goes wrong.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Back" xml:space="preserve">
|
<data name="Back" xml:space="preserve">
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
<comment>Navigate back to the previous screen.</comment>
|
<comment>Navigate back to the previous screen.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Bitwarden" xml:space="preserve">
|
<data name="Bitwarden" xml:space="preserve">
|
||||||
<value>Bitwarden</value>
|
<value>bitwarden</value>
|
||||||
<comment>App name. Shouldn't ever change.</comment>
|
<comment>App name. Shouldn't ever change.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Cancel" xml:space="preserve">
|
<data name="Cancel" xml:space="preserve">
|
||||||
@@ -156,11 +156,11 @@
|
|||||||
<comment>The button text that allows a user to copy the login's password to their clipboard.</comment>
|
<comment>The button text that allows a user to copy the login's password to their clipboard.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyUsername" xml:space="preserve">
|
<data name="CopyUsername" xml:space="preserve">
|
||||||
<value>انسخ اسم المستخدم</value>
|
<value>المصادقة باستخدام FIDO2 WebAuthn، يمكنك المصادقة باستخدام مفتاح أمان خارجي.</value>
|
||||||
<comment>The button text that allows a user to copy the login's username to their clipboard.</comment>
|
<comment>The button text that allows a user to copy the login's username to their clipboard.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Credits" xml:space="preserve">
|
<data name="Credits" xml:space="preserve">
|
||||||
<value>شكر وتقدير</value>
|
<value>شكر</value>
|
||||||
<comment>Title for page that we use to give credit to resources that we use.</comment>
|
<comment>Title for page that we use to give credit to resources that we use.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Delete" xml:space="preserve">
|
<data name="Delete" xml:space="preserve">
|
||||||
@@ -168,42 +168,42 @@
|
|||||||
<comment>Delete an entity (verb).</comment>
|
<comment>Delete an entity (verb).</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Deleting" xml:space="preserve">
|
<data name="Deleting" xml:space="preserve">
|
||||||
<value>جارِ الحذف...</value>
|
<value>حذف ...</value>
|
||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DoYouReallyWantToDelete" xml:space="preserve">
|
<data name="DoYouReallyWantToDelete" xml:space="preserve">
|
||||||
<value>هل تريد حقا أن تحذف؟ هذا لا يمكن التراجع عنها.</value>
|
<value>هل أنت متأكد من أنك تريد الحذف؟ لا يمكن إلغاؤه</value>
|
||||||
<comment>Confirmation alert message when deleteing something.</comment>
|
<comment>Confirmation alert message when deleteing something.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Edit" xml:space="preserve">
|
<data name="Edit" xml:space="preserve">
|
||||||
<value>تعديل</value>
|
<value>تعديل</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditFolder" xml:space="preserve">
|
<data name="EditFolder" xml:space="preserve">
|
||||||
<value>تحرير المجلد</value>
|
<value>تعديل مجلد</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Email" xml:space="preserve">
|
<data name="Email" xml:space="preserve">
|
||||||
<value>بريد الكتروني</value>
|
<value>بريد الكتروني</value>
|
||||||
<comment>Short label for an email address.</comment>
|
<comment>Short label for an email address.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailAddress" xml:space="preserve">
|
<data name="EmailAddress" xml:space="preserve">
|
||||||
<value>عنوان البريد الإلكتروني</value>
|
<value>عنوان بريد الكتروني</value>
|
||||||
<comment>Full label for a email address.</comment>
|
<comment>Full label for a email address.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailUs" xml:space="preserve">
|
<data name="EmailUs" xml:space="preserve">
|
||||||
<value>راسلنا عبر البريد الإلكتروني</value>
|
<value>اكتب إلينا</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailUsDescription" xml:space="preserve">
|
<data name="EmailUsDescription" xml:space="preserve">
|
||||||
<value>أرسل لنا رسالة مباشرة للحصول على المساعدة أو ترك ملاحظات.</value>
|
<value>اتصل بنا مباشرة للحصول على المساعدة أو التعليق.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterPIN" xml:space="preserve">
|
<data name="EnterPIN" xml:space="preserve">
|
||||||
<value>أدخل رَقم تعريفك الشخصي.</value>
|
<value>أدخل رقم التعريف الشخصي الخاص بك.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Favorites" xml:space="preserve">
|
<data name="Favorites" xml:space="preserve">
|
||||||
<value>المفضلات</value>
|
<value>المفضلات</value>
|
||||||
<comment>Title for your favorite items in the vault.</comment>
|
<comment>Title for your favorite items in the vault.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FileBugReport" xml:space="preserve">
|
<data name="FileBugReport" xml:space="preserve">
|
||||||
<value>إرسال تقرير عن خطأ</value>
|
<value>إرسال تقرير خطأ</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FileBugReportDescription" xml:space="preserve">
|
<data name="FileBugReportDescription" xml:space="preserve">
|
||||||
<value>افتح تذكرة في مستودع Github لدينا.</value>
|
<value>افتح تذكرة في مستودع Github لدينا.</value>
|
||||||
@@ -212,42 +212,42 @@
|
|||||||
<value>استخدم بصمة إصبعك للتعريف بنفسك.</value>
|
<value>استخدم بصمة إصبعك للتعريف بنفسك.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Folder" xml:space="preserve">
|
<data name="Folder" xml:space="preserve">
|
||||||
<value>المجلد</value>
|
<value>مجلد</value>
|
||||||
<comment>Label for a folder.</comment>
|
<comment>Label for a folder.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FolderCreated" xml:space="preserve">
|
<data name="FolderCreated" xml:space="preserve">
|
||||||
<value>نشأ مجلد جديد.</value>
|
<value>مجلد جديد أنشئ</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FolderDeleted" xml:space="preserve">
|
<data name="FolderDeleted" xml:space="preserve">
|
||||||
<value>حذفت المجلد.</value>
|
<value>مجلد محذوف</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FolderNone" xml:space="preserve">
|
<data name="FolderNone" xml:space="preserve">
|
||||||
<value>لا مجلد</value>
|
<value>لا مجلد</value>
|
||||||
<comment>Items that have no folder specified go in this special "catch-all" folder.</comment>
|
<comment>Items that have no folder specified go in this special "catch-all" folder.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Folders" xml:space="preserve">
|
<data name="Folders" xml:space="preserve">
|
||||||
<value>المجلدات</value>
|
<value>مجلدات</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FolderUpdated" xml:space="preserve">
|
<data name="FolderUpdated" xml:space="preserve">
|
||||||
<value>حُفظ المجلد</value>
|
<value>مجلد محدّث</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GoToWebsite" xml:space="preserve">
|
<data name="GoToWebsite" xml:space="preserve">
|
||||||
<value>الذهاب إلى الموقع الالكتروني</value>
|
<value>زر الموقع الالكتروني</value>
|
||||||
<comment>The button text that allows user to launch the website to their web browser.</comment>
|
<comment>The button text that allows user to launch the website to their web browser.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="HelpAndFeedback" xml:space="preserve">
|
<data name="HelpAndFeedback" xml:space="preserve">
|
||||||
<value>المساعدة و الملاحظات</value>
|
<value>مساعدة ورجوع</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Hide" xml:space="preserve">
|
<data name="Hide" xml:space="preserve">
|
||||||
<value>إخفاء</value>
|
<value>إخفاء</value>
|
||||||
<comment>Hide a secret value that is currently shown (password).</comment>
|
<comment>Hide a secret value that is currently shown (password).</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="InternetConnectionRequiredMessage" xml:space="preserve">
|
<data name="InternetConnectionRequiredMessage" xml:space="preserve">
|
||||||
<value>عليك الاتصال بالإنترنت قبل المواصلة.</value>
|
<value>عليك الاتصال بالانترنت قبل المواصلة</value>
|
||||||
<comment>Description message for the alert when internet connection is required to continue.</comment>
|
<comment>Description message for the alert when internet connection is required to continue.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="InternetConnectionRequiredTitle" xml:space="preserve">
|
<data name="InternetConnectionRequiredTitle" xml:space="preserve">
|
||||||
<value>الاتصال بالإنترنت مطلوب</value>
|
<value>اتصال بالانترنت مطلوب</value>
|
||||||
<comment>Title for the alert when internet connection is required to continue.</comment>
|
<comment>Title for the alert when internet connection is required to continue.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidMasterPassword" xml:space="preserve">
|
<data name="InvalidMasterPassword" xml:space="preserve">
|
||||||
@@ -261,11 +261,11 @@
|
|||||||
<comment>The button text that allows user to launch the website to their web browser.</comment>
|
<comment>The button text that allows user to launch the website to their web browser.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogIn" xml:space="preserve">
|
<data name="LogIn" xml:space="preserve">
|
||||||
<value>تسجيل الدخول</value>
|
<value>تعريف</value>
|
||||||
<comment>The login button text (verb).</comment>
|
<comment>The login button text (verb).</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInNoun" xml:space="preserve">
|
<data name="LogInNoun" xml:space="preserve">
|
||||||
<value>تسجيل الدخول</value>
|
<value>اسم المستخدم</value>
|
||||||
<comment>Title for login page. (noun)</comment>
|
<comment>Title for login page. (noun)</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogOut" xml:space="preserve">
|
<data name="LogOut" xml:space="preserve">
|
||||||
@@ -330,11 +330,11 @@
|
|||||||
<value>نقل</value>
|
<value>نقل</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Saving" xml:space="preserve">
|
<data name="Saving" xml:space="preserve">
|
||||||
<value>جارِ حفظ...</value>
|
<value>حفظ...</value>
|
||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings" xml:space="preserve">
|
<data name="Settings" xml:space="preserve">
|
||||||
<value>الإعدادات</value>
|
<value>إعدادات</value>
|
||||||
<comment>The title for the settings page.</comment>
|
<comment>The title for the settings page.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Show" xml:space="preserve">
|
<data name="Show" xml:space="preserve">
|
||||||
@@ -360,7 +360,7 @@
|
|||||||
<comment>The title for the tools page.</comment>
|
<comment>The title for the tools page.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="URI" xml:space="preserve">
|
<data name="URI" xml:space="preserve">
|
||||||
<value>عنوان الـ URI</value>
|
<value>الرابط</value>
|
||||||
<comment>Label for a uri/url.</comment>
|
<comment>Label for a uri/url.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="UseFingerprintToUnlock" xml:space="preserve">
|
<data name="UseFingerprintToUnlock" xml:space="preserve">
|
||||||
@@ -464,7 +464,7 @@
|
|||||||
<value>إنشاء حساب</value>
|
<value>إنشاء حساب</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatingAccount" xml:space="preserve">
|
<data name="CreatingAccount" xml:space="preserve">
|
||||||
<value>جارِ إنشاء الحساب...</value>
|
<value>إنشاء الحساب...</value>
|
||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditItem" xml:space="preserve">
|
<data name="EditItem" xml:space="preserve">
|
||||||
@@ -493,16 +493,16 @@
|
|||||||
<value>احصل على إمكانية الوصول الفوري إلى كلمات المرور الخاصة بك!</value>
|
<value>احصل على إمكانية الوصول الفوري إلى كلمات المرور الخاصة بك!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionReady" xml:space="preserve">
|
<data name="ExtensionReady" xml:space="preserve">
|
||||||
<value>أنت مستعد لتسجيل الدخول!</value>
|
<value>أنت مستعد للتعريف بنفسك!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionSetup" xml:space="preserve">
|
<data name="ExtensionSetup" xml:space="preserve">
|
||||||
<value>يمكن الآن الوصول إلى المعرفات الخاصة بك بسهولة من Safari وChrome والتطبيقات الأخرى المدعومة.</value>
|
<value>يمكن الآن الوصول إلى المعرفات الخاصة بك بسهولة من Safari وChrome والتطبيقات الأخرى المدعومة.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionSetup2" xml:space="preserve">
|
<data name="ExtensionSetup2" xml:space="preserve">
|
||||||
<value>في Safari و Chrome، ابحث عن bitwarden باستخدام أيقونة المشاركة (المساعدة: انتقل إلى اليمين في السطر السفلي من القائمة).</value>
|
<value>في Safari و Chrome، ابحث عن bitwarden باستخدام رمز المشاركة (المساعدة: انتقل إلى اليمين في السطر السفلي من القائمة).</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionTapIcon" xml:space="preserve">
|
<data name="ExtensionTapIcon" xml:space="preserve">
|
||||||
<value>اضغط على أيقونة Bitwarden في القائمة لإطلاق الملحق.</value>
|
<value>اضغط على رمز bitwarden في القائمة لإطلاق الملحق.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionTurnOn" xml:space="preserve">
|
<data name="ExtensionTurnOn" xml:space="preserve">
|
||||||
<value>لتنشيط bitwarden على Safari والتطبيقات الأخرى، اضغط على رمز "المزيد" على السطر السفلي من القائمة.</value>
|
<value>لتنشيط bitwarden على Safari والتطبيقات الأخرى، اضغط على رمز "المزيد" على السطر السفلي من القائمة.</value>
|
||||||
@@ -514,10 +514,10 @@
|
|||||||
<value>البصمة</value>
|
<value>البصمة</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GeneratePassword" xml:space="preserve">
|
<data name="GeneratePassword" xml:space="preserve">
|
||||||
<value>توليد كلمة مرور</value>
|
<value>إنشاء كلمة مرور</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GetPasswordHint" xml:space="preserve">
|
<data name="GetPasswordHint" xml:space="preserve">
|
||||||
<value>احصل على تلميح لكلمة مرورك الرئيسية</value>
|
<value>الحصول على دليل كلمة المرور الرئيسية</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ImportItems" xml:space="preserve">
|
<data name="ImportItems" xml:space="preserve">
|
||||||
<value>استيراد العناصر</value>
|
<value>استيراد العناصر</value>
|
||||||
@@ -532,7 +532,7 @@
|
|||||||
<value>آخر مزامنة:</value>
|
<value>آخر مزامنة:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Length" xml:space="preserve">
|
<data name="Length" xml:space="preserve">
|
||||||
<value>الطول</value>
|
<value>طول</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lock" xml:space="preserve">
|
<data name="Lock" xml:space="preserve">
|
||||||
<value>قفل</value>
|
<value>قفل</value>
|
||||||
@@ -562,11 +562,11 @@
|
|||||||
<value>سيؤدي تسجيل الخروج إلى إزالة جميع الوصول إلى الخزنة الخاصة بك ويتطلب المصادقة عبر الإنترنت بعد انتهاء المهلة. هل أنت متأكد من أنك تريد استخدام هذا الإعداد؟</value>
|
<value>سيؤدي تسجيل الخروج إلى إزالة جميع الوصول إلى الخزنة الخاصة بك ويتطلب المصادقة عبر الإنترنت بعد انتهاء المهلة. هل أنت متأكد من أنك تريد استخدام هذا الإعداد؟</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingIn" xml:space="preserve">
|
<data name="LoggingIn" xml:space="preserve">
|
||||||
<value>جارِ تسجيل الدخول...</value>
|
<value>تعريف...</value>
|
||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginOrCreateNewAccount" xml:space="preserve">
|
<data name="LoginOrCreateNewAccount" xml:space="preserve">
|
||||||
<value>قم بتسجيل الدخول أو إنشاء حساب جديد للوصول إلى خزنتك الآمنة.</value>
|
<value>قم بالتسجيل أو إنشاء حساب جديد للوصول إلى خزنتك الآمنة.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Manage" xml:space="preserve">
|
<data name="Manage" xml:space="preserve">
|
||||||
<value>إدارة</value>
|
<value>إدارة</value>
|
||||||
@@ -598,7 +598,7 @@
|
|||||||
<value>المزيد من الإعدادات</value>
|
<value>المزيد من الإعدادات</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MustLogInMainApp" xml:space="preserve">
|
<data name="MustLogInMainApp" xml:space="preserve">
|
||||||
<value>يجب عليك تسجيل الدخول إلى تطبيق Bitwarden الرئيسي قبل استخدام الامتداد.</value>
|
<value>تحتاج إلى التعريف بنفسك على التطبيق bitwarden الرئيسي قبل استخدام الامتداد.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Never" xml:space="preserve">
|
<data name="Never" xml:space="preserve">
|
||||||
<value>أبداً</value>
|
<value>أبداً</value>
|
||||||
@@ -623,25 +623,25 @@
|
|||||||
<comment>Confirmation, like "Ok, I understand it"</comment>
|
<comment>Confirmation, like "Ok, I understand it"</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptionDefaults" xml:space="preserve">
|
<data name="OptionDefaults" xml:space="preserve">
|
||||||
<value>يتم تعيين الخيارات الافتراضية من أداة إنشاء كلمة المرور في تطبيق Bitwarden الرئيسي.</value>
|
<value>يتم تعيين الخيارات الافتراضية من أداة إنشاء كلمة المرور في تطبيق bitwarden الرئيسي.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Options" xml:space="preserve">
|
<data name="Options" xml:space="preserve">
|
||||||
<value>الخيارات</value>
|
<value>خيارات</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Other" xml:space="preserve">
|
<data name="Other" xml:space="preserve">
|
||||||
<value>الأخرى</value>
|
<value>الأخرى</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordGenerated" xml:space="preserve">
|
<data name="PasswordGenerated" xml:space="preserve">
|
||||||
<value>كلمة المرور المولدة</value>
|
<value>كلمة المرور التي تم إنشاؤها.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordGenerator" xml:space="preserve">
|
<data name="PasswordGenerator" xml:space="preserve">
|
||||||
<value>مولد كلمة المرور</value>
|
<value>مولد كلمة المرور</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordHint" xml:space="preserve">
|
<data name="PasswordHint" xml:space="preserve">
|
||||||
<value>تلميح كلمة المرور</value>
|
<value>فهرس كلمة المرور</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordHintAlert" xml:space="preserve">
|
<data name="PasswordHintAlert" xml:space="preserve">
|
||||||
<value>لقد أرسلنا لك رسالة بريد إلكتروني تحتوي على تلميح لكلمة مرورك الرئيسية.</value>
|
<value>أرسلنا بريدًا إلكترونيًا مع دليل كلمة المرور الخاص بك.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordOverrideAlert" xml:space="preserve">
|
<data name="PasswordOverrideAlert" xml:space="preserve">
|
||||||
<value>هل أنت متأكد من أنك تريد سحق كلمة المرور الموجودة؟</value>
|
<value>هل أنت متأكد من أنك تريد سحق كلمة المرور الموجودة؟</value>
|
||||||
@@ -657,7 +657,7 @@
|
|||||||
<value>شكرا على مساعدتنا من خلال كتابة تعليق إيجابي!</value>
|
<value>شكرا على مساعدتنا من خلال كتابة تعليق إيجابي!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RegeneratePassword" xml:space="preserve">
|
<data name="RegeneratePassword" xml:space="preserve">
|
||||||
<value>إعادة توليد كلمة المرور</value>
|
<value>إعادة إنشاء كلمة مرور</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RetypeMasterPassword" xml:space="preserve">
|
<data name="RetypeMasterPassword" xml:space="preserve">
|
||||||
<value>إعادة إدخال كلمة المرور الرئيسية</value>
|
<value>إعادة إدخال كلمة المرور الرئيسية</value>
|
||||||
@@ -684,11 +684,11 @@
|
|||||||
<value>تم تحديث العنصر</value>
|
<value>تم تحديث العنصر</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Submitting" xml:space="preserve">
|
<data name="Submitting" xml:space="preserve">
|
||||||
<value>جارِ الإرسال...</value>
|
<value>تقديم...</value>
|
||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Syncing" xml:space="preserve">
|
<data name="Syncing" xml:space="preserve">
|
||||||
<value>جارِ المزامنة...</value>
|
<value>المزامنة...</value>
|
||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SyncingComplete" xml:space="preserve">
|
<data name="SyncingComplete" xml:space="preserve">
|
||||||
@@ -701,14 +701,14 @@
|
|||||||
<value>مزامنة الخزنة الآن</value>
|
<value>مزامنة الخزنة الآن</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TouchID" xml:space="preserve">
|
<data name="TouchID" xml:space="preserve">
|
||||||
<value>Touch ID معرف اتصال البصمة</value>
|
<value>Touch ID معرف اتصال</value>
|
||||||
<comment>What Apple calls their fingerprint reader.</comment>
|
<comment>What Apple calls their fingerprint reader.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="TwoStepLogin" xml:space="preserve">
|
<data name="TwoStepLogin" xml:space="preserve">
|
||||||
<value>تحديد المصادقة الثنائية</value>
|
<value>تحديد المصادقة الثنائية</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TwoStepLoginConfirmation" xml:space="preserve">
|
<data name="TwoStepLoginConfirmation" xml:space="preserve">
|
||||||
<value>تجعل المصادقة الثنائية المعامل حسابك أكثر أمانًا من خلال طلب إدخال رمز أمان مع كل معرف من تطبيق المصادقة. يمكن تنشيط تعريف العامل المزدوج في خزنة الويب في bitwarden.com هل تريد زيارة الموقع الآن؟</value>
|
<value>تجعل المصادقة الثنائية المعامل حسابك أكثر أمانًا من خلال طلب إدخال رمز أمان مع كل معرف من تطبيق المصادقة. يمكن تنشيط تعريف العامل المزدوج في خزنة الويب في bitwarden.com. هل تريد زيارة الموقع الآن؟</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockWith" xml:space="preserve">
|
<data name="UnlockWith" xml:space="preserve">
|
||||||
<value>فتح مع {0}</value>
|
<value>فتح مع {0}</value>
|
||||||
@@ -879,7 +879,7 @@
|
|||||||
<value>لا يمكن لجهازك فتح هذا النوع من الملفات.</value>
|
<value>لا يمكن لجهازك فتح هذا النوع من الملفات.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Downloading" xml:space="preserve">
|
<data name="Downloading" xml:space="preserve">
|
||||||
<value>جارِ التحميل...</value>
|
<value>تحميل...</value>
|
||||||
<comment>Message shown when downloading a file</comment>
|
<comment>Message shown when downloading a file</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AttachmentLargeWarning" xml:space="preserve">
|
<data name="AttachmentLargeWarning" xml:space="preserve">
|
||||||
@@ -954,9 +954,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>لا يمكنك استخدام هذه الميزة حتى تقوم بتحديث مفتاح التشفير الخاص بك.</value>
|
<value>لا يمكنك استخدام هذه الميزة حتى تقوم بتحديث مفتاح التشفير الخاص بك.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>مطلوب ترحيل مفتاح التشفير. الرجاء تسجيل الدخول بواسطة مخزن الويب لتحديث مفتاح التشفير الخاص بك.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>اعرف المزيد</value>
|
<value>اعرف المزيد</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1038,7 +1035,7 @@
|
|||||||
<value>أغسطس</value>
|
<value>أغسطس</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Brand" xml:space="preserve">
|
<data name="Brand" xml:space="preserve">
|
||||||
<value>العلامة التجارية</value>
|
<value>العلامة</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CardholderName" xml:space="preserve">
|
<data name="CardholderName" xml:space="preserve">
|
||||||
<value>اسم حامل البطاقة</value>
|
<value>اسم حامل البطاقة</value>
|
||||||
@@ -1080,7 +1077,7 @@
|
|||||||
<value>يونيو</value>
|
<value>يونيو</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LastName" xml:space="preserve">
|
<data name="LastName" xml:space="preserve">
|
||||||
<value>الأسم الأخير</value>
|
<value>اسم العائلة</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FullName" xml:space="preserve">
|
<data name="FullName" xml:space="preserve">
|
||||||
<value>الاسم الكامل</value>
|
<value>الاسم الكامل</value>
|
||||||
@@ -1340,7 +1337,7 @@
|
|||||||
<value>الهويات</value>
|
<value>الهويات</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Logins" xml:space="preserve">
|
<data name="Logins" xml:space="preserve">
|
||||||
<value>تسجيلات الدخول</value>
|
<value>معرفات</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SecureNotes" xml:space="preserve">
|
<data name="SecureNotes" xml:space="preserve">
|
||||||
<value>ملاحظات آمنة</value>
|
<value>ملاحظات آمنة</value>
|
||||||
@@ -1495,7 +1492,7 @@
|
|||||||
<value>تعيين رمز PIN الخاص بك لإلغاء قفل Bitwarden. سيتم إعادة تعيين إعدادات PIN الخاصة بك إذا قمت بتسجيل الخروج بالكامل من التطبيق.</value>
|
<value>تعيين رمز PIN الخاص بك لإلغاء قفل Bitwarden. سيتم إعادة تعيين إعدادات PIN الخاصة بك إذا قمت بتسجيل الخروج بالكامل من التطبيق.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedInAsOn" xml:space="preserve">
|
<data name="LoggedInAsOn" xml:space="preserve">
|
||||||
<value>مسجل الدخول كـ {0} على {1}.</value>
|
<value>تم تسجيل الدخول كـ {0} في {1}.</value>
|
||||||
<comment>ex: Logged in as user@example.com on bitwarden.com.</comment>
|
<comment>ex: Logged in as user@example.com on bitwarden.com.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultLockedMasterPassword" xml:space="preserve">
|
<data name="VaultLockedMasterPassword" xml:space="preserve">
|
||||||
@@ -1620,7 +1617,7 @@
|
|||||||
<value>إظهار / إخفاء</value>
|
<value>إظهار / إخفاء</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginExpired" xml:space="preserve">
|
<data name="LoginExpired" xml:space="preserve">
|
||||||
<value>انتهت صَلاحِيَة جَلسة تسجيل دخولك.</value>
|
<value>انتهت صلاحية جلسة تسجيل الدخول الخاصة بك.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BiometricsDirection" xml:space="preserve">
|
<data name="BiometricsDirection" xml:space="preserve">
|
||||||
<value>المصادقة البيومترية</value>
|
<value>المصادقة البيومترية</value>
|
||||||
@@ -2331,7 +2328,7 @@
|
|||||||
<value>هل تحاول تسجيل الدخول؟</value>
|
<value>هل تحاول تسجيل الدخول؟</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInAttemptByXOnY" xml:space="preserve">
|
<data name="LogInAttemptByXOnY" xml:space="preserve">
|
||||||
<value>محاولة تسجيل الدخول بواسطة {0} على {1}</value>
|
<value>محاولة تسجيل الدخول بواسطة {0} في {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeviceType" xml:space="preserve">
|
<data name="DeviceType" xml:space="preserve">
|
||||||
<value>نوع الجهاز</value>
|
<value>نوع الجهاز</value>
|
||||||
@@ -2417,9 +2414,9 @@
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>الخدمة</value>
|
<value>الخدمة</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>FirefoxRelay</value>
|
<value>FirefoxRelay</value>
|
||||||
@@ -2631,144 +2628,90 @@
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>كلمة المرور الرئيسية الحالية</value>
|
<value>كلمة المرور الرئيسية الحالية</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>سجلت دخولك!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>الموافقة بجهازي الآخر</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>طلب موافقة المسؤول</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>الموافقة بكلمة مرور رئيسية</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>أوقف باستخدام جهاز عمومي</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>تذكر هذا الجهاز</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>مفتاح المرور</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkeys" xml:space="preserve">
|
<data name="Passkeys" xml:space="preserve">
|
||||||
<value>مفاتيح المرور</value>
|
<value>Passkeys</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatedX" xml:space="preserve">
|
<data name="CreatedX" xml:space="preserve">
|
||||||
<value>أُنشِئ {0}</value>
|
<value>Created {0}</value>
|
||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>تطبيق</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>لا يمكنك تعديل تطبيق مفتاح المرور لأنه سيبطل مفتاح المرور</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
||||||
<value>لن يتم نسخ مفتاح المرور</value>
|
<value>Passkey will not be copied</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>لن يتم نسخ مفتاح المرور إلى العنصر المستنسخ. هل تريد الاستمرار في استنساخ هذا العنصر؟</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>نسخ التطبيق</value>
|
<value>Copy application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>متاح لتسجيل الدخول بخطوتين</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>مساعدة إعادة طلب كلمة المرور الرئيسية</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>قد يفشل إلغاء القُفْل بسبب عدم كفاية الذاكرة. قم بتقليل إعدادات ذاكرة KDF أو قم بإعداد إلغاء القُفْل البيومتري لحل المشكلة.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>مفتاح API غير صالح</value>
|
<value>Invalid API key</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>رمز API غير صالح</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>طلبت موافقة المسؤول</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>أرسلت طلبك إلى مسؤولك.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>سيتم إخطارك بمجرد الموافقة عليها. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>مشكلة في تسجيل الدخول؟</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>تسجيل الدخول كـ {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>تَغيير إجراء مهلة المخزن لتسجيل الخروج</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>لا يمكن مشاركة هذا العنصر مع المؤسسة لأنه يوجد بالفعل واحد مع نفس مفتاح المرور.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BlockAutoFill" xml:space="preserve">
|
<data name="BlockAutoFill" xml:space="preserve">
|
||||||
<value>حظر التعبئة التلقائية</value>
|
<value>Block auto-fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
|
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
|
||||||
<value>لن يتم تقديم التعبئة التلقائية لعناوين الـ URIs هذه.</value>
|
<value>Auto-fill will not be offered for these URIs.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewBlockedURI" xml:space="preserve">
|
<data name="NewBlockedURI" xml:space="preserve">
|
||||||
<value>عنوان URL جديد محظور</value>
|
<value>New blocked URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URISaved" xml:space="preserve">
|
<data name="URISaved" xml:space="preserve">
|
||||||
<value>تم حفظ عنوان URI</value>
|
<value>URI saved</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
||||||
<value>تنسيق غير صالح. استخدم https:// أو http:// أو androidapp://</value>
|
<value>Invalid format. Use https://, http://, or androidapp://</value>
|
||||||
<comment>https://, http://, androidapp:// should not be translated</comment>
|
<comment>https://, http://, androidapp:// should not be translated</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditURI" xml:space="preserve">
|
<data name="EditURI" xml:space="preserve">
|
||||||
<value>تعديل عنوان URI</value>
|
<value>Edit URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterURI" xml:space="preserve">
|
<data name="EnterURI" xml:space="preserve">
|
||||||
<value>إدخال URI</value>
|
<value>Enter URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
|
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
|
||||||
<value>التنسيق: {0}. افصل العديد من عناوين URIs بفاصلة.</value>
|
<value>Format: {0}. Separate multiple URIs with a comma.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FormatX" xml:space="preserve">
|
<data name="FormatX" xml:space="preserve">
|
||||||
<value>التنسيق: {0}</value>
|
<value>Format: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidURI" xml:space="preserve">
|
<data name="InvalidURI" xml:space="preserve">
|
||||||
<value>الرابط غير صالح</value>
|
<value>Invalid URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URIRemoved" xml:space="preserve">
|
<data name="URIRemoved" xml:space="preserve">
|
||||||
<value>تم حذف الرابط</value>
|
<value>URI removed</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThereAreNoBlockedURIs" xml:space="preserve">
|
<data name="ThereAreNoBlockedURIs" xml:space="preserve">
|
||||||
<value>لا يوجد أي عناوين URIs محظورة</value>
|
<value>There are no blocked URIs</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
|
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
|
||||||
<value>تم حظر URI {0} بالفعل</value>
|
<value>The URI {0} is already blocked</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>لا يمكن تعديل العديد من عناوين URIs في وقت واحد</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>تمت الموافقة على تسجيل الدخول</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>يجب إعداد تسجيل الدخول باستخدام الجهاز في إعدادات تطبيق Bitwarden. هل تحتاج إلى خِيار آخر؟</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>تسجيل الدخول بالجهاز</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>جارٍ تسجيل الدخول</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>لقد أجريت محاولات كثيرة</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>تم تسجيل الخروج من الحساب.</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Skan prosesi avtomatik baş tutacaq.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Şifrələmə açarınızı güncəlləyənə qədər bu özəlliyi istifadə edə bilməzsiniz.</value>
|
<value>Şifrələmə açarınızı güncəlləyənə qədər bu özəlliyi istifadə edə bilməzsiniz.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Şifrələmə açarının daşınması tələb olunur. Şifrələmə açarınızı güncəlləmək üçün zəhmət olmasa veb anbar üzərindən giriş edin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Daha ətraflı</value>
|
<value>Daha ətraflı</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2415,9 +2412,9 @@ Skan prosesi avtomatik baş tutacaq.</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Xidmət</value>
|
<value>Xidmət</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2629,57 +2626,39 @@ Bu hesaba keçmək istəyirsiniz?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Hazırkı ana parol</value>
|
<value>Hazırkı ana parol</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Giriş edildi!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Digər cihazımla təsdiqlə</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Admin təsdiqini tələb et</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Ana parolla təsdiqlə</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Hər kəsə açıq bir cihaz istifadə edərək söndür</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Bu cihazı xatırla</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Keçid açarı</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkeys" xml:space="preserve">
|
<data name="Passkeys" xml:space="preserve">
|
||||||
<value>Keçid açarı</value>
|
<value>Passkeys</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatedX" xml:space="preserve">
|
<data name="CreatedX" xml:space="preserve">
|
||||||
<value>{0} yaradıldı</value>
|
<value>Created {0}</value>
|
||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>Tətbiq</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>Keçid açarı tətbiqinə düzəliş edə bilməzsiniz, çünki bu, keçid açarını yararsız edəcək</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
||||||
<value>Keçid açarı kopyalanmır</value>
|
<value>Passkey will not be copied</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>Keçid açarı, klonlanmış elementə kopyalanmayacaq. Bu elementi klonlamağa davam etmək istəyirsiniz?</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>Tətbiqi kopyala</value>
|
<value>Copy application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>İki addımlı giriş üçün əlçatandır</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Ana parolu təkrar soruş köməyi</value>
|
<value>Ana parolu təkrar soruş köməyi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Yetərsiz yaddaşa görə kilid açma uğursuz ola bilər. Həll etmək üçün KDF yaddaş tənzimləmələrinizi azaldın və ya biometrik kilid açmanı quraşdırın.</value>
|
<value>Yetərsiz yaddaşa görə kilid açma uğursuz ola bilər. Həll etmək üçün KDF yaddaş tənzimləmələrinizi azaldın</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Yararsız API açarı</value>
|
<value>Yararsız API açarı</value>
|
||||||
@@ -2687,26 +2666,8 @@ Bu hesaba keçmək istəyirsiniz?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Yararsız API tokeni</value>
|
<value>Yararsız API tokeni</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin təsdiqi tələb olunur</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Tələbiniz admininizə göndərildi.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Təsdiqləndikdən sonra məlumatlandırılacaqsınız. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Girişdə problem var?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>{0} olaraq giriş edilir</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Anbar vaxt bitməsi əməliyyatı "çıxış et" olaraq dəyişdirildi</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Bu element təşkilatla paylaşıla bilmir, çünki eyni keçid açarına sahib bir element artıq mövcuddur.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BlockAutoFill" xml:space="preserve">
|
<data name="BlockAutoFill" xml:space="preserve">
|
||||||
<value>Avto-doldurmanı əngəllə</value>
|
<value>Avto-doldurmanı əngəllə</value>
|
||||||
@@ -2751,22 +2712,4 @@ Bu hesaba keçmək istəyirsiniz?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Bir dəfəyə bir neçə URI-a düzəliş etmək mümkün deyil</value>
|
<value>Bir dəfəyə bir neçə URI-a düzəliş etmək mümkün deyil</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Giriş təsdiqləndi</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Cihazla giriş etmə, Bitwarden tətbiqinin tənzimləmələrində quraşdırılmalıdır. Başqa bir seçimə ehtiyacınız var?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Cihazla giriş et</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Giriş edilir</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Həddən artıq cəhd</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Hesabdan çıxış edildi.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -953,9 +953,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Вы не зможаце выкарыстоўваць гэту функцыю, пакуль не абнавіце свой ключ шыфравання.</value>
|
<value>Вы не зможаце выкарыстоўваць гэту функцыю, пакуль не абнавіце свой ключ шыфравання.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Даведацца больш</value>
|
<value>Даведацца больш</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Сэрвіс</value>
|
<value>Сэрвіс</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Бягучы асноўны пароль</value>
|
<value>Бягучы асноўны пароль</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2659,7 +2638,7 @@
|
|||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>Праграма</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
@@ -2680,7 +2659,7 @@
|
|||||||
<value>Дапамога з паўторным запытам асноўнага пароля</value>
|
<value>Дапамога з паўторным запытам асноўнага пароля</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Па прычыне недахопу памяці можа адбыцца збой разблакіроўкі. Паменшыце налады памяці KDF, каб вырашыць гэту праблему</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Памылковы ключ API</value>
|
<value>Памылковы ключ API</value>
|
||||||
@@ -2688,24 +2667,6 @@
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Памылковы токен API</value>
|
<value>Памылковы токен API</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Немагчыма рэдагаваць некалькі URI адначасова</value>
|
<value>Немагчыма рэдагаваць некалькі URI адначасова</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Трябва да обновите шифриращия си ключ, за да използвате тази възможност.</value>
|
<value>Трябва да обновите шифриращия си ключ, за да използвате тази възможност.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Необходима е промяна на шифриращия ключ. Впишете се в трезора си по уеб, за да обновите своя шифриращ ключ.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Научете повече</value>
|
<value>Научете повече</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Услуга</value>
|
<value>Услуга</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Текуща главна парола</value>
|
<value>Текуща главна парола</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Вписахте се!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Одобряване с другото ми устройство</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Подаване на заявка за одобрение от администратор</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Одобряване с главната парола</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Изключване на използването на публично устройство</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Запомняне на това устройство</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2674,13 +2653,13 @@ select Add TOTP to store the key safely</value>
|
|||||||
<value>Копиране на приложението</value>
|
<value>Копиране на приложението</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>Налично за двустепенно удостоверяване</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Помощ за повторното запитване за главната парола</value>
|
<value>Помощ за повторното запитване за главната парола</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Отключването може да бъде неуспешно заради недостатъчно памет. Намалете настройките на паметта за KDF или настройте отключването чрез биометрични данни, за да разрешите проблема.</value>
|
<value>Отключването може да бъде неуспешно заради недостатъчно памет. Намалете настройките на паметта за KDF, за да разрешите проблема.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Неправилен ключ за ППИ</value>
|
<value>Неправилен ключ за ППИ</value>
|
||||||
@@ -2688,24 +2667,6 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Неправилен идентификатор за ППИ</value>
|
<value>Неправилен идентификатор за ППИ</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Заявено е одобрение от администратор</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Вашата заявка беше изпратена до администратора Ви.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Ще получите известие, когато тя бъде одобрена. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Имате проблем с вписването?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Вписване като {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Действието при изтичане на времето за достъп до трезора е променено на отписване</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Не може да редактирате повече от един адрес едновременно</value>
|
<value>Не може да редактирате повече от един адрес едновременно</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Вписването е одобрено</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Вписването с устройство трябва да е включено в настройките на приложението на Битуорден. Друга настройка ли търсите?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Вписване с устройство</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Вписване в</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Твърде много опити</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Акаунтът е отписан.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>আপনি আপনার এনক্রিপশন কী হালনাগাদ না করা পর্যন্ত এই বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না।</value>
|
<value>আপনি আপনার এনক্রিপশন কী হালনাগাদ না করা পর্যন্ত এই বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না।</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>আরও জানুন</value>
|
<value>আরও জানুন</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Skeniranje će biti izvršeno automatski.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Ovu funkciju ne možete koristiti dok ne ažurirate ključ za šifrovanje.</value>
|
<value>Ovu funkciju ne možete koristiti dok ne ažurirate ključ za šifrovanje.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Saznajte više</value>
|
<value>Saznajte više</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2415,9 +2412,9 @@ Skeniranje će biti izvršeno automatski.</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2629,24 +2626,6 @@ Skeniranje će biti izvršeno automatski.</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2679,7 +2658,7 @@ Skeniranje će biti izvršeno automatski.</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2687,24 +2666,6 @@ Skeniranje će biti izvršeno automatski.</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2751,22 +2712,4 @@ Skeniranje će biti izvršeno automatski.</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ L'escaneig es farà automàticament.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>No podeu utilitzar aquesta característica fins que no actualitzeu la vostra clau de xifratge.</value>
|
<value>No podeu utilitzar aquesta característica fins que no actualitzeu la vostra clau de xifratge.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Més informació</value>
|
<value>Més informació</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ seleccioneu Afegeix TOTP per emmagatzemar la clau de manera segura</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Servei</value>
|
<value>Servei</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,57 +2627,39 @@ Voleu canviar a aquest compte?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Contrasenya mestra actual</value>
|
<value>Contrasenya mestra actual</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Connectat!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Aproveu des d'un altre dispositiu vostre</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Sol·liciteu l'aprovació de l'administrador</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Aprova amb contrasenya mestra</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Apagueu amb un dispositiu públic</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Recorda aquest dispositiu</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Clau de pas</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkeys" xml:space="preserve">
|
<data name="Passkeys" xml:space="preserve">
|
||||||
<value>Claus de pas</value>
|
<value>Passkeys</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatedX" xml:space="preserve">
|
<data name="CreatedX" xml:space="preserve">
|
||||||
<value>Creats {0}</value>
|
<value>Created {0}</value>
|
||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>Aplicació</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>No podeu editar l'aplicació de clau de pas perquè invalidaria la clau de pas</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
||||||
<value>La clau de pas no es copiarà</value>
|
<value>Passkey will not be copied</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>La clau de pas no es copiarà a l'element clonat. Voleu continuar clonant aquest element?</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>Copia la aplicació</value>
|
<value>Copy application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>Disponible per iniciar sessió en dos passos</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Ajuda per tornar a demanar la contrasenya mestra</value>
|
<value>Ajuda per tornar a demanar la contrasenya mestra</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>El desbloqueig pot fallar a causa de memòria insuficient. Disminueix la configuració de memòria KDF per resoldre-ho.</value>
|
<value>El desbloqueig pot fallar a causa de memòria insuficient. Disminueix la configuració de memòria KDF per resoldre-ho</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Clau API no vàlida</value>
|
<value>Clau API no vàlida</value>
|
||||||
@@ -2688,86 +2667,50 @@ Voleu canviar a aquest compte?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Token API no vàlid</value>
|
<value>Token API no vàlid</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>S'ha sol·licitat l'aprovació de l'administrador</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>La vostra sol·licitud s'ha enviat a l'administrador.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Se us notificarà una vegada aprovat. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Teniu problemes per iniciar la sessió?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Connectat com {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>L'acció de temps d'espera de la caixa forta ha canviat per tancar la sessió</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Aquest element no es pot compartir amb l'organització perquè ja n'hi ha un amb la mateixa clau de pas.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BlockAutoFill" xml:space="preserve">
|
<data name="BlockAutoFill" xml:space="preserve">
|
||||||
<value>Bloqueja l'emplenament automàtic</value>
|
<value>Block auto-fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
|
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
|
||||||
<value>L'emplenament automàtic no s'oferirà per a aquests URI.</value>
|
<value>Auto-fill will not be offered for these URIs.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewBlockedURI" xml:space="preserve">
|
<data name="NewBlockedURI" xml:space="preserve">
|
||||||
<value>Nou URI bloquejat</value>
|
<value>New blocked URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URISaved" xml:space="preserve">
|
<data name="URISaved" xml:space="preserve">
|
||||||
<value>URI guardat</value>
|
<value>URI saved</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
||||||
<value>Format no vàlid. Utilitzeu https://, http:// o androidapp://</value>
|
<value>Invalid format. Use https://, http://, or androidapp://</value>
|
||||||
<comment>https://, http://, androidapp:// should not be translated</comment>
|
<comment>https://, http://, androidapp:// should not be translated</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditURI" xml:space="preserve">
|
<data name="EditURI" xml:space="preserve">
|
||||||
<value>Edita URI</value>
|
<value>Edit URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterURI" xml:space="preserve">
|
<data name="EnterURI" xml:space="preserve">
|
||||||
<value>Introduex URI</value>
|
<value>Enter URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
|
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
|
||||||
<value>Format: {0}. Separa diversos URI amb una coma.</value>
|
<value>Format: {0}. Separate multiple URIs with a comma.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FormatX" xml:space="preserve">
|
<data name="FormatX" xml:space="preserve">
|
||||||
<value>Format: {0}</value>
|
<value>Format: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidURI" xml:space="preserve">
|
<data name="InvalidURI" xml:space="preserve">
|
||||||
<value>URI no vàlid</value>
|
<value>Invalid URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URIRemoved" xml:space="preserve">
|
<data name="URIRemoved" xml:space="preserve">
|
||||||
<value>URI suprimit</value>
|
<value>URI removed</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThereAreNoBlockedURIs" xml:space="preserve">
|
<data name="ThereAreNoBlockedURIs" xml:space="preserve">
|
||||||
<value>No hi ha cap URI bloquejat</value>
|
<value>There are no blocked URIs</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
|
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
|
||||||
<value>L'URI {0} ja està bloquejat</value>
|
<value>The URI {0} is already blocked</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>No es poden editar diversos URI alhora</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>S'ha aprovat l'inici de sessió</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>L'inici de sessió amb el dispositiu ha d'estar activat a la configuració de l'aplicació Bitwarden. Necessiteu una altra opció?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Inici de sessió amb dispositiu</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Inici de sessió en</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -505,7 +505,7 @@
|
|||||||
<value>Pro spuštění rozšíření klepněte na ikonu Bitwardenu v menu.</value>
|
<value>Pro spuštění rozšíření klepněte na ikonu Bitwardenu v menu.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionTurnOn" xml:space="preserve">
|
<data name="ExtensionTurnOn" xml:space="preserve">
|
||||||
<value>Pro zapnutí Bitwardenu v prohlížeči Safari a dalších aplikacích klepněte na ikonu „Další“ v dolní části menu.</value>
|
<value>Pro zapnutí Bitwardenu v prohlížeči Safari a dalších aplikacích klepněte na ikonu "Více" v dolní části menu.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Favorite" xml:space="preserve">
|
<data name="Favorite" xml:space="preserve">
|
||||||
<value>Oblíbené</value>
|
<value>Oblíbené</value>
|
||||||
@@ -954,9 +954,6 @@ Načtení proběhne automaticky.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Dokud neaktualizujete svůj šifrovací klíč, nemůžete tuto funkci použít.</value>
|
<value>Dokud neaktualizujete svůj šifrovací klíč, nemůžete tuto funkci použít.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Vyžaduje se migrace šifrovacího klíče. Pro aktualizaci šifrovacího klíče se přihlaste přes webový trezor.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Dozvědět se více</value>
|
<value>Dozvědět se více</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1307,22 +1304,22 @@ Načtení proběhne automaticky.</value>
|
|||||||
<value>Přistupujte k Vašemu trezoru přímo z Vaší klávesnice pro rychlejší automatické vyplnění hesel.</value>
|
<value>Přistupujte k Vašemu trezoru přímo z Vaší klávesnice pro rychlejší automatické vyplnění hesel.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillTurnOn" xml:space="preserve">
|
<data name="AutofillTurnOn" xml:space="preserve">
|
||||||
<value>Pokyny pro zapnutí automatického vyplňování hesel na vašem zařízení:</value>
|
<value>Pokyny pro zapnutí automatického vyplňování hesel na Vašem zařízení:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||||
<value>1. Přejděte do aplikace "Nastavení" v iOS</value>
|
<value>1. Přejděte do aplikace "Nastavení" v iOS</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||||
<value>2. Klepněte na „Hesla“ > „Volby hesla“</value>
|
<value>2. Klepněte na "Hesla" > "Volby hesla"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||||
<value>3. Povolte „Automatické vyplnění hesel“</value>
|
<value>3. Zapněte přepínač u položky "Automatické vyplnění hesel"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||||
<value>4. Najděte sekci „Povolit vyplňování z“</value>
|
<value>4. Najděte sekci "Povolit vyplňování z:"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||||
<value>5. Zvolte „Bitwarden“</value>
|
<value>5. Zvolte "Bitwarden"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordAutofill" xml:space="preserve">
|
<data name="PasswordAutofill" xml:space="preserve">
|
||||||
<value>Automatické vyplňování hesel</value>
|
<value>Automatické vyplňování hesel</value>
|
||||||
@@ -2415,9 +2412,9 @@ Načtení proběhne automaticky.</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Služba</value>
|
<value>Služba</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2629,24 +2626,6 @@ Chcete se přepnout na tento účet?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Aktuální hlavní heslo</value>
|
<value>Aktuální hlavní heslo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Přihlášeno!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Schválit s mým dalším zařízením</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Žádost o schválení správcem</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Schválit hlavním heslem</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Vypnout pomocí veřejného zařízení</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Zapamatovat toto zařízení</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Přístupový klíč</value>
|
<value>Přístupový klíč</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2679,7 +2658,7 @@ Chcete se přepnout na tento účet?</value>
|
|||||||
<value>Nápověda pro znovuzeptání se na hlavní heslo</value>
|
<value>Nápověda pro znovuzeptání se na hlavní heslo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Odemknutí může selhat z důvodu nedostatku paměti. Snižte nastavení KDF paměti nebo nastavte odemykání pomocí biometrie.</value>
|
<value>Odemknutí může selhat z důvodu nedostatku paměti. Pro vyřešení snižte nastavení paměti KDF.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Neplatný klíč API</value>
|
<value>Neplatný klíč API</value>
|
||||||
@@ -2687,24 +2666,6 @@ Chcete se přepnout na tento účet?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Neplatný token API</value>
|
<value>Neplatný token API</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Bylo vyžádáno schválení správcem</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Váš požadavek byl odeslán Vašemu správci.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Po schválení budete upozorněni. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Potíže s přihlášením?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Přihlášování jako {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Akce časového limitu trezoru byla změněna na odhlášení</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Tuto položku nelze sdílet s organizací, protože již existuje jedna se stejným přístupovým klíčem.</value>
|
<value>Tuto položku nelze sdílet s organizací, protože již existuje jedna se stejným přístupovým klíčem.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2751,22 +2712,4 @@ Chcete se přepnout na tento účet?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Najednou nelze upravovat více URI</value>
|
<value>Najednou nelze upravovat více URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Přihlášení bylo schváleno</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Přihlášení zařízením musí být nastaveno v aplikaci Bitwarden. Potřebujete další volby?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Přihlásit se zařízením</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Přihlašování na</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Příliš mnoho pokusů</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Účet byl odhlášen.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -954,9 +954,6 @@ Skanning vil ske automatisk.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Du kan ikke bruge denne funktion, før du opdaterer din krypteringsnøgle.</value>
|
<value>Du kan ikke bruge denne funktion, før du opdaterer din krypteringsnøgle.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Krypteringsnøglemigrering nødvendig. Log ind gennem web-boksen for at opdatere krypteringsnøglen.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Få mere at vide</value>
|
<value>Få mere at vide</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ vælg Tilføj TOTP for at gemme nøglen sikkert</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Tjeneste</value>
|
<value>Tjeneste</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,57 +2627,39 @@ Vil du skifte til denne konto?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Aktuel hovedadgangskode</value>
|
<value>Aktuel hovedadgangskode</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Indlogget!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Godkend med min anden enhed</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Anmod om admin-godkendelse</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Godkendt med hovedadgangskode</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Slå fra vha. en offentlig enhed</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Husk denne enhed</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Adgangsnøgle</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkeys" xml:space="preserve">
|
<data name="Passkeys" xml:space="preserve">
|
||||||
<value>Adgangsnøgler</value>
|
<value>Passkeys</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatedX" xml:space="preserve">
|
<data name="CreatedX" xml:space="preserve">
|
||||||
<value>Oprettet {0}</value>
|
<value>Created {0}</value>
|
||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>Applikation</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>Adgangsnøgleapplikationen kan ikke redigeres, da det ville ugyldiggøre adgangsnøglen</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
||||||
<value>Adgangsnøglen kopieres ikke</value>
|
<value>Passkey will not be copied</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>Adgangsnøglen kopieres ikke til det klonede emne. Fortsæt med at klone dette emne alligevel?</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>Kopiér applikation</value>
|
<value>Copy application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>Tilgængelig for totrins-login</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Hjælp til genanmodning om hovedadgangskode</value>
|
<value>Hjælp til genanmodning om hovedadgangskode</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Oplåsning kan fejle grundet utilstrækkelig hukommelse. Reducér KDF-hukommelsesindstillinger for at afhjælpe</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Ugyldig API-nøgle</value>
|
<value>Ugyldig API-nøgle</value>
|
||||||
@@ -2688,26 +2667,8 @@ Vil du skifte til denne konto?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Ugyldigt API-token</value>
|
<value>Ugyldigt API-token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin-godkendelse udbedt</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Din anmodning er sendt til din gruppe-admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Du underrettes, når godkendelse foreligger. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Problemer med at logge ind?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logger ind som {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Boks-timeouthandling ændret til udlogning</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Dette emne kan ikke deles med organisationen, da der allerede er et med den samme adgangsnøgle.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BlockAutoFill" xml:space="preserve">
|
<data name="BlockAutoFill" xml:space="preserve">
|
||||||
<value>Blokér autoudfyldning</value>
|
<value>Blokér autoudfyldning</value>
|
||||||
@@ -2752,22 +2713,4 @@ Vil du skifte til denne konto?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Kan ikke redigere flere URI'er på én gang</value>
|
<value>Kan ikke redigere flere URI'er på én gang</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login godkendt</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Indlogning med enhed skal være opsat i indstillingerne i Bitwarden-appen. Behov for en anden mulighed?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log ind med enhed</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logger ind på</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>For mange forsøg</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Konto logget ud.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -598,7 +598,7 @@
|
|||||||
<value>Weitere Einstellungen</value>
|
<value>Weitere Einstellungen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MustLogInMainApp" xml:space="preserve">
|
<data name="MustLogInMainApp" xml:space="preserve">
|
||||||
<value>Du musst dich in der Bitwarden App anmelden, bevor du die Erweiterung benutzen kannst.</value>
|
<value>Du musst dich in der Bitwarden App einloggen, bevor du die Erweiterung benutzen kannst.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Never" xml:space="preserve">
|
<data name="Never" xml:space="preserve">
|
||||||
<value>Niemals</value>
|
<value>Niemals</value>
|
||||||
@@ -838,7 +838,7 @@
|
|||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="RememberMe" xml:space="preserve">
|
<data name="RememberMe" xml:space="preserve">
|
||||||
<value>Angemeldet bleiben</value>
|
<value>Eingeloggt bleiben</value>
|
||||||
<comment>Remember my two-step login</comment>
|
<comment>Remember my two-step login</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendVerificationCodeAgain" xml:space="preserve">
|
<data name="SendVerificationCodeAgain" xml:space="preserve">
|
||||||
@@ -954,9 +954,6 @@ Das Scannen erfolgt automatisch.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Du kannst diese Funktion nicht nutzen, solange du deinen Verschlüsselungsschlüssel nicht aktualisiert hast.</value>
|
<value>Du kannst diese Funktion nicht nutzen, solange du deinen Verschlüsselungsschlüssel nicht aktualisiert hast.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Mehr erfahren</value>
|
<value>Mehr erfahren</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1295,7 +1292,7 @@ Das Scannen erfolgt automatisch.</value>
|
|||||||
<value>Auto-Ausfüllen aktiviert!</value>
|
<value>Auto-Ausfüllen aktiviert!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||||
<value>Du musst dich in der Bitwarden App anmelden, bevor du AutoFill nutzen kannst.</value>
|
<value>Du musst dich in der Bitwarden App einloggen, bevor du AutoFill nutzen kannst.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillSetup" xml:space="preserve">
|
<data name="AutofillSetup" xml:space="preserve">
|
||||||
<value>Du kannst nun direkt von der Tastatur auf deine Zugangsdaten zugreifen, wenn du dich auf Webseiten oder in Apps anmeldest.</value>
|
<value>Du kannst nun direkt von der Tastatur auf deine Zugangsdaten zugreifen, wenn du dich auf Webseiten oder in Apps anmeldest.</value>
|
||||||
@@ -2415,9 +2412,9 @@ Das Scannen erfolgt automatisch.</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Dienst</value>
|
<value>Dienst</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2629,24 +2626,6 @@ Möchtest du zu diesem Konto wechseln?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Aktuelles Master-Passwort</value>
|
<value>Aktuelles Master-Passwort</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Angemeldet!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Mit meinem anderen Gerät genehmigen</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Admin-Genehmigung anfordern</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Mit Master-Passwort genehmigen</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Mit einem öffentlichen Gerät ausschalten</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Dieses Gerät merken</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2661,25 +2640,25 @@ Möchtest du zu diesem Konto wechseln?</value>
|
|||||||
<value>Anwendung</value>
|
<value>Anwendung</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>Du kannst die Passkey-Anwendung nicht bearbeiten, da dies den Passkey ungültig machen würde.</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
||||||
<value>Passkey wird nicht kopiert</value>
|
<value>Passkey wird nicht kopiert</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>Der Passkey wird nicht in den duplizierten Eintrag kopiert. Möchtest du mit dem Duplizieren dieses Eintrags fortfahren?</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>Anwendung kopieren</value>
|
<value>Anwendung kopieren</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>Verfügbar für Zwei-Faktor Authentifizierung</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Hilfe zum erneuten Abfragen des Master-Passworts</value>
|
<value>Hilfe zum erneuten Abfragen des Master-Passworts</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Das Entsperren kann aufgrund unzureichenden Arbeitsspeichers fehlschlagen. Verringere deine KDF-Speichereinstellungen oder richte die biometrische Entsperrung, um dies zu lösen.</value>
|
<value>Das Entsperren kann aufgrund von unzureichendem Arbeitsspeicher fehlschlagen. Verringere deine KDF-Speichereinstellungen, um das Problem zu beheben.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Ungültiger API-Schlüssel</value>
|
<value>Ungültiger API-Schlüssel</value>
|
||||||
@@ -2687,26 +2666,8 @@ Möchtest du zu diesem Konto wechseln?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Ungültiger API-Token</value>
|
<value>Ungültiger API-Token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin-Genehmigung angefordert</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Deine Anfrage wurde an deinen Administrator gesendet.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Du wirst benachrichtigt, sobald sie genehmigt wurde.</value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Probleme beim Einloggen?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Anmelden als {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Tresor-Timeoutaktion auf "Abmelden" geändert</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Dieser Eintrag kann nicht mit der Organisation geteilt werden, da bereits einer mit dem gleichen Passkey existiert.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BlockAutoFill" xml:space="preserve">
|
<data name="BlockAutoFill" xml:space="preserve">
|
||||||
<value>Auto-Ausfüllen blockieren</value>
|
<value>Auto-Ausfüllen blockieren</value>
|
||||||
@@ -2751,22 +2712,4 @@ Möchtest du zu diesem Konto wechseln?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Es können nicht mehrere URIs auf einmal bearbeitet werden</value>
|
<value>Es können nicht mehrere URIs auf einmal bearbeitet werden</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login genehmigt</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Die Anmeldung über ein Gerät muss in den Einstellungen der Bitwarden App eingerichtet werden. Benötigst du eine andere Option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Mit Gerät anmelden</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Anmelden bei</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Zu viele Versuche</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Konto abgemeldet.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Δεν μπορείτε να χρησιμοποιήσετε αυτήν τη δυνατότητα μέχρι να ενημερώσετε το κλειδί κρυπτογράφησης.</value>
|
<value>Δεν μπορείτε να χρησιμοποιήσετε αυτήν τη δυνατότητα μέχρι να ενημερώσετε το κλειδί κρυπτογράφησης.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Μάθετε Περισσότερα</value>
|
<value>Μάθετε Περισσότερα</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Υπηρεσία</value>
|
<value>Υπηρεσία</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,81 +2627,45 @@
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Τρέχων κύριος κωδικός</value>
|
<value>Τρέχων κύριος κωδικός</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Συνθηματικό</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkeys" xml:space="preserve">
|
<data name="Passkeys" xml:space="preserve">
|
||||||
<value>Συνθηματικά</value>
|
<value>Passkeys</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatedX" xml:space="preserve">
|
<data name="CreatedX" xml:space="preserve">
|
||||||
<value>Δημιουργήθηκε {0}</value>
|
<value>Created {0}</value>
|
||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>Εφαρμογή</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>Δεν μπορείτε να επεξεργαστείτε την εφαρμογή κλειδιού πρόσβασης επειδή θα ακυρώσει το κλειδί</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
||||||
<value>Το κλειδί πρόσβασης δεν θα αντιγραφεί</value>
|
<value>Passkey will not be copied</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>Το κλειδί πρόσβασης δεν θα αντιγραφεί στο κλωνοποιημένο στοιχείο. Θέλετε να συνεχίσετε την κλωνοποίηση αυτού του στοιχείου;</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>Copy application</value>
|
<value>Copy application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>Διαθέσιμο για σύνδεση με δύο βήματα</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Το ξεκλείδωμα μπορεί να αποτύχει λόγω ανεπαρκούς μνήμης. Μειώστε τις ρυθμίσεις μνήμης KDF ή ρυθμίστε το βιομετρικό ξεκλείδωμα για επίλυση.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Μη έγκυρο κλειδί API</value>
|
<value>Invalid API key</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Μη έγκυρο API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
@@ -2752,22 +2713,4 @@
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>You cannot use this feature until you update your encryption key.</value>
|
<value>You cannot use this feature until you update your encryption key.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Learn more</value>
|
<value>Learn more</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2680,7 +2659,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2688,24 +2667,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>You cannot use this feature until you update your encryption key.</value>
|
<value>You cannot use this feature until you update your encryption key.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Learn more</value>
|
<value>Learn more</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2430,9 +2427,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2644,24 +2641,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2694,7 +2673,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2702,24 +2681,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2766,22 +2727,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ El escaneo se realizará automáticamente.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>No puedes usar esta característica hasta que actualices tu clave de cifrado.</value>
|
<value>No puedes usar esta característica hasta que actualices tu clave de cifrado.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Aprender más</value>
|
<value>Aprender más</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Servicio</value>
|
<value>Servicio</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Contraseña maestra actual</value>
|
<value>Contraseña maestra actual</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Conectado</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Aprobar con mi otro dispositivo</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
|
|||||||
<value>Ayuda de volver a pedir contraseña maestra</value>
|
<value>Ayuda de volver a pedir contraseña maestra</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>El desbloqueo puede fallar por falta de memoria. Disminuye los ajustes de memoria KDF para resolver</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Clave API no válida</value>
|
<value>Clave API no válida</value>
|
||||||
@@ -2689,24 +2668,6 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Token de API no válido</value>
|
<value>Token de API no válido</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Skaneerimine toimub automaatselt.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Seda funktsiooni ei saa enne krüpteerimise võtme uuendamist kasutada.</value>
|
<value>Seda funktsiooni ei saa enne krüpteerimise võtme uuendamist kasutada.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Rohkem teavet</value>
|
<value>Rohkem teavet</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ Skaneerimine toimub automaatselt.</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Teenus</value>
|
<value>Teenus</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@ Soovid selle konto peale lülituda?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Praegune ülemparool</value>
|
<value>Praegune ülemparool</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Pääsukood</value>
|
<value>Pääsukood</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2680,7 +2659,7 @@ Soovid selle konto peale lülituda?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Avamine võib ebapiisava mälu tõttu nurjuda. Probleemi lahendamiseks vähenda KDF mälu seadeid.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Vigane API võti</value>
|
<value>Vigane API võti</value>
|
||||||
@@ -2688,24 +2667,6 @@ Soovid selle konto peale lülituda?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Vigane API token</value>
|
<value>Vigane API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Seda kirjet ei saa organisatsiooniga jagada, sest sama pääsukoodiga kirje juba eksisteerib.</value>
|
<value>Seda kirjet ei saa organisatsiooniga jagada, sest sama pääsukoodiga kirje juba eksisteerib.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@ Soovid selle konto peale lülituda?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Mitme URI korraga muutmine ei toiminud</value>
|
<value>Mitme URI korraga muutmine ei toiminud</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Sisselogimas kui</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -953,9 +953,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Ezin duzu ezaugarri hau erabili zifratze-gakoa eguneratu arte.</value>
|
<value>Ezin duzu ezaugarri hau erabili zifratze-gakoa eguneratu arte.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Gehiago ezagutu</value>
|
<value>Gehiago ezagutu</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2415,9 +2412,9 @@
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Zerbitzua</value>
|
<value>Zerbitzua</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2629,24 +2626,6 @@ Kontu honetara aldatu nahi duzu?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Uneko pasahitz nagusia</value>
|
<value>Uneko pasahitz nagusia</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2679,7 +2658,7 @@ Kontu honetara aldatu nahi duzu?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>API giltza baliogabea</value>
|
<value>API giltza baliogabea</value>
|
||||||
@@ -2687,24 +2666,6 @@ Kontu honetara aldatu nahi duzu?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>API kode baliogabia</value>
|
<value>API kode baliogabia</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2751,22 +2712,4 @@ Kontu honetara aldatu nahi duzu?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>تا زمانی که کد رمزنگاری را بهروز نکنید نمیتوانید از این قابلیت استفاده کنید.</value>
|
<value>تا زمانی که کد رمزنگاری را بهروز نکنید نمیتوانید از این قابلیت استفاده کنید.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>بیشتر بدانید</value>
|
<value>بیشتر بدانید</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>سرویس</value>
|
<value>سرویس</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>رله فایرفاکس</value>
|
<value>رله فایرفاکس</value>
|
||||||
@@ -2631,57 +2628,39 @@
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>کلمه عبور اصلی فعلی</value>
|
<value>کلمه عبور اصلی فعلی</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>وارد شده!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>تایید با دستگاه دیگرم</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>درخواست تایید مدیر</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>تایید با کلمه عبور اصلی</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>اگر از دستگاه عمومی استفاده میکنید خاموش کنید</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>این دستگاه را به خاطر بسپار</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>کلید عبور</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkeys" xml:space="preserve">
|
<data name="Passkeys" xml:space="preserve">
|
||||||
<value>کلیدهای عبور</value>
|
<value>Passkeys</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatedX" xml:space="preserve">
|
<data name="CreatedX" xml:space="preserve">
|
||||||
<value>{0} ایجاد شد</value>
|
<value>Created {0}</value>
|
||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>درخواست</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>شما نمیتوانید برنامه کلید عبور را ویرایش کنید زیرا باعث بی اعتباری کلید عبور میشود</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
||||||
<value>کلید عبور کپی نمیشود</value>
|
<value>Passkey will not be copied</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>کلید عبور در مورد شبیه سازی شده کپی نمیشود. آیا میخواهید به شبیه سازی این مورد ادامه دهید؟</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>درخواست را کپی کنید</value>
|
<value>Copy application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>برای ورود دو مرحله ای موجود است</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>راهنمای درخواست مجدد کلمه عبور اصلی</value>
|
<value>راهنمای درخواست مجدد کلمه عبور اصلی</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>بازگشایی ممکن است به دلیل حافظه ناکافی انجام نشود. برای انجام تنظیمات حافظه KDF خود را کاهش دهید یا از بازگشایی زیستسنجی استفاده کنید.</value>
|
<value>باز کردن قفل ممکن است به دلیل حافظه ناکافی انجام شود. تنظیمات حافظه KDF خود را کاهش دهید تا حل شود.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>کلید API نامعتبر</value>
|
<value>کلید API نامعتبر</value>
|
||||||
@@ -2689,86 +2668,50 @@
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>توکن API نامعتبر</value>
|
<value>توکن API نامعتبر</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>تایید مدیر در خواست شد</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>درخواست شما به مدیرتان فرستاده شد.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>به محض تایید مطلع خواهید شد. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>در ورود مشکلی دارید؟</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>ورود به عنوان {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>اقدام پایان زمان گاوصندوق به خروج تغییر کرد</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>این مورد را نمیتوان با سازمان به اشتراک گذاشت زیرا قبلاً موردی با کلید عبور یکسان وجود دارد.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BlockAutoFill" xml:space="preserve">
|
<data name="BlockAutoFill" xml:space="preserve">
|
||||||
<value>پر کردن خودکار را مسدود کنید</value>
|
<value>Block auto-fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
|
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
|
||||||
<value>پر کردن خودکار برای این نشانیهای اینترنتی ارائه نمیشود.</value>
|
<value>Auto-fill will not be offered for these URIs.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewBlockedURI" xml:space="preserve">
|
<data name="NewBlockedURI" xml:space="preserve">
|
||||||
<value>نشانی اینترنتی مسدود شده جدید</value>
|
<value>New blocked URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URISaved" xml:space="preserve">
|
<data name="URISaved" xml:space="preserve">
|
||||||
<value>نشانی اینترنتی ذخیره شد</value>
|
<value>URI saved</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
||||||
<value>قالب نامعتبر است. از https://، http://، یا androidapp:// استفاده کنید</value>
|
<value>Invalid format. Use https://, http://, or androidapp://</value>
|
||||||
<comment>https://, http://, androidapp:// should not be translated</comment>
|
<comment>https://, http://, androidapp:// should not be translated</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditURI" xml:space="preserve">
|
<data name="EditURI" xml:space="preserve">
|
||||||
<value>ویرایش نشانی اینترنتی</value>
|
<value>Edit URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterURI" xml:space="preserve">
|
<data name="EnterURI" xml:space="preserve">
|
||||||
<value>ورود نشانی اینترنتی</value>
|
<value>Enter URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
|
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
|
||||||
<value>قالب: {0}. چندین نشانی اینترنتی را با کاما جدا کنید.</value>
|
<value>Format: {0}. Separate multiple URIs with a comma.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FormatX" xml:space="preserve">
|
<data name="FormatX" xml:space="preserve">
|
||||||
<value>قالب: {0}</value>
|
<value>Format: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidURI" xml:space="preserve">
|
<data name="InvalidURI" xml:space="preserve">
|
||||||
<value>نشانی اینترنتی نامعتبر</value>
|
<value>Invalid URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URIRemoved" xml:space="preserve">
|
<data name="URIRemoved" xml:space="preserve">
|
||||||
<value>نشانی اینترنتی حذف شد</value>
|
<value>URI removed</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThereAreNoBlockedURIs" xml:space="preserve">
|
<data name="ThereAreNoBlockedURIs" xml:space="preserve">
|
||||||
<value>هیچ نشانی اینترنتی مسدود شده ای وجود ندارد</value>
|
<value>There are no blocked URIs</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
|
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
|
||||||
<value>{0} نشانی اینترنتی قبلاً مسدود شده است</value>
|
<value>The URI {0} is already blocked</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>نمیتوان چندین نشانی اینترنتی را همزمان ویرایش کرد</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>ورود تایید شد</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>ورود با دستگاه باید در تنظیمات برنامهی Bitwarden تنظیم شود. به گزینه دیگری نیاز دارید؟</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>ورود با دستگاه</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>ورود با</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -701,7 +701,7 @@
|
|||||||
<value>Synkronoi holvi nyt</value>
|
<value>Synkronoi holvi nyt</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TouchID" xml:space="preserve">
|
<data name="TouchID" xml:space="preserve">
|
||||||
<value>Touch ID:llä</value>
|
<value>Touch ID</value>
|
||||||
<comment>What Apple calls their fingerprint reader.</comment>
|
<comment>What Apple calls their fingerprint reader.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="TwoStepLogin" xml:space="preserve">
|
<data name="TwoStepLogin" xml:space="preserve">
|
||||||
@@ -711,7 +711,7 @@
|
|||||||
<value>Kaksivaiheinen kirjautuminen parantaa tilisi suojausta vaatimalla kirjautumisen vahvistuksen salasanan lisäksi todennuslaitteen, ‑sovelluksen, tekstiviestin, puhelun tai sähköpostin avulla. Voit ottaa kaksivaiheisen kirjautumisen käyttöön bitwarden.com‑verkkoholvissa. Haluatko avata sen nyt?</value>
|
<value>Kaksivaiheinen kirjautuminen parantaa tilisi suojausta vaatimalla kirjautumisen vahvistuksen salasanan lisäksi todennuslaitteen, ‑sovelluksen, tekstiviestin, puhelun tai sähköpostin avulla. Voit ottaa kaksivaiheisen kirjautumisen käyttöön bitwarden.com‑verkkoholvissa. Haluatko avata sen nyt?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockWith" xml:space="preserve">
|
<data name="UnlockWith" xml:space="preserve">
|
||||||
<value>Avaus {0}</value>
|
<value>Avaustapa: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockWithPIN" xml:space="preserve">
|
<data name="UnlockWithPIN" xml:space="preserve">
|
||||||
<value>Avaus PIN-koodilla</value>
|
<value>Avaus PIN-koodilla</value>
|
||||||
@@ -766,7 +766,7 @@
|
|||||||
<value>1. Valitse esteettömyysasetusten "Palvelut" -otsikon alta ”Bitwarden”.</value>
|
<value>1. Valitse esteettömyysasetusten "Palvelut" -otsikon alta ”Bitwarden”.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BitwardenAutofillServiceStep2" xml:space="preserve">
|
<data name="BitwardenAutofillServiceStep2" xml:space="preserve">
|
||||||
<value>2. Kytke asetus käyttöön ja hyväksy painanalla "OK".</value>
|
<value>2. Laita asetus päälle ja paina OK-painiketta hyväksyäksesi.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Disabled" xml:space="preserve">
|
<data name="Disabled" xml:space="preserve">
|
||||||
<value>Poistettu käytöstä</value>
|
<value>Poistettu käytöstä</value>
|
||||||
@@ -802,7 +802,7 @@
|
|||||||
<value>Mahdollisesti tunnistetut kohteet</value>
|
<value>Mahdollisesti tunnistetut kohteet</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Search" xml:space="preserve">
|
<data name="Search" xml:space="preserve">
|
||||||
<value>Etsi</value>
|
<value>Hae</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BitwardenAutofillServiceSearch" xml:space="preserve">
|
<data name="BitwardenAutofillServiceSearch" xml:space="preserve">
|
||||||
<value>Etsit automaattisesti täytettävää kohdetta osoitteelle ”{0}”.</value>
|
<value>Etsit automaattisesti täytettävää kohdetta osoitteelle ”{0}”.</value>
|
||||||
@@ -860,7 +860,7 @@
|
|||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="YubiKeyInstruction" xml:space="preserve">
|
<data name="YubiKeyInstruction" xml:space="preserve">
|
||||||
<value>Jatka asettamalla YubiKey NEO -todennuslaite laitteen taustaa vasten tai kytke YubiKey-todennuslaite laitteen USB-porttiin ja paina sen painiketta.</value>
|
<value>Jatka asettamalla YubiKey NEO -todenuslaite laitteen takapuolta vasten tai kytke YubiKey-todennuslaite laitteen USB-porttiin ja paina sen painiketta.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YubiKeyTitle" xml:space="preserve">
|
<data name="YubiKeyTitle" xml:space="preserve">
|
||||||
<value>YubiKey-todennuslaite</value>
|
<value>YubiKey-todennuslaite</value>
|
||||||
@@ -916,10 +916,10 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<value>Kopioi TOTP-todennuskoodi</value>
|
<value>Kopioi TOTP-todennuskoodi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyTotpAutomaticallyDescription" xml:space="preserve">
|
<data name="CopyTotpAutomaticallyDescription" xml:space="preserve">
|
||||||
<value>TOTP-todennuskoodi kopioidaan automaattisesti leikepöydälle automaattisen täytön yhteydessä, jos kirjautumistieto sisältää kaksivaiheisen todennusmenetelmän avaimen.</value>
|
<value>Jos kirjautumistieto sisältää kaksivaiheisen todennusmenetelmän avaimen, kopioidaan TOTP-todennuskoodi leikepöydälle kohteen automaattisen täytön yhteydessä.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyTotpAutomatically" xml:space="preserve">
|
<data name="CopyTotpAutomatically" xml:space="preserve">
|
||||||
<value>TOTP-koodin kopiointi</value>
|
<value>Kopioi TOTP-koodi automaattisesti</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PremiumRequired" xml:space="preserve">
|
<data name="PremiumRequired" xml:space="preserve">
|
||||||
<value>Käyttääksesi tätä toimintoa tarvitset Premium-jäsenyyden.</value>
|
<value>Käyttääksesi tätä toimintoa tarvitset Premium-jäsenyyden.</value>
|
||||||
@@ -954,9 +954,6 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Et voi käyttää tätä toimintoa ennen kuin päivität salausavaimesi.</value>
|
<value>Et voi käyttää tätä toimintoa ennen kuin päivität salausavaimesi.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Salausavaimen siirto vaaditaan. Päivitä salausavaimesi kirjautumalla verkkoholviin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Lue lisää</value>
|
<value>Lue lisää</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1143,7 +1140,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<value>Erääntymisaika</value>
|
<value>Erääntymisaika</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ShowWebsiteIcons" xml:space="preserve">
|
<data name="ShowWebsiteIcons" xml:space="preserve">
|
||||||
<value>Näytä sivustokuvakkeet</value>
|
<value>Näytä verkkosivustojen kuvakkeet</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ShowWebsiteIconsDescription" xml:space="preserve">
|
<data name="ShowWebsiteIconsDescription" xml:space="preserve">
|
||||||
<value>Näytä tunnistettava kuva jokaiselle kirjautumistiedolle.</value>
|
<value>Näytä tunnistettava kuva jokaiselle kirjautumistiedolle.</value>
|
||||||
@@ -1185,7 +1182,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<value>Avaa "Automaattinen täyttö -palvelu" -asetukset</value>
|
<value>Avaa "Automaattinen täyttö -palvelu" -asetukset</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FaceID" xml:space="preserve">
|
<data name="FaceID" xml:space="preserve">
|
||||||
<value>Face ID:llä</value>
|
<value>Face ID</value>
|
||||||
<comment>What Apple calls their facial recognition reader.</comment>
|
<comment>What Apple calls their facial recognition reader.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FaceIDDirection" xml:space="preserve">
|
<data name="FaceIDDirection" xml:space="preserve">
|
||||||
@@ -1272,13 +1269,13 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||||
<value>Pidä YubiKey-todennuslaittettasi lähellä laitteen yläosaa.</value>
|
<value>Pidä YubiKey-todenuslaittettasi lähellä laitteen yläosaa.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TryAgain" xml:space="preserve">
|
<data name="TryAgain" xml:space="preserve">
|
||||||
<value>Yritä uudelleen</value>
|
<value>Yritä uudelleen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||||
<value>Jatka pitämällä YubiKey NEO -todennuslaitetta laitteen taustaa vasten.</value>
|
<value>Jatka pitämällä YubiKey NEO -todenuslaitetta laitteen takapuolta vasten.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||||
<value>Esteettömyyspalvelu voi olla hyödyllinen sellaisten sovellusten kanssa, jotka eivät tue tavallista automaattisen täytön palvelua.</value>
|
<value>Esteettömyyspalvelu voi olla hyödyllinen sellaisten sovellusten kanssa, jotka eivät tue tavallista automaattisen täytön palvelua.</value>
|
||||||
@@ -1384,7 +1381,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<value>Ei näytettäviä kohteita.</value>
|
<value>Ei näytettäviä kohteita.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchCollection" xml:space="preserve">
|
<data name="SearchCollection" xml:space="preserve">
|
||||||
<value>Etsi kokoelmasta</value>
|
<value>Hae kokoelmasta</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchFileSends" xml:space="preserve">
|
<data name="SearchFileSends" xml:space="preserve">
|
||||||
<value>Etsi tiedosto-Sendeistä</value>
|
<value>Etsi tiedosto-Sendeistä</value>
|
||||||
@@ -1559,7 +1556,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<value>Oletusarvoinen tumma teema</value>
|
<value>Oletusarvoinen tumma teema</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DefaultDarkThemeDescription" xml:space="preserve">
|
<data name="DefaultDarkThemeDescription" xml:space="preserve">
|
||||||
<value>Valitse "Oletus (järjestelmä)" -asetuksen oletusarvoinen tumma teema, jota käytetään laitteen tumman tilan ollessa käytössä.</value>
|
<value>Valitse Oletus (järjestelmä) -asetuksen oletusarvoinen tumma teema, jota käytetään laitteen tumman tilan ollessa käytössä.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyNotes" xml:space="preserve">
|
<data name="CopyNotes" xml:space="preserve">
|
||||||
<value>Kopioi merkinnät</value>
|
<value>Kopioi merkinnät</value>
|
||||||
@@ -1626,7 +1623,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<value>Biometrinen todennus</value>
|
<value>Biometrinen todennus</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Biometrics" xml:space="preserve">
|
<data name="Biometrics" xml:space="preserve">
|
||||||
<value>biometrialla</value>
|
<value>Biometria</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UseBiometricsToUnlock" xml:space="preserve">
|
<data name="UseBiometricsToUnlock" xml:space="preserve">
|
||||||
<value>Avaa biometrialla</value>
|
<value>Avaa biometrialla</value>
|
||||||
@@ -1737,7 +1734,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<comment>(noun) Location of deleted items which have not yet been permanently deleted</comment>
|
<comment>(noun) Location of deleted items which have not yet been permanently deleted</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchTrash" xml:space="preserve">
|
<data name="SearchTrash" xml:space="preserve">
|
||||||
<value>Etsi roskakorista</value>
|
<value>Hae roskakorista</value>
|
||||||
<comment>(action prompt) Label for the search text field when viewing the trash folder</comment>
|
<comment>(action prompt) Label for the search text field when viewing the trash folder</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DoYouReallyWantToPermanentlyDeleteCipher" xml:space="preserve">
|
<data name="DoYouReallyWantToPermanentlyDeleteCipher" xml:space="preserve">
|
||||||
@@ -2002,7 +1999,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchSends" xml:space="preserve">
|
<data name="SearchSends" xml:space="preserve">
|
||||||
<value>Etsi Sendeistä</value>
|
<value>Hae Sendeistä</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditSend" xml:space="preserve">
|
<data name="EditSend" xml:space="preserve">
|
||||||
@@ -2417,9 +2414,9 @@ turvallisesti valitsemalla "Lisää TOTP"</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Palvelu</value>
|
<value>Palvelu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ Haluatko vaihtaa tähän tiliin?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Nykyinen pääsalasana</value>
|
<value>Nykyinen pääsalasana</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Kirjautuminen onnistui!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Hyväksy muilta laitteiltasi</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Pyydä hyväksyntää ylläpidolta</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Hyväksy pääsalasanalla</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Poista käytöstä julkisilla laitteilla</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Muista tämä laite</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Suojausavain</value>
|
<value>Suojausavain</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2669,7 +2648,7 @@ Haluatko vaihtaa tähän tiliin?</value>
|
|||||||
<value>Suojausavainta ei kopioida</value>
|
<value>Suojausavainta ei kopioida</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>Suojausavain ei kopioidu kloonattuun kohteeseen. Haluatko jatkaa kloonausta?</value>
|
<value>Suojausavainta ei kopioida kloonattuun kohteeseen. Haluatko jatkaa kloonausta?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>Kopioi sovellus</value>
|
<value>Kopioi sovellus</value>
|
||||||
@@ -2689,24 +2668,6 @@ Haluatko vaihtaa tähän tiliin?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Virheellinen API-tunniste</value>
|
<value>Virheellinen API-tunniste</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Hyväksyntää pyydetty ylläpidolta</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Pyyntösi on välitetty ylläpidollesi.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Saat ilmoituksen heti kun se on hyväksytty.</value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Ongelmia kirjautumisessa?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Kirjaudutaan tunnuksella {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Holvin aikakatkaisutoiminnoksi vaihdettiin uloskirjaus</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Kohdetta ei voida jakaa organisaatiolle, koska siellä on jo samaa suojausavainta käyttävä kohde.</value>
|
<value>Kohdetta ei voida jakaa organisaatiolle, koska siellä on jo samaa suojausavainta käyttävä kohde.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Haluatko vaihtaa tähän tiliin?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Useita URI-osoitteita ei ole mahdollista muokata samanaikaisesti</value>
|
<value>Useita URI-osoitteita ei ole mahdollista muokata samanaikaisesti</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Kirjautuminen hyväksyttiin</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Laitteella kirjautuminen on määritettävä Bitwarden-sovelluksen asetuksista. Tarvitsetko eri vaihtoehdon?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Laitteella kirjautuminen</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Kirjaudutaan sijaintiin</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Liian monta yritystä</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Tili kirjattiin ulos.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Awtomatikong itong magsa-scan.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Hindi mo magagamit ang feature na ito hanggang sa i-update mo ang encryption key mo.</value>
|
<value>Hindi mo magagamit ang feature na ito hanggang sa i-update mo ang encryption key mo.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Matuto pa</value>
|
<value>Matuto pa</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ pindutin ang Magdagdag ng TOTP para ligtas na mai-store ang key</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Serbisyo</value>
|
<value>Serbisyo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ Gusto mo bang pumunta sa account na ito?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Gusto mo bang pumunta sa account na ito?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Gusto mo bang pumunta sa account na ito?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Gusto mo bang pumunta sa account na ito?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ La numérisation se fera automatiquement.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Vous ne pouvez pas utiliser cette fonctionnalité tant que vous ne mettez pas à jour votre clé de chiffrement.</value>
|
<value>Vous ne pouvez pas utiliser cette fonctionnalité tant que vous ne mettez pas à jour votre clé de chiffrement.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Migration de la clé de chiffrement nécessaire. Veuillez vous connecter sur le coffre web pour mettre à jour votre clé de chiffrement.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>En savoir plus</value>
|
<value>En savoir plus</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ sélectionnez Ajouter TOTP pour stocker la clé en toute sécurité</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,57 +2628,39 @@ Voulez-vous basculer vers ce compte ?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Mot de passe principal actuel</value>
|
<value>Mot de passe principal actuel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Connecté !</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Demander l'approbation de l'administrateur</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approuver avec le mot de passe principal</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Se souvenir de cet appareil</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Clé d'accès</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkeys" xml:space="preserve">
|
<data name="Passkeys" xml:space="preserve">
|
||||||
<value>Clés d'accès</value>
|
<value>Passkeys</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatedX" xml:space="preserve">
|
<data name="CreatedX" xml:space="preserve">
|
||||||
<value>Créée le {0}</value>
|
<value>Created {0}</value>
|
||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>Application</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>Vous ne pouvez modifier l'application associée à la clé d'accès car cela l'invaliderait</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
<data name="PasskeyWillNotBeCopied" xml:space="preserve">
|
||||||
<value>La clé d'accès ne sera pas copiée</value>
|
<value>Passkey will not be copied</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
|
||||||
<value>L'entrée clonée ne contiendra pas la clé d'accès. Continuer quand même ?</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>Copier l'application</value>
|
<value>Copy application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>Disponible pour la validation en deux étapes</value>
|
<value>Available for two-step login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Aide sur la ressaisie du mot de passe principal</value>
|
<value>Aide sur la ressaisie du mot de passe principal</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Le déverrouillage peut échouer en raison d'une mémoire insuffisante. Diminuez les paramètres de mémoire KDF ou configurer le déverrouillage biométique pour y remédier.</value>
|
<value>Le déverrouillage peut échouer en raison d'une mémoire insuffisante. Diminuez les paramètres de mémoire KDF pour y remédier</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Clé API invalide</value>
|
<value>Clé API invalide</value>
|
||||||
@@ -2689,26 +2668,8 @@ Voulez-vous basculer vers ce compte ?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Jeton API invalide</value>
|
<value>Jeton API invalide</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Approbation de l'administrateur demandée</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Votre demande a été envoyée à votre administrateur.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Vous serez notifié une fois approuvé. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Problème pour vous connecter ?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Cet élément ne peut pas être déplacé vers l'organisation, car celle-ci dispose déjà d'un élément avec la même clé d'accès.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BlockAutoFill" xml:space="preserve">
|
<data name="BlockAutoFill" xml:space="preserve">
|
||||||
<value>Bloquer la saisie automatique</value>
|
<value>Bloquer la saisie automatique</value>
|
||||||
@@ -2753,22 +2714,4 @@ Voulez-vous basculer vers ce compte ?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Impossible de modifier des URI multiples à la fois</value>
|
<value>Impossible de modifier des URI multiples à la fois</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Se connecter avec l'appareil</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Connexion sur</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Trop de tentatives</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Compte déconnecté.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>You cannot use this feature until you update your encryption key.</value>
|
<value>You cannot use this feature until you update your encryption key.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Learn more</value>
|
<value>Learn more</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -955,9 +955,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>לא ניתן להשתמש ביכולת זו עד שתעדכן את מפתח ההצפנה שלך.</value>
|
<value>לא ניתן להשתמש ביכולת זו עד שתעדכן את מפתח ההצפנה שלך.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>למידע נוסף</value>
|
<value>למידע נוסף</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2419,9 +2416,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2633,24 +2630,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2683,7 +2662,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2691,24 +2670,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2755,22 +2716,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>You cannot use this feature until you update your encryption key.</value>
|
<value>You cannot use this feature until you update your encryption key.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>अधिक जानें</value>
|
<value>अधिक जानें</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>सेवा</value>
|
<value>सेवा</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>एननऐडी</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>फायरफॉक्स रीले</value>
|
<value>फायरफॉक्स रीले</value>
|
||||||
@@ -2631,24 +2628,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>चालू मुख्य पासवर्ड</value>
|
<value>चालू मुख्य पासवर्ड</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -953,9 +953,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Ne možeš koristiti ovu značajku dok ne ažuriraš svoj ključ za šifriranje.</value>
|
<value>Ne možeš koristiti ovu značajku dok ne ažuriraš svoj ključ za šifriranje.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Saznaj više</value>
|
<value>Saznaj više</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1752,10 +1749,10 @@
|
|||||||
<comment>Confirmation alert message when soft-deleting a cipher.</comment>
|
<comment>Confirmation alert message when soft-deleting a cipher.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccountBiometricInvalidated" xml:space="preserve">
|
<data name="AccountBiometricInvalidated" xml:space="preserve">
|
||||||
<value>Biometrijsko otključavanje za ovaj račun je onemogućeno do potvrde glavne lozinke.</value>
|
<value>Biometric unlock for this account is disabled pending verification of master password.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccountBiometricInvalidatedExtension" xml:space="preserve">
|
<data name="AccountBiometricInvalidatedExtension" xml:space="preserve">
|
||||||
<value>Biometrijsko otključavanje auto-ispune za ovaj račun je onemogućeno do potvrde glavne lozinke.</value>
|
<value>Autofill biometric unlock for this account is disabled pending verification of master password.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableSyncOnRefresh" xml:space="preserve">
|
<data name="EnableSyncOnRefresh" xml:space="preserve">
|
||||||
<value>Uključi sinkronizaciju pri osvježavanju</value>
|
<value>Uključi sinkronizaciju pri osvježavanju</value>
|
||||||
@@ -2142,10 +2139,10 @@
|
|||||||
<value>Pravilo tvoje organizacije utječe na istek trezora. Najveće dozvoljeno vrijeme isteka je {0}:{1} h.</value>
|
<value>Pravilo tvoje organizacije utječe na istek trezora. Najveće dozvoljeno vrijeme isteka je {0}:{1} h.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutPolicyWithActionInEffect" xml:space="preserve">
|
<data name="VaultTimeoutPolicyWithActionInEffect" xml:space="preserve">
|
||||||
<value>Pravila tvoje organizacije utječu na vremenski istek trezora. Maksimalno dopušteno vrijeme isteka je {0}:{1} h. Vaša radnja nakon isteka trezora je {2}.</value>
|
<value>Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is {0} hour(s) and {1} minute(s). Your vault timeout action is set to {2}.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutActionPolicyInEffect" xml:space="preserve">
|
<data name="VaultTimeoutActionPolicyInEffect" xml:space="preserve">
|
||||||
<value>Pravilo tvoje organizacije podesilo je radnju nakon isteka trezora na: {0}.</value>
|
<value>Your organization policies have set your vault timeout action to {0}.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutToLarge" xml:space="preserve">
|
<data name="VaultTimeoutToLarge" xml:space="preserve">
|
||||||
<value>Vrijeme isteka premašuje ograničenje koje je postavila tvoja organizacija.</value>
|
<value>Vrijeme isteka premašuje ograničenje koje je postavila tvoja organizacija.</value>
|
||||||
@@ -2414,9 +2411,9 @@
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Usluga</value>
|
<value>Usluga</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2494,7 +2491,7 @@
|
|||||||
<value>Slanje podsjetnika glavne lozinke</value>
|
<value>Slanje podsjetnika glavne lozinke</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInAsXOnY" xml:space="preserve">
|
<data name="LoggingInAsXOnY" xml:space="preserve">
|
||||||
<value>Prijava kao {0} na {1}</value>
|
<value>Logging in as {0} on {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotYou" xml:space="preserve">
|
<data name="NotYou" xml:space="preserve">
|
||||||
<value>Nisi ti?</value>
|
<value>Nisi ti?</value>
|
||||||
@@ -2614,37 +2611,19 @@
|
|||||||
<value>EU</value>
|
<value>EU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SelfHosted" xml:space="preserve">
|
<data name="SelfHosted" xml:space="preserve">
|
||||||
<value>Vlastiti poslužitelj</value>
|
<value>Self-hosted</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DataRegion" xml:space="preserve">
|
<data name="DataRegion" xml:space="preserve">
|
||||||
<value>Područje podataka</value>
|
<value>Data region</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Region" xml:space="preserve">
|
<data name="Region" xml:space="preserve">
|
||||||
<value>Regija</value>
|
<value>Region</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UpdateWeakMasterPasswordWarning" xml:space="preserve">
|
<data name="UpdateWeakMasterPasswordWarning" xml:space="preserve">
|
||||||
<value>Tvoja glavna lozinka ne zadovoljava pravila ove organizacije. Za pristup trezoru moraš odmah ažurirati svoju glavnu lozinku. Ako nastaviš, odjaviti ćeš se iz trenutne sesije te ćeš se morati ponovno prijaviti. Aktivne sesije na drugim uređajima mogu ostati aktivne do jedan sat.</value>
|
<value>Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Trenutna glavna lozinka</value>
|
<value>Current master password</value>
|
||||||
</data>
|
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Prijava uspješna!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Odobri drugim uređajem</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Zatraži odobrenje administratora</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Odobri glavnom lozinkom</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Isključi ako koristiš javni uređaj</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Zapamti ovaj uređaj</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
@@ -2657,7 +2636,7 @@
|
|||||||
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
<comment>To state the date in which the cipher was created: Created 03/21/2023</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Application" xml:space="preserve">
|
<data name="Application" xml:space="preserve">
|
||||||
<value>Aplikacija</value>
|
<value>Application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
|
||||||
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
<value>You cannot edit passkey application because it would invalidate the passkey</value>
|
||||||
@@ -2669,7 +2648,7 @@
|
|||||||
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyApplication" xml:space="preserve">
|
<data name="CopyApplication" xml:space="preserve">
|
||||||
<value>Kopiraj aplikaciju</value>
|
<value>Copy application</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
<data name="AvailableForTwoStepLogin" xml:space="preserve">
|
||||||
<value>Available for two-step login</value>
|
<value>Available for two-step login</value>
|
||||||
@@ -2678,94 +2657,58 @@
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Nevažeći API ključ</value>
|
<value>Invalid API key</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Nevažeći API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Zatraženo odobrenje administratora</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Tvoj zahtjev je poslan administratoru.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Dobiti ćeš obavijest kada bude odobreno. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Problem s prijavom?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Prijava kao {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Radnja isteka trezora promijenjena je u odjavu</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BlockAutoFill" xml:space="preserve">
|
<data name="BlockAutoFill" xml:space="preserve">
|
||||||
<value>Blokiraj auto-ispunu</value>
|
<value>Block auto-fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
|
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
|
||||||
<value>Auto-ispuna neće biti ponuđena za ove URI-je.</value>
|
<value>Auto-fill will not be offered for these URIs.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewBlockedURI" xml:space="preserve">
|
<data name="NewBlockedURI" xml:space="preserve">
|
||||||
<value>Novi blokirani URI</value>
|
<value>New blocked URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URISaved" xml:space="preserve">
|
<data name="URISaved" xml:space="preserve">
|
||||||
<value>URI spremljen</value>
|
<value>URI saved</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
||||||
<value>Neispravan format. https://, http://, ili androidapp://</value>
|
<value>Invalid format. Use https://, http://, or androidapp://</value>
|
||||||
<comment>https://, http://, androidapp:// should not be translated</comment>
|
<comment>https://, http://, androidapp:// should not be translated</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditURI" xml:space="preserve">
|
<data name="EditURI" xml:space="preserve">
|
||||||
<value>Uredi URI</value>
|
<value>Edit URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterURI" xml:space="preserve">
|
<data name="EnterURI" xml:space="preserve">
|
||||||
<value>Unesi URI</value>
|
<value>Enter URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
|
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
|
||||||
<value>Format: {0}. Odvoji višestruke URI zarezom.</value>
|
<value>Format: {0}. Separate multiple URIs with a comma.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FormatX" xml:space="preserve">
|
<data name="FormatX" xml:space="preserve">
|
||||||
<value>Format: {0}</value>
|
<value>Format: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidURI" xml:space="preserve">
|
<data name="InvalidURI" xml:space="preserve">
|
||||||
<value>Neispravan URI</value>
|
<value>Invalid URI</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URIRemoved" xml:space="preserve">
|
<data name="URIRemoved" xml:space="preserve">
|
||||||
<value>URI uklonjen</value>
|
<value>URI removed</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThereAreNoBlockedURIs" xml:space="preserve">
|
<data name="ThereAreNoBlockedURIs" xml:space="preserve">
|
||||||
<value>Nema blokiranih URI-a</value>
|
<value>There are no blocked URIs</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
|
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
|
||||||
<value>URI {0} je već blokiran</value>
|
<value>The URI {0} is already blocked</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Nije moguće uređivati više od jednog URI odjednom</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Prijava odobrena</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Prijava uređajem mora biti namještena u postavka Bitwarden mobilne aplikacije. Trebaš drugu opciju?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Prijava uređajem</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Prijava na</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -953,9 +953,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Ez a funkció nem használható, amíg nem frissíted a titkosítási kulcsodat.</value>
|
<value>Ez a funkció nem használható, amíg nem frissíted a titkosítási kulcsodat.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Titkosítási kulcs migráció szükséges. Jelentkezzünk be a webes széfen keresztül a titkosítási kulcs frissítéséhez.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>További információ</value>
|
<value>További információ</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2415,9 +2412,9 @@ TOTP hozzáadása a kulcs biztonságos tárolásához lehetőséget.</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Szolgáltatás</value>
|
<value>Szolgáltatás</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2629,24 +2626,6 @@ Szeretnénk átváltani erre a fiókra?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Jelenlegi mesterjelszó</value>
|
<value>Jelenlegi mesterjelszó</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Megtörtént a bejelentkezés.</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Jóváhagyás másik eszközzel</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Adminisztrátori jóváhagyás kérés</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Jóváhagyás mesterjelszóval</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Kikapcsolás nyilvános eszközzel</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Eszköz megjegyzése</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Hozzáférési kulcs</value>
|
<value>Hozzáférési kulcs</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2679,7 +2658,7 @@ Szeretnénk átváltani erre a fiókra?</value>
|
|||||||
<value>Mesterjelszó újbóli bekérés súgó</value>
|
<value>Mesterjelszó újbóli bekérés súgó</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>A feloldás meghiúsulhat, mert nincs elegendő memória. A megoldáshoz csökkentsül a KDF memóriabeállításait.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Érvénytelen API kulcs</value>
|
<value>Érvénytelen API kulcs</value>
|
||||||
@@ -2687,24 +2666,6 @@ Szeretnénk átváltani erre a fiókra?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Érvénytelen API vezérjel</value>
|
<value>Érvénytelen API vezérjel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Adminisztrátori jóváhagyás kérés történt</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>A kérés elküldésre került az adminisztrátornak.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>A jóváhagyás után értesítés érkezik.</value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Probléma van a bejelentkezéssel?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Bejelentkezés mint {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>A széf időkifutási művelete kijelentkezésre módosult.</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Ez az elem nem osztható meg a szervezettel, mert már van egy ugyanezzel a hozzáférési kulccsal.</value>
|
<value>Ez az elem nem osztható meg a szervezettel, mert már van egy ugyanezzel a hozzáférési kulccsal.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2751,22 +2712,4 @@ Szeretnénk átváltani erre a fiókra?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Nem szerkeszthető több URI egyszerre.</value>
|
<value>Nem szerkeszthető több URI egyszerre.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>A bejelentkezés jóváhagyásra került.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Az eszközzel történő bejelentkezést be kell állítani a Bitwarden alkalmazás beállításaiban. Más opcióra van szükség?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Bejelentkezés eszközzel</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Bejelentkezés:</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Túl sok próbálkozás történt</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>A fiók kijelentkezett.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Proses pindai akan terjadi secara otomatis.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Anda tidak dapat menggunakan fitur ini sampai Anda memperbarui kunci enkripsi Anda.</value>
|
<value>Anda tidak dapat menggunakan fitur ini sampai Anda memperbarui kunci enkripsi Anda.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Pelajari Lebih Lanjut</value>
|
<value>Pelajari Lebih Lanjut</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2680,7 +2659,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2688,24 +2667,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -172,7 +172,7 @@
|
|||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DoYouReallyWantToDelete" xml:space="preserve">
|
<data name="DoYouReallyWantToDelete" xml:space="preserve">
|
||||||
<value>Vuoi davvero eliminarlo? Questa operazione non può essere annullata.</value>
|
<value>Vuoi davvero eliminarlo? Non lo potrai ripristinare.</value>
|
||||||
<comment>Confirmation alert message when deleteing something.</comment>
|
<comment>Confirmation alert message when deleteing something.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Edit" xml:space="preserve">
|
<data name="Edit" xml:space="preserve">
|
||||||
@@ -477,7 +477,7 @@
|
|||||||
<value>Inserisci l'indirizzo email del tuo account per ricevere il suggerimento per la password principale.</value>
|
<value>Inserisci l'indirizzo email del tuo account per ricevere il suggerimento per la password principale.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExntesionReenable" xml:space="preserve">
|
<data name="ExntesionReenable" xml:space="preserve">
|
||||||
<value>Riattiva l'estensione app</value>
|
<value>Riabilita l'estensione app</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionAlmostDone" xml:space="preserve">
|
<data name="ExtensionAlmostDone" xml:space="preserve">
|
||||||
<value>Quasi fatto!</value>
|
<value>Quasi fatto!</value>
|
||||||
@@ -953,9 +953,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Non puoi utilizzare questa funzione finché non aggiorni la tua chiave di criptografia.</value>
|
<value>Non puoi utilizzare questa funzione finché non aggiorni la tua chiave di criptografia.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Migrazione della chiave di criptografia obbligatoria. Accedi tramite la cassaforte web per aggiornare la tua chiave di criptografia.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Ulteriori informazioni</value>
|
<value>Ulteriori informazioni</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ clicca Aggiungi TOTP per salvare la chiave in modo sicuro</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Servizio</value>
|
<value>Servizio</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>FirefoxRelay</value>
|
<value>FirefoxRelay</value>
|
||||||
@@ -2508,7 +2505,7 @@ Vuoi passare a questo account?</value>
|
|||||||
<value>Accedi con dispositivo</value>
|
<value>Accedi con dispositivo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInInitiated" xml:space="preserve">
|
<data name="LogInInitiated" xml:space="preserve">
|
||||||
<value>Accesso avviato</value>
|
<value>Login avviato</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ANotificationHasBeenSentToYourDevice" xml:space="preserve">
|
<data name="ANotificationHasBeenSentToYourDevice" xml:space="preserve">
|
||||||
<value>Una notifica è stata inviata al tuo dispositivo.</value>
|
<value>Una notifica è stata inviata al tuo dispositivo.</value>
|
||||||
@@ -2630,24 +2627,6 @@ Vuoi passare a questo account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Password principale corrente</value>
|
<value>Password principale corrente</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Accesso effettuato!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approva con un altro mio dispositivo</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Richiedi approvazione dell'amministratore</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approva con password principale</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Deseleziona se stai usando un dispositivo pubblico</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Ricorda questo dispositivo</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2680,7 +2659,7 @@ Vuoi passare a questo account?</value>
|
|||||||
<value>Aiuto per chiedere la password principale di nuovo</value>
|
<value>Aiuto per chiedere la password principale di nuovo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Lo sblocco potrebbe non riuscire a causa di memoria insufficiente. Riduci le impostazioni della memoria KDF o imposta lo sbocco biometrico per risolvere il problema.</value>
|
<value>Lo sblocco potrebbe non riuscire a causa di memoria insufficiente. Riduci le impostazioni della memoria KDF per risolvere il problema.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Chiave API non valida</value>
|
<value>Chiave API non valida</value>
|
||||||
@@ -2688,24 +2667,6 @@ Vuoi passare a questo account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Token API non valido</value>
|
<value>Token API non valido</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Approvazione dell'amministratore richiesta</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>La tua richiesta è stata inviata al tuo amministratore.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Riceverai una notifica una volta approvato. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Problemi ad accedere?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Accedendo come {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Azione timeout cassaforte impostata su uscire</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Questo elemento non può essere condiviso con l'organizzazione perché ne esiste già uno con la stessa passkey.</value>
|
<value>Questo elemento non può essere condiviso con l'organizzazione perché ne esiste già uno con la stessa passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2722,7 +2683,7 @@ Vuoi passare a questo account?</value>
|
|||||||
<value>URI salvato</value>
|
<value>URI salvato</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
|
||||||
<value>Formato non valido. Usa https://, http://, o androidapp://</value>
|
<value>Formato non valido. Usa https://, http://, or androidapp://</value>
|
||||||
<comment>https://, http://, androidapp:// should not be translated</comment>
|
<comment>https://, http://, androidapp:// should not be translated</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditURI" xml:space="preserve">
|
<data name="EditURI" xml:space="preserve">
|
||||||
@@ -2752,22 +2713,4 @@ Vuoi passare a questo account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Non puoi modificare più URI contemporaneamente</value>
|
<value>Non puoi modificare più URI contemporaneamente</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Accesso approvato</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>L'accesso con dispositivo deve essere abilitato nelle impostazioni dell'app Bitwarden. Ti serve un'altra opzione?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Accedi con dispositivo</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Accedendo su</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Troppi tentativi</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account uscito.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>暗号キーを更新するまでこの機能は使用できません。</value>
|
<value>暗号キーを更新するまでこの機能は使用できません。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>暗号化キーの移行が必要です。暗号化キーを更新するには、ウェブ保管庫からログインしてください。</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>詳細情報</value>
|
<value>詳細情報</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>サービス</value>
|
<value>サービス</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>現在のマスターパスワード</value>
|
<value>現在のマスターパスワード</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>ログインしました!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>他のデバイスで承認する</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>管理者の承認を要求する</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>マスターパスワードで承認する</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>パブリックデバイスを使用してオフにする</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>このデバイスを記憶する</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>パスキー</value>
|
<value>パスキー</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2680,7 +2659,7 @@
|
|||||||
<value>マスターパスワードの再プロンプトヘルプ</value>
|
<value>マスターパスワードの再プロンプトヘルプ</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>メモリ不足により、ロック解除に失敗する可能性があります。解決するには、KDF のメモリ設定を減らすか、生体認証によるロック解除を設定してください。</value>
|
<value>メモリ不足のためロック解除に失敗することがあります。KDF のメモリ設定を減らして解決してください</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>無効な API キー</value>
|
<value>無効な API キー</value>
|
||||||
@@ -2688,24 +2667,6 @@
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>無効な API トークン</value>
|
<value>無効な API トークン</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>管理者の承認を要求しました</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>要求が管理者に送信されました。</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>承認されると通知されます。 </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>ログインできない場合</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>{0} としてログイン中</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>保管庫のタイムアウトアクションがログアウトに変更されました</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>すでに同じパスキーを持つものがあるため、このアイテムは組織と共有することはできません。</value>
|
<value>すでに同じパスキーを持つものがあるため、このアイテムは組織と共有することはできません。</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>一度に複数の URI を編集することはできません</value>
|
<value>一度に複数の URI を編集することはできません</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>ログインの承認</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Bitwarden アプリで「デバイスでログイン」の設定をする必要があります。別のオプションが必要ですか?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>デバイスでログイン</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>ログイン先</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>試行回数が多すぎます</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>アカウントからログアウトしました。</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>You cannot use this feature until you update your encryption key.</value>
|
<value>You cannot use this feature until you update your encryption key.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Learn more</value>
|
<value>Learn more</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -955,9 +955,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>ನಿಮ್ಮ ಎನ್ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸುವವರೆಗೆ ನೀವು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ.</value>
|
<value>ನಿಮ್ಮ ಎನ್ಕ್ರಿಪ್ಶನ್ ಕೀಲಿಯನ್ನು ನವೀಕರಿಸುವವರೆಗೆ ನೀವು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</value>
|
<value>ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>이 기능을 사용하려면 암호화 키를 업데이트해야 합니다.</value>
|
<value>이 기능을 사용하려면 암호화 키를 업데이트해야 합니다.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>더 알아보기</value>
|
<value>더 알아보기</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1756,7 +1753,7 @@
|
|||||||
<value>Biometric unlock for this account is disabled pending verification of master password.</value>
|
<value>Biometric unlock for this account is disabled pending verification of master password.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccountBiometricInvalidatedExtension" xml:space="preserve">
|
<data name="AccountBiometricInvalidatedExtension" xml:space="preserve">
|
||||||
<value>마스터 비밀번호 인증을 하기 전에는 생체 인식을 사용한 자동 채우기가 비활성화됩니다.</value>
|
<value>Autofill biometric unlock for this account is disabled pending verification of master password.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableSyncOnRefresh" xml:space="preserve">
|
<data name="EnableSyncOnRefresh" xml:space="preserve">
|
||||||
<value>새로고침할 때 동기화 사용</value>
|
<value>새로고침할 때 동기화 사용</value>
|
||||||
@@ -2416,9 +2413,9 @@
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>서비스</value>
|
<value>서비스</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2680,7 +2659,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2688,24 +2667,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Nuskaitymas vyks automatiškai.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Negalite naudoti šios funkcijos, kol neatnaujinsite šifravimo raktą.</value>
|
<value>Negalite naudoti šios funkcijos, kol neatnaujinsite šifravimo raktą.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Sužinoti daugiau</value>
|
<value>Sužinoti daugiau</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ pasirinkite Pridėti TOTP, kad raktas būtų saugiai išsaugotas</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Paslauga</value>
|
<value>Paslauga</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ Ar norite pereiti prie šios paskyros?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Dabartinis pagrindinis slaptažodis</value>
|
<value>Dabartinis pagrindinis slaptažodis</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Ar norite pereiti prie šios paskyros?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Ar norite pereiti prie šios paskyros?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Ar norite pereiti prie šios paskyros?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -831,7 +831,7 @@
|
|||||||
<comment>For 2FA whenever there are no available providers on this device.</comment>
|
<comment>For 2FA whenever there are no available providers on this device.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoTwoStepAvailable" xml:space="preserve">
|
<data name="NoTwoStepAvailable" xml:space="preserve">
|
||||||
<value>Šim kontam ir iestatīta divpakāpju pieteikšanās, bet šajā ierīcē netiek nodrošināts neviens no uzstādītajiem divpakāpju pārbaudes nodrošinātājiem. Lūgums izmantot atbalstītu ierīci un/vai pievienot papildu nodrošinātājus, kas tiek labāk atbalstīti dažādās ierīcēs (piemēram, autentificētāja lietotni).</value>
|
<value>Šim kontam ir iestatīta divpakāpju pieteikšanās, bet šajā ierīcē netiek nodrošināts neviens no uzstādītajiem divpakāpju pārbaudes nodrošinātājiem. Lūgums izmantot atbalstītu ierīci un/vai pievienot papildus nodrošinātājus, kas tiek labāk atbalstīti dažādās ierīcēs (piemēram, autentificētāja lietotni).</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RecoveryCodeTitle" xml:space="preserve">
|
<data name="RecoveryCodeTitle" xml:space="preserve">
|
||||||
<value>Atgūšanas kods</value>
|
<value>Atgūšanas kods</value>
|
||||||
@@ -954,9 +954,6 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Šo iespēju nevar izmantot, kamēr nav atjaunināta šifrēšanas atslēga.</value>
|
<value>Šo iespēju nevar izmantot, kamēr nav atjaunināta šifrēšanas atslēga.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Nepieciešama šifrēšanas atslēgas nomaiņa. Lūgums pieteikties tīmekļa glabātavā, lai atjauninātu savu šifrēšanas atslēgu.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Uzzināt vairāk</value>
|
<value>Uzzināt vairāk</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1387,10 +1384,10 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Meklēt krājumā</value>
|
<value>Meklēt krājumā</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchFileSends" xml:space="preserve">
|
<data name="SearchFileSends" xml:space="preserve">
|
||||||
<value>Meklēt datņu Send</value>
|
<value>Meklēt datņu Sūtījumus</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchTextSends" xml:space="preserve">
|
<data name="SearchTextSends" xml:space="preserve">
|
||||||
<value>Meklēt teksta Send</value>
|
<value>Meklēt teksta Sūtījumus</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchGroup" xml:space="preserve">
|
<data name="SearchGroup" xml:space="preserve">
|
||||||
<value>Meklēt {0}</value>
|
<value>Meklēt {0}</value>
|
||||||
@@ -1499,13 +1496,13 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<comment>ex: Logged in as user@example.com on bitwarden.com.</comment>
|
<comment>ex: Logged in as user@example.com on bitwarden.com.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultLockedMasterPassword" xml:space="preserve">
|
<data name="VaultLockedMasterPassword" xml:space="preserve">
|
||||||
<value>Glabātava ir aizslēgta. Nepieciešams norādīt galveno paroli, lai turpinātu.</value>
|
<value>Glabātava ir slēgta. Nepieciešams norādīt galveno paroli, lai turpinātu.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultLockedPIN" xml:space="preserve">
|
<data name="VaultLockedPIN" xml:space="preserve">
|
||||||
<value>Glabātava ir aizslēgta. Nepieciešams norādīt PIN kodu, lai turpinātu.</value>
|
<value>Glabātava ir slēgta. Nepieciešams norādīt PIN kodu, lai turpinātu.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultLockedIdentity" xml:space="preserve">
|
<data name="VaultLockedIdentity" xml:space="preserve">
|
||||||
<value>Glabātava ir aizslēgta. Jāapstiprina identitāte, lai turpinātu.</value>
|
<value>Glabātava ir slēgta. Jāapstiprina identitāte, lai turpinātu.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Dark" xml:space="preserve">
|
<data name="Dark" xml:space="preserve">
|
||||||
<value>Tumšs</value>
|
<value>Tumšs</value>
|
||||||
@@ -1665,7 +1662,7 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Kods nosūtīts</value>
|
<value>Kods nosūtīts</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ConfirmYourIdentity" xml:space="preserve">
|
<data name="ConfirmYourIdentity" xml:space="preserve">
|
||||||
<value>Jāapstiprina identitāte, lai turpinātu.</value>
|
<value>Lai turpinātu, apstipriniet savu identitāti.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExportVaultWarning" xml:space="preserve">
|
<data name="ExportVaultWarning" xml:space="preserve">
|
||||||
<value>Šī izguve satur glabātavas datus nešifrētā veidā. Izdoto datni nevajadzētu glabāt vai sūtīt nedrošos veidos (piemēram, e-pastā). Izdzēst to uzreiz pēc izmantošanas.</value>
|
<value>Šī izguve satur glabātavas datus nešifrētā veidā. Izdoto datni nevajadzētu glabāt vai sūtīt nedrošos veidos (piemēram, e-pastā). Izdzēst to uzreiz pēc izmantošanas.</value>
|
||||||
@@ -1749,7 +1746,7 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<comment>Confirmation alert message when restoring a soft-deleted cipher.</comment>
|
<comment>Confirmation alert message when restoring a soft-deleted cipher.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DoYouReallyWantToSoftDeleteCipher" xml:space="preserve">
|
<data name="DoYouReallyWantToSoftDeleteCipher" xml:space="preserve">
|
||||||
<value>Vai tiešām pārvietot uz atkritni?</value>
|
<value>Vai tiešām vēlaties sūtīt uz atkritni?</value>
|
||||||
<comment>Confirmation alert message when soft-deleting a cipher.</comment>
|
<comment>Confirmation alert message when soft-deleting a cipher.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccountBiometricInvalidated" xml:space="preserve">
|
<data name="AccountBiometricInvalidated" xml:space="preserve">
|
||||||
@@ -1813,11 +1810,10 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Ielādē</value>
|
<value>Ielādē</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AcceptPolicies" xml:space="preserve">
|
<data name="AcceptPolicies" xml:space="preserve">
|
||||||
<value>Ar šī slēdža ieslēgšanu tiek piekrists sekojošajam:
|
<value>Ieslēdzot šo slēdzi, Tu piekrīti sekojošajam:</value>
|
||||||
</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="AcceptPoliciesError" xml:space="preserve">
|
<data name="AcceptPoliciesError" xml:space="preserve">
|
||||||
<value>Nav apstiprināti izmantošanas noteikumi un privātuma nosacījumi.</value>
|
<value>Nav pieņemti izmantošanas nosacījumi un privātuma politika.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TermsOfService" xml:space="preserve">
|
<data name="TermsOfService" xml:space="preserve">
|
||||||
<value>Izmantošanas nosacījumi</value>
|
<value>Izmantošanas nosacījumi</value>
|
||||||
@@ -1871,19 +1867,19 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Apvienības nosacījumi ietekmē Tavas īpašumtiesību iespējas.</value>
|
<value>Apvienības nosacījumi ietekmē Tavas īpašumtiesību iespējas.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Send" xml:space="preserve">
|
<data name="Send" xml:space="preserve">
|
||||||
<value>Send</value>
|
<value>Sūtīt</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllSends" xml:space="preserve">
|
<data name="AllSends" xml:space="preserve">
|
||||||
<value>Visi Send</value>
|
<value>Visi Sūtījumi</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Sends" xml:space="preserve">
|
<data name="Sends" xml:space="preserve">
|
||||||
<value>Send vienumi</value>
|
<value>Sūtījumi</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NameInfo" xml:space="preserve">
|
<data name="NameInfo" xml:space="preserve">
|
||||||
<value>Lasāms nosaukums, kas apraksta šo Send.</value>
|
<value>Draudzīgs nosaukums, lai raksturotu šo Sūtījumu.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Text" xml:space="preserve">
|
<data name="Text" xml:space="preserve">
|
||||||
@@ -1924,7 +1920,7 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Dzēšanas laiks</value>
|
<value>Dzēšanas laiks</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeletionDateInfo" xml:space="preserve">
|
<data name="DeletionDateInfo" xml:space="preserve">
|
||||||
<value>Send tiks neatgriezeniski izdzēsts norādītajā datumā un laikā.</value>
|
<value>Sūtījums tiks neatgriezeniski dzēsts norādītajā datumā un laikā.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="PendingDelete" xml:space="preserve">
|
<data name="PendingDelete" xml:space="preserve">
|
||||||
@@ -1937,21 +1933,21 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Derīguma beigu laiks</value>
|
<value>Derīguma beigu laiks</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExpirationDateInfo" xml:space="preserve">
|
<data name="ExpirationDateInfo" xml:space="preserve">
|
||||||
<value>Ja iestatīts, piekļuve šim Send beigsies norādītajā datumā un laikā.</value>
|
<value>Ja tas ir iestatīts, piekļuve šim Sūtījumam beigsies norādītajā datumā un laikā.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Expired" xml:space="preserve">
|
<data name="Expired" xml:space="preserve">
|
||||||
<value>Beidzies izmantošanas laiks</value>
|
<value>Beidzies izmantošanas laiks</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MaximumAccessCount" xml:space="preserve">
|
<data name="MaximumAccessCount" xml:space="preserve">
|
||||||
<value>Lielākais pieļaujamais piekļuves reižu skaits</value>
|
<value>Lielākais pieļaujamais piekļuvju skaits</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MaximumAccessCountInfo" xml:space="preserve">
|
<data name="MaximumAccessCountInfo" xml:space="preserve">
|
||||||
<value>Ja iestatīts, lietotāji nevarēs piekļūt šim Send, kad tiks sasniegts lielākais pieļaujamais piekļūšanas reižu skaits.</value>
|
<value>Ja tas ir iestatīts, lietotāji vairs nevarēs piekļūt šim Sūtījumam, tiklīdz būs sasniegts maksimālais piekļuves skaits.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="MaximumAccessCountReached" xml:space="preserve">
|
<data name="MaximumAccessCountReached" xml:space="preserve">
|
||||||
<value>Sasniegts lielākais pieļaujamais piekļuves reižu skaits</value>
|
<value>Sasniegts lielākais pieļaujamais piekļuvju skaits</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CurrentAccessCount" xml:space="preserve">
|
<data name="CurrentAccessCount" xml:space="preserve">
|
||||||
<value>Pašreizējais piekļuvju skaits</value>
|
<value>Pašreizējais piekļuvju skaits</value>
|
||||||
@@ -1960,14 +1956,14 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Jauna parole</value>
|
<value>Jauna parole</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordInfo" xml:space="preserve">
|
<data name="PasswordInfo" xml:space="preserve">
|
||||||
<value>Pēc izvēles pieprasīt paroli, lai lietotāji varētu piekļūt šim Send.</value>
|
<value>Pēc izvēles pieprasīt paroli, lai lietotāji varētu piekļūt šim Sūtījumam.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemovePassword" xml:space="preserve">
|
<data name="RemovePassword" xml:space="preserve">
|
||||||
<value>Noņemt paroli</value>
|
<value>Noņemt paroli</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureRemoveSendPassword" xml:space="preserve">
|
<data name="AreYouSureRemoveSendPassword" xml:space="preserve">
|
||||||
<value>Vai tiešām noņemt paroli?</value>
|
<value>Vai tiešām vēlaties noņemt paroli?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemovingSendPassword" xml:space="preserve">
|
<data name="RemovingSendPassword" xml:space="preserve">
|
||||||
<value>Noņem paroli</value>
|
<value>Noņem paroli</value>
|
||||||
@@ -1976,19 +1972,19 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Parole ir noņemta</value>
|
<value>Parole ir noņemta</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotesInfo" xml:space="preserve">
|
<data name="NotesInfo" xml:space="preserve">
|
||||||
<value>Personīgas piezīmes par šo Send.</value>
|
<value>Privātas piezīmes par šo Sūtījumu.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DisableSend" xml:space="preserve">
|
<data name="DisableSend" xml:space="preserve">
|
||||||
<value>Izslēgt šo Send, lai neviens tam nevarētu piekļūt</value>
|
<value>Deaktivizēt šo Sūtījumu, lai neviens tam nevarētu piekļūt</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoSends" xml:space="preserve">
|
<data name="NoSends" xml:space="preserve">
|
||||||
<value>Kontā nav neviena Send.</value>
|
<value>Jūsu kontā nav neviena Sūtījuma.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddASend" xml:space="preserve">
|
<data name="AddASend" xml:space="preserve">
|
||||||
<value>Pievienot Send</value>
|
<value>Pievienot Sūtījumu</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyLink" xml:space="preserve">
|
<data name="CopyLink" xml:space="preserve">
|
||||||
@@ -1998,35 +1994,35 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Kopīgot saiti</value>
|
<value>Kopīgot saiti</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendLink" xml:space="preserve">
|
<data name="SendLink" xml:space="preserve">
|
||||||
<value>Send saite</value>
|
<value>Sūtījuma saite</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchSends" xml:space="preserve">
|
<data name="SearchSends" xml:space="preserve">
|
||||||
<value>Meklēt Send</value>
|
<value>Meklēt Sūtījumus</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditSend" xml:space="preserve">
|
<data name="EditSend" xml:space="preserve">
|
||||||
<value>Labot Send</value>
|
<value>Labot Sūtījumu</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddSend" xml:space="preserve">
|
<data name="AddSend" xml:space="preserve">
|
||||||
<value>Jauns Send</value>
|
<value>Jauns Sūtījums</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureDeleteSend" xml:space="preserve">
|
<data name="AreYouSureDeleteSend" xml:space="preserve">
|
||||||
<value>Vai tiešām izdzēst šo Send?</value>
|
<value>Vai tiešām vēlaties dzēst šo Sūtījumu?</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendDeleted" xml:space="preserve">
|
<data name="SendDeleted" xml:space="preserve">
|
||||||
<value>Send izdzēsts</value>
|
<value>Sūtījums dzēsts</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendUpdated" xml:space="preserve">
|
<data name="SendUpdated" xml:space="preserve">
|
||||||
<value>Send saglabāts</value>
|
<value>Sūtījums saglabāts</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewSendCreated" xml:space="preserve">
|
<data name="NewSendCreated" xml:space="preserve">
|
||||||
<value>Send izveidots</value>
|
<value>Sūtījums izveidots</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="OneDay" xml:space="preserve">
|
<data name="OneDay" xml:space="preserve">
|
||||||
@@ -2048,30 +2044,30 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Pielāgots</value>
|
<value>Pielāgots</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ShareOnSave" xml:space="preserve">
|
<data name="ShareOnSave" xml:space="preserve">
|
||||||
<value>Kopīgot šo Send pēc saglabāšanas</value>
|
<value>Kopīgojiet šo Sūtījumu pēc saglabāšanas</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendDisabledWarning" xml:space="preserve">
|
<data name="SendDisabledWarning" xml:space="preserve">
|
||||||
<value>Uzņēmuma nosacījumu dēļ ir iespējams dzēst tikai esošu Send.</value>
|
<value>Organizācijas politikas dēļ jūs varat dzēst tikai esošu Sūtījumu.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AboutSend" xml:space="preserve">
|
<data name="AboutSend" xml:space="preserve">
|
||||||
<value>Par Send</value>
|
<value>Par Sūtījumu</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="HideEmail" xml:space="preserve">
|
<data name="HideEmail" xml:space="preserve">
|
||||||
<value>Slēpt e-pasta adresi no saņēmējiem.</value>
|
<value>Slēpt e-pasta adresi no saņēmējiem.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
|
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
|
||||||
<value>Viens vai vairāki apvienības nosacījumi ietekmē Send iespējas.</value>
|
<value>Viena vai vairākas organizācijas politikas ietekmē jūsu Sūtījuma opcijas.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendFilePremiumRequired" xml:space="preserve">
|
<data name="SendFilePremiumRequired" xml:space="preserve">
|
||||||
<value>Ar bezmaksas kontu ir iespējams kopīgot tikai tekstu. Ir nepieciešama Premium dalība, lai Send izmantotu datnes.</value>
|
<value>Bezmaksas kontos var kopīgot tikai tekstu. Lai izmantotu failus ar Sūtījumu, ir nepieciešama Premium dalība.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendFileEmailVerificationRequired" xml:space="preserve">
|
<data name="SendFileEmailVerificationRequired" xml:space="preserve">
|
||||||
<value>Ir jāapstiprina e-pasta adrese, lai izmantotu datnes ar Send. E-pasta edresi var apstiprināt tīmekļa glabātavā.</value>
|
<value>Jums ir jāapstiprina savs e-pasts, lai izmantotu failus ar Sūtījumu. Jūs varat verificēt savu e-pastu tīmekļa glabātuvē.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordPrompt" xml:space="preserve">
|
<data name="PasswordPrompt" xml:space="preserve">
|
||||||
@@ -2180,7 +2176,7 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Konts tika veiksmīgi noņemts</value>
|
<value>Konts tika veiksmīgi noņemts</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeleteAccount" xml:space="preserve">
|
<data name="DeleteAccount" xml:space="preserve">
|
||||||
<value>Izdzēst kontu</value>
|
<value>Dzēst kontu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeletingYourAccountIsPermanent" xml:space="preserve">
|
<data name="DeletingYourAccountIsPermanent" xml:space="preserve">
|
||||||
<value>Konta dzēšana ir neatgriezeniska</value>
|
<value>Konta dzēšana ir neatgriezeniska</value>
|
||||||
@@ -2207,7 +2203,7 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Sūta</value>
|
<value>Sūta</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopySendLinkOnSave" xml:space="preserve">
|
<data name="CopySendLinkOnSave" xml:space="preserve">
|
||||||
<value>Saglabāšanas laikā ievietot Send saiti starpliktuvē</value>
|
<value>Kopēt Sūtījuma saiti saglabāšanas laikā</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendingCode" xml:space="preserve">
|
<data name="SendingCode" xml:space="preserve">
|
||||||
<value>Sūta kodu</value>
|
<value>Sūta kodu</value>
|
||||||
@@ -2216,13 +2212,13 @@ Nolasīšana notiks automātiski.</value>
|
|||||||
<value>Pārbauda</value>
|
<value>Pārbauda</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ResendCode" xml:space="preserve">
|
<data name="ResendCode" xml:space="preserve">
|
||||||
<value>Atkārtoti nosūtīt kodu</value>
|
<value>Nosūtīt kodu vēlreiz</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AVerificationCodeWasSentToYourEmail" xml:space="preserve">
|
<data name="AVerificationCodeWasSentToYourEmail" xml:space="preserve">
|
||||||
<value>Pārbaudes kods tika nosūtīts e-pastā</value>
|
<value>Pārbaudes kods tika nosūtīts e-pastā</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve">
|
<data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve">
|
||||||
<value>Atgadījās kļūda, kad apliecinājuma kods tika sūtīts uz e-pastu. Lūgums mēģināt vēlreiz</value>
|
<value>Nosūtot verifikācijas kodu uz jūsu e-pastu, radās kļūda. Lūdzu mēģiniet vēlreiz</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterTheVerificationCodeThatWasSentToYourEmail" xml:space="preserve">
|
<data name="EnterTheVerificationCodeThatWasSentToYourEmail" xml:space="preserve">
|
||||||
<value>Ievadīt pārbaudes kodu, kas tika nosūtīts e-pastā</value>
|
<value>Ievadīt pārbaudes kodu, kas tika nosūtīts e-pastā</value>
|
||||||
@@ -2417,9 +2413,9 @@ jāizvēlas "Pievienot TOTP", lai droši glabātu atslēgu.</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Pakalpojums</value>
|
<value>Pakalpojums</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2515,7 +2511,7 @@ Vai pārslēgties uz šo kontu?</value>
|
|||||||
<value>Uz ierīci ir nosūtīts paziņojums.</value>
|
<value>Uz ierīci ir nosūtīts paziņojums.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PleaseMakeSureYourVaultIsUnlockedAndTheFingerprintPhraseMatchesOnTheOtherDevice" xml:space="preserve">
|
<data name="PleaseMakeSureYourVaultIsUnlockedAndTheFingerprintPhraseMatchesOnTheOtherDevice" xml:space="preserve">
|
||||||
<value>Lūgums pārliecināties, ka glabātava ir atslēgta un atpazīšanas vārdkopa ir tāda pati arī citā ierīcē.</value>
|
<value>Jāpārliecinās, ka glabātava ir atslēgta un atpazīšanas vārdkopa ir tāda pati arī citā ierīcē.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ResendNotification" xml:space="preserve">
|
<data name="ResendNotification" xml:space="preserve">
|
||||||
<value>Atkārtoti nosūtīt paziņojumu</value>
|
<value>Atkārtoti nosūtīt paziņojumu</value>
|
||||||
@@ -2631,24 +2627,6 @@ Vai pārslēgties uz šo kontu?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Pašreizējā galvenā parole</value>
|
<value>Pašreizējā galvenā parole</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Pieteicies.</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Apstiprināt ar citu savu ierīci</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Pieprasīt pārvaldītāja apstiprinājumu</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Apstiprināt ar galveno paroli</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Izslēgt izmantojot publisku ierīci</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Atcerēties šo ierīci</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Paroļatslēga</value>
|
<value>Paroļatslēga</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2659,7 @@ Vai pārslēgties uz šo kontu?</value>
|
|||||||
<value>Galvenās paroles pārvaicāšanas palīdzība</value>
|
<value>Galvenās paroles pārvaicāšanas palīdzība</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Atslēgšana var neizdoties nepietiekamas atmiņas dēļ. Lai to novērstu, jāsamazina KDF atmiņas iestatījumi vai jāiestata biometriskā atslēgšana.</value>
|
<value>Atslēgšana var neizdoties nepietiekamas atmiņas dēļ. Lai to novērstu, jāsamazina KDF atmiņas iestatījmi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Nederīga API atslēga</value>
|
<value>Nederīga API atslēga</value>
|
||||||
@@ -2689,24 +2667,6 @@ Vai pārslēgties uz šo kontu?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Nederīga API pilnvara</value>
|
<value>Nederīga API pilnvara</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Pieprasīts pārvaldītāja apstiprinājums</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Pieprasījums tika nosūtīts pārvaldītājam.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>Tiks saņemts paziņojums, tiklīdz būs apstiprināts. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Neizdodas pieteikties?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Piesakās kā {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Glabātavas noildzes darbība nomainīta uz atteikšanos</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>Šo vienumu nevar kopīgot ar apvienību, jo tur jau ir tāds ar to pašu paroļatslēgu.</value>
|
<value>Šo vienumu nevar kopīgot ar apvienību, jo tur jau ir tāds ar to pašu paroļatslēgu.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2713,4 @@ Vai pārslēgties uz šo kontu?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Nevar labot vairākus URI vienlaicīgi</value>
|
<value>Nevar labot vairākus URI vienlaicīgi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Pieteikšanās apstiprināta</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Ir jāuzstāda pieteikšanās ar ierīci Bitwarden lietotnes iestatījumos. Nepieciešama cita iespēja?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Pieteikties ar ierīci</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Piesakās</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Pārāk daudz mēģinājumu</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Konts tika izrakstīts.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>നിങ്ങളുടെ എൻക്രിപ്ഷൻ കീ അപ്ഡേറ്റ് ചെയ്യുന്നതുവരെ നിങ്ങൾക്ക് ഈ സവിശേഷത ഉപയോഗിക്കാൻ കഴിയില്ല.</value>
|
<value>നിങ്ങളുടെ എൻക്രിപ്ഷൻ കീ അപ്ഡേറ്റ് ചെയ്യുന്നതുവരെ നിങ്ങൾക്ക് ഈ സവിശേഷത ഉപയോഗിക്കാൻ കഴിയില്ല.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>കൂടുതൽ അറിയാൻ</value>
|
<value>കൂടുതൽ അറിയാൻ</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2416,9 +2413,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2630,24 +2627,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2680,7 +2659,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2688,24 +2667,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2752,22 +2713,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -514,7 +514,7 @@
|
|||||||
<value>अंगुलिमुद्रा</value>
|
<value>अंगुलिमुद्रा</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GeneratePassword" xml:space="preserve">
|
<data name="GeneratePassword" xml:space="preserve">
|
||||||
<value>पासवर्ड निर्माण करा</value>
|
<value>Generate password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GetPasswordHint" xml:space="preserve">
|
<data name="GetPasswordHint" xml:space="preserve">
|
||||||
<value>Get your master password hint</value>
|
<value>Get your master password hint</value>
|
||||||
@@ -587,11 +587,11 @@
|
|||||||
<value>Master password must be at least {0} characters long.</value>
|
<value>Master password must be at least {0} characters long.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MinNumbers" xml:space="preserve">
|
<data name="MinNumbers" xml:space="preserve">
|
||||||
<value>किमान अंक</value>
|
<value>Minimum numbers</value>
|
||||||
<comment>Minimum numeric characters for password generator settings</comment>
|
<comment>Minimum numeric characters for password generator settings</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="MinSpecial" xml:space="preserve">
|
<data name="MinSpecial" xml:space="preserve">
|
||||||
<value>किमान विशेष</value>
|
<value>Minimum special</value>
|
||||||
<comment>Minimum special characters for password generator settings</comment>
|
<comment>Minimum special characters for password generator settings</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="MoreSettings" xml:space="preserve">
|
<data name="MoreSettings" xml:space="preserve">
|
||||||
@@ -632,10 +632,10 @@
|
|||||||
<value>Other</value>
|
<value>Other</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordGenerated" xml:space="preserve">
|
<data name="PasswordGenerated" xml:space="preserve">
|
||||||
<value>पासवर्ड निर्माण झाला</value>
|
<value>Password generated</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordGenerator" xml:space="preserve">
|
<data name="PasswordGenerator" xml:space="preserve">
|
||||||
<value>पासवर्ड जनित्र</value>
|
<value>Password generator</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordHint" xml:space="preserve">
|
<data name="PasswordHint" xml:space="preserve">
|
||||||
<value>Password hint</value>
|
<value>Password hint</value>
|
||||||
@@ -657,7 +657,7 @@
|
|||||||
<value>Please consider helping us out with a good review!</value>
|
<value>Please consider helping us out with a good review!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RegeneratePassword" xml:space="preserve">
|
<data name="RegeneratePassword" xml:space="preserve">
|
||||||
<value>पासवर्ड पुनर्जनित करा</value>
|
<value>Regenerate password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RetypeMasterPassword" xml:space="preserve">
|
<data name="RetypeMasterPassword" xml:space="preserve">
|
||||||
<value>Re-type master password</value>
|
<value>Re-type master password</value>
|
||||||
@@ -954,9 +954,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>You cannot use this feature until you update your encryption key.</value>
|
<value>You cannot use this feature until you update your encryption key.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Learn more</value>
|
<value>Learn more</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1011,16 +1008,16 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Security code</value>
|
<value>Security code</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeCard" xml:space="preserve">
|
<data name="TypeCard" xml:space="preserve">
|
||||||
<value>कार्ड</value>
|
<value>Card</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeIdentity" xml:space="preserve">
|
<data name="TypeIdentity" xml:space="preserve">
|
||||||
<value>ओळख</value>
|
<value>Identity</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeLogin" xml:space="preserve">
|
<data name="TypeLogin" xml:space="preserve">
|
||||||
<value>प्रवेश</value>
|
<value>Login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeSecureNote" xml:space="preserve">
|
<data name="TypeSecureNote" xml:space="preserve">
|
||||||
<value>संरक्षित चिठ्ठी</value>
|
<value>Secure note</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Address1" xml:space="preserve">
|
<data name="Address1" xml:space="preserve">
|
||||||
<value>Address 1</value>
|
<value>Address 1</value>
|
||||||
@@ -1041,7 +1038,7 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Brand</value>
|
<value>Brand</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CardholderName" xml:space="preserve">
|
<data name="CardholderName" xml:space="preserve">
|
||||||
<value>कार्डधारकाचे नाव</value>
|
<value>Cardholder name</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CityTown" xml:space="preserve">
|
<data name="CityTown" xml:space="preserve">
|
||||||
<value>City / Town</value>
|
<value>City / Town</value>
|
||||||
@@ -1161,16 +1158,16 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Go to my vault</value>
|
<value>Go to my vault</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Collections" xml:space="preserve">
|
<data name="Collections" xml:space="preserve">
|
||||||
<value>संग्रह</value>
|
<value>Collections</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoItemsCollection" xml:space="preserve">
|
<data name="NoItemsCollection" xml:space="preserve">
|
||||||
<value>ह्या संग्रहात एकही वस्तू नाही.</value>
|
<value>There are no items in this collection.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoItemsFolder" xml:space="preserve">
|
<data name="NoItemsFolder" xml:space="preserve">
|
||||||
<value>There are no items in this folder.</value>
|
<value>There are no items in this folder.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoItemsTrash" xml:space="preserve">
|
<data name="NoItemsTrash" xml:space="preserve">
|
||||||
<value>कचराकुंडी रिकामी आहे.</value>
|
<value>There are no items in the trash.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillAccessibilityService" xml:space="preserve">
|
<data name="AutofillAccessibilityService" xml:space="preserve">
|
||||||
<value>Auto-fill Accessibility Service</value>
|
<value>Auto-fill Accessibility Service</value>
|
||||||
@@ -1334,7 +1331,7 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Invalid email address.</value>
|
<value>Invalid email address.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Cards" xml:space="preserve">
|
<data name="Cards" xml:space="preserve">
|
||||||
<value>कार्ड</value>
|
<value>Cards</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Identities" xml:space="preserve">
|
<data name="Identities" xml:space="preserve">
|
||||||
<value>Identities</value>
|
<value>Identities</value>
|
||||||
@@ -1343,7 +1340,7 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Logins</value>
|
<value>Logins</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SecureNotes" xml:space="preserve">
|
<data name="SecureNotes" xml:space="preserve">
|
||||||
<value>संरक्षित चिठ्ठ्या</value>
|
<value>Secure notes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllItems" xml:space="preserve">
|
<data name="AllItems" xml:space="preserve">
|
||||||
<value>All items</value>
|
<value>All items</value>
|
||||||
@@ -1375,7 +1372,7 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Password history</value>
|
<value>Password history</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Types" xml:space="preserve">
|
<data name="Types" xml:space="preserve">
|
||||||
<value>प्रकार</value>
|
<value>Types</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoPasswordsToList" xml:space="preserve">
|
<data name="NoPasswordsToList" xml:space="preserve">
|
||||||
<value>No passwords to list.</value>
|
<value>No passwords to list.</value>
|
||||||
@@ -1384,7 +1381,7 @@ Scanning will happen automatically.</value>
|
|||||||
<value>There are no items to list.</value>
|
<value>There are no items to list.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchCollection" xml:space="preserve">
|
<data name="SearchCollection" xml:space="preserve">
|
||||||
<value>संग्रहात शोधा</value>
|
<value>Search collection</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchFileSends" xml:space="preserve">
|
<data name="SearchFileSends" xml:space="preserve">
|
||||||
<value>Search file Sends</value>
|
<value>Search file Sends</value>
|
||||||
@@ -1425,7 +1422,7 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Item has been shared.</value>
|
<value>Item has been shared.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SelectOneCollection" xml:space="preserve">
|
<data name="SelectOneCollection" xml:space="preserve">
|
||||||
<value>किमान एक संग्रह तरी निवडला पाहिजे.</value>
|
<value>You must select at least one collection.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Share" xml:space="preserve">
|
<data name="Share" xml:space="preserve">
|
||||||
<value>Share</value>
|
<value>Share</value>
|
||||||
@@ -1443,7 +1440,7 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved.</value>
|
<value>Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NumberOfWords" xml:space="preserve">
|
<data name="NumberOfWords" xml:space="preserve">
|
||||||
<value>शब्दांची संख्या</value>
|
<value>Number of words</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passphrase" xml:space="preserve">
|
<data name="Passphrase" xml:space="preserve">
|
||||||
<value>Passphrase</value>
|
<value>Passphrase</value>
|
||||||
@@ -1456,7 +1453,7 @@ Scanning will happen automatically.</value>
|
|||||||
<comment>To clear something out. example: To clear browser history.</comment>
|
<comment>To clear something out. example: To clear browser history.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Generator" xml:space="preserve">
|
<data name="Generator" xml:space="preserve">
|
||||||
<value>जनित्र</value>
|
<value>Generator</value>
|
||||||
<comment>Short for "Password Generator"</comment>
|
<comment>Short for "Password Generator"</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoFoldersToList" xml:space="preserve">
|
<data name="NoFoldersToList" xml:space="preserve">
|
||||||
@@ -1604,11 +1601,11 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Your theme changes will apply when the app is restarted.</value>
|
<value>Your theme changes will apply when the app is restarted.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Capitalize" xml:space="preserve">
|
<data name="Capitalize" xml:space="preserve">
|
||||||
<value>पहिले अक्षर मोठे करा</value>
|
<value>Capitalize</value>
|
||||||
<comment>ex. Uppercase the first character of a word.</comment>
|
<comment>ex. Uppercase the first character of a word.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="IncludeNumber" xml:space="preserve">
|
<data name="IncludeNumber" xml:space="preserve">
|
||||||
<value>अंक समविष्ट करा</value>
|
<value>Include number</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Download" xml:space="preserve">
|
<data name="Download" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>Download</value>
|
||||||
@@ -1687,7 +1684,7 @@ Scanning will happen automatically.</value>
|
|||||||
<value>There was a problem exporting your vault. If the problem persists, you'll need to export from the web vault.</value>
|
<value>There was a problem exporting your vault. If the problem persists, you'll need to export from the web vault.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExportVaultSuccess" xml:space="preserve">
|
<data name="ExportVaultSuccess" xml:space="preserve">
|
||||||
<value>तिजोरी निर्यात यशस्वी</value>
|
<value>Vault exported successfully</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Clone" xml:space="preserve">
|
<data name="Clone" xml:space="preserve">
|
||||||
<value>Clone</value>
|
<value>Clone</value>
|
||||||
@@ -1733,7 +1730,7 @@ Scanning will happen automatically.</value>
|
|||||||
<comment>Confirmation message after successfully restoring a soft-deleted item</comment>
|
<comment>Confirmation message after successfully restoring a soft-deleted item</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Trash" xml:space="preserve">
|
<data name="Trash" xml:space="preserve">
|
||||||
<value>कचराकुंडी</value>
|
<value>Trash</value>
|
||||||
<comment>(noun) Location of deleted items which have not yet been permanently deleted</comment>
|
<comment>(noun) Location of deleted items which have not yet been permanently deleted</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchTrash" xml:space="preserve">
|
<data name="SearchTrash" xml:space="preserve">
|
||||||
@@ -1871,15 +1868,15 @@ Scanning will happen automatically.</value>
|
|||||||
<value>An organization policy is affecting your ownership options.</value>
|
<value>An organization policy is affecting your ownership options.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Send" xml:space="preserve">
|
<data name="Send" xml:space="preserve">
|
||||||
<value>पाठवणी</value>
|
<value>Send</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllSends" xml:space="preserve">
|
<data name="AllSends" xml:space="preserve">
|
||||||
<value>सर्व पाठवण्या</value>
|
<value>All Sends</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Sends" xml:space="preserve">
|
<data name="Sends" xml:space="preserve">
|
||||||
<value>पाठवण्या</value>
|
<value>Sends</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NameInfo" xml:space="preserve">
|
<data name="NameInfo" xml:space="preserve">
|
||||||
@@ -1988,7 +1985,7 @@ Scanning will happen automatically.</value>
|
|||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddASend" xml:space="preserve">
|
<data name="AddASend" xml:space="preserve">
|
||||||
<value>पाठवणी जोडा</value>
|
<value>Add a Send</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyLink" xml:space="preserve">
|
<data name="CopyLink" xml:space="preserve">
|
||||||
@@ -2264,10 +2261,10 @@ Scanning will happen automatically.</value>
|
|||||||
<value>Filter items by vault</value>
|
<value>Filter items by vault</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllVaults" xml:space="preserve">
|
<data name="AllVaults" xml:space="preserve">
|
||||||
<value>सर्व तिजोऱ्या</value>
|
<value>All vaults</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Vaults" xml:space="preserve">
|
<data name="Vaults" xml:space="preserve">
|
||||||
<value>तिजोऱ्या</value>
|
<value>Vaults</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultFilterDescription" xml:space="preserve">
|
<data name="VaultFilterDescription" xml:space="preserve">
|
||||||
<value>Vault: {0}</value>
|
<value>Vault: {0}</value>
|
||||||
@@ -2388,7 +2385,7 @@ select Add TOTP to store the key safely</value>
|
|||||||
<value>Password type</value>
|
<value>Password type</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WhatWouldYouLikeToGenerate" xml:space="preserve">
|
<data name="WhatWouldYouLikeToGenerate" xml:space="preserve">
|
||||||
<value>काय निर्माण करायचे?</value>
|
<value>What would you like to generate?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UsernameType" xml:space="preserve">
|
<data name="UsernameType" xml:space="preserve">
|
||||||
<value>Username type</value>
|
<value>Username type</value>
|
||||||
@@ -2417,9 +2414,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2444,7 +2441,7 @@ select Add TOTP to store the key safely</value>
|
|||||||
<value>Are you sure you want to overwrite the current username?</value>
|
<value>Are you sure you want to overwrite the current username?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GenerateUsername" xml:space="preserve">
|
<data name="GenerateUsername" xml:space="preserve">
|
||||||
<value>वापरकर्ता नाव निर्माण करा</value>
|
<value>Generate username</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailType" xml:space="preserve">
|
<data name="EmailType" xml:space="preserve">
|
||||||
<value>Email Type</value>
|
<value>Email Type</value>
|
||||||
@@ -2631,24 +2628,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ Scanning will happen automatically.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>You cannot use this feature until you update your encryption key.</value>
|
<value>You cannot use this feature until you update your encryption key.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Learn more</value>
|
<value>Learn more</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2417,9 +2414,9 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>Firefox Relay</value>
|
||||||
@@ -2631,24 +2628,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Current master password</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
|
||||||
<value>Logged in!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
|
||||||
<value>Approve with my other device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
|
||||||
<value>Request admin approval</value>
|
|
||||||
</data>
|
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
|
||||||
<value>Approve with master password</value>
|
|
||||||
</data>
|
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
|
||||||
<value>Turn off using a public device</value>
|
|
||||||
</data>
|
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
|
||||||
<value>Remember this device</value>
|
|
||||||
</data>
|
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2681,7 +2660,7 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Invalid API key</value>
|
||||||
@@ -2689,24 +2668,6 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
<data name="InvalidAPIToken" xml:space="preserve">
|
||||||
<value>Invalid API token</value>
|
<value>Invalid API token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
|
||||||
<value>Admin approval requested</value>
|
|
||||||
</data>
|
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
|
||||||
<value>Your request has been sent to your admin.</value>
|
|
||||||
</data>
|
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
|
||||||
<value>You will be notified once approved. </value>
|
|
||||||
</data>
|
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
|
||||||
<value>Trouble logging in?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
|
||||||
<value>Logging in as {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
|
||||||
<value>Vault timeout action changed to log out</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
<value>This item cannot be shared with the organization because there is one already with the same passkey.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2753,22 +2714,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
|
||||||
<value>Cannot edit multiple URIs at once</value>
|
<value>Cannot edit multiple URIs at once</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
|
||||||
<value>Login approved</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
|
||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
|
||||||
</data>
|
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
|
||||||
<value>Log in with device</value>
|
|
||||||
</data>
|
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
|
||||||
<value>Logging in on</value>
|
|
||||||
</data>
|
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Too many attempts</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user