# General Translation Knowledge Base: Google Translate alternatives: General Translation vs. Google Translate
URL: https://generaltranslation.com/en-GB/kb/general-translation-vs-google-translate.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Google Translate is a quick way to translate one-off text, but 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 localisation workflow, from code to review to every release.
Category: Translation
Last updated: 2026-10-16
Authors: General Translation Team
Published: 2026-10-16

Google Translate is a fast way to read a page in another language or translate a one-off paragraph. The harder parts of localising a product are translating every string with the meaning it has in your UI, keeping terms consistent across releases, and getting translations to where your app loads them. Whichever way you use Google Translate for an app, some of that is left to you.

## Video

The video is narrated in English, with English captions.

[Google Translate alternatives: General Translation vs. Google Translate](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-general-translation-vs-google-translate.mp4) (44 secs)

Google Translate is a quick way to translate one-off text, but shipping a product 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 workflow: wrap copy in `<T>` with a context note, keep values in `<Var>`, and run `npx gt translate` in your build while reviewers edit in the Dashboard.

## Three ways to use Google Translate for an app

### Let visitors&#39; browsers translate the page

Chrome offers to translate pages in languages the user doesn&#39;t read. The translation happens in the visitor&#39;s browser after the page loads: Google&#39;s translate script replaces the page&#39;s text with translated text wrapped in `<font>` elements. You don&#39;t see or review the result, and there&#39;s no translated URL for search engines to crawl, whereas Google&#39;s guidance for multilingual sites is to publish each language at its own URL ([Managing multilingual sites](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites)).

The rewrite can also break React apps. React keeps references to the text nodes it rendered, so once translation has replaced them, the next update can fail with `NotFoundError: Failed to execute 'removeChild' on 'Node'`. React&#39;s maintainers closed the issue ([react#11538](https://github.com/react/react/issues/11538)) in 2018, explaining that React itself can&#39;t work around it without masking other bugs or slowing down common cases. Elements marked with `translate="no"` are left untouched.

### Add the Website Translator widget

Google&#39;s embeddable Website Translator is restricted to academic, government, not-for-profit and non-commercial sites, so a company can&#39;t add it to its product ([Google Translate Help](https://support.google.com/translate/answer/2534559?co=GENIE.Platform%3DDesktop)).

### Call the Cloud Translation API

The Cloud Translation API is the option built for developers. It keeps HTML tags intact. For HTML input, its Advanced edition skips text marked `translate="no"` or `class="notranslate"`, and it adds glossaries, adaptive translation from example sentence pairs, and a Translation LLM built on Gemini. A request carries the text, the languages and, optionally, a model and a glossary:

```json title="translateText request body"
{
  "contents": ["Save"],
  "mimeType": "text/plain",
  "sourceLanguageCode": "en",
  "targetLanguageCode": "de"
}
```

There&#39;s no field for where a string appears. In German, &quot;Save&quot; is *speichern* (store a file) or *sparen* (spend less), and a one-word request gives the model nothing to choose by. The rest of the pipeline is yours to build: pulling strings out of your i18n files, protecting placeholders such as `{{count}}`, producing each language&#39;s plural forms, writing results back, rerunning on every change, and giving reviewers a place to fix output that the next run won&#39;t overwrite. If you show the output to users, Google also requires attribution: a &quot;powered by Google Translate&quot; badge next to results, a disclaimer for unmodified output, and machine-translation markup on pages that search engines index ([attribution requirements](https://docs.cloud.google.com/translate/attribution)).

## How the options compare

| Approach              | Context for each string                                               | Variables and plurals                                                                                                                                                                | Search engines                                             | Review and updates                                                                                  |
| --------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| Browser translation   | The visible page text                                                 | Translated as plain text                                                                                                                                                             | Nothing new to index                                       | No review; reruns in each visitor&#39;s browser                                                     |
| Cloud Translation API | The text, plus an optional glossary or example pairs                  | You protect placeholders and build each language&#39;s plural forms                                                                                                                  | Indexed once you publish each language at its own URL      | You rerun your script and build review yourself                                                     |
| General Translation   | The surrounding JSX, a context note, your Glossary and Custom Prompts | [`<Var>`](/docs/react/reference/components/var) values stay out of translation, and [`<Plural>`](/docs/react/reference/components/plural) branches are translated as whole sentences | Indexed with `gt-next` locale routing, such as `/es/about` | Each build or Locadex pull request translates what has changed, and reviewers edit in the Dashboard |

Use Google Translate to read foreign-language content or to translate internal text as a one-off. Use the Cloud Translation API when you want raw machine translation and are prepared to build context, placeholders, plurals, review and attribution yourself. Use General Translation when the translations ship in your product, such as app UI, docs or a marketing site that has to read correctly in every language and stay up to date with each release.

## What General Translation does differently

General Translation is built for the parts of localisation that Google Translate leaves to you. Two things set it apart:

