FlowRunner
PricingContact
Theme
Start Free

Simpleen

AI

Translate plain text, structured JSON and i18n locale objects, and complete localization files with Simpleen. Agents localize product strings without breaking the file structure around them.

13 actions API key available
Platform Documentation ↗ Capability data verified 2026-07-31
New keys are merged into the source locale file on the main branch
Agent pulls previously translated values with List Segments
Agent runs Translate JSON over the keys that have no translation yet
Agent confirms every interpolation placeholder and nesting level survived the round trip
Agent diffs the result against segments a human already post-edited
Agent opens a pull request with the new keys and a list of any human strings the machine would have replaced
An engineer approves the pull request, or keeps the human wording and takes only the new keys

What This Integration Enables

Simpleen is not built for translating prose. It is built for translating the files your application ships. That is a different job, and most translation APIs are bad at it because they treat the input as a sentence rather than as a structure with load-bearing parts. Simpleen translates a JSON or i18n locale object while keeping every key and every level of nesting intact, translating only the values. Interpolation placeholders in the i18next, Polyglot, ICU, i18n, Ruby, and Laravel styles pass through untouched instead of being helpfully translated into something the runtime cannot resolve. Selections declare which paths contain HTML, XML, or Markdown so markup is preserved rather than rewritten. Whole files work too: JSON, HTML, Markdown, Java Properties, PHP Array, Gettext PO, and YAML go in and come back in the same format.

Under the hood it runs DeepL, falling back to Google Translate for languages DeepL does not cover, which means the localization question stops being about model choice and becomes a workflow question. Glossaries enforce custom terms and, just as importantly, hold a list of ignored words that must never be translated at all, which is how brand and product names survive. Saved translators let a fixed configuration, including formality, be reused across every flow that needs it. Wire those connectors into a flow and localization becomes part of the delivery pipeline rather than a release-week scramble.

Without FlowRunner

Locale files go stale New keys ship in English to every locale because updating the files is somebody's side task
Structure breaks under translation A placeholder or a nested key gets translated along with the value and the build fails or the string renders wrong
Post-edits get overwritten The next bulk translation run replaces strings a translator had already corrected

With FlowRunner

Locale files track the source New keys are translated as part of the same change that introduced them
Structure is preserved Keys, nesting, and interpolation placeholders pass through untouched and only values are translated
Post-edits are protected Existing human wording is identified before anything overwrites it

Use Case Scenarios

Locale files that keep up with the branch

A feature merges into main and adds fourteen new keys to en.json. The agent picks up the change from GitHub, reads the current translated locale files, and works out which keys are genuinely new. It calls Translate JSON on only those keys, for each target locale, with the product glossary applied so component names and plan tiers stay in English. The output is committed to a branch and opened as a pull request against the same repository. The engineer who wrote the feature reviews fourteen strings, not a regenerated file of nine hundred. Locale drift stops being a thing that accumulates quietly between releases.

Marketing content out of a headless CMS

Content authored in Strapi contains Markdown with links, code spans, and component placeholders. The agent calls Translate Localization File with the Markdown format selected, so the markup survives and only the prose is translated, then writes the localized version back as a draft entry in the target locale. Before it runs, Get Usage tells the agent how much of the plan's segment allowance is left. If the job would exceed it, the flow stops and says so rather than half-translating a release and leaving the rest in English.

One configuration, many flows

Formality is a decision, not a per-call parameter. A team configures a saved translator in the Simpleen web app that fixes the language pair, data format, interpolation style, selections, glossary, and formality setting, then calls Translate With Saved Translator from every flow that touches that surface: in-app strings, transactional email bodies, and the help center. When the team decides the German product voice should be less formal, they change it in one place and every flow inherits it. Nothing has to be redeployed and nothing has to be remembered.

Human-in-Loop Highlight

