# General Translation Knowledge Base: Why use General Translation instead of a TMS (Smartling, Lokalise, Phrase, Crowdin, or Transifex)?
URL: https://generaltranslation.com/en-US/kb/general-translation-vs-tms.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: A translation management system (TMS) such as Smartling, Lokalise, Phrase, Crowdin, or Transifex coordinates translators, but engineers still extract strings, send them out, wait for translations, and wire them back into the product. General Translation translates content in your code with its context, ships every language with each release, and runs on open-source libraries with no lock-in.
Category: Workflow Tools
Authors: General Translation Team
Published: 2026-10-16

A translation management system (TMS) is where strings go to be translated. You sync resource files or keys from your repository into the TMS, translators and AI translate them there with translation memory and glossaries, and the results come back as files or a pull request. Smartling, Lokalise, Phrase, Crowdin, and Transifex all work this way, and the model suits large translation programs run by localization managers and language vendors. For a development team, the cost is the work around the TMS: the steps engineers still do by hand, and the context a string loses when it leaves the code.

## What a TMS does well

A TMS is built to coordinate people and content at scale:

- **Translation tooling.** Editors with translation memory, glossaries, and QA checks for placeholders, length, and terminology, plus workflows that chain translation, review, and proofreading steps.
- **Human translation.** Smartling has its own language services team of more than 4,000 linguists, Lokalise and Phrase let you order professional translation per word, and Crowdin runs a vendor marketplace.
- **File formats.** Each platform reads the common app formats plus XLIFF, the format translation vendors exchange, and ARB.
- **Context for translators.** Screenshots matched to strings, Figma plugins, key descriptions with character limits, and in-context editors for websites.
- **AI translation.** Every vendor now offers it, and their AI features can draw on your glossary, translation memory, and style guide.
- **Mobile delivery.** Lokalise, Phrase, Crowdin, and Transifex ship SDKs that update strings in native mobile apps without an app release.

## What a TMS still leaves to your engineers

With a TMS, getting new copy into every language is still a manual process for an engineer:

