304 lines
13 KiB
TypeScript
304 lines
13 KiB
TypeScript
|
|
import demoEs from "./demo-es"
|
||
|
|
import { Translations } from "./en"
|
||
|
|
|
||
|
|
const es: Translations = {
|
||
|
|
common: {
|
||
|
|
ok: "OK",
|
||
|
|
cancel: "Cancelar",
|
||
|
|
save: "Guardar",
|
||
|
|
back: "Volver",
|
||
|
|
logOut: "Cerrar sesión",
|
||
|
|
copied: "Copiado",
|
||
|
|
},
|
||
|
|
welcomeScreen: {
|
||
|
|
postscript:
|
||
|
|
"psst — Esto probablemente no es cómo se va a ver tu app. (A menos que tu diseñador te haya enviado estas pantallas, y en ese caso, ¡lánzalas en producción!)",
|
||
|
|
readyForLaunch: "Tu app, casi lista para su lanzamiento",
|
||
|
|
exciting: "(¡ohh, esto es emocionante!)",
|
||
|
|
letsGo: "¡Vamos!",
|
||
|
|
},
|
||
|
|
errorScreen: {
|
||
|
|
title: "¡Algo salió mal!",
|
||
|
|
friendlySubtitle:
|
||
|
|
"Esta es la pantalla que verán tus usuarios en producción cuando haya un error. Vas a querer personalizar este mensaje (que está ubicado en `app/i18n/es.ts`) y probablemente también su diseño (`app/screens/ErrorScreen`). Si quieres eliminarlo completamente, revisa `app/app.tsx` y el componente <ErrorBoundary>.",
|
||
|
|
reset: "REINICIA LA APP",
|
||
|
|
traceTitle: "Error desde %{name}",
|
||
|
|
},
|
||
|
|
emptyStateComponent: {
|
||
|
|
generic: {
|
||
|
|
heading: "Muy vacío... muy triste",
|
||
|
|
content:
|
||
|
|
"No se han encontrado datos por el momento. Intenta darle clic en el botón para refrescar o recargar la app.",
|
||
|
|
button: "Intentemos de nuevo",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
|
||
|
|
errors: {
|
||
|
|
invalidEmail: "Email inválido.",
|
||
|
|
},
|
||
|
|
authErrors: {
|
||
|
|
timeout: "Tiempo de espera agotado. Por favor, inténtelo de nuevo.",
|
||
|
|
cannotConnect: "No se puede conectar al servidor. Por favor, verifique su red.",
|
||
|
|
serverError: "Error del servidor. Por favor, inténtelo más tarde.",
|
||
|
|
badData: "Respuesta inválida del servidor.",
|
||
|
|
unknownError: "Se produjo un error desconocido.",
|
||
|
|
E001: "El nombre de usuario ya existe.",
|
||
|
|
E002: "El correo electrónico ya está registrado.",
|
||
|
|
E003: "Código de referencia inválido.",
|
||
|
|
E004: "No hay solicitud de registro pendiente.",
|
||
|
|
E005: "Código de verificación inválido.",
|
||
|
|
E006: "Código de referencia ya vinculado.",
|
||
|
|
E007: "No puedes usar tu propio código de referencia.",
|
||
|
|
E011: "Correo electrónico o contraseña inválidos.",
|
||
|
|
E012: "Cuenta bloqueada temporalmente. Por favor, inténtelo más tarde.",
|
||
|
|
E013: "No hay solicitud de inicio de sesión pendiente.",
|
||
|
|
E014: "El usuario no existe o ha sido deshabilitado.",
|
||
|
|
E015: "Código de verificación inválido.",
|
||
|
|
E016: "Autenticación de Telegram inválida.",
|
||
|
|
E017: "Formato de datos de Telegram inválido.",
|
||
|
|
E018: "Autenticación de Google fallida.",
|
||
|
|
E019: "Por favor, proporcione el token de Google.",
|
||
|
|
E021: "La contraseña actual es incorrecta.",
|
||
|
|
E022: "La nueva contraseña no puede ser igual a la actual.",
|
||
|
|
E023: "El correo electrónico no está registrado.",
|
||
|
|
E024: "La cuenta ha sido deshabilitada.",
|
||
|
|
E025: "No hay solicitud de restablecimiento de contraseña pendiente.",
|
||
|
|
E026: "El código de restablecimiento de contraseña ha expirado.",
|
||
|
|
E027: "Código de restablecimiento de contraseña inválido.",
|
||
|
|
E028: "El usuario no existe.",
|
||
|
|
E029: "No se proporcionaron campos para actualizar.",
|
||
|
|
E041: "Enviando código de verificación con demasiada frecuencia. Por favor, espere.",
|
||
|
|
E042: "El código de verificación de correo electrónico ha expirado.",
|
||
|
|
E043: "Código de verificación de correo electrónico inválido.",
|
||
|
|
E044: "El correo electrónico ya está verificado.",
|
||
|
|
E045: "El correo electrónico ya está siendo utilizado por otro usuario.",
|
||
|
|
E046: "No hay dirección de correo electrónico verificada.",
|
||
|
|
E047: "Por favor, envíe primero el código de verificación al correo actual.",
|
||
|
|
E048: "Por favor, verifique primero el correo electrónico actual.",
|
||
|
|
E049: "Por favor, envíe primero el código de verificación al nuevo correo.",
|
||
|
|
E050: "Parámetro de acción inválido.",
|
||
|
|
},
|
||
|
|
loginScreen: {
|
||
|
|
logIn: "Iniciar sesión",
|
||
|
|
enterDetails:
|
||
|
|
"Ingresa tus datos a continuación para desbloquear información ultra secreta. Nunca vas a adivinar lo que te espera al otro lado. O quizás si lo harás; la verdad no hay mucha ciencia alrededor.",
|
||
|
|
emailFieldLabel: "Email",
|
||
|
|
passwordFieldLabel: "Contraseña",
|
||
|
|
emailFieldPlaceholder: "Ingresa tu email",
|
||
|
|
passwordFieldPlaceholder: "Contraseña super secreta aquí",
|
||
|
|
tapToLogIn: "¡Presiona acá para iniciar sesión!",
|
||
|
|
hint: "Consejo: puedes usar cualquier email y tu contraseña preferida :)",
|
||
|
|
},
|
||
|
|
navigator: {
|
||
|
|
componentsTab: "Componentes",
|
||
|
|
debugTab: "Debug",
|
||
|
|
communityTab: "Comunidad",
|
||
|
|
podcastListTab: "Podcasts",
|
||
|
|
profileTab: "Perfil",
|
||
|
|
},
|
||
|
|
profileScreen: {
|
||
|
|
title: "Perfil",
|
||
|
|
guest: "Invitado",
|
||
|
|
uid: "UID",
|
||
|
|
username: "Nombre de usuario",
|
||
|
|
referralCode: "Código de referencia",
|
||
|
|
settings: "Configuración",
|
||
|
|
darkMode: "Modo oscuro",
|
||
|
|
notifications: "Notificaciones",
|
||
|
|
security: "Seguridad",
|
||
|
|
account: "Cuenta",
|
||
|
|
accountStatus: "Estado de la cuenta",
|
||
|
|
active: "Activo",
|
||
|
|
inactive: "Inactivo",
|
||
|
|
regular: "Regular",
|
||
|
|
emailVerified: "Email verificado",
|
||
|
|
verified: "Verificado",
|
||
|
|
unverified: "No verificado",
|
||
|
|
loginMethods: "Métodos de inicio de sesión",
|
||
|
|
version: "Versión",
|
||
|
|
changePassword: "Cambiar contraseña",
|
||
|
|
changeEmail: "Cambiar email",
|
||
|
|
editNickname: "Editar apodo",
|
||
|
|
editProfile: "Editar perfil",
|
||
|
|
nicknamePlaceholder: "Introduce tu apodo",
|
||
|
|
nickname: "Apodo",
|
||
|
|
tapToChangeAvatar: "Toca para cambiar avatar",
|
||
|
|
about: "Acerca de",
|
||
|
|
},
|
||
|
|
changePasswordScreen: {
|
||
|
|
title: "Cambiar contraseña",
|
||
|
|
description: "Introduce tu contraseña actual y elige una nueva.",
|
||
|
|
oldPassword: "Contraseña actual",
|
||
|
|
newPassword: "Nueva contraseña",
|
||
|
|
confirmPassword: "Confirmar nueva contraseña",
|
||
|
|
logoutOtherDevices: "Cerrar sesión en otros dispositivos",
|
||
|
|
submit: "Cambiar contraseña",
|
||
|
|
success: "Éxito",
|
||
|
|
successMessage: "Tu contraseña ha sido cambiada exitosamente.",
|
||
|
|
oldPasswordRequired: "La contraseña actual es requerida.",
|
||
|
|
newPasswordRequired: "La nueva contraseña es requerida.",
|
||
|
|
passwordTooShort: "La contraseña debe tener al menos 6 caracteres.",
|
||
|
|
passwordMismatch: "Las contraseñas no coinciden.",
|
||
|
|
samePassword: "La nueva contraseña no puede ser igual a la actual.",
|
||
|
|
},
|
||
|
|
changeEmailScreen: {
|
||
|
|
title: "Cambiar email",
|
||
|
|
step1Label: "Verificar",
|
||
|
|
step2Label: "Vincular",
|
||
|
|
step1Title: "Paso 1: Verificar email actual",
|
||
|
|
step1Description: "Enviaremos un código de verificación a tu email actual.",
|
||
|
|
step2Title: "Paso 2: Vincular nuevo email",
|
||
|
|
step2Description: "Introduce tu nueva dirección de email y verifícala.",
|
||
|
|
currentEmail: "Email actual",
|
||
|
|
newEmail: "Nueva dirección de email",
|
||
|
|
verificationCode: "Código de verificación",
|
||
|
|
sendCode: "Enviar código de verificación",
|
||
|
|
sendCodeToNewEmail: "Enviar código al nuevo email",
|
||
|
|
verify: "Verificar",
|
||
|
|
confirmNewEmail: "Confirmar nuevo email",
|
||
|
|
resendCode: "Reenviar código",
|
||
|
|
success: "Éxito",
|
||
|
|
successMessage: "Tu email ha sido cambiado exitosamente.",
|
||
|
|
codeRequired: "El código de verificación es requerido.",
|
||
|
|
codeInvalid: "El código de verificación debe tener 6 dígitos.",
|
||
|
|
newEmailRequired: "La nueva dirección de email es requerida.",
|
||
|
|
emailInvalid: "Por favor introduce una dirección de email válida.",
|
||
|
|
sameEmail: "El nuevo email no puede ser igual al actual.",
|
||
|
|
},
|
||
|
|
settingsScreen: {
|
||
|
|
title: "Configuración",
|
||
|
|
appearance: "Apariencia",
|
||
|
|
theme: "Tema",
|
||
|
|
darkMode: "Modo Oscuro",
|
||
|
|
language: "Idioma",
|
||
|
|
currentLanguage: "Idioma",
|
||
|
|
},
|
||
|
|
languageScreen: {
|
||
|
|
title: "Idioma",
|
||
|
|
selectHint: "Selecciona tu idioma preferido",
|
||
|
|
},
|
||
|
|
themeScreen: {
|
||
|
|
title: "Tema",
|
||
|
|
selectHint: "Selecciona tu tema preferido",
|
||
|
|
system: "Sistema",
|
||
|
|
light: "Claro",
|
||
|
|
dark: "Oscuro",
|
||
|
|
},
|
||
|
|
securityScreen: {
|
||
|
|
title: "Seguridad",
|
||
|
|
description: "Administra la configuración de seguridad de tu cuenta.",
|
||
|
|
changePassword: "Cambiar Contraseña",
|
||
|
|
changeEmail: "Cambiar Email",
|
||
|
|
// Session management
|
||
|
|
activeSessions: "Active Sessions",
|
||
|
|
activeSessionsDescription: "Devices currently logged into your account",
|
||
|
|
currentDevice: "Current Device",
|
||
|
|
lastActive: "Last active",
|
||
|
|
loginMethod: "Login via",
|
||
|
|
logoutDevice: "Logout",
|
||
|
|
logoutAllOther: "Logout All Other Devices",
|
||
|
|
logoutAllOtherDescription: "This will log out all devices except the current one.",
|
||
|
|
noOtherSessions: "No other active sessions",
|
||
|
|
sessionRevoked: "Device has been logged out",
|
||
|
|
sessionsRevoked: "{{count}} devices have been logged out",
|
||
|
|
confirmLogout: "Confirm Logout",
|
||
|
|
confirmLogoutMessage: "Are you sure you want to log out this device?",
|
||
|
|
confirmLogoutAllMessage: "Are you sure you want to log out all other devices?",
|
||
|
|
deviceTypes: {
|
||
|
|
desktop: "Desktop",
|
||
|
|
mobile: "Mobile",
|
||
|
|
tablet: "Tablet",
|
||
|
|
unknown: "Unknown Device",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
aboutScreen: {
|
||
|
|
title: "Acerca de",
|
||
|
|
appInfo: "Información de la App",
|
||
|
|
appName: "Nombre de la App",
|
||
|
|
version: "Versión",
|
||
|
|
buildVersion: "Versión de Compilación",
|
||
|
|
appId: "ID de la App",
|
||
|
|
appVersion: "Versión de la App",
|
||
|
|
legal: "Legal",
|
||
|
|
privacyPolicy: "Política de Privacidad",
|
||
|
|
termsOfService: "Términos de Servicio",
|
||
|
|
},
|
||
|
|
communityScreen: {
|
||
|
|
title: "Conecta con la comunidad",
|
||
|
|
tagLine:
|
||
|
|
"Únete a la comunidad React Native con los ingenieros de Infinite Red y mejora con nosotros tus habilidades para el desarrollo de apps.",
|
||
|
|
joinUsOnSlackTitle: "Únete a nosotros en Slack",
|
||
|
|
joinUsOnSlack:
|
||
|
|
"¿Quieres conectar con desarrolladores de React Native de todo el mundo? Únete a la conversación en nuestra comunidad de Slack. Nuestra comunidad, que crece día a día, es un espacio seguro para hacer preguntas, aprender de los demás y ampliar tu red.",
|
||
|
|
joinSlackLink: "Únete a la comunidad de Slack",
|
||
|
|
makeIgniteEvenBetterTitle: "Haz que Ignite sea aún mejor",
|
||
|
|
makeIgniteEvenBetter:
|
||
|
|
"¿Tienes una idea para hacer que Ignite sea aún mejor? ¡Nos encantaría escucharla! Estamos siempre buscando personas que quieran ayudarnos a construir las mejores herramientas para React Native. Únete a nosotros en GitHub para ayudarnos a construir el futuro de Ignite.",
|
||
|
|
contributeToIgniteLink: "Contribuir a Ignite",
|
||
|
|
theLatestInReactNativeTitle: "Lo último en el mundo de React Native",
|
||
|
|
theLatestInReactNative:
|
||
|
|
"Estamos aquí para mantenerte al día con todo lo que React Native tiene para ofrecer.",
|
||
|
|
reactNativeRadioLink: "React Native Radio",
|
||
|
|
reactNativeNewsletterLink: "Newsletter de React Native",
|
||
|
|
reactNativeLiveLink: "React Native Live",
|
||
|
|
chainReactConferenceLink: "Conferencia Chain React",
|
||
|
|
hireUsTitle: "Trabaja con Infinite Red en tu próximo proyecto",
|
||
|
|
hireUs:
|
||
|
|
"Ya sea para gestionar un proyecto de inicio a fin o educación a equipos a través de nuestros cursos y capacitación práctica, Infinite Red puede ayudarte en casi cualquier proyecto de React Native.",
|
||
|
|
hireUsLink: "Envíanos un mensaje",
|
||
|
|
},
|
||
|
|
showroomScreen: {
|
||
|
|
jumpStart: "Componentes para comenzar tu proyecto",
|
||
|
|
lorem2Sentences:
|
||
|
|
"Nulla cupidatat deserunt amet quis aliquip nostrud do adipisicing. Adipisicing excepteur elit laborum Lorem adipisicing do duis.",
|
||
|
|
demoHeaderTxExample: "Yay",
|
||
|
|
demoViaTxProp: "A través de el atributo `tx`",
|
||
|
|
demoViaSpecifiedTxProp: "A través de el atributo específico `{{prop}}Tx`",
|
||
|
|
},
|
||
|
|
demoDebugScreen: {
|
||
|
|
howTo: "CÓMO HACERLO",
|
||
|
|
title: "Debug",
|
||
|
|
tagLine:
|
||
|
|
"Felicidades, aquí tienes una propuesta de arquitectura y base de código avanzada para una app en React Native. ¡Disfrutalos!",
|
||
|
|
reactotron: "Enviar a Reactotron",
|
||
|
|
reportBugs: "Reportar errores",
|
||
|
|
demoList: "Lista demo",
|
||
|
|
demoPodcastList: "Lista demo de podcasts",
|
||
|
|
androidReactotronHint:
|
||
|
|
"Si esto no funciona, asegúrate de que la app de escritorio de Reactotron se esté ejecutando, corre adb reverse tcp:9090 tcp:9090 desde tu terminal, y luego recarga la app.",
|
||
|
|
iosReactotronHint:
|
||
|
|
"Si esto no funciona, asegúrate de que la app de escritorio de Reactotron se esté ejecutando, y luego recarga la app.",
|
||
|
|
macosReactotronHint:
|
||
|
|
"Si esto no funciona, asegúrate de que la app de escritorio de Reactotron se esté ejecutando, y luego recarga la app.",
|
||
|
|
webReactotronHint:
|
||
|
|
"Si esto no funciona, asegúrate de que la app de escritorio de Reactotron se esté ejecutando, y luego recarga la app.",
|
||
|
|
windowsReactotronHint:
|
||
|
|
"Si esto no funciona, asegúrate de que la app de escritorio de Reactotron se esté ejecutando, y luego recarga la app.",
|
||
|
|
},
|
||
|
|
demoPodcastListScreen: {
|
||
|
|
title: "Episodios de React Native Radio",
|
||
|
|
onlyFavorites: "Mostrar solo favoritos",
|
||
|
|
favoriteButton: "Favorito",
|
||
|
|
unfavoriteButton: "No favorito",
|
||
|
|
accessibility: {
|
||
|
|
cardHint:
|
||
|
|
"Haz doble clic para escuchar el episodio. Haz doble clic y mantén presionado para {{action}} este episodio.",
|
||
|
|
switch: "Activa para mostrar solo favoritos",
|
||
|
|
favoriteAction: "Cambiar a favorito",
|
||
|
|
favoriteIcon: "Episodio no favorito",
|
||
|
|
unfavoriteIcon: "Episodio favorito",
|
||
|
|
publishLabel: "Publicado el {{date}}",
|
||
|
|
durationLabel: "Duración: {{hours}} horas {{minutes}} minutos {{seconds}} segundos",
|
||
|
|
},
|
||
|
|
noFavoritesEmptyState: {
|
||
|
|
heading: "Esto está un poco vacío",
|
||
|
|
content:
|
||
|
|
"No se han agregado episodios favoritos todavía. ¡Presiona el corazón dentro de un episodio para agregarlo a tus favoritos!",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
|
||
|
|
...demoEs,
|
||
|
|
}
|
||
|
|
|
||
|
|
export default es
|