# General Translation Knowledge Base: Google 翻訳の代替：General Translation と Google 翻訳の比較
URL: https://generaltranslation.com/ja/kb/general-translation-vs-google-translate.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Google 翻訳は、単発のテキストをすばやく翻訳するのに便利ですが、製品を別の言語でリリースするには、各文字列を文脈に沿って翻訳し、用語を統一し、変数や複数形を正しく扱い、レビューを行い、リリースプロセスを整える必要があります。General Translation はコード内の各文字列の文脈を理解し、コードからレビュー、そして毎回のリリースまで、ローカライゼーションのワークフロー全体を自動化します。
Category: 翻訳
Last updated: 2026-10-16
Authors: General Translation Team
Published: 2026-10-16

Google 翻訳は、別の言語で書かれたページを読んだり、段落を一度だけ翻訳したりするには手軽な方法です。しかし、製品のローカライゼーションで難しいのは、すべての文字列を UI 上での意味に合わせて翻訳すること、リリースをまたいで用語を統一すること、そしてアプリが読み込める場所に翻訳を届けることです。アプリで Google 翻訳をどのように使っても、これらの一部は自分で対応する必要があります。

## アプリで Google 翻訳を使う 3 つの方法

### 訪問者のブラウザにページを翻訳させる

Chrome は、ユーザーが読めない言語のページを表示すると翻訳を提案します。翻訳はページの読み込み後に訪問者のブラウザ内で行われ、Google の翻訳スクリプトがページのテキストを、`<font>` 要素でラップされた翻訳済みテキストに置き換えます。開発者は翻訳結果を目にすることもレビューすることもできず、検索エンジンがクロールできる翻訳済み URL も存在しません。一方で、多言語サイトに関する Google のガイダンスでは、言語ごとに個別の URL で公開することが推奨されています ([Managing multilingual sites](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites)) 。

