template_0205

This commit is contained in:
Sofio
2026-02-05 13:16:05 +08:00
commit d93e4d9c9f
197 changed files with 52810 additions and 0 deletions

303
RN_TEMPLATE/app/i18n/es.ts Normal file
View File

@@ -0,0 +1,303 @@
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