Documentation

Pull translations into your stack.

Most integrations run at build time. The translations are baked into your build, so your live app never calls us. If we are down, your next build fails and production keeps running on its last build. A pasted tag, for Tilda and other hosted sites, is the exception: it translates while the page loads.

Pick your platform.

On a hosted platform such as Shopify, Webflow, WordPress or Squarespace, a pasted tag translates your pages for readers today. What it cannot do is give Google a separate address per language. What each platform can and cannot do →

The shape, if you're rolling your own

The fetch step is the same across every framework. In pseudocode: Every endpoint, with a live request panel, is on the API and MCP reference.

for each language in supported_languages:
  GET /api/<project_id>/latest/<language>/<namespace>
    Authorization: Token token=<API_KEY>
  → write to framework's expected location, in framework's expected format

BeMyWords returns flat dot-separated keys as JSON:

{
  "home.hero.title": "Localization for solo devs and small teams",
  "home.hero.subtitle": "Cheap, simple, developer-first."
}

Your conversion step — if any — turns this into:

  • Flat JSON (React, Vue, Next.js) → no conversion.
  • Nested YAML (Rails) → split on the dot, nest.
  • iOS .strings → one "key" = "value"; line per string.
  • Android XML → a <string name="key">value</string> element per string, with dots turned to underscores.
  • Flutter ARB → JSON with an "@@locale" meta key.

Using the translate page

Translate filter reference — what every filter on the translate page shows, and when to use it.

Don't see your stack?

Email support@bemywords.org and name the closest match. We write the guide and add it here once it is verified.