LostChurn Docs
Getting Started

Localization

Configure language and locale settings in LostChurn — 10 supported locales, RTL support, dunning message translation, dashboard language switching, and Stripe preferred_locales integration.

LostChurn supports 10 locales out of the box, enabling you to recover failed payments in your customers' preferred language. Localized dunning messages see higher open rates and faster recovery times because customers engage more readily with content in their native language. Localization is available on all tiers.

Supported Locales

Locale CodeLanguageScript Direction
enEnglishLTR
esSpanishLTR
frFrenchLTR
deGermanLTR
pt-BRPortuguese (Brazil)LTR
jaJapaneseLTR
koKoreanLTR
zh-HansChinese (Simplified)LTR
hiHindiLTR
arArabicRTL

English is the default locale and is used as the fallback when a customer's preferred locale is not available or not configured.

LostChurn ships with approximately 2,700 translated strings across all 10 locales, covering every dunning template, dashboard label, self-service portal element, and error message.

Setting the Default Locale

Your account's default locale determines the language used for:

  • New customer records that do not have a locale set
  • Dashboard UI for new team members
  • Fallback language when a customer's locale is not supported

Configure the Default

  1. Navigate to Settings > General > Localization
  2. Select your default locale from the dropdown
  3. Click Save

The default locale applies account-wide. Individual customers and team members can override it with their own preference.

Per-Customer Locale

Each customer record includes a locale field that determines what language their dunning messages are sent in. This field can be set in three ways:

1. Automatic Detection from PSP

When LostChurn receives a webhook from your payment processor, it checks for locale information on the customer record:

  • Stripe: Uses the preferred_locales array on the Customer object (see Stripe integration below)
  • Braintree: Uses the customer's country and browser locale
  • Other PSPs: Maps the customer's billing country to the most common locale

2. Manual Override

Set a customer's locale directly in the LostChurn dashboard:

  1. Navigate to Customers and find the customer record
  2. Click Edit on the customer detail page
  3. Select the locale from the Language dropdown
  4. Click Save

Manual overrides take precedence over automatic detection.

3. API

Set the locale programmatically via the LostChurn REST API:

curl -X PATCH https://api.lostchurn.com/v1/customers/{customer_id} \
  -H "Authorization: Bearer {api_key}" \
  -H "Content-Type: application/json" \
  -d '{"locale": "fr"}'

Under the hood, this calls the update_customer_locale reducer with the customer ID and a BCP 47 locale tag. The reducer validates the locale against the 10 supported codes and updates the customer record. If the locale is not supported, the request returns a validation error and the customer's existing locale is preserved.

Dunning Message Localization

All dunning channels — email, SMS, push notifications, WhatsApp, and voice outreach — support localized content.

How Translation Works

LostChurn provides two layers of localization for dunning messages:

Pre-Translated Templates

The default dunning templates ship with translations in all 10 locales. When you use a default template, LostChurn automatically selects the correct translation based on the customer's locale.

Default templates include:

  • Payment failed notification
  • Payment update reminder
  • Final notice before cancellation
  • Card expiration warning
  • Payment recovered confirmation
  • Subscription cancelled notification

Custom Template Translations

When you create custom templates, you can provide translations for each locale:

  1. Create your template in your default language
  2. Click Add Translation in the template editor
  3. Select the target locale
  4. Enter the translated content (subject line, body, and CTA)
  5. Repeat for each locale you want to support

If a custom template does not have a translation for a customer's locale, LostChurn falls back to the default locale version. Always provide translations for your most common customer locales.

Personalization Variables in Translations

Personalization variables like {{customer_name}}, {{amount}}, and {{merchant_name}} work identically across all locales. The variable syntax is language-neutral:

# English
Hi {{customer_name}}, your payment of {{amount}} failed.

# Spanish
Hola {{customer_name}}, tu pago de {{amount}} ha fallado.

# Japanese
{{customer_name}}様、{{amount}}のお支払いが失敗しました。

# Arabic
{{customer_name}} مرحبًا، فشلت عملية الدفع بقيمة {{amount}}.

Currency and Number Formatting

LostChurn automatically formats currencies and numbers according to the customer's locale:

