Sendgrid: use template versions to support multiple languages

I want to utilize Sendgrid template versions to support multiple language support.

According to Sendgrid documentation:

A template can only have one active version at a time. If you’ve created a new version with different HTML that you want your customers to start receiving, you’ll need to make that version “Active.”

So, for example I have template with 2 version: English(active) and Russian. Thus, if I want to send email with Russian version, I need to active Russian template version before sending email.

But my concern is following: What if I need to send emails with Russian and English version in the same time? Will Sendgrind be able to supply proper version for 2 simultaneous request?

5 Answers

I was able to implement multiple languages support for my emails using Sendgrid Dynamic Transactional Templates. The idea here is that you should create transactional template and design it with the help of handlebars if/else conditional statements. For e.g.: Adding support of English and Russian language for your template can look like this:

 <table> <tbody> {{#if english}} <tr> <td> <div><span><span>My web site in social networks</span></span></div> </td> </tr> {{else if russian}} <tr> <td> <div><span><span>Мой Веб сайт в социальных сетях</span></span></div> </td> </tr> {{/if}} </tbody> </table>

Then request should contain:

{ "personalizations": [ { "to": [ { "email": "[email protected]" } ], "dynamic_template_data": { "subject": "Subject_translated_to_desired_language", "russian": true // other placeholders } } ], "from": {"email": "[email protected]"}, "template_id":"dynamic_template_id"
}

If you send this request to Sendgrid, it will send you email content in Russian language.

This example can be very helpful.

3

What if I have to manage 20 languages? How can we manage that in this way?

3

Maybe you could try to use this api . Looks like what you need.

mail test api:

You can get all the available templates with version using the below api . Once you have all templates and versions , choose the version_id of your choice based on a version name , you can add to the template in sendgrid.

In the mail test api you should be able to set the below fields.

{ "template_id": "string (required)", "version_id_override": "string (optional)", "sender_id": "integer (optional)", "custom_unsubscribe_url": "string (optional)", "suppression_group_id": "integer (optional)", "emails": [ "string" ], "from_address": "string (optional)"
}

Using if/else statements within a signle template for large amount of languages makes it messy because it mixes logic with structure and appearance. IMHO the best option would be to have separate templates for different languages or deliver translated strings via API.

Translated versions of your templates should be created/maintained by linguists. If you go with tags {{#if english}}, it complicates for linguists a lot.

Especially when you change your source language copy, maintaining localizations becomes an immense pain (if you have 10 languages, 10 linguists should go through the code and fix their blocks)

The best practice would be using a Translation Management System like this one

So you get a workflow like the following:

  1. A content creator writes an English version of your template
  2. TMS picks up the new template and involves linguists in selected languages
  3. Translated templates go back to your SendGrid
  4. Whenever your English template changes, it all goes from #2

This should be fully automated (all the synchronization, linguists notifications, etc)

You end up having templates like:

  • Welcome email
  • Welcome email [pl]
  • Welcome email [ee]

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like