mirror of
https://github.com/bitwarden/mobile
synced 2025-12-05 23:53:33 +00:00
Compare commits
1 Commits
PM-4047/fi
...
v2023.9.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f634ff3f0 |
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@@ -6,8 +6,6 @@
|
|||||||
# Unless a later match takes precedence
|
# Unless a later match takes precedence
|
||||||
# @bitwarden/tech-leads
|
# @bitwarden/tech-leads
|
||||||
|
|
||||||
@bitwarden/dept-development-mobile
|
|
||||||
|
|
||||||
## Auth team files ##
|
## Auth team files ##
|
||||||
|
|
||||||
## Platform team files ##
|
## Platform team files ##
|
||||||
|
|||||||
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -710,7 +710,7 @@ jobs:
|
|||||||
ARCHIVE_PATH="./src/iOS/bin/iPhoneSimulator/Release/BitwardeniOS.app"
|
ARCHIVE_PATH="./src/iOS/bin/iPhoneSimulator/Release/BitwardeniOS.app"
|
||||||
EXPORT_PATH="./bitwarden-export"
|
EXPORT_PATH="./bitwarden-export"
|
||||||
|
|
||||||
zip -r -q -j BitwardeniOS.app.zip $ARCHIVE_PATH
|
zip -r -q BitwardeniOS.app.zip $ARCHIVE_PATH
|
||||||
mv BitwardeniOS.app.zip $EXPORT_PATH
|
mv BitwardeniOS.app.zip $EXPORT_PATH
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
|||||||
@@ -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.9.0" 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" />
|
||||||
|
|||||||
@@ -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,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;
|
||||||
@@ -73,12 +72,11 @@ namespace Bit.App.Pages
|
|||||||
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
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string MasterPassword
|
public string MasterPassword
|
||||||
@@ -157,12 +155,8 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
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
|
||||||
{
|
{
|
||||||
@@ -184,9 +178,8 @@ namespace Bit.App.Pages
|
|||||||
var ephemeralPinSet = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync()
|
var ephemeralPinSet = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync()
|
||||||
?? await _stateService.GetPinProtectedKeyAsync();
|
?? await _stateService.GetPinProtectedKeyAsync();
|
||||||
PinEnabled = (_pinStatus == PinLockType.Transient && ephemeralPinSet != null) ||
|
PinEnabled = (_pinStatus == PinLockType.Transient && ephemeralPinSet != null) ||
|
||||||
_pinStatus == PinLockType.Persistent;
|
_pinStatus == PinLockType.Persistent;
|
||||||
|
BiometricEnabled = await _vaultTimeoutService.IsBiometricLockSetAsync() && await _biometricService.CanUseBiometricsUnlockAsync();
|
||||||
BiometricEnabled = await IsBiometricsEnabledAsync();
|
|
||||||
|
|
||||||
// Users without MP and without biometric or pin has no MP to unlock with
|
// Users without MP and without biometric or pin has no MP to unlock with
|
||||||
_hasMasterPassword = await _userVerificationService.HasMasterPasswordAsync();
|
_hasMasterPassword = await _userVerificationService.HasMasterPasswordAsync();
|
||||||
@@ -221,9 +214,7 @@ namespace Bit.App.Pages
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
PageTitle = _hasMasterPassword ? AppResources.VerifyMasterPassword : AppResources.UnlockVault;
|
PageTitle = _hasMasterPassword ? AppResources.VerifyMasterPassword : AppResources.UnlockVault;
|
||||||
LockedVerifyText = _hasMasterPassword
|
LockedVerifyText = _hasMasterPassword ? AppResources.VaultLockedMasterPassword : AppResources.VaultLockedIdentity;
|
||||||
? AppResources.VaultLockedMasterPassword
|
|
||||||
: AppResources.VaultLockedIdentity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BiometricEnabled)
|
if (BiometricEnabled)
|
||||||
@@ -242,32 +233,11 @@ 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;
|
|
||||||
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))
|
if (PinEnabled && string.IsNullOrWhiteSpace(Pin))
|
||||||
{
|
{
|
||||||
@@ -276,84 +246,6 @@ namespace Bit.App.Pages
|
|||||||
AppResources.Ok);
|
AppResources.Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var failed = true;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
EncString userKeyPin;
|
|
||||||
EncString oldPinProtected;
|
|
||||||
switch (_pinStatus)
|
|
||||||
{
|
|
||||||
case PinLockType.Persistent:
|
|
||||||
{
|
|
||||||
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,
|
|
||||||
oldPinProtected
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
userKey = await _cryptoService.DecryptUserKeyWithPinAsync(
|
|
||||||
Pin,
|
|
||||||
_email,
|
|
||||||
kdfConfig,
|
|
||||||
userKeyPin
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
var protectedPin = await _stateService.GetProtectedPinAsync();
|
|
||||||
var decryptedPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), userKey);
|
|
||||||
failed = decryptedPin != Pin;
|
|
||||||
if (!failed)
|
|
||||||
{
|
|
||||||
Pin = string.Empty;
|
|
||||||
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
|
||||||
await SetUserKeyAndContinueAsync(userKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (LegacyUserException)
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
failed = true;
|
|
||||||
}
|
|
||||||
if (failed)
|
|
||||||
{
|
|
||||||
var invalidUnlockAttempts = await AppHelpers.IncrementInvalidUnlockAttemptsAsync();
|
|
||||||
if (invalidUnlockAttempts >= 5)
|
|
||||||
{
|
|
||||||
_messagingService.Send("logout");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
await _platformUtilsService.ShowDialogAsync(AppResources.InvalidPIN,
|
|
||||||
AppResources.AnErrorHasOccurred);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task UnlockWithMasterPasswordAsync(KdfConfig kdfConfig)
|
|
||||||
{
|
|
||||||
if (!PinEnabled && string.IsNullOrWhiteSpace(MasterPassword))
|
if (!PinEnabled && string.IsNullOrWhiteSpace(MasterPassword))
|
||||||
{
|
{
|
||||||
await Page.DisplayAlert(AppResources.AnErrorHasOccurred,
|
await Page.DisplayAlert(AppResources.AnErrorHasOccurred,
|
||||||
@@ -362,78 +254,142 @@ namespace Bit.App.Pages
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var masterKey = await _cryptoService.MakeMasterKeyAsync(MasterPassword, _email, kdfConfig);
|
ShowPassword = false;
|
||||||
if (await _cryptoService.IsLegacyUserAsync(masterKey))
|
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
|
||||||
{
|
|
||||||
throw new LegacyUserException();
|
|
||||||
}
|
|
||||||
|
|
||||||
var storedKeyHash = await _cryptoService.GetMasterKeyHashAsync();
|
if (PinEnabled)
|
||||||
var passwordValid = false;
|
|
||||||
MasterPasswordPolicyOptions enforcedMasterPasswordOptions = null;
|
|
||||||
|
|
||||||
if (storedKeyHash != null)
|
|
||||||
{
|
{
|
||||||
// Offline unlock possible
|
var failed = true;
|
||||||
passwordValid = await _cryptoService.CompareAndUpdateKeyHashAsync(MasterPassword, masterKey);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Online unlock required
|
|
||||||
await _deviceActionService.ShowLoadingAsync(AppResources.Loading);
|
|
||||||
var keyHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, masterKey,
|
|
||||||
HashPurpose.ServerAuthorization);
|
|
||||||
var request = new PasswordVerificationRequest();
|
|
||||||
request.MasterPasswordHash = keyHash;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await _apiService.PostAccountVerifyPasswordAsync(request);
|
EncString userKeyPin = null;
|
||||||
enforcedMasterPasswordOptions = response.MasterPasswordPolicy;
|
EncString oldPinProtected = null;
|
||||||
passwordValid = true;
|
if (_pinStatus == PinLockType.Persistent)
|
||||||
var localKeyHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, masterKey,
|
{
|
||||||
HashPurpose.LocalAuthorization);
|
userKeyPin = await _stateService.GetPinKeyEncryptedUserKeyAsync();
|
||||||
await _cryptoService.SetMasterKeyHashAsync(localKeyHash);
|
var oldEncryptedKey = await _stateService.GetPinProtectedAsync();
|
||||||
|
oldPinProtected = oldEncryptedKey != null ? new EncString(oldEncryptedKey) : null;
|
||||||
|
}
|
||||||
|
else if (_pinStatus == PinLockType.Transient)
|
||||||
|
{
|
||||||
|
userKeyPin = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync();
|
||||||
|
oldPinProtected = await _stateService.GetPinProtectedKeyAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserKey userKey;
|
||||||
|
if (oldPinProtected != null)
|
||||||
|
{
|
||||||
|
userKey = await _cryptoService.DecryptAndMigrateOldPinKeyAsync(
|
||||||
|
_pinStatus == PinLockType.Transient,
|
||||||
|
Pin,
|
||||||
|
_email,
|
||||||
|
kdfConfig,
|
||||||
|
oldPinProtected
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
userKey = await _cryptoService.DecryptUserKeyWithPinAsync(
|
||||||
|
Pin,
|
||||||
|
_email,
|
||||||
|
kdfConfig,
|
||||||
|
userKeyPin
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
var protectedPin = await _stateService.GetProtectedPinAsync();
|
||||||
|
var decryptedPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), userKey);
|
||||||
|
failed = decryptedPin != Pin;
|
||||||
|
if (!failed)
|
||||||
|
{
|
||||||
|
Pin = string.Empty;
|
||||||
|
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
||||||
|
await SetUserKeyAndContinueAsync(userKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine(">>> {0}: {1}", e.GetType(), e.StackTrace);
|
failed = true;
|
||||||
}
|
}
|
||||||
await _deviceActionService.HideLoadingAsync();
|
if (failed)
|
||||||
}
|
|
||||||
|
|
||||||
if (passwordValid)
|
|
||||||
{
|
|
||||||
if (await RequirePasswordChangeAsync(enforcedMasterPasswordOptions))
|
|
||||||
{
|
{
|
||||||
// Save the ForcePasswordResetReason to force a password reset after unlock
|
var invalidUnlockAttempts = await AppHelpers.IncrementInvalidUnlockAttemptsAsync();
|
||||||
await _stateService.SetForcePasswordResetReasonAsync(
|
if (invalidUnlockAttempts >= 5)
|
||||||
ForcePasswordResetReason.WeakMasterPasswordOnLogin);
|
{
|
||||||
}
|
_messagingService.Send("logout");
|
||||||
|
return;
|
||||||
MasterPassword = string.Empty;
|
}
|
||||||
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
await _platformUtilsService.ShowDialogAsync(AppResources.InvalidPIN,
|
||||||
|
AppResources.AnErrorHasOccurred);
|
||||||
var userKey = await _cryptoService.DecryptUserKeyWithMasterKeyAsync(masterKey);
|
|
||||||
await _cryptoService.SetMasterKeyAsync(masterKey);
|
|
||||||
await SetUserKeyAndContinueAsync(userKey);
|
|
||||||
|
|
||||||
// Re-enable biometrics
|
|
||||||
if (BiometricEnabled & !BiometricIntegrityValid)
|
|
||||||
{
|
|
||||||
await _biometricService.SetupBiometricAsync();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var invalidUnlockAttempts = await AppHelpers.IncrementInvalidUnlockAttemptsAsync();
|
var masterKey = await _cryptoService.MakeMasterKeyAsync(MasterPassword, _email, kdfConfig);
|
||||||
if (invalidUnlockAttempts >= 5)
|
var storedKeyHash = await _cryptoService.GetMasterKeyHashAsync();
|
||||||
|
var passwordValid = false;
|
||||||
|
MasterPasswordPolicyOptions enforcedMasterPasswordOptions = null;
|
||||||
|
|
||||||
|
if (storedKeyHash != null)
|
||||||
{
|
{
|
||||||
_messagingService.Send("logout");
|
// Offline unlock possible
|
||||||
return;
|
passwordValid = await _cryptoService.CompareAndUpdateKeyHashAsync(MasterPassword, masterKey);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Online unlock required
|
||||||
|
await _deviceActionService.ShowLoadingAsync(AppResources.Loading);
|
||||||
|
var keyHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, masterKey, HashPurpose.ServerAuthorization);
|
||||||
|
var request = new PasswordVerificationRequest();
|
||||||
|
request.MasterPasswordHash = keyHash;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var response = await _apiService.PostAccountVerifyPasswordAsync(request);
|
||||||
|
enforcedMasterPasswordOptions = response.MasterPasswordPolicy;
|
||||||
|
passwordValid = true;
|
||||||
|
var localKeyHash = await _cryptoService.HashMasterKeyAsync(MasterPassword, masterKey, HashPurpose.LocalAuthorization);
|
||||||
|
await _cryptoService.SetMasterKeyHashAsync(localKeyHash);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine(">>> {0}: {1}", e.GetType(), e.StackTrace);
|
||||||
|
}
|
||||||
|
await _deviceActionService.HideLoadingAsync();
|
||||||
|
}
|
||||||
|
if (passwordValid)
|
||||||
|
{
|
||||||
|
if (await RequirePasswordChangeAsync(enforcedMasterPasswordOptions))
|
||||||
|
{
|
||||||
|
// Save the ForcePasswordResetReason to force a password reset after unlock
|
||||||
|
await _stateService.SetForcePasswordResetReasonAsync(
|
||||||
|
ForcePasswordResetReason.WeakMasterPasswordOnLogin);
|
||||||
|
}
|
||||||
|
|
||||||
|
MasterPassword = string.Empty;
|
||||||
|
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
|
||||||
|
|
||||||
|
var userKey = await _cryptoService.DecryptUserKeyWithMasterKeyAsync(masterKey);
|
||||||
|
await _cryptoService.SetMasterKeyAsync(masterKey);
|
||||||
|
await SetUserKeyAndContinueAsync(userKey);
|
||||||
|
|
||||||
|
// Re-enable biometrics
|
||||||
|
if (BiometricEnabled & !BiometricIntegrityValid)
|
||||||
|
{
|
||||||
|
await _biometricService.SetupBiometricAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var invalidUnlockAttempts = await AppHelpers.IncrementInvalidUnlockAttemptsAsync();
|
||||||
|
if (invalidUnlockAttempts >= 5)
|
||||||
|
{
|
||||||
|
_messagingService.Send("logout");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await _platformUtilsService.ShowDialogAsync(AppResources.InvalidMasterPassword,
|
||||||
|
AppResources.AnErrorHasOccurred);
|
||||||
}
|
}
|
||||||
await _platformUtilsService.ShowDialogAsync(AppResources.InvalidMasterPassword,
|
|
||||||
AppResources.AnErrorHasOccurred);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -496,36 +452,25 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
ShowPassword = !ShowPassword;
|
ShowPassword = !ShowPassword;
|
||||||
var secret = PinEnabled ? Pin : MasterPassword;
|
var secret = PinEnabled ? 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();
|
||||||
|
BiometricButtonVisible = BiometricIntegrityValid;
|
||||||
|
if (!BiometricEnabled || !BiometricIntegrityValid)
|
||||||
{
|
{
|
||||||
BiometricIntegrityValid = await _platformUtilsService.IsBiometricIntegrityValidAsync();
|
return;
|
||||||
BiometricButtonVisible = BiometricIntegrityValid;
|
|
||||||
if (!BiometricEnabled || !BiometricIntegrityValid)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var success = await _platformUtilsService.AuthenticateBiometricAsync(null,
|
|
||||||
PinEnabled ? AppResources.PIN : AppResources.MasterPassword,
|
|
||||||
() => _secretEntryFocusWeakEventManager.RaiseEvent((int?)null, nameof(FocusSecretEntry)),
|
|
||||||
!PinEnabled && !HasMasterPassword);
|
|
||||||
|
|
||||||
await _stateService.SetBiometricLockedAsync(!success);
|
|
||||||
if (success)
|
|
||||||
{
|
|
||||||
var userKey = await _cryptoService.GetBiometricUnlockKeyAsync();
|
|
||||||
await SetUserKeyAndContinueAsync(userKey);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (LegacyUserException)
|
var success = await _platformUtilsService.AuthenticateBiometricAsync(null,
|
||||||
|
PinEnabled ? AppResources.PIN : AppResources.MasterPassword,
|
||||||
|
() => _secretEntryFocusWeakEventManager.RaiseEvent((int?)null, nameof(FocusSecretEntry)));
|
||||||
|
await _stateService.SetBiometricLockedAsync(!success);
|
||||||
|
if (success)
|
||||||
{
|
{
|
||||||
await HandleLegacyUserAsync();
|
var userKey = await _cryptoService.GetBiometricUnlockKeyAsync();
|
||||||
|
await SetUserKeyAndContinueAsync(userKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,29 +493,5 @@ namespace Bit.App.Pages
|
|||||||
_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();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,9 +229,9 @@
|
|||||||
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}" />
|
||||||
|
|
||||||
<Grid StyleClass="box-row, box-row-input">
|
<Grid StyleClass="box-row, box-row-input">
|
||||||
@@ -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">
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
@@ -702,12 +708,18 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
return await _platformUtilsService.ShowDialogAsync(AppResources.ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem, AppResources.PasskeyWillNotBeCopied, AppResources.Yes, AppResources.No);
|
if (Cipher.Type == CipherType.Login && Cipher.Login?.Fido2Key != null)
|
||||||
|
{
|
||||||
|
return await _platformUtilsService.ShowDialogAsync(AppResources.ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem, AppResources.PasskeyWillNotBeCopied, AppResources.Yes, AppResources.No);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
56
src/App/Resources/AppResources.Designer.cs
generated
56
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,15 +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>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Admin approval requested.
|
/// Looks up a localized string similar to Admin approval requested.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -526,6 +508,15 @@ 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>
|
/// <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>
|
||||||
@@ -1750,15 +1741,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 +2353,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>
|
||||||
@@ -6525,15 +6498,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>
|
||||||
@@ -6787,7 +6751,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 {
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -2764,10 +2761,4 @@ Wil u na die rekening omskakel?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>جارٍ تسجيل الدخول</value>
|
<value>جارٍ تسجيل الدخول</value>
|
||||||
</data>
|
</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 @@ 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>
|
||||||
@@ -2648,38 +2645,38 @@ Bu hesaba keçmək istəyirsiniz?</value>
|
|||||||
<value>Bu cihazı xatırla</value>
|
<value>Bu cihazı xatırla</value>
|
||||||
</data>
|
</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>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</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>
|
||||||
@@ -2706,7 +2703,7 @@ Bu hesaba keçmək istəyirsiniz?</value>
|
|||||||
<value>Anbar vaxt bitməsi əməliyyatı "çıxış et" olaraq dəyişdirildi</value>
|
<value>Anbar vaxt bitməsi əməliyyatı "çıxış et" olaraq dəyişdirildi</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2763,10 +2760,4 @@ Bu hesaba keçmək istəyirsiniz?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Giriş edilir</value>
|
<value>Giriş edilir</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Вписване в</value>
|
<value>Вписване в</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2763,10 +2760,4 @@ Skeniranje će biti izvršeno automatski.</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@ Voleu canviar a aquest compte?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Inici de sessió en</value>
|
<value>Inici de sessió en</value>
|
||||||
</data>
|
</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 @@ 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>
|
||||||
@@ -2763,10 +2760,4 @@ Chcete se přepnout na tento účet?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Přihlašování na</value>
|
<value>Přihlašování na</value>
|
||||||
</data>
|
</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>
|
||||||
|
|||||||
@@ -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>Dysgu mwy</value>
|
<value>Dysgu mwy</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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 @@ 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>
|
||||||
@@ -2764,10 +2761,4 @@ Vil du skifte til denne konto?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logger ind på</value>
|
<value>Logger ind på</value>
|
||||||
</data>
|
</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>
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -2679,7 +2676,7 @@ Möchtest du zu diesem Konto wechseln?</value>
|
|||||||
<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>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</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>
|
||||||
@@ -2703,7 +2700,7 @@ Möchtest du zu diesem Konto wechseln?</value>
|
|||||||
<value>Anmelden als {0}</value>
|
<value>Anmelden als {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
||||||
<value>Tresor-Timeoutaktion auf "Abmelden" geändert</value>
|
<value>Vault timeout action changed to log out</value>
|
||||||
</data>
|
</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>Dieser Eintrag kann nicht mit der Organisation geteilt werden, da bereits einer mit dem gleichen Passkey existiert.</value>
|
||||||
@@ -2763,10 +2760,4 @@ Möchtest du zu diesem Konto wechseln?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Anmelden bei</value>
|
<value>Anmelden bei</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2778,10 +2775,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@ Soovid selle konto peale lülituda?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Sisselogimas kui</value>
|
<value>Sisselogimas kui</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2763,10 +2760,4 @@ Kontu honetara aldatu nahi duzu?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2632,22 +2629,22 @@
|
|||||||
<value>کلمه عبور اصلی فعلی</value>
|
<value>کلمه عبور اصلی فعلی</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
<data name="LoggedIn" xml:space="preserve">
|
||||||
<value>وارد شده!</value>
|
<value>Logged in!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
||||||
<value>تایید با دستگاه دیگرم</value>
|
<value>Approve with my other device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
<data name="RequestAdminApproval" xml:space="preserve">
|
||||||
<value>درخواست تایید مدیر</value>
|
<value>Request admin approval</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
||||||
<value>تایید با کلمه عبور اصلی</value>
|
<value>Approve with master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
||||||
<value>اگر از دستگاه عمومی استفاده میکنید خاموش کنید</value>
|
<value>Turn off using a public device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
<data name="RememberThisDevice" xml:space="preserve">
|
||||||
<value>این دستگاه را به خاطر بسپار</value>
|
<value>Remember this device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>کلید عبور</value>
|
<value>کلید عبور</value>
|
||||||
@@ -2681,7 +2678,7 @@
|
|||||||
<value>راهنمای درخواست مجدد کلمه عبور اصلی</value>
|
<value>راهنمای درخواست مجدد کلمه عبور اصلی</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 or set up biometric unlock to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>کلید API نامعتبر</value>
|
<value>کلید API نامعتبر</value>
|
||||||
@@ -2690,22 +2687,22 @@
|
|||||||
<value>توکن API نامعتبر</value>
|
<value>توکن API نامعتبر</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
<data name="AdminApprovalRequested" xml:space="preserve">
|
||||||
<value>تایید مدیر در خواست شد</value>
|
<value>Admin approval requested</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
||||||
<value>درخواست شما به مدیرتان فرستاده شد.</value>
|
<value>Your request has been sent to your admin.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
||||||
<value>به محض تایید مطلع خواهید شد. </value>
|
<value>You will be notified once approved. </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
<data name="TroubleLoggingIn" xml:space="preserve">
|
||||||
<value>در ورود مشکلی دارید؟</value>
|
<value>Trouble logging in?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
<data name="LoggingInAsX" xml:space="preserve">
|
||||||
<value>ورود به عنوان {0}</value>
|
<value>Logging in as {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
||||||
<value>اقدام پایان زمان گاوصندوق به خروج تغییر کرد</value>
|
<value>Vault timeout action changed to log out</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
<data name="ThisItemCannotBeSharedWithTheOrganizationBecauseThereIsOneAlreadyWithTheSamePasskey" xml:space="preserve">
|
||||||
<value>این مورد را نمیتوان با سازمان به اشتراک گذاشت زیرا قبلاً موردی با کلید عبور یکسان وجود دارد.</value>
|
<value>این مورد را نمیتوان با سازمان به اشتراک گذاشت زیرا قبلاً موردی با کلید عبور یکسان وجود دارد.</value>
|
||||||
@@ -2754,21 +2751,15 @@
|
|||||||
<value>نمیتوان چندین نشانی اینترنتی را همزمان ویرایش کرد</value>
|
<value>نمیتوان چندین نشانی اینترنتی را همزمان ویرایش کرد</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
<data name="LoginApproved" xml:space="preserve">
|
||||||
<value>ورود تایید شد</value>
|
<value>Login approved</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
||||||
<value>ورود با دستگاه باید در تنظیمات برنامهی Bitwarden تنظیم شود. به گزینه دیگری نیاز دارید؟</value>
|
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
<data name="LogInWithDevice" xml:space="preserve">
|
||||||
<value>ورود با دستگاه</value>
|
<value>Log in with device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>ورود با</value>
|
<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>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -2765,10 +2762,4 @@ Haluatko vaihtaa tähän tiliin?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Kirjaudutaan sijaintiin</value>
|
<value>Kirjaudutaan sijaintiin</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Gusto mo bang pumunta sa account na ito?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2632,22 +2629,22 @@ Voulez-vous basculer vers ce compte ?</value>
|
|||||||
<value>Mot de passe principal actuel</value>
|
<value>Mot de passe principal actuel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
<data name="LoggedIn" xml:space="preserve">
|
||||||
<value>Connecté !</value>
|
<value>Logged in!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
||||||
<value>Approve with my other device</value>
|
<value>Approve with my other device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
<data name="RequestAdminApproval" xml:space="preserve">
|
||||||
<value>Demander l'approbation de l'administrateur</value>
|
<value>Request admin approval</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
||||||
<value>Approuver avec le mot de passe principal</value>
|
<value>Approve with master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
||||||
<value>Turn off using a public device</value>
|
<value>Turn off using a public device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
<data name="RememberThisDevice" xml:space="preserve">
|
||||||
<value>Se souvenir de cet appareil</value>
|
<value>Remember this device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Clé d'accès</value>
|
<value>Clé d'accès</value>
|
||||||
@@ -2681,7 +2678,7 @@ Voulez-vous basculer vers ce compte ?</value>
|
|||||||
<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>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</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>
|
||||||
@@ -2690,16 +2687,16 @@ Voulez-vous basculer vers ce compte ?</value>
|
|||||||
<value>Jeton API invalide</value>
|
<value>Jeton API invalide</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
<data name="AdminApprovalRequested" xml:space="preserve">
|
||||||
<value>Approbation de l'administrateur demandée</value>
|
<value>Admin approval requested</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
||||||
<value>Votre demande a été envoyée à votre administrateur.</value>
|
<value>Your request has been sent to your admin.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
||||||
<value>Vous serez notifié une fois approuvé. </value>
|
<value>You will be notified once approved. </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
<data name="TroubleLoggingIn" xml:space="preserve">
|
||||||
<value>Problème pour vous connecter ?</value>
|
<value>Trouble logging in?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
<data name="LoggingInAsX" xml:space="preserve">
|
||||||
<value>Logging in as {0}</value>
|
<value>Logging in as {0}</value>
|
||||||
@@ -2760,15 +2757,9 @@ Voulez-vous basculer vers ce compte ?</value>
|
|||||||
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
<data name="LogInWithDevice" xml:space="preserve">
|
||||||
<value>Se connecter avec l'appareil</value>
|
<value>Log in with device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Connexion sur</value>
|
<value>Connexion sur</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2767,10 +2764,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2418,7 +2415,7 @@ select Add TOTP to store the key safely</value>
|
|||||||
<value>सेवा</value>
|
<value>सेवा</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddyIo" xml:space="preserve">
|
<data name="AddyIo" xml:space="preserve">
|
||||||
<value>addy.io</value>
|
<value>एननऐडी</value>
|
||||||
<comment>"addy.io" is the product name and should not be translated.</comment>
|
<comment>"addy.io" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -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,37 @@
|
|||||||
<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>
|
||||||
<data name="LoggedIn" xml:space="preserve">
|
<data name="LoggedIn" xml:space="preserve">
|
||||||
<value>Prijava uspješna!</value>
|
<value>Logged in!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
<data name="ApproveWithMyOtherDevice" xml:space="preserve">
|
||||||
<value>Odobri drugim uređajem</value>
|
<value>Approve with my other device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RequestAdminApproval" xml:space="preserve">
|
<data name="RequestAdminApproval" xml:space="preserve">
|
||||||
<value>Zatraži odobrenje administratora</value>
|
<value>Request admin approval</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
<data name="ApproveWithMasterPassword" xml:space="preserve">
|
||||||
<value>Odobri glavnom lozinkom</value>
|
<value>Approve with master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
<data name="TurnOffUsingPublicDevice" xml:space="preserve">
|
||||||
<value>Isključi ako koristiš javni uređaj</value>
|
<value>Turn off using a public device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RememberThisDevice" xml:space="preserve">
|
<data name="RememberThisDevice" xml:space="preserve">
|
||||||
<value>Zapamti ovaj uređaj</value>
|
<value>Remember this device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Passkey" xml:space="preserve">
|
<data name="Passkey" xml:space="preserve">
|
||||||
<value>Passkey</value>
|
<value>Passkey</value>
|
||||||
@@ -2657,7 +2654,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 +2666,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>
|
||||||
@@ -2681,91 +2678,85 @@
|
|||||||
<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 or set up biometric unlock 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>
|
||||||
<data name="AdminApprovalRequested" xml:space="preserve">
|
<data name="AdminApprovalRequested" xml:space="preserve">
|
||||||
<value>Zatraženo odobrenje administratora</value>
|
<value>Admin approval requested</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
|
||||||
<value>Tvoj zahtjev je poslan administratoru.</value>
|
<value>Your request has been sent to your admin.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
|
||||||
<value>Dobiti ćeš obavijest kada bude odobreno. </value>
|
<value>You will be notified once approved. </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TroubleLoggingIn" xml:space="preserve">
|
<data name="TroubleLoggingIn" xml:space="preserve">
|
||||||
<value>Problem s prijavom?</value>
|
<value>Trouble logging in?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInAsX" xml:space="preserve">
|
<data name="LoggingInAsX" xml:space="preserve">
|
||||||
<value>Prijava kao {0}</value>
|
<value>Logging in as {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
|
||||||
<value>Radnja isteka trezora promijenjena je u odjavu</value>
|
<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>
|
||||||
</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>
|
||||||
<data name="LoginApproved" xml:space="preserve">
|
<data name="LoginApproved" xml:space="preserve">
|
||||||
<value>Prijava odobrena</value>
|
<value>Login approved</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
|
||||||
<value>Prijava uređajem mora biti namještena u postavka Bitwarden mobilne aplikacije. Trebaš drugu opciju?</value>
|
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInWithDevice" xml:space="preserve">
|
<data name="LogInWithDevice" xml:space="preserve">
|
||||||
<value>Prijava uređajem</value>
|
<value>Log in with device</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Prijava na</value>
|
<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>
|
</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>
|
||||||
@@ -2763,10 +2760,4 @@ Szeretnénk átváltani erre a fiókra?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Bejelentkezés:</value>
|
<value>Bejelentkezés:</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>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>
|
||||||
@@ -2764,10 +2761,4 @@ Vuoi passare a questo account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Accedendo su</value>
|
<value>Accedendo su</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2680,7 +2677,7 @@
|
|||||||
<value>マスターパスワードの再プロンプトヘルプ</value>
|
<value>マスターパスワードの再プロンプトヘルプ</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 or set up biometric unlock to resolve.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="InvalidAPIKey" xml:space="preserve">
|
||||||
<value>無効な API キー</value>
|
<value>無効な API キー</value>
|
||||||
@@ -2764,10 +2761,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>ログイン先</value>
|
<value>ログイン先</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Ar norite pereiti prie šios paskyros?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -1813,8 +1810,7 @@ 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 apstiprināti izmantošanas noteikumi un privātuma nosacījumi.</value>
|
||||||
@@ -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>
|
||||||
@@ -2681,7 +2677,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>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</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>
|
||||||
@@ -2765,10 +2761,4 @@ Vai pārslēgties uz šo kontu?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Piesakās</value>
|
<value>Piesakās</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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 @@ Skanning skjer automatisk.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Du kan ikke bruke denne funksjonen før du oppdaterer krypteringsnøkkelen din.</value>
|
<value>Du kan ikke bruke denne funksjonen før du oppdaterer krypteringsnøkkelen din.</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>Lær mer</value>
|
<value>Lær mer</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2765,10 +2762,4 @@ Vil du bytte til denne kontoen?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logger inn på</value>
|
<value>Logger inn på</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>For mange forsøk</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Konto logget ut.</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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 @@ Het scannen gebeurt automatisch.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Je kunt deze functie pas gebruiken als je je encryptiesleutel bijwerkt.</value>
|
<value>Je kunt deze functie pas gebruiken als je je encryptiesleutel bijwerkt.</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>Meer informatie</value>
|
<value>Meer informatie</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2764,10 +2761,4 @@ Wilt u naar dit account wisselen?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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 @@ Skanning skjer automatisk.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Du kan ikkje bruka denne funksjonen før du rettar enkrypteringsnykelen din.</value>
|
<value>Du kan ikkje bruka denne funksjonen før du rettar enkrypteringsnykelen din.</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>Ler meir</value>
|
<value>Ler meir</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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 @@ Skanowanie nastąpi automatycznie.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Nie możesz używać tej funkcji, dopóki nie zaktualizujesz klucza szyfrowania.</value>
|
<value>Nie możesz używać tej funkcji, dopóki nie zaktualizujesz klucza szyfrowania.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Wymagana jest migracja klucza szyfrowania. Zaloguj się przez sejf internetowy, aby zaktualizować klucz szyfrowania.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Dowiedz się więcej</value>
|
<value>Dowiedz się więcej</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2764,10 +2761,4 @@ Czy chcesz przełączyć się na to konto?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logowanie do</value>
|
<value>Logowanie do</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Zbyt wiele prób</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Konto wylogowane.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -954,9 +954,6 @@ A leitura será feita automaticamente.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Você não pode usar esse recurso, até você atualizar sua chave de criptografia.</value>
|
<value>Você não pode usar esse recurso, até você atualizar sua chave de criptografia.</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>Saiba Mais</value>
|
<value>Saiba Mais</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2765,10 +2762,4 @@ Você deseja mudar para esta conta?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Entrando em</value>
|
<value>Entrando em</value>
|
||||||
</data>
|
</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 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Não pode utilizar esta funcionalidade até atualizar a sua chave de encriptação.</value>
|
<value>Não pode utilizar esta funcionalidade até atualizar a sua chave de encriptação.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>É necessária a migração da chave de encriptação. Inicie sessão através do cofre Web para atualizar a sua chave de encriptação.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Saber mais</value>
|
<value>Saber mais</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2763,10 +2760,4 @@ Deseja mudar para esta conta?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>A iniciar sessão em</value>
|
<value>A iniciar sessão em</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Demasiadas tentativas</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Conta com sessão terminada.</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>
|
||||||
@@ -2657,7 +2654,7 @@ Do you want to switch to this account?</value>
|
|||||||
</data>
|
</data>
|
||||||
<data name="CreatedX" xml:space="preserve">
|
<data name="CreatedX" xml:space="preserve">
|
||||||
<value>Created {0}</value>
|
<value>Created {0}</value>
|
||||||
<comment>DEPRECATED 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>
|
||||||
@@ -2765,14 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CreatedXY" xml:space="preserve">
|
|
||||||
<value>Created {0}, {1}</value>
|
|
||||||
<comment>To state the date/time in which the cipher was created: Created 03/21/2023, 09:25 AM. First parameter is the date and the second parameter is the time.</comment>
|
|
||||||
</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 @@ Scanarea se va face automat.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Nu puteți utiliza această caracteristică înainte de a actualiza cheia de criptare.</value>
|
<value>Nu puteți utiliza această caracteristică înainte de a actualiza cheia de criptare.</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>Aflați mai multe</value>
|
<value>Aflați mai multe</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2764,10 +2761,4 @@ Doriți să comutați la acest cont?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2764,10 +2761,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Войти на</value>
|
<value>Войти на</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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 @@ Skenovanie prebehne automaticky.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Túto funkciu nemožno použiť, kým neaktualizujete svoj šifrovací kľúč.</value>
|
<value>Túto funkciu nemožno použiť, kým neaktualizujete svoj šifrovací kľúč.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Vyžaduje sa migrácia šifrovacieho kľúča. Na aktualizáciu šifrovacieho kľúča sa prihláste cez webový trezor.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Zistiť viac</value>
|
<value>Zistiť viac</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2764,10 +2761,4 @@ Chcete prepnúť na toto konto?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Prihlásenie na</value>
|
<value>Prihlásenie na</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Príliš veľa pokusov</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Účet bol odhlásený.</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>Te funkcije ne morete koristiti, dokler dokler ne posodobite vašega ključa za šifriranje.</value>
|
<value>Te funkcije ne morete koristiti, dokler dokler ne posodobite vašega ključa 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>Preberite več</value>
|
<value>Preberite več</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2764,10 +2761,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2766,10 +2763,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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 @@ Skanningen sker automatiskt.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Du kan inte använda denna funktion förrän du uppdaterar din krypteringsnyckel.</value>
|
<value>Du kan inte använda denna funktion förrän du uppdaterar din krypteringsnyckel.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Migrering av krypteringsnyckel krävs. Logga in på webbvalvet för att uppdatera din krypteringsnyckel.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Läs mer</value>
|
<value>Läs mer</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2766,10 +2763,4 @@ Vill du byta till detta konto?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logga in på</value>
|
<value>Logga in på</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>För många försök</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Account logged out.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -955,9 +955,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>
|
||||||
@@ -2765,10 +2762,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>இதில் உள்நுழைகிறது</value>
|
<value>இதில் உள்நுழைகிறது</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -2765,10 +2762,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
|
|||||||
@@ -957,9 +957,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>
|
||||||
@@ -2772,10 +2769,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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 @@ Kod otomatik olarak taranacaktır.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Şifreleme anahtarınızı güncelleştirene kadar bu özelliği kullanamazsınız.</value>
|
<value>Şifreleme anahtarınızı güncelleştirene kadar bu özelliği kullanamazsınız.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
|
|
||||||
<value>Şifreleme anahtarınızın güncellenmesi gerekiyor. Şifreleme anahtarınızı güncellemek için lütfen web kasasına giriş yapın.</value>
|
|
||||||
</data>
|
|
||||||
<data name="LearnMore" xml:space="preserve">
|
<data name="LearnMore" xml:space="preserve">
|
||||||
<value>Daha fazla bilgi al</value>
|
<value>Daha fazla bilgi al</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2763,10 +2760,4 @@ Bu hesaba geçmek ister misiniz?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>Çok fazla deneme</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>Hesabın oturumu kapatıldı.</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>
|
||||||
@@ -2764,10 +2761,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Увійти на</value>
|
<value>Увійти на</value>
|
||||||
</data>
|
</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 @@ Quá trình quét sẽ diễn ra tự động.</value>
|
|||||||
<data name="UpdateKey" xml:space="preserve">
|
<data name="UpdateKey" xml:space="preserve">
|
||||||
<value>Bạn không thể sử dụng tính năng này cho đến khi bạn cập nhật khoá mã hóa.</value>
|
<value>Bạn không thể sử dụng tính năng này cho đến khi bạn cập nhật khoá mã hóa.</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>Tìm Hiểu Thêm</value>
|
<value>Tìm Hiểu Thêm</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2764,10 +2761,4 @@ Do you want to switch to this account?</value>
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</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>
|
||||||
|
|||||||
@@ -559,7 +559,7 @@
|
|||||||
<value>密码库超时动作</value>
|
<value>密码库超时动作</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutLogOutConfirmation" xml:space="preserve">
|
<data name="VaultTimeoutLogOutConfirmation" xml:space="preserve">
|
||||||
<value>超时后注销账户将解除对密码库的所有访问权限,并需要进行在线身份验证。确定使用此设置吗?</value>
|
<value>超时后退出账户将解除对密码库的所有访问权限,并需要进行在线身份验证。确定使用此设置吗?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingIn" xml:space="preserve">
|
<data name="LoggingIn" xml:space="preserve">
|
||||||
<value>正在登录...</value>
|
<value>正在登录...</value>
|
||||||
@@ -581,7 +581,7 @@
|
|||||||
<value>主密码提示(可选)</value>
|
<value>主密码提示(可选)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordHintDescription" xml:space="preserve">
|
<data name="MasterPasswordHintDescription" xml:space="preserve">
|
||||||
<value>主密码提示可以在您忘记密码时帮您回忆起来。</value>
|
<value>主密码提示可以在你忘记密码时帮你回忆起来。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordLengthValMessageX" xml:space="preserve">
|
<data name="MasterPasswordLengthValMessageX" xml:space="preserve">
|
||||||
<value>主密码必须至少 $VALUE$ 个字符长度。</value>
|
<value>主密码必须至少 $VALUE$ 个字符长度。</value>
|
||||||
@@ -823,7 +823,7 @@
|
|||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterVerificationCodeEmail" xml:space="preserve">
|
<data name="EnterVerificationCodeEmail" xml:space="preserve">
|
||||||
<value>请输入发送给电子邮件 {0} 的 6 位数验证码。</value>
|
<value>请输入发送到电子邮件 {0} 的 6 位验证码。</value>
|
||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginUnavailable" xml:space="preserve">
|
<data name="LoginUnavailable" xml:space="preserve">
|
||||||
@@ -852,7 +852,7 @@
|
|||||||
<value>使用其他两步登录方式</value>
|
<value>使用其他两步登录方式</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VerificationEmailNotSent" xml:space="preserve">
|
<data name="VerificationEmailNotSent" xml:space="preserve">
|
||||||
<value>无法发送验证电子邮件。请重试。</value>
|
<value>无法发送验证电子邮件。请再试一次。</value>
|
||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="VerificationEmailSent" xml:space="preserve">
|
<data name="VerificationEmailSent" xml:space="preserve">
|
||||||
@@ -867,7 +867,7 @@
|
|||||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddNewAttachment" xml:space="preserve">
|
<data name="AddNewAttachment" xml:space="preserve">
|
||||||
<value>添加新附件</value>
|
<value>添加新的附件</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Attachments" xml:space="preserve">
|
<data name="Attachments" xml:space="preserve">
|
||||||
<value>附件</value>
|
<value>附件</value>
|
||||||
@@ -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>
|
||||||
@@ -1492,7 +1489,7 @@
|
|||||||
<value>30 分钟</value>
|
<value>30 分钟</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SetPINDescription" xml:space="preserve">
|
<data name="SetPINDescription" xml:space="preserve">
|
||||||
<value>设定您用来解锁 Bitwarden 的 PIN 码。您的 PIN 设置将在您完全注销此应用程序时被重置。</value>
|
<value>设定您用来解锁 Bitwarden 的 PIN 码。您的 PIN 设置将在您退出账户时被重置。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggedInAsOn" xml:space="preserve">
|
<data name="LoggedInAsOn" xml:space="preserve">
|
||||||
<value>已在 {1} 上以 {0} 身份登录。</value>
|
<value>已在 {1} 上以 {0} 身份登录。</value>
|
||||||
@@ -1864,7 +1861,7 @@
|
|||||||
<value>如果开启,无障碍将显示一个弹出窗口以增强不支持 Android 自动填充框架的旧应用的自动填充服务。</value>
|
<value>如果开启,无障碍将显示一个弹出窗口以增强不支持 Android 自动填充框架的旧应用的自动填充服务。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PersonalOwnershipSubmitError" xml:space="preserve">
|
<data name="PersonalOwnershipSubmitError" xml:space="preserve">
|
||||||
<value>由于某个企业策略,您不能将项目保存到您的个人密码库。将所有权选项更改为组织,并从可用的集合中选择。</value>
|
<value>由于企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,然后从可用的集合中选择。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PersonalOwnershipPolicyInEffect" xml:space="preserve">
|
<data name="PersonalOwnershipPolicyInEffect" xml:space="preserve">
|
||||||
<value>某个组织策略正影响您的所有权选项。</value>
|
<value>某个组织策略正影响您的所有权选项。</value>
|
||||||
@@ -1987,7 +1984,7 @@
|
|||||||
<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>添加 Send</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="CopyLink" xml:space="preserve">
|
<data name="CopyLink" xml:space="preserve">
|
||||||
@@ -2051,7 +2048,7 @@
|
|||||||
<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>由于某个企业策略,您只能删除现有的 Send。</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="AboutSend" xml:space="preserve">
|
<data name="AboutSend" xml:space="preserve">
|
||||||
@@ -2074,7 +2071,7 @@
|
|||||||
<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">
|
||||||
<value>主密码重新提示</value>
|
<value>重新询问主密码</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordConfirmation" xml:space="preserve">
|
<data name="PasswordConfirmation" xml:space="preserve">
|
||||||
<value>确认主密码</value>
|
<value>确认主密码</value>
|
||||||
@@ -2173,7 +2170,7 @@
|
|||||||
<value>账户已锁定</value>
|
<value>账户已锁定</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccountLoggedOutSuccessfully" xml:space="preserve">
|
<data name="AccountLoggedOutSuccessfully" xml:space="preserve">
|
||||||
<value>账户注销成功</value>
|
<value>成功退出账户</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccountRemovedSuccessfully" xml:space="preserve">
|
<data name="AccountRemovedSuccessfully" xml:space="preserve">
|
||||||
<value>账户移除成功</value>
|
<value>账户移除成功</value>
|
||||||
@@ -2221,7 +2218,7 @@
|
|||||||
<value>验证码已发送到您的电子邮箱</value>
|
<value>验证码已发送到您的电子邮箱</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve">
|
<data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve">
|
||||||
<value>发送验证码到您的电子邮箱时发生错误。请重试</value>
|
<value>发送验证码到您的电子邮箱时发生错误。请再试一次</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterTheVerificationCodeThatWasSentToYourEmail" xml:space="preserve">
|
<data name="EnterTheVerificationCodeThatWasSentToYourEmail" xml:space="preserve">
|
||||||
<value>输入发送到您电子邮箱的验证码</value>
|
<value>输入发送到您电子邮箱的验证码</value>
|
||||||
@@ -2312,10 +2309,10 @@
|
|||||||
<value>将锁定选项设置为「从不」可让任何能够访问您的设备的人都可以使用您的密码库。如果您使用此选项,则应确保您的设备得到妥善的保护。</value>
|
<value>将锁定选项设置为「从不」可让任何能够访问您的设备的人都可以使用您的密码库。如果您使用此选项,则应确保您的设备得到妥善的保护。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnvironmentPageUrlsError" xml:space="preserve">
|
<data name="EnvironmentPageUrlsError" xml:space="preserve">
|
||||||
<value>输入的一个或多个 URL 无效。请修改后再次尝试保存。</value>
|
<value>输入的一个或多个 URL 无效。请修改后再次保存。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GenericErrorMessage" xml:space="preserve">
|
<data name="GenericErrorMessage" xml:space="preserve">
|
||||||
<value>我们无法处理您的请求。请重试或联系我们。</value>
|
<value>我们无法处理您的请求。请再试一次或联系我们。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllowScreenCapture" xml:space="preserve">
|
<data name="AllowScreenCapture" xml:space="preserve">
|
||||||
<value>允许屏幕截图</value>
|
<value>允许屏幕截图</value>
|
||||||
@@ -2502,7 +2499,7 @@
|
|||||||
<value>不是你?</value>
|
<value>不是你?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInWithMasterPassword" xml:space="preserve">
|
<data name="LogInWithMasterPassword" xml:space="preserve">
|
||||||
<value>主密码登录</value>
|
<value>使用主密码登录</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInWithAnotherDevice" xml:space="preserve">
|
<data name="LogInWithAnotherDevice" xml:space="preserve">
|
||||||
<value>设备登录</value>
|
<value>设备登录</value>
|
||||||
@@ -2677,7 +2674,7 @@
|
|||||||
<value>可用于两步登录</value>
|
<value>可用于两步登录</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>
|
||||||
@@ -2764,10 +2761,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>登录到</value>
|
<value>登录到</value>
|
||||||
</data>
|
</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 @@
|
|||||||
<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>
|
||||||
@@ -1357,10 +1354,10 @@
|
|||||||
<comment>A loading message when doing an exposed password check.</comment>
|
<comment>A loading message when doing an exposed password check.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="CheckPassword" xml:space="preserve">
|
<data name="CheckPassword" xml:space="preserve">
|
||||||
<value>檢查密碼是否已暴露。</value>
|
<value>檢查密碼是否已外洩。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordExposed" xml:space="preserve">
|
<data name="PasswordExposed" xml:space="preserve">
|
||||||
<value>此密碼在資料外洩事件中被暴露了 {0} 次,應立即變更它。</value>
|
<value>此密碼已外洩了 {0} 次,應立即變更密碼。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordSafe" xml:space="preserve">
|
<data name="PasswordSafe" xml:space="preserve">
|
||||||
<value>任何已知的外洩密碼資料庫中都沒有此密碼,它目前是安全的。</value>
|
<value>任何已知的外洩密碼資料庫中都沒有此密碼,它目前是安全的。</value>
|
||||||
@@ -2580,16 +2577,16 @@
|
|||||||
<value>高強度</value>
|
<value>高強度</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CheckKnownDataBreachesForThisPassword" xml:space="preserve">
|
<data name="CheckKnownDataBreachesForThisPassword" xml:space="preserve">
|
||||||
<value>檢查外洩密碼資料庫中是否有此密碼</value>
|
<value>在被攻擊的資料庫中搜尋是否有此密碼</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExposedMasterPassword" xml:space="preserve">
|
<data name="ExposedMasterPassword" xml:space="preserve">
|
||||||
<value>已暴露的主密碼</value>
|
<value>Exposed Master Password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordFoundInADataBreachAlertDescription" xml:space="preserve">
|
<data name="PasswordFoundInADataBreachAlertDescription" xml:space="preserve">
|
||||||
<value>在資料外洩事件中找到了密碼。我們建議您使用一個獨特的密碼來保護您的帳戶,您確定要使用已暴露的密碼嗎?</value>
|
<value>在其他資料庫中找到您的密碼。我們建議您使用一個獨特的密碼來保護您的帳號,您確定要用這個密碼嗎?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WeakAndExposedMasterPassword" xml:space="preserve">
|
<data name="WeakAndExposedMasterPassword" xml:space="preserve">
|
||||||
<value>強度不足且已暴露的主密碼</value>
|
<value>主密碼強度不足</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WeakPasswordIdentifiedAndFoundInADataBreachAlertDescription" xml:space="preserve">
|
<data name="WeakPasswordIdentifiedAndFoundInADataBreachAlertDescription" xml:space="preserve">
|
||||||
<value>是密碼強度不足,且在其他資料庫中找到這個密碼。使用一個強度足夠和獨特的密碼來保護您的帳號。請問您確定要用這個密碼嗎?</value>
|
<value>是密碼強度不足,且在其他資料庫中找到這個密碼。使用一個強度足夠和獨特的密碼來保護您的帳號。請問您確定要用這個密碼嗎?</value>
|
||||||
@@ -2764,10 +2761,4 @@
|
|||||||
<data name="LoggingInOn" xml:space="preserve">
|
<data name="LoggingInOn" xml:space="preserve">
|
||||||
<value>Logging in on</value>
|
<value>Logging in on</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TooManyAttempts" xml:space="preserve">
|
|
||||||
<value>嘗試次數過多</value>
|
|
||||||
</data>
|
|
||||||
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
|
|
||||||
<value>帳號已登出。</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -32,8 +32,7 @@ namespace Bit.App.Services
|
|||||||
IDeviceActionService deviceActionService,
|
IDeviceActionService deviceActionService,
|
||||||
IClipboardService clipboardService,
|
IClipboardService clipboardService,
|
||||||
IMessagingService messagingService,
|
IMessagingService messagingService,
|
||||||
IBroadcasterService broadcasterService
|
IBroadcasterService broadcasterService)
|
||||||
)
|
|
||||||
{
|
{
|
||||||
_deviceActionService = deviceActionService;
|
_deviceActionService = deviceActionService;
|
||||||
_clipboardService = clipboardService;
|
_clipboardService = clipboardService;
|
||||||
@@ -243,7 +242,7 @@ namespace Bit.App.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> AuthenticateBiometricAsync(string text = null, string fallbackText = null,
|
public async Task<bool> AuthenticateBiometricAsync(string text = null, string fallbackText = null,
|
||||||
Action fallback = null, bool logOutOnTooManyAttempts = false)
|
Action fallback = null)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -270,12 +269,6 @@ namespace Bit.App.Services
|
|||||||
{
|
{
|
||||||
fallback?.Invoke();
|
fallback?.Invoke();
|
||||||
}
|
}
|
||||||
if (result.Status == FingerprintAuthenticationResultStatus.TooManyAttempts
|
|
||||||
&& logOutOnTooManyAttempts)
|
|
||||||
{
|
|
||||||
await ShowDialogAsync(AppResources.AccountLoggedOutBiometricExceeded, AppResources.TooManyAttempts, AppResources.Ok);
|
|
||||||
_messagingService.Send(AccountsManagerMessageCommands.LOGOUT);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ using Bit.Core.Enums;
|
|||||||
using Bit.Core.Exceptions;
|
using Bit.Core.Exceptions;
|
||||||
using Bit.Core.Models.Data;
|
using Bit.Core.Models.Data;
|
||||||
using Bit.Core.Models.View;
|
using Bit.Core.Models.View;
|
||||||
using Bit.Core.Services;
|
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Xamarin.Essentials;
|
using Xamarin.Essentials;
|
||||||
@@ -79,6 +78,17 @@ namespace Bit.App.Utilities
|
|||||||
options.Add(AppResources.CopyNotes);
|
options.Add(AppResources.CopyNotes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (cipher.Type == Core.Enums.CipherType.Fido2Key)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(cipher.Fido2Key.UserName))
|
||||||
|
{
|
||||||
|
options.Add(AppResources.CopyUsername);
|
||||||
|
}
|
||||||
|
if (cipher.Fido2Key.CanLaunch)
|
||||||
|
{
|
||||||
|
options.Add(AppResources.Launch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var selection = await page.DisplayActionSheet(cipher.Name, AppResources.Cancel, null, options.ToArray());
|
var selection = await page.DisplayActionSheet(cipher.Name, AppResources.Cancel, null, options.ToArray());
|
||||||
if (await vaultTimeoutService.IsLockedAsync())
|
if (await vaultTimeoutService.IsLockedAsync())
|
||||||
@@ -97,7 +107,7 @@ namespace Bit.App.Utilities
|
|||||||
}
|
}
|
||||||
else if (selection == AppResources.CopyUsername)
|
else if (selection == AppResources.CopyUsername)
|
||||||
{
|
{
|
||||||
await clipboardService.CopyTextAsync(cipher.Login.Username);
|
await clipboardService.CopyTextAsync(cipher.Type == CipherType.Login ? cipher.Login.Username : cipher.Fido2Key.UserName);
|
||||||
platformUtilsService.ShowToastForCopiedValue(AppResources.Username);
|
platformUtilsService.ShowToastForCopiedValue(AppResources.Username);
|
||||||
}
|
}
|
||||||
else if (selection == AppResources.CopyPassword
|
else if (selection == AppResources.CopyPassword
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ namespace Bit.App.Utilities
|
|||||||
return BitwardenIcons.CreditCard;
|
return BitwardenIcons.CreditCard;
|
||||||
case CipherType.Identity:
|
case CipherType.Identity:
|
||||||
return BitwardenIcons.IdCard;
|
return BitwardenIcons.IdCard;
|
||||||
|
case CipherType.Fido2Key:
|
||||||
|
return BitwardenIcons.Passkey;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,12 +26,14 @@ namespace Bit.App.Utilities
|
|||||||
{
|
{
|
||||||
public static string GetIconImage(CipherView cipher)
|
public static string GetIconImage(CipherView cipher)
|
||||||
{
|
{
|
||||||
if (cipher.Type != CipherType.Login)
|
switch (cipher.Type)
|
||||||
{
|
{
|
||||||
return null;
|
case CipherType.Login:
|
||||||
|
return IconImageHelper.GetLoginIconImage(cipher);
|
||||||
|
case CipherType.Fido2Key:
|
||||||
|
return IconImageHelper.GetFido2KeyIconImage(cipher);
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
return GetLoginIconImage(cipher);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetLoginIconImage(CipherView cipher)
|
public static string GetLoginIconImage(CipherView cipher)
|
||||||
@@ -63,6 +65,26 @@ namespace Bit.App.Utilities
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetFido2KeyIconImage(CipherView cipher)
|
||||||
|
{
|
||||||
|
var hostnameUri = cipher.Fido2Key.LaunchUri;
|
||||||
|
if (!hostnameUri.Contains("."))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hostnameUri.Contains("://"))
|
||||||
|
{
|
||||||
|
hostnameUri = string.Concat("https://", hostnameUri);
|
||||||
|
}
|
||||||
|
if (hostnameUri.StartsWith("http"))
|
||||||
|
{
|
||||||
|
return GetIconUrl(hostnameUri);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private static string GetIconUrl(string hostnameUri)
|
private static string GetIconUrl(string hostnameUri)
|
||||||
{
|
{
|
||||||
IEnvironmentService _environmentService = ServiceContainer.Resolve<IEnvironmentService>("environmentService");
|
IEnvironmentService _environmentService = ServiceContainer.Resolve<IEnvironmentService>("environmentService");
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace Bit.Core.Abstractions
|
|||||||
Task RefreshIdentityTokenAsync();
|
Task RefreshIdentityTokenAsync();
|
||||||
Task<SsoPrevalidateResponse> PreValidateSsoAsync(string identifier);
|
Task<SsoPrevalidateResponse> PreValidateSsoAsync(string identifier);
|
||||||
Task<TResponse> SendAsync<TRequest, TResponse>(HttpMethod method, string path,
|
Task<TResponse> SendAsync<TRequest, TResponse>(HttpMethod method, string path,
|
||||||
TRequest body, bool authed, bool hasResponse, Action<HttpRequestMessage> alterRequest, bool logoutOnUnauthorized = true, bool sendToIdentity = false);
|
TRequest body, bool authed, bool hasResponse, Action<HttpRequestMessage> alterRequest, bool logoutOnUnauthorized = true);
|
||||||
Task<HttpResponseMessage> SendAsync(HttpRequestMessage requestMessage, CancellationToken cancellationToken = default);
|
Task<HttpResponseMessage> SendAsync(HttpRequestMessage requestMessage, CancellationToken cancellationToken = default);
|
||||||
void SetUrls(EnvironmentUrls urls);
|
void SetUrls(EnvironmentUrls urls);
|
||||||
[Obsolete("Mar 25 2021: This method has been deprecated in favor of direct uploads. This method still exists for backward compatibility with old server versions.")]
|
[Obsolete("Mar 25 2021: This method has been deprecated in favor of direct uploads. This method still exists for backward compatibility with old server versions.")]
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ namespace Bit.Core.Abstractions
|
|||||||
Task RefreshKeysAsync();
|
Task RefreshKeysAsync();
|
||||||
Task SetUserKeyAsync(UserKey userKey, string userId = null);
|
Task SetUserKeyAsync(UserKey userKey, string userId = null);
|
||||||
Task<UserKey> GetUserKeyAsync(string userId = null);
|
Task<UserKey> GetUserKeyAsync(string userId = null);
|
||||||
Task<bool> IsLegacyUserAsync(MasterKey masterKey = null, string userId = null);
|
|
||||||
Task<UserKey> GetUserKeyWithLegacySupportAsync(string userId = null);
|
Task<UserKey> GetUserKeyWithLegacySupportAsync(string userId = null);
|
||||||
Task<bool> HasUserKeyAsync(string userId = null);
|
Task<bool> HasUserKeyAsync(string userId = null);
|
||||||
Task<bool> HasEncryptedUserKeyAsync(string userId = null);
|
Task<bool> HasEncryptedUserKeyAsync(string userId = null);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace Bit.Core.Abstractions
|
|||||||
bool SupportsDuo();
|
bool SupportsDuo();
|
||||||
Task<bool> SupportsBiometricAsync();
|
Task<bool> SupportsBiometricAsync();
|
||||||
Task<bool> IsBiometricIntegrityValidAsync(string bioIntegritySrcKey = null);
|
Task<bool> IsBiometricIntegrityValidAsync(string bioIntegritySrcKey = null);
|
||||||
Task<bool> AuthenticateBiometricAsync(string text = null, string fallbackText = null, Action fallback = null, bool logOutOnTooManyAttempts = false);
|
Task<bool> AuthenticateBiometricAsync(string text = null, string fallbackText = null, Action fallback = null);
|
||||||
long GetActiveTime();
|
long GetActiveTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
Login = 1,
|
Login = 1,
|
||||||
SecureNote = 2,
|
SecureNote = 2,
|
||||||
Card = 3,
|
Card = 3,
|
||||||
Identity = 4
|
Identity = 4,
|
||||||
|
Fido2Key = 5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
namespace Bit.Core.Exceptions
|
|
||||||
{
|
|
||||||
public class LegacyUserException : Exception
|
|
||||||
{
|
|
||||||
public LegacyUserException()
|
|
||||||
: base("Legacy users must migrate on web vault.")
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using Bit.Core.Models.Domain;
|
using Bit.Core.Models.Domain;
|
||||||
|
using Bit.Core.Models.Export;
|
||||||
|
|
||||||
namespace Bit.Core.Models.Api
|
namespace Bit.Core.Models.Api
|
||||||
{
|
{
|
||||||
@@ -10,8 +11,7 @@ namespace Bit.Core.Models.Api
|
|||||||
|
|
||||||
public Fido2KeyApi(Fido2Key fido2Key)
|
public Fido2KeyApi(Fido2Key fido2Key)
|
||||||
{
|
{
|
||||||
CredentialId = fido2Key.CredentialId?.EncryptedString;
|
NonDiscoverableId = fido2Key.NonDiscoverableId?.EncryptedString;
|
||||||
Discoverable = fido2Key.Discoverable?.EncryptedString;
|
|
||||||
KeyType = fido2Key.KeyType?.EncryptedString;
|
KeyType = fido2Key.KeyType?.EncryptedString;
|
||||||
KeyAlgorithm = fido2Key.KeyAlgorithm?.EncryptedString;
|
KeyAlgorithm = fido2Key.KeyAlgorithm?.EncryptedString;
|
||||||
KeyCurve = fido2Key.KeyCurve?.EncryptedString;
|
KeyCurve = fido2Key.KeyCurve?.EncryptedString;
|
||||||
@@ -23,8 +23,7 @@ namespace Bit.Core.Models.Api
|
|||||||
Counter = fido2Key.Counter?.EncryptedString;
|
Counter = fido2Key.Counter?.EncryptedString;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string CredentialId { get; set; }
|
public string NonDiscoverableId { get; set; }
|
||||||
public string Discoverable { get; set; }
|
|
||||||
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
||||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
||||||
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ namespace Bit.Core.Models.Api
|
|||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
public DateTime? PasswordRevisionDate { get; set; }
|
public DateTime? PasswordRevisionDate { get; set; }
|
||||||
public string Totp { get; set; }
|
public string Totp { get; set; }
|
||||||
public List<Fido2KeyApi> Fido2Keys { get; set; }
|
public Fido2KeyApi Fido2Key { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ namespace Bit.Core.Models.Data
|
|||||||
case Enums.CipherType.Identity:
|
case Enums.CipherType.Identity:
|
||||||
Identity = new IdentityData(response.Identity);
|
Identity = new IdentityData(response.Identity);
|
||||||
break;
|
break;
|
||||||
|
case Enums.CipherType.Fido2Key:
|
||||||
|
Fido2Key = new Fido2KeyData(response.Fido2Key);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -83,6 +86,7 @@ namespace Bit.Core.Models.Data
|
|||||||
public SecureNoteData SecureNote { get; set; }
|
public SecureNoteData SecureNote { get; set; }
|
||||||
public CardData Card { get; set; }
|
public CardData Card { get; set; }
|
||||||
public IdentityData Identity { get; set; }
|
public IdentityData Identity { get; set; }
|
||||||
|
public Fido2KeyData Fido2Key { get; set; }
|
||||||
public List<FieldData> Fields { get; set; }
|
public List<FieldData> Fields { get; set; }
|
||||||
public List<AttachmentData> Attachments { get; set; }
|
public List<AttachmentData> Attachments { get; set; }
|
||||||
public List<PasswordHistoryData> PasswordHistory { get; set; }
|
public List<PasswordHistoryData> PasswordHistory { get; set; }
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ namespace Bit.Core.Models.Data
|
|||||||
|
|
||||||
public Fido2KeyData(Fido2KeyApi apiData)
|
public Fido2KeyData(Fido2KeyApi apiData)
|
||||||
{
|
{
|
||||||
CredentialId = apiData.CredentialId;
|
NonDiscoverableId = apiData.NonDiscoverableId;
|
||||||
Discoverable = apiData.Discoverable;
|
|
||||||
KeyType = apiData.KeyType;
|
KeyType = apiData.KeyType;
|
||||||
KeyAlgorithm = apiData.KeyAlgorithm;
|
KeyAlgorithm = apiData.KeyAlgorithm;
|
||||||
KeyCurve = apiData.KeyCurve;
|
KeyCurve = apiData.KeyCurve;
|
||||||
@@ -21,8 +20,7 @@ namespace Bit.Core.Models.Data
|
|||||||
Counter = apiData.Counter;
|
Counter = apiData.Counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string CredentialId { get; set; }
|
public string NonDiscoverableId { get; set; }
|
||||||
public string Discoverable { get; set; }
|
|
||||||
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
||||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
||||||
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace Bit.Core.Models.Data
|
|||||||
PasswordRevisionDate = data.PasswordRevisionDate;
|
PasswordRevisionDate = data.PasswordRevisionDate;
|
||||||
Totp = data.Totp;
|
Totp = data.Totp;
|
||||||
Uris = data.Uris?.Select(u => new LoginUriData(u)).ToList();
|
Uris = data.Uris?.Select(u => new LoginUriData(u)).ToList();
|
||||||
Fido2Keys = data.Fido2Keys?.Select(f => new Fido2KeyData(f)).ToList();
|
Fido2Key = data.Fido2Key != null ? new Fido2KeyData(data.Fido2Key) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<LoginUriData> Uris { get; set; }
|
public List<LoginUriData> Uris { get; set; }
|
||||||
@@ -24,6 +24,6 @@ namespace Bit.Core.Models.Data
|
|||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
public DateTime? PasswordRevisionDate { get; set; }
|
public DateTime? PasswordRevisionDate { get; set; }
|
||||||
public string Totp { get; set; }
|
public string Totp { get; set; }
|
||||||
public List<Fido2KeyData> Fido2Keys { get; set; }
|
public Fido2KeyData Fido2Key { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ namespace Bit.Core.Models.Domain
|
|||||||
[Obsolete("Use AccountDecryptionOptions to determine if the user does not have a MP")]
|
[Obsolete("Use AccountDecryptionOptions to determine if the user does not have a MP")]
|
||||||
public bool ResetMasterPassword { get; set; }
|
public bool ResetMasterPassword { get; set; }
|
||||||
public bool ForcePasswordReset { get; set; }
|
public bool ForcePasswordReset { get; set; }
|
||||||
public bool RequiresEncryptionKeyMigration { get; set; }
|
|
||||||
public Dictionary<TwoFactorProviderType, Dictionary<string, object>> TwoFactorProviders { get; set; }
|
public Dictionary<TwoFactorProviderType, Dictionary<string, object>> TwoFactorProviders { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,9 @@ namespace Bit.Core.Models.Domain
|
|||||||
case Enums.CipherType.Identity:
|
case Enums.CipherType.Identity:
|
||||||
Identity = new Identity(obj.Identity, alreadyEncrypted);
|
Identity = new Identity(obj.Identity, alreadyEncrypted);
|
||||||
break;
|
break;
|
||||||
|
case CipherType.Fido2Key:
|
||||||
|
Fido2Key = new Fido2Key(obj.Fido2Key, alreadyEncrypted);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -63,7 +66,7 @@ namespace Bit.Core.Models.Domain
|
|||||||
public string FolderId { get; set; }
|
public string FolderId { get; set; }
|
||||||
public EncString Name { get; set; }
|
public EncString Name { get; set; }
|
||||||
public EncString Notes { get; set; }
|
public EncString Notes { get; set; }
|
||||||
public CipherType Type { get; set; }
|
public Enums.CipherType Type { get; set; }
|
||||||
public bool Favorite { get; set; }
|
public bool Favorite { get; set; }
|
||||||
public bool OrganizationUseTotp { get; set; }
|
public bool OrganizationUseTotp { get; set; }
|
||||||
public bool Edit { get; set; }
|
public bool Edit { get; set; }
|
||||||
@@ -76,6 +79,7 @@ namespace Bit.Core.Models.Domain
|
|||||||
public Identity Identity { get; set; }
|
public Identity Identity { get; set; }
|
||||||
public Card Card { get; set; }
|
public Card Card { get; set; }
|
||||||
public SecureNote SecureNote { get; set; }
|
public SecureNote SecureNote { get; set; }
|
||||||
|
public Fido2Key Fido2Key { get; set; }
|
||||||
public List<Attachment> Attachments { get; set; }
|
public List<Attachment> Attachments { get; set; }
|
||||||
public List<Field> Fields { get; set; }
|
public List<Field> Fields { get; set; }
|
||||||
public List<PasswordHistory> PasswordHistory { get; set; }
|
public List<PasswordHistory> PasswordHistory { get; set; }
|
||||||
@@ -105,6 +109,9 @@ namespace Bit.Core.Models.Domain
|
|||||||
case Enums.CipherType.Identity:
|
case Enums.CipherType.Identity:
|
||||||
model.Identity = await Identity.DecryptAsync(OrganizationId);
|
model.Identity = await Identity.DecryptAsync(OrganizationId);
|
||||||
break;
|
break;
|
||||||
|
case Enums.CipherType.Fido2Key:
|
||||||
|
model.Fido2Key = await Fido2Key.DecryptAsync(OrganizationId);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -194,6 +201,9 @@ namespace Bit.Core.Models.Domain
|
|||||||
case Enums.CipherType.Identity:
|
case Enums.CipherType.Identity:
|
||||||
c.Identity = Identity.ToIdentityData();
|
c.Identity = Identity.ToIdentityData();
|
||||||
break;
|
break;
|
||||||
|
case Enums.CipherType.Fido2Key:
|
||||||
|
c.Fido2Key = Fido2Key.ToFido2KeyData();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ namespace Bit.Core.Models.Domain
|
|||||||
{
|
{
|
||||||
public static HashSet<string> EncryptableProperties => new HashSet<string>
|
public static HashSet<string> EncryptableProperties => new HashSet<string>
|
||||||
{
|
{
|
||||||
nameof(CredentialId),
|
nameof(NonDiscoverableId),
|
||||||
nameof(Discoverable),
|
|
||||||
nameof(KeyType),
|
nameof(KeyType),
|
||||||
nameof(KeyAlgorithm),
|
nameof(KeyAlgorithm),
|
||||||
nameof(KeyCurve),
|
nameof(KeyCurve),
|
||||||
@@ -29,8 +28,7 @@ namespace Bit.Core.Models.Domain
|
|||||||
BuildDomainModel(this, data, EncryptableProperties, alreadyEncrypted);
|
BuildDomainModel(this, data, EncryptableProperties, alreadyEncrypted);
|
||||||
}
|
}
|
||||||
|
|
||||||
public EncString CredentialId { get; set; }
|
public EncString NonDiscoverableId { get; set; }
|
||||||
public EncString Discoverable { get; set; }
|
|
||||||
public EncString KeyType { get; set; }
|
public EncString KeyType { get; set; }
|
||||||
public EncString KeyAlgorithm { get; set; }
|
public EncString KeyAlgorithm { get; set; }
|
||||||
public EncString KeyCurve { get; set; }
|
public EncString KeyCurve { get; set; }
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace Bit.Core.Models.Domain
|
|||||||
{
|
{
|
||||||
PasswordRevisionDate = obj.PasswordRevisionDate;
|
PasswordRevisionDate = obj.PasswordRevisionDate;
|
||||||
Uris = obj.Uris?.Select(u => new LoginUri(u, alreadyEncrypted)).ToList();
|
Uris = obj.Uris?.Select(u => new LoginUri(u, alreadyEncrypted)).ToList();
|
||||||
Fido2Keys = obj.Fido2Keys?.Select(f => new Fido2Key(f, alreadyEncrypted)).ToList();
|
Fido2Key = obj.Fido2Key != null ? new Fido2Key(obj.Fido2Key, alreadyEncrypted) : null;
|
||||||
BuildDomainModel(this, obj, new HashSet<string>
|
BuildDomainModel(this, obj, new HashSet<string>
|
||||||
{
|
{
|
||||||
"Username",
|
"Username",
|
||||||
@@ -29,7 +29,7 @@ namespace Bit.Core.Models.Domain
|
|||||||
public EncString Password { get; set; }
|
public EncString Password { get; set; }
|
||||||
public DateTime? PasswordRevisionDate { get; set; }
|
public DateTime? PasswordRevisionDate { get; set; }
|
||||||
public EncString Totp { get; set; }
|
public EncString Totp { get; set; }
|
||||||
public List<Fido2Key> Fido2Keys { get; set; }
|
public Fido2Key Fido2Key { get; set; }
|
||||||
|
|
||||||
public async Task<LoginView> DecryptAsync(string orgId)
|
public async Task<LoginView> DecryptAsync(string orgId)
|
||||||
{
|
{
|
||||||
@@ -47,13 +47,9 @@ namespace Bit.Core.Models.Domain
|
|||||||
view.Uris.Add(await uri.DecryptAsync(orgId));
|
view.Uris.Add(await uri.DecryptAsync(orgId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Fido2Keys != null)
|
if (Fido2Key != null)
|
||||||
{
|
{
|
||||||
view.Fido2Keys = new List<Fido2KeyView>();
|
view.Fido2Key = await Fido2Key.DecryptAsync(orgId);
|
||||||
foreach (var fido2Key in Fido2Keys)
|
|
||||||
{
|
|
||||||
view.Fido2Keys.Add(await fido2Key.DecryptAsync(orgId));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
@@ -72,9 +68,9 @@ namespace Bit.Core.Models.Domain
|
|||||||
{
|
{
|
||||||
l.Uris = Uris.Select(u => u.ToLoginUriData()).ToList();
|
l.Uris = Uris.Select(u => u.ToLoginUriData()).ToList();
|
||||||
}
|
}
|
||||||
if (Fido2Keys != null)
|
if (Fido2Key != null)
|
||||||
{
|
{
|
||||||
l.Fido2Keys = Fido2Keys.Select(f => f.ToFido2KeyData()).ToList();
|
l.Fido2Key = Fido2Key.ToFido2KeyData();
|
||||||
}
|
}
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace Bit.Core.Models.Request
|
|||||||
Password = cipher.Login.Password?.EncryptedString,
|
Password = cipher.Login.Password?.EncryptedString,
|
||||||
PasswordRevisionDate = cipher.Login.PasswordRevisionDate,
|
PasswordRevisionDate = cipher.Login.PasswordRevisionDate,
|
||||||
Totp = cipher.Login.Totp?.EncryptedString,
|
Totp = cipher.Login.Totp?.EncryptedString,
|
||||||
Fido2Keys = cipher.Login.Fido2Keys?.Select(f => new Fido2KeyApi(f)).ToList()
|
Fido2Key = cipher.Login.Fido2Key != null ? new Fido2KeyApi(cipher.Login.Fido2Key) : null
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
case CipherType.Card:
|
case CipherType.Card:
|
||||||
@@ -74,6 +74,9 @@ namespace Bit.Core.Models.Request
|
|||||||
Type = cipher.SecureNote.Type
|
Type = cipher.SecureNote.Type
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
case CipherType.Fido2Key:
|
||||||
|
Fido2Key = new Fido2KeyApi(cipher.Fido2Key);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -119,6 +122,7 @@ namespace Bit.Core.Models.Request
|
|||||||
public SecureNoteApi SecureNote { get; set; }
|
public SecureNoteApi SecureNote { get; set; }
|
||||||
public CardApi Card { get; set; }
|
public CardApi Card { get; set; }
|
||||||
public IdentityApi Identity { get; set; }
|
public IdentityApi Identity { get; set; }
|
||||||
|
public Fido2KeyApi Fido2Key { get; set; }
|
||||||
public List<FieldApi> Fields { get; set; }
|
public List<FieldApi> Fields { get; set; }
|
||||||
public List<PasswordHistoryRequest> PasswordHistory { get; set; }
|
public List<PasswordHistoryRequest> PasswordHistory { get; set; }
|
||||||
public Dictionary<string, string> Attachments { get; set; }
|
public Dictionary<string, string> Attachments { get; set; }
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ namespace Bit.Core.Models.Response
|
|||||||
public CardApi Card { get; set; }
|
public CardApi Card { get; set; }
|
||||||
public IdentityApi Identity { get; set; }
|
public IdentityApi Identity { get; set; }
|
||||||
public SecureNoteApi SecureNote { get; set; }
|
public SecureNoteApi SecureNote { get; set; }
|
||||||
|
public Fido2KeyApi Fido2Key { get; set; }
|
||||||
public bool Favorite { get; set; }
|
public bool Favorite { get; set; }
|
||||||
public bool Edit { get; set; }
|
public bool Edit { get; set; }
|
||||||
public bool ViewPassword { get; set; } = true; // Fallback for old server versions
|
public bool ViewPassword { get; set; } = true; // Fallback for old server versions
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Models.Data;
|
|
||||||
using Bit.Core.Models.Domain;
|
using Bit.Core.Models.Domain;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
|
|
||||||
@@ -22,21 +21,14 @@ namespace Bit.Core.Models.View
|
|||||||
Email = a.Profile?.Email;
|
Email = a.Profile?.Email;
|
||||||
Name = a.Profile?.Name;
|
Name = a.Profile?.Name;
|
||||||
AvatarColor = a.Profile?.AvatarColor;
|
AvatarColor = a.Profile?.AvatarColor;
|
||||||
Hostname = ParseEndpoint(a.Settings?.EnvironmentUrls);
|
if (!string.IsNullOrWhiteSpace(a.Settings?.EnvironmentUrls?.WebVault))
|
||||||
}
|
|
||||||
|
|
||||||
private string ParseEndpoint(EnvironmentUrlData urls)
|
|
||||||
{
|
|
||||||
var url = urls?.WebVault ?? urls?.Base;
|
|
||||||
if (!string.IsNullOrWhiteSpace(url))
|
|
||||||
{
|
{
|
||||||
if (url.Contains("bitwarden.com") || url.Contains("bitwarden.eu"))
|
Hostname = CoreHelpers.GetHostname(a.Settings?.EnvironmentUrls?.WebVault);
|
||||||
{
|
}
|
||||||
return CoreHelpers.GetDomain(url);
|
else if (!string.IsNullOrWhiteSpace(a.Settings?.EnvironmentUrls?.Base))
|
||||||
}
|
{
|
||||||
return CoreHelpers.GetHostname(url);
|
Hostname = CoreHelpers.GetHostname(a.Settings?.EnvironmentUrls?.Base);
|
||||||
}
|
}
|
||||||
return string.Empty;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsAccount { get; set; }
|
public bool IsAccount { get; set; }
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ namespace Bit.Core.Models.View
|
|||||||
public IdentityView Identity { get; set; }
|
public IdentityView Identity { get; set; }
|
||||||
public CardView Card { get; set; }
|
public CardView Card { get; set; }
|
||||||
public SecureNoteView SecureNote { get; set; }
|
public SecureNoteView SecureNote { get; set; }
|
||||||
|
public Fido2KeyView Fido2Key { get; set; }
|
||||||
public List<AttachmentView> Attachments { get; set; }
|
public List<AttachmentView> Attachments { get; set; }
|
||||||
public List<FieldView> Fields { get; set; }
|
public List<FieldView> Fields { get; set; }
|
||||||
public List<PasswordHistoryView> PasswordHistory { get; set; }
|
public List<PasswordHistoryView> PasswordHistory { get; set; }
|
||||||
@@ -66,6 +67,8 @@ namespace Bit.Core.Models.View
|
|||||||
return Card;
|
return Card;
|
||||||
case CipherType.Identity:
|
case CipherType.Identity:
|
||||||
return Identity;
|
return Identity;
|
||||||
|
case CipherType.Fido2Key:
|
||||||
|
return Fido2Key;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -112,14 +115,12 @@ namespace Bit.Core.Models.View
|
|||||||
return LinkedFieldOptions.Find(lfo => lfo.Value == id).Key;
|
return LinkedFieldOptions.Find(lfo => lfo.Value == id).Key;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ComparableName => Name + Login?.Username;
|
public string ComparableName => Name + Login?.Username + Fido2Key?.UserName;
|
||||||
|
|
||||||
public bool CanLaunch => Login?.CanLaunch == true;
|
public bool CanLaunch => Login?.CanLaunch == true || Fido2Key?.CanLaunch == true;
|
||||||
|
|
||||||
public string LaunchUri => Login?.LaunchUri;
|
public string LaunchUri => Login?.LaunchUri ?? Fido2Key?.LaunchUri;
|
||||||
|
|
||||||
public bool IsClonable => OrganizationId is null;
|
public bool IsClonable => OrganizationId is null && Type != CipherType.Fido2Key;
|
||||||
|
|
||||||
public bool HasFido2Key => Type == CipherType.Login && Login?.HasFido2Keys == true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ namespace Bit.Core.Models.View
|
|||||||
{
|
{
|
||||||
public class Fido2KeyView : ItemView, ILaunchableView
|
public class Fido2KeyView : ItemView, ILaunchableView
|
||||||
{
|
{
|
||||||
public string CredentialId { get; set; }
|
public string NonDiscoverableId { get; set; }
|
||||||
public string Discoverable { get; set; }
|
|
||||||
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
public string KeyType { get; set; } = Constants.DefaultFido2KeyType;
|
||||||
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
public string KeyAlgorithm { get; set; } = Constants.DefaultFido2KeyAlgorithm;
|
||||||
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
public string KeyCurve { get; set; } = Constants.DefaultFido2KeyCurve;
|
||||||
@@ -19,7 +18,6 @@ namespace Bit.Core.Models.View
|
|||||||
|
|
||||||
public override string SubTitle => UserName;
|
public override string SubTitle => UserName;
|
||||||
public override List<KeyValuePair<string, LinkedIdType>> LinkedFieldOptions => new List<KeyValuePair<string, LinkedIdType>>();
|
public override List<KeyValuePair<string, LinkedIdType>> LinkedFieldOptions => new List<KeyValuePair<string, LinkedIdType>>();
|
||||||
public bool IsDiscoverable => !string.IsNullOrWhiteSpace(Discoverable);
|
|
||||||
public bool CanLaunch => !string.IsNullOrEmpty(RpId);
|
public bool CanLaunch => !string.IsNullOrEmpty(RpId);
|
||||||
public string LaunchUri => $"https://{RpId}";
|
public string LaunchUri => $"https://{RpId}";
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user