i18n Ready

Multi-Language Notifications That Speak Your Users' Language

Pass your user's locale — Sendivent resolves the right template with graceful fallbacks when translations are missing.

Locale-Aware Delivery

Pass the language with your event. We resolve the right template version.

Template Per Locale

All language versions grouped under the same event. One payload, many languages.

Graceful Fallbacks

If a translation is missing, fall back to your default language automatically.

RTL-Friendly Templates

Author templates for Arabic, Hebrew, and other RTL languages using standard HTML patterns.

Date Formatting

Format dates in templates using Handlebars helpers.

Template Overview

See which events have templates for each language so you can spot gaps.

Pass the locale, we handle the rest

User receives the German template, or gracefully falls back to default if missing.

TypeScript
await sendivent
  .event('order.confirmed')
  .to({ email: 'user@example.com' })
  .language('de')
  .payload({
    orderNumber: '12345',
    total: 99.00
  })
  .send();

Why Multi-Language Matters

Global products need global communication. When users receive notifications in their own language:

  • Higher engagement: Localized content consistently outperforms generic messages
  • Better experience: Users feel valued and understood
  • Reduced support: Fewer "I don't understand this email" tickets
  • Legal compliance: Some regions require native language communication

How It Works

1. Set User Language

Store the user's preferred language in their contact profile via the REST API:

// POST /v1/contacts - create or update a contact
await fetch('https://api.sendivent.com/v1/contacts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer live_xxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    email: 'hans@example.de',
    name: 'Hans Schmidt',
    language: 'de'  // ISO 639-1 language code
  })
});

2. Create Localized Templates

Create templates for each language you support:

Event Language Template
welcome en "Welcome to Acme!"
welcome de "Willkommen bei Acme!"
welcome es "¡Bienvenido a Acme!"
welcome ja "Acmeへようこそ!"

3. Send With Language

Pass the language explicitly or rely on the user's stored preference:

// Option A: Pass language explicitly
await sendivent
  .event('welcome')
  .to({ email: 'ana@example.com' })
  .language('pt-BR')  // Brazilian Portuguese
  .payload({ activationUrl: 'https://app.example.com/activate' })
  .send();

// Option B: Use stored user language (from contact profile)
await sendivent
  .event('welcome')
  .to({ email: 'hans@example.de' })  // Has language: 'de' in profile
  .payload({ activationUrl: 'https://app.example.com/activate' })
  .send();

4. Automatic Fallback Resolution

When Sendivent looks for a template, it tries in order:

  1. Exact match: pt-BR (Brazilian Portuguese)
  2. Language only: pt (Portuguese)
  3. Default: * (fallback template)

This means you can support regional variants where needed, but fall back gracefully when you don't have a specific translation.

Date Formatting

Use the formatDate helper to format dates in your templates:

Order placed: {{formatDate orderDate "YYYY-MM-DD"}}

For locale-specific date and currency formatting, format values in your application code before passing them to the payload.

Translation Workflow

Dashboard Overview

Track your translation coverage at a glance:

  • See which events have templates for each language
  • Identify missing translations before they cause fallbacks

Template Organization

Organize templates by language in the dashboard:

Events/
├── welcome/
│   ├── email/
│   │   ├── en (default)
│   │   ├── de
│   │   ├── es
│   │   └── ja
│   └── sms/
│       ├── en (default)
│       └── de
└── order-confirmation/
    └── email/
        ├── en (default)
        └── de

Fallback Chain

Configure how Sendivent handles missing translations:

  1. Exact match: de-AT (Austrian German)
  2. Language match: de (German)
  3. Default language: en (English)

RTL Language Support

Right-to-left languages like Arabic, Hebrew, and Persian require special handling. Author RTL templates using standard HTML attributes:

<div dir="rtl" style="text-align: right;">
  <h1>مرحباً {{user.name}}!</h1>
  <p>شكراً لطلبك رقم {{payload.orderNumber}}</p>
</div>

Set dir="rtl" on your template's container to ensure proper text direction.

Best Practices

1. Start With Your Top Languages

Don't try to support every language at once:

  1. Check your analytics for user language distribution
  2. Start with your top 3-5 languages
  3. Add more as you grow

2. Keep Templates in Sync

When you update the English template, remember to update translations too. The dashboard shows all language versions grouped under each event, making it easy to spot which ones need attention.

3. Test Across Languages

Some languages require more space than English:

  • German text is often 30% longer
  • Test email layouts with the longest translations
  • Ensure SMS templates fit in character limits

4. Handle Pluralization

Different languages have different plural rules. Handle pluralization in your application code before passing values to the payload, or use conditional blocks in templates:

{{#eq count 1}}
  You have 1 item
{{else}}
  You have {{count}} items
{{/eq}}

Going global? Create a free account and see how easy multi-language templates can be. Your international users will thank you.

Frequently asked questions

How does Sendivent know which language to use?

You pass the language in your API call or store it on the user profile. Your app owns locale detection (user settings, browser, etc.), and we handle template resolution.

What happens if a translation is missing?

We gracefully fall back through the chain: exact match (pt-BR) → language (pt) → default (*). Users always receive a notification.

Can I use different templates for regional variants?

Yes, you can create templates for specific locales like 'en-US' vs 'en-GB' or just use the base language code.

How do I format dates per locale?

Use our formatDate Handlebars helper to format dates in templates. For currencies and numbers, format them in your application code before passing to the payload.

Readytogetstarted?

Experience multi-language notifications that speak your users' language with Sendivent's powerful API.

Free to start
No credit card required
5 minute setup