LocaleAmount DisplayDate Display
en$1,234.56March 13, 2026
de1.234,56 $13. März 2026
ja$1,234.562026年3月13日
pt-BRR$ 1.234,5613 de março de 2026
ar١٬٢٣٤٫٥٦ $١٣ مارس ٢٠٢٦

RTL Support

Arabic (ar) is rendered with right-to-left (RTL) text direction across all channels:

Email

  • HTML emails use dir="rtl" on the body element
  • Text alignment, padding, and margins are mirrored
  • Logos and images remain in their standard position
  • Links and buttons are right-aligned

SMS and WhatsApp

  • Message content is sent in RTL-compatible Unicode
  • Most modern phones render RTL automatically based on the character set

Dashboard and Self-Service Portal

  • The dashboard UI mirrors its entire layout for RTL locales
  • Navigation moves to the right side
  • Tables read right-to-left
  • Form fields align to the right
  • Charts and graphs maintain their standard orientation (left-to-right axes)

RTL support applies automatically when a team member or customer has their locale set to Arabic. No additional configuration is needed.

Dashboard UI Language Switching

Team members can switch the dashboard language independently of the account's default locale:

  1. Click your avatar in the top-right corner
  2. Select Preferences
  3. Choose your preferred Language from the dropdown
  4. The dashboard immediately reloads in the selected language

Dashboard language is a per-user setting. Each team member can use the dashboard in a different language without affecting others.

Translated Dashboard Elements

The following dashboard elements are fully translated:

  • Navigation menus and page titles
  • Form labels, placeholders, and validation messages
  • Table headers and empty states
  • Tooltips and help text
  • Notification messages and alerts
  • Date and time displays

Elements That Remain in English

A small number of elements remain in English regardless of the dashboard language:

  • Raw decline codes from payment processors (e.g., insufficient_funds)
  • API endpoint paths and parameter names
  • Customer-provided data (names, email addresses)
  • Code snippets in documentation

Stripe preferred_locales Integration

If you use Stripe as your payment processor, LostChurn reads the preferred_locales array from the Stripe Customer object to automatically set customer locales.

How It Works

  1. When a webhook is received, LostChurn reads the customer's preferred_locales from the Stripe event payload
  2. The first locale in the array that matches a supported LostChurn locale is used
  3. If no match is found, the account default locale is used

Setting preferred_locales in Stripe

You can set preferred_locales when creating or updating a customer in Stripe:

curl https://api.stripe.com/v1/customers/{customer_id} \
  -u sk_live_xxx: \
  -d "preferred_locales[0]"="fr" \
  -d "preferred_locales[1]"="en"

Or in your application code:

const customer = await stripe.customers.update('cus_xxx', {
  preferred_locales: ['fr', 'en'],
});

Locale Mapping

Stripe uses IETF language tags. LostChurn maps them to supported locales:

Stripe LocaleLostChurn Locale
en, en-US, en-GBen
es, es-ES, es-MXes
fr, fr-FR, fr-CAfr
de, de-DE, de-ATde
pt-BRpt-BR
jaja
koko
zh-Hans, zh, zh-CNzh-Hans
hihi
arar

LLM Cultural Context Awareness

When the LLM-powered message personalization generates or refines dunning messages, it considers cultural context beyond simple translation:

Cultural Adaptations

AspectExample
Formality levelJapanese messages use honorific forms (keigo); German uses formal "Sie"
Urgency framingDirect urgency in English ("Act now"); softer approach in Japanese ("We kindly ask...")
Payment contextReferences to local payment norms (e.g., bank transfer culture in Germany)
Date and timeCulturally appropriate date formats and business hour references
Color and imageryEmail template suggestions avoid culturally sensitive colors

LLM cultural context is applied automatically when generating personalized messages. The model uses the customer's locale to select the appropriate cultural norms and communication style.

How It Works

  1. The LLM receives the customer's locale as part of the prompt context
  2. Cultural guidelines for that locale are injected from the prompt template library
  3. The model generates or refines the message with locale-appropriate tone, formality, and framing
  4. The output is validated against the locale's translation for consistency

What's Next

On this page