【发布时间】:2021-05-12 22:34:24
【问题描述】:
我正在使用 GCP pubsub 发布者将一些消息发布到一个主题,该主题又用于通过 sendgrid API 发送电子邮件。我可以使用它发送电子邮件。
但我想支持多语言电子邮件模板。所有这些电子邮件都是根据一些用户操作自动发送的。
以下是我的电子邮件模板代码示例:
import * as _ from 'lodash';
export const getUserRegEmailSubject = (data) => {
return `Account Created Successfully – ${_.get(data, 'name')}`;
};
export const getUserRegEmailBody = (data) => {
return `
<!DOCTYPE html>
<html lang="en">
<body>
<p style="padding-bottom: 5px">Thank you for registering with us.</p>
<b>Your account details:</b>
<b>Full Name: </b>${_.get(data, 'name')}<br/>
<b>Username: </b>${_.get(data, 'uid')}<br/>
<p style="padding-bottom: 5px">Thank you!!</p>
`;
}
我在我的服务中使用这个电子邮件模板如下;
async createUser(userData) {
// Some logic and validations
const subject = getUserRegEmailSubject(userData);
const body = getUserRegEmailBody(userData);
if(userData.email) {
const email = {
to: userData.email,
from: env.EMAIL_FROM,
subject: subject,
html: body,
};
await pubEmailReq(email);
}
}
以下是邮件发布代码:
export const pubEmailReq = async (email) => {
const pubSub = new PubSub();
const message = {
data: Buffer.from(JSON.stringify(email))
}
const msgId = await pubSubClient
.topic('projects/' + env.GCP_PROJECT + '/topics/sendEmail')
.publishMessage(message);
return msgId;
}
如您所见,我只用英语创建了电子邮件模板。但在将其发送到发布电子邮件代码之前,我需要一些方法将其转换为其他语言(目前主要是西班牙语和法语)。
我正在寻找方法将此电子邮件模板翻译成用户选择的语言首选项。
任何帮助都会很棒!
谢谢!
【问题讨论】:
-
为了更深入地调查,您是否发布了您发送的整封电子邮件?另外,您从哪里获得电子邮件的正文?是静态的吗?
-
是的,我发布了整封电子邮件。我从第一个代码 sn-p 中创建的
getUserRegEmailBody函数获取电子邮件正文。 -
您可以使用来自
userdata的email's body作为翻译API 的输入,如here 中所述。这对你有用吗? -
是的,这是一个选项,实际上我将在几个星期内使用它,因为电子邮件正文的输出将是一个 HTML 模板,我相信这个 API 无法翻译。虽然如果我只解析电子邮件模板中的字符串并将其传递给 API,它会完美地翻译它。谢谢,我试试这个!
-
为了进一步为社区做出贡献,我将在上面发表我的评论作为答案。好吗?
标签: node.js google-cloud-platform nestjs multilingual google-cloud-pubsub