* **It understands the whole context.** A Cloud Translation request carries the text and the languages, plus an optional glossary. General Translation translates each string with its place in your product: the component and elements around it, the variables and plural forms in the sentence, any context note you add, and your Glossary and Custom Prompts. A Context Group applies the same terms and tone to every project you assign it to, so your app, docs and marketing site use the same words.
* **It automates the whole localisation workflow.** Open-source libraries internationalise your code in React, Next.js, Vue and Node.js, and for Next.js and React apps, [Locadex](/docs/platform/locadex/quickstart), General Translation&#39;s AI agent, can write that code for you. [`npx gt translate`](/docs/cli/reference/commands/translate) runs in your build or CI and writes translations to your repository or General Translation&#39;s CDN, reviewers edit them on the Dashboard&#39;s **Translations** page, and each release ships in every language.

Here&#39;s what the context looks like in code. This billing toggle&#39;s badge reads &quot;Save 20%&quot;:

```tsx title="BillingToggle.tsx"
import { T, Var } from 'gt-react';

export function BillingToggle({ discount }: { discount: string }) {
  return (
    <T context="Pricing page billing toggle. Save means pay less, not store data.">
      <button>Yearly</button>
      <span className="badge">Save <Var>{discount}</Var></span>
    </T>
  );
}
```

[`<T>`](/docs/react/reference/components/t) sends the block as one unit, with its elements (a button and a badge) and the [`context`](/docs/react/reference/components/t#context) note, so the translation can resolve &quot;Save&quot; and place the discount wherever each language puts it. [`<Var>`](/docs/react/reference/components/var) holds a placeholder for the discount, and its value is never sent to the General Translation API. The Glossary pins terms such as product names in every language, and Custom Prompts set rules such as formal &quot;Sie&quot; in German. (See [Defining context for translations](/docs/platform/dashboard/guides/defining-context-for-translations) and [Reviewing and editing translations](/docs/platform/dashboard/guides/reviewing-translations).) For content that exists only at run time, such as user-generated or CMS text, [`tx`](/docs/node/reference/functions/tx) in `gt-node` translates on request.

General Translation supports more than 120 locales. Start with the [Next.js Quickstart](/docs/react/nextjs-quickstart) or the [React Quickstart](/docs/react/react-quickstart).

## Key takeaways

* Google Translate translates text well. Browser translation offers no review and no indexable pages, and it can break React apps, while the Website Translator widget is limited to non-commercial sites.
* A Cloud Translation API request has no field for where a string appears, and placeholders, plurals, review, delivery and attribution are all left for you to build.
* General Translation understands each string&#39;s context in your code and automates the workflow around translation, from internationalising the code through review to shipping every release in every language.

## Related questions

- [General Translation vs. i18next, react-intl, and next-intl: which i18n library should you use?](https://generaltranslation.com/en-GB/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 catalogue 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, but General Translation also does the translating, using your code as context.
- [General Translation vs. a TMS (Crowdin, Lokalise, Phrase)](https://generaltranslation.com/en-GB/kb/general-translation-vs-tms.mdx): Choose General Translation when developers want translation generation, code-derived context, and review connected to product releases. Keep your existing catalogues and rendering library, or author inline JSX without translation keys. A TMS fits programmes centred on language vendors, CAT editors, and XLIFF exchange; its integrations can automate the file transfers.
- [How do I translate conditional text in JSX?](https://generaltranslation.com/en-GB/kb/translate-conditional-jsx.mdx): Keep the sentence whole and translate every version of it, because a ternary splits it into fragments that lose their meaning and their place in each language's word order. General Translation does this with `<Branch>` inside `<T>`, which translates the sentence as one unit.
- [How do I handle plurals in React?](https://generaltranslation.com/en-GB/kb/how-to-handle-plurals-in-react.mdx): Handle plurals in React by giving each language one sentence per plural form and picking it with that language's plural rules, since English has 2 forms, Russian has 4 and Arabic has 6. General Translation's `<Plural>` component in gt-react and gt-next takes your source forms, and General Translation generates the forms each target language needs.
- [How do I set up SEO for a multilingual Next.js app?](https://generaltranslation.com/en-GB/kb/multilingual-nextjs-seo.mdx): Give each language its own prefixed URL, such as /en/about and /es/about, then publish html lang, a self-referencing canonical, hreflang alternates with x-default, a translated title and description, and a sitemap entry for each published language. Mark unpublished versions noindex. General Translation's gt-next routes each language to its own URL and translates titles with getGT.

## Previous and next questions

- Previous question: [General Translation vs. Weblate: which should you use?](https://generaltranslation.com/en-GB/kb/general-translation-vs-weblate.mdx)
- Next question: [i18next alternatives: General Translation vs. i18next](https://generaltranslation.com/en-GB/kb/general-translation-vs-i18next.mdx)

## Sitemap

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