Localization that ships with your build

Push source strings from CI, machine-translate them with your own model keys, review the results in the browser, and stop a release that would ship untranslated text.

Bring your own model key · Self-hosted · Apple, Android and ICU formats

four commands, start to finish
  • $ loc init Finds your .strings, .xcstrings, .stringsdict and strings.xml files and writes localization.yml.
  • $ loc push Uploads the source locale. New keys, changed keys and removals are diffed server-side.
  • $ loc translate --locale hi Machine-translates what is missing using your own Anthropic or Gemini key.
  • $ loc pull Writes approved translations back into the repository, ready to commit.

Built for the parts that actually break

Your keys, your bill

Bring your own Anthropic or Gemini credentials. They are encrypted at rest and write-only — nobody, including an admin, can read one back out.

Review that catches real errors

Placeholder parity, plural completeness and glossary adherence run on every string. A translation that drops a %@ never reaches a build.

Stale detection

Change an English string and every translation made against the old text is marked stale automatically — the case a parity test cannot see.

A CI gate that blocks releases

Advisory on pull requests, blocking at release. A build cannot ship with missing or stale strings.

Native formats, round-tripped

Apple .strings and .stringsdict, Android XML and ICU JSON — parsed, not regex-matched, and written back in the same shape.

An API for everything

Every action in the console is a documented REST endpoint with an OpenAPI schema. The CLI is just a client.

Start with one repository

Point the CLI at your source file and push. Nothing is translated until you ask for it, and nothing is written back until a human approves it.

Create an account