Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
Javascript - Dependencia entre argumentos de aplicaciones parciales

Introducción

He creado la aplicación parcial dada en mi módulo:

 // GENERIC const sendEmail = (subject, template) => async (to, ...props) => { const mailsRef = firestore.collection("mails"); const html = template(...props); const mail = { to, message: { subject, html, }, }; await mailsRef.add(mail); functions.logger.log("Email queued for delivery!"); }; // SPECIFIC const sendUpdatePasswordEmail = sendEmail( "Your password has been updated.", updatePasswordHTMLTemplate ); const sendSignUpWelcomeEmail = sendEmail( "Welcome to Binance!", signUpWelcomeHTMLTemplate ); const sendBitcoinAddressUpdatedEmail = sendEmail( "Your bitcoin address has been updated.", bitcoinWalletAddressHTMLTemplate );

Como puede ver, mi sendUpdatePasswordEmail pasa un generador de plantillas de asunto y HTML a la función sendEmail .

Así es como se ve mi updatePasswordHTMLTemplate :

 const updatePasswordHTMLTemplate = (language) => ` <!DOCTYPE html> <html lang="${language}"> ... <body> <h1>${t("auth.password.update.title", language)}</h1> </body> </html> `;

Como puede ver, estoy internacionalizando los correos electrónicos que envío a los usuarios finales, utilizando algún tipo de i18n .

Problema

El problema que estoy experimentando es que necesito una forma de pasar, como argumento, el idioma del usuario a mi función sendUpdatePasswordEmail . Y, también, necesito traducir el asunto del correo electrónico:

 const sendUpdatePasswordEmail = sendEmail( "Your password has been updated.", <--- t("auth.password.update.subject", language) updatePasswordHTMLTemplate );

¿Hay algún patrón de diseño que deba usar aquí? Quiero decir, como pueden ver, usé la aplicación parcial para "generalizar" mi código, haciéndolo más legible, pero el gran problema viene con la traducción del tema...

Esta es la forma en que uso los métodos que describí:

 const { email, language } = context.auth.token; await sendUpdatePasswordEmail(email); // I need to pass the language!

¿Algunas ideas? Gracias.


He pensado en hacer algo como:

 const sendUpdatePasswordEmail = (language) => sendEmail( t("subject.scope", language), updatePasswordTemplate, language );

Pero entonces, tendría que usar el método de la siguiente manera:

 sendUpdatePasswordEmail(language)(emailAddress);

y no me gusta (no de una manera limpia).

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Sugeriría simplemente hacer que el parámetro del subject sea una función que también acepte un idioma, al igual que su parámetro template ya lo es:

 const makeSendEmail = (subjectTemplate, bodyTemplate) => async (to, ...props) => { const mailsRef = firestore.collection("mails"); const subject = subjectTemplate(...props); const html = bodyTemplate(...props); const mail = {…}; … };

Entonces usa

 const sendUpdatePasswordEmail = makeSendEmail( (language) => t("subject.scope", language), updatePasswordTemplate );

y llama

 sendUpdatePasswordEmail(emailAddress, language);

como antes

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda