Switch from POEditor
Bring your POEditor strings and translations. Host them free, leave whenever you want.
Import every string and existing translation from POEditor into Glossa. Hosting is free and unlimited, your own agents can audit, fix and fill them for free, and you can export everything again at any time. You pay only if you ask Claude to translate for you.
Let your agent do the move
Run this in your repository. Claude Code or Codex sets up Glossa, exports from POEditor, imports every file in agent mode so nothing is billed, checks the import, then audits and fills your translations itself.
claude "$(curl -fsSL https://getglossa.dev/switch/poeditor/prompt.txt)"codex "$(curl -fsSL https://getglossa.dev/switch/poeditor/prompt.txt)"Move our app's strings and existing translations from POEditor to Glossa (https://getglossa.dev), then audit them. Hosting, imports, exports and audits are free on Glossa; keep this move free by using agent mode, so nothing is machine-translated or billed.
1. Set up Glossa. In Claude Code run `/plugin marketplace add MeterApp/glossa-plugins` then `/plugin install glossa@glossa`; in Codex run `codex plugin marketplace add MeterApp/glossa-plugins && codex plugin add glossa@glossa`. That adds the Glossa MCP server and skills; sign in through the browser when asked. Without a plugin, use the CLI: `npx @meterapp/glossa login` opens my browser to sign in, and `npx @meterapp/glossa ops` lists every operation.2. Get the newest translations. If POEditor holds translations that are not committed here yet, export them first: curl -X POST https://api.poeditor.com/v2/projects/export -d api_token="$POEDITOR_API_TOKEN" -d id=<project-id> -d language=es -d type=key_value_json # One call per language; download the file at result.url (Or export each language from the project in the web app.) If POEditor's CLI is not configured, ask me for access; never commit or print API tokens.3. Find every translation file in this repository: the source language and every target language. List them with their locales and ask me only if the source language is unclear.4. Create one Glossa project per app with agent mode and its target languages, e.g. `npx @meterapp/glossa create_project --json '{"name":"Web","slug":"web","target_locales":["es","fr"],"translation_mode":"agent"}'`. Agent mode leaves missing strings for you instead of translating them with AI.5. Push each source-language file first, then every target-language file: `npx @meterapp/glossa push locales/en.json --project web`, then `npx @meterapp/glossa push locales/es.json --project web` (add `--locale` when the path does not name it). Existing translations are stored as imported, and AI never overwrites them.6. Check the import: `npx @meterapp/glossa pull --project web --out glossa-preview`, then diff glossa-preview against our files. Report every key, placeholder or plural that differs.7. Audit every target language for free with the codebase in view: page through `list_translations_for_audit` (MCP tool, or `npx @meterapp/glossa list_translations_for_audit --locale es --project web`), read the call sites in this repo, and correct wrong translations with `submit_translations`. Start with the flagged ones (placeholder_mismatch, glossary_miss, same_as_source).8. Fill the gaps yourself: `npx @meterapp/glossa missing --project web --locale es --out missing.json` lists untranslated strings with their file paths, glossary and rules; translate them and write them back with `npx @meterapp/glossa fill translations.json`.9. Save a .glossa.json with the project and source files so `npx @meterapp/glossa pull` and `npx @meterapp/glossa check` work from now on. Then summarize: files imported, translations per language, issues fixed and strings still missing. Leave POEditor's configuration and CI in place until I confirm the switch.Or do it by hand
1. Export from POEditor
curl -X POST https://api.poeditor.com/v2/projects/export -d api_token="$POEDITOR_API_TOKEN" -d id=<project-id> -d language=es -d type=key_value_json# One call per language; download the file at result.urlOr export each language from the project in the web app. Export in a format Glossa reads: JSON, YAML, XLIFF, gettext PO, Android XML, .strings, .xcstrings, ARB, .properties, RESX or CSV (formats). Leave untranslated strings out, so source text does not import as a translation.
2. Import into Glossa
npx @meterapp/glossa loginnpx @meterapp/glossa create_project --json '{"name":"Web","slug":"web","target_locales":["es","fr","de"],"translation_mode":"agent"}'npx @meterapp/glossa push locales/en.json --project web # the source language firstnpx @meterapp/glossa push locales/es.json --project web # then every translation you haveAgent mode means nothing is machine-translated on push. Existing translations are stored as imported and AI never overwrites them. Identical strings across your apps share one translation.
3. Audit and translate with your own agent, free
npx @meterapp/glossa list_translations_for_audit --locale es --project web # your agent reads and fixes thesenpx @meterapp/glossa missing --project web --locale es --out missing.json # what is not translated yetnpx @meterapp/glossa fill translations.json # write your agent's translations backlist_translations_for_audit gives your agent every translation with the keys, file paths, glossary and rules behind it, flagged where placeholders or glossary terms do not match. With the codebase in view it fixes what is wrong and fills what is missing, for your whole library, without counting a single AI word. Prefer to let Claude do it? Switch the project to ai mode and pay only for the new words it translates.
4. Leave whenever you want
npx @meterapp/glossa pull --project web --out ./locales # every language, in its original formatYour files stay in your repository. Pulling is free, unlimited and needs no export request.
POEditor and Glossa side by side
| Topic | Glossa | POEditor |
|---|---|---|
| What you pay for | Free to host; priced by AI-translated words. | Plans are limited by strings: the terms and translations in all projects, contributors' work included. |
| A bigger library costs more? | No: hosting is free and unlimited; reused strings are free. | Yes: every translation you add counts as a string. |
| Free plan | Unlimited hosting, 20,000 AI words a month, 3 members. | Up to 1,000 strings and 5 contributors. |
| Paid plans from | $49/mo for 200,000 AI words | $20/mo |
| Agents | A hosted MCP server, CLI and REST API with every op, plus plugins for Claude Code, Codex and Cursor. | An official MCP server, published on its GitHub. |
| Getting your files out | glossa pull, every language in its original format, any time. | curl -X POST https://api.poeditor.com/v2/projects/export -d api_token="$POEDITOR_API_TOKEN" -d id=<project-id> -d language=es -d type=key_value_json |
POEditor details from its public pages, checked 2026-10-29: POEditor pricing, POEditor API, POEditor MCP server. Corrections welcome at jonathan@getglossa.dev.
When staying on POEditor may make sense
- Your catalog is small and stays under its free strings.
- Your translators already contribute there.
Not sure? Import a copy anyway: it costs nothing to keep your strings in both while you compare. See every tool compared.
Move off POEditor for free
Import your strings and translations, audit them with your agent, and export them again whenever you like.