Compare commits

...

13 Commits
0.25.2 ... main

Author SHA1 Message Date
Leendert de Borst
44c16f4cd1 Add French and Spanish languages to dropdown selectors (#1435) 2025-12-22 12:44:39 +00:00
Leendert de Borst
4bf103d261 New Crowdin updates
* New translations en.json (Hebrew)
Update translations from Crowdin [ci skip]

* New translations general.en.resx (Hebrew)
Update translations from Crowdin [ci skip]

* New translations en.json (Hebrew)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations strings.xml (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations infoplist.strings (Spanish)
Update translations from Crowdin [ci skip]

* New translations strings.xml (Spanish)
Update translations from Crowdin [ci skip]

* New translations localizable.strings (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations login.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations register.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations passwordstep.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations termsandconditionsstep.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations usernamestep.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations totpcodes.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations totpviewer.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations emailmodal.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations emailpreview.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations emailrow.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations recentemails.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations editemailformrow.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations localizable.strings (Spanish)
Update translations from Crowdin [ci skip]

* New translations importservicecard.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations importservices.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations activesessionssection.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations deleteaccountsection.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations passwordchangesection.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations quickvaultunlocksection.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations changepassword.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations deleteaccount.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations enable2fa.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations resetvault.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations resetvaultsection.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations disable2fa.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations defaultpasswordsettings.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations passwordsettingspopup.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations recentauthlogssection.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations showrecoverycodes.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations twofactorauthenticationsection.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations createnewidentitywidget.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations searchwidget.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations footer.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations topmenu.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations setup.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations clipboardcountdownbar.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations forgotpassword.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations logout.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations setup.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations start.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations unlock.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations addedit.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations delete.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations home.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations view.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations home.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations apps.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations general.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations importexport.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations security.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations creating.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations errorvaultdecrypt.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations mobileunlockmodal.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations mobilelogin.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations vaultdecryptionprogress.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations sync.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations welcome.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations pendingmigrations.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations sharedresources.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations importexport.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations welcome.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations apierrors.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations validationmessages.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations mobilelogin.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (Spanish)
Update translations from Crowdin [ci skip]

* New translations welcome.en.resx (Spanish)
Update translations from Crowdin [ci skip]

* New translations en.json (French)
Update translations from Crowdin [ci skip]

* New translations en.json (French)
Update translations from Crowdin [ci skip]
2025-12-22 13:33:30 +01:00
dependabot[bot]
68b19b9545 Bump react-server-dom-webpack
Bumps the npm_and_yarn group with 1 update in the /apps/mobile-app directory: [react-server-dom-webpack](https://github.com/facebook/react/tree/HEAD/packages/react-server-dom-webpack).


Updates `react-server-dom-webpack` from 19.0.2 to 19.0.3
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.0.3/packages/react-server-dom-webpack)

---
updated-dependencies:
- dependency-name: react-server-dom-webpack
  dependency-version: 19.0.3
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 10:07:24 +00:00
dependabot[bot]
e6d51ca1b1 Bump react-server-dom-webpack
Bumps the npm_and_yarn group with 1 update in the /apps/mobile-app directory: [react-server-dom-webpack](https://github.com/facebook/react/tree/HEAD/packages/react-server-dom-webpack).


Updates `react-server-dom-webpack` from 19.0.1 to 19.0.2
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.0.2/packages/react-server-dom-webpack)

---
updated-dependencies:
- dependency-name: react-server-dom-webpack
  dependency-version: 19.0.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 11:36:01 +00:00
dependabot[bot]
13e7f1ddd9 Bump react-server-dom-webpack
Bumps the npm_and_yarn group with 1 update in the /apps/mobile-app directory: [react-server-dom-webpack](https://github.com/facebook/react/tree/HEAD/packages/react-server-dom-webpack).


Updates `react-server-dom-webpack` from 19.0.0 to 19.0.1
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.0.1/packages/react-server-dom-webpack)

---
updated-dependencies:
- dependency-name: react-server-dom-webpack
  dependency-version: 19.0.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 18:27:21 +00:00
Leendert de Borst
e5d342b961 Add db-export duration timer 2025-12-02 13:59:36 +01:00
Leendert de Borst
a58426abcb Use postgres dockerfile for dev db instance 2025-12-02 13:52:37 +01:00
Leendert de Borst
819385bc0a Use stream instead of temp file for db-export 2025-12-02 13:52:13 +01:00
Leendert de Borst
c0cbc0be7b Only include successful attempts in statistics (#1420) 2025-12-01 23:08:38 +01:00
Leendert de Borst
40686f97e0 Show last 30 days instead of 72h for deletion requests (#1420) 2025-12-01 20:17:31 +01:00
Leendert de Borst
f10fb989ce Update recent usage page to include more info (#1420) 2025-12-01 16:25:59 +00:00
Leendert de Borst
ca85c04c75 Add review-versions.sh helper script 2025-12-01 11:51:21 +01:00
Leendert de Borst
fd9eb9d653 Bump version to 0.26.0-alpha 2025-11-30 17:49:52 +01:00
111 changed files with 2754 additions and 2335 deletions

View File

@@ -1 +1 @@
25
26

View File

@@ -1 +1 @@
2
0

View File

@@ -1 +1 @@
-alpha

View File

@@ -1 +1 @@
0.25.2
0.26.0-alpha

View File

@@ -2,7 +2,7 @@
"name": "aliasvault-browser-extension",
"description": "AliasVault Browser Extension",
"private": true,
"version": "0.25.2",
"version": "0.26.0",
"type": "module",
"scripts": {
"dev:chrome": "wxt -b chrome",

View File

@@ -463,7 +463,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2502900;
CURRENT_PROJECT_VERSION = 2600100;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_HARDENED_RUNTIME = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -476,7 +476,7 @@
"@executable_path/../../../../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 0.25.2;
MARKETING_VERSION = 0.26.0;
OTHER_LDFLAGS = (
"-framework",
SafariServices,
@@ -495,7 +495,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "AliasVault Extension/AliasVault_Extension.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2502900;
CURRENT_PROJECT_VERSION = 2600100;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_HARDENED_RUNTIME = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -508,7 +508,7 @@
"@executable_path/../../../../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 0.25.2;
MARKETING_VERSION = 0.26.0;
OTHER_LDFLAGS = (
"-framework",
SafariServices,
@@ -532,7 +532,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 2502900;
CURRENT_PROJECT_VERSION = 2600100;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_HARDENED_RUNTIME = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -547,7 +547,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 0.25.2;
MARKETING_VERSION = 0.26.0;
OTHER_LDFLAGS = (
"-framework",
SafariServices,
@@ -571,7 +571,7 @@
CODE_SIGN_ENTITLEMENTS = AliasVault/AliasVault.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 2502900;
CURRENT_PROJECT_VERSION = 2600100;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_HARDENED_RUNTIME = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -586,7 +586,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 0.25.2;
MARKETING_VERSION = 0.26.0;
OTHER_LDFLAGS = (
"-framework",
SafariServices,

View File

@@ -5,7 +5,9 @@
import deTranslations from './locales/de.json';
import enTranslations from './locales/en.json';
import esTranslations from './locales/es.json';
import fiTranslations from './locales/fi.json';
import frTranslations from './locales/fr.json';
import heTranslations from './locales/he.json';
import itTranslations from './locales/it.json';
import nlTranslations from './locales/nl.json';
@@ -26,9 +28,15 @@ export const LANGUAGE_RESOURCES = {
en: {
translation: enTranslations
},
es: {
translation: esTranslations
},
fi: {
translation: fiTranslations
},
fr: {
translation: frTranslations
},
he: {
translation: heTranslations
},
@@ -72,12 +80,24 @@ export const AVAILABLE_LANGUAGES: ILanguageConfig[] = [
nativeName: 'English',
flag: '🇺🇸'
},
{
code: 'es',
name: 'Spanish',
nativeName: 'Español',
flag: '🇪🇸'
},
{
code: 'fi',
name: 'Finnish',
nativeName: 'Suomi',
flag: '🇫🇮'
},
{
code: 'fr',
name: 'French',
nativeName: 'Français',
flag: '🇫🇷'
},
{
code: 'he',
name: 'Hebrew',

View File

@@ -1,441 +1,441 @@
{
"auth": {
"loginTitle": "Log in to AliasVault",
"username": "Username or email",
"usernamePlaceholder": "name / name@company.com",
"loginTitle": "Iniciar sesión en AliasVault",
"username": "Nombre de usuario o correo electrónico",
"usernamePlaceholder": "nombre / nombre@empresa.com",
"password": "Contraseña",
"passwordPlaceholder": "Enter your password",
"rememberMe": "Remember me",
"loginButton": "Log in",
"noAccount": "No account yet?",
"createVault": "Create new vault",
"twoFactorTitle": "Please enter the authentication code from your authenticator app.",
"authCode": "Authentication Code",
"authCodePlaceholder": "Enter 6-digit code",
"verify": "Verify",
"twoFactorNote": "Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",
"masterPassword": "Contraseña maestra",
"unlockVault": "Unlock",
"unlockWithPin": "Unlock with PIN",
"enterPinToUnlock": "Enter your PIN to unlock your vault",
"useMasterPassword": "Use Master Password",
"unlockTitle": "Unlock Your Vault",
"logout": "Logout",
"logoutConfirm": "Are you sure you want to logout?",
"unlockSuccessTitle": "Your vault is successfully unlocked",
"unlockSuccessDescription": "You can now use autofill in login forms in your browser.",
"closePopup": "Close this popup",
"browseVault": "Browse vault contents",
"connectingTo": "Connecting to",
"switchAccounts": "Switch accounts?",
"loggedIn": "Logged in",
"loginWithMobile": "Log in using Mobile App",
"unlockWithMobile": "Unlock using Mobile App",
"scanQrCode": "Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",
"passwordPlaceholder": "Introduzca su contraseña",
"rememberMe": "Recordar mis datos",
"loginButton": "Iniciar sesión",
"noAccount": "¿Sin cuenta todavía?",
"createVault": "Crear nueva bóveda",
"twoFactorTitle": "Por favor, introduzca el código de autenticación de su aplicación de autenticación.",
"authCode": "Código de autenticación",
"authCodePlaceholder": "Introduzca código de 6 dígitos",
"verify": "Verificar",
"twoFactorNote": "Nota: si no tiene acceso a su dispositivo de autenticación, puede restablecer su 2FA con un código de recuperación iniciando sesión a través del sitio web.",
"masterPassword": "Contraseña Maestra",
"unlockVault": "Desbloquear",
"unlockWithPin": "Desbloquear con PIN",
"enterPinToUnlock": "Introduzca su PIN para desbloquear su bóveda",
"useMasterPassword": "Usar Contraseña Maestra",
"unlockTitle": "Desbloquear tu Bóveda",
"logout": "Cerrar sesión",
"logoutConfirm": "¿Estás seguro de que quieres cerrar sesión?",
"unlockSuccessTitle": "Tu bóveda se ha desbloqueado correctamente",
"unlockSuccessDescription": "Ahora puede utilizar el autocompletado en los formularios de inicio de sesión en su navegador.",
"closePopup": "Cerrar esta ventana emergente",
"browseVault": "Navegar en el contenido de la bóveda",
"connectingTo": "Conectando con",
"switchAccounts": "¿Cambiar de cuenta?",
"loggedIn": "Sesión iniciada",
"loginWithMobile": "Iniciar sesión con la aplicación móvil",
"unlockWithMobile": "Desbloquear con la aplicación móvil",
"scanQrCode": "Escanea este código QR con tu aplicación móvil de AliasVault para iniciar sesión y desbloquear tu bóveda.",
"errors": {
"invalidCode": "Please enter a valid 6-digit authentication code.",
"serverError": "Could not reach AliasVault server. Please try again later or contact support if the problem persists.",
"wrongPassword": "Incorrect password. Please try again.",
"accountLocked": "Account temporarily locked due to too many failed attempts.",
"networkError": "Network error. Please check your connection and try again.",
"sessionExpired": "Your session has expired. Please log in again.",
"mobileLoginRequestExpired": "Mobile login request timed out. Please reload the page and try again."
"invalidCode": "Por favor, introduzca un código de autenticación de 6 dígitos válido.",
"serverError": "No se pudo llegar al servidor AliasVault. Por favor, inténtelo de nuevo más tarde o póngase en contacto con el soporte si el problema persiste.",
"wrongPassword": "Contraseña incorrecta. Por favor, inténtelo de nuevo.",
"accountLocked": "Cuenta bloqueada temporalmente debido a demasiados intentos fallidos.",
"networkError": "Error de red. Por favor, compruebe su conexión y vuelva a intentarlo.",
"sessionExpired": "Su sesn ha caducado. Por favor, inicie sesión de nuevo.",
"mobileLoginRequestExpired": "Se ha agotado el tiempo de inicio de sesión del móvil. Por favor, vuelva a cargar la página e inténtelo de nuevo."
}
},
"menu": {
"credentials": "Credentials",
"emails": "Emails",
"settings": "Settings"
"credentials": "Credenciales",
"emails": "Correos electrónicos",
"settings": "Configuración"
},
"common": {
"loading": "Loading...",
"notice": "Notice",
"loading": "Cargando...",
"notice": "Aviso",
"error": "Error",
"cancel": "Cancel",
"confirm": "Confirm",
"back": "Back",
"next": "Next",
"use": "Use",
"delete": "Delete",
"save": "Save",
"or": "Or",
"close": "Close",
"copied": "Copied!",
"openInNewWindow": "Open in new window",
"enabled": "Enabled",
"disabled": "Disabled",
"showPassword": "Show password",
"hidePassword": "Hide password",
"showDetails": "Show details",
"hideDetails": "Hide details",
"copyToClipboard": "Copy to clipboard",
"loadingEmails": "Loading emails...",
"loadingTotpCodes": "Loading TOTP codes...",
"attachments": "Attachments",
"loadingAttachments": "Loading attachments...",
"settings": "Settings",
"recentEmails": "Recent emails",
"loginCredentials": "Login credentials",
"twoFactorAuthentication": "Two-factor authentication",
"cancel": "Cancelar",
"confirm": "Confirmar",
"back": "Atrás",
"next": "Siguiente",
"use": "Usar",
"delete": "Borrar",
"save": "Guardar",
"or": "O",
"close": "Cerrar",
"copied": "¡Copiado!",
"openInNewWindow": "Abrir en una ventana nueva",
"enabled": "Habilitado",
"disabled": "Desactivado",
"showPassword": "Mostrar contraseña",
"hidePassword": "Ocultar contraseña",
"showDetails": "Mostrar detalles",
"hideDetails": "Ocultar detalles",
"copyToClipboard": "Copiar al portapapeles",
"loadingEmails": "Cargando email...",
"loadingTotpCodes": "Cargando códigos TOTP...",
"attachments": "Archivos adjuntos",
"loadingAttachments": "Cargando archivos adjuntos...",
"settings": "Configuración",
"recentEmails": "Correos recientes",
"loginCredentials": "Credenciales de inicio de sesión",
"twoFactorAuthentication": "Autenticación de doble factor",
"alias": "Alias",
"notes": "Notes",
"fullName": "Full Name",
"firstName": "First Name",
"lastName": "Last Name",
"birthDate": "Birth Date",
"nickname": "Nickname",
"notes": "Notas",
"fullName": "Nombre completo",
"firstName": "Nombre",
"lastName": "Apellido",
"birthDate": "Fecha de nacimiento",
"nickname": "Alias",
"email": "Email",
"username": "Username",
"password": "Password",
"syncingVault": "Syncing vault",
"savingChangesToVault": "Saving changes to vault",
"uploadingVaultToServer": "Uploading vault to server",
"checkingVaultUpdates": "Checking for vault updates",
"syncingUpdatedVault": "Syncing updated vault",
"executingOperation": "Executing operation...",
"loadMore": "Load more",
"username": "Nombre de usuario",
"password": "Contraseña",
"syncingVault": "Sincronizando bóveda",
"savingChangesToVault": "Guardando cambios en la bóveda",
"uploadingVaultToServer": "Subiendo bóveda al servidor",
"checkingVaultUpdates": "Comprobando actualizaciones de bóveda",
"syncingUpdatedVault": "Sincronizando bóveda actualizada",
"executingOperation": "Ejecutando operación...",
"loadMore": "Cargar más",
"errors": {
"serverNotAvailable": "The AliasVault server is not available. Please try again later or contact support if the problem persists.",
"clientVersionNotSupported": "This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",
"browserExtensionOutdated": "This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",
"serverVersionNotSupported": "The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",
"serverVersionTooOld": "The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",
"unknownError": "An unknown error occurred",
"unknownErrorTryAgain": "An unknown error occurred. Please try again.",
"vaultNotAvailable": "Vault not available",
"vaultIsLocked": "Vault is locked",
"passwordChanged": "Your password has changed since the last time you logged in. Please login again for security reasons."
"serverNotAvailable": "El servidor AliasVault no está disponible. Por favor, inténtelo de nuevo más tarde o póngase en contacto con el soporte técnico si el problema persiste.",
"clientVersionNotSupported": "Esta versión de la extensión del navegador AliasVault ya no es compatible con el servidor. Por favor, actualice la extensión de su navegador a la última versión.",
"browserExtensionOutdated": "Esta extensión del navegador está desactualizada y no se puede utilizar para acceder a esta bóveda. Por favor, actualice esta extensión del navegador para continuar.",
"serverVersionNotSupported": "El servidor AliasVault necesita ser actualizado a una versión más reciente para poder usar esta extensión del navegador. Póngase en contacto con el soporte si necesita ayuda.",
"serverVersionTooOld": "El servidor AliasVault necesita ser actualizado a una versión más reciente para poder utilizar esta característica. Por favor, contacte con el administrador del servidor si necesita ayuda.",
"unknownError": "Se produjo un error desconocido",
"unknownErrorTryAgain": "Se ha producido un error desconocido. Por favor, inténtelo de nuevo.",
"vaultNotAvailable": "Bóveda no disponible",
"vaultIsLocked": "La bóveda está bloqueada",
"passwordChanged": "Tu contraseña ha cambiado desde la última vez que iniciaste sesión. Por favor, inicia sesión de nuevo por razones de seguridad."
},
"apiErrors": {
"UNKNOWN_ERROR": "An unknown error occurred. Please try again.",
"ACCOUNT_LOCKED": "Account temporarily locked due to too many failed attempts. Please try again later.",
"ACCOUNT_BLOCKED": "Your account has been disabled. If you believe this is a mistake, please contact support.",
"USER_NOT_FOUND": "Invalid username or password. Please try again.",
"INVALID_AUTHENTICATOR_CODE": "Invalid authenticator code. Please try again.",
"INVALID_RECOVERY_CODE": "Invalid recovery code. Please try again.",
"REFRESH_TOKEN_REQUIRED": "Refresh token is required.",
"INVALID_REFRESH_TOKEN": "Invalid refresh token.",
"PUBLIC_REGISTRATION_DISABLED": "New account registration is currently disabled on this server. Please contact the administrator.",
"USERNAME_REQUIRED": "Username is required.",
"USERNAME_ALREADY_IN_USE": "Username is already in use.",
"USERNAME_AVAILABLE": "Username is available.",
"USERNAME_MISMATCH": "Username does not match the current user.",
"PASSWORD_MISMATCH": "The provided password does not match your current password.",
"ACCOUNT_SUCCESSFULLY_DELETED": "Account successfully deleted.",
"USERNAME_EMPTY_OR_WHITESPACE": "Username cannot be empty or whitespace.",
"USERNAME_TOO_SHORT": "Username too short: must be at least 3 characters long.",
"USERNAME_TOO_LONG": "Username too long: cannot be longer than 40 characters.",
"USERNAME_INVALID_EMAIL": "Invalid email address.",
"USERNAME_INVALID_CHARACTERS": "Username is invalid, can only contain letters or digits.",
"VAULT_NOT_UP_TO_DATE": "Your vault is not up-to-date. Please synchronize your vault and try again.",
"INTERNAL_SERVER_ERROR": "Internal server error.",
"VAULT_ERROR": "The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."
"UNKNOWN_ERROR": "Se ha producido un error desconocido. Por favor, inténtelo de nuevo.",
"ACCOUNT_LOCKED": "Cuenta bloqueada temporalmente debido a demasiados intentos fallidos. Por favor, inténtelo de nuevo.",
"ACCOUNT_BLOCKED": "Tu cuenta ha sido desactivada. Si crees que esto es un error, ponte en contacto con soporte.",
"USER_NOT_FOUND": "Nombre de usuario o contraseña no válidos. Por favor, inténtelo de nuevo.",
"INVALID_AUTHENTICATOR_CODE": "Código de autenticación inválido. Por favor, inténtelo de nuevo.",
"INVALID_RECOVERY_CODE": "Código de recuperación inválido. Por favor, inténtelo de nuevo.",
"REFRESH_TOKEN_REQUIRED": "Se requiere un token de actualización.",
"INVALID_REFRESH_TOKEN": "Token de actualización inválido.",
"PUBLIC_REGISTRATION_DISABLED": "El registro de nueva cuenta está actualmente deshabilitado en este servidor. Por favor, contacte con el administrador.",
"USERNAME_REQUIRED": "Se requiere un nombre de usuario.",
"USERNAME_ALREADY_IN_USE": "El nombre de usuario ya está en uso.",
"USERNAME_AVAILABLE": "El nombre de usuario está disponible.",
"USERNAME_MISMATCH": "El nombre de usuario no coincide con el usuario actual.",
"PASSWORD_MISMATCH": "La contraseña proporcionada no coincide con su contraseña actual.",
"ACCOUNT_SUCCESSFULLY_DELETED": "Cuenta eliminada con éxito.",
"USERNAME_EMPTY_OR_WHITESPACE": "El nombre de usuario no puede estar vacío o en blanco.",
"USERNAME_TOO_SHORT": "Nombre de usuario demasiado corto: debe tener al menos 3 caracteres.",
"USERNAME_TOO_LONG": "Nombre de usuario demasiado largo: no puede tener más de 40 caracteres.",
"USERNAME_INVALID_EMAIL": "Dirección de correo electrónico inválida.",
"USERNAME_INVALID_CHARACTERS": "El nombre de usuario inválido, solo puede contener letras o dígitos.",
"VAULT_NOT_UP_TO_DATE": "Su bóveda no está actualizada. Por favor, sincronice su bóveda e inténtelo de nuevo.",
"INTERNAL_SERVER_ERROR": "Error interno del servidor.",
"VAULT_ERROR": "La bóveda local no está actualizada. Por favor, sincronice su bóveda actualizando la página e inténtelo de nuevo."
}
},
"content": {
"or": "or",
"new": "New",
"cancel": "Cancel",
"vaultLocked": "AliasVault is locked.",
"creatingNewAlias": "Creating new alias...",
"noMatchesFound": "No matches found",
"searchVault": "Search vault...",
"serviceName": "Service name",
"email": "Email",
"username": "Username",
"password": "Password",
"enterServiceName": "Enter service name",
"enterEmailAddress": "Enter email address",
"enterUsername": "Enter username",
"hideFor1Hour": "Hide for 1 hour (current site)",
"hidePermanently": "Hide permanently (current site)",
"createRandomAlias": "Create random alias",
"createUsernamePassword": "Create username/password",
"randomAlias": "Random alias",
"usernamePassword": "Username/password",
"createAndSaveAlias": "Create and save alias",
"createAndSaveCredential": "Create and save credential",
"randomIdentityDescription": "Generate a random identity with a random email address accessible in AliasVault.",
"randomIdentityDescriptionDropdown": "Random identity with random email",
"manualCredentialDescription": "Specify your own email address and username.",
"manualCredentialDescriptionDropdown": "Manual username and password",
"failedToCreateIdentity": "Failed to create identity. Please try again.",
"enterEmailAndOrUsername": "Enter email and/or username",
"autofillWithAliasVault": "Autofill with AliasVault",
"generateRandomPassword": "Generate random password (copy to clipboard)",
"generateNewPassword": "Generate new password",
"togglePasswordVisibility": "Toggle password visibility",
"passwordCopiedToClipboard": "Password copied to clipboard",
"openAliasVaultToUpgrade": "Open AliasVault to upgrade",
"vaultUpgradeRequired": "Vault upgrade required.",
"dismissPopup": "Dismiss popup"
"or": "o",
"new": "Nuevo",
"cancel": "Cancelar",
"vaultLocked": "AliasVault está bloqueado.",
"creatingNewAlias": "Creando nuevo alias...",
"noMatchesFound": "No se han encontrado resultados",
"searchVault": "Buscar bóveda...",
"serviceName": "Nombre del servicio",
"email": "Correo electrónico",
"username": "Nombre de usuario",
"password": "Contraseña",
"enterServiceName": "Introduzca el nombre del servicio",
"enterEmailAddress": "Introduzca la dirección de correo electrónico",
"enterUsername": "Introduzca nombre de usuario",
"hideFor1Hour": "Ocultar durante 1 hora (sitio actual)",
"hidePermanently": "Ocultar permanentemente (sitio actual)",
"createRandomAlias": "Crear alias aleatorio",
"createUsernamePassword": "Crear nombre de usuario / contraseña",
"randomAlias": "Alias aleatorio",
"usernamePassword": "Nombre de usuario/Contraseña",
"createAndSaveAlias": "Crear y guardar alias",
"createAndSaveCredential": "Crear y guardar credencial",
"randomIdentityDescription": "Generar una identidad aleatoria con una dirección de correo electrónico aleatoria accesible en AliasVault.",
"randomIdentityDescriptionDropdown": "Identidad aleatoria con correo electrónico aleatorio",
"manualCredentialDescription": "Especifique su propia dirección de correo electrónico y nombre de usuario.",
"manualCredentialDescriptionDropdown": "Nombre de usuario y contraseña manual",
"failedToCreateIdentity": "Error al crear la identidad. Por favor, inténtalo de nuevo.",
"enterEmailAndOrUsername": "Introduzca email y/o nombre de usuario",
"autofillWithAliasVault": "AutoFill con AliasVault",
"generateRandomPassword": "Generar contraseña aleatoria (copiar al portapapeles)",
"generateNewPassword": "Generar nueva contraseña",
"togglePasswordVisibility": "Cambiar la visibilidad de la contraseña",
"passwordCopiedToClipboard": "Contraseña copiada al portapapeles",
"openAliasVaultToUpgrade": "Abrir AliasVault para actualizar",
"vaultUpgradeRequired": "Actualización de bóveda requerida.",
"dismissPopup": "Descartar aviso"
},
"credentials": {
"title": "Credentials",
"addCredential": "Add Credential",
"editCredential": "Edit Credential",
"deleteCredential": "Delete Credential",
"credentialDetails": "Credential Details",
"serviceName": "Service Name",
"notes": "Notes",
"totp": "Two-Factor Authentication",
"totpCode": "TOTP Code",
"copyTotp": "Copy TOTP",
"totpSecret": "TOTP Secret",
"totpSecretPlaceholder": "Enter TOTP secret key",
"welcomeTitle": "Welcome to AliasVault!",
"welcomeDescription": "To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",
"noPasskeysFound": "No passkeys have been created yet. Passkeys are created by visiting a website that offers passkeys as an authentication method.",
"noAttachmentsFound": "No credentials with attachments found",
"noMatchingCredentials": "No matching credentials found",
"createdAt": "Created",
"updatedAt": "Last updated",
"saveCredential": "Save credential",
"deleteCredentialTitle": "Delete Credential",
"deleteCredentialConfirm": "Are you sure you want to delete this credential? This action cannot be undone.",
"title": "Credenciales",
"addCredential": "Añadir credencial",
"editCredential": "Editar credencial",
"deleteCredential": "Borrar credencial",
"credentialDetails": "Detalles de la credencial",
"serviceName": "Nombre del servicio",
"notes": "Notas",
"totp": "Autenticación de Doble Factor",
"totpCode": "Código TOTP",
"copyTotp": "Copiar TOTP",
"totpSecret": "Secreto TOTP",
"totpSecretPlaceholder": "Introduzca la clave secreta TOTP",
"welcomeTitle": "¡Bienvenido a AliasVault!",
"welcomeDescription": "Para utilizar la extensión del navegador AliasVault: vaya a un sitio web y utilice la ventana de autocompletado de AliasVault para crear una nueva credencial.",
"noPasskeysFound": "No se han creado llaves de acceso todavía. Las llaves se crean visitando un sitio web que ofrece llaves de acceso como método de autenticación.",
"noAttachmentsFound": "No se encontraron credenciales con archivos adjuntos",
"noMatchingCredentials": "No se han encontrado credenciales coincidentes",
"createdAt": "Creado",
"updatedAt": "Última actualización",
"saveCredential": "Guardar credencial",
"deleteCredentialTitle": "Borrar credencial",
"deleteCredentialConfirm": "¿Está seguro de que desea eliminar estas credenciales? Esta acción no se puede deshacer.",
"filters": {
"all": "(All) Credentials",
"passkeys": "Passkeys",
"aliases": "Aliases",
"userpass": "Passwords",
"attachments": "Attachments"
"all": "(Todas) Credenciales",
"passkeys": "Llaves de acceso",
"aliases": "Alias",
"userpass": "Contraseñas",
"attachments": "Archivos adjuntos"
},
"randomAlias": "Random Alias",
"randomAlias": "Alias aleatorio",
"manual": "Manual",
"service": "Service",
"serviceUrl": "Service URL",
"loginCredentials": "Login Credentials",
"generateRandomUsername": "Generate random username",
"generateRandomPassword": "Generate random password",
"changePasswordComplexity": "Change password complexity",
"passwordLength": "Password length",
"includeLowercase": "Include lowercase letters",
"includeUppercase": "Include uppercase letters",
"includeNumbers": "Include numbers",
"includeSpecialChars": "Include special characters",
"avoidAmbiguousChars": "Avoid ambiguous characters (o, 0, etc.)",
"generateNewPreview": "Generate new preview",
"generateRandomAlias": "Generate Random Alias",
"clearAliasFields": "Clear Alias Fields",
"service": "Servicio",
"serviceUrl": "URL del servicio",
"loginCredentials": "Credenciales de inicio de sesión",
"generateRandomUsername": "Generar nombre de usuario aleatorio",
"generateRandomPassword": "Generar contraseña aleatoria",
"changePasswordComplexity": "Cambiar complejidad de contraseña",
"passwordLength": "Longitud de la contraseña",
"includeLowercase": "Incluye letras minúsculas",
"includeUppercase": "Incluye letras mayúsculas",
"includeNumbers": "Incluye números",
"includeSpecialChars": "Incluye caracteres especiales",
"avoidAmbiguousChars": "Evita caracteres ambiguos (o, 0, etc.)",
"generateNewPreview": "Crear nueva vista previa",
"generateRandomAlias": "Crear alias aleatorio",
"clearAliasFields": "Limpiar campos de alias",
"alias": "Alias",
"firstName": "First Name",
"lastName": "Last Name",
"nickName": "Nick Name",
"gender": "Gender",
"birthDate": "Birth Date",
"birthDatePlaceholder": "YYYY-MM-DD",
"metadata": "Metadata",
"firstName": "Nombre",
"lastName": "Apellido",
"nickName": "Apodo",
"gender": "Género",
"birthDate": "Fecha de nacimiento",
"birthDatePlaceholder": "AAAA-MM-DD",
"metadata": "Metadatos",
"validation": {
"required": "This field is required",
"serviceNameRequired": "Service name is required",
"invalidEmail": "Invalid email format",
"invalidDateFormat": "Date must be in YYYY-MM-DD format"
"required": "Se requiere este campo",
"serviceNameRequired": "Se requiere Nombre del servicio",
"invalidEmail": "Formato de correo electrónico inválido",
"invalidDateFormat": "La fecha debe estar en formato AAAA-MM-DD"
},
"privateEmailTitle": "Private Email",
"privateEmailAliasVaultServer": "AliasVault server",
"privateEmailDescription": "E2E encrypted, fully private.",
"publicEmailTitle": "Public Temp Email Providers",
"publicEmailDescription": "Anonymous but limited privacy. Email content is readable by anyone that knows the address.",
"useDomainChooser": "Use domain chooser",
"enterCustomDomain": "Enter custom domain",
"enterFullEmail": "Enter full email address",
"enterEmailPrefix": "Enter email prefix"
"privateEmailTitle": "Correo electrónico privado",
"privateEmailAliasVaultServer": "Servidor AliasVault",
"privateEmailDescription": "E2E cifrado, totalmente privado.",
"publicEmailTitle": "Proveedores de Correo Temporal Públicos",
"publicEmailDescription": "Privacidad anónima pero limitada. Contenido de correo electrónico puede ser leído por cualquiera que conozca la dirección.",
"useDomainChooser": "Usar selector de dominio",
"enterCustomDomain": "Introduzca dominio personalizado",
"enterFullEmail": "Introduzca la dirección de correo completa",
"enterEmailPrefix": "Introduzca prefijo de correo"
},
"totp": {
"addCode": "Add 2FA Code",
"instructions": "Enter the secret key shown by the website where you want to add two-factor authentication.",
"nameOptional": "Name (optional)",
"secretKey": "Secret Key",
"saveToViewCode": "Save to view code",
"addCode": "Añadir código 2FA",
"instructions": "Introduzca la clave secreta mostrada por el sitio web donde desea añadir autenticación de dos factores.",
"nameOptional": "Nombre (Opcional)",
"secretKey": "Clave secreta",
"saveToViewCode": "Guardar para ver el código",
"errors": {
"invalidSecretKey": "Invalid secret key format."
"invalidSecretKey": "Formato de clave secreta inválida."
}
},
"emails": {
"title": "Emails",
"deleteEmailTitle": "Delete Email",
"deleteEmailConfirm": "Are you sure you want to permanently delete this email?",
"from": "From",
"to": "To",
"date": "Date",
"emailContent": "Email content",
"attachments": "Attachments",
"emailNotFound": "Email not found",
"noEmails": "No emails found",
"noEmailsDescription": "You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",
"title": "Correos electrónicos",
"deleteEmailTitle": "Eliminar correo",
"deleteEmailConfirm": "¿Está seguro que desea eliminar permanentemente este correo electrónico?",
"from": "De",
"to": "Para",
"date": "Fecha",
"emailContent": "Contenido del correo electrónico",
"attachments": "Archivos adjuntos",
"emailNotFound": "Correo electrónico no encontrado",
"noEmails": "No se han encontrado correos electrónicos",
"noEmailsDescription": "No has recibido ningún correo electrónico en tus direcciones privadas todavía. Cuando recibas un nuevo correo electrónico, aparecerá aquí.",
"dateFormat": {
"justNow": "just now",
"minutesAgo_single": "{{count}} min ago",
"minutesAgo_plural": "{{count}} mins ago",
"hoursAgo_single": "{{count}} hr ago",
"hoursAgo_plural": "{{count}} hrs ago",
"yesterday": "yesterday"
"justNow": "ahora mismo",
"minutesAgo_single": "Hace {{count}} min",
"minutesAgo_plural": "Hace {{count}} min",
"hoursAgo_single": "Hace {{count}} h",
"hoursAgo_plural": "Hace {{count}} h",
"yesterday": "ayer"
},
"errors": {
"emailLoadError": "An error occurred while loading emails. Please try again later.",
"emailUnexpectedError": "An unexpected error occurred while loading emails. Please try again later."
"emailLoadError": "Se ha producido un error al cargar los correos electrónicos. Por favor, inténtalo de nuevo más tarde.",
"emailUnexpectedError": "Se ha producido un error inesperado al cargar los correos electrónicos. Por favor, inténtalo de nuevo más tarde."
},
"apiErrors": {
"CLAIM_DOES_NOT_MATCH_USER": "The current chosen email address is already in use. Please change the email address by editing this credential.",
"CLAIM_DOES_NOT_EXIST": "An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."
"CLAIM_DOES_NOT_MATCH_USER": "La dirección de correo electrónico elegida actualmente ya está en uso. Por favor, cambie la dirección de correo electrónico editando esta credencial.",
"CLAIM_DOES_NOT_EXIST": "Ocurrió un error mientras se trataba de cargar los correos electrónicos. Por favor, intente editar y guardar la entrada de credenciales para sincronizar la base de datos, y vuelva a intentarlo."
}
},
"settings": {
"title": "Settings",
"serverUrl": "Server URL",
"language": "Language",
"autofillEnabled": "Enable Autofill",
"version": "Version",
"openInNewWindow": "Open in new window",
"openWebApp": "Open web app",
"loggedIn": "Logged in",
"logout": "Logout",
"lock": "Lock",
"globalSettings": "Global Settings",
"autofillPopup": "Autofill popup",
"activeOnAllSites": "Active on all sites (unless disabled below)",
"disabledOnAllSites": "Disabled on all sites",
"rightClickContextMenu": "Right-click context menu",
"autofillMatching": "Autofill Matching",
"autofillMatchingMode": "Autofill matching mode",
"autofillMatchingModeDescription": "Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",
"autofillMatchingDefault": "URL + subdomain + name wildcard",
"autofillMatchingUrlSubdomain": "URL + subdomain",
"autofillMatchingUrlExact": "Exact URL domain only",
"siteSpecificSettings": "Site-Specific Settings",
"autofillPopupOn": "Autofill popup on: ",
"enabledForThisSite": "Enabled for this site",
"disabledForThisSite": "Disabled for this site",
"temporarilyDisabledUntil": "Temporarily disabled until ",
"resetAllSiteSettings": "Reset all site-specific settings",
"appearance": "Appearance",
"theme": "Theme",
"useDefault": "Use default",
"light": "Light",
"dark": "Dark",
"keyboardShortcuts": "Keyboard Shortcuts",
"configureKeyboardShortcuts": "Configure keyboard shortcuts",
"configure": "Configure",
"clipboardClearTimeout": "Clear clipboard after copying",
"clipboardClearTimeoutDescription": "Automatically clear the clipboard after copying sensitive data",
"clipboardClearDisabled": "Never clear",
"clipboardClear5Seconds": "Clear after 5 seconds",
"clipboardClear10Seconds": "Clear after 10 seconds",
"clipboardClear15Seconds": "Clear after 15 seconds",
"autoLockTimeout": "Auto-lock Timeout",
"autoLockTimeoutDescription": "Automatically lock the vault after a period of inactivity",
"autoLockTimeoutHelp": "The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",
"autoLockNever": "Never",
"autoLock15Seconds": "15 seconds",
"autoLock1Minute": "1 minute",
"autoLock5Minutes": "5 minutes",
"autoLock15Minutes": "15 minutes",
"autoLock30Minutes": "30 minutes",
"autoLock1Hour": "1 hour",
"autoLock4Hours": "4 hours",
"autoLock8Hours": "8 hours",
"autoLock24Hours": "24 hours",
"versionPrefix": "Version ",
"autofillSettings": "Autofill Settings",
"clipboardSettings": "Clipboard Settings",
"contextMenuSettings": "Context Menu Settings",
"passkeySettings": "Passkey Settings",
"contextMenu": "Context Menu",
"contextMenuEnabled": "Context menu is enabled",
"contextMenuDisabled": "Context menu is disabled",
"contextMenuDescription": "Right-click on input fields to access AliasVault options",
"selectLanguage": "Select Language",
"serverConfiguration": "Server Configuration",
"serverConfigurationDescription": "Configure the AliasVault server URL for self-hosted instances",
"title": "Ajustes",
"serverUrl": "URL del servidor",
"language": "Idioma",
"autofillEnabled": "Activar autocompletado",
"version": "Versión",
"openInNewWindow": "Abrir en una ventana nueva",
"openWebApp": "Abrir la aplicación web",
"loggedIn": "Sesión iniciada",
"logout": "Cerrar sesión",
"lock": "Bloquear",
"globalSettings": "Ajustes globales",
"autofillPopup": "Ventana de autorrellenado",
"activeOnAllSites": "Activo en todos los sitios (a menos que se deshabilite debajo)",
"disabledOnAllSites": "Deshabilitado en todos los sitios",
"rightClickContextMenu": "Menú contextual del clic derecho",
"autofillMatching": "Coincidencia de autocompletado",
"autofillMatchingMode": "Modo de coincidencia de autocompletado",
"autofillMatchingModeDescription": "Determina qué credenciales se consideran coincidentes y se muestran como sugerencias en el popup de autorrelleno de un sitio web determinado.",
"autofillMatchingDefault": "URL + subdominio + nombre wildcard",
"autofillMatchingUrlSubdomain": "URL + subdominio",
"autofillMatchingUrlExact": "Solo URL exacta",
"siteSpecificSettings": "Ajustes específicos del sitio",
"autofillPopupOn": "Ventana de autorrelleno ",
"enabledForThisSite": "Habilitado para este sitio",
"disabledForThisSite": "Deshabilitado para este sitio",
"temporarilyDisabledUntil": "Deshabilitado temporalmente hasta ",
"resetAllSiteSettings": "Reiniciar todos los ajustes específicos del sitio",
"appearance": "Apariencia",
"theme": "Tema",
"useDefault": "Uso por defecto",
"light": "Claro",
"dark": "Oscuro",
"keyboardShortcuts": "Atajos de teclado",
"configureKeyboardShortcuts": "Configurar atajos de teclado",
"configure": "Configurar",
"clipboardClearTimeout": "Limpiar portapapeles después de copiar",
"clipboardClearTimeoutDescription": "Limpiar automáticamente el portapapeles después de copiar datos sensibles",
"clipboardClearDisabled": "Nunca limpiar",
"clipboardClear5Seconds": "Limpiar después 5 segundos",
"clipboardClear10Seconds": "Limpiar después 10 segundos",
"clipboardClear15Seconds": "Limpiar después 15 segundos",
"autoLockTimeout": "Tiempo de bloqueo automático",
"autoLockTimeoutDescription": "Bloquear automáticamente la bóveda después de un período de inactividad",
"autoLockTimeoutHelp": "La bóveda sólo se bloqueará después del período especificado de inactividad (no se abrirá el uso de autocompletado o la ventana emergente). La bóveda siempre se bloqueará cuando el navegador esté cerrado, independientemente de esta configuración.",
"autoLockNever": "Nunca",
"autoLock15Seconds": "15 segundos",
"autoLock1Minute": "1 minuto",
"autoLock5Minutes": "5 minutos",
"autoLock15Minutes": "15 minutos",
"autoLock30Minutes": "30 minutos",
"autoLock1Hour": "1 hora",
"autoLock4Hours": "4 horas",
"autoLock8Hours": "8 horas",
"autoLock24Hours": "24 horas",
"versionPrefix": "Versión ",
"autofillSettings": "Ajustes de autocompletado",
"clipboardSettings": "Ajustes del portapapeles",
"contextMenuSettings": "Ajustes del menú contextual",
"passkeySettings": "Ajustes de llaves de acceso",
"contextMenu": "Menú Contextual",
"contextMenuEnabled": "El menú contextual está activado",
"contextMenuDisabled": "El menú contextual está desactivado",
"contextMenuDescription": "Haga clic derecho en los campos de entrada para acceder a las opciones de AliasVault",
"selectLanguage": "Seleccionar idioma",
"serverConfiguration": "Configuración del servidor",
"serverConfigurationDescription": "Configurar la URL del servidor AliasVault para instancias self-hosted",
"customApiUrl": "API URL",
"customClientUrl": "Client URL",
"apiUrlHint": "The API endpoint URL (usually client URL + /api)",
"clientUrlHint": "The web interface URL of your self-hosted instance",
"autofillSettingsDescription": "Enable or disable the autofill popup on web pages",
"autofillEnabledDescription": "Autofill suggestions will appear on login forms",
"autofillDisabledDescription": "Autofill suggestions are disabled globally",
"languageSettings": "Language",
"customClientUrl": "URL de Cliente",
"apiUrlHint": "La URL del endpoint de la API (generalmente URL del cliente + /api)",
"clientUrlHint": "La URL de la interfaz web de su instancia self-hosted",
"autofillSettingsDescription": "Activar o desactivar la ventana emergente de autorrelleno en páginas web",
"autofillEnabledDescription": "Las sugerencias de autorrelleno aparecerán en los formularios de inicio de sesión",
"autofillDisabledDescription": "Las sugerencias de autorrelleno están desactivadas globalmente",
"languageSettings": "Idioma",
"validation": {
"apiUrlRequired": "API URL is required",
"apiUrlInvalid": "Please enter a valid API URL",
"clientUrlRequired": "Client URL is required",
"clientUrlInvalid": "Please enter a valid client URL"
"apiUrlRequired": "La URL de la API es necesaria",
"apiUrlInvalid": "Por favor, introduzca una URL de API válida",
"clientUrlRequired": "La URL de cliente es necesaria",
"clientUrlInvalid": "Por favor, introduzca una URL de cliente válida"
},
"unlockMethod": {
"title": "Vault Unlock Method",
"introText": "Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",
"password": "Master Password",
"pin": "PIN Code",
"pinDescription": "Unlock vault with PIN code",
"setupPin": "Setup PIN Code",
"enterNewPinDescription": "Enter a PIN code consisting of minimum 6 digits",
"confirmPin": "Confirm PIN",
"confirmPinDescription": "Enter your PIN again to confirm",
"invalidPinFormat": "Invalid PIN format",
"pinMismatch": "PINs do not match",
"incorrectPin": "Incorrect PIN. {{attemptsRemaining}} attempts remaining.",
"incorrectPinSingular": "Incorrect PIN. 1 attempt remaining.",
"enableSuccess": "PIN unlock enabled successfully!",
"pinLocked": "PIN unlock has been disabled. Please use your master password to unlock your vault.",
"pinSecurityWarning": "PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."
"title": "Método de desbloqueo de la bóveda",
"introText": "Elija cómo desea desbloquear su bóveda. Puede utilizar su contraseña maestra (siempre disponible) o configurar un código PIN para un acceso más rápido. Después de 3 intentos fallidos de PIN, necesitarás usar tu contraseña maestra.",
"password": "Contraseña Maestra",
"pin": "Código PIN",
"pinDescription": "Desbloquear bóveda con código PIN",
"setupPin": "Configurar código PIN",
"enterNewPinDescription": "Introduzca un código PIN que contenga un mínimo de 6 dígitos",
"confirmPin": "Confirmar PIN",
"confirmPinDescription": "Introduzca su PIN de nuevo para confirmar",
"invalidPinFormat": "Formato PIN inválido",
"pinMismatch": "Los PINs no coinciden",
"incorrectPin": "PIN incorrecto, {{attemptsRemaining}} intentos restantes.",
"incorrectPinSingular": "PIN incorrecto. 1 intento restante.",
"enableSuccess": "¡PIN activado con éxito!",
"pinLocked": "El desbloqueo con PIN ha sido deshabilitado. Por favor, utiliza tu contraseña maestra para desbloquear tu bóveda.",
"pinSecurityWarning": "El PIN de desbloqueo en la extensión del navegador puede ser menos seguro que su contraseña maestra, ya que los PIN típicamente tienen menos entropía y se pueden obtener por fuerza bruta si su dispositivo está en peligro. Úselo sólo en dispositivos en los que confíe plenamente."
}
},
"passkeys": {
"passkey": "Passkey",
"site": "Site",
"displayName": "Name",
"helpText": "Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",
"passkeyMarkedForDeletion": "Passkey marked for deletion",
"passkeyWillBeDeleted": "This passkey will be deleted when you save this credential.",
"passkey": "Llave de acceso",
"site": "Sitio",
"displayName": "Nombre",
"helpText": "Las llaves de acceso se crean en el sitio web cuando se le solicite. No pueden ser editadas manualmente. Para eliminar esta clave, puede eliminarla de esta credencial. Para reemplazar esta clave de acceso o crear una nueva, visite el sitio web y siga sus indicaciones.",
"passkeyMarkedForDeletion": "Llave de acceso marcada para eliminar",
"passkeyWillBeDeleted": "Esta llave de acceso se eliminará cuando guarde esta credencial.",
"bypass": {
"title": "Use Browser Passkey",
"description": "How long would you like to use the browser's passkey provider for {{origin}}?",
"thisTimeOnly": "This time only",
"alwaysForSite": "Always for this site"
"title": "Usar llave de acceso del navegador",
"description": "¿Cuánto tiempo quieres usar el proveedor de llaves de acceso del navegador para {{origin}}?",
"thisTimeOnly": "Solo esta vez",
"alwaysForSite": "Siempre para este sitio"
},
"authenticate": {
"title": "Sign in with Passkey",
"signInFor": "Sign in with passkey for",
"selectPasskey": "Select a passkey to sign in:",
"noPasskeysFound": "No passkeys found for this site",
"useBrowserPasskey": "Use Browser Passkey"
"title": "Iniciar sesión con llave de acceso",
"signInFor": "Iniciar sesión con llave para",
"selectPasskey": "Seleccione una llave de acceso para iniciar sesión:",
"noPasskeysFound": "No se encontraron llaves de acceso para este sitio",
"useBrowserPasskey": "Usar llave de acceso del navegador"
},
"create": {
"title": "Create Passkey",
"createFor": "Create a new passkey for",
"titleLabel": "Title",
"titlePlaceholder": "Enter a name for this passkey",
"createButton": "Create Passkey",
"useBrowserPasskey": "Use Browser Passkey",
"selectPasskeyToReplace": "Select a passkey to replace:",
"createNewPasskey": "Create New Passkey",
"replacingPasskey": "Replacing passkey: {{displayName}}",
"confirmReplace": "Confirm Replace"
"title": "Crear llave de acceso",
"createFor": "Crear nueva llave de acceso para",
"titleLabel": "Título",
"titlePlaceholder": "Introduzca un nombre para esta llave de acceso",
"createButton": "Crear llave de acceso",
"useBrowserPasskey": "Usar llave de acceso del navegador",
"selectPasskeyToReplace": "Seleccione una llave de acceso para reemplazar:",
"createNewPasskey": "Crear nueva llave de acceso",
"replacingPasskey": "Reemplazando llave de acceso: {{displayName}}",
"confirmReplace": "Confirmar reemplazo"
},
"settings": {
"passkeyProvider": "Passkey Provider",
"passkeyProviderOn": "Passkey Provider on "
"passkeyProvider": "Proveedor de llave de acceso",
"passkeyProviderOn": "Proveedor de llave de acceso en "
}
},
"upgrade": {
"title": "Upgrade Vault",
"subtitle": "AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",
"versionInformation": "Version Information",
"yourVault": "Your vault version:",
"newVersion": "New available version:",
"upgrade": "Upgrade Vault",
"upgrading": "Upgrading...",
"logout": "Logout",
"whatsNew": "What's New",
"whatsNewDescription": "An upgrade is required to support the following changes:",
"noDescriptionAvailable": "No description available for this version.",
"title": "Actualizar bóveda",
"subtitle": "AliasVault se ha actualizado y tu bóveda necesita ser actualizada. Esto solo debería tardar unos segundos.",
"versionInformation": "Información de versión",
"yourVault": "Tu versión de bóveda:",
"newVersion": "Nueva versión disponible:",
"upgrade": "Actualizar bóveda",
"upgrading": "Actualizando...",
"logout": "Cerrar sesión",
"whatsNew": "Novedades",
"whatsNewDescription": "Se requiere una actualización para soportar los siguientes cambios:",
"noDescriptionAvailable": "Ninguna descripción disponible para esta versión.",
"alerts": {
"unableToGetVersionInfo": "Unable to get version information. Please try again.",
"selfHostedServer": "Self-Hosted Server",
"selfHostedWarning": "If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",
"continueUpgrade": "Continue Upgrade",
"upgradeFailed": "Upgrade Failed",
"failedToApplyMigration": "Failed to apply migration ({{current}} of {{total}})"
"unableToGetVersionInfo": "No se pudo obtener información de la versión. Por favor, inténtalo de nuevo.",
"selfHostedServer": "Servidor autoalojado",
"selfHostedWarning": "Si está utilizando un servidor autoalojado, asegúrese de actualizar su instancia autoalojada, ya que de lo contrario iniciar sesión en el cliente web dejará de funcionar.",
"continueUpgrade": "Continuar actualización",
"upgradeFailed": "Actualización fallida",
"failedToApplyMigration": "Error al migrar de ({{current}} a {{total}})"
}
}
}

View File

@@ -6,7 +6,7 @@
"password": "Mot de passe",
"passwordPlaceholder": "Saisissez votre mot de passe",
"rememberMe": "Se souvenir de moi",
"loginButton": "Log in",
"loginButton": "Se connecter",
"noAccount": "Pas de compte?",
"createVault": "Créer un nouveau coffre",
"twoFactorTitle": "Veuillez entrer le code d'authentification de votre application d'authentification.",
@@ -15,7 +15,7 @@
"verify": "Vérifier",
"twoFactorNote": "Remarque : si vous n'avez pas accès à votre appareil d'authentification, vous pouvez réinitialiser votre authentification à double facteur avec un code de récupération en vous connectant via le site web.",
"masterPassword": "Mot de passe principal",
"unlockVault": "Unlock",
"unlockVault": "Déverrouiller",
"unlockWithPin": "Déverrouiller avec un code PIN",
"enterPinToUnlock": "Entrez votre code PIN pour déverrouiller votre coffre",
"useMasterPassword": "Utiliser le mot de passe principal",
@@ -29,9 +29,9 @@
"connectingTo": "Connexion à",
"switchAccounts": "Changer de compte ?",
"loggedIn": "Connecté(e)",
"loginWithMobile": "Log in using Mobile App",
"unlockWithMobile": "Unlock using Mobile App",
"scanQrCode": "Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",
"loginWithMobile": "Se connecter à l'aide de l'application mobile",
"unlockWithMobile": "Déverrouiller en utilisant l'application mobile",
"scanQrCode": "Scannez ce code QR avec votre application mobile AliasVault pour vous connecter et déverrouiller votre coffre.",
"errors": {
"invalidCode": "Veuillez entrer un code d'authentification valide à 6 chiffres.",
"serverError": "Impossible d'accéder au serveur AliasVault. Veuillez réessayer plus tard ou contacter le support si le problème persiste.",
@@ -39,7 +39,7 @@
"accountLocked": "Compte temporairement verrouillé en raison d'un trop grand nombre de tentatives échouées.",
"networkError": "Erreur réseau. Vérifiez votre connexion et réessayez.",
"sessionExpired": "Votre session a expiré. Veuillez vous reconnecter.",
"mobileLoginRequestExpired": "Mobile login request timed out. Please reload the page and try again."
"mobileLoginRequestExpired": "La demande de connexion de l'application mobile a expiré. Veuillez recharger la page et réessayer."
}
},
"menu": {
@@ -57,7 +57,7 @@
"next": "Suivant",
"use": "Utiliser",
"delete": "Supprimer",
"save": "Save",
"save": "Sauvegarder",
"or": "Ou",
"close": "Fermer",
"copied": "Copié !",
@@ -66,8 +66,8 @@
"disabled": "Désactivé",
"showPassword": "Afficher le mot de passe",
"hidePassword": "Cacher le mot de passe",
"showDetails": "Show details",
"hideDetails": "Hide details",
"showDetails": "Afficher les détails",
"hideDetails": "Masquer les détails",
"copyToClipboard": "Copier dans le presse-papiers",
"loadingEmails": "Chargement des emails...",
"loadingTotpCodes": "Chargement des codes TOTP...",
@@ -99,9 +99,9 @@
"clientVersionNotSupported": "Cette version de l'extension de navigateur AliasVault n'est plus prise en charge par le serveur. Veuillez mettre à jour votre extension de navigateur à la dernière version.",
"browserExtensionOutdated": "Cette extension de navigateur est obsolète et ne peut pas être utilisée pour accéder à ce coffre-fort. Veuillez la mettre à jour pour continuer.",
"serverVersionNotSupported": "Le serveur d'AliasVault doit être mis à jour vers une version plus récente afin d'utiliser cette extension de navigateur. Veuillez contacter le support si vous avez besoin d'aide.",
"serverVersionTooOld": "The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",
"serverVersionTooOld": "Le serveur AliasVault doit être mis à jour vers une version plus récente pour pouvoir utiliser cette fonctionnalité. Veuillez contacter l'administrateur du serveur si vous avez besoin d'aide.",
"unknownError": "Une erreur inconnue s'est produite",
"unknownErrorTryAgain": "An unknown error occurred. Please try again.",
"unknownErrorTryAgain": "Une erreur inconnue s'est produite. Merci de réessayer.",
"vaultNotAvailable": "Coffre non disponible",
"vaultIsLocked": "Le coffre est verrouillé",
"passwordChanged": "Votre mot de passe a changé depuis la dernière fois que vous vous êtes connecté. Veuillez vous reconnecter pour des raisons de sécurité."
@@ -186,8 +186,8 @@
"welcomeTitle": "Bienvenue dans AliasVault !",
"welcomeDescription": "Pour utiliser l'extension de navigateur AliasVault : accédez à un site web et utilisez la fenêtre de saisie automatique AliasVault pour créer un nouvel identifiant.",
"noPasskeysFound": "No passkeys have been created yet. Passkeys are created by visiting a website that offers passkeys as an authentication method.",
"noAttachmentsFound": "No credentials with attachments found",
"noMatchingCredentials": "No matching credentials found",
"noAttachmentsFound": "Aucun identifiant avec des pièces jointes trouvé",
"noMatchingCredentials": "Aucun identifiant correspondant trouvé",
"createdAt": "Créé",
"updatedAt": "Dernière mise à jour",
"saveCredential": "Enregistrer les identifiants",
@@ -244,7 +244,7 @@
"totp": {
"addCode": "Add 2FA Code",
"instructions": "Enter the secret key shown by the website where you want to add two-factor authentication.",
"nameOptional": "Name (optional)",
"nameOptional": "Nom (facultatif)",
"secretKey": "Secret Key",
"saveToViewCode": "Save to view code",
"errors": {
@@ -365,7 +365,7 @@
"title": "Vault Unlock Method",
"introText": "Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",
"password": "Master Password",
"pin": "PIN Code",
"pin": "Code PIN",
"pinDescription": "Unlock vault with PIN code",
"setupPin": "Setup PIN Code",
"enterNewPinDescription": "Enter a PIN code consisting of minimum 6 digits",

View File

@@ -6,7 +6,7 @@
"password": "סיסמה",
"passwordPlaceholder": "נא למלא את הסיסמה שלך",
"rememberMe": "לזכור אותי",
"loginButton": "Log in",
"loginButton": "כניסה",
"noAccount": "אין לך חשבון עדיין?",
"createVault": "יצירת כספת חדשה",
"twoFactorTitle": "נא למלא את קוד האימות מיישומון המאמת שלך.",
@@ -57,7 +57,7 @@
"next": "הבא",
"use": "להשתמש",
"delete": "מחיקה",
"save": "Save",
"save": "שמירה",
"or": "או",
"close": "סגירה",
"copied": "הועתק!",
@@ -244,8 +244,8 @@
"totp": {
"addCode": "Add 2FA Code",
"instructions": "Enter the secret key shown by the website where you want to add two-factor authentication.",
"nameOptional": "Name (optional)",
"secretKey": "Secret Key",
"nameOptional": "שם (רשות)",
"secretKey": "מפתח סודי",
"saveToViewCode": "Save to view code",
"errors": {
"invalidSecretKey": "Invalid secret key format."

View File

@@ -6,7 +6,7 @@ export class AppInfo {
/**
* The current extension version. This should be updated with each release of the extension.
*/
public static readonly VERSION = '0.25.2';
public static readonly VERSION = '0.26.0-alpha';
/**
* The API version to send to the server (base semver without stage suffixes).

View File

@@ -20,7 +20,7 @@ export default defineConfig({
return {
name: "AliasVault",
description: "AliasVault Browser AutoFill Extension. Keeping your personal information private.",
version: "0.25.2",
version: "0.26.0",
content_security_policy: {
extension_pages: "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
},

View File

@@ -93,8 +93,8 @@ android {
applicationId 'net.aliasvault.app'
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 2501900
versionName "0.25.1"
versionCode 2600100
versionName "0.26.0-alpha"
}
signingConfigs {
debug {

View File

@@ -1,78 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AliasVault</string>
<string name="autofill_service_description" translatable="true">AliasVault AutoFill</string>
<string name="aliasvault_icon">AliasVault icon</string>
<string name="autofill_service_description" translatable="true">AutoFill de AliasVault</string>
<string name="aliasvault_icon">Icono AliasVault</string>
<!-- Common strings -->
<string name="common_close">Close</string>
<string name="common_next">Next</string>
<string name="common_cancel">Cancel</string>
<string name="unknown_error">An unknown error occurred</string>
<string name="common_close">Cerrar</string>
<string name="common_next">Siguiente</string>
<string name="common_cancel">Cancelar</string>
<string name="unknown_error">Se produjo un error desconocido</string>
<!-- AutofillService strings -->
<string name="autofill_failed_to_retrieve">Failed to retrieve, open app</string>
<string name="autofill_no_match_found">No match found, create new?</string>
<string name="autofill_open_app">Open app</string>
<string name="autofill_vault_locked">Vault locked</string>
<string name="autofill_failed_to_retrieve">Fallo al recuperar, abrir aplicación</string>
<string name="autofill_no_match_found">No se han encontrado coincidencias, ¿crear nuevo?</string>
<string name="autofill_open_app">Abrir aplicación</string>
<string name="autofill_vault_locked">Bóveda bloqueada</string>
<!-- Biometric prompts -->
<string name="biometric_store_key_title">Store Encryption Key</string>
<string name="biometric_store_key_subtitle">Authenticate to securely store your encryption key in the Android Keystore. This enables secure access to your vault.</string>
<string name="biometric_unlock_vault_title">Unlock Vault</string>
<string name="biometric_unlock_vault_subtitle">Authenticate to access your vault</string>
<string name="biometric_store_key_title">Guardar clave de cifrado</string>
<string name="biometric_store_key_subtitle">Autenticar para almacenar su clave de cifrado de forma segura en el almacén de claves Android. Esto habilita el acceso seguro a su bóveda.</string>
<string name="biometric_unlock_vault_title">Desbloquear bóveda</string>
<string name="biometric_unlock_vault_subtitle">Autenticar para acceder a su bóveda</string>
<!-- Passkey registration -->
<string name="passkey_registration_title">Create Passkey</string>
<string name="create_passkey_title">Create New Passkey</string>
<string name="create_passkey_subtitle">Register a new passkey for this website. It will be securely stored in your vault and automatically synced across your devices with AliasVault.</string>
<string name="replace_passkey_title">Replace Passkey</string>
<string name="passkey_display_name_label">Passkey Name</string>
<string name="passkey_display_name_hint">Enter a name for this passkey</string>
<string name="passkey_website_label">Website</string>
<string name="passkey_username_label">Username</string>
<string name="passkey_create_button">Create Passkey</string>
<string name="passkey_creating">Creating passkey</string>
<string name="passkey_saving">Saving to vault</string>
<string name="passkey_syncing">Syncing with server…</string>
<string name="passkey_registration_title">Crear llave de acceso</string>
<string name="create_passkey_title">Crear nueva llave de acceso</string>
<string name="create_passkey_subtitle">Registre una nueva llave de acceso para este sitio web. Se almacenará de forma segura en su bóveda y se sincronizará automáticamente en todos sus dispositivos con AliasVault.</string>
<string name="replace_passkey_title">Reemplazar llave de acceso</string>
<string name="passkey_display_name_label">Nombre de llave de acceso</string>
<string name="passkey_display_name_hint">Introduzca un nombre para esta llave de acceso</string>
<string name="passkey_website_label">Sitio Web</string>
<string name="passkey_username_label">Nombre de usuario</string>
<string name="passkey_create_button">Crear llave de acceso</string>
<string name="passkey_creating">Creando llave de acceso</string>
<string name="passkey_saving">Guardando en la bóveda</string>
<string name="passkey_syncing">Sincronizando con el servidor…</string>
<string name="passkey_error_title">Error</string>
<string name="passkey_error_empty_name">Please enter a name for the passkey</string>
<string name="passkey_creation_failed">Failed to create passkey</string>
<string name="passkey_retry_button">Retry</string>
<string name="passkey_info_icon">Info icon</string>
<string name="passkey_create_explanation">This creates a new passkey and stores it in your vault. It will be automatically synced across all your devices that use AliasVault.</string>
<string name="passkey_create_new_button">Create New Passkey</string>
<string name="passkey_select_to_replace">Or, replace an existing passkey:</string>
<string name="passkey_replace_button">Replace Passkey</string>
<string name="passkey_replace_explanation">This will replace the existing passkey with a new one. Please be aware that your old passkey will be overwritten and no longer accessible. If you wish to create a separate passkey instead, go back to the previous screen.</string>
<string name="passkey_replacing">Replacing passkey</string>
<string name="passkey_checking_connection">Checking connection…</string>
<string name="passkey_error_empty_name">Introduzca un nombre para la llave de acceso</string>
<string name="passkey_creation_failed">Fallo al crear la llave de acceso</string>
<string name="passkey_retry_button">Reintentar</string>
<string name="passkey_info_icon">Icono de información</string>
<string name="passkey_create_explanation">Esto crea una nueva llave de acceso y la almacena en tu bóveda. Se sincronizará automáticamente en todos tus dispositivos que utilicen AliasVault.</string>
<string name="passkey_create_new_button">Crear nueva llave de acceso</string>
<string name="passkey_select_to_replace">O, reemplazar una llave de acceso existente:</string>
<string name="passkey_replace_button">Reemplazar llave de acceso</string>
<string name="passkey_replace_explanation">Esto reemplazará la llave de acceso existente con una nueva. Tenga en cuenta que su llave de acceso antigua será sobrescrita y ya no será accesible. Si desea crear una llave de acceso separada en su lugar, vuelva a la pantalla anterior.</string>
<string name="passkey_replacing">Reemplazando llave de acceso</string>
<string name="passkey_checking_connection">Comprobando la conexión…</string>
<!-- Vault sync error messages -->
<string name="connection_error_title">Connection Error</string>
<string name="connection_error_message">No connection to the server can be made. Please check your internet connection and try creating the passkey again.</string>
<string name="session_expired_title">Session Expired</string>
<string name="session_expired_message">Your session has expired. Please sign in again.</string>
<string name="password_changed_title">Password Changed</string>
<string name="password_changed_message">Your password has been changed. Please sign in again.</string>
<string name="version_not_supported_title">Update Required</string>
<string name="version_not_supported_message">Your app version is no longer supported. Please update to the latest version.</string>
<string name="server_unavailable_title">Server Unavailable</string>
<string name="server_unavailable_message">The server is currently unavailable. Please try again later.</string>
<string name="network_error_title">Network Error</string>
<string name="network_error_message">A network error occurred. Please check your connection and try again.</string>
<string name="server_version_not_supported_title">Server Update Required</string>
<string name="server_version_not_supported_message">The server version is outdated. Please contact your administrator to update the server.</string>
<string name="connection_error_title">Error de conexión</string>
<string name="connection_error_message">No se puede establecer conexión con el servidor. Por favor, compruebe su conexión a Internet e intente crear la llave de acceso de nuevo.</string>
<string name="session_expired_title">Sesn expirada</string>
<string name="session_expired_message">Su sesn ha expirado. Por favor, inicie sesión de nuevo.</string>
<string name="password_changed_title">Contraseña cambiada</string>
<string name="password_changed_message">Su contraseña ha sido cambiada. Por favor, inicie sesión de nuevo.</string>
<string name="version_not_supported_title">Actualización requerida</string>
<string name="version_not_supported_message">La versión de su aplicación ya no es compatible. Por favor, actualice a la última versión.</string>
<string name="server_unavailable_title">Servidor no disponible</string>
<string name="server_unavailable_message">El servidor no está disponible actualmente. Inténtelo de nuevo más tarde.</string>
<string name="network_error_title">Error de red</string>
<string name="network_error_message">Se produjo un error de red. Por favor, compruebe la conexión y vuelva a intentarlo.</string>
<string name="server_version_not_supported_title">Actualización del servidor necesaria</string>
<string name="server_version_not_supported_message">La versión del servidor está desactualizada. Por favor, contacte con su administrador para actualizar el servidor.</string>
<!-- Passkey authentication and unlock error messages -->
<string name="error_unlock_method_required">Please enable biometric or PIN authentication in the main AliasVault app in order to continue</string>
<string name="error_unlock_vault_first">Please unlock vault in AliasVault app first</string>
<string name="error_vault_decrypt_failed">Failed to decrypt vault</string>
<string name="error_biometric_cancelled">Biometric authentication cancelled</string>
<string name="error_encryption_key_failed">Failed to retrieve encryption key</string>
<string name="error_unlock_method_required">Por favor, habilite la autenticación biométrica o PIN en la aplicación principal de AliasVault para continuar</string>
<string name="error_unlock_vault_first">Por favor, primero desbloquea bóveda en la aplicación AliasVault</string>
<string name="error_vault_decrypt_failed">Error al descifrar la bóveda</string>
<string name="error_biometric_cancelled">Autenticación biométrica cancelada</string>
<string name="error_encryption_key_failed">Fallo al recuperar la clave de cifrado</string>
<!-- PIN unlock -->
<string name="pin_unlock_vault">Unlock Vault</string>
<string name="pin_enter_to_unlock">Enter your PIN to unlock your vault</string>
<string name="pin_locked_max_attempts">PIN locked after too many failed attempts</string>
<string name="pin_incorrect_attempts_remaining">Incorrect PIN. %d attempts remaining</string>
<string name="pin_unlock_vault">Desbloquear bóveda</string>
<string name="pin_enter_to_unlock">Introduzca su PIN para desbloquear su bóveda</string>
<string name="pin_locked_max_attempts">PIN bloqueado tras demasiados intentos fallidos</string>
<string name="pin_incorrect_attempts_remaining">PIN incorrecto, %d intentos restantes</string>
<!-- PIN setup -->
<string name="pin_setup_title">Setup PIN</string>
<string name="pin_setup_description">Choose a PIN to unlock your vault</string>
<string name="pin_confirm_title">Confirm PIN</string>
<string name="pin_confirm_description">Re-enter your PIN to confirm</string>
<string name="pin_mismatch">PINs do not match. Please try again.</string>
<string name="pin_setup_title">Configurar PIN</string>
<string name="pin_setup_description">Elija un PIN para desbloquear su bóveda</string>
<string name="pin_confirm_title">Confirmar PIN</string>
<string name="pin_confirm_description">Vuelva a introducir su PIN para confirmar</string>
<string name="pin_mismatch">Los PIN no coinciden. Por favor, inténtalo de nuevo.</string>
</resources>

View File

@@ -2,7 +2,9 @@
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="de" />
<locale android:name="en" />
<locale android:name="es" />
<locale android:name="fi" />
<locale android:name="fr" />
<locale android:name="he" />
<locale android:name="it" />
<locale android:name="nl" />

View File

@@ -2,7 +2,7 @@
"expo": {
"name": "AliasVault",
"slug": "AliasVault",
"version": "0.25.1",
"version": "0.26.0-alpha",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"scheme": "aliasvault",

View File

@@ -4,7 +4,9 @@ import { initReactI18next } from 'react-i18next';
import de from './locales/de.json';
import en from './locales/en.json';
import es from './locales/es.json';
import fi from './locales/fi.json';
import fr from './locales/fr.json';
import he from './locales/he.json';
import it from './locales/it.json';
import nl from './locales/nl.json';
@@ -17,7 +19,9 @@ import zh from './locales/zh.json';
const resources = {
de: { translation: de },
en: { translation: en },
es: { translation: es },
fi: { translation: fi },
fr: { translation: fr },
he: { translation: he },
nl: { translation: nl },
it: { translation: it },

View File

File diff suppressed because it is too large Load Diff

View File

@@ -173,8 +173,8 @@
"downloadToView": "יש להוריד את הקובץ כדי לצפות בו",
"unsavedChanges": {
"title": "להתעלם מהשינויים?",
"message": "You have unsaved changes. Are you sure you want to discard them?",
"discard": "Discard"
"message": "יש שינויים שלא נשמרו. לסלק אותם?",
"discard": "סילוק"
},
"toasts": {
"credentialUpdated": "פרטי הגישה עודכנו בהצלחה",
@@ -208,8 +208,8 @@
},
"totp": {
"addCode": "Add 2FA Code",
"nameOptional": "Name (optional)",
"secretKey": "Secret Key",
"nameOptional": "שם (רשות)",
"secretKey": "מפתח סודי",
"instructions": "Enter the secret key shown by the website where you want to add two-factor authentication.",
"saveToViewCode": "Save to view code",
"errors": {
@@ -328,8 +328,8 @@
"languageDescription": "נא להגדיר את השפה שתשמש ליצירת זהויות חדשות.",
"genderSection": "מגדר",
"genderDescription": "להגדיר את אפשרויות המגדר ליצירת זהויות חדשות.",
"ageRangeSection": "Age Range",
"ageRangeDescription": "Set the age range for generating new identities.",
"ageRangeSection": "טווח גילים",
"ageRangeDescription": "הגדרת טווח גילים ליצירת זהויות חדשות.",
"genderOptions": {
"random": "אקראי",
"male": "זכר",
@@ -412,10 +412,10 @@
"qrScanner": {
"title": "QR Code Scanner",
"scanningMessage": "Scan AliasVault QR code",
"invalidQrCode": "Invalid QR Code",
"invalidQrCode": "קוד QR שגוי",
"notAliasVaultQr": "This is not a valid AliasVault QR code. Please scan a QR code generated by AliasVault.",
"cameraPermissionTitle": "Camera Permission Required",
"cameraPermissionMessage": "Please allow camera access to scan QR codes.",
"cameraPermissionTitle": "נדרשת הרשאת מצלמה",
"cameraPermissionMessage": "נא לאפשר גישה למצלמה כדי לסרוק קודים מסוג QR.",
"mobileLogin": {
"confirmTitle": "Confirm Login Request",
"confirmSubtitle": "Re-authenticate to approve login on another device.",

View File

@@ -716,7 +716,9 @@
Base,
de,
en,
es,
fi,
fr,
he,
nl,
it,
@@ -1226,7 +1228,7 @@
CODE_SIGN_ENTITLEMENTS = AliasVault/AliasVault.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_BITCODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
@@ -1241,7 +1243,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.25.1;
MARKETING_VERSION = 0.26.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -1267,7 +1269,7 @@
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = AliasVault/AliasVault.entitlements;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
INFOPLIST_FILE = AliasVault/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = AliasVault;
@@ -1277,7 +1279,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.25.1;
MARKETING_VERSION = 0.26.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -1422,7 +1424,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -1458,7 +1460,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -1492,7 +1494,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1549,7 +1551,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 8PHW4HN3F7;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1602,7 +1604,7 @@
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1655,7 +1657,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 8PHW4HN3F7;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1704,7 +1706,7 @@
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -1739,7 +1741,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -1772,7 +1774,7 @@
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1825,7 +1827,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 8PHW4HN3F7;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1874,7 +1876,7 @@
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1926,7 +1928,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 8PHW4HN3F7;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1977,7 +1979,7 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = autofill/autofill.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -1993,7 +1995,7 @@
"@executable_path/../../Frameworks",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 0.25.1;
MARKETING_VERSION = 0.26.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
@@ -2022,7 +2024,7 @@
CODE_SIGN_ENTITLEMENTS = autofill/autofill.entitlements;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2501900;
CURRENT_PROJECT_VERSION = 2600100;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 8PHW4HN3F7;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@@ -2038,7 +2040,7 @@
"@executable_path/../../Frameworks",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 0.25.1;
MARKETING_VERSION = 0.26.0;
MTL_FAST_MATH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = net.aliasvault.app.autofill;

View File

@@ -23,7 +23,9 @@
<array>
<string>de</string>
<string>en</string>
<string>es</string>
<string>fi</string>
<string>fr</string>
<string>he</string>
<string>it</string>
<string>nl</string>

View File

Binary file not shown.

View File

@@ -6,7 +6,9 @@
<array>
<string>de</string>
<string>en</string>
<string>es</string>
<string>fi</string>
<string>fr</string>
<string>he</string>
<string>it</string>
<string>nl</string>

View File

Binary file not shown.

View File

@@ -1,73 +1,73 @@
/* English localization strings for VaultUI */
"error" = "Error";
"cancel" = "Cancel";
"back" = "Back";
"next" = "Next";
"edit" = "Edit";
"website" = "Website";
"username" = "Username";
"title" = "Title";
"unknown_error" = "An unknown error occurred";
"cancel" = "Cancelar";
"back" = "Atrás";
"next" = "Siguiente";
"edit" = "Editar";
"website" = "Sitio Web";
"username" = "Usuario";
"title" = "Título";
"unknown_error" = "Se produjo un error desconocido";
"loading_credentials" = "Loading credentials...";
"no_credentials_found" = "No credentials found";
"no_credentials_match" = "No existing credentials match your search";
"create_new_credential" = "Create New Credential";
"select_credential" = "Select Credential";
"select_text_to_insert" = "Select Text to Insert";
"choose_username" = "Choose Username";
"select_text_to_insert_message" = "Select the text to insert into the focused input field";
"choose_username_message" = "This website may require either your username or your email address to log in";
"username_prefix" = "Username: ";
"loading_credentials" = "Cargando credenciales...";
"no_credentials_found" = "No se encontraron credenciales";
"no_credentials_match" = "No hay credenciales existentes que coincidan con su búsqueda";
"create_new_credential" = "Crear nueva credencial";
"select_credential" = "Seleccionar credencial";
"select_text_to_insert" = "Seleccionar texto a insertar";
"choose_username" = "Escoge un nombre de usuario";
"select_text_to_insert_message" = "Seleccione el texto a insertar en el campo de entrada resaltado";
"choose_username_message" = "Este sitio web puede requerir su nombre de usuario o correo electrónico para iniciar sesión";
"username_prefix" = "Usuario: ";
"email_prefix" = "Email: ";
"password" = "Password";
"credentials_load_error" = "Failed to load credentials. Please open the AliasVault app to check for updates.";
"no_credential_selected" = "No credential selected.";
"retrieving_credential" = "Retrieving credential";
"retrieving_passkey" = "Retrieving passkey";
"password" = "Contraseña";
"credentials_load_error" = "Error al cargar las credenciales. Por favor, abre la aplicación AliasVault para buscar actualizaciones.";
"no_credential_selected" = "Ninguna credencial seleccionada.";
"retrieving_credential" = "Recuperar credencial";
"retrieving_passkey" = "Recuperando llave";
/* Context menu strings */
"copy_username" = "Copy Username";
"copy_password" = "Copy Password";
"copy_email" = "Copy Email";
"view_details" = "View Details";
"username_copied" = "Username copied";
"password_copied" = "Password copied";
"email_copied" = "Email copied";
"copy_username" = "Copiar nombre de usuario";
"copy_password" = "Copiar Contraseña";
"copy_email" = "Copiar email";
"view_details" = "Ver detalles";
"username_copied" = "Usuario copiado";
"password_copied" = "Contraseña copiada";
"email_copied" = "Email copiado";
/* Search bar */
"search_credentials" = "Search credentials...";
"search_credentials" = "Buscar credenciales...";
/* Passkey registration */
"create_passkey_title" = "Create New Passkey";
"create_passkey_subtitle" = "Register a new passkey for this website. It will be securely stored in your vault and automatically synced across your devices with AliasVault.";
"create_passkey_button_confirm" = "Create Passkey";
"create_passkey_title" = "Crear Nueva llave";
"create_passkey_subtitle" = "Registre una nueva llave de acceso para este sitio web. Se almacenará de forma segura en su bóveda y se sincronizará automáticamente en todos sus dispositivos con AliasVault.";
"create_passkey_button_confirm" = "Crear llave de acceso";
/* Passkey provider */
"passkey" = "Passkey";
"loading_passkeys" = "Loading passkeys...";
"no_passkeys_found" = "No passkeys found";
"no_passkeys_match" = "No existing passkeys match your search";
"select_passkey" = "Select Passkey";
"passkeys_load_error" = "Failed to load passkeys. Please open the AliasVault app to check for updates.";
"passkey" = "Llave de acceso";
"loading_passkeys" = "Cargando llaves de acceso...";
"no_passkeys_found" = "No se encontraron claves de acceso";
"no_passkeys_match" = "Ninguna llave de acceso existente coincide con la búsqueda";
"select_passkey" = "Seleccionar la clave de acceso";
"passkeys_load_error" = "Error al cargar las credenciales. Por favor, abre la aplicación AliasVault para buscar actualizaciones.";
/* Passkey replacement */
"create_new_passkey" = "Create New Passkey";
"select_passkey_to_replace" = "Or, replace an existing passkey";
"confirm_replace" = "Replace Passkey";
"replace_passkey_title" = "Replace Passkey";
"replace_passkey_explanation" = "This will replace the existing passkey with a new one. Please be aware that your old passkey will be overwritten and no longer accessible. If you wish to create a separate passkey instead, go back to the previous screen.";
"create_passkey_explanation" = "This creates a new passkey and stores it in your vault. It will be automatically synced across all your devices that use AliasVault.";
"create_new_passkey" = "Crear nueva llave de acceso";
"select_passkey_to_replace" = "O, reemplazar una llave de acceso existente";
"confirm_replace" = "Reemplazar llave de acceso";
"replace_passkey_title" = "Reemplazar llave de acceso";
"replace_passkey_explanation" = "Esto reemplazará la llave de acceso existente con una nueva. Tenga en cuenta que su llave de acceso antigua será sobrescrita y ya no será accesible. Si desea crear una llave de acceso separada en su lugar, vuelva a la pantalla anterior.";
"create_passkey_explanation" = "Esto crea una nueva llave de acceso y la almacena en tu bóveda. Se sincronizará automáticamente en todos tus dispositivos que utilicen AliasVault.";
/* PIN Unlock */
"unlock_vault" = "Unlock Vault";
"enter_pin_to_unlock_vault" = "Enter your PIN to unlock your vault";
"pin_locked_max_attempts" = "PIN locked after too many failed attempts";
"pin_incorrect_attempts_remaining" = "Incorrect PIN. %d attempts remaining";
"unlock_vault" = "Desbloquear bóveda";
"enter_pin_to_unlock_vault" = "Introduzca su PIN para desbloquear su bóveda";
"pin_locked_max_attempts" = "PIN bloqueado tras demasiados intentos fallidos";
"pin_incorrect_attempts_remaining" = "PIN incorrecto, %d intentos restantes";
/* PIN Setup */
"pin_setup_title" = "Setup PIN";
"pin_setup_subtitle" = "Choose a PIN to unlock your vault";
"pin_confirm_title" = "Confirm PIN";
"pin_confirm_subtitle" = "Re-enter your PIN to confirm";
"pin_mismatch" = "PINs do not match. Please try again.";
"pin_setup_title" = "Configurar PIN";
"pin_setup_subtitle" = "Elija un PIN para desbloquear su bóveda";
"pin_confirm_title" = "Confirmar PIN";
"pin_confirm_subtitle" = "Vuelva a introducir su PIN para confirmar";
"pin_mismatch" = "Los PIN no coinciden. Por favor, inténtalo de nuevo.";

View File

@@ -127,6 +127,7 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.3",
@@ -4097,6 +4098,7 @@
"resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.17.tgz",
"integrity": "sha512-uEcYWi1NV+2Qe1oELfp9b5hTYekqWATv2cuwcOAg5EvsIsUPtzFrKIasgUXLBRGb9P7yR5ifoJ+ug4u6jdqSTQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@react-navigation/core": "^7.12.4",
"escape-string-regexp": "^4.0.0",
@@ -4376,6 +4378,7 @@
"resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz",
"integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/core": "^7.21.3",
"@svgr/babel-preset": "8.1.0",
@@ -4611,7 +4614,6 @@
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -4623,7 +4625,6 @@
"integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
@@ -4754,6 +4755,7 @@
"integrity": "sha512-ixLZ7zG7j1fM0DijL9hDArwhwcCb4vqmePgwtV0GfnkHRSCUEv4LvzarcTdhoqgyMznUx/EhoTUv31CKZzkQlw==",
"devOptional": true,
"license": "MIT",
"peer": true,
"dependencies": {
"csstype": "^3.0.2"
}
@@ -4871,6 +4873,7 @@
"integrity": "sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.43.0",
"@typescript-eslint/types": "8.43.0",
@@ -5401,7 +5404,6 @@
"integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/helper-numbers": "1.13.2",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2"
@@ -5412,24 +5414,21 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
"integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
"integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
"integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.13.2",
@@ -5437,7 +5436,6 @@
"integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/floating-point-hex-parser": "1.13.2",
"@webassemblyjs/helper-api-error": "1.13.2",
@@ -5449,8 +5447,7 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
"integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.14.1",
@@ -5458,7 +5455,6 @@
"integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -5472,7 +5468,6 @@
"integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
@@ -5483,7 +5478,6 @@
"integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@xtuc/long": "4.2.2"
}
@@ -5493,8 +5487,7 @@
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
"integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.14.1",
@@ -5502,7 +5495,6 @@
"integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -5520,7 +5512,6 @@
"integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
@@ -5535,7 +5526,6 @@
"integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -5549,7 +5539,6 @@
"integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-api-error": "1.13.2",
@@ -5565,7 +5554,6 @@
"integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@xtuc/long": "4.2.2"
@@ -5585,16 +5573,14 @@
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"dev": true,
"license": "BSD-3-Clause",
"peer": true
"license": "BSD-3-Clause"
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true,
"license": "Apache-2.0",
"peer": true
"license": "Apache-2.0"
},
"node_modules/abab": {
"version": "2.0.6",
@@ -5643,6 +5629,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -5667,7 +5654,6 @@
"integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=10.13.0"
},
@@ -5747,7 +5733,6 @@
"integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"ajv": "^8.0.0"
},
@@ -5766,7 +5751,6 @@
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -5783,8 +5767,7 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/anser": {
"version": "1.4.10",
@@ -6542,6 +6525,7 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001737",
"electron-to-chromium": "^1.5.211",
@@ -6780,7 +6764,6 @@
"integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.0"
}
@@ -7815,7 +7798,6 @@
"integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -8021,8 +8003,7 @@
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
@@ -8138,6 +8119,7 @@
"integrity": "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -8322,6 +8304,7 @@
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@rtsao/scc": "^1.1.0",
"array-includes": "^3.1.9",
@@ -8678,6 +8661,7 @@
"resolved": "https://registry.npmjs.org/expo/-/expo-53.0.22.tgz",
"integrity": "sha512-sJ2I4W/e5iiM4u/wYCe3qmW4D7WPCRqByPDD0hJcdYNdjc9HFFFdO4OAudZVyC/MmtoWZEIH5kTJP1cw9FjzYA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/runtime": "^7.20.0",
"@expo/cli": "0.24.21",
@@ -8763,6 +8747,7 @@
"resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.1.7.tgz",
"integrity": "sha512-byBjGsJ6T6FrLlhOBxw4EaiMXrZEn/MlUYIj/JAd+FS7ll5X/S4qVRbIimSJtdW47hXMq0zxPfJX6njtA56hHA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@expo/config": "~11.0.12",
"@expo/env": "~1.0.7"
@@ -8876,6 +8861,7 @@
"resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.3.2.tgz",
"integrity": "sha512-wUlMdpqURmQ/CNKK/+BIHkDA5nGjMqNlYmW0pJFXY/KE/OG80Qcavdu2sHsL4efAIiNGvYdBS10WztuQYU4X0A==",
"license": "MIT",
"peer": true,
"dependencies": {
"fontfaceobserver": "^2.1.0"
},
@@ -8926,6 +8912,7 @@
"resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-7.1.7.tgz",
"integrity": "sha512-ZJaH1RIch2G/M3hx2QJdlrKbYFUTOjVVW4g39hfxrE5bPX9xhZUYXqxqQtzMNl1ylAevw9JkgEfWbBWddbZ3UA==",
"license": "MIT",
"peer": true,
"dependencies": {
"expo-constants": "~17.1.7",
"invariant": "^2.2.4"
@@ -9208,8 +9195,7 @@
"url": "https://opencollective.com/fastify"
}
],
"license": "BSD-3-Clause",
"peer": true
"license": "BSD-3-Clause"
},
"node_modules/fast-xml-parser": {
"version": "4.5.3",
@@ -9733,8 +9719,7 @@
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true,
"license": "BSD-2-Clause",
"peer": true
"license": "BSD-2-Clause"
},
"node_modules/glob/node_modules/brace-expansion": {
"version": "2.0.2",
@@ -10070,6 +10055,7 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/runtime": "^7.27.6"
},
@@ -10913,6 +10899,7 @@
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -11232,9 +11219,9 @@
}
},
"node_modules/jest-expo/node_modules/react-server-dom-webpack": {
"version": "19.0.0",
"resolved": "https://registry.npmjs.org/react-server-dom-webpack/-/react-server-dom-webpack-19.0.0.tgz",
"integrity": "sha512-hLug9KEXLc8vnU9lDNe2b2rKKDaqrp5gNiES4uyu2Up3FZfZJZmdwLFXlWzdA9gTB/6/cWduSB2K1Lfag2pSvw==",
"version": "19.0.3",
"resolved": "https://registry.npmjs.org/react-server-dom-webpack/-/react-server-dom-webpack-19.0.3.tgz",
"integrity": "sha512-Ri1trzmT2G2ZTrummbbJca306MKyXpI8l4B7j1F8jGCjykUHCaojwtXBr/luEiRSFzQRkYBkH+wabfppP3x/IQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11246,8 +11233,8 @@
"node": ">=0.10.0"
},
"peerDependencies": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react": "^19.0.3",
"react-dom": "^19.0.3",
"webpack": "^5.59.0"
}
},
@@ -11256,8 +11243,7 @@
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
"integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/jest-get-type": {
"version": "29.6.3",
@@ -12311,7 +12297,6 @@
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.11.5"
}
@@ -14445,7 +14430,6 @@
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"safe-buffer": "^5.1.0"
}
@@ -14504,6 +14488,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz",
"integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -14562,6 +14547,7 @@
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.62.0.tgz",
"integrity": "sha512-7KWFejc98xqG/F4bAxpL41NB3o1nnvQO1RWZT3TqRZYL8RryQETGfEdVnJN2fy1crCiBLLjkRBVK05j24FxJGA==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18.0.0"
},
@@ -14610,6 +14596,7 @@
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.79.6.tgz",
"integrity": "sha512-kvIWSmf4QPfY41HC25TR285N7Fv0Pyn3DAEK8qRL9dA35usSaxsJkHfw+VqnonqJjXOaoKCEanwudRAJ60TBGA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jest/create-cache-key-function": "^29.7.0",
"@react-native/assets-registry": "0.79.6",
@@ -14829,6 +14816,7 @@
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.17.5.tgz",
"integrity": "sha512-SxBK7wQfJ4UoWoJqQnmIC7ZjuNgVb9rcY5Xc67upXAFKftWg0rnkknTw6vgwnjRcvYThrjzUVti66XoZdDJGtw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/plugin-transform-arrow-functions": "^7.0.0-0",
"@babel/plugin-transform-class-properties": "^7.0.0-0",
@@ -14864,6 +14852,7 @@
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.1.tgz",
"integrity": "sha512-/wJE58HLEAkATzhhX1xSr+fostLsK8Q97EfpfMDKo8jlOc1QKESSX/FQrhk7HhQH/2uSaox4Y86sNaI02kteiA==",
"license": "MIT",
"peer": true,
"peerDependencies": {
"react": "*",
"react-native": "*"
@@ -14874,6 +14863,7 @@
"resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.15.4.tgz",
"integrity": "sha512-aKHPDScUbpQiZEG9eZssHdG5jEQs4yiJ8eMx6g81Ex/xU7DZkv3911enzdCb+v4eJE79X8waizY0ZhauZJQmrw==",
"license": "MIT",
"peer": true,
"dependencies": {
"react-freeze": "^1.0.0",
"react-native-is-edge-to-edge": "^1.2.1",
@@ -14889,6 +14879,7 @@
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.11.2.tgz",
"integrity": "sha512-+YfF72IbWQUKzCIydlijV1fLuBsQNGMT6Da2kFlo1sh+LE3BIm/2Q7AR1zAAR6L0BFLi1WaQPLfFUC9bNZpOmw==",
"license": "MIT",
"peer": true,
"dependencies": {
"css-select": "^5.1.0",
"css-tree": "^1.1.3",
@@ -14930,6 +14921,7 @@
"resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.13.5.tgz",
"integrity": "sha512-MfC2B+woL4Hlj2WCzcb1USySKk+SteXnUKmKktOk/H/AQy5+LuVdkPKm8SknJ0/RxaxhZ48WBoTRGaqgR137hw==",
"license": "MIT",
"peer": true,
"dependencies": {
"escape-string-regexp": "^4.0.0",
"invariant": "2.2.4"
@@ -15497,7 +15489,6 @@
"integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.9.0",
@@ -15536,7 +15527,6 @@
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
@@ -15549,8 +15539,7 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true,
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/secure-remote-password": {
"version": "0.3.0",
@@ -15660,7 +15649,6 @@
"integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
"dev": true,
"license": "BSD-3-Clause",
"peer": true,
"dependencies": {
"randombytes": "^2.1.0"
}
@@ -16710,7 +16698,6 @@
"integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6"
},
@@ -16809,7 +16796,6 @@
"integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
@@ -16845,7 +16831,6 @@
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*",
"merge-stream": "^2.0.0",
@@ -16861,7 +16846,6 @@
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -17228,6 +17212,7 @@
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -17591,7 +17576,6 @@
"integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -17625,7 +17609,6 @@
"integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8",
@@ -17685,7 +17668,6 @@
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"license": "BSD-2-Clause",
"peer": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -17700,7 +17682,6 @@
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
"license": "BSD-2-Clause",
"peer": true,
"engines": {
"node": ">=4.0"
}

View File

@@ -8,7 +8,7 @@ export class AppInfo {
/**
* The current mobile app version. This should be updated with each release of the mobile app.
*/
public static readonly VERSION = '0.25.1';
public static readonly VERSION = '0.26.0-alpha';
/**
* The API version to send to the server (base semver without stage suffixes).

View File

@@ -0,0 +1,34 @@
//-----------------------------------------------------------------------
// <copyright file="RecentUsageAccountDeletions.cs" company="aliasvault">
// Copyright (c) aliasvault. All rights reserved.
// Licensed under the AGPLv3 license. See LICENSE.md file in the project root for full license information.
// </copyright>
//-----------------------------------------------------------------------
namespace AliasVault.Admin.Main.Models;
/// <summary>
/// Model representing usernames with most account deletions in the last 30 days.
/// </summary>
public class RecentUsageAccountDeletions
{
/// <summary>
/// Gets or sets the username.
/// </summary>
public string Username { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the number of account deletions for this username in the last 30 days.
/// </summary>
public int DeletionCount30d { get; set; }
/// <summary>
/// Gets or sets the date when the most recent account with this username was registered.
/// </summary>
public DateTime? LastRegistrationDate { get; set; }
/// <summary>
/// Gets or sets the date when the most recent account with this username was deleted.
/// </summary>
public DateTime? LastDeletionDate { get; set; }
}

View File

@@ -0,0 +1,29 @@
//-----------------------------------------------------------------------
// <copyright file="RecentUsageDeletionsByIp.cs" company="aliasvault">
// Copyright (c) aliasvault. All rights reserved.
// Licensed under the AGPLv3 license. See LICENSE.md file in the project root for full license information.
// </copyright>
//-----------------------------------------------------------------------
namespace AliasVault.Admin.Main.Models;
/// <summary>
/// Model representing IP addresses with most account deletions in the last 30 days.
/// </summary>
public class RecentUsageDeletionsByIp
{
/// <summary>
/// Gets or sets the original IP address (for linking purposes).
/// </summary>
public string OriginalIpAddress { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the anonymized IP address.
/// </summary>
public string IpAddress { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the number of account deletions from this IP in the last 30 days.
/// </summary>
public int DeletionCount30d { get; set; }
}

View File

@@ -31,4 +31,14 @@ public class RecentUsageStatistics
/// Gets or sets the list of IP addresses with most mobile login requests in the last 72 hours.
/// </summary>
public List<RecentUsageMobileLogins> TopIpsByMobileLogins72h { get; set; } = new();
/// <summary>
/// Gets or sets the list of IP addresses with most account deletions in the last 30 days.
/// </summary>
public List<RecentUsageDeletionsByIp> TopIpsByDeletions30d { get; set; } = new();
/// <summary>
/// Gets or sets the list of usernames with most account deletions in the last 30 days.
/// </summary>
public List<RecentUsageAccountDeletions> TopUsernamesByDeletions30d { get; set; } = new();
}

View File

@@ -0,0 +1,83 @@
@using AliasVault.Admin.Main.Models
@using AliasVault.RazorComponents.Tables
<div class="p-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
<div class="flex items-center justify-between mb-4">
<div>
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Top Usernames by Account Deletions (Last 30d)</h3>
<p class="text-sm text-gray-500 dark:text-gray-400">Usernames with the most account deletion events in the last 30 days</p>
</div>
</div>
@if (Data != null && Data.Any())
{
<div class="mb-3">
<Paginator CurrentPage="@CurrentPage" PageSize="@PageSize" TotalRecords="@Data.Count" OnPageChanged="@HandlePageChanged" />
</div>
<div class="overflow-x-auto">
<SortableTable Columns="@_tableColumns">
@foreach (var deletion in PagedData)
{
<SortableTableRow>
<SortableTableColumn IsPrimary="true">
<a href="logging/auth?search=@Uri.EscapeDataString(deletion.Username)" class="text-gray-900 dark:text-gray-100 hover:text-blue-600 dark:hover:text-blue-400 cursor-pointer">
@deletion.Username
</a>
</SortableTableColumn>
<SortableTableColumn>@deletion.DeletionCount30d.ToString("N0")</SortableTableColumn>
<SortableTableColumn>
@if (deletion.LastDeletionDate.HasValue)
{
<span>@deletion.LastDeletionDate.Value.ToString("yyyy-MM-dd HH:mm:ss") UTC</span>
}
else
{
<span class="text-gray-400 dark:text-gray-500">-</span>
}
</SortableTableColumn>
</SortableTableRow>
}
</SortableTable>
</div>
}
else if (Data != null)
{
<div class="text-center text-gray-500 dark:text-gray-400">
<svg class="mx-auto h-12 w-12 text-gray-300 dark:text-gray-600" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
<h3 class="mt-2 text-sm font-medium text-gray-900 dark:text-white">No Recent Account Deletions</h3>
<p class="mt-1 text-sm text-gray-500 dark:text-gray-400">No account deletions occurred in the last 30 days.</p>
</div>
}
else
{
<div class="px-6 py-8 flex justify-center">
<LoadingIndicator />
</div>
}
</div>
@code {
[Parameter]
public List<RecentUsageAccountDeletions>? Data { get; set; }
private int CurrentPage { get; set; } = 1;
private int PageSize { get; set; } = 10;
private IEnumerable<RecentUsageAccountDeletions> PagedData =>
Data?.Skip((CurrentPage - 1) * PageSize).Take(PageSize) ?? Enumerable.Empty<RecentUsageAccountDeletions>();
private readonly List<TableColumn> _tableColumns = new()
{
new() { Title = "Username", PropertyName = "Username", Sortable = false },
new() { Title = "Deletions (30d)", PropertyName = "DeletionCount30d", Sortable = false },
new() { Title = "Last Deletion", PropertyName = "LastDeletionDate", Sortable = false }
};
private void HandlePageChanged(int page)
{
CurrentPage = page;
StateHasChanged();
}
}

View File

@@ -60,7 +60,7 @@
public List<RecentUsageAliases>? Data { get; set; }
private int CurrentPage { get; set; } = 1;
private int PageSize { get; set; } = 20;
private int PageSize { get; set; } = 10;
private IEnumerable<RecentUsageAliases> PagedData =>
Data?.Skip((CurrentPage - 1) * PageSize).Take(PageSize) ?? Enumerable.Empty<RecentUsageAliases>();

View File

@@ -0,0 +1,72 @@
@using AliasVault.Admin.Main.Models
@using AliasVault.RazorComponents.Tables
<div class="p-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
<div class="flex items-center justify-between mb-4">
<div>
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Top IP Addresses by Account Deletions (Last 30d)</h3>
<p class="text-sm text-gray-500 dark:text-gray-400">IP addresses with the most account deletions in the last 30 days (last octet anonymized)</p>
</div>
</div>
@if (Data != null && Data.Any())
{
<div class="mb-3">
<Paginator CurrentPage="@CurrentPage" PageSize="@PageSize" TotalRecords="@Data.Count" OnPageChanged="@HandlePageChanged" />
</div>
<div class="overflow-x-auto">
<SortableTable Columns="@_tableColumns">
@foreach (var ip in PagedData)
{
<SortableTableRow>
<SortableTableColumn IsPrimary="true">
<a href="logging/auth?search=@Uri.EscapeDataString(ip.OriginalIpAddress)" class="font-mono text-gray-900 dark:text-gray-100 hover:text-blue-600 dark:hover:text-blue-400 cursor-pointer">
@ip.IpAddress
</a>
</SortableTableColumn>
<SortableTableColumn>@ip.DeletionCount30d.ToString("N0")</SortableTableColumn>
</SortableTableRow>
}
</SortableTable>
</div>
}
else if (Data != null)
{
<div class="text-center text-gray-500 dark:text-gray-400">
<svg class="mx-auto h-12 w-12 text-gray-300 dark:text-gray-600" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
<h3 class="mt-2 text-sm font-medium text-gray-900 dark:text-white">No Recent Account Deletions</h3>
<p class="mt-1 text-sm text-gray-500 dark:text-gray-400">No account deletions occurred in the last 30 days.</p>
</div>
}
else
{
<div class="px-6 py-8 flex justify-center">
<LoadingIndicator />
</div>
}
</div>
@code {
[Parameter]
public List<RecentUsageDeletionsByIp>? Data { get; set; }
private int CurrentPage { get; set; } = 1;
private int PageSize { get; set; } = 10;
private IEnumerable<RecentUsageDeletionsByIp> PagedData =>
Data?.Skip((CurrentPage - 1) * PageSize).Take(PageSize) ?? Enumerable.Empty<RecentUsageDeletionsByIp>();
private readonly List<TableColumn> _tableColumns = new()
{
new() { Title = "IP Range", PropertyName = "IpAddress", Sortable = false },
new() { Title = "Deletions (30d)", PropertyName = "DeletionCount30d", Sortable = false }
};
private void HandlePageChanged(int page)
{
CurrentPage = page;
StateHasChanged();
}
}

View File

@@ -61,7 +61,7 @@
public List<RecentUsageEmails>? Data { get; set; }
private int CurrentPage { get; set; } = 1;
private int PageSize { get; set; } = 20;
private int PageSize { get; set; } = 10;
private IEnumerable<RecentUsageEmails> PagedData =>
Data?.Skip((CurrentPage - 1) * PageSize).Take(PageSize) ?? Enumerable.Empty<RecentUsageEmails>();

View File

@@ -53,7 +53,7 @@
public List<RecentUsageMobileLogins>? Data { get; set; }
private int CurrentPage { get; set; } = 1;
private int PageSize { get; set; } = 20;
private int PageSize { get; set; } = 10;
private IEnumerable<RecentUsageMobileLogins> PagedData =>
Data?.Skip((CurrentPage - 1) * PageSize).Take(PageSize) ?? Enumerable.Empty<RecentUsageMobileLogins>();

View File

@@ -53,7 +53,7 @@
public List<RecentUsageRegistrations>? Data { get; set; }
private int CurrentPage { get; set; } = 1;
private int PageSize { get; set; } = 20;
private int PageSize { get; set; } = 10;
private IEnumerable<RecentUsageRegistrations> PagedData =>
Data?.Skip((CurrentPage - 1) * PageSize).Take(PageSize) ?? Enumerable.Empty<RecentUsageRegistrations>();

View File

@@ -30,6 +30,12 @@
<!-- Top IP Addresses by Mobile Login Requests ---->
<RecentUsageMobileLoginsTable Data="@_recentUsageStats?.TopIpsByMobileLogins72h" />
<!-- Top IP Addresses by Account Deletions ---->
<RecentUsageDeletionsByIpTable Data="@_recentUsageStats?.TopIpsByDeletions30d" />
<!-- Top Usernames by Account Deletions ---->
<RecentUsageAccountDeletionsTable Data="@_recentUsageStats?.TopUsernamesByDeletions30d" />
</div>
@if (_loadingError)

View File

@@ -116,6 +116,8 @@ public class StatisticsService
GetTopUsersByEmails72hAsync().ContinueWith(t => stats.TopUsersByEmails72h = t.Result),
GetTopIpsByRegistrations72hAsync().ContinueWith(t => stats.TopIpsByRegistrations72h = t.Result),
GetTopIpsByMobileLogins72hAsync().ContinueWith(t => stats.TopIpsByMobileLogins72h = t.Result),
GetTopIpsByDeletions30dAsync().ContinueWith(t => stats.TopIpsByDeletions30d = t.Result),
GetTopUsernamesByDeletions30dAsync().ContinueWith(t => stats.TopUsernamesByDeletions30d = t.Result),
};
await Task.WhenAll(tasks);
@@ -475,7 +477,7 @@ public class StatisticsService
}
/// <summary>
/// Gets the top 20 users by number of aliases created in the last 72 hours.
/// Gets the top 100 users by number of aliases created in the last 72 hours.
/// </summary>
/// <returns>List of top users by recent aliases.</returns>
private async Task<List<RecentUsageAliases>> GetTopUsersByAliases72hAsync()
@@ -495,7 +497,7 @@ public class StatisticsService
AliasCount72h = g.Count(),
})
.OrderByDescending(u => u.AliasCount72h)
.Take(20)
.Take(100)
.ToListAsync();
return topUsers.Select(u => new RecentUsageAliases
@@ -509,7 +511,7 @@ public class StatisticsService
}
/// <summary>
/// Gets the top 20 users by number of emails received in the last 72 hours.
/// Gets the top 100 users by number of emails received in the last 72 hours.
/// </summary>
/// <returns>List of top users by recent emails.</returns>
private async Task<List<RecentUsageEmails>> GetTopUsersByEmails72hAsync()
@@ -529,7 +531,7 @@ public class StatisticsService
EmailCount72h = g.Count(),
})
.OrderByDescending(u => u.EmailCount72h)
.Take(20)
.Take(100)
.ToListAsync();
return topUsers.Select(u => new RecentUsageEmails
@@ -543,7 +545,7 @@ public class StatisticsService
}
/// <summary>
/// Gets the top 20 IP addresses by number of registrations in the last 72 hours.
/// Gets the top 100 IP addresses by number of registrations in the last 72 hours.
/// </summary>
/// <returns>List of top IP addresses by recent registrations.</returns>
private async Task<List<RecentUsageRegistrations>> GetTopIpsByRegistrations72hAsync()
@@ -565,7 +567,7 @@ public class StatisticsService
RegistrationCount72h = g.Count(),
})
.OrderByDescending(ip => ip.RegistrationCount72h)
.Take(20)
.Take(100)
.ToListAsync();
return topIps.Select(ip => new RecentUsageRegistrations
@@ -577,7 +579,7 @@ public class StatisticsService
}
/// <summary>
/// Gets the top 20 IP addresses by number of mobile login requests in the last 72 hours.
/// Gets the top 100 IP addresses by number of mobile login requests in the last 72 hours.
/// </summary>
/// <returns>List of top IP addresses by mobile login requests.</returns>
private async Task<List<RecentUsageMobileLogins>> GetTopIpsByMobileLogins72hAsync()
@@ -597,7 +599,7 @@ public class StatisticsService
MobileLoginCount72h = g.Count(),
})
.OrderByDescending(ip => ip.MobileLoginCount72h)
.Take(20)
.Take(100)
.ToListAsync();
return topIps.Select(ip => new RecentUsageMobileLogins
@@ -607,4 +609,72 @@ public class StatisticsService
MobileLoginCount72h = ip.MobileLoginCount72h,
}).ToList();
}
/// <summary>
/// Gets the top 100 IP addresses by number of account deletions in the last 30 days.
/// </summary>
/// <returns>List of top IP addresses by recent account deletions.</returns>
private async Task<List<RecentUsageDeletionsByIp>> GetTopIpsByDeletions30dAsync()
{
await using var context = await _contextFactory.CreateDbContextAsync();
var cutoffDate = DateTime.UtcNow.AddDays(-30);
// Get account deletions by IP from auth logs (using AccountDeletion event type)
var topIps = await context.AuthLogs
.Where(al => al.Timestamp >= cutoffDate &&
al.IpAddress != null &&
al.IpAddress != "xxx.xxx.xxx.xxx" &&
al.IsSuccess &&
al.EventType == AuthEventType.AccountDeletion)
.GroupBy(al => al.IpAddress)
.Select(g => new
{
IpAddress = g.Key,
DeletionCount30d = g.Count(),
})
.OrderByDescending(ip => ip.DeletionCount30d)
.Take(100)
.ToListAsync();
return topIps.Select(ip => new RecentUsageDeletionsByIp
{
OriginalIpAddress = ip.IpAddress!,
IpAddress = AnonymizeIpAddress(ip.IpAddress!),
DeletionCount30d = ip.DeletionCount30d,
}).ToList();
}
/// <summary>
/// Gets the top 100 usernames by number of account deletions in the last 30 days.
/// </summary>
/// <returns>List of top usernames by recent account deletions.</returns>
private async Task<List<RecentUsageAccountDeletions>> GetTopUsernamesByDeletions30dAsync()
{
await using var context = await _contextFactory.CreateDbContextAsync();
var cutoffDate = DateTime.UtcNow.AddDays(-30);
// Get account deletions by username from auth logs (using AccountDeletion event type)
var topUsernames = await context.AuthLogs
.Where(al => al.Timestamp >= cutoffDate &&
al.Username != null &&
al.IsSuccess &&
al.EventType == AuthEventType.AccountDeletion)
.GroupBy(al => al.Username)
.Select(g => new
{
Username = g.Key,
DeletionCount30d = g.Count(),
LastDeletionDate = g.Max(al => al.Timestamp),
})
.OrderByDescending(u => u.DeletionCount30d)
.Take(100)
.ToListAsync();
return topUsernames.Select(u => new RecentUsageAccountDeletions
{
Username = u.Username!,
DeletionCount30d = u.DeletionCount30d,
LastDeletionDate = u.LastDeletionDate,
}).ToList();
}
}

View File

@@ -117,75 +117,75 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="REFRESH_TOKEN_REQUIRED" xml:space="preserve">
<value>Refresh token is required.</value>
<value>Se requiere actualizar el token.</value>
</data>
<data name="ACCOUNT_BLOCKED" xml:space="preserve">
<value>Your account has been disabled. If you believe this is a mistake, please contact support.</value>
<value>Tu cuenta ha sido desactivada. Si crees que esto es un error, ponte en contacto con soporte.</value>
</data>
<data name="INVALID_REFRESH_TOKEN" xml:space="preserve">
<value>Invalid refresh token</value>
<value>Token de actualización inválido</value>
</data>
<data name="PUBLIC_REGISTRATION_DISABLED" xml:space="preserve">
<value>New account registration is currently disabled on this server. Please contact the administrator.</value>
<value>El registro de nueva cuenta está actualmente deshabilitado en este servidor. Por favor, contacte con el administrador.</value>
</data>
<data name="USER_NOT_FOUND" xml:space="preserve">
<value>Invalid username or password. Please try again.</value>
<value>Nombre de usuario o contraseña no válidos. Por favor, inténtelo de nuevo.</value>
</data>
<data name="USERNAME_REQUIRED" xml:space="preserve">
<value>Username is required.</value>
<value>Se requiere un nombre de usuario.</value>
</data>
<data name="USERNAME_ALREADY_IN_USE" xml:space="preserve">
<value>Username is already in use.</value>
<value>El nombre de usuario ya está en uso.</value>
</data>
<data name="USERNAME_AVAILABLE" xml:space="preserve">
<value>Username is available.</value>
<value>El nombre de usuario está disponible.</value>
</data>
<data name="USERNAME_MISMATCH" xml:space="preserve">
<value>Username does not match the current user.</value>
<value>El nombre de usuario no coincide con el usuario actual.</value>
</data>
<data name="PASSWORD_MISMATCH" xml:space="preserve">
<value>The provided password does not match your current password.</value>
<value>La contraseña proporcionada no coincide con su contraseña actual.</value>
</data>
<data name="ACCOUNT_SUCCESSFULLY_DELETED" xml:space="preserve">
<value>Account successfully deleted.</value>
<value>Cuenta eliminada con éxito.</value>
</data>
<data name="USERNAME_EMPTY_OR_WHITESPACE" xml:space="preserve">
<value>Username cannot be empty or whitespace.</value>
<value>El nombre de usuario no puede estar vacío o en blanco.</value>
</data>
<data name="USERNAME_TOO_SHORT" xml:space="preserve">
<value>Username too short: must be at least 3 characters long.</value>
<value>Nombre de usuario demasiado corto: debe tener al menos 3 caracteres.</value>
</data>
<data name="USERNAME_TOO_LONG" xml:space="preserve">
<value>Username too long: cannot be longer than 40 characters.</value>
<value>Nombre de usuario demasiado largo: no puede tener más de 40 caracteres.</value>
</data>
<data name="USERNAME_INVALID_EMAIL" xml:space="preserve">
<value>Invalid email address.</value>
<value>Dirección de correo electrónico inválida.</value>
</data>
<data name="USERNAME_INVALID_CHARACTERS" xml:space="preserve">
<value>Username is invalid, can only contain letters or digits.</value>
<value>El nombre de usuario inválido, solo puede contener letras o dígitos.</value>
</data>
<data name="PENDING_MIGRATIONS" xml:space="preserve">
<value>There are pending migrations. Please run 'dotnet ef database update' to apply them.</value>
<value>Hay migraciones pendientes. Ejecute 'dotnet ef database update' para aplicarlas.</value>
</data>
<data name="INTERNAL_SERVER_ERROR" xml:space="preserve">
<value>Internal server error</value>
<value>Error interno del servidor</value>
</data>
<data name="VAULT_ERROR" xml:space="preserve">
<value>The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again.</value>
<value>La bóveda local no está actualizada. Por favor, sincronice su bóveda actualizando la página e inténtelo de nuevo.</value>
</data>
<data name="UNKNOWN_ERROR" xml:space="preserve">
<value>An unknown error occurred. Please try again.</value>
<value>Se ha producido un error desconocido. Por favor, inténtelo de nuevo.</value>
</data>
<data name="INVALID_AUTHENTICATOR_CODE" xml:space="preserve">
<value>Invalid authenticator code. Please try again.</value>
<value>Código de autenticación inválido. Por favor, inténtelo de nuevo.</value>
</data>
<data name="INVALID_RECOVERY_CODE" xml:space="preserve">
<value>Invalid recovery code. Please try again.</value>
<value>Código de recuperación inválido. Por favor, inténtelo de nuevo.</value>
</data>
<data name="VAULT_NOT_UP_TO_DATE" xml:space="preserve">
<value>Your vault is not up-to-date. Please synchronize your vault and try again.</value>
<value>Su bóveda no está actualizada. Por favor, sincronice su bóveda e inténtelo de nuevo.</value>
</data>
<data name="ACCOUNT_LOCKED" xml:space="preserve">
<value>You have entered an incorrect password too many times and your account has now been locked out. You can try again in 30 minutes.</value>
<value>Ha introducido una contraseña incorrecta demasiadas veces y su cuenta ha sido bloqueada. Puede intentarlo de nuevo en 30 minutos.</value>
</data>
</root>

View File

@@ -60,114 +60,114 @@
</resheader>
<!-- Page titles -->
<data name="PageTitle" xml:space="preserve">
<value>Log in to AliasVault</value>
<value>Iniciar sesión en AliasVault</value>
<comment>Main login page title</comment>
</data>
<data name="TwoFactorAuthenticationTitle" xml:space="preserve">
<value>Two-factor authentication</value>
<value>Autenticación de doble factor</value>
<comment>Title for 2FA step</comment>
</data>
<data name="RecoveryCodeVerificationTitle" xml:space="preserve">
<value>Recovery code verification</value>
<value>Verificación de código de recuperación</value>
<comment>Title for recovery code step</comment>
</data>
<!-- Form labels -->
<data name="UsernameOrEmailLabel" xml:space="preserve">
<value>Your username or email</value>
<value>Tu nombre de usuario o email</value>
<comment>Label for username/email input field</comment>
</data>
<data name="PasswordLabel" xml:space="preserve">
<value>Your password</value>
<value>Tu contraseña</value>
<comment>Label for password input field</comment>
</data>
<data name="AuthenticatorCodeLabel" xml:space="preserve">
<value>Authenticator code</value>
<value>Código de autentificación</value>
<comment>Label for 2FA code input field</comment>
</data>
<data name="RecoveryCodeLabel" xml:space="preserve">
<value>Recovery Code</value>
<value>Código de recuperación</value>
<comment>Label for recovery code input field</comment>
</data>
<data name="RememberMeLabel" xml:space="preserve">
<value>Remember me</value>
<value>Recordar mis datos</value>
<comment>Label for remember me checkbox</comment>
</data>
<data name="RememberMachineLabel" xml:space="preserve">
<value>Remember this machine</value>
<value>Recordar este equipo</value>
<comment>Label for remember machine checkbox</comment>
</data>
<!-- Buttons -->
<data name="LoginButton" xml:space="preserve">
<value>Log in</value>
<value>Iniciar sesión</value>
<comment>Login button text</comment>
</data>
<!-- Links -->
<data name="LostPasswordLink" xml:space="preserve">
<value>Lost Password?</value>
<value>¿Perdiste contraseña?</value>
<comment>Link text for password recovery</comment>
</data>
<data name="CreateNewVaultLink" xml:space="preserve">
<value>Create new vault</value>
<value>Crear nueva bóveda</value>
<comment>Link text for creating a new vault</comment>
</data>
<data name="LoginWithRecoveryCodeLink" xml:space="preserve">
<value>Log in with a recovery code instead.</value>
<value>Iniciar sesión con un código de recuperación en su lugar.</value>
<comment>Link text for logging in with recovery code</comment>
</data>
<data name="LoginWithAuthenticatorLink" xml:space="preserve">
<value>Log in with an authenticator code instead.</value>
<value>Iniciar sesión con un código de autenticación en su lugar.</value>
<comment>Link text for logging in with authenticator</comment>
</data>
<data name="MobileDeviceLink" xml:space="preserve">
<value>Log in using Mobile App</value>
<value>Iniciar sesión con la aplicación móvil</value>
<comment>Link text for mobile device login</comment>
</data>
<!-- Descriptions and help text -->
<data name="TwoFactorAuthenticationDescription" xml:space="preserve">
<value>Your login is protected with an authenticator app. Enter your authenticator code below.</value>
<value>Su inicio de sesión está protegido con una aplicación de autenticación. Introduzca su código de autenticación abajo.</value>
<comment>Description for 2FA step</comment>
</data>
<data name="RecoveryCodeDescription" xml:space="preserve">
<value>You have requested to log in with a recovery code. A recovery code is a one-time code that can be used to log in to your account. Note that if you don't manually disable 2FA after login, you will be asked for an authenticator code again at the next login.</value>
<value>Ha solicitado iniciar sesión con un código de recuperación. Un código de recuperación es un código de una sola vez que se puede utilizar para iniciar sesión en su cuenta. Tenga en cuenta que si no desactiva manualmente 2FA después de iniciar sesión, se le pedirá un código de autenticación de nuevo en el próximo inicio de sesión.</value>
<comment>Description for recovery code step</comment>
</data>
<data name="NoAccountYetText" xml:space="preserve">
<value>No account yet?</value>
<value>¿Sin cuenta todavía?</value>
<comment>Text before registration link</comment>
</data>
<data name="DontHaveAuthenticatorText" xml:space="preserve">
<value>Don't have access to your authenticator device?</value>
<value>¿No tienes acceso a tu dispositivo de autenticación?</value>
<comment>Question text about not having access to authenticator</comment>
</data>
<data name="RegainedAccessText" xml:space="preserve">
<value>Regained access to your authenticator device?</value>
<value>¿Acceso recuperado al dispositivo de autenticación?</value>
<comment>Question text about regaining access to authenticator</comment>
</data>
<!-- Loading and status messages -->
<data name="LoggingInMessage" xml:space="preserve">
<value>Logging in...</value>
<value>Iniciando sesión...</value>
<comment>Loading message during login process</comment>
</data>
<data name="VerifyingTwoFactorCodeMessage" xml:space="preserve">
<value>Verifying 2FA code...</value>
<value>Verificando código 2FA...</value>
<comment>Loading message during 2FA verification</comment>
</data>
<data name="VerifyingRecoveryCodeMessage" xml:space="preserve">
<value>Verifying recovery code...</value>
<value>Verificando código de recuperación...</value>
<comment>Loading message during recovery code verification</comment>
</data>
<!-- Error messages -->
<data name="LoginErrorMessage" xml:space="preserve">
<value>An error occurred while processing the login request. Try again (later).</value>
<value>Se ha producido un error al procesar la solicitud de acceso. Inténtalo de nuevo (más tarde).</value>
<comment>Generic login error message</comment>
</data>
<data name="LoginRequestErrorMessage" xml:space="preserve">
<value>An error occurred while processing the login request.</value>
<value>Se ha producido un error al procesar la solicitud de acceso.</value>
<comment>Login request processing error message</comment>
</data>
<!-- Placeholders -->
<data name="UsernamePlaceholder" xml:space="preserve">
<value>name / name@company.com</value>
<value>nombre / nombre@empresa.com</value>
<comment>Placeholder text for username input</comment>
</data>
<data name="PasswordPlaceholder" xml:space="preserve">

View File

@@ -60,57 +60,57 @@
</resheader>
<!-- Page title -->
<data name="PageTitle" xml:space="preserve">
<value>Create a new AliasVault account</value>
<value>Crear una nueva cuenta de AliasVault</value>
<comment>Main registration page title</comment>
</data>
<!-- Form labels -->
<data name="UsernameOrEmailLabel" xml:space="preserve">
<value>Your username or email</value>
<value>Tu nombre de usuario o email</value>
<comment>Label for username/email input field</comment>
</data>
<data name="PasswordLabel" xml:space="preserve">
<value>Your password</value>
<value>Tu contraseña</value>
<comment>Label for password input field</comment>
</data>
<data name="ConfirmPasswordLabel" xml:space="preserve">
<value>Confirm password</value>
<value>Confirmar contraseña</value>
<comment>Label for password confirmation input field</comment>
</data>
<!-- Terms and conditions -->
<data name="AcceptTermsLabel" xml:space="preserve">
<value>I accept the</value>
<value>Acepto los</value>
<comment>Text before terms and conditions link</comment>
</data>
<data name="TermsAndConditionsLink" xml:space="preserve">
<value>Terms and Conditions</value>
<value>Términos y Condiciones</value>
<comment>Link text for terms and conditions</comment>
</data>
<!-- Buttons -->
<data name="CreateAccountButton" xml:space="preserve">
<value>Create account</value>
<value>Crear cuenta</value>
<comment>Create account button text</comment>
</data>
<!-- Links -->
<data name="AlreadyRegisteredText" xml:space="preserve">
<value>Already registered?</value>
<value>¿Ya estás registrado?</value>
<comment>Text before login link</comment>
</data>
<data name="LoginHereLink" xml:space="preserve">
<value>Login here</value>
<value>Iniciar sesión aquí</value>
<comment>Link text for login page</comment>
</data>
<!-- Loading and status messages -->
<data name="CreatingAccountMessage" xml:space="preserve">
<value>Creating account...</value>
<value>Creando cuenta...</value>
<comment>Loading message during account creation</comment>
</data>
<data name="RegistrationErrorMessage" xml:space="preserve">
<value>An error occurred during registration.</value>
<value>Se ha producido un error durante el registro.</value>
<comment>Generic registration error message</comment>
</data>
<!-- Placeholders -->
<data name="UsernamePlaceholder" xml:space="preserve">
<value>name / name@company.com</value>
<value>nombre / nombre@empresa.com</value>
<comment>Placeholder text for username input</comment>
</data>
<data name="PasswordPlaceholder" xml:space="preserve">

View File

@@ -20,59 +20,59 @@
</xsd:element>
</xsd:schema>
<data name="WelcomeMessage">
<value>Great! Now, let's set up your master password for AliasVault.</value>
<value>¡Genial! Ahora, vamos a configurar su contraseña maestra para AliasVault.</value>
<comment>Assistant welcome message for password setup step</comment>
</data>
<data name="ImportantNote">
<value>Important: This master password will be used to encrypt your vault. It should be a long, complex string that you can remember. If you forget this password, your data will be permanently inaccessible.</value>
<value>Importante: Esta contraseña maestra se utilizará para cifrar tu bóveda. Debería ser una cadena larga y compleja que puedas recordar. Si olvida esta contraseña, sus datos serán inaccesibles permanentemente.</value>
<comment>Important warning about master password</comment>
</data>
<data name="SecurityPoint1">
<value>Your master password never leaves your device</value>
<value>Tu contraseña maestra nunca sale de tu dispositivo</value>
<comment>First security point about password privacy</comment>
</data>
<data name="SecurityPoint2">
<value>The server has no access to your unencrypted data</value>
<value>El servidor no tiene acceso a tus datos no cifrados</value>
<comment>Second security point about server access</comment>
</data>
<data name="SecurityPoint3">
<value>Even the server admin cannot restore your access if you forget this password</value>
<value>Incluso el administrador del servidor no puede restaurar su acceso si olvida esta contraseña</value>
<comment>Third security point about password recovery</comment>
</data>
<data name="MasterPasswordLabel">
<value>Master Password</value>
<value>Contraseña Maestra</value>
<comment>Label for master password field</comment>
</data>
<data name="MasterPasswordPlaceholder">
<value>Enter your master password</value>
<value>Ingrese su contraseña maestra</value>
<comment>Placeholder for master password field</comment>
</data>
<data name="ConfirmMasterPasswordLabel">
<value>Confirm Master Password</value>
<value>Confirma tu Contraseña Maestra</value>
<comment>Label for confirm password field</comment>
</data>
<data name="ConfirmMasterPasswordPlaceholder">
<value>Confirm your master password</value>
<value>Confirma tu contraseña maestra</value>
<comment>Placeholder for confirm password field</comment>
</data>
<data name="ValidatingPasswordMessage">
<value>Validating password...</value>
<value>Validando contraseña...</value>
<comment>Message shown while validating password</comment>
</data>
<data name="PasswordValidAndStrongMessage">
<value>Password is valid and strong!</value>
<value>¡Contraseña válida y fuerte!</value>
<comment>Success message for valid password</comment>
</data>
<data name="PasswordTooShortError">
<value>Master password must be at least 10 characters long.</value>
<value>La contraseña maestra debe tener al menos 10 caracteres.</value>
<comment>Error message for password too short</comment>
</data>
<data name="ConfirmPasswordPrompt">
<value>Confirm your password by entering it again.</value>
<value>Confirme su contraseña introduciéndola de nuevo.</value>
<comment>Prompt to confirm password</comment>
</data>
<data name="PasswordsMismatchError">
<value>Passwords do not match.</value>
<value>Las contraseñas no coinciden.</value>
<comment>Error message when passwords don't match</comment>
</data>
</root>

View File

@@ -21,32 +21,32 @@
</xsd:schema>
<!-- Instructions -->
<data name="PleaseReadAndAgree">
<value>Please read and agree to the following terms and conditions before proceeding.</value>
<value>Por favor, lea y acepte los siguientes términos y condiciones antes de continuar.</value>
<comment>Instructions to read and agree to terms</comment>
</data>
<!-- Terms and Conditions title -->
<data name="TermsAndConditionsTitle">
<value>Terms and Conditions</value>
<value>Términos y Condiciones</value>
<comment>Title for the terms and conditions section</comment>
</data>
<!-- Terms content -->
<data name="TermsContent">
<value>AliasVault is designed to enhance your online security and protect your privacy. With AliasVault, you can create unique identities and email aliases for your various online accounts, helping you maintain control over your personal information and reduce the risk of identity theft.
<value>AliasVault está diseñado para mejorar su seguridad en línea y proteger su privacidad. Con AliasVault, puede crear identidades únicas y alias de correo electrónico para sus diversas cuentas en línea, lo que le ayuda a mantener el control sobre su información personal y reducir el riesgo de robo de identidad.
By using AliasVault, you agree to the following terms:
Al utilizar AliasVault, usted acepta los siguientes términos:
1. You will not use AliasVault for any illegal purposes, including but not limited to fraud, identity theft, or impersonating real individuals.
1. No utilizará AliasVault para ningún fin ilegal, incluyendo, entre otros, el fraude, el robo de identidad o la suplantación de personas reales.
2. You are responsible for maintaining the confidentiality of your account and any aliases created through AliasVault.
2. Usted es responsable de mantener la confidencialidad de su cuenta y de cualquier alias creado a través de AliasVault.
3. AliasVault reserves the right to terminate your account if we suspect any misuse or violation of these terms.
3. AliasVault se reserva el derecho de cancelar su cuenta si sospechamos de cualquier uso indebido o violación de estos términos.
4. You understand that while AliasVault enhances your privacy, no system is completely foolproof, and you use the service at your own risk.</value>
4. Usted entiende que, aunque AliasVault mejora su privacidad, ningún sistema es completamente infalible y utiliza el servicio bajo su propia responsabilidad.</value>
<comment>Full terms and conditions content</comment>
</data>
<!-- Agreement checkbox -->
<data name="AgreementCheckboxLabel">
<value>I have read and agree to the Terms and Conditions</value>
<value>He leído y acepto los Términos y Condiciones</value>
<comment>Label for the agreement checkbox</comment>
</data>
</root>

View File

@@ -21,46 +21,46 @@
</xsd:schema>
<!-- Assistant messages -->
<data name="GreatNowLetsSetupUsername">
<value>Great! Now, let's set up your username for AliasVault.</value>
<value>¡Genial! Ahora, vamos a configurar tu nombre de usuario para AliasVault.</value>
<comment>Assistant message about setting up username</comment>
</data>
<data name="EnterUsernameInstructions">
<value>Please enter a username you'd like to use. This can be your email address or any unique name you prefer.</value>
<value>Por favor, introduce un nombre de usuario que te gustaría usar. Esta puede ser tu dirección email o cualquier nombre único que prefieras.</value>
<comment>Instructions for entering username</comment>
</data>
<data name="RememberUsernameNote">
<value>Remember: This is what you'll use to log in later, so make sure it's something you'll remember!</value>
<value>Recuerde: ¡Esto es lo que usarás para iniciar sesión más tarde, así que asegúrate de que es algo que recordarás!</value>
<comment>Important note about remembering username</comment>
</data>
<!-- Form labels -->
<data name="UsernameLabel">
<value>Username</value>
<value>Usuario</value>
<comment>Label for username input field</comment>
</data>
<data name="UsernamePlaceholder">
<value>Enter your desired username or email</value>
<value>Introduce tu nombre de usuario o email</value>
<comment>Placeholder text for username input</comment>
</data>
<!-- Validation messages -->
<data name="ValidatingUsernameMessage">
<value>Validating username...</value>
<value>Validando nombre de usuario...</value>
<comment>Message shown while validating username</comment>
</data>
<data name="UsernameAvailableMessage">
<value>Username is available!</value>
<value>¡El nombre de usuario está disponible!</value>
<comment>Message shown when username is available</comment>
</data>
<data name="UsernameRequiredError">
<value>Username is required.</value>
<value>Se requiere un nombre de usuario.</value>
<comment>Error message when username is empty</comment>
</data>
<data name="ServerCommunicationError">
<value>An error occurred during communication with the AliasVault server.</value>
<value>Se ha producido un error durante la comunicación con el servidor AliasVault.</value>
<comment>Error message for server communication issues</comment>
</data>
<!-- Alt text -->
<data name="AssistantAvatarAlt">
<value>AliasVault Assistant</value>
<value>Asistente de AliasVault</value>
<comment>Alt text for assistant avatar image</comment>
</data>
</root>

View File

@@ -59,7 +59,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ClearClipboardButton" xml:space="preserve">
<value>Clear Clipboard</value>
<value>Limpiar portapapeles</value>
<comment>Button text to manually clear clipboard immediately</comment>
</data>
</root>

View File

@@ -59,55 +59,55 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="TwoFactorAuthenticationTitle" xml:space="preserve">
<value>Two-factor authentication</value>
<value>Autenticación de doble factor</value>
<comment>Section title for 2FA codes</comment>
</data>
<data name="AddTotpCodeButton" xml:space="preserve">
<value>Add TOTP Code</value>
<value>Añadir código TOTP</value>
<comment>Button text to add new TOTP code</comment>
</data>
<data name="AddTotpCodeDescription" xml:space="preserve">
<value>Add a two-factor authenticator code</value>
<value>Añadir un código de autenticación de doble factor</value>
<comment>Description for adding TOTP codes</comment>
</data>
<data name="AddTotpCodeModalTitle" xml:space="preserve">
<value>Add 2FA TOTP Code</value>
<value>Añadir código TOTP 2FA</value>
<comment>Modal title for adding TOTP code</comment>
</data>
<data name="CloseFormButton" xml:space="preserve">
<value>Close form</value>
<value>Cerrar formulario</value>
<comment>Button to close the add TOTP form</comment>
</data>
<data name="TotpInstructions" xml:space="preserve">
<value>If the website offers or requires 2FA for your account, copy the secret key or QR code URI and paste it below.</value>
<value>Si el sitio web ofrece o requiere 2FA para su cuenta, copie la clave secreta o el código QR URI y péguelo a continuación.</value>
<comment>Instructions for adding TOTP codes</comment>
</data>
<data name="NameOptionalLabel" xml:space="preserve">
<value>Name (optional)</value>
<value>Nombre (Opcional)</value>
<comment>Label for optional name field</comment>
</data>
<data name="SecretKeyLabel" xml:space="preserve">
<value>Secret Key</value>
<value>Clave secreta</value>
<comment>Label for secret key field</comment>
</data>
<data name="SecretKeyPlaceholder" xml:space="preserve">
<value>Enter secret key (manual entry)</value>
<value>Introducir clave secreta (entrada manual)</value>
<comment>Placeholder text for secret key input</comment>
</data>
<data name="SaveButton" xml:space="preserve">
<value>Save</value>
<value>Guardar</value>
<comment>Save button text</comment>
</data>
<data name="SaveToViewCodeMessage" xml:space="preserve">
<value>Save to view code</value>
<value>Guardar para ver el código</value>
<comment>Message shown for unsaved TOTP codes</comment>
</data>
<data name="DeleteTotpCodeConfirmation" xml:space="preserve">
<value>Are you sure you want to delete this TOTP code?</value>
<value>¿Está seguro que desea eliminar este código TOTP?</value>
<comment>Confirmation message for deleting TOTP code</comment>
</data>
<data name="DeleteTotpCodeTitle" xml:space="preserve">
<value>Delete TOTP code</value>
<value>Eliminar código TOTP</value>
<comment>Title for delete TOTP code action</comment>
</data>
</root>

View File

@@ -59,15 +59,15 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="TwoFactorAuthenticationTitle" xml:space="preserve">
<value>Two-factor authentication</value>
<value>Autenticación de doble factor</value>
<comment>Section title for 2FA codes</comment>
</data>
<data name="NoTotpCodesMessage" xml:space="preserve">
<value>No two-factor authenticator codes available</value>
<value>No hay códigos de autenticación de doble factor disponibles</value>
<comment>Message shown when no TOTP codes are configured</comment>
</data>
<data name="CopiedMessage" xml:space="preserve">
<value>Copied!</value>
<value>¡Copiado!</value>
<comment>Feedback message when TOTP code is copied to clipboard</comment>
</data>
</root>

View File

@@ -59,63 +59,63 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="FromLabel" xml:space="preserve">
<value>From:</value>
<value>De:</value>
<comment>Email sender field label</comment>
</data>
<data name="ToLabel" xml:space="preserve">
<value>To:</value>
<value>Para:</value>
<comment>Email recipient field label</comment>
</data>
<data name="DateLabel" xml:space="preserve">
<value>Date:</value>
<value>Fecha:</value>
<comment>Email date field label</comment>
</data>
<data name="ActionsLabel" xml:space="preserve">
<value>Actions:</value>
<value>Acciones:</value>
<comment>Email actions section label</comment>
</data>
<data name="DeleteButton" xml:space="preserve">
<value>Delete</value>
<value>Eliminar</value>
<comment>Delete email button text</comment>
</data>
<data name="AttachmentsLabel" xml:space="preserve">
<value>Attachments:</value>
<value>Archivos adjuntos:</value>
<comment>Email attachments section header</comment>
</data>
<data name="CloseButton" xml:space="preserve">
<value>Close</value>
<value>Cerrar</value>
<comment>Close modal button text</comment>
</data>
<data name="DeleteEmailTitle" xml:space="preserve">
<value>Delete Email</value>
<value>Eliminar Email</value>
<comment>Delete email confirmation dialog title</comment>
</data>
<data name="DeleteEmailConfirmation" xml:space="preserve">
<value>Are you sure you want to delete this email? This action cannot be undone.</value>
<value>¿Está seguro que desea eliminar este correo electrónico? Esta acción no se puede deshacer.</value>
<comment>Delete email confirmation message</comment>
</data>
<data name="EmailDeletedSuccess" xml:space="preserve">
<value>Email deleted successfully</value>
<value>Correo eliminado exitosamente</value>
<comment>Success message when email is deleted</comment>
</data>
<data name="EmailDeleteFailed" xml:space="preserve">
<value>Failed to delete email</value>
<value>Error al eliminar el correo</value>
<comment>Error message when email deletion fails</comment>
</data>
<data name="GenericError" xml:space="preserve">
<value>An error occurred</value>
<value>Ha ocurrido un error</value>
<comment>Generic error message</comment>
</data>
<data name="NoEmailBody" xml:space="preserve">
<value>[This email has no body.]</value>
<value>[Este email no tiene cuerpo.]</value>
<comment>Message shown when email has no content</comment>
</data>
<data name="AttachmentDownloadFailed" xml:space="preserve">
<value>Failed to download attachment</value>
<value>Error al descargar el archivo adjunto</value>
<comment>Error message when attachment download fails</comment>
</data>
<data name="AttachmentDownloadError" xml:space="preserve">
<value>Error downloading attachment</value>
<value>Error al descargar el archivo adjunto</value>
<comment>Error message for attachment download error</comment>
</data>
</root>

View File

@@ -59,63 +59,63 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="FromLabel" xml:space="preserve">
<value>From:</value>
<value>De:</value>
<comment>Email sender field label</comment>
</data>
<data name="ToLabel" xml:space="preserve">
<value>To:</value>
<value>Para:</value>
<comment>Email recipient field label</comment>
</data>
<data name="DateLabel" xml:space="preserve">
<value>Date:</value>
<value>Fecha:</value>
<comment>Email date field label</comment>
</data>
<data name="CredentialLabel" xml:space="preserve">
<value>Credential:</value>
<value>Credencial:</value>
<comment>Email credential field label</comment>
</data>
<data name="NoneValue" xml:space="preserve">
<value>None</value>
<value>Nada</value>
<comment>No credential assigned value</comment>
</data>
<data name="AttachmentsLabel" xml:space="preserve">
<value>Attachments:</value>
<value>Archivos adjuntos:</value>
<comment>Email attachments section header</comment>
</data>
<data name="SelectEmailMessage" xml:space="preserve">
<value>Select an email to view its contents</value>
<value>Seleccione un email para ver su contenido</value>
<comment>Empty state message when no email is selected</comment>
</data>
<data name="DeleteEmailTitle" xml:space="preserve">
<value>Delete Email</value>
<value>Eliminar Email</value>
<comment>Delete email confirmation dialog title</comment>
</data>
<data name="DeleteEmailConfirmation" xml:space="preserve">
<value>Are you sure you want to delete this email? This action cannot be undone.</value>
<value>¿Está seguro que desea eliminar este correo? Esta acción no se puede deshacer.</value>
<comment>Delete email confirmation message</comment>
</data>
<data name="EmailDeletedSuccess" xml:space="preserve">
<value>Email deleted successfully</value>
<value>Correo eliminado correctamente</value>
<comment>Success message when email is deleted</comment>
</data>
<data name="EmailDeleteFailed" xml:space="preserve">
<value>Failed to delete email</value>
<value>Error al eliminar el correo</value>
<comment>Error message when email deletion fails</comment>
</data>
<data name="GenericError" xml:space="preserve">
<value>An error occurred</value>
<value>Ha ocurrido un error</value>
<comment>Generic error message</comment>
</data>
<data name="NoEmailBody" xml:space="preserve">
<value>[This email has no body.]</value>
<value>[Este email no tiene cuerpo.]</value>
<comment>Message shown when email has no content</comment>
</data>
<data name="AttachmentDownloadFailed" xml:space="preserve">
<value>Failed to download attachment</value>
<value>Error al descargar el archivo adjunto</value>
<comment>Error message when attachment download fails</comment>
</data>
<data name="AttachmentDownloadError" xml:space="preserve">
<value>Error downloading attachment</value>
<value>Error descargando archivo adjunto</value>
<comment>Error message for attachment download error</comment>
</data>
</root>

View File

@@ -59,7 +59,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="NewEmailTooltip" xml:space="preserve">
<value>New email</value>
<value>Nuevo correo</value>
<comment>Tooltip text for new email indicator</comment>
</data>
</root>

View File

@@ -59,35 +59,35 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="EmailSectionTitle" xml:space="preserve">
<value>Email</value>
<value>Correo</value>
<comment>Section title for email panel</comment>
</data>
<data name="AutoRefreshEnabledTooltip" xml:space="preserve">
<value>Auto-refresh enabled</value>
<value>Auto-refrescar activado</value>
<comment>Tooltip for auto-refresh indicator</comment>
</data>
<data name="SubjectColumn" xml:space="preserve">
<value>Subject</value>
<value>Asunto</value>
<comment>Table column header for email subject</comment>
</data>
<data name="DateColumn" xml:space="preserve">
<value>Date</value>
<value>Fecha</value>
<comment>Table column header for email date</comment>
</data>
<data name="NoEmailsReceivedMessage" xml:space="preserve">
<value>No emails received (yet).</value>
<value>No se han recibido correos (aún).</value>
<comment>Message when no emails are available</comment>
</data>
<data name="EmailAddressInUseError" xml:space="preserve">
<value>The current chosen email address is already in use. Please change the email address by editing this credential.</value>
<value>La dirección de correo electrónico elegida actualmente ya está en uso. Por favor, cambie la dirección de correo electrónico editando esta credencial.</value>
<comment>Error message when email address is already in use</comment>
</data>
<data name="EmailLoadError" xml:space="preserve">
<value>An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again.</value>
<value>Ocurrió un error mientras se trataba de cargar los correos electrónicos. Por favor, intente editar y guardar la entrada de credenciales para sincronizar la base de datos, y vuelva a intentarlo.</value>
<comment>Error message when email loading fails</comment>
</data>
<data name="LoadMoreButton" xml:space="preserve">
<value>Load more</value>
<value>Cargar más</value>
<comment>Button text to load more emails</comment>
</data>
</root>

View File

@@ -59,31 +59,31 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="UseDomainChooserButton" xml:space="preserve">
<value>Use domain chooser</value>
<value>Usar selector de dominio</value>
<comment>Button to switch back to domain chooser</comment>
</data>
<data name="EnterCustomDomainButton" xml:space="preserve">
<value>Enter custom domain</value>
<value>Introduzca dominio personalizado</value>
<comment>Button to switch to custom domain entry</comment>
</data>
<data name="SelectEmailDomainTitle" xml:space="preserve">
<value>Select Email Domain</value>
<value>Seleccionar dominio de correo</value>
<comment>Title of domain selection popup</comment>
</data>
<data name="PrivateEmailTitle" xml:space="preserve">
<value>Private Email (AliasVault server)</value>
<value>Correo privado (servidor AliasVault)</value>
<comment>Title for private email domains section</comment>
</data>
<data name="PrivateEmailDescription" xml:space="preserve">
<value>E2E encrypted, fully private.</value>
<value>E2E cifrado, totalmente privado.</value>
<comment>Description of private email domains</comment>
</data>
<data name="PublicEmailTitle" xml:space="preserve">
<value>Public Temp Email Providers</value>
<value>Proveedores de Correo Temporal Públicos</value>
<comment>Title for public email domains section</comment>
</data>
<data name="PublicEmailDescription" xml:space="preserve">
<value>Anonymous but limited privacy. Email content is readable by anyone that knows the address.</value>
<value>Privacidad anónima pero limitada. Contenido de correo electrónico puede ser leído por cualquiera que conozca la dirección.</value>
<comment>Description of public email domains</comment>
</data>
</root>

View File

@@ -59,83 +59,83 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PageTitle" xml:space="preserve">
<value>Reset Vault</value>
<value>Restablecer bóveda</value>
<comment>Page title</comment>
</data>
<data name="BreadcrumbImportExport" xml:space="preserve">
<value>Import / Export</value>
<value>Importar / Exportar</value>
<comment>Breadcrumb for import export</comment>
</data>
<data name="BreadcrumbResetVault" xml:space="preserve">
<value>Reset Vault</value>
<value>Restablecer bóveda</value>
<comment>Breadcrumb for reset vault</comment>
</data>
<data name="ResetVaultPleaseNote" xml:space="preserve">
<value>Please note:</value>
<value>Ten en cuenta:</value>
<comment>Reset vault please note prefix</comment>
</data>
<data name="ResetVaultCredentialsDeletedNote" xml:space="preserve">
<value>All encrypted credentials in your vault will be permanently deleted</value>
<value>Todas las credenciales cifradas en tu bóveda serán eliminadas permanentemente</value>
<comment>Reset vault note about credentials being deleted</comment>
</data>
<data name="ResetVaultEmailAliasesKeptNote" xml:space="preserve">
<value>Your email aliases will be preserved and can be re-used after resetting your vault</value>
<value>Sus alias de correo electrónico serán conservados y pueden ser reutilizados después de restablecer su bóveda</value>
<comment>Reset vault note about email aliases being kept</comment>
</data>
<data name="ResetVaultSettingsKeptNote" xml:space="preserve">
<value>Your account settings and preferences will be preserved</value>
<value>Se conservarán los ajustes y preferencias de su cuenta</value>
<comment>Reset vault note about settings being kept</comment>
</data>
<data name="ResetVaultIrreversibleNote" xml:space="preserve">
<value>This action cannot be undone</value>
<value>Esta acción no se puede deshacer</value>
<comment>Reset vault note about action being irreversible</comment>
</data>
<data name="ResetVaultConfirmUsernameLabel" xml:space="preserve">
<value>To continue, please type your username to confirm</value>
<value>Para continuar, por favor escribe tu nombre de usuario para confirmar</value>
<comment>Reset vault username confirmation label</comment>
</data>
<data name="ResetVaultContinueButton" xml:space="preserve">
<value>Continue with vault reset</value>
<value>Continuar con el restablecimiento de bóveda</value>
<comment>Reset vault continue button</comment>
</data>
<data name="ResetVaultFinalWarning" xml:space="preserve">
<value>Final warning: You are about to permanently delete all your credentials!</value>
<value>Advertencia final: ¡Estás a punto de eliminar permanentemente todas tus credenciales!</value>
<comment>Reset vault final warning message</comment>
</data>
<data name="ResetVaultDeletionIrreversibleNote" xml:space="preserve">
<value>This deletion is irreversible and cannot be undone</value>
<value>Esta acción es irreversible y no se puede deshacer</value>
<comment>Reset vault final step irreversible note</comment>
</data>
<data name="ResetVaultEnterPasswordLabel" xml:space="preserve">
<value>Enter your password to confirm</value>
<value>Introduce tu contraseña para confirmar</value>
<comment>Reset vault password confirmation label</comment>
</data>
<data name="ResetVaultConfirmButton" xml:space="preserve">
<value>Reset my vault</value>
<value>Restablecer bóveda</value>
<comment>Reset vault final confirmation button</comment>
</data>
<data name="ResetVaultUsernameRequired" xml:space="preserve">
<value>Username is required.</value>
<value>Se requiere un nombre de usuario.</value>
<comment>Reset vault username required error</comment>
</data>
<data name="ResetVaultUsernameDoesNotMatch" xml:space="preserve">
<value>The username you entered does not match your account username.</value>
<value>El nombre de usuario introducido no coincide con el nombre de usuario de su cuenta.</value>
<comment>Reset vault username mismatch error</comment>
</data>
<data name="ResetVaultPasswordIncorrect" xml:space="preserve">
<value>The password you entered is incorrect.</value>
<value>La contraseña introducida es incorrecta.</value>
<comment>Reset vault password incorrect error</comment>
</data>
<data name="ResetVaultProgressMessage" xml:space="preserve">
<value>Resetting vault...</value>
<value>Restableciendo bóveda...</value>
<comment>Reset vault progress message</comment>
</data>
<data name="ResetVaultSuccessMessage" xml:space="preserve">
<value>Your vault has been successfully reset. All credentials have been deleted and you can now start fresh.</value>
<value>Tu bóveda se ha restablecido correctamente. Todas las credenciales han sido eliminadas y ahora puedes empezar a actualizar.</value>
<comment>Reset vault success message</comment>
</data>
<data name="ResetVaultErrorMessage" xml:space="preserve">
<value>An error occurred while resetting your vault. Please try again.</value>
<value>Se ha producido un error al restablecer la bóveda. Por favor, inténtelo de nuevo.</value>
<comment>Reset vault error message</comment>
</data>
</root>

View File

@@ -60,55 +60,55 @@
</resheader>
<!-- Page title and breadcrumbs -->
<data name="PageTitle" xml:space="preserve">
<value>Change password</value>
<value>Cambiar contraseña</value>
<comment>Page title for the change password page</comment>
</data>
<data name="BreadcrumbSecuritySettings" xml:space="preserve">
<value>Security settings</value>
<value>Ajustes de seguridad</value>
<comment>Breadcrumb text for security settings</comment>
</data>
<data name="BreadcrumbChangePassword" xml:space="preserve">
<value>Change password</value>
<value>Cambiar contraseña</value>
<comment>Breadcrumb text for change password</comment>
</data>
<!-- Page description -->
<data name="PageDescription" xml:space="preserve">
<value>Changing your master password also changes the vault encryption keys. It is advised to periodically change your master password to keep your vaults secure.</value>
<value>Cambiar su contraseña maestra también cambia las claves de cifrado de bóveda. Se recomienda cambiar periódicamente su contraseña maestra para mantener sus bóvedas seguras.</value>
<comment>Description text explaining the password change process</comment>
</data>
<!-- Form labels -->
<data name="CurrentPasswordLabel" xml:space="preserve">
<value>Current Password</value>
<value>Contraseña actual</value>
<comment>Label for current password input field</comment>
</data>
<data name="NewPasswordLabel" xml:space="preserve">
<value>New Password</value>
<value>Nueva contraseña</value>
<comment>Label for new password input field</comment>
</data>
<data name="ConfirmNewPasswordLabel" xml:space="preserve">
<value>Confirm New Password</value>
<value>Confirmar nueva contraseña</value>
<comment>Label for confirm new password input field</comment>
</data>
<!-- Button text -->
<data name="ChangePasswordButton" xml:space="preserve">
<value>Change Password</value>
<value>Cambiar contraseña</value>
<comment>Button text for changing password</comment>
</data>
<!-- Loading and status messages -->
<data name="ChangingPasswordMessage" xml:space="preserve">
<value>Changing password...</value>
<value>Cambiando contraseña...</value>
<comment>Loading message displayed while changing password</comment>
</data>
<data name="PasswordChangedSuccessfully" xml:space="preserve">
<value>Password changed successfully.</value>
<value>Contraseña cambiada con éxito.</value>
<comment>Success message after password change</comment>
</data>
<data name="FailedToInitiatePasswordChange" xml:space="preserve">
<value>Failed to initiate the password change process.</value>
<value>Error al iniciar el proceso de cambio de contraseña.</value>
<comment>Error message when password change initiation fails</comment>
</data>
<data name="FailedToChangePassword" xml:space="preserve">
<value>Failed to change password. Please refresh the page and try again.</value>
<value>Error al cambiar la contraseña. Por favor, actualiza la página e inténtalo de nuevo.</value>
<comment>Error message when password change fails</comment>
</data>
</root>

View File

@@ -60,80 +60,80 @@
</resheader>
<!-- Page title and breadcrumbs -->
<data name="PageTitle" xml:space="preserve">
<value>Delete Account</value>
<value>Eliminar cuenta</value>
<comment>Page title for the delete account page</comment>
</data>
<data name="BreadcrumbSecuritySettings" xml:space="preserve">
<value>Security settings</value>
<value>Ajustes de seguridad</value>
<comment>Breadcrumb text for security settings</comment>
</data>
<data name="BreadcrumbDeleteAccount" xml:space="preserve">
<value>Delete Account</value>
<value>Eliminar cuenta</value>
<comment>Breadcrumb text for delete account</comment>
</data>
<!-- Warning messages -->
<data name="PermanentActionWarning" xml:space="preserve">
<value>Warning: This action is permanent and cannot be undone. All your data will be permanently deleted.</value>
<value>Advertencia: Esta acción es permanente y no se puede deshacer. Todos tus datos serán eliminados permanentemente.</value>
<comment>Warning message about permanent deletion</comment>
</data>
<data name="FinalWarning" xml:space="preserve">
<value>Final warning: Enter your password to permanently delete your account.</value>
<value>Advertencia final: Introduzca su contraseña para eliminar permanentemente su cuenta.</value>
<comment>Final warning message before account deletion</comment>
</data>
<!-- Note sections -->
<data name="PleaseNote" xml:space="preserve">
<value>Please note:</value>
<value>Ten en cuenta:</value>
<comment>Header for note section</comment>
</data>
<data name="VaultsDeletedNote" xml:space="preserve">
<value>All encrypted vaults which includes all of your credentials will be permanently deleted</value>
<value>Todas las bóvedas cifradas que incluyen todas tus credenciales serán eliminadas permanentemente</value>
<comment>Note about vault deletion</comment>
</data>
<data name="EmailAliasesOrphanedNote" xml:space="preserve">
<value>Your email aliases will be orphaned and cannot be claimed by other users</value>
<value>Tus alias de correo electrónico serán huérfanos y no podrán ser reclamados por otros usuarios</value>
<comment>Note about email aliases being orphaned</comment>
</data>
<data name="AccountCannotBeRecoveredNote" xml:space="preserve">
<value>Your account cannot be recovered after deletion</value>
<value>Su cuenta no puede ser recuperada después de la eliminación</value>
<comment>Note about account recovery</comment>
</data>
<data name="DeletionIrreversibleNote" xml:space="preserve">
<value>Account deletion is irreversible and cannot be undone. Pressing the button below will delete your account immmediately and permanently.</value>
<value>La eliminación de la cuenta es irreversible y no se puede deshacer. Al pulsar el botón de abajo se eliminará su cuenta de forma inmediata y de forma permanente.</value>
<comment>Note about deletion being irreversible</comment>
</data>
<!-- Form labels -->
<data name="ConfirmUsernameLabel" xml:space="preserve">
<value>Confirm your username</value>
<value>Confirma tu nombre de usuario</value>
<comment>Label for username confirmation input field</comment>
</data>
<data name="EnterPasswordLabel" xml:space="preserve">
<value>Enter your password</value>
<value>Introduzca su contraseña</value>
<comment>Label for password input field</comment>
</data>
<!-- Button text -->
<data name="ContinueWithAccountDeletion" xml:space="preserve">
<value>Continue with Account Deletion</value>
<value>Continuar con la eliminación de la cuenta</value>
<comment>Button text to continue with account deletion</comment>
</data>
<data name="DeleteMyAccount" xml:space="preserve">
<value>Delete My Account</value>
<value>Eliminar Mi Cuenta</value>
<comment>Button text to delete account</comment>
</data>
<!-- Loading and status messages -->
<data name="DeletingAccountMessage" xml:space="preserve">
<value>Deleting account...</value>
<value>Eliminando cuenta...</value>
<comment>Loading message displayed while deleting account</comment>
</data>
<data name="UsernameRequired" xml:space="preserve">
<value>Username is required</value>
<value>Nombre de usuario requerido</value>
<comment>Error message when username is not provided</comment>
</data>
<data name="UsernameDoesNotMatch" xml:space="preserve">
<value>The username you entered does not match your current username. Please try again.</value>
<value>El nombre de usuario introducido no coincide con su nombre de usuario actual. Por favor, inténtelo de nuevo.</value>
<comment>Error message when username doesn't match</comment>
</data>
<data name="ErrorProcessingRequest" xml:space="preserve">
<value>An error occurred while processing the request.</value>
<value>Se ha producido un error al procesar la solicitud.</value>
<comment>Generic error message for request processing</comment>
</data>
</root>

View File

@@ -60,48 +60,48 @@
</resheader>
<!-- Page title and breadcrumbs -->
<data name="PageTitle" xml:space="preserve">
<value>Disable two-factor authentication</value>
<value>Desactivar la autenticación de doble factor</value>
<comment>Page title for the disable 2FA page</comment>
</data>
<data name="BreadcrumbSecuritySettings" xml:space="preserve">
<value>Security settings</value>
<value>Ajustes de seguridad</value>
<comment>Breadcrumb text for security settings</comment>
</data>
<data name="BreadcrumbDisable2Fa" xml:space="preserve">
<value>Disable two-factor authentication</value>
<value>Desactivar la autenticación de doble factor</value>
<comment>Breadcrumb text for disable 2FA</comment>
</data>
<!-- Page description -->
<data name="PageDescription" xml:space="preserve">
<value>Disabling two-factor authentication means you will be able to login with only your password.</value>
<value>Desactivar la autenticación de doble factor significa que sólo podrá iniciar sesión con su contraseña.</value>
<comment>Description text explaining what disabling 2FA means</comment>
</data>
<!-- Warning message -->
<data name="WarningMessage" xml:space="preserve">
<value>Please note: after disabling two-factor authentication any configured authenticator app(s) will stop working. When you want to re-enable two-factor authentication you will have to configure the authenticator app(s) again.</value>
<value>Nota: después de desactivar la autenticación de dos factores, cualquier aplicación de autenticación configurada dejará de funcionar. Cuando quiera volver a habilitar la autenticación de doble factor, tendrá que configurar la(s) aplicación(es) de autenticación de nuevo.</value>
<comment>Warning message about the consequences of disabling 2FA</comment>
</data>
<!-- Status message -->
<data name="StatusMessage" xml:space="preserve">
<value>Two factor authentication is currently enabled. Disable it in order to be able to access your vault with your password only.</value>
<value>La autenticación de doble factor está activada. Desactívala para poder acceder a tu bóveda con tu contraseña únicamente.</value>
<comment>Status message explaining current 2FA state</comment>
</data>
<!-- Button text -->
<data name="ConfirmDisableButton" xml:space="preserve">
<value>Confirm Disable Two-Factor Authentication</value>
<value>Confirmar Desactivar Autenticación de Doble Factor</value>
<comment>Button text to confirm disabling 2FA</comment>
</data>
<!-- Success and error messages -->
<data name="TwoFactorDisabledSuccess" xml:space="preserve">
<value>Two-factor authentication is now successfully disabled.</value>
<value>La autenticación de doble factor se ha desactivado correctamente.</value>
<comment>Success message when 2FA is disabled</comment>
</data>
<data name="FailedToDisable2Fa" xml:space="preserve">
<value>Failed to disable two-factor authentication.</value>
<value>Error al desactivar la autenticación de dos factores.</value>
<comment>Error message when 2FA disable fails</comment>
</data>
<data name="TwoFactorNotEnabled" xml:space="preserve">
<value>Two-factor authentication is not enabled.</value>
<value>La autenticación de dos factores no está activada.</value>
<comment>Error message when 2FA is not enabled</comment>
</data>
</root>

View File

@@ -60,43 +60,43 @@
</resheader>
<!-- Page title and breadcrumbs -->
<data name="PageTitle" xml:space="preserve">
<value>Enable two-factor authentication</value>
<value>Habilitar la autenticación en dos pasos</value>
<comment>Page title for the enable 2FA page</comment>
</data>
<data name="BreadcrumbSecuritySettings" xml:space="preserve">
<value>Security settings</value>
<value>Ajustes de seguridad</value>
<comment>Breadcrumb text for security settings</comment>
</data>
<data name="BreadcrumbEnable2Fa" xml:space="preserve">
<value>Enable two-factor authentication</value>
<value>Habilitar la autenticación en dos pasos</value>
<comment>Breadcrumb text for enable 2FA</comment>
</data>
<!-- Page description -->
<data name="PageDescription" xml:space="preserve">
<value>Enable two-factor authentication to increase the security of your vaults.</value>
<value>Habilitar autenticación de doble factor para aumentar la seguridad de sus bóvedas.</value>
<comment>Description text explaining 2FA setup</comment>
</data>
<!-- Setup instructions -->
<data name="QrCodeInstructions" xml:space="preserve">
<value>Scan this QR code with your authenticator app or enter the following secret manually:</value>
<value>Escanea este código QR con tu aplicación de autenticación o introduce el siguiente secreto manualmente:</value>
<comment>Instructions for scanning QR code or entering secret</comment>
</data>
<!-- Form elements -->
<data name="VerificationCodePlaceholder" xml:space="preserve">
<value>Enter verification code</value>
<value>Introduzca el código de verificación</value>
<comment>Placeholder text for verification code input</comment>
</data>
<data name="VerifyAndEnableButton" xml:space="preserve">
<value>Verify and Enable</value>
<value>Verificar y Habilitar</value>
<comment>Button text to verify and enable 2FA</comment>
</data>
<!-- Success and error messages -->
<data name="TwoFactorEnabledSuccess" xml:space="preserve">
<value>Two-factor authentication is now successfully enabled. On your next login you will need to enter your 2FA code.</value>
<value>La autenticación de doble factor está habilitada con éxito. En su próximo inicio de sesión necesitará introducir su código 2FA.</value>
<comment>Success message when 2FA is enabled</comment>
</data>
<data name="FailedToEnable2Fa" xml:space="preserve">
<value>Failed to enable two-factor authentication.</value>
<value>Error al habilitar la autenticación de dos factores.</value>
<comment>Error message when 2FA setup fails</comment>
</data>
</root>

View File

@@ -20,15 +20,15 @@
</xsd:element>
</xsd:schema>
<data name="PasswordGeneratorSettingsLabel">
<value>Default password generator settings</value>
<value>Configuración predeterminada del generador de contraseñas</value>
<comment>Label for default password generator settings</comment>
</data>
<data name="ConfigureButton">
<value>Configure</value>
<value>Configurar</value>
<comment>Button text to configure settings</comment>
</data>
<data name="PasswordGeneratorSettingsDescription">
<value>Configure the default settings used when generating new passwords. These settings will be used for all new passwords unless overridden for specific entries.</value>
<value>Configurar los ajustes predeterminados al generar nuevas contraseñas. Estas opciones se utilizarán para todas las contraseñas nuevas a menos que se sobreescriban para entradas específicas.</value>
<comment>Description for password generator settings</comment>
</data>
</root>

View File

@@ -59,31 +59,31 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="NoLogoText" xml:space="preserve">
<value>No logo</value>
<value>Sin logo</value>
<comment>Text shown when service logo is not available</comment>
</data>
<data name="ImportFromServiceTitle" xml:space="preserve">
<value>Import from {0}</value>
<value>Importar desde {0}</value>
<comment>Modal title for importing from a service. {0} is placeholder for service name</comment>
</data>
<data name="UploadExportFileText" xml:space="preserve">
<value>Upload your {0} export file:</value>
<value>Sube tu archivo de exportación {0}:</value>
<comment>Text for file upload instruction. {0} is placeholder for service name</comment>
</data>
<data name="CancelButton" xml:space="preserve">
<value>Cancel</value>
<value>Cancelar</value>
<comment>Cancel button text</comment>
</data>
<data name="BackButton" xml:space="preserve">
<value>Back</value>
<value>Atrás</value>
<comment>Back button text</comment>
</data>
<data name="NextButton" xml:space="preserve">
<value>Next</value>
<value>Siguiente</value>
<comment>Next button text</comment>
</data>
<data name="ImportButton" xml:space="preserve">
<value>Import</value>
<value>Importar</value>
<comment>Import button text</comment>
</data>
</root>

View File

@@ -60,184 +60,184 @@
</resheader>
<!-- 1Password -->
<data name="OnePasswordDescription" xml:space="preserve">
<value>Import passwords from your 1Password vault</value>
<value>Importar contraseñas de 1Password</value>
<comment>Description for 1Password import service</comment>
</data>
<data name="OnePasswordInstructionsPart1" xml:space="preserve">
<value>In order to import your 1Password vault, you need to export it as a CSV file. You can do this by logging into your 1Password account in the 1Password 8 desktop app (Windows / MacOS / Linux), going to the 'File' menu and selecting 'Export' (to CSV).</value>
<value>Para importar la bóveda de 1Password, necesita exportarla como un archivo CSV. Puede hacerlo iniciando sesión en su cuenta de 1Password en la aplicación de escritorio de 1Password 8 (Windows / MacOS / Linux), ir al menú 'Archivo' y seleccionar 'Exportar' (a CSV).</value>
<comment>1Password export instructions part 1</comment>
</data>
<data name="OnePasswordInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>1Password export instructions part 2</comment>
</data>
<!-- Bitwarden -->
<data name="BitwardenDescription" xml:space="preserve">
<value>Import passwords from your Bitwarden vault</value>
<value>Importar contraseñas de Bitwarden</value>
<comment>Description for Bitwarden import service</comment>
</data>
<data name="BitwardenInstructionsPart1" xml:space="preserve">
<value>In order to import your Bitwarden vault, you need to export it as a CSV file. You can do this by logging into your Bitwarden account, going to the 'Tools' menu and selecting 'Export vault' (to CSV).</value>
<value>Para importar la bóveda de Bitwarden, necesita exportarla como un archivo CSV. Puede hacerlo iniciando sesión en su cuenta de Bitwarden, yendo al menú 'Herramientas' y seleccionando 'Exportar bóveda' (a CSV).</value>
<comment>Bitwarden export instructions part 1</comment>
</data>
<data name="BitwardenInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>Bitwarden export instructions part 2</comment>
</data>
<!-- LastPass -->
<data name="LastPassDescription" xml:space="preserve">
<value>Import passwords from your LastPass vault</value>
<value>Importar contraseñas de LastPass</value>
<comment>Description for LastPass import service</comment>
</data>
<data name="LastPassInstructionsPart1" xml:space="preserve">
<value>In order to import your LastPass vault, you need to export it as a CSV file. You can do this by logging into your LastPass account, going to 'Advanced Options' in the left sidebar and selecting 'Export' > 'LastPass CSV File'.</value>
<value>Para importar la bóveda de LastPass necesitas exportarla como un archivo CSV. Puede hacerlo iniciando sesión en su cuenta LastPass, yendo a 'Opciones avanzadas' en la barra lateral izquierda y seleccionando 'Exportar' > 'Archivo CSV LastPass'.</value>
<comment>LastPass export instructions part 1</comment>
</data>
<data name="LastPassInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>LastPass export instructions part 2</comment>
</data>
<!-- Chrome -->
<data name="ChromeDescription" xml:space="preserve">
<value>Import passwords from your Chrome Password Manager</value>
<value>Importar contraseñas de administrador de contraseñas de Chrome</value>
<comment>Description for Chrome import service</comment>
</data>
<data name="ChromeInstructionsPart1" xml:space="preserve">
<value>In order to import your Chrome Password Manager, you need to export it as a CSV file. You can do this by logging into your Chrome browser, going to the 'Settings' menu > 'Password and AutoFill' > 'Google Password Manager'. Then click on 'Export passwords'.</value>
<value>Para importar su gestor de contraseñas de Chrome, necesita exportarlo como un archivo CSV. Puede hacerlo iniciando sesión en su navegador Chrome, yendo al menú 'Configuración' > 'Contraseña y AutoCompletar' > 'Administrador de contraseñas de Chrome'. Luego haga clic en 'Exportar contraseñas'.</value>
<comment>Chrome export instructions part 1</comment>
</data>
<data name="ChromeInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>Chrome export instructions part 2</comment>
</data>
<!-- KeePass -->
<data name="KeePassDescription" xml:space="preserve">
<value>Import passwords from KeePass</value>
<value>Importar contraseñas de KeePass</value>
<comment>Description for KeePass import service</comment>
</data>
<data name="KeePassInstructionsPart1" xml:space="preserve">
<value>In order to import your KeePass vault, you need to export it as a CSV file. You can do this by going to the 'File' menu and selecting 'Export' (to CSV).</value>
<value>Para importar la bóveda de KeePass es necesario exportarla como un archivo CSV. Puede hacerlo yendo al menú 'Archivo' y seleccionando 'Exportar' (a CSV).</value>
<comment>KeePass export instructions part 1</comment>
</data>
<data name="KeePassInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>KeePass export instructions part 2</comment>
</data>
<!-- Generic CSV -->
<data name="GenericCsvDescription" xml:space="preserve">
<value>Import credentials using a template CSV format</value>
<value>Importar credenciales usando una plantilla CSV</value>
<comment>Description for Generic CSV import service</comment>
</data>
<data name="GenericCsvInstructionsPart1" xml:space="preserve">
<value>Is the password manager you are using not supported? You can always import your credentials into AliasVault using a generic CSV template format instead.</value>
<value>¿Gestor de contraseñas incompatible? Siempre puede importar sus credenciales a AliasVault utilizando una plantilla con formato CSV.</value>
<comment>Generic CSV instructions part 1</comment>
</data>
<data name="GenericCsvStep1" xml:space="preserve">
<value>Download the AliasVault Import CSV</value>
<value>Descargar el CSV de importación de AliasVault</value>
<comment>Generic CSV step 1</comment>
</data>
<data name="GenericCsvStep2" xml:space="preserve">
<value>Open it in a spreadsheet program (Microsoft Excel, Google Sheets, etc.)</value>
<value>Abrirlo en un programa de hoja de cálculo (Microsoft Excel, Google Sheets, etc.)</value>
<comment>Generic CSV step 2</comment>
</data>
<data name="GenericCsvStep3" xml:space="preserve">
<value>Fill in your credentials (replace the example data)</value>
<value>Rellena tus credenciales (reemplazar los datos de ejemplo)</value>
<comment>Generic CSV step 3</comment>
</data>
<data name="GenericCsvStep4" xml:space="preserve">
<value>Save as CSV format and upload it below</value>
<value>Guardar como formato CSV y subirlo más abajo</value>
<comment>Generic CSV step 4</comment>
</data>
<data name="GenericCsvTemplateDownloadError" xml:space="preserve">
<value>Failed to download CSV template. Please try again.</value>
<value>Error al descargar la plantilla CSV. Por favor, inténtalo de nuevo.</value>
<comment>Error message for template download failure</comment>
</data>
<!-- Firefox -->
<data name="FirefoxDescription" xml:space="preserve">
<value>Import passwords from your Firefox Password Manager</value>
<value>Importar contraseñas del administrador de contraseñas de Firefox</value>
<comment>Description for Firefox import service</comment>
</data>
<data name="FirefoxInstructionsPart1" xml:space="preserve">
<value>In order to import your Firefox passwords, you need to export it as a CSV file. You can do this by opening your Firefox browser, going to menu > 'Passwords'. Then click on the menu icon in the top right corner and select 'Export passwords'.</value>
<value>Para importar tus contraseñas de Firefox, necesitas exportarlas como un archivo CSV. Puedes hacerlo abriendo tu navegador Firefox, yendo al menú > 'contraseñas'. Luego haga clic en el icono del menú en la esquina superior derecha y seleccione 'Exportar contraseñas'.</value>
<comment>Firefox export instructions part 1</comment>
</data>
<data name="FirefoxInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>Firefox export instructions part 2</comment>
</data>
<!-- Dashlane -->
<data name="DashlaneDescription" xml:space="preserve">
<value>Import passwords from your Dashlane account</value>
<value>Importar contraseñas de Dashlane</value>
<comment>Description for Dashlane import service</comment>
</data>
<data name="DashlaneInstructionsPart1" xml:space="preserve">
<value>In order to import your Dashlane passwords, you need to export it as a CSV file. You can do this by logging into your Dashlane account, going to the 'Account' > 'Settings' menu and selecting 'Export to CSV'.</value>
<value>Para importar sus contraseñas de Dashlane, necesita exportarlo como un archivo CSV. Puede hacerlo iniciando sesión en su cuenta de Dashlane, yendo al menú 'Cuenta' > 'Configuración' y seleccionando 'Exportar a CSV'.</value>
<comment>Dashlane export instructions part 1</comment>
</data>
<data name="DashlaneInstructionsPart2" xml:space="preserve">
<value>Note: the .zip file you download will contain a "credentials.csv" file. You need to unzip the archive first, and then upload the "credentials.csv" CSV file below.</value>
<value>Nota: El archivo .zip que descargue contendrá un archivo "credentials.csv". Necesita descomprimir primero el archivo, y luego subir el archivo CSV "credentials.csv" a continuación.</value>
<comment>Dashlane export instructions part 2</comment>
</data>
<!-- KeePassXC -->
<data name="KeePassXCDescription" xml:space="preserve">
<value>Import passwords from KeePassXC</value>
<value>Importar contraseñas de KeePassXC</value>
<comment>Description for KeePassXC import service</comment>
</data>
<data name="KeePassXCInstructionsPart1" xml:space="preserve">
<value>In order to import your KeePassXC vault, you need to export it as a CSV file. You can do this by going to the 'Database' menu and selecting 'Export' (CSV File).</value>
<value>Para importar la bóveda de KeePassXC, debe exportarla como un archivo CSV. Puede hacer esto yendo al menú 'Base de datos' y seleccionando 'Exportar' (Archivo CSV).</value>
<comment>KeePassXC export instructions part 1</comment>
</data>
<data name="KeePassXCInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>KeePassXC export instructions part 2</comment>
</data>
<!-- Proton Pass -->
<data name="ProtonPassDescription" xml:space="preserve">
<value>Import passwords from Proton Pass</value>
<value>Importar contraseñas de Proton Pass</value>
<comment>Description for Proton Pass import service</comment>
</data>
<data name="ProtonPassInstructionsPart1" xml:space="preserve">
<value>In order to import your Proton Pass passwords, you need to export it as a CSV file. You can do this by logging into Proton Pass (web), clicking on the 'Settings' menu > 'Export' > 'File format: CSV'. Then click on 'Export'.</value>
<value>Para importar las contraseñas de Proton Pass, necesita exportarlas como un archivo CSV. Puede hacerlo iniciando sesión en Proton Pass (web), haciendo clic en el menú 'Configuración' > 'Exportar' > 'Formato de archivo: CSV'. Luego haga clic en 'Exportar'.</value>
<comment>Proton Pass export instructions part 1</comment>
</data>
<data name="ProtonPassInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>Proton Pass export instructions part 2</comment>
</data>
<!-- Strongbox -->
<data name="StrongboxDescription" xml:space="preserve">
<value>Import passwords from Strongbox</value>
<value>Importar contraseñas de Strongbox</value>
<comment>Description for Strongbox import service</comment>
</data>
<data name="StrongboxInstructionsPart1" xml:space="preserve">
<value>In order to import your Strongbox vault, you need to export it as a CSV file. You can do this by going to the 'File' menu and selecting 'Export Database' (to CSV).</value>
<value>Para importar la bóveda de Strongbox, necesita exportarla como un archivo CSV. Puede hacerlo yendo al menú 'Archivo' y seleccionando 'Exportar base de datos' (a CSV).</value>
<comment>Strongbox export instructions part 1</comment>
</data>
<data name="StrongboxInstructionsPart2" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>Strongbox export instructions part 2</comment>
</data>
<!-- AliasVault -->
<data name="AliasVaultDescription" xml:space="preserve">
<value>Import passwords from another AliasVault server or manual back-up</value>
<value>Importar contraseñas de otro servidor AliasVault o copia de seguridad manual</value>
<comment>Description for AliasVault import service</comment>
</data>
<data name="AliasVaultInstructionsPart1" xml:space="preserve">
<value>If you have a CSV file back-up of your AliasVault database (from a different AliasVault server), you can import it here.</value>
<value>Si tiene una copia de seguridad en un archivo CSV de su base de datos AliasVault (desde un servidor AliasVault diferente), puede importarla aquí.</value>
<comment>AliasVault import instructions</comment>
</data>
<!-- Dropbox -->
<data name="DropboxDescription" xml:space="preserve">
<value>Import passwords from Dropbox Passwords</value>
<value>Importar contraseñas de Dropbox</value>
<comment>Description for Dropbox import service</comment>
</data>
<data name="DropboxInstructionsPart1" xml:space="preserve">
<value>In order to import your Dropbox Passwords, you need to export them as a CSV file. You can do this by opening Dropbox Passwords, going to 'Account' > 'Export' (to .CSV).</value>
<value>Para importar sus contraseñas de Dropbox, necesita exportarlas como un archivo CSV. Puede hacerlo abriendo Dropbox Passwords, yendo a 'Cuenta' > 'Exportar' (a .CSV).</value>
<comment>Dropbox export instructions part 1</comment>
</data>
<!-- Common text that can be reused -->
<data name="UploadFileInstructionCommon" xml:space="preserve">
<value>Once you have exported the file, you can upload it below.</value>
<value>Una vez que haya exportado el archivo, puede subirlo a continuación.</value>
<comment>Common instruction for file upload</comment>
</data>
</root>

View File

@@ -59,15 +59,15 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Reset Vault</value>
<value>Restablecer bóveda</value>
<comment>Reset vault section title</comment>
</data>
<data name="Description" xml:space="preserve">
<value>This option allows you to completely empty your vault while keeping your account and email aliases. Use this if you want to start fresh after importing data from another password manager or if you want to clear all existing credentials to start over.</value>
<value>Esta opción le permite vaciar completamente su bóveda manteniendo su cuenta y alias de correo electrónico. Utilice esto si desea iniciar fresco después de importar datos de otro gestor de contraseñas o si desea borrar todas las credenciales existentes para empezar de nuevo.</value>
<comment>Reset vault section description</comment>
</data>
<data name="ResetVaultButton" xml:space="preserve">
<value>Reset vault</value>
<value>Restablecer bóveda</value>
<comment>Reset vault button</comment>
</data>
</root>

View File

@@ -59,51 +59,51 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Change password generator settings</value>
<value>Cambiar ajustes del generador de contraseñas</value>
<comment>Modal title</comment>
</data>
<data name="PasswordLengthLabel" xml:space="preserve">
<value>Password Length: {0}</value>
<value>Longitud de contraseña: {0}</value>
<comment>Label for password length slider. {0} is placeholder for current length</comment>
</data>
<data name="IncludeLowercaseLabel" xml:space="preserve">
<value>Include lowercase letters (a-z)</value>
<value>Incluye letras minúsculas (a-z)</value>
<comment>Checkbox label for lowercase letters</comment>
</data>
<data name="IncludeUppercaseLabel" xml:space="preserve">
<value>Include uppercase letters (A-Z)</value>
<value>Incluye letras mayúsculas (A-Z)</value>
<comment>Checkbox label for uppercase letters</comment>
</data>
<data name="IncludeNumbersLabel" xml:space="preserve">
<value>Include numbers (0-9)</value>
<value>Incluye números (0-9)</value>
<comment>Checkbox label for numbers</comment>
</data>
<data name="IncludeSpecialCharsLabel" xml:space="preserve">
<value>Include special characters (!@#$%^&amp;*)</value>
<value>Incluye caracteres especiales (!@#$%^&amp;*)</value>
<comment>Checkbox label for special characters</comment>
</data>
<data name="AvoidAmbiguousCharsLabel" xml:space="preserve">
<value>Avoid ambiguous characters (1, l, I, 0, O, etc.)</value>
<value>Evitar caracteres ambiguos (1, l, I, 0, O, etc.)</value>
<comment>Checkbox label for avoiding ambiguous characters</comment>
</data>
<data name="PreviewLabel" xml:space="preserve">
<value>Preview</value>
<value>Vista previa</value>
<comment>Label for password preview section</comment>
</data>
<data name="CancelButton" xml:space="preserve">
<value>Cancel</value>
<value>Cancelar</value>
<comment>Cancel button text</comment>
</data>
<data name="UseJustOnceButton" xml:space="preserve">
<value>Use Just Once</value>
<value>Usar solo una vez</value>
<comment>Button to use settings temporarily</comment>
</data>
<data name="SaveGloballyButton" xml:space="preserve">
<value>Save Globally</value>
<value>Guardar globalmente</value>
<comment>Button to save settings globally</comment>
</data>
<data name="SettingsUpdatedMessage" xml:space="preserve">
<value>Password generation settings updated globally.</value>
<value>Ajustes de generación de contraseñas actualizados globalmente.</value>
<comment>Success message when settings are saved</comment>
</data>
</root>

View File

@@ -59,47 +59,47 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Active Sessions</value>
<value>Sesiones Activas</value>
<comment>Section title</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Below is a list of devices where your account is currently logged in or has an active session. You can log out from any of these sessions here.</value>
<value>A continuación se muestra una lista de dispositivos donde su cuenta está actualmente conectada o tiene una sesión activa. Puede cerrar sesión de cualquiera de estas sesiones aquí.</value>
<comment>Description of active sessions</comment>
</data>
<data name="NoSessionsMessage" xml:space="preserve">
<value>No active sessions found.</value>
<value>No se encontraron sesiones activas.</value>
<comment>Message when no active sessions are available</comment>
</data>
<data name="DeviceColumn" xml:space="preserve">
<value>Device</value>
<value>Dispositivo</value>
<comment>Table column header</comment>
</data>
<data name="LastActiveColumn" xml:space="preserve">
<value>Last active</value>
<value>Última actividad</value>
<comment>Table column header</comment>
</data>
<data name="ExpiresColumn" xml:space="preserve">
<value>Expires</value>
<value>Caduca</value>
<comment>Table column header</comment>
</data>
<data name="ActionColumn" xml:space="preserve">
<value>Action</value>
<value>Acción</value>
<comment>Table column header</comment>
</data>
<data name="RevokeButton" xml:space="preserve">
<value>Revoke</value>
<value>Revocar</value>
<comment>Button to revoke session</comment>
</data>
<data name="RevokeSuccessMessage" xml:space="preserve">
<value>Session revoked successfully.</value>
<value>Sesn revocada correctamente.</value>
<comment>Success message when session is revoked</comment>
</data>
<data name="RevokeErrorMessage" xml:space="preserve">
<value>Failed to revoke session.</value>
<value>Error al revocar la sesn.</value>
<comment>Error message when session revocation fails</comment>
</data>
<data name="RevokeExceptionMessage" xml:space="preserve">
<value>Failed to revoke session: {0}.</value>
<value>Fallo al revocar la sesión: {0}.</value>
<comment>Exception message when session revocation fails. {0} is placeholder for error details</comment>
</data>
</root>

View File

@@ -59,15 +59,15 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Delete account</value>
<value>Eliminar cuenta</value>
<comment>Section title</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Permanently delete your account and all associated data. This action cannot be undone.</value>
<value>Elimina permanentemente tu cuenta y todos los datos asociados. Esta acción no se puede deshacer.</value>
<comment>Warning description for account deletion</comment>
</data>
<data name="DeleteButton" xml:space="preserve">
<value>Delete Account</value>
<value>Eliminar cuenta</value>
<comment>Button to delete account</comment>
</data>
</root>

View File

@@ -59,15 +59,15 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Change master password</value>
<value>Cambiar contraseña maestra</value>
<comment>Section title</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Changing your master password also changes the vault encryption keys. It is advised to periodically change your master password to keep your vaults secure.</value>
<value>Cambiar su contraseña maestra también cambia las claves de cifrado de bóveda. Se recomienda cambiar periódicamente su contraseña maestra para mantener sus bóvedas seguras.</value>
<comment>Description of password change</comment>
</data>
<data name="ChangePasswordButton" xml:space="preserve">
<value>Change Password</value>
<value>Cambiar contraseña</value>
<comment>Button to change password</comment>
</data>
</root>

View File

@@ -59,43 +59,43 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Passkey unlock</value>
<value>Desbloqueo con llave de acceso</value>
<comment>Title for passkey unlock section</comment>
</data>
<data name="EnabledDescription" xml:space="preserve">
<value>Your master password is encrypted with the passkey PRF and stored locally. When you reload the AliasVault page or tab, you can unlock your vault with your passkey. If you wish to disable passkey unlock, you can do so with the button below. Your master password will still work for unlocking the vault.</value>
<value>Su contraseña maestra se encripta con la llave PRF y se almacena local. Al recargar la página o pestaña de AliasVault, puede desbloquear su bóveda con su llave. Si desea deshabilitar el desbloqueo de contraseña, puede hacerlo con el botón de abajo. Su contraseña maestra seguirá funcionando para desbloquear la bóveda.</value>
<comment>Description when passkey unlock is enabled</comment>
</data>
<data name="DisableButton" xml:space="preserve">
<value>Disable Passkey Unlock</value>
<value>Desactivar el desbloqueo con llave de acceso</value>
<comment>Button to disable passkey unlock</comment>
</data>
<data name="DisabledDescription" xml:space="preserve">
<value>By default, reloading the AliasVault page or tab requires you to enter your master password again. With a passkey, you can unlock your vault instantly. When enabled, your master password is locally encrypted using the passkey's PRF extension. Note: the passkey will only work for the current device and browser that you enable it on.</value>
<value>Por defecto, recargar la página o pestaña de AliasVault requiere que vuelva a introducir su contraseña maestra. Con una llave de acceso, puede desbloquear la bóveda al instante. Cuando está habilitada, su contraseña maestra se cifrará localmente usando la extensión PRF de la contraseña. Nota: la llave de acceso sólo funcionará para el dispositivo actual y el navegador en el que la active.</value>
<comment>Description when passkey unlock is disabled</comment>
</data>
<data name="ExperimentalWarning" xml:space="preserve">
<value>This feature is currently supported by AliasVault browser extension and iOS app. Android support is coming soon. If you experience any issues, you can disable this feature at any time.</value>
<value>Esta función está soportada actualmente por la extensión del navegador AliasVault y la aplicación iOS. El soporte para Android estará disponible pronto. Si experimenta algún problema, puede desactivar esta característica en cualquier momento.</value>
<comment>Warning about feature compatibility</comment>
</data>
<data name="EnableButton" xml:space="preserve">
<value>Enable Passkey Unlock</value>
<value>Activar desbloqueo de llave</value>
<comment>Button to enable passkey unlock</comment>
</data>
<data name="SuccessEnabledMessage" xml:space="preserve">
<value>Passkey unlock is successfully enabled. The next time your vault is locked, you can unlock it with your created passkey.</value>
<value>El desbloqueo con llave de acceso se ha habilitado con éxito. La próxima vez que su bóveda esté bloqueada, puede desbloquearla con su llave de acceso creada.</value>
<comment>Success message when passkey unlock is enabled</comment>
</data>
<data name="SuccessDisabledMessage" xml:space="preserve">
<value>Passkey unlock is successfully disabled.</value>
<value>El desbloqueo con llave de acceso está desactivado correctamente.</value>
<comment>Success message when passkey unlock is disabled</comment>
</data>
<data name="WebAuthnNotSupportedError" xml:space="preserve">
<value>Your current browser does not support the WebAuthn PRF extension. Please try again with a different browser.</value>
<value>Su navegador actual no soporta la extensión WebAuthn PRF. Por favor, inténtelo de nuevo con un navegador diferente.</value>
<comment>Error when WebAuthn is not supported</comment>
</data>
<data name="EnableErrorMessage" xml:space="preserve">
<value>An error occurred while trying to enable Quick Vault Unlock. Please try again (later).</value>
<value>Ocurrió un error mientras se intentaba habilitar el desbloqueo rápido de la bóveda. Por favor, inténtalo de nuevo (más tarde).</value>
<comment>Generic error message when enabling fails</comment>
</data>
</root>

View File

@@ -59,47 +59,47 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Recent Auth Logs</value>
<value>Registros Auth recientes</value>
<comment>Section title</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Below you can find an overview of recent login attempts to your account.</value>
<value>A continuación puede encontrar un resumen de los intentos de inicio de sesión recientes en su cuenta.</value>
<comment>Description of auth logs section</comment>
</data>
<data name="NoLogsMessage" xml:space="preserve">
<value>No authentication logs found.</value>
<value>No hay registros de autenticación.</value>
<comment>Message when no auth logs are available</comment>
</data>
<data name="TimestampColumn" xml:space="preserve">
<value>Timestamp</value>
<value>Fecha y hora</value>
<comment>Table column header</comment>
</data>
<data name="EventTypeColumn" xml:space="preserve">
<value>Event Type</value>
<value>Tipo de evento</value>
<comment>Table column header</comment>
</data>
<data name="ClientColumn" xml:space="preserve">
<value>Client</value>
<value>Cliente</value>
<comment>Table column header</comment>
</data>
<data name="IpAddressColumn" xml:space="preserve">
<value>IP Address</value>
<value>Dirección IP</value>
<comment>Table column header</comment>
</data>
<data name="DeviceColumn" xml:space="preserve">
<value>Device</value>
<value>Dispositivo</value>
<comment>Table column header</comment>
</data>
<data name="SuccessColumn" xml:space="preserve">
<value>Success</value>
<value>Éxito</value>
<comment>Table column header</comment>
</data>
<data name="SuccessStatus" xml:space="preserve">
<value>Success</value>
<value>Correcto</value>
<comment>Status indicator for successful login</comment>
</data>
<data name="FailedStatus" xml:space="preserve">
<value>Failed</value>
<value>Fallo</value>
<comment>Status indicator for failed login</comment>
</data>
</root>

View File

@@ -59,19 +59,19 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Recovery codes</value>
<value>Códigos de recuperación</value>
<comment>Section title</comment>
</data>
<data name="Description" xml:space="preserve">
<value>The recovery codes below are used to access your account in case you lose access to your authenticator device. Make a photo or write them down and store them in a secure location. Do not share them with anyone.</value>
<value>Los códigos de recuperación a continuación se utilizan para acceder a su cuenta en caso de que pierda el acceso a su dispositivo de autenticación. Haz una foto o escríbelas y guárdalas en un lugar seguro. No las compartas con nadie.</value>
<comment>Description of recovery codes</comment>
</data>
<data name="WarningTitle" xml:space="preserve">
<value>Store these recovery codes in a safe place.</value>
<value>Almacene estos códigos de recuperación en un lugar seguro.</value>
<comment>Warning title about storing codes</comment>
</data>
<data name="WarningDescription" xml:space="preserve">
<value>If you lose your device and don't have the recovery codes you will lose access to your account. These codes are only shown once!</value>
<value>Si pierdes tu dispositivo y no tienes los códigos de recuperación, perderás el acceso a tu cuenta. ¡Estos códigos solo se muestran una vez!</value>
<comment>Warning description about recovery codes</comment>
</data>
</root>

View File

@@ -59,23 +59,23 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Two-factor authentication</value>
<value>Autenticación de doble factor</value>
<comment>Section title</comment>
</data>
<data name="EnabledMessage" xml:space="preserve">
<value>Two factor authentication is currently enabled.</value>
<value>La autenticación de doble factor está habilitada actualmente.</value>
<comment>Status message when 2FA is enabled</comment>
</data>
<data name="DisabledMessage" xml:space="preserve">
<value>Two factor authentication is currently disabled. In order to improve your account security we advise you to enable it.</value>
<value>La autenticación de doble factor está actualmente deshabilitada. Para mejorar la seguridad de su cuenta le aconsejamos habilitarla.</value>
<comment>Status message when 2FA is disabled</comment>
</data>
<data name="EnableButton" xml:space="preserve">
<value>Enable Two-Factor Authentication</value>
<value>Activar la autenticación de doble factor</value>
<comment>Button to enable 2FA</comment>
</data>
<data name="DisableButton" xml:space="preserve">
<value>Disable Two-Factor Authentication</value>
<value>Desactivar la autenticación de doble factor</value>
<comment>Button to disable 2FA</comment>
</data>
</root>

View File

@@ -59,7 +59,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="NewAliasButtonText" xml:space="preserve">
<value>+ New Alias</value>
<value>+ Nuevo alias</value>
<comment>Text for the new alias button</comment>
</data>
<data name="NewAliasButtonShort" xml:space="preserve">
@@ -67,39 +67,39 @@
<comment>Short text for the new alias button on mobile</comment>
</data>
<data name="CreateNewAliasTitle" xml:space="preserve">
<value>Create New Alias</value>
<value>Crear nuevo Alias</value>
<comment>Title of the create new alias popup</comment>
</data>
<data name="ServiceNameLabel" xml:space="preserve">
<value>Service Name</value>
<value>Nombre del servicio</value>
<comment>Label for service name field</comment>
</data>
<data name="ServiceNamePlaceholder" xml:space="preserve">
<value>E.g. Facebook</value>
<value>Ejemplo: Facebook</value>
<comment>Placeholder text for service name field</comment>
</data>
<data name="ServiceUrlLabel" xml:space="preserve">
<value>Service URL</value>
<value>URL del servicio</value>
<comment>Label for service URL field</comment>
</data>
<data name="CreateButton" xml:space="preserve">
<value>Create</value>
<value>Crear</value>
<comment>Create button text</comment>
</data>
<data name="AdvancedModeLink" xml:space="preserve">
<value>Create via advanced mode</value>
<value>Crear en modo avanzado</value>
<comment>Link text to advanced creation mode</comment>
</data>
<data name="CreatingNewAliasMessage" xml:space="preserve">
<value>Creating new alias...</value>
<value>Creando nuevo alias...</value>
<comment>Loading message while creating alias</comment>
</data>
<data name="CreateCredentialErrorMessage" xml:space="preserve">
<value>Error creating a new credential. Please try again (later) or log-out and in again.</value>
<value>Error al crear una nueva credencial. Por favor, inténtelo de nuevo (más tarde) o cierre la sesión y vuelva a entrar.</value>
<comment>Error message when credential creation fails</comment>
</data>
<data name="CredentialCreatedSuccessMessage" xml:space="preserve">
<value>Credential created successfully.</value>
<value>Credencial creada con éxito.</value>
<comment>Success message when credential is created</comment>
</data>
</root>

View File

@@ -20,27 +20,27 @@
</xsd:element>
</xsd:schema>
<data name="SearchVaultPlaceholder">
<value>Search vault...</value>
<value>Buscar bóveda...</value>
<comment>Placeholder text for search input field</comment>
</data>
<data name="SearchHelpText">
<value>Type a term to search for, this can be the service name, description or email address.</value>
<value>Escriba un término para buscar, puede ser el nombre del servicio, la descripción o la dirección de correo electrónico.</value>
<comment>Help text explaining what can be searched</comment>
</data>
<data name="SearchTooShortMessage">
<value>Please type more chars</value>
<value>Por favor escriba más caracteres</value>
<comment>Message when search term is too short</comment>
</data>
<data name="SearchingForMessage">
<value>Searching for "{0}"</value>
<value>Buscando "{0}"</value>
<comment>Message showing current search term</comment>
</data>
<data name="NoResultsFoundMessage">
<value>No results found</value>
<value>No hay resultados</value>
<comment>Message when no search results are found</comment>
</data>
<data name="SearchingMessage">
<value>Searching...</value>
<value>Buscando...</value>
<comment>Message when search is in progress</comment>
</data>
</root>

View File

@@ -59,23 +59,23 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="CopyrightText" xml:space="preserve">
<value>All rights reserved.</value>
<value>Todos los derechos reservados.</value>
<comment>Copyright text in footer</comment>
</data>
<data name="TipCreateShortcut" xml:space="preserve">
<value>Tip: Use the g+c (go create) keyboard shortcut to quickly create a new alias.</value>
<value>Consejo: Usa el acceso directo del teclado g+c (ir+crear) para crear rápidamente un nuevo alias.</value>
<comment>Tip about keyboard shortcut for creating aliases</comment>
</data>
<data name="TipFindShortcut" xml:space="preserve">
<value>Tip: Use the g+f (go find) keyboard shortcut to focus the search field.</value>
<value>Consejo: Usa el atajo de teclado g+f (ir+buscar) para enfocar el campo de búsqueda.</value>
<comment>Tip about keyboard shortcut for search</comment>
</data>
<data name="TipHomeShortcut" xml:space="preserve">
<value>Tip: Use the g+h (go home) keyboard shortcut to go to the homepage.</value>
<value>Consejo: Usa el acceso directo del teclado g+h (ir+casa) para ir a la página de inicio.</value>
<comment>Tip about keyboard shortcut for home</comment>
</data>
<data name="TipLockShortcut" xml:space="preserve">
<value>Tip: Use the g+l (go lock) keyboard shortcut to lock the vault.</value>
<value>Consejo: Usa el acceso directo del teclado g+l (ir+bloquear) para bloquear la bóveda.</value>
<comment>Tip about keyboard shortcut for locking vault</comment>
</data>
</root>

View File

@@ -21,51 +21,51 @@
</xsd:schema>
<!-- Main navigation links -->
<data name="CredentialsNav">
<value>Credentials</value>
<value>Credenciales</value>
<comment>Main navigation link for credentials section</comment>
</data>
<data name="EmailsNav">
<value>Emails</value>
<value>Correos</value>
<comment>Main navigation link for emails section</comment>
</data>
<!-- Settings menu items -->
<data name="GeneralSettingsNav">
<value>General settings</value>
<value>Ajustes generales</value>
<comment>Navigation link for general settings</comment>
</data>
<data name="SecuritySettingsNav">
<value>Security settings</value>
<value>Ajustes de seguridad</value>
<comment>Navigation link for security settings</comment>
</data>
<data name="ImportExportNav">
<value>Import / Export</value>
<value>Importar / Exportar</value>
<comment>Navigation link for import/export settings</comment>
</data>
<data name="ExtensionsAppsNav">
<value>Extensions &amp; Apps</value>
<value>Extensiones y Aplicaciones</value>
<comment>Navigation link for extensions and apps settings</comment>
</data>
<!-- Menu actions -->
<data name="EnableLightMode">
<value>Switch to light mode</value>
<value>Cambiar a tema claro</value>
<comment>Button text for switching to light theme</comment>
</data>
<data name="EnableDarkMode">
<value>Switch to dark mode</value>
<value>Cambiar a tema oscuro</value>
<comment>Button text for switching to dark theme</comment>
</data>
<data name="LogOut">
<value>Log out</value>
<value>Cerrar sesión</value>
<comment>Button text for logging out</comment>
</data>
<!-- Accessibility labels -->
<data name="OpenMenuLabel">
<value>Open menu</value>
<value>Abrir menú</value>
<comment>Screen reader label for mobile menu button</comment>
</data>
<!-- Status labels -->
<data name="NewLabel">
<value>NEW</value>
<value>NUEVO</value>
<comment>Label for new features or menu items</comment>
</data>
<data name="BetaLabel">

View File

@@ -59,6 +59,6 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ErrorTimeout" xml:space="preserve">
<value>Mobile login request timed out. Please reload the page and try again.</value>
<value>Se ha agotado el tiempo de inicio de sesión del móvil. Por favor, vuelva a cargar la página e inténtelo de nuevo.</value>
</data>
</root>

View File

@@ -59,27 +59,27 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LostPasswordTitle" xml:space="preserve">
<value>Lost password</value>
<value>Contraseña perdida</value>
<comment>Title for the forgot password page</comment>
</data>
<data name="NoRecoveryExplanation" xml:space="preserve">
<value>Unfortunately, if you've lost your password, there's no way to recover it. AliasVault employs end-to-end encryption for all your data, ensuring that nobody except you, can access your data.</value>
<value>Lamentablemente, si has perdido tu contraseña, no hay forma de recuperarla. AliasVault emplea cifrado de extremo a extremo para todos sus datos, asegurándose de que nadie excepto usted, pueda acceder a ellos.</value>
<comment>Explanation that password recovery is not possible due to encryption</comment>
</data>
<data name="NewAccountRequired" xml:space="preserve">
<value>If you don't remember your password, you will need to create a new account. Please note that this will result in the loss of all your data.</value>
<value>Si no recuerda su contraseña, necesitará crear una nueva cuenta. Tenga en cuenta que esto resultará en la pérdida de todos sus datos.</value>
<comment>Warning about needing to create a new account and data loss</comment>
</data>
<data name="RecentlyChangedPasswordTitle" xml:space="preserve">
<value>Recently changed password</value>
<value>Contraseña cambiada recientemente</value>
<comment>Section title for recently changed password help</comment>
</data>
<data name="ContactSupportWithEmail" xml:space="preserve">
<value>If you've recently changed your password and are experiencing difficulties signing in, please contact support at {0} for assistance.</value>
<value>Si has cambiado recientemente tu contraseña y tienes dificultades para iniciar sesión, ponte en contacto con el servicio de asistencia {0}.</value>
<comment>Instructions to contact support when support email is available. {0} is placeholder for email address</comment>
</data>
<data name="ContactAdministrator" xml:space="preserve">
<value>If you've recently changed your password and are experiencing difficulties signing in with your new password, please note that the server administrator may be able to recover an earlier backup of your vault to assist you. If this is the case, please contact the server administrator.</value>
<value>Si has cambiado recientemente tu contraseña y tienes dificultades para iniciar sesión con tu nueva contraseña, ten en cuenta que el administrador del servidor puede recuperar una copia de seguridad anterior de tu bóveda para ayudarte. Si éste es el caso, póngase en contacto con el administrador del servidor.</value>
<comment>Instructions to contact server administrator when no support email is available</comment>
</data>
</root>

View File

@@ -59,11 +59,11 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LoggingOutTitle" xml:space="preserve">
<value>Logging out</value>
<value>Cerrando sesión</value>
<comment>Title shown during logout process</comment>
</data>
<data name="LoggingOutDescription" xml:space="preserve">
<value>Securely unloading your data and logging you out. Please wait.</value>
<value>Descargando sus datos de forma segura y cerrando la sesión. Por favor espere.</value>
<comment>Description shown during logout process</comment>
</data>
</root>

View File

@@ -59,19 +59,19 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PageTitle" xml:space="preserve">
<value>Log in using Mobile App</value>
<value>Iniciar sesión con la aplicación móvil</value>
<comment>Page title for mobile unlock feature</comment>
</data>
<data name="UnlockTitle" xml:space="preserve">
<value>Unlock using Mobile App</value>
<value>Desbloquear con la aplicación móvil</value>
<comment>Modal title for mobile unlock feature</comment>
</data>
<data name="ScanQrCodeDescription" xml:space="preserve">
<value>Scan this QR code with your AliasVault mobile app to login.</value>
<value>Escanea este código QR con tu app móvil de AliasVault para iniciar sesión.</value>
<comment>Description instructing user to scan QR code</comment>
</data>
<data name="ScanQrCodeToUnlock" xml:space="preserve">
<value>Scan this QR code with your AliasVault mobile app to unlock your vault.</value>
<value>Escanea este código QR con tu app móvil de AliasVault para desbloquear tu bóveda.</value>
<comment>Description instructing user to scan QR code to unlock</comment>
</data>
</root>

View File

@@ -59,15 +59,15 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PageTitle" xml:space="preserve">
<value>Log in using Mobile App</value>
<value>Iniciar sesión con la aplicación móvil</value>
<comment>Page title for mobile unlock feature</comment>
</data>
<data name="UnlockTitle" xml:space="preserve">
<value>Unlock using Mobile App</value>
<value>Desbloquear con la aplicación móvil</value>
<comment>Modal title for mobile unlock feature</comment>
</data>
<data name="ScanQrCodeDescription" xml:space="preserve">
<value>Scan this QR code with your AliasVault mobile app to login and unlock your vault.</value>
<value>Escanea este código QR con tu aplicación móvil de AliasVault para iniciar sesión y desbloquear tu bóveda.</value>
<comment>Description instructing user to scan QR code</comment>
</data>
</root>

View File

@@ -21,32 +21,32 @@
</xsd:schema>
<!-- Step titles -->
<data name="TermsAndConditionsStepTitle">
<value>Using AliasVault</value>
<value>Usando AliasVault</value>
<comment>Title for the terms and conditions step</comment>
</data>
<data name="UsernameStepTitle">
<value>Choose Username</value>
<value>Elige nombre de usuario</value>
<comment>Title for the username selection step</comment>
</data>
<data name="PasswordStepTitle">
<value>Set Password</value>
<value>Establecer contraseña</value>
<comment>Title for the password creation step</comment>
</data>
<data name="CreatingStepTitle">
<value>Creating Vault</value>
<value>Creando Bóveda</value>
<comment>Title for the vault creation step</comment>
</data>
<data name="SetupStepTitle">
<value>Setup</value>
<value>Configuración</value>
<comment>Default setup step title</comment>
</data>
<!-- Button text -->
<data name="CreateAccountButton">
<value>Create Account</value>
<value>Crear cuenta</value>
<comment>Button text for creating account</comment>
</data>
<data name="ContinueButton">
<value>Continue</value>
<value>Continuar</value>
<comment>Continue button text</comment>
</data>
</root>

View File

@@ -59,27 +59,27 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="MainTitle" xml:space="preserve">
<value>Password &amp; (Email) Alias Manager</value>
<value>Gestor de contraseñas y Alias (Email)</value>
<comment>Main title of the application</comment>
</data>
<data name="TaglineText" xml:space="preserve">
<value>Your Privacy. Protected.</value>
<value>Tu privacidad. Protegida.</value>
<comment>Tagline emphasizing privacy protection</comment>
</data>
<data name="CreateNewVaultButton" xml:space="preserve">
<value>Create new vault</value>
<value>Crear nueva bóveda</value>
<comment>Button text for creating a new vault</comment>
</data>
<data name="LoginExistingAccountButton" xml:space="preserve">
<value>Log in with existing account</value>
<value>Iniciar sesión con cuenta existente</value>
<comment>Button text for logging in with existing account</comment>
</data>
<data name="HttpsWarningTitle" xml:space="preserve">
<value>HTTPS Required</value>
<value>HTTPS requerido</value>
<comment>Title for HTTPS warning banner</comment>
</data>
<data name="HttpsWarningMessage" xml:space="preserve">
<value>Browsers only allow secure crypto operations via HTTPS, except for localhost. Login/registration won't work over HTTP with the current hostname. Please switch to HTTPS.</value>
<value>Los navegadores solo permiten operaciones criptográficas seguras via HTTPS, excepto para localhost. Inicio de sesión/registro no funcionará sobre HTTP con el nombre de host actual. Por favor, cambie a HTTPS.</value>
<comment>Message explaining why HTTPS is required</comment>
</data>
</root>

View File

@@ -59,71 +59,71 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LoggingInWithWebAuthn" xml:space="preserve">
<value>Logging in with passkey...</value>
<value>Iniciando sesión con llave de acceso...</value>
<comment>Message shown while WebAuthn authentication is in progress</comment>
</data>
<data name="QuickUnlockDescription" xml:space="preserve">
<value>Quickly unlock your vault using your passkey. Or login with your password as a fallback.</value>
<value>Desbloquea rápidamente tu bóveda usando tu llave de acceso. O inicia sesión con tu contraseña como habitualmente.</value>
<comment>Description explaining WebAuthn unlock options</comment>
</data>
<data name="UnlockWithWebAuthn" xml:space="preserve">
<value>Unlock with passkey</value>
<value>Desbloquear con llave</value>
<comment>Button text for WebAuthn unlock</comment>
</data>
<data name="UnlockWithPassword" xml:space="preserve">
<value>Unlock with password</value>
<value>Desbloquear con contraseña</value>
<comment>Button text for password unlock</comment>
</data>
<data name="EnterMasterPasswordDescription" xml:space="preserve">
<value>Enter your master password to unlock your vault.</value>
<value>Introduzca su contraseña maestra para desbloquear su bóveda.</value>
<comment>Description for password unlock form</comment>
</data>
<data name="YourPasswordLabel" xml:space="preserve">
<value>Your password</value>
<value>Tu contraseña</value>
<comment>Label for password input field</comment>
</data>
<data name="UnlockButton" xml:space="preserve">
<value>Unlock</value>
<value>Desbloquear</value>
<comment>Button text for unlock submission</comment>
</data>
<data name="SwitchAccountsText" xml:space="preserve">
<value>Switch accounts?</value>
<value>¿Cambiar de cuenta?</value>
<comment>Text before logout link</comment>
</data>
<data name="LogOutLink" xml:space="preserve">
<value>Log out</value>
<value>Cerrar sesión</value>
<comment>Link text for logout</comment>
</data>
<data name="UnlockingVaultMessage" xml:space="preserve">
<value>Unlocking vault...</value>
<value>Desbloqueando bóveda...</value>
<comment>Loading message while unlocking vault</comment>
</data>
<data name="UnlockRequestError" xml:space="preserve">
<value>An error occurred while processing the unlock request.</value>
<value>Se ha producido un error al procesar la solicitud de desbloqueo.</value>
<comment>Error message for unlock request processing</comment>
</data>
<data name="IncorrectPasswordError" xml:space="preserve">
<value>The password is incorrect. Please try entering your password again, or log out and log in again.</value>
<value>La contraseña es incorrecta. Por favor, intenta introducir tu contraseña de nuevo, o cierra sesión e inicia sesión nuevamente.</value>
<comment>Error message for incorrect password</comment>
</data>
<data name="SessionTimedOutError" xml:space="preserve">
<value>Your session has timed out. Please log in again.</value>
<value>Su sesn ha expirado. Por favor, inicie sesión de nuevo.</value>
<comment>Error message for session timeout</comment>
</data>
<data name="ConnectionFailedError" xml:space="preserve">
<value>Connection with the AliasVault servers failed. Please try again (later).</value>
<value>La conexión con los servidores de AliasVault ha fallado. Inténtalo de nuevo (más tarde).</value>
<comment>Error message for server connection failure</comment>
</data>
<data name="WebAuthnNotSupportedError" xml:space="preserve">
<value>Your current browser does not support the WebAuthn PRF extension. Please login with your password instead.</value>
<value>Su navegador actual no soporta la extensión WebAuthn PRF. Por favor, inténtelo de nuevo con su contraseña.</value>
<comment>Error message when WebAuthn is not supported</comment>
</data>
<data name="GenericUnlockError" xml:space="preserve">
<value>An error occurred while processing the login request. Try again (later).</value>
<value>Se ha producido un error al procesar la solicitud de acceso. Inténtalo de nuevo (más tarde).</value>
<comment>Generic error message for unlock failures</comment>
</data>
<data name="UnlockWithMobileButton" xml:space="preserve">
<value>Unlock with Mobile App</value>
<value>Desbloquear con la aplicación móvil</value>
<comment>Button text for unlocking with mobile app</comment>
</data>
</root>

View File

@@ -21,41 +21,41 @@
</xsd:schema>
<!-- Page titles and descriptions -->
<data name="AddCredentialTitle">
<value>Add credential</value>
<value>Añadir credencial</value>
<comment>Title for adding a new credential</comment>
</data>
<data name="EditCredentialTitle">
<value>Edit credential</value>
<value>Editar credencial</value>
<comment>Title for editing an existing credential</comment>
</data>
<data name="AddCredentialDescription">
<value>Create a new credential below.</value>
<value>Crear una nueva credencial a continuación.</value>
<comment>Description for adding a new credential</comment>
</data>
<data name="EditCredentialDescription">
<value>Edit the existing credential below.</value>
<value>Editar la credencial existente a continuación.</value>
<comment>Description for editing an existing credential</comment>
</data>
<!-- Breadcrumb items -->
<data name="ViewCredentialBreadcrumb">
<value>View credential</value>
<value>Ver credencial</value>
<comment>Breadcrumb text for viewing a credential</comment>
</data>
<data name="EditCredentialBreadcrumb">
<value>Edit credential</value>
<value>Editar credencial</value>
<comment>Breadcrumb text for editing a credential</comment>
</data>
<data name="AddNewCredentialBreadcrumb">
<value>Add new credential</value>
<value>Añadir nueva credencial</value>
<comment>Breadcrumb text for adding a new credential</comment>
</data>
<!-- Section headers -->
<data name="ServiceSectionHeader">
<value>Service</value>
<value>Servicio</value>
<comment>Header for the service information section</comment>
</data>
<data name="LoginCredentialsSectionHeader">
<value>Login credentials</value>
<value>Credenciales de acceso</value>
<comment>Header for the login credentials section</comment>
</data>
<data name="AliasSectionHeader">
@@ -63,138 +63,138 @@
<comment>Header for the alias information section</comment>
</data>
<data name="NotesSectionHeader">
<value>Notes</value>
<value>Notas</value>
<comment>Header for the notes section</comment>
</data>
<data name="AttachmentsSectionHeader">
<value>Attachments</value>
<value>Archivos adjuntos</value>
<comment>Header for the attachments section</comment>
</data>
<!-- Form labels -->
<data name="ServiceNameLabel">
<value>Service Name</value>
<value>Nombre del servicio</value>
<comment>Label for service name input</comment>
</data>
<data name="ServiceUrlLabel">
<value>Service URL</value>
<value>URL del servicio</value>
<comment>Label for service URL input</comment>
</data>
<data name="EmailLabel">
<value>Email</value>
<value>Correo</value>
<comment>Label for email input</comment>
</data>
<data name="UsernameLabel">
<value>Username</value>
<value>Nombre de usuario</value>
<comment>Label for username input</comment>
</data>
<data name="PasswordLabel">
<value>Password</value>
<value>Contraseña</value>
<comment>Label for password input</comment>
</data>
<data name="FirstNameLabel">
<value>First Name</value>
<value>Nombre</value>
<comment>Label for first name input</comment>
</data>
<data name="LastNameLabel">
<value>Last Name</value>
<value>Apellido</value>
<comment>Label for last name input</comment>
</data>
<data name="NickNameLabel">
<value>Nick Name</value>
<value>Apodo</value>
<comment>Label for nick name input</comment>
</data>
<data name="GenderLabel">
<value>Gender</value>
<value>Género</value>
<comment>Label for gender input</comment>
</data>
<data name="BirthDateLabel">
<value>Birth Date</value>
<value>Fecha de nacimiento</value>
<comment>Label for birth date input</comment>
</data>
<data name="NotesLabel">
<value>Notes</value>
<value>Notas</value>
<comment>Label for notes input</comment>
</data>
<!-- Placeholders -->
<data name="ServiceNamePlaceholder">
<value>E.g. Facebook</value>
<value>Ejemplo: Facebook</value>
<comment>Placeholder text for service name input</comment>
</data>
<!-- Button text -->
<data name="GenerateRandomAliasButton">
<value>Generate Random Alias</value>
<value>Crear alias aleatorio</value>
<comment>Button text for generating a random alias</comment>
</data>
<data name="ClearAliasFieldsButton">
<value>Clear Alias Fields</value>
<value>Limpiar campos de alias</value>
<comment>Button text for clearing alias fields</comment>
</data>
<data name="SaveCredentialButton">
<value>Save Credential</value>
<value>Guardar credencial</value>
<comment>Button text for saving a credential</comment>
</data>
<data name="CancelButton">
<value>Cancel</value>
<value>Cancelar</value>
<comment>Button text for canceling the operation</comment>
</data>
<!-- Loading and status messages -->
<data name="SavingVaultMessage">
<value>Saving vault...</value>
<value>Guardando bóveda...</value>
<comment>Loading message when saving vault</comment>
</data>
<!-- Error messages -->
<data name="CredentialNotExistError">
<value>This credential does not exist (anymore). Please try again.</value>
<value>Esta credencial (ya) no existe. Por favor, inténtelo de nuevo.</value>
<comment>Error message when credential doesn't exist</comment>
</data>
<data name="ErrorSavingCredentials">
<value>Error saving credentials. Please try again.</value>
<value>Error al guardar las credenciales. Por favor, inténtelo de nuevo.</value>
<comment>Error message when saving credentials fails</comment>
</data>
<!-- Success messages -->
<data name="CredentialUpdatedSuccess">
<value>Credential updated successfully.</value>
<value>Credencial actualizada correctamente.</value>
<comment>Success message when credential is updated</comment>
</data>
<data name="CredentialCreatedSuccess">
<value>Credential created successfully.</value>
<value>Credencial creada con éxito.</value>
<comment>Success message when credential is created</comment>
</data>
<!-- Passkey labels -->
<data name="PasskeySectionHeader">
<value>Passkey</value>
<value>Llave de acceso</value>
<comment>Section header for passkey</comment>
</data>
<data name="PasskeyLabel">
<value>Passkey</value>
<value>Llave de acceso</value>
<comment>Label for passkey</comment>
</data>
<data name="PasskeySiteLabel">
<value>Site</value>
<value>Sitio</value>
<comment>Label for passkey site/relying party ID</comment>
</data>
<data name="PasskeyDisplayNameLabel">
<value>Name</value>
<value>Nombre</value>
<comment>Label for passkey display name</comment>
</data>
<data name="PasskeyHelpText">
<value>Passkeys are created through the browser extension or mobile apps when prompted by a website. They cannot be manually edited or created through the web app. To remove this passkey, you can delete it from this credential. To replace or create a new passkey, visit the website and follow its prompts.</value>
<value>Las llaves de acceso se crean a través de la extensión del navegador o de las aplicaciones móviles cuando un sitio web lo solicita. No se pueden editar o crear manualmente a través de la aplicación web. Para eliminar esta llave de acceso, puede eliminarla de esta credencial. Para reemplazar o crear una nueva llave de acceso, visite el sitio web y siga sus indicaciones.</value>
<comment>Help text explaining how passkeys work</comment>
</data>
<data name="DeletePasskeyButton">
<value>Delete passkey</value>
<value>Eliminar llave</value>
<comment>Button to delete passkey</comment>
</data>
<data name="PasskeyMarkedForDeletion">
<value>Passkey marked for deletion</value>
<value>Llave de acceso marcada para eliminar</value>
<comment>Header when passkey is marked for deletion</comment>
</data>
<data name="PasskeyWillBeDeleted">
<value>This passkey will be deleted when you save this credential.</value>
<value>Esta llave de acceso se eliminará cuando guarde esta credencial.</value>
<comment>Message explaining passkey will be deleted on save</comment>
</data>
<data name="UndoButton">
<value>Undo</value>
<value>Deshacer</value>
<comment>Button to undo passkey deletion</comment>
</data>
</root>

View File

@@ -20,23 +20,23 @@
</xsd:element>
</xsd:schema>
<data name="DeleteCredentialPageTitle">
<value>Delete credential</value>
<value>Borrar credencial</value>
<comment>Page title for deleting credentials</comment>
</data>
<data name="DeleteCredentialTitle">
<value>Delete credential</value>
<value>Borrar credencial</value>
<comment>Page header title for deleting credential</comment>
</data>
<data name="DeleteCredentialDescription">
<value>You can delete the credential below.</value>
<value>Puede eliminar la credencial a continuación.</value>
<comment>Page description for deleting credential</comment>
</data>
<data name="DeleteWarningMessage">
<value>Note: removing this login entry is permanent and cannot be undone.</value>
<value>Nota: eliminar esta entrada de acceso es permanente y no se puede deshacer.</value>
<comment>Warning message about permanent deletion</comment>
</data>
<data name="CredentialEntrySection">
<value>Credential entry</value>
<value>Credencial</value>
<comment>Section header for credential details</comment>
</data>
<data name="IdLabel">
@@ -44,39 +44,39 @@
<comment>Label for credential ID field</comment>
</data>
<data name="ServiceNameLabel">
<value>Service name</value>
<value>Nombre del servicio</value>
<comment>Label for service name field</comment>
</data>
<data name="YesImSureButton">
<value>Yes, I'm sure</value>
<value>Si, estoy seguro</value>
<comment>Confirmation button text</comment>
</data>
<data name="NoCancelButton">
<value>No, cancel</value>
<value>No, cancelar</value>
<comment>Cancel button text</comment>
</data>
<data name="ViewCredentialBreadcrumb">
<value>View credential</value>
<value>Ver credencial</value>
<comment>Breadcrumb text for view credential page</comment>
</data>
<data name="DeleteCredentialBreadcrumb">
<value>Delete credential</value>
<value>Borrar credencial</value>
<comment>Breadcrumb text for delete credential page</comment>
</data>
<data name="DeleteCredentialNotFoundError">
<value>Error deleting. Credential not found.</value>
<value>Error al eliminar. Credencial no encontrada.</value>
<comment>Error message when credential is not found during deletion</comment>
</data>
<data name="DeletingCredentialMessage">
<value>Deleting credential...</value>
<value>Eliminando credencial...</value>
<comment>Loading message while deleting credential</comment>
</data>
<data name="DeleteSuccessMessage">
<value>Credential successfully deleted.</value>
<value>Credencial eliminada correctamente.</value>
<comment>Success message after credential deletion</comment>
</data>
<data name="DeleteDatabaseError">
<value>Error saving database.</value>
<value>Error al guardar en la base de datos.</value>
<comment>Error message when database save fails</comment>
</data>
</root>

View File

@@ -60,53 +60,53 @@
</resheader>
<!-- Page Header -->
<data name="PageTitle" xml:space="preserve">
<value>Credentials</value>
<value>Credenciales</value>
<comment>Main credentials page title</comment>
</data>
<data name="PageDescription" xml:space="preserve">
<value>Find all of your credentials below.</value>
<value>Encuentre todas sus credenciales a continuación.</value>
<comment>Page description text</comment>
</data>
<!-- Settings Dropdown -->
<data name="ViewModeLabel" xml:space="preserve">
<value>View Mode</value>
<value>Modo de vista</value>
<comment>Label for view mode dropdown</comment>
</data>
<data name="GridViewOption" xml:space="preserve">
<value>Grid View</value>
<value>Vista de cuadrícula</value>
<comment>Grid view option in dropdown</comment>
</data>
<data name="TableViewOption" xml:space="preserve">
<value>Table View</value>
<value>Vista de Tabla</value>
<comment>Table view option in dropdown</comment>
</data>
<data name="SortOrderLabel" xml:space="preserve">
<value>Sort Order</value>
<value>Orden</value>
<comment>Label for sort order dropdown</comment>
</data>
<data name="OldestFirstOption" xml:space="preserve">
<value>Oldest First</value>
<value>Antiguos Primero</value>
<comment>Oldest first sort option</comment>
</data>
<data name="NewestFirstOption" xml:space="preserve">
<value>Newest First</value>
<value>Nuevos Primero</value>
<comment>Newest first sort option</comment>
</data>
<data name="AlphabeticalOption" xml:space="preserve">
<value>Alphabetical</value>
<value>Alfabético</value>
<comment>Alphabetical sort option</comment>
</data>
<!-- Empty State -->
<data name="NoCredentialsTitle" xml:space="preserve">
<value>No credentials yet</value>
<value>Aún no hay credenciales</value>
<comment>Title when no credentials exist</comment>
</data>
<data name="CreateFirstCredentialText" xml:space="preserve">
<value>Create your first credential using the</value>
<value>Crea tu primera credencial usando el</value>
<comment>Text explaining how to create first credential</comment>
</data>
<data name="NewAliasButtonText" xml:space="preserve">
<value>"+ New Alias"</value>
<value>"+ Nuevo alias"</value>
<comment>Text reference to the New Alias button (desktop)</comment>
</data>
<data name="NewAliasButtonTextMobile" xml:space="preserve">
@@ -114,37 +114,37 @@
<comment>Text reference to the New Alias button (mobile)</comment>
</data>
<data name="ButtonLocationText" xml:space="preserve">
<value>button in the top right corner.</value>
<value>botón en la esquina superior derecha.</value>
<comment>Text describing button location</comment>
</data>
<data name="OrText" xml:space="preserve">
<value>or</value>
<value>o</value>
<comment>Separator text between options</comment>
</data>
<data name="ImportCredentialsText" xml:space="preserve">
<value>If you previously used a different password manager, you can import your credentials from it.</value>
<value>Si previamente utilizó un gestor de contraseñas diferente, puede importar sus credenciales desde él.</value>
<comment>Text explaining import option</comment>
</data>
<data name="ImportButtonText" xml:space="preserve">
<value>Import from KeePass, Bitwarden, Chrome, Firefox...</value>
<value>Importar desde KeePass, Bitwarden, Chrome, Firefox...</value>
<comment>Import button text</comment>
</data>
<!-- Error Messages -->
<data name="FailedToLoadCredentialsMessage" xml:space="preserve">
<value>Failed to load credentials.</value>
<value>Fallo al cargar las credenciales.</value>
<comment>Error message when credentials fail to load</comment>
</data>
<!-- Filter Options -->
<data name="FilterLabel" xml:space="preserve">
<value>Filter</value>
<value>Filtro</value>
<comment>Label for filter dropdown</comment>
</data>
<data name="FilterAllOption" xml:space="preserve">
<value>(All) Credentials</value>
<value>(Todas) Credenciales</value>
<comment>Filter option to show all credentials</comment>
</data>
<data name="FilterPasskeysOption" xml:space="preserve">
<value>Passkeys</value>
<value>Llaves de acceso</value>
<comment>Filter option to show only passkeys</comment>
</data>
<data name="FilterAliasesOption" xml:space="preserve">
@@ -152,24 +152,24 @@
<comment>Filter option to show only aliases</comment>
</data>
<data name="FilterUserpassOption" xml:space="preserve">
<value>Passwords</value>
<value>Contraseñas</value>
<comment>Filter option to show only username/passwords</comment>
</data>
<data name="FilterAttachmentsOption" xml:space="preserve">
<value>Attachments</value>
<value>Archivos adjuntos</value>
<comment>Filter option to show only credentials with attachments</comment>
</data>
<!-- Filtered Empty States -->
<data name="NoPasskeysFound" xml:space="preserve">
<value>No passkeys have been created yet. Passkeys are added through the browser extension or mobile apps when visiting a website that supports passkeys and offers passkey authentication.</value>
<value>Aún no se han creado claves de acceso. Las llaves se añaden a través de la extensión del navegador o de las aplicaciones móviles cuando visitan un sitio web que soporta contraseñas y ofrece autenticación de contraseñas.</value>
<comment>Empty state message when no passkeys are found</comment>
</data>
<data name="NoAttachmentsFound" xml:space="preserve">
<value>No credentials with attachments found.</value>
<value>No se encontraron credenciales con archivos adjuntos.</value>
<comment>Empty state message when no credentials with attachments are found</comment>
</data>
<data name="NoCredentialsFound" xml:space="preserve">
<value>No credentials match the selected filter.</value>
<value>Ninguna credencial coincide con el filtro seleccionado.</value>
<comment>Empty state message when no credentials match the filter</comment>
</data>
</root>

View File

@@ -20,51 +20,51 @@
</xsd:element>
</xsd:schema>
<data name="ViewCredentialsPageTitle">
<value>View credentials</value>
<value>Ver credenciales</value>
<comment>Page title for viewing credentials</comment>
</data>
<data name="ViewCredentialTitle">
<value>View credential</value>
<value>Ver credencial</value>
<comment>Page header title for viewing a credential</comment>
</data>
<data name="EditButtonMobile">
<value>Edit</value>
<value>Editar</value>
<comment>Text for edit button on mobile</comment>
</data>
<data name="EditButtonDesktop">
<value>Edit credential</value>
<value>Editar credencial</value>
<comment>Text for edit button on desktop</comment>
</data>
<data name="DeleteButtonMobile">
<value>Delete</value>
<value>Eliminar</value>
<comment>Text for delete button on mobile</comment>
</data>
<data name="DeleteButtonDesktop">
<value>Delete credential</value>
<value>Eliminar credencial</value>
<comment>Text for delete button on desktop</comment>
</data>
<data name="LoginCredentialsSection">
<value>Login credentials</value>
<value>Credenciales de acceso</value>
<comment>Section header for login credentials</comment>
</data>
<data name="GeneratedCredentialsDescription">
<value>Below you can view and copy the generated credentials for this account. Any emails sent to the shown address will automatically appear on this page.</value>
<value>A continuación puede ver y copiar las credenciales generadas para esta cuenta. Cualquier correo electrónico enviado a la dirección mostrada aparecerá automáticamente en esta página.</value>
<comment>Description for generated credentials with email support</comment>
</data>
<data name="StoredCredentialsDescription">
<value>Below you can view and copy the stored login credentials for this account.</value>
<value>A continuación puede ver y copiar las credenciales de inicio de sesión almacenadas para esta cuenta.</value>
<comment>Description for stored credentials without email support</comment>
</data>
<data name="EmailLabel">
<value>Email</value>
<value>Correo</value>
<comment>Label for email field</comment>
</data>
<data name="UsernameLabel">
<value>Username</value>
<value>Nombre de usuario</value>
<comment>Label for username field</comment>
</data>
<data name="PasswordLabel">
<value>Password</value>
<value>Contraseña</value>
<comment>Label for password field</comment>
</data>
<data name="AliasSection">
@@ -72,51 +72,51 @@
<comment>Section header for alias information</comment>
</data>
<data name="FullNameLabel">
<value>Full name</value>
<value>Nombre completo</value>
<comment>Label for full name field</comment>
</data>
<data name="FirstNameLabel">
<value>First name</value>
<value>Nombre</value>
<comment>Label for first name field</comment>
</data>
<data name="LastNameLabel">
<value>Last name</value>
<value>Apellido</value>
<comment>Label for last name field</comment>
</data>
<data name="BirthdateLabel">
<value>Birthdate</value>
<value>Fecha de nacimiento</value>
<comment>Label for birthdate field</comment>
</data>
<data name="NicknameLabel">
<value>Nickname</value>
<value>Apodo</value>
<comment>Label for nickname field</comment>
</data>
<data name="ViewCredentialBreadcrumb">
<value>View credential</value>
<value>Ver credencial</value>
<comment>Breadcrumb text for view credential page</comment>
</data>
<data name="CredentialNotFoundError">
<value>This credential does not exist (anymore). Please try again.</value>
<value>Esta credencial (ya) no existe. Por favor, inténtelo de nuevo.</value>
<comment>Error message when credential is not found</comment>
</data>
<data name="PasskeySectionHeader">
<value>Passkey</value>
<value>Llave de acceso</value>
<comment>Section header for passkey</comment>
</data>
<data name="PasskeyLabel">
<value>Passkey</value>
<value>Llave de acceso</value>
<comment>Label for passkey</comment>
</data>
<data name="PasskeySiteLabel">
<value>Site</value>
<value>Sitio</value>
<comment>Label for passkey site/relying party ID</comment>
</data>
<data name="PasskeyDisplayNameLabel">
<value>Name</value>
<value>Nombre</value>
<comment>Label for passkey display name</comment>
</data>
<data name="PasskeyHelpText">
<value>Passkeys are created through the browser extension or mobile apps when prompted by a website. They cannot be manually edited or created through the web app. To remove this passkey, you can delete it from this credential. To replace or create a new passkey, visit the website and follow its prompts.</value>
<value>Las llaves de acceso se crean a través de la extensión del navegador o de las aplicaciones móviles cuando un sitio web lo solicita. No se pueden editar o crear manualmente a través de la aplicación web. Para eliminar esta llave de acceso, puede eliminarla de esta credencial. Para reemplazar o crear una nueva llave de acceso, visite el sitio web y siga sus indicaciones.</value>
<comment>Help text explaining how passkeys work</comment>
</data>
</root>

View File

@@ -59,47 +59,47 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PageTitle" xml:space="preserve">
<value>Emails</value>
<value>Correos</value>
<comment>Page title</comment>
</data>
<data name="PageDescription" xml:space="preserve">
<value>You can view all emails received by your private email addresses below.</value>
<value>Puede ver todos los correos recibidos por su dirección de correo electrónico privada a continuación.</value>
<comment>Page description</comment>
</data>
<data name="AutoRefreshEnabledTooltip" xml:space="preserve">
<value>Auto-refresh enabled</value>
<value>Auto-refrescar activado</value>
<comment>Tooltip for auto-refresh indicator</comment>
</data>
<data name="RefreshButton" xml:space="preserve">
<value>Refresh</value>
<value>Refrescar</value>
<comment>Refresh button text</comment>
</data>
<data name="NoEmailClaimsMessage" xml:space="preserve">
<value>You are not using any private email addresses (yet). Create a new alias and use a private email address supported by AliasVault. All emails received by these private email addresses will show up here.</value>
<value>No estás usando ninguna dirección de correo electrónico privada (aún). Crea un nuevo alias y usa una dirección de correo electrónico privada soportada por AliasVault. Todos los correos electrónicos recibidos por estas direcciones privadas aparecerán aquí.</value>
<comment>Message when no email addresses are configured</comment>
</data>
<data name="NoEmailsReceivedMessage" xml:space="preserve">
<value>No emails have been received yet.</value>
<value>Aún no se han recibido correos.</value>
<comment>Message when no emails are received</comment>
</data>
<data name="LoadingText" xml:space="preserve">
<value>Loading...</value>
<value>Cargando...</value>
<comment>Loading indicator text</comment>
</data>
<data name="LoadMoreButtonText" xml:space="preserve">
<value>Load More ({0} remaining)</value>
<value>Cargar más ({0} restantes)</value>
<comment>Load more button text with count. {0} is placeholder for number of remaining emails</comment>
</data>
<data name="ClaimDoesNotExistError" xml:space="preserve">
<value>An error occurred while trying to load the emails. Please try to edit and save any credential entry to synchronize the database, then try again.</value>
<value>Ocurrió un error mientras se trataba de cargar los correos electrónicos. Por favor, intente editar y guardar la entrada de credenciales para sincronizar la base de datos, y vuelva a intentarlo.</value>
<comment>Error message when email claim does not exist</comment>
</data>
<data name="LoadEmailsFailedMessage" xml:space="preserve">
<value>Failed to load email: {0}</value>
<value>Error al cargar el correo: {0}</value>
<comment>Error message when loading email fails. {0} is placeholder for error message</comment>
</data>
<data name="LoadMoreEmailsFailedMessage" xml:space="preserve">
<value>Failed to load more emails: {0}</value>
<value>Error al cargar más correos: {0}</value>
<comment>Error message when loading more emails fails. {0} is placeholder for error message</comment>
</data>
</root>

View File

@@ -21,45 +21,45 @@
</xsd:schema>
<!-- Page title and description -->
<data name="PageTitle">
<value>Extensions &amp; Apps</value>
<value>Extensiones y Aplicaciones</value>
<comment>Page title for extensions and apps</comment>
</data>
<data name="PageDescription">
<value>Install browser extensions and mobile apps to access your vault from all your devices and automatically fill credentials on websites.</value>
<value>Instala las extensiones del navegador y las aplicaciones móviles para acceder a tu bóveda desde todos tus dispositivos y rellena automáticamente las credenciales en los sitios web.</value>
<comment>Page description for extensions and apps</comment>
</data>
<data name="BreadcrumbTitle">
<value>Extensions &amp; Apps</value>
<value>Extensiones y Aplicaciones</value>
<comment>Breadcrumb title for extensions and apps</comment>
</data>
<!-- Browser Extensions Section -->
<data name="BrowserExtensionsTitle">
<value>Browser Extensions</value>
<value>Extensiones de navegador</value>
<comment>Title for browser extensions section</comment>
</data>
<data name="BrowserExtensionsDescription">
<value>The AliasVault browser extension allows you to autofill existing credentials on any website. It also allows you to generate new aliases during registration, access received emails on all of your aliases, and view your aliases and identities.</value>
<value>La extensión del navegador AliasVault le permite autorrellenar las credenciales existentes en cualquier sitio web. También le permite generar nuevos alias durante el registro, acceder a correos electrónicos recibidos en todos sus alias, y ver sus alias e identidades.</value>
<comment>Description for browser extensions</comment>
</data>
<data name="InstallButton">
<value>Install</value>
<value>Instalar</value>
<comment>Install button text</comment>
</data>
<data name="ComingSoonText">
<value>Coming soon</value>
<value>Próximamente</value>
<comment>Coming soon text for unavailable extensions</comment>
</data>
<!-- Mobile Apps Section -->
<data name="MobileAppsTitle">
<value>Mobile Apps</value>
<value>Aplicaciones Móviles</value>
<comment>Title for mobile apps section</comment>
</data>
<data name="MobileAppsDescription">
<value>The AliasVault mobile app allows you to access your aliases and identities on the go, view and manage received emails, and generate new aliases anytime. Your data is fully protected with on-device biometric authentication.</value>
<value>La aplicación móvil AliasVault te permite acceder a tus alias e identidades donde sea, ver y administrar los correos recibidos y generar nuevos alias en cualquier momento. Sus datos están totalmente protegidos con autenticación biométrica del dispositivo.</value>
<comment>Description for mobile apps</comment>
</data>
<data name="DownloadButton">
<value>Download</value>
<value>Descargar</value>
<comment>Download button text</comment>
</data>
</root>

View File

@@ -21,144 +21,144 @@
</xsd:schema>
<!-- Page title and description -->
<data name="PageTitle">
<value>General settings</value>
<value>Ajustes generales</value>
<comment>Page title for general settings</comment>
</data>
<data name="PageDescription">
<value>Configure general AliasVault settings.</value>
<value>Configurar ajustes generales de AliasVault.</value>
<comment>Page description for general settings</comment>
</data>
<data name="BreadcrumbTitle">
<value>General settings</value>
<value>Ajustes generales</value>
<comment>Breadcrumb title for general settings</comment>
</data>
<!-- Email Settings Section -->
<data name="EmailSettingsTitle">
<value>Email Settings</value>
<value>Ajustes de correo</value>
<comment>Title for email settings section</comment>
</data>
<data name="DefaultEmailDomainLabel">
<value>Default email domain</value>
<value>Dominio de correo por defecto</value>
<comment>Label for default email domain setting</comment>
</data>
<data name="DefaultEmailDomainDescription">
<value>Set the default email domain that will be used when creating new credentials.</value>
<value>Establezca el dominio de correo electrónico por defecto que se utilizará al crear nuevas credenciales.</value>
<comment>Description for default email domain setting</comment>
</data>
<data name="DefaultEmailDomainDescriptionNote">
<value>Note: Email received on private domains are end-to-end encrypted and can only be read by you, while email received on public domains can be read by anyone that knows the receiving email address.</value>
<value>Nota: El correo electrónico recibido en los dominios privados está cifrado de extremo a extremo y sólo puede ser leído por usted, mientras el correo recibido en los dominios públicos puede ser leído por cualquiera que conozca la dirección de correo receptora.</value>
<comment>Note for default email domain setting explaining the difference between private and public domains.</comment>
</data>
<data name="DefaultEmailDomainLearnMore">
<value>Learn more about the difference</value>
<value>Más información sobre la diferencia</value>
<comment>Link to documentation for default email domain setting</comment>
</data>
<data name="PrivateDomainsLabel">
<value>Private Domains</value>
<value>Dominios privados</value>
<comment>Label for private domains group</comment>
</data>
<data name="PrivateDomainsDisabledLabel">
<value>No private email domains configured</value>
<value>No hay dominios de correo privado configurados</value>
<comment>Label for private domains group when no private email domains are configured</comment>
</data>
<data name="PublicDomainsLabel">
<value>Public Domains</value>
<value>Dominios públicos</value>
<comment>Label for public domains group</comment>
</data>
<data name="AutoEmailRefreshLabel">
<value>Auto refresh emails content when new ones arrive</value>
<value>Actualiza automáticamente el contenido de los correos cuando lleguen nuevos</value>
<comment>Label for auto email refresh setting</comment>
</data>
<!-- Alias Settings Section -->
<data name="AliasSettingsTitle">
<value>Identity Generator Settings</value>
<value>Configuración del Generador de Identidades</value>
<comment>Title for identity generator settings section</comment>
</data>
<data name="AliasGenerationLanguageLabel">
<value>Language</value>
<value>Idioma</value>
<comment>Label for alias generation language setting</comment>
</data>
<data name="AliasGenerationLanguageDescription">
<value>Set the default language that will be used when generating new identities.</value>
<value>Establece el idioma por defecto que se utilizará al generar nuevas identidades.</value>
<comment>Description for alias generation language setting</comment>
</data>
<data name="AliasGenerationGenderLabel">
<value>Gender</value>
<value>Género</value>
<comment>Label for alias generation gender setting</comment>
</data>
<data name="AliasGenerationGenderDescription">
<value>Set the default gender preference for generating new identities.</value>
<value>Establecer la preferencia de género por defecto para generar nuevas identidades.</value>
<comment>Description for alias generation gender setting</comment>
</data>
<data name="RandomOption">
<value>Random</value>
<value>Aleatorio</value>
<comment>Random gender option</comment>
</data>
<data name="MaleOption">
<value>Male</value>
<value>Hombre</value>
<comment>Male gender option</comment>
</data>
<data name="FemaleOption">
<value>Female</value>
<value>Mujer</value>
<comment>Female gender option</comment>
</data>
<data name="AliasGenerationAgeRangeLabel">
<value>Age range</value>
<value>Rango de edad</value>
<comment>Label for alias generation age range setting</comment>
</data>
<data name="AliasGenerationAgeRangeDescription">
<value>Set the default age range for generating new identities. This affects the birthdate assigned to the generated identity.</value>
<value>Establecer el rango de edad por defecto para generar nuevas identidades. Esto afecta a la fecha de nacimiento asignada a la identidad generada.</value>
<comment>Description for alias generation age range setting</comment>
</data>
<!-- Clipboard Settings Section -->
<data name="ClipboardSettingsTitle">
<value>Clipboard Settings</value>
<value>Ajustes del portapapeles</value>
<comment>Title for clipboard settings section</comment>
</data>
<data name="ClipboardClearSecondsLabel">
<value>Auto-clear clipboard after copying</value>
<value>Auto-limpiar portapapeles después de copiar</value>
<comment>Label for clipboard clear seconds setting</comment>
</data>
<data name="ClipboardClearSecondsDescription">
<value>Automatically clear clipboard contents after copying passwords or other sensitive data.</value>
<value>Limpiar automáticamente el contenido del portapapeles después de copiar contraseñas u otros datos sensibles.</value>
<comment>Description for clipboard clear seconds setting</comment>
</data>
<data name="ClipboardClearDisabledOption">
<value>Disabled</value>
<value>Desactivado</value>
<comment>Option to disable clipboard clearing</comment>
</data>
<data name="ClipboardClear5SecondsOption">
<value>5 seconds</value>
<value>5 segundos</value>
<comment>Option to clear clipboard after 5 seconds</comment>
</data>
<data name="ClipboardClear10SecondsOption">
<value>10 seconds</value>
<value>10 segundos</value>
<comment>Option to clear clipboard after 10 seconds</comment>
</data>
<data name="ClipboardClear15SecondsOption">
<value>15 seconds</value>
<value>15 segundos</value>
<comment>Option to clear clipboard after 15 seconds</comment>
</data>
<data name="ClipboardClearLimitationNote">
<value>Note: clearing the clipboard in the web app is only possible when the tab is active. If the tab loses focus, the clipboard will be cleared when it comes back into focus.</value>
<value>Nota: Limpiar el portapapeles en la aplicación web sólo es posible cuando la pestaña está activa. Si la pestaña pierde el enfoque, el portapapeles se limpiará cuando vuelva a enfocarse.</value>
<comment>Note explaining limitations of clipboard clearing feature</comment>
</data>
<!-- Password Settings Section -->
<data name="PasswordSettingsTitle">
<value>Password Settings</value>
<value>Configuracion de contraseñas</value>
<comment>Title for password settings section</comment>
</data>
<!-- App Language Settings Section -->
<data name="AppLanguageTitle">
<value>Application Language</value>
<value>Idioma de la aplicación</value>
<comment>Title for app language settings section</comment>
</data>
<data name="AppLanguageLabel">
<value>Language</value>
<value>Idioma</value>
<comment>Label for app language setting</comment>
</data>
<data name="AppLanguageDescription">
<value>Set the language for the application interface.</value>
<value>Establezca el idioma de la interfaz de la aplicación.</value>
<comment>Description for app language setting</comment>
</data>
</root>

View File

@@ -71,11 +71,11 @@
</data>
<!-- Alias Settings Section -->
<data name="AliasSettingsTitle">
<value>Identity Generator Settings</value>
<value>הגדרות מחולל זהויות</value>
<comment>Title for identity generator settings section</comment>
</data>
<data name="AliasGenerationLanguageLabel">
<value>Language</value>
<value>שפה</value>
<comment>Label for alias generation language setting</comment>
</data>
<data name="AliasGenerationLanguageDescription">
@@ -83,7 +83,7 @@
<comment>Description for alias generation language setting</comment>
</data>
<data name="AliasGenerationGenderLabel">
<value>Gender</value>
<value>מגדר</value>
<comment>Label for alias generation gender setting</comment>
</data>
<data name="AliasGenerationGenderDescription">
@@ -103,11 +103,11 @@
<comment>Female gender option</comment>
</data>
<data name="AliasGenerationAgeRangeLabel">
<value>Age range</value>
<value>טווח גילים</value>
<comment>Label for alias generation age range setting</comment>
</data>
<data name="AliasGenerationAgeRangeDescription">
<value>Set the default age range for generating new identities. This affects the birthdate assigned to the generated identity.</value>
<value>הגדרת טווח הגילים כברירת המחדל ליצירת זהויות חדשות. ההגדרות הזאת משפיעה על תאריך הלידה שמוקצית לזהות שנוצרת.</value>
<comment>Description for alias generation age range setting</comment>
</data>
<!-- Clipboard Settings Section -->

View File

@@ -59,57 +59,57 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PageTitle" xml:space="preserve">
<value>Import / Export</value>
<value>Importar / Exportar</value>
<comment>Page title</comment>
</data>
<data name="PageDescription" xml:space="preserve">
<value>On this page you can import and export your vault.</value>
<value>En esta página puede importar y exportar su bóveda.</value>
<comment>Page description</comment>
</data>
<data name="ImportSectionTitle" xml:space="preserve">
<value>Import passwords</value>
<value>Importar contraseñas</value>
<comment>Import section title</comment>
</data>
<data name="ImportSectionDescription" xml:space="preserve">
<value>Select a service to import from. If you are using a service that is not listed here and would like to see it supported, please raise an issue on &lt;a href="https://github.com/aliasvault/aliasvault/issues" target="_blank" class="text-primary-500 hover:text-primary-700"&gt;GitHub&lt;/a&gt; or contact us.</value>
<value>Seleccione un servicio desde el que importar. Si estás usando un servicio que no aparece aquí y te gustaría verlo soportado, por favor plantea un problema en &lt;a href="https://github.com/aliasvault/aliasvault/issues" target="_blank" class="text-primary-500 hover:text-primary-700"&gt;GitHub&lt;/a&gt; o contáctanos.</value>
<comment>Import section description with HTML link</comment>
</data>
<data name="ExportSectionTitle" xml:space="preserve">
<value>Export vault</value>
<value>Exportar bóveda</value>
<comment>Export section title</comment>
</data>
<data name="ExportSectionDescription" xml:space="preserve">
<value>If you want to export your AliasVault credentials to another AliasVault server (e.g. from cloud to self-hosted or vice-versa) or to another service altogether, you can export it here. Note that all exports are unencrypted so store it in a safe place and delete it when you no longer need it.</value>
<value>Si desea exportar sus credenciales de AliasVault a otro servidor AliasVault (p.e. de la nube a una instancia Self-hosted o viceversa) o a otro servicio en total, puedes exportarlo aquí. Tenga en cuenta que todas las exportaciones no están cifradas, así que guárdelas en un lugar seguro y borrarlas cuando ya no las necesites.</value>
<comment>Export section description</comment>
</data>
<data name="ExportCsvButton" xml:space="preserve">
<value>Export vault to unencrypted CSV file</value>
<value>Exportar bóveda a archivo CSV sin cifrar</value>
<comment>Button to export as CSV</comment>
</data>
<data name="ExportSqliteButton" xml:space="preserve">
<value>Export vault to unencrypted SQLite file</value>
<value>Exportar bóveda a archivo SQLite sin cifrar</value>
<comment>Button to export as SQLite</comment>
</data>
<data name="ExportConfirmTitle" xml:space="preserve">
<value>Export vault</value>
<value>Exportar bóveda</value>
<comment>Export confirmation dialog title</comment>
</data>
<data name="ExportWarningMessage" xml:space="preserve">
<value>Warning: Exporting your vault to an unencrypted file will expose all of your passwords and sensitive information in plain text. Only do this on trusted computers and ensure you:
<value>Advertencia: Exportando su bóveda a un archivo no cifrado expondrá todas sus contraseñas e información sensible en texto plano. Solo haga esto en ordenadores de confianza y asegúrese de que:
Store the exported file in a secure location
Delete the file when you no longer need it
• Never share the exported file with others
Almacene el archivo exportado en una ubicación segura
Elimine el archivo cuando ya no lo necesite
• Nunca comparta el archivo exportado con otros
Are you sure you want to continue with the export?</value>
¿Está seguro de que desea continuar con la exportación?</value>
<comment>Export warning confirmation message</comment>
</data>
<data name="ResetVaultSectionTitle" xml:space="preserve">
<value>Reset Vault</value>
<value>Restablecer bóveda</value>
<comment>Reset vault section title</comment>
</data>
<data name="ResetVaultSectionDescription" xml:space="preserve">
<value>This option allows you to completely empty your vault while keeping your account and email aliases. Use this if you want to start fresh after importing data from another password manager or if you want to clear all existing credentials to start over.</value>
<value>Esta opción le permite vaciar completamente su bóveda manteniendo su cuenta y alias de correo electrónico. Utilice esto si desea iniciar fresco después de importar datos de otro gestor de contraseñas o si desea borrar todas las credenciales existentes para empezar de nuevo.</value>
<comment>Reset vault section description</comment>
</data>
</root>

View File

@@ -59,19 +59,19 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PageTitle" xml:space="preserve">
<value>Security settings</value>
<value>Ajustes de seguridad</value>
<comment>Title for the security settings page</comment>
</data>
<data name="PageDescription" xml:space="preserve">
<value>Configure security settings.</value>
<value>Configurar ajustes de seguridad.</value>
<comment>Description for the security settings page</comment>
</data>
<data name="RefreshButton" xml:space="preserve">
<value>Refresh</value>
<value>Refrescar</value>
<comment>Refresh button text</comment>
</data>
<data name="BreadcrumbTitle" xml:space="preserve">
<value>Security settings</value>
<value>Ajustes de seguridad</value>
<comment>Breadcrumb title for security settings</comment>
</data>
</root>

View File

@@ -59,19 +59,19 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="WelcomeTitle" xml:space="preserve">
<value>Welcome to AliasVault</value>
<value>Bienvenido a AliasVault</value>
<comment>Welcome title for new vault creation</comment>
</data>
<data name="CreatingDescription" xml:space="preserve">
<value>Your new encrypted vault is being initialized. This process may take a moment. Please wait.</value>
<value>Su nueva bóveda cifrada está siendo inicializada. Este proceso puede tardar un momento. Por favor espere.</value>
<comment>Description for vault creation process</comment>
</data>
<data name="SaveFailedError" xml:space="preserve">
<value>Vault creation successful but failed to save to server. Please refresh the page and try again or contact support.</value>
<value>Creación de la bóveda exitosa pero no se pudo guardar en el servidor. Por favor, actualiza la página e inténtalo de nuevo o contacta con el soporte técnico.</value>
<comment>Error message when vault creation succeeds but save fails</comment>
</data>
<data name="CreationFailedError" xml:space="preserve">
<value>Vault creation failed. Please try again or contact support.</value>
<value>La creación de la bóveda ha fallado. Por favor, inténtalo de nuevo o contacta con soporte.</value>
<comment>Error message when vault creation fails</comment>
</data>
</root>

View File

@@ -59,11 +59,11 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ErrorTitle" xml:space="preserve">
<value>Vault decryption error.</value>
<value>Error al descifrar la bóveda.</value>
<comment>Title for vault decryption error</comment>
</data>
<data name="ErrorDescription" xml:space="preserve">
<value>An error occurred while locally decrypting your vault. Your data is not accessible at this moment. Please try again (later) or contact support.</value>
<value>Se ha producido un error al descifrar localmente tu bóveda. Tus datos no están disponibles en este momento. Por favor, inténtalo de nuevo (más tarde) o contacta con soporte.</value>
<comment>Description for vault decryption error</comment>
</data>
</root>

View File

@@ -59,47 +59,47 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="UpgradeVaultTitle" xml:space="preserve">
<value>Upgrade Vault</value>
<value>Actualizar bóveda</value>
<comment>Title for vault upgrade process</comment>
</data>
<data name="UpgradeDescription" xml:space="preserve">
<value>AliasVault has been updated and your vault needs to be upgraded. This should only take a few seconds.</value>
<value>AliasVault ha sido actualizado y tu bóveda necesita ser actualizada. Esto solo debería tardar unos segundos.</value>
<comment>Description of vault upgrade process</comment>
</data>
<data name="VersionInformationTitle" xml:space="preserve">
<value>Version Information</value>
<value>Información de versión</value>
<comment>Title for version information section</comment>
</data>
<data name="UpgradeRequiredDescription" xml:space="preserve">
<value>An upgrade is required to support the following changes: {0}</value>
<value>Es necesario actualizar para soportar los siguientes cambios: {0}</value>
<comment>Description of upgrade requirements with changes placeholder</comment>
</data>
<data name="NoDescriptionAvailable" xml:space="preserve">
<value>No description available for this version.</value>
<value>Ninguna descripción disponible para esta versión.</value>
<comment>Fallback text when version description is not available</comment>
</data>
<data name="YourVaultLabel" xml:space="preserve">
<value>Your vault version:</value>
<value>Tu versión de bóveda:</value>
<comment>Label for current vault version</comment>
</data>
<data name="NewVersionLabel" xml:space="preserve">
<value>New available version:</value>
<value>Nueva versión disponible:</value>
<comment>Label for new vault version</comment>
</data>
<data name="StartUpgradeButton" xml:space="preserve">
<value>Start upgrade process</value>
<value>Iniciar proceso de actualización</value>
<comment>Button text to start the upgrade process</comment>
</data>
<data name="UpgradeSuccessMessage" xml:space="preserve">
<value>Vault upgrade successful.</value>
<value>Actualización de bóveda correcta.</value>
<comment>Success message after successful vault upgrade</comment>
</data>
<data name="UpgradeSuccessButSaveFailedError" xml:space="preserve">
<value>Database upgrade successful but failed to save to server. Please try again or contact support.</value>
<value>Actualización de la base de datos exitosa pero no se pudo guardar en el servidor. Por favor, inténtalo de nuevo o contacta con soporte.</value>
<comment>Error message when upgrade succeeds but save fails</comment>
</data>
<data name="UpgradeFailedError" xml:space="preserve">
<value>Database upgrade failed. Please try again or contact support.</value>
<value>Error al actualizar la base de datos. Inténtalo de nuevo o contacta con soporte.</value>
<comment>Error message when upgrade fails</comment>
</data>
</root>

View File

@@ -59,11 +59,11 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Vault decryption in progress</value>
<value>Descifrado de bóveda en curso</value>
<comment>Title for vault decryption progress</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Please wait while your vault is initialized. This may take a moment.</value>
<value>Por favor, espere mientras su bóveda está inicializada. Esto puede tardar un momento.</value>
<comment>Description for vault decryption progress</comment>
</data>
</root>

View File

@@ -59,15 +59,15 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PageTitle" xml:space="preserve">
<value>Sync</value>
<value>Sincronizar</value>
<comment>Page title for the sync page</comment>
</data>
<data name="SwitchAccountsText" xml:space="preserve">
<value>Switch accounts?</value>
<value>¿Cambiar de cuenta?</value>
<comment>Text before logout link</comment>
</data>
<data name="LogoutLink" xml:space="preserve">
<value>Logout</value>
<value>Cerrar sesión</value>
<comment>Link text for logout</comment>
</data>
</root>

View File

@@ -21,19 +21,19 @@
</xsd:schema>
<!-- Step titles -->
<data name="WelcomeStepTitle">
<value>Welcome to AliasVault</value>
<value>Bienvenido a AliasVault</value>
<comment>Title for the welcome step</comment>
</data>
<data name="HowAliasVaultWorksStepTitle">
<value>How AliasVault Works</value>
<value>Cómo funciona AliasVault</value>
<comment>Title for the how it works step</comment>
</data>
<data name="TipsStepTitle">
<value>Tips</value>
<value>Consejos</value>
<comment>Title for the tips step</comment>
</data>
<data name="GetStartedStepTitle">
<value>Get Started</value>
<value>Empezar</value>
<comment>Title for the get started step</comment>
</data>
<data name="TutorialStepTitle">
@@ -42,89 +42,90 @@
</data>
<!-- Welcome step content -->
<data name="WelcomeMessage">
<value>Your vault has been successfully created! Protect your online privacy by creating unique aliases for each service you sign up for. Let's learn how AliasVault works and then create your first secure alias.</value>
<value>¡Tu bóveda ha sido creada con éxito! Protege tu privacidad en línea creando alias únicos para cada servicio en el que te registras. Aprendamos cómo funciona AliasVault y luego crea tu primer alias seguro.</value>
<comment>Welcome message on the first tutorial step</comment>
</data>
<!-- How it works step content -->
<data name="HowItWorksIntro">
<value>When you need to sign up for a new service:</value>
<value>Cuando necesitas registrarte en un nuevo servicio:</value>
<comment>Introduction text for how it works step</comment>
</data>
<data name="HowItWorksStep1">
<value>AliasVault generates a random identity with a secure private email address</value>
<value>AliasVault genera una identidad aleatoria con una dirección de correo electrónico privada segura</value>
<comment>First step in how it works explanation</comment>
</data>
<data name="HowItWorksStep2">
<value>Use this information to sign up for the service</value>
<value>Utiliza esta información para registrarte en el servicio</value>
<comment>Second step in how it works explanation</comment>
</data>
<data name="HowItWorksStep3">
<value>Received emails show up in this app and can be opened in your browser</value>
<value>Los correos recibidos aparecen en esta aplicación y pueden abrirse en tu navegador</value>
<comment>Third step in how it works explanation</comment>
</data>
<data name="HowItWorksStep4">
<value>Your real email address and other personal information stay private</value>
<value>Tu dirección de correo electrónico real y otros datos personales permanecen privados</value>
<comment>Fourth step in how it works explanation</comment>
</data>
<!-- Tips step content -->
<data name="MasterPasswordTipTitle">
<value>Keep Your Master Password Safe</value>
<value>Mantén tu contraseña maestra segura</value>
<comment>Title for master password tip</comment>
</data>
<data name="MasterPasswordTipContent">
<value>Your master password is required to decrypt your vault. Never share it with anyone and store it in a secure location. Warning: If you lose your master password, your data cannot be recovered - not even by our team.</value>
<value>Tu contraseña maestra es necesaria para descifrar tu bóveda. Nunca la compartas con nadie y la guardes en una ubicación segura. Aviso: Si pierde su contraseña maestra, sus datos no pueden ser recuperados
- ni siquiera por nuestro equipo.</value>
<comment>Content for master password tip</comment>
</data>
<data name="TwoFactorTipTitle">
<value>Enable Two-Factor Authentication In Security Settings</value>
<value>Habilita la autenticación de doble factores en los ajustes de seguridad</value>
<comment>Title for two-factor authentication tip</comment>
</data>
<data name="TwoFactorTipContent">
<value>Two-factor authentication adds an extra layer of security to your account. It requires you to enter a code from your authenticator app or provide a recovery code before your encrypted vault can be accessed.</value>
<value>La autenticación de doble factor añade una capa extra de seguridad a su cuenta. Requiere introducir un código de su aplicación de autenticación o que proporcionar un código de recuperación antes de que pueda acceder a su bóveda cifrada.</value>
<comment>Content for two-factor authentication tip</comment>
</data>
<data name="ExtensionsAppsTipTitle">
<value>Browser Extensions and Mobile Apps</value>
<value>Extensiones del navegador y aplicaciones móviles</value>
<comment>Title for browser extensions and mobile apps tip</comment>
</data>
<data name="ExtensionsAppsTipContent">
<value>Install the AliasVault browser extension and mobile app to create aliases and autofill forms directly from your browser and smartphone.</value>
<value>Instala la extensión de AliasVault para tu navegador y la aplicación móvil para crear alias y autocompletar formularios directamente desde tu navegador y smartphone.</value>
<comment>Content for browser extensions and mobile apps tip</comment>
</data>
<!-- Create first identity step content -->
<data name="ReadyToStartTitle">
<value>Ready to Start?</value>
<value>¿Listo para empezar?</value>
<comment>Title for ready to start section</comment>
</data>
<data name="ReadyToStartMessage">
<value>Now that you know how AliasVault works, let's create your first secure identity!</value>
<value>Ahora que sabes cómo funciona AliasVault ¡vamos a crear tu primera identidad segura!</value>
<comment>Message encouraging user to create first identity</comment>
</data>
<data name="CreateFirstIdentityButton">
<value>Create Your First Identity</value>
<value>Crea tu primera identidad</value>
<comment>Button text for creating first identity</comment>
</data>
<!-- Navigation buttons -->
<data name="ContinueButton">
<value>Continue</value>
<value>Continuar</value>
<comment>Continue button text</comment>
</data>
<data name="GetStartedButton">
<value>Get Started</value>
<value>Empezar</value>
<comment>Get started button text</comment>
</data>
<!-- Loading and status messages -->
<data name="FinishingTutorialMessage">
<value>Finishing tutorial...</value>
<value>Finalizando el tutorial...</value>
<comment>Loading message when finishing tutorial</comment>
</data>
<!-- Extension and app labels -->
<data name="ComingSoonLabel">
<value>Coming Soon</value>
<value>Próximamente</value>
<comment>Label for features coming soon</comment>
</data>
<data name="SoonSuffix">
<value>(Soon)</value>
<value>(Próximamente)</value>
<comment>Suffix indicating feature coming soon</comment>
</data>
</root>

View File

@@ -119,39 +119,39 @@
</resheader>
<!-- Common UI elements -->
<data name="Save" xml:space="preserve">
<value>Save</value>
<value>Guardar</value>
<comment>Button text for saving changes</comment>
</data>
<data name="Cancel" xml:space="preserve">
<value>Cancel</value>
<value>Cancelar</value>
<comment>Button text for canceling an action</comment>
</data>
<data name="Delete" xml:space="preserve">
<value>Delete</value>
<value>Eliminar</value>
<comment>Button text for deleting an item</comment>
</data>
<data name="Edit" xml:space="preserve">
<value>Edit</value>
<value>Editar</value>
<comment>Button text for editing an item</comment>
</data>
<data name="Close" xml:space="preserve">
<value>Close</value>
<value>Cerrar</value>
<comment>Button text for closing a dialog or modal</comment>
</data>
<data name="Back" xml:space="preserve">
<value>Back</value>
<value>Atrás</value>
<comment>Button text for going back</comment>
</data>
<data name="Next" xml:space="preserve">
<value>Next</value>
<value>Siguiente</value>
<comment>Button text for proceeding to the next step</comment>
</data>
<data name="Loading" xml:space="preserve">
<value>Loading...</value>
<value>Cargando...</value>
<comment>Loading message displayed during async operations</comment>
</data>
<data name="Yes" xml:space="preserve">
<value>Yes</value>
<value>Si</value>
<comment>Confirmation button text</comment>
</data>
<data name="No" xml:space="preserve">
@@ -159,86 +159,86 @@
<comment>Rejection button text</comment>
</data>
<data name="Ok" xml:space="preserve">
<value>OK</value>
<value>Aceptar</value>
<comment>OK button text</comment>
</data>
<data name="Continue" xml:space="preserve">
<value>Continue</value>
<value>Continuar</value>
<comment>Button text to continue with an action</comment>
</data>
<data name="Confirm" xml:space="preserve">
<value>Confirm</value>
<value>Confirmar</value>
<comment>Button text to confirm an action</comment>
</data>
<data name="Refresh" xml:space="preserve">
<value>Refresh</value>
<value>Refrescar</value>
<comment>Button text to refresh content</comment>
</data>
<!-- Common form elements -->
<data name="Email" xml:space="preserve">
<value>Email</value>
<value>Correo</value>
<comment>Label for email input field</comment>
</data>
<data name="Password" xml:space="preserve">
<value>Password</value>
<value>Contraseña</value>
<comment>Label for password input field</comment>
</data>
<data name="Username" xml:space="preserve">
<value>Username</value>
<value>Nombre de usuario</value>
<comment>Label for username input field</comment>
</data>
<data name="Name" xml:space="preserve">
<value>Name</value>
<value>Nombre</value>
<comment>Label for name input field</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Description</value>
<value>Descripción</value>
<comment>Label for description input field</comment>
</data>
<data name="Title" xml:space="preserve">
<value>Title</value>
<value>Título</value>
<comment>Label for title input field</comment>
</data>
<data name="Website" xml:space="preserve">
<value>Website</value>
<value>Sitio Web</value>
<comment>Label for website input field</comment>
</data>
<data name="Search" xml:space="preserve">
<value>Search</value>
<value>Buscar</value>
<comment>Label for search input field</comment>
</data>
<!-- Common error messages -->
<data name="ErrorGeneric" xml:space="preserve">
<value>An error occurred. Please try again.</value>
<value>Ha ocurrido un error. Por favor, inténtalo de nuevo.</value>
<comment>Generic error message</comment>
</data>
<data name="ErrorUnknown" xml:space="preserve">
<value>An unknown error occurred. Please try again.</value>
<value>Se ha producido un error desconocido. Por favor, inténtelo de nuevo.</value>
<comment>Generic unknown error message</comment>
</data>
<data name="ErrorValidation" xml:space="preserve">
<value>Please correct the errors below.</value>
<value>Por favor, corrija los siguientes errores.</value>
<comment>Validation error message</comment>
</data>
<data name="ErrorRequired" xml:space="preserve">
<value>This field is required.</value>
<value>Se requiere este campo.</value>
<comment>Required field validation error</comment>
</data>
<data name="ErrorInvalidEmail" xml:space="preserve">
<value>Please enter a valid email address.</value>
<value>Por favor, introduzca una dirección de correo válida.</value>
<comment>Invalid email validation error</comment>
</data>
<data name="ErrorPasswordMismatch" xml:space="preserve">
<value>Passwords do not match.</value>
<value>Las contraseñas no coinciden.</value>
<comment>Password confirmation mismatch error</comment>
</data>
<!-- Common status messages -->
<data name="Success" xml:space="preserve">
<value>Success</value>
<value>Correcto</value>
<comment>Success status message</comment>
</data>
<data name="Warning" xml:space="preserve">
<value>Warning</value>
<value>Advertencia</value>
<comment>Warning status message</comment>
</data>
<data name="Error" xml:space="preserve">
@@ -246,66 +246,66 @@
<comment>Error status message</comment>
</data>
<data name="Info" xml:space="preserve">
<value>Info</value>
<value>Información</value>
<comment>Information status message</comment>
</data>
<!-- Loading screen messages -->
<data name="RefreshPageText" xml:space="preserve">
<value>If loading seems stuck, you can click the button below to refresh the page.</value>
<value>Si la carga parece atascada, puede hacer clic en el botón de abajo para actualizar la página.</value>
<comment>Text shown above refresh button on loading screen</comment>
</data>
<!-- Validation error messages for forms -->
<data name="ErrorPasswordMinLength" xml:space="preserve">
<value>The new password must be at least 10 characters long.</value>
<value>La nueva contraseña debe tener al menos 10 caracteres.</value>
<comment>Error message for password minimum length validation</comment>
</data>
<data name="ErrorPasswordsDoNotMatch" xml:space="preserve">
<value>The new passwords do not match.</value>
<value>Las nuevas contraseñas no coinciden.</value>
<comment>Error message when password confirmation doesn't match</comment>
</data>
<data name="ErrorPasswordMinLengthGeneric" xml:space="preserve">
<value>Password must be at least 10 characters long.</value>
<value>La contraseña debe tener al menos 10 caracteres.</value>
<comment>Generic error message for password minimum length validation</comment>
</data>
<data name="ErrorPasswordsDoNotMatchGeneric" xml:space="preserve">
<value>Passwords do not match.</value>
<value>Las contraseñas no coinciden.</value>
<comment>Generic error message when passwords don't match</comment>
</data>
<data name="ErrorMustAcceptTerms" xml:space="preserve">
<value>You must accept the terms and conditions.</value>
<value>Debe aceptar los términos y condiciones.</value>
<comment>Error message for terms and conditions acceptance</comment>
</data>
<data name="ErrorSecretKeyRequired" xml:space="preserve">
<value>Secret key is required</value>
<value>Clave secreta necesaria</value>
<comment>Error message when secret key is required</comment>
</data>
<data name="ErrorUsernameRequired" xml:space="preserve">
<value>Username is required</value>
<value>Nombre de usuario requerido</value>
<comment>Error message when username is required</comment>
</data>
<data name="ErrorPasswordRequired" xml:space="preserve">
<value>Password is required</value>
<value>Se requiere contraseña</value>
<comment>Error message when password is required</comment>
</data>
<!-- General UI text -->
<data name="Or" xml:space="preserve">
<value>or</value>
<value>o</value>
<comment>Divider text between options</comment>
</data>
<data name="LockVault" xml:space="preserve">
<value>Lock vault</value>
<value>Bloquear bóveda</value>
<comment>Tooltip text for lock vault button</comment>
</data>
<data name="Home" xml:space="preserve">
<value>Home</value>
<value>Inicio</value>
<comment>Home breadcrumb text</comment>
</data>
<data name="Notes" xml:space="preserve">
<value>Notes</value>
<value>Notas</value>
<comment>Notes section heading</comment>
</data>
<data name="SyncVaultData" xml:space="preserve">
<value>Sync vault data</value>
<value>Sincronizar datos de bóveda</value>
<comment>Tooltip text for sync vault data button</comment>
</data>
</root>

View File

@@ -60,45 +60,45 @@
</resheader>
<!-- Password validation messages -->
<data name="PasswordMinLength" xml:space="preserve">
<value>The new password must be at least 10 characters long.</value>
<value>La nueva contraseña debe tener al menos 10 caracteres.</value>
<comment>Error message for password minimum length validation</comment>
</data>
<data name="PasswordsDoNotMatch" xml:space="preserve">
<value>The new passwords do not match.</value>
<value>Las nuevas contraseñas no coinciden.</value>
<comment>Error message when password confirmation doesn't match</comment>
</data>
<data name="PasswordMinLengthGeneric" xml:space="preserve">
<value>Password must be at least 10 characters long.</value>
<value>La contraseña debe tener al menos 10 caracteres.</value>
<comment>Generic error message for password minimum length validation</comment>
</data>
<data name="PasswordsDoNotMatchGeneric" xml:space="preserve">
<value>Passwords do not match.</value>
<value>Las contraseñas no coinciden.</value>
<comment>Generic error message when passwords don't match</comment>
</data>
<!-- Required field validation messages -->
<data name="UsernameRequired" xml:space="preserve">
<value>Username is required</value>
<value>Nombre de usuario requerido</value>
<comment>Error message when username is required</comment>
</data>
<data name="PasswordRequired" xml:space="preserve">
<value>Password is required</value>
<value>Se requiere contraseña</value>
<comment>Error message when password is required</comment>
</data>
<data name="SecretKeyRequired" xml:space="preserve">
<value>Secret key is required</value>
<value>Clave secreta necesaria</value>
<comment>Error message when secret key is required</comment>
</data>
<data name="ServiceNameRequired" xml:space="preserve">
<value>Service name is required</value>
<value>Se requiere Nombre del servicio</value>
<comment>Error message when service name is required</comment>
</data>
<data name="FieldRequired" xml:space="preserve">
<value>This field is required</value>
<value>Se requiere este campo</value>
<comment>Generic error message when a field is required</comment>
</data>
<!-- Terms and conditions -->
<data name="MustAcceptTerms" xml:space="preserve">
<value>You must accept the terms and conditions.</value>
<value>Debe aceptar los términos y condiciones.</value>
<comment>Error message for terms and conditions acceptance</comment>
</data>
</root>

View File

@@ -32,7 +32,9 @@ public class LanguageService(
{
new LanguageConfig("de", "Deutsch", "🇩🇪"),
new LanguageConfig("en", "English", "🇺🇸"),
new LanguageConfig("es", "Español", "🇪🇸"),
new LanguageConfig("fi", "Suomi", "🇫🇮"),
new LanguageConfig("fr", "Français", "🇫🇷"),
new LanguageConfig("he", "עברית", "🇮🇱"),
new LanguageConfig("it", "Italiano", "🇮🇹"),
new LanguageConfig("nl", "Nederlands", "🇳🇱"),

Some files were not shown because too many files have changed in this diff Show More