i18n Ready

SpeakYourUsers'Language

Deliver notifications in the language your users prefer. Sendivent handles locale detection, template selection, and graceful fallbacks automatically.

Automatic Locale Detection

Detect user language from their profile, browser, or explicit preference.

Template Per Locale

Maintain separate templates for each language with the same event name.

Graceful Fallbacks

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

RTL Support

Right-to-left languages like Arabic and Hebrew just work.

Locale-Aware Formatting

Dates, numbers, and currencies formatted for each locale.

Translation Management

Track which templates are translated and which need attention.

See it in action

TypeScript
// User language is detected automatically from their profile
await sendivent.send('order-confirmation', {
  user: {
    email: 'user@example.com',
    language: 'de'  // German
  },
  payload: {
    orderNumber: '12345',
    total: 99.00
  }
});

// User receives German template with locale-formatted content

Why Multi-Language Matters

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

  • Higher engagement: Open rates increase 30-50% for localized content
  • 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 profile:

// When creating or updating a user
await sendivent.contacts.upsert({
  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 as Usual

The API call is the same—Sendivent selects the right template:

await sendivent.send('welcome', {
  user: { email: 'hans@example.de' },
  payload: { activationUrl: 'https://app.example.com/activate' }
});
// Hans receives the German template automatically

Locale-Aware Formatting

Dates, numbers, and currencies are formatted according to each user's locale:

Date Formatting

Order placed: {{formatDate orderDate "long" user.language}}
Language Output
English (US) "January 15, 2024"
German "15. Januar 2024"
Japanese "2024年1月15日"

Currency Formatting

Total: {{formatCurrency amount "USD" user.language}}
Language Output
English (US) "$99.00"
German "99,00 $"
French "99,00 $US"

Number Formatting

Items: {{formatNumber quantity user.language}}
Language Output
English "1,234"
German "1.234"
French "1 234"

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
  • Export template content for translators
  • Import translated content back

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. Sendivent manages this automatically:

  • Email templates get dir="rtl" attribute
  • Text alignment is reversed appropriately
  • Mixed LTR/RTL content is handled correctly

Example Arabic Template

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

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, update translations too:

  • Use our template comparison feature
  • Track which templates were updated since last translation
  • Set up notifications for stale translations

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:

{{#eq user.language "en"}}
  You have {{count}} {{pluralize count "item"}}
{{/eq}}
{{#eq user.language "ru"}}
  У вас {{count}} {{pluralizeRu count "товар" "товара" "товаров"}}
{{/eq}}

Frequently asked questions

How does Sendivent detect user language?

We check the user's language field first, then fall back to browser locale detection if available, or your default language.

What happens if a translation is missing?

We gracefully fall back to your default language template, so 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 and currencies per locale?

Our formatDate and formatCurrency helpers automatically use the user's locale for formatting.

Ready to get started?

Experience speak your users' language with Sendivent's powerful API.