Files
apocapoc-api/internal/i18n/locales/es.json
T
david 5d92820591 Remove timezone from User model and pass as request parameter
Timezone is now sent from the client on each request that needs it,
instead of storing it in the database. This simplifies the model and
allows timezone to be dynamic (useful for traveling users).

Changes:
- Remove timezone field from User entity
- Remove timezone from user registration
- GET /habits/today now requires ?timezone= query param
- Add migration to drop timezone column from database
- Update related tests
2025-11-29 16:18:04 +01:00

112 lines
7.4 KiB
JSON

{
"errors": {
"invalid_request_body": "Cuerpo de solicitud inválido",
"email_already_registered": "El correo electrónico ya está registrado",
"registration_closed": "El registro está actualmente cerrado",
"failed_register_user": "Error al registrar usuario",
"invalid_credentials": "Correo electrónico o contraseña inválidos",
"email_not_verified": "Por favor verifica tu correo electrónico antes de iniciar sesión",
"failed_login": "Error al iniciar sesión",
"failed_generate_token": "Error al generar token",
"failed_create_refresh_token": "Error al crear token de actualización",
"failed_save_refresh_token": "Error al guardar token de actualización",
"invalid_expired_refresh_token": "Token de actualización inválido o expirado",
"failed_refresh_token": "Error al actualizar token",
"refresh_token_not_found": "Token de actualización no encontrado",
"invalid_refresh_token": "Token de actualización inválido",
"user_not_authenticated": "Usuario no autenticado",
"failed_get_user": "Error al obtener usuario",
"failed_get_habits": "Error al obtener hábitos",
"failed_create_habit": "Error al crear hábito",
"habit_not_found": "Hábito no encontrado",
"access_denied": "Acceso denegado",
"failed_get_habit": "Error al obtener hábito",
"invalid_input": "Entrada inválida",
"failed_update_habit": "Error al actualizar hábito",
"failed_archive_habit": "Error al archivar hábito",
"failed_get_habit_entries": "Error al obtener entradas de hábito",
"invalid_date_format": "Formato de fecha inválido (usa AAAA-MM-DD)",
"invalid_page_parameter": "Parámetro 'page' inválido",
"invalid_limit_parameter": "Parámetro 'limit' inválido (debe ser 1-100)",
"pagination_required": "Se requiere paginación: proporciona el parámetro 'limit' o usa un rango de fechas ≤ 1 año",
"invalid_from_date_format": "Formato de fecha 'from' inválido (usa AAAA-MM-DD)",
"invalid_to_date_format": "Formato de fecha 'to' inválido (usa AAAA-MM-DD)",
"habit_already_marked": "El hábito ya está marcado para esta fecha",
"failed_mark_habit": "Error al marcar hábito",
"habit_entry_not_found": "Entrada de hábito no encontrada",
"failed_unmark_habit": "Error al desmarcar hábito",
"invalid_expired_verification_token": "Token de verificación inválido o expirado",
"email_already_verified": "El correo electrónico ya está verificado",
"failed_verify_email": "Error al verificar correo electrónico",
"invalid_email": "Correo electrónico inválido",
"user_not_found": "Usuario no encontrado",
"failed_send_verification_email": "Error al enviar correo de verificación",
"email_not_verified_reset": "Por favor verifica tu correo electrónico antes de restablecer la contraseña",
"failed_send_reset_email": "Error al enviar correo de restablecimiento",
"invalid_token_or_password": "Token inválido o expirado, o no se cumplen los requisitos de contraseña",
"failed_reset_password": "Error al restablecer contraseña",
"failed_delete_user": "Error al eliminar usuario",
"failed_get_stats": "Error al obtener estadísticas",
"timezone_required": "La zona horaria es requerida",
"invalid_timezone": "Zona horaria inválida (debe ser una zona horaria IANA válida)"
},
"success": {
"registration_with_verification": "Registro exitoso. Por favor revisa tu correo electrónico para verificar tu cuenta.",
"registration_without_verification": "Registro exitoso. Ya puedes iniciar sesión.",
"logged_out": "Sesión cerrada exitosamente",
"email_verified": "Correo electrónico verificado exitosamente",
"verification_email_sent": "Correo de verificación enviado exitosamente",
"password_reset_email_sent": "Correo de restablecimiento de contraseña enviado exitosamente",
"password_reset": "Contraseña restablecida exitosamente",
"user_deleted": "Usuario y todos los datos asociados eliminados exitosamente"
},
"validation": {
"email_required": "el email es requerido",
"email_invalid_format": "el email debe ser una dirección de correo válida",
"email_too_long": "el email no debe exceder 254 caracteres",
"password_required": "la password es requerida",
"password_min_length": "la password debe tener al menos 8 caracteres",
"password_max_length": "la password no debe exceder 128 caracteres",
"password_uppercase": "la password debe contener al menos una letra mayúscula",
"password_lowercase": "la password debe contener al menos una letra minúscula",
"password_digit": "la password debe contener al menos un dígito",
"password_special_char": "la password debe contener al menos un carácter especial (!@#$%^&*)",
"timezone_required": "la timezone es requerida",
"timezone_invalid": "la timezone no es una zona horaria IANA válida",
"name_required": "el name es requerido",
"name_too_long": "el name no debe exceder 255 caracteres",
"type_invalid": "el type debe ser uno de: BOOLEAN, COUNTER, VALUE",
"frequency_invalid": "la frequency debe ser una de: DAILY, WEEKLY, MONTHLY",
"specific_days_required": "specific_days es requerido para frecuencia WEEKLY",
"specific_days_invalid": "specific_days debe contener valores entre 0-6 (0=Domingo, 6=Sábado)",
"specific_dates_required": "specific_dates es requerido para frecuencia MONTHLY",
"specific_dates_invalid": "specific_dates debe contener valores entre 1-31",
"target_value_required": "target_value es requerido para tipo VALUE",
"target_value_positive": "target_value debe ser positivo"
},
"emails": {
"verify_email_subject": "Verifica tu dirección de correo electrónico",
"verify_email_title": "¡Bienvenido! Por favor verifica tu correo electrónico",
"verify_email_body": "Gracias por registrarte. Por favor haz clic en el enlace a continuación para verificar tu dirección de correo electrónico:",
"verify_email_link": "Verificar correo electrónico",
"verify_email_expiry": "Este enlace expirará en 24 horas.",
"verify_email_ignore": "Si no creaste una cuenta, puedes ignorar este correo de forma segura.",
"resend_verification_subject": "Verifica tu dirección de correo electrónico",
"resend_verification_title": "Verifica tu dirección de correo electrónico",
"resend_verification_body": "Por favor haz clic en el enlace a continuación para verificar tu dirección de correo electrónico:",
"resend_verification_link": "Verificar correo electrónico",
"resend_verification_expiry": "Este enlace expirará en 24 horas.",
"resend_verification_ignore": "Si no solicitaste esto, puedes ignorar este correo de forma segura.",
"password_reset_subject": "Solicitud de restablecimiento de contraseña",
"password_reset_title": "Solicitud de restablecimiento de contraseña",
"password_reset_body": "Has solicitado restablecer tu contraseña. Por favor haz clic en el enlace a continuación:",
"password_reset_link": "Restablecer contraseña",
"password_reset_expiry": "Este enlace expirará en 1 hora.",
"password_reset_ignore": "Si no solicitaste esto, puedes ignorar este correo de forma segura.",
"welcome_subject": "¡Bienvenido a Apocapoc!",
"welcome_title": "¡Bienvenido a Apocapoc!",
"welcome_body": "Tu correo electrónico ha sido verificado exitosamente. Ya puedes comenzar a usar todas las funcionalidades de Apocapoc.",
"welcome_enjoy": "¡Disfruta construyendo mejores hábitos!"
}
}