この書き換えによって React アプリが壊れることもあります。React は自身がレンダリングしたテキストノードへの参照を保持しているため、翻訳でそれらが置き換えられると、次の更新時に `NotFoundError: Failed to execute 'removeChild' on 'Node'` が発生して失敗する場合があります。React のメンテナーは 2018 年にこの問題の issue ([react#11538](https://github.com/react/react/issues/11538)) をクローズしました。その理由として、他のバグを隠蔽したり一般的なケースのパフォーマンスを低下させたりせずに、React 側でこれを回避することはできないと説明しています。なお、`translate="no"` が指定された要素は書き換えの対象外です。

### Website Translator ウィジェットを追加する

Google の埋め込み型 Website Translator は、学術機関、政府機関、非営利団体のサイトや非商用サイトでのみ利用が認められているため、企業が自社製品に組み込むことはできません ([Google Translate Help](https://support.google.com/translate/answer/2534559?co=GENIE.Platform%3DDesktop)) 。

### Cloud Translation API を呼び出す

Cloud Translation API は、開発者向けに作られた選択肢です。HTML タグはそのまま保持されます。Advanced エディションでは、HTML 入力に含まれる `translate="no"` または `class="notranslate"` が指定されたテキストを翻訳対象から除外できるほか、用語集、例文ペアを使った適応型翻訳、Gemini をベースにした Translation LLM も利用できます。リクエストには、テキストと言語に加えて、必要に応じてモデルと用語集を指定します：

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

文字列がどこに表示されるかを指定するフィールドはありません。ドイツ語では「Save」は *speichern* (ファイルを保存する) にも *sparen* (節約する) にもなりますが、単語ひとつだけのリクエストでは、モデルにはどちらを選ぶべきかの手がかりがありません。パイプラインの残りの部分は自分で構築する必要があります。i18n ファイルからの文字列の抽出、`{{count}}` などのプレースホルダーの保護、各言語の複数形の生成、結果の書き戻し、変更のたびの再実行、そして次回の実行で上書きされないかたちでレビュー担当者が出力を修正できる仕組みの用意です。さらに、出力をユーザーに表示する場合は、Google が定める帰属表示も必要です。結果の横への「powered by Google Translate」バッジの表示、未修正の出力への免責事項の記載、検索エンジンにインデックスされるページへの機械翻訳マークアップの付与が求められます ([帰属表示の要件](https://docs.cloud.google.com/translate/attribution)) 。

## 各選択肢の比較

| アプローチ                 | 各文字列の文脈                    | 変数と複数形                                                                                                                              | 検索エンジン                                              | レビューと更新                                                  |
| --------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------- |
| ブラウザ翻訳                | ページ上に表示されているテキスト           | プレーンテキストとして翻訳される                                                                                                                    | 新たにインデックスされるものはない                                   | レビューなし。訪問者のブラウザごとに毎回翻訳し直される                              |
| Cloud Translation API | テキストのほか、任意で用語集や例文ペア        | プレースホルダーの保護や各言語の複数形の構築は自分で行う                                                                                                        | 各言語を個別の URL で公開すればインデックスされる                         | スクリプトを自分で再実行し、レビューの仕組みも自前で構築する                           |
| General Translation   | 周囲の JSX、文脈メモ、用語集、カスタムプロンプト | [`<Var>`](/docs/react/reference/components/var) の値は翻訳対象から除外され、[`<Plural>`](/docs/react/reference/components/plural) の分岐は文全体として翻訳される | `gt-next` のロケールルーティング (`/es/about` など) によりインデックスされる | ビルドや Locadex のプルリクエストのたびに変更箇所が翻訳され、レビュー担当者はダッシュボードで編集できる |

外国語のコンテンツを読む場合や、社内向けのテキストを一度だけ翻訳する場合は Google 翻訳 を使いましょう。機械翻訳の結果だけが必要で、文脈、プレースホルダー、複数形、レビュー、帰属表示は自分で構築するという場合は Cloud Translation API が適しています。アプリの UI、ドキュメント、マーケティングサイトなど、製品に組み込んで提供する翻訳で、どの言語でも自然に読め、リリースのたびに最新の状態を保つ必要がある場合は General Translation を使いましょう。

## General Translation の違い

General Translation は、Google 翻訳 では利用者任せになっているローカライゼーションの領域をカバーするために作られています。主な違いは2つあります。

* **文脈全体を理解します。** Cloud Translation のリクエストに含まれるのは、テキストと言語、そして任意の用語集だけです。General Translation は、各文字列をプロダクト内での位置づけを踏まえて翻訳します。周囲のコンポーネントや要素、文中の変数や複数形、追加した文脈メモ、さらに用語集とカスタムプロンプトまで考慮します。コンテキストグループを使えば、割り当てたすべてのプロジェクトに同じ用語とトーンが適用されるため、アプリ、ドキュメント、マーケティングサイトの言葉づかいを統一できます。
* **ローカライゼーションのワークフロー全体を自動化します。** オープンソースのライブラリで React、Next.js、Vue、Node.js のコードを国際化できます。さらに Next.js と React のアプリでは、General Translation の AIエージェントである [Locadex](/docs/platform/locadex/quickstart) がそのコードを代わりに書いてくれます。[`npx gt translate`](/docs/cli/reference/commands/translate) はビルドや CI の中で実行され、翻訳をリポジトリまたは General Translation の CDN に書き出します。レビュアーはダッシュボードの **Translations** ページで翻訳を編集でき、すべてのリリースが全言語で提供されます。

文脈がコード上でどう表れるかを見てみましょう。この請求プラン切り替えのバッジには「Save 20%」と表示されています。

```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) は、ブロックを 1 つの単位として、その要素 (ボタンとバッジ) や [`context`](/docs/react/reference/components/t#context) のメモと一緒に送信します。そのため、翻訳時に「Save」の意味を正しく解決し、割引の表記を各言語にとって自然な位置に配置できます。[`<Var>`](/docs/react/reference/components/var) は割引額のプレースホルダーを保持し、その値が General Translation API に送信されることはありません。用語集を使えば製品名などの用語をすべての言語で統一でき、カスタムプロンプトではドイツ語で敬称の「Sie」を使うといったルールを設定できます ([翻訳の文脈を定義する](/docs/platform/dashboard/guides/defining-context-for-translations)および[翻訳のレビューと編集](/docs/platform/dashboard/guides/reviewing-translations)を参照) 。ユーザー生成コンテンツや CMS のテキストなど、実行時にしか存在しないコンテンツは、`gt-node` の [`tx`](/docs/node/reference/functions/tx) がリクエストに応じて翻訳します。

General Translation は 120 以上のロケールに対応しています。まずは [Next.js クイックスタート](/docs/react/nextjs-quickstart)または [Reactクイックスタート](/docs/react/react-quickstart)から始めましょう。

## 重要なポイント

* Google 翻訳はテキストを十分な品質で翻訳します。しかし、ブラウザ翻訳ではレビューができず、検索エンジンにインデックスされるページも生成されないうえ、React アプリが壊れることもあります。また、Website Translator ウィジェットは非営利サイトでしか利用できません。
* Cloud Translation API のリクエストには、文字列がどこに表示されるかを指定するフィールドがありません。さらに、プレースホルダー、複数形、レビュー、配信、帰属表示はすべて自前で構築する必要があります。
* General Translation は、コード内の各文字列の文脈を理解したうえで、コードの国際化からレビュー、そしてすべてのリリースを全言語で出荷するまで、翻訳にまつわるワークフローを自動化します。

## Related questions

- [General Translation vs. i18next、react-intl、next-intl：どのi18nライブラリを使うべきか？](https://generaltranslation.com/ja/kb/general-translation-vs-i18n-libraries.mdx): i18next、react-intl、next-intlなどのオープンソースライブラリ自体は、翻訳を一切行いません。これらが行うのは、あなた自身や翻訳者、あるいは別のサービスが作成し、言語ごとのカタログファイルに用意した翻訳を表示することだけです。General Translationのライブラリも同じくオープンソースで同じ役割を果たしますが、General Translationはさらに、コードを文脈として活用しながら翻訳そのものも行います。
- [TMS（Smartling、Lokalise、Phrase、Crowdin、Transifex）ではなく General Translation を使う理由](https://generaltranslation.com/ja/kb/general-translation-vs-tms.mdx): Smartling、Lokalise、Phrase、Crowdin、Transifex などの翻訳管理システム（TMS）は翻訳者間の作業を取りまとめますが、文字列の抽出、送信、翻訳待ち、プロダクトへの再組み込みは依然としてエンジニアの仕事です。General Translation はコード内のコンテンツを文脈ごと翻訳し、リリースのたびに全言語をまとめて提供します。ロックインのないオープンソースのライブラリ上で動作します。
- [JSX 内の条件付きテキストはどう翻訳すればよいですか？](https://generaltranslation.com/ja/kb/translate-conditional-jsx.mdx): 三項演算子の各分岐を個別に翻訳するのではなく、文全体を `<T>` コンポーネントでラップし、条件を `<Branch>` で表現しましょう。こうすることで翻訳者が文脈全体を把握でき、言語ごとに語順を組み替えられます。
- [React で複数形を扱うには？](https://generaltranslation.com/ja/kb/how-to-handle-plurals-in-react.mdx): n === 1 のような条件分岐で複数形の選択ロジックをハードコードするのは避けましょう。英語のみのアプリなら小さなヘルパーで十分ですが、多言語アプリではロケール対応の複数形規則が必要になります。gt-react や gt-next の `<Plural>` のような i18n コンポーネントを使えば、あらゆる言語の複数形に対応できます。
- [多言語対応のNext.jsアプリでSEOを設定するには？](https://generaltranslation.com/ja/kb/multilingual-nextjs-seo.mdx): 言語ごとに専用のURLを用意し、html の lang 属性を設定します。各ページのカノニカルURLは自身を指すようにし、すべての言語の hreflang 代替リンクを追加します。さらに、タイトルと説明文を翻訳し、すべての言語版をサイトマップに掲載します。

## Previous and next questions

- Previous question: [General Translation と Weblate の比較：どちらを使うべきか](https://generaltranslation.com/ja/kb/general-translation-vs-weblate.mdx)
- Next question: [i18next の代替：General Translation と i18next の比較](https://generaltranslation.com/ja/kb/general-translation-vs-i18next.mdx)

## Sitemap

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