The dangerous moment is a re-translation. Machine output improves and locale files get regenerated, and a regeneration will happily overwrite strings that a native-speaking translator already fixed by hand. Those post-edits are the most valuable content in the file and they are the easiest thing in the world to lose, because the file that replaces them looks perfectly reasonable. So before any regenerated file is written back, the agent calls List Segments to pull the previously translated values with their JSON paths and the machine translation service that produced them, and diffs the new output against them. Keys where nothing was ever hand-edited go through without a word. Keys where machine output would replace a human-edited string stop, and the agent opens a pull request that says: "Re-translating de.json replaces 6 values that were post-edited after their last machine translation. Paths listed below with old and new side by side. Take the new machine output, keep the human wording, or take new output only for the untouched keys?" The engineer picks, in the tool they already review code in. Glossary edits get the same treatment, because Update Glossary replaces the entries and ignored words it is given rather than merging them, so a sync that sends a partial list silently drops the protection on every brand name it left out. The human-in-the-loop step here is not approving translations. It is protecting work a person already did.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via preferred channel
Human decides
Agent resumes with decision

Agent Capabilities

13 actions

Translation

4
  • Translate Text Translates a single string into a target language. The content format setting means HTML, XML, or Markdown markup is preserved instead of translated, and a glossary can be applied to enforce custom terms and never-translate words.
  • Translate JSON Translates a structured JSON or i18n locale object while keeping every key and the nesting intact, translating only the values. Interpolation placeholders such as `{{ name }}`, `%{ name }`, ICU messages, or `:variable` are recognised and passed through untouched, and selections declare which paths contain HTML or Markdown.
  • Translate Localization File Translates the raw content of a localization or content file in any format Simpleen supports, including JSON, HTML, Markdown, Java Properties, PHP Array, Gettext PO, and YAML, and returns the translated file content in the same format with structure, keys, and placeholders preserved.
  • Translate With Saved Translator Translates text with a translator preconfigured in the Simpleen web app. The translator supplies the source and target language, data format, interpolation, selections, glossary, and the formality setting, so only the text is provided at call time. Used when formality control matters or when one fixed configuration should be shared across a flow.

Languages and Account

2
  • List Languages Lists every language Simpleen supports, with its display name and language code, and flags telling whether the language may be used as a source language, a target language, or both. Used to validate language codes before running a translation.
  • Get Usage Returns the current quota consumption of the connected account: how many segments have been translated and how many the active plan allows. A segment is one translatable value, which makes this the guard to place in front of a bulk localization job.

Glossaries

5
  • List Glossaries Lists the glossaries of the connected account with their custom term pairs and their ignored words. A glossary ID from this list is what gets passed to any translation operation.
  • Get Glossary Retrieves a single glossary by ID, including every custom term pair and every ignored word protected from translation. Used to audit terminology before a release or to copy rules into another glossary.
  • Create Glossary Creates a glossary that combines custom term translations with a list of ignored words that must never be translated, such as brand or product names.
  • Update Glossary Updates an existing glossary by replacing its name, its custom term pairs, or its ignored word list. Only the supplied fields are sent, so a glossary can be renamed without touching its terms, but a list that is sent replaces the existing one rather than merging into it.
  • Delete Glossary Permanently deletes a glossary and all of its term pairs and ignored words. Existing translations keep their results, but future translations stop applying its rules.

Translation Memory

2
  • List Translation Files Lists the files Simpleen created while translating localization content, with their data format, interpolation, source language, target languages, formality setting, and linked glossary. These files act as the container of the reusable translation memory.
  • List Segments Lists translated segments, the individual translatable values of previously translated files, with their source entry, translated entry, JSON path, and the machine translation service that produced them. Used to review or export existing translations before post-editing them, and to detect what a re-translation would overwrite.

Frequently Asked Questions

What can FlowRunner do with Simpleen?

FlowRunner agents can run Translate Text, Translate JSON, and Translate Localization File in Simpleen, plus 10 more actions.

Does connecting Simpleen to FlowRunner require OAuth?

No. Simpleen connects to FlowRunner with an API key, no OAuth flow required.

Can Simpleen trigger a FlowRunner workflow automatically?

Simpleen doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with Simpleen

$100 in credits. No card required. Connect in minutes.