Auto-Translate Flows with Artificial Intelligence (LLM)

Introduction: If you support multiple languages, translating every message node manually can slow you down. With an LLM (like ChatGPT or Anthropic) connected to RapidPro.app, you can auto-translate your flow in one pass—then review and publish faster.

Auto-translate your flow (then review fast)

If you just need the essentials, follow this quick path:

  1. Confirm prerequisites: Additional languages + an enabled LLM model
  2. Switch the editor to the target language (so untranslated nodes appear)
  3. Open the Flow Translation panel
  4. Run Auto Translate and monitor completion
  5. Review every translated node and preserve variables exactly
  6. Re-check SMS length and Unicode risk after translation

Auto-translate speeds up multilingual rollout—but quality still depends on a careful human review.

Step-by-Step Process

1
Confirm prerequisites (LLM + additional languages)
  1. Open Workspace Settings.
  2. Verify you have Additional Languages added (not just the default language).
  3. Go to Artificial Intelligence.
  4. Confirm at least one LLM provider/model is configured and active.

[CAPTURE: Workspace Settings showing Additional Languages + AI section with at least one model enabled.]

⚠️
Warning: If you don’t add additional languages first, you won’t see language options in the flow editor—so there’s nothing to translate.

2
Open your flow and switch to the target language
  1. Go to Flows.
  2. Open the flow you want to translate.
  3. In the flow editor, use the language selector to switch from the primary language to the target language (example: English → Spanish).
  4. Confirm untranslated message nodes are visually flagged (often highlighted).

[CAPTURE: Flow editor showing language selector and untranslated nodes highlighted after switching language.]

💡
Tip: Write and finalize the flow in the primary language first, then translate. It prevents rework.

3
Open the Flow Translation panel
  1. After switching languages, look for Flow Translation on the right side of the editor.
  2. Click Flow Translation to open the translation view.
  3. Review the list of items needing translation (messages and any relevant categories).

[CAPTURE: Flow editor with the “Flow Translation” panel open and a list of nodes awaiting translation.]

⚙️
Technical Detail: Translation lists typically include message nodes and may also include category names (for example, options on “Wait for Response”).

4
Run Auto Translate with your chosen LLM
  1. In the Flow Translation panel, click Auto Translate.
  2. If prompted, select the LLM you want to use (when multiple models are available).
  3. Start the translation.
  4. Watch the progress indicator until it completes.

[CAPTURE: Flow Translation popup showing Auto Translate button + model selection + completion percentage/progress.]

⚙️
Technical Detail: The translation tool typically shows a completion percentage so you can spot remaining untranslated nodes or categories quickly.

5
Review and adjust translations before sending
  1. Click through translated Send Message nodes in the target language.
  2. Fix wording, tone, formatting, and local terms as needed.
  3. Ensure variables are preserved exactly (examples: @contact.first_name, @results.*, @globals.*).

[CAPTURE: A translated Send Message node being reviewed in the editor.]

⚠️
Warning: Do not publish without reviewing. LLM output can be slightly off, especially with brand terms, field labels, or sensitive messaging.

6
Optional: change the default language for the flow
  1. In the translation panel, check if you see Make Default (or equivalent).
  2. Use it only if you want the flow’s default language to become the translated language.

[CAPTURE: Flow Translation panel showing “Make Default” option.]

💡
Tip: Keep the default language aligned with how your team maintains the flow, unless you have a clear operational reason to switch.

7
Validate message length for SMS and special characters
  1. If the channel is SMS, re-check message length after translation.
  2. Watch for extended characters (accents, emojis, non-Latin scripts) that may trigger Unicode.
  3. Shorten messages or split long content across multiple nodes if needed.

[CAPTURE: Send Message editor showing character counter and/or warning indicators.]

⚠️
Warning: SMS limits can effectively shrink when content is sent as Unicode, so a “short” translation can still become expensive or split unexpectedly.

Common Issues & Quick Fixes

I don’t see “Auto Translate”

Problem: The translation panel is open, but there’s no auto-translate button.

Fix: Confirm an LLM model is configured and enabled in Workspace Settings → Artificial Intelligence. Also confirm you switched the editor to a non-default language.

My variables got translated or changed

Problem: Messages show broken personalization (or literal variable text) after translation.

Fix: Restore variables exactly (for example, @contact.first_name, @results.*, @globals.*). Never translate or “localize” variable names.

Some categories on “Wait for Response” are still untranslated

Problem: The completion percentage isn’t 100%, or some labels/options stay in the primary language.

Fix: Review the translation panel list and translate remaining categories (especially user-visible quick replies or category names used as on-screen options).

My SMS got split into multiple messages after translation

Problem: Translated content arrives as multiple SMS parts or costs more than expected.

Fix: Shorten translated copy and remove unnecessary Unicode characters where possible. Split long text across multiple Send Message nodes to control where breaks happen.