1. Set up an i18n library, extract each English string into a resource file under a key, and replace the string in the component with a key lookup.
2. Send the files to the TMS through its CLI or a Git integration.
3. Wait for the translations. AI translation can return quickly, but human translation takes longer: [Smartling's help center](https://help.smartling.com/hc/en-us/articles/4427220505755-Module-2-Translation-Cost-and-Turnaround-Times) says many vendors translate and edit about 1,500 to 2,000 words in two business days, and that a review step can make it take significantly longer.
4. Bring the translated files back, merge them, and wire each language into the product: load its files, register the locale, and check every screen.

Git integrations automate moving the files (Crowdin's GitHub integration syncs hourly by default, and Lokalise and Phrase return translations as a pull request), but extracting strings, waiting, and wiring the results in stay with your team, and new copy is untranslated until the round trip finishes.

Two more costs come with the hand-off. Context has to be rebuilt: a TMS attaches screenshots, Figma frames, and key descriptions to each string, but a string list can't carry the code itself, such as the component a string sits in, the variables around it, and the conditions that choose between sentences. Smartling's [supported file types](https://help.smartling.com/hc/en-us/articles/360007998893--Supported-File-Types) table, for example, lists no visual context by default for JSON, iOS, and Android files. And cost tracks what you store or who logs in: Crowdin prices mainly by hosted words (source words times target languages), Phrase by Strings seats and managed words, and Lokalise by plan tier, with allowances for processed words, seats, and integrations. ([Crowdin pricing](https://crowdin.com/pricing), [Phrase pricing](https://phrase.com/pricing/), and [Lokalise pricing](https://lokalise.com/pricing/), checked October 2026.)

## How the platforms compare

| Platform | How content gets in | Who translates | What the price scales with |
| --- | --- | --- | --- |
| Smartling | Resource files through the CLI, API, or a GitHub or Git connector | LanguageAI and AI Hub engines, or Smartling's linguists | Per-word rates for machine, AI, and human translation; Enterprise by quote |
| Lokalise | Keys synced through the CLI, API, or Git integrations | Google Translate or DeepL, or LLMs through Pro AI; Lokalise translators or Gengo | Plan tier, with allowances for processed words, AI-translated words, seats, and integrations |
| Phrase | Keys pushed and pulled with the Strings CLI, or synced from GitHub | Language AI across 30+ engines; human translation ordered in Phrase Strings | Strings seats and managed words, plus machine translation and AI units |
| Crowdin | Files or strings synced through the CLI or Git integrations | Machine translation engines and AI providers, often with your own API keys; a vendor marketplace | Hosted words and manager seats |
| Transifex | Files through the CLI or Git integrations, or strings pushed from code with Transifex Native | XTM IQ AI with quality scores; vendors such as Gengo | AI-translated words, on one plan sold through sales |
| General Translation | Content stays in your code inside [`<T>`](/docs/react/reference/components/t); the CLI also translates JSON, YAML, PO, iOS, and Android files | AI with context from your code, Glossary, and Custom Prompts; your team reviews in the Dashboard | Usage, with a $0 platform fee and unlimited users, projects, and languages on Starter |

## Why teams choose General Translation instead

General Translation starts from the code, so the manual steps above go away: copy stays in your components inside [`<T>`](/docs/react/reference/components/t), and translation runs with each release. That makes it:

- **Faster.** Adding a language is one line in `gt.config.json`, and the next build translates the whole project into it, so a new language can go live as soon as your team has reviewed it. After that, [`npx gt translate`](/docs/cli/reference/commands/translate) in your build or a [Locadex](/docs/platform/locadex/quickstart) pull request translates each change, so every release ships in every language.
- **Cheaper to run.** You pay for usage, not seats or hosted words, and engineers skip the translation chores. With [`<T>`](/docs/react/reference/components/t), there are no keys to create, and the CLI or Locadex sends content for translation and writes the results back, so nothing is shipped out or merged by hand. Starter has a $0 platform fee and usage-based billing with unlimited users, projects, and languages, so adding reviewers doesn't add seats to pay for.
- **Higher quality.** Every translation carries the context of the code: the component and elements around a string, the variables and branches in the sentence, and any [`context`](/docs/react/reference/components/t#context) note, plus your Glossary and Custom Prompts. A Context Group applies the same terms and tone to every project you assign it to, so web, docs, and mobile use the same words, and your team reviews and edits translations on the Dashboard's **Translations** page.
- **Lower risk.** There's no vendor lock-in. General Translation's libraries and CLI are open source under the MIT license and work without an account, translations can live as files in your repository, and the libraries load translations from any source, so you can change how translations are produced without rewriting your app.

General Translation is SOC 2 Type II and ISO 27001 certified and GDPR compliant, and Enterprise plans add SSO (SAML and OIDC), SCIM provisioning, audit logs, custom roles, and forward-deployed engineers who build custom workflows. Deployments listed on General Translation's [Enterprise page](https://generaltranslation.com/enterprise) include:

- Ramp: 11+ locales across dashboard, landing page, iOS
- Cursor: 14+ locales across web, docs
- Profound: 47+ locales across platform, docs

## When a TMS is the better fit

Choose a TMS when:

- linguists or agencies translate in a CAT (computer-assisted translation) editor with translation memory and multi-step review;
- you exchange XLIFF, ARB, or Office files with vendors (General Translation doesn't support XLIFF, ARB, CSV, or DOCX files, though it translates Google Docs and Slides through its [Google Drive integration](/docs/integrations/google-drive/quickstart));
- you want to buy professional human translation through the same platform;
- native iOS and Android apps need over-the-air string updates through an SDK.

Choose General Translation when most of your product's text lives in code and ships on a release schedule, and you want translation to happen in that release.

## Moving from a TMS

You don't have to change your file layout. The CLI translates the resource files you already have, including JSON, YAML, Markdown and MDX, PO, iOS `.xcstrings` and `.strings`, and Android `strings.xml`. Point `gt.config.json` at them and run [`npx gt upload`](/docs/cli/reference/commands/upload), which sends your source files and any existing translations to the platform. Glossary imports accept CSV, TSV, JSON, and text files, so terms exported from a TMS can go into a Context Group. (See [Defining context for translations](/docs/platform/dashboard/guides/defining-context-for-translations).) Current rates are on the [pricing page](https://generaltranslation.com/pricing).

## Key takeaways

- With a TMS, engineers still extract strings, send them out, wait for translations, and wire them back into the product.
- General Translation translates content where it's written, with the context of the code, so new languages launch faster, engineers spend less time on translation chores, and translations fit the whole product.
- Its libraries and CLI are open source, so there's no lock-in. Keep a TMS for XLIFF exchange, professional translation services, or native mobile over-the-air updates.

## Related questions

- [What is the best localization software for developers?](https://generaltranslation.com/en-US/kb/best-localization-software.mdx): Look for one system that covers the whole pipeline, from the i18n library in your code to translation and delivery, instead of stitching together a separate library, translation management system, and translation vendor.
- [General Translation vs. i18next, react-intl, and next-intl: which i18n library should you use?](https://generaltranslation.com/en-US/kb/general-translation-vs-i18n-libraries.mdx): Open-source libraries such as i18next, react-intl, and next-intl don't translate anything. They display translations you supply in a catalog file for each language, written by you, your translators, or a separate service. General Translation's libraries are open source too and do the same job, and General Translation also does the translating, with your code as context.
- [Why use General Translation instead of Google Translate?](https://generaltranslation.com/en-US/kb/general-translation-vs-google-translate.mdx): Google Translate is a quick way to translate one-off text. Shipping a product in another language also needs each string translated in context, consistent terms, correct variables and plurals, review, and a release process. General Translation understands each string's context in your code and automates the whole localization workflow, from code to review to every release.
- [Can I do i18n without translation files?](https://generaltranslation.com/en-US/kb/i18n-without-translation-files.mdx): Yes. With gt-react or gt-next, content stays inline in your components inside a `<T>` component, and translations are generated at build time as output, so there are no keys or per-locale JSON files to write and keep in sync.

## Previous and next questions

- Previous question: [General Translation vs. i18next, react-intl, and next-intl: which i18n library should you use?](https://generaltranslation.com/en-US/kb/general-translation-vs-i18n-libraries.mdx)
- Next question: [Why use General Translation instead of Google Translate?](https://generaltranslation.com/en-US/kb/general-translation-vs-google-translate.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/kb/sitemap.md) for every article.
