Features

Everything Parla does

Everything below is built and works today. Anything not listed here, Parla doesn't do yet.

Files in and out

Upload up to 2 MB per file. Files come back out in the format they came in, and each exported file is parsed again before download to prove it's valid.

  • JSON. Nested or flat. i18next v4 plural keys (_zero, _one, _two, _few, _many, _other) are grouped and written back with the plural forms each target language needs. ICU messages inside values are understood and checked.
  • Flutter .arb. @key descriptions are used as context, and @@locale is set for each language.
  • CSV. A key column and a source column, with optional description and max_length columns.
  • Apple .strings. The comment above each string is used as context.
  • Android strings.xml. <string>, <plurals> and <string-array>. Strings marked translatable="false" are left alone.
  • gettext .po and .pot. msgctxt, plural entries written with the target language's Plural-Forms header, and extracted comments used as context.
  • Rails YAML. Nested keys, one/other plural groups and %{name} placeholders.
  • 41 languages. Including right-to-left Arabic and Hebrew, each with its own plural categories.

Placeholder and structure checks

Run by code on every translation, whoever or whatever wrote it. A blocking problem means the string can't be approved and never reaches an exported file.

  • Placeholders recognised. ICU {name} and {0}, plural, select, selectordinal and #; i18next {{name}} and $t(key); printf %s, %d, %1$s, %@ and %.2f; Rails %{name}; Python %(name)s; HTML and XML tags; react-i18next <0>…</0>.
  • Blocking problems. A missing, added or renamed placeholder; an unmatched tag; reordered non-positional printf arguments; an ICU syntax error; select options that differ from the source; a plural without "other"; text over a character limit you set.
  • Warnings. Plural categories the target language needs but the translation lacks; text likely too long against the source's length; a glossary term not used as the glossary says.
  • Source changed. When a source string changes in a new release, its translations go back to review.

AI translation with product context

Translation uses Anthropic's Claude. Without an AI key configured, everything else in Parla still works.

  • Context it uses. The key name, the description from your file or typed by you, your project description, your glossary, similar approved translations and any character limit.
  • Inferred, labeled. The AI says what it inferred about a string, such as "button label", and Parla shows that as "Inferred by AI", apart from the context you gave.
  • Never silently repaired. If a placeholder breaks, Parla asks the AI once more with the exact problem. If it's still broken, the result is kept as a blocked draft for a person.
  • Pseudo-localisation. Download a pseudo-localised file (accented, lengthened text with placeholders intact) to test your UI before real translations exist.

Glossary and translation memory

  • Do-not-translate terms. Brand and product names stay exactly as written, and Parla warns when a translation changes one.
  • Preferred translations. Set the word to use for a term in each language; the AI is told, and Parla warns when it isn't used.
  • Translation memory. Every approved translation is remembered. Exact matches are filled in for free (they don't count as words); similar ones are shown as suggestions and given to the AI.

Review and releases

  • Reviewer approval. Owners, admins and editors marked "Can approve" approve translations. Anyone who can edit can fix a string, reject it with a reason, or regenerate it.
  • Releases. Every upload of your source file is a release, with its new, changed and removed strings listed. Only what needs translating is translated.
  • Export choices. Export approved translations only (the default), or include unreviewed drafts that pass every check. Broken strings are listed and left out.

GitHub and the API

  • GitHub. Install Parla's GitHub App on the repositories you choose, or paste a fine-grained personal access token, stored encrypted. Pull the source file from a branch; push translations as one commit on a new branch with a pull request, after you confirm every file. Parla never commits to your default branch.
  • REST API. Workspace API keys (prl_…) with Bearer authentication: list projects, upload a source file, start translation, check status and download locale files.

Try it, then your workspace

  • The sample. No account: one file up to 50 KB, 100 strings and 1,500 words into one language, 5 tries a day, deleted after 24 hours. Bundled samples for a web app, an Android app and an iOS app.
  • Keep it. Create an account from the sample and the file comes with you into a new project.
  • Setup that fits. Tell Parla whether you're localising a web app, a mobile app or docs, and the first steps follow.
  • Free to start. Before a plan: 1 project, 1 target language and 1,000 AI-translated words a month.
  • Your data. Download your whole workspace as JSON, delete a project, or delete the workspace from Settings.

Questions buyers ask

Which locale file formats does Parla support?

Parla reads and writes JSON (nested, flat, i18next plural keys and ICU messages), Android strings.xml, iOS .strings, Flutter .arb, gettext .po and .pot, Rails YAML and CSV. Files come back in the same format, and each exported file is parsed again before download to confirm it's valid.

Part of the New Odyssey suite

Six tools for the work around your clients, from being found to packaging what you know. Each one works on its own.

  1. KleosGets you found
  2. OndaAnswers the inquiry
  3. BookaraQualifies and books
  4. AccordSends the proposal
  5. TallynOnboards the client
  6. AulaPackages your expertise