Lokalise keeps your app's keys, their translations and the context around them, then writes the files each platform expects. For one developer that is a grid on SQLite, importers and exporters for .strings, strings.xml and JSON, a placeholder check and an LLM for first drafts, which an agent builds in one sitting. What you lose is the team layer: translator seats, review workflows, over-the-air updates, the Figma and GitHub integrations and the managed AI routing. Tolgee self-hosted is the nearest free option when those matter.
Before you buildLokalise has no free plan, only a 14-day trial. If you want something ready-made instead of building, self-hosted Tolgee or Weblate cost nothing but a server.
Build me a self-hosted string manager to replace Lokalise for my iOS, Android and web apps. Requirements:
- Python 3.12 + FastAPI with Jinja2 templates and htmx; `uv run app` serves
http://localhost:4800. A CLI named `strings` shares the same code.
- Storage: SQLite through SQLModel in ./data/strings.db: keys (name, description, platforms,
tags, screenshot path), one translation per key and language with a status
(empty, machine, reviewed), and an edit log. Screenshots go to ./data/shots/.
- Import Localizable.strings and .stringsdict, Android strings.xml (including <plurals>) and
flat or nested JSON. Show new, changed and removed keys and ask before saving.
- Grid editor: a row per key, a column per language, filters for untranslated, machine and
tag; open a key to see its description, screenshot and full history.
- AI translation for selected rows through an OpenAI-compatible API (base URL, key and model
in .env). Send the key description, glossary terms and the plural categories each language
needs (CLDR rules from `babel`); save results as "machine" until I review them.
- Placeholder check: %@, %d, %1$s and {name} must match the source; export refuses broken rows
and lists them.
- Export per platform: `strings export --platform ios|android|web --out ../app` writes
de.lproj/Localizable.strings, values-de/strings.xml or locales/de.json.
- Single user. No accounts, no telemetry, local-first; only the AI calls leave the machine.
- Out of scope: over-the-air SDKs, Figma and GitHub integrations, translator seats, workflows.
- README: setup, the .env keys, where the data lives and how to back it up.Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Lokalise.
Add a Lokalise importer to the string manager in this folder. Requirements: - Read LOKALISE_API_TOKEN and a project id from .env; use the Lokalise API v2 (`python-lokalise-api`). - Copy every key with its platforms, description and tags, every translation with its reviewed flag, and the screenshots linked to keys (save the images in ./data/shots/). - Page through results and stay under 6 requests per second; resume where it stopped if the run is interrupted. - Print a summary at the end: keys, languages, translations and screenshots imported. - Update the README with how to create a read-only API token.
Add a CI mode to the string manager in this folder. Requirements: - `strings ci --base origin/main` finds keys added or changed in the source files since the base branch, imports them, machine-translates the missing languages and writes the files. - Output a Markdown table of new keys and their translations for a pull request comment. - Exit with code 1 if any placeholder check fails, so the pipeline stops. - Provide a GitHub Actions workflow file that runs it on pull requests and commits the translated files back to the branch; the API key comes from a repository secret. - Update the README with the workflow and the secret it needs.
Add a length check to the string manager in this folder. Requirements: - Each key can carry a max length in characters (set in the editor or imported from a `maxLength` field in the source JSON). - Flag translations longer than the max, and translations more than 40% longer than the source when no max is set. - Show the flags as a filter in the grid and as warnings in `strings export`. - On the key detail page, draw the translation over the attached screenshot in the rectangle I mark once per key, so I can see whether it fits. - Update the README.
Product teams pay so designers, developers and translators work on the same keys without passing files around: strings flow in from Figma and the repo, translators see screenshots and context, and updates reach phones over the air without an app release. Once several apps and languages run through it, the integrations are what people would miss.
Estimate · Runs locally. AI drafts cost cents per thousand short strings on a small model, or nothing with a local one. The build is token usage on your agent plan.
Checked 2026-10-13 against Lokalise's docs: 1, 2, 3, 4, 5, 6, 7
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Explorer | $169 | $149 | 5 advanced seats, unlimited translator seats and hosted words, 5 projects, 10 languages, 5K processed words a month (up to 40K with add-ons), 20K standard AI/MT words a month, 2 integrations. |
| Growth | $439 | $379 | Unlimited projects and languages, 20K processed words a month (up to 120K with add-ons), 3K Pro AI words a month, translation memory. |
| Advanced | — | $1,049 | Multi-product workflows, more seats and processed words. |
| Enterprise | custom | — | Custom volumes, SSO and dedicated support. |
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $169 a month on the Explorer plan, $2,028 a year (checked 2026-10-13).
Seats and review workflows for translators and managers; Over-the-air string updates through the mobile SDKs; Figma, GitHub and other integrations that move strings for you; In-context editors for web and mobile; Pro AI translation with routing across several models. If any of those matter to you, keep paying.
Yes: Tolgee (open source), Weblate (open source), Traduora (open source).