A migration checklist for SaaS developers
How to Migrate from POEditor to SimpleLocalize: A SaaS Developer’s Checklist
Moving a translation workflow is mostly about not losing strings, placeholders and plural forms on the way. This checklist follows the routes both vendors document: export files from POEditor, import them into SimpleLocalize, then verify the result.
By SaaS Localization Planner · Reviewed
Before you start
Take stock first. A migration is easier to reverse when you know exactly what you are moving.
- Write down every POEditor project, target language, file format and branch or tag that your app uses today.
- List where translations are consumed: bundled JSON, gettext files, mobile resources, CI jobs or scripts that call the POEditor API.
- Decide which source of truth you will use during the move, and pause or batch translation edits so the two systems do not diverge.
- Back up the current exports and your repository state before changing any workflow.
- Check the current SimpleLocalize plan limits and which features each plan includes; the official sources do not always show plan inclusion clearly.
Is the move a good fit?
Neither tool is better for every team. Weigh these points against your own project.
What SimpleLocalize documents
- Import through onboarding or the Data tab, plus a CLI and a REST API for uploads, as described in its Get started and CLI documentation.
- Many file formats, including single- and multi-language JSON and PO/POT; see the file formats list.
- Language fallbacks and an ICU syntax tester, according to its language and JSON format pages.
What to weigh before moving
- Plan inclusion for features is not always clear from the official pages; check what your plan includes. Our tool directory lists the documented capabilities and the limits we could confirm.
- Plans are described in terms of keys rather than words, so count your keys before choosing a plan.
- Some details do not carry over automatically; for example, SimpleLocalize’s PO documentation says the fuzzy flag is not stored.
- Plural and placeholder handling depends on the format and on your app’s i18n library; neither vendor promises lossless conversion between formats.
- Staying on POEditor can be the right choice if your current workflow works and the migration risk outweighs the benefit.
Not sure how much a workflow change affects your overall budget? Read our SaaS localization cost guide and run the planner.
Export from POEditor
POEditor’s API v2 documentation describes an export endpoint that takes a project ID, a single language code and a file type. Documented file types include po, pot, json, key_value_json, i18next, csv, xlsx, xliff, android_strings, apple_strings and more. Optional parameters include filters, tags, fallback_language and format-specific options. We did not verify the equivalent steps in the POEditor web interface; check POEditor’s own help pages for those.
- Export one file per language (the POEditor export API takes a single language code per request).
- Pick an export format SimpleLocalize documents as importable and that your app already uses, for example JSON or PO.
- Download the file promptly: the export link returned by the API expires after 10 minutes.
- Decide whether to apply POEditor’s documented export filters, tags or fallback language, and record which ones you used so you can reproduce the export.
- Keep the exported files unchanged in a separate folder as your migration baseline.
POEditor also documents settings that change what an export contains. For example, the project’s fallback language can fill empty translations in exports, so decide whether you want that in your baseline.
Import into SimpleLocalize
SimpleLocalize’s Get started guide says you can migrate existing translations: choose a file format and upload your source translations during onboarding, or add files later from the Data tab. Three documented routes exist.
- Web app: upload files in onboarding or from the Data tab.
- CLI: the upload command accepts options such as
--uploadPath(with a{lang}placeholder),--uploadFormat,--uploadLanguageKeyand--update, plus--dryRunand--preview. By default only empty translations are updated. - REST API: the import endpoint takes a file,
uploadFormat,languageKeyandimportOptions. By default only new translations are imported;UPDATE_TRANSLATIONSupdates existing ones. The response reports the number of keys found and the languages found. Import and export endpoints are rate limited to 60 requests per minute per project.
- Create a SimpleLocalize project, choose the file format in onboarding, and upload your source-language file first.
- Add the remaining languages by uploading each file; SimpleLocalize documents that languages are created automatically when you import translation files.
- Run a dry run or preview first when using the CLI, and read the result before importing for real.
- Remember the documented default: only new translations are imported, and existing ones are updated only if you enable the update option.
- Write down the number of keys and languages reported by the import and compare them with your baseline.
If you decide the move makes sense, you can start with SimpleLocalize (affiliate link, new tab) and import a single language first as a trial.
Affiliate link: we may earn a commission if you sign up, at no extra cost to you. This does not affect our rankings or this checklist.
Check placeholders, plurals and language keys
Placeholders
SimpleLocalize’s JSON pages show {name}-style variables and state that formatting is done by your own translation library. For PO files, its documentation shows printf-style examples and does not describe any placeholder conversion or validation. Treat placeholder fidelity as something to test.
Plurals
POEditor’s plural forms documentation lists the formats that support plurals and warns that formats without plural support will not export plural forms. It also notes that plurals in iOS XLIFF cannot be preserved when converting to or from other formats. On the SimpleLocalize side, the PO/POT page documents msgid_plural with msgstr[n] and says the Plural-Forms header is filled in on export; it does not describe how that header is handled on import. JSON plurals use ICU message syntax and are processed by your library, as the single-language and multi-language JSON pages explain.
Language keys
According to SimpleLocalize’s language documentation, keys may contain up to 20 characters, using only letters, numbers, dashes and underscores, and they are case-sensitive. Compare them with the codes your POEditor export and your app use, for example en_US versus en-US. Import behavior for languages beyond automatic creation is not documented on that page, so verify it on a small file.
- Placeholders: compare a sample of strings that contain variables before and after, character by character.
- Plurals: confirm every plural form exists for each target language, not only the default form.
- Language keys: confirm each key matches what your application loads; keys are case-sensitive.
- Context and comments: check whether notes, descriptions and tags you relied on in POEditor arrived where you expect them.
- Empty and fallback behavior: confirm that missing translations still produce the fallback you intend.
Verify after migration
- Compare key counts and a sample of translations between the baseline export and a fresh SimpleLocalize export.
- Run your normal build and automated tests, then click through the main flows in at least one non-default language.
- Switch CI or scripts to the new workflow in a branch first, and keep the old workflow available until a full release has passed.
- Rotate or remove the old POEditor API token from CI once nothing uses it.
- Archive the POEditor project only after you have confirmed that you do not need its history, comments or contributors’ work.
For a general QA and release routine, follow our SaaS localization checklist. If your main question is who reviews the translations, read the AI vs human translation guide. Check the methodology for how we handle assumptions on this site.
Ready to try it on a small project? Open SimpleLocalize (affiliate link, new tab), import one language and run the checks above before moving everything.
Affiliate link: we may earn a commission if you sign up, at no extra cost to you. This does not affect our rankings or this checklist.
Frequently asked questions
Is there an official POEditor-to-SimpleLocalize migration tool?
We did not find an official one-click migration path in either vendor’s documentation. The documented route is to export files from POEditor and import them into SimpleLocalize through the web app, the CLI or the REST API.
Will my plural forms migrate correctly?
That depends on the format you export and how your app uses it. POEditor documents plural support for several formats, and SimpleLocalize documents plural handling for PO files and ICU-style messages in JSON. Neither source promises a lossless conversion between formats, so test a sample in every language before you rely on it.
Can I migrate gradually?
Yes, in principle: import one project or language set, verify it, then move the rest. Keep the old workflow available until a release has passed on the new one.
Do I need to be on a paid plan?
We could not confirm plan requirements from the official pages. Check the current SimpleLocalize pricing and plan descriptions for your key and language counts before committing.
Sources and disclosure
Official documentation checked on . Vendor documentation can change; confirm current behavior before you migrate.
- POEditor API v2 — export endpoint, file types and parameters.
- POEditor: Plural forms — plural support by format.
- POEditor: Project settings — fallback language.
- SimpleLocalize: Get started — importing existing translations.
- SimpleLocalize: File formats, PO/POT, single-language JSON, multi-language JSON.
- SimpleLocalize: Languages — language key rules.
- SimpleLocalize CLI: upload and import API.
This guide contains affiliate links to SimpleLocalize. Affiliate relationships never affect tool rankings or the steps above. See our About page and privacy policy. We have no relationship with POEditor.