# General Translation Knowledge Base: General Translation と i18n-tasks：どちらを使うべきか？
URL: https://generaltranslation.com/ja/kb/general-translation-vs-i18n-tasks.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: i18n-tasks は、Rails I18n の不足キーや未使用キーを検出し、ロケールファイルを整理し、Google Translate、DeepL、OpenAI、Yandex、watsonx を使って不足キーを補完できる Ruby gem です。General Translation は、用語集、カスタムプロンプト、ダッシュボードでのレビューを活用してロケールファイル全体を翻訳します。両者は役割が異なるため、多くのチームにとっては併用も有効です。
Category: ワークフローツール
Last updated: 2026-10-16
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-16

i18n-tasks は、i18n gem を使用する Ruby アプリ (すべての Rails アプリが該当します) 向けのコマンドラインツールです。コード内の `t(".title")` のような呼び出しをスキャンしてロケールファイルと照合し、不足しているキーや未使用のキーを報告します。また、`translate-missing` コマンドを使えば、自分で用意した API キーで機械翻訳サービスを利用し、抜けを補完できます。翻訳のチェックや不足キーの機械翻訳はできるものの、英語が変更されたときに翻訳を最新の状態に保つ機能はありません。一方、翻訳そのものを担うのが General Translation です。その CLI は、用語集とカスタムプロンプトを適用しながら、英語の翻訳元からすべてのロケールファイルを書き出します。つまり、この 2 つのツールは競合するというより、互いに補完し合う関係にあります。

## i18n-tasks が得意なこと

* **コードから欠落キーと未使用キーを検出。** [AST スキャナーが `.rb` と `.html.erb` ファイルを解析し](https://github.com/glebm/i18n-tasks#features--limitations) (HAML などの形式には正規表現スキャナーで対応) 、`t(".title")` のような相対キーを解決したうえで、コードでは使われているのにロケールに存在しないキーや、定義されているのに一度も使われていないキーを報告します。
* **複数形を考慮したチェック。** rails-i18n の複数形規則と組み合わせると、[`missing` は CLDR の複数形が欠けているロケールを報告します](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md) (ポーランド語の `few` や `many` など) 。
* **CI に組み込みやすい。** `missing`、`unused` などのチェックは問題を検出するとステータス 1 で終了します。さらに、欠落キーや未使用キーがあるとテストスイートを失敗させる [RSpec と Minitest のテンプレート](https://github.com/glebm/i18n-tasks/tree/main/templates)も gem に同梱されています。
* **ファイルの整理。** [`normalize` はキーを並べ替え](https://github.com/glebm/i18n-tasks#normalize) (`-p` を付けると、設定で割り当てられたファイルへキーを移動) 、`mv` と `rm` は全ロケールにわたってキーの名前変更や削除を行い、`find` はキーの使用箇所を表示し、`check-consistent-interpolations` は翻訳時に名前が変わったり抜け落ちたりした `%{count}` を検出します。
* **5 つの翻訳バックエンド。** [`translate-missing` は Google Translate、DeepL、Yandex、OpenAI、IBM watsonx に対応しています](https://github.com/glebm/i18n-tasks#translation-backends)。[DeepL の用語集 ID やオプション](https://github.com/glebm/i18n-tasks/blob/main/templates/config/i18n-tasks.yml)、または OpenAI のモデル (デフォルトは `gpt-4o-mini`) 、システムプロンプト、ロケールごとのプロンプトを設定できます。`%{...}` プレースホルダーは送信前にトークンに置き換えられ、受信後に復元されます。
* **無料。** [MIT ライセンス (バージョン 1.1.2) ](https://rubygems.org/gems/i18n-tasks)で公開されています。費用は各翻訳プロバイダーに直接支払う形で、通常は文字数またはトークン数に応じた従量課金です。

## i18n-tasks では対応しきれないこと

以下は、英語・ポーランド語・スペイン語のファイルを持つ小規模な Rails アプリで `missing` と `unused` を実行した例です。このアプリでは、受信トレイのビューがどこにも定義されていないキーを呼び出しています。

```text title="bundle exec i18n-tasks missing (excerpt)"
| Locale | Key                 | Value in other locales or source  |
|  all   | inbox.show.empty    | app/views/inbox/show.html.erb:3   |
|   es   | inbox.show.title    | en Inbox                          |
|   es   | inbox.show.unread   | en {"one" => "You have %{count} unread message.", ...} |
|   pl   | flash.saved         | en Saved.                         |
|   pl   | inbox.show.unread   | few, many                         |
```

```text title="bundle exec i18n-tasks unused"
| Locale | Key                 | Value    |
|   en   | inbox.show.archived | Archived |
```

このレポートは正確で役に立ちます。ただし、欠けている部分を埋める作業は依然としてあなたが担うことになります。

* **Google バックエンドが送信するのは文字列の値だけです。** このバックエンドのネットワーク呼び出しをスタブ化して実行したところ、`translate-missing es` はプレースホルダーをマスクした以下の値を送信しましたが、キー、ファイル、ビューは送信しませんでした。

  ```text
  ["Inbox", "You have X__0 unread message.", "You have X__0 unread messages.", "Archived"]
  ```

* **複数形は英語の構成のままです。** ポーランド語でまったく存在しなかったキーには `one` と `other` が書き込まれ、次に `missing` を実行すると `few, many` が不足として報告されました。

* **英語を変更しても再翻訳されません。** [`translate-missing` が埋めるのは、ロケールに存在しないキーです](https://github.com/glebm/i18n-tasks#translate-missing-keys)。英語の文字列を編集しても、既存の翻訳は元のまま残ります。

* **Google へのリクエストが失敗しても、ファイルが書き込まれることがあります。** Google APIキーを設定しないまま `translate-missing --backend=google pl` を実行すると、スライスの失敗を警告しながらも 2 つのキーを翻訳済みと報告し、英語の値を `pl.yml` にコピーして終了コード 0 で終了しました。以降、これらのキーは `missing` に表示されなくなり、`eq-base` (翻訳元と同一の翻訳) でしか確認できませんでした。

## General Translationの位置づけ

翻訳の生成はGeneral Translationが担い、Railsのカタログのチェックはi18n-tasksが担います。`gt` CLIで英語ファイルを指定し、CIで[`npx gt translate`](/docs/cli/reference/commands/translate)を実行してください。すべての対象ロケールのファイルが書き出されます。2回目以降の実行では、変更のないエントリは既存の翻訳を再利用し、英語が変更されたエントリのみ再翻訳します。各実行ではプロジェクトの[用語集とカスタムプロンプト](/docs/platform/dashboard/guides/defining-context-for-translations)が適用されるため、用語やトーンがすべてのファイルで統一されます。また、チームはダッシュボードで[翻訳をレビュー・編集](/docs/platform/dashboard/guides/reviewing-translations)できます。

Rubyソースのスキャンとカタログの検証には、引き続きi18n-tasksを使用してください。翻訳の生成にはGeneral TranslationのNode.js CLIを使い、生成されたYAMLは[General Translation vs. Rails I18n](/kb/general-translation-vs-rails-i18n)の手順に従って、ロケールをルートとするRailsの形式に変換します。このワークフローは、翻訳元と翻訳先でキー構造が一致するカタログに適しています。

## i18n-tasks と General Translation の比較一覧

| 機能         | i18n-tasks                                  | General Translation                                          |
| ---------- | ------------------------------------------- | ------------------------------------------------------------ |
| 役割         | Ruby コードをスキャンし、カタログ内の不足キーや未使用キーをチェック        | 翻訳を生成し、翻訳元の文言の変更に合わせて常に最新の状態に保つ                              |
| 複数形の検証     | ロケールに必要な複数形カテゴリをチェック                        | 翻訳生成と i18n-tasks のチェックを併用                                    |
| 機械翻訳       | `translate-missing`(任意のプロバイダーを利用)           | [`npx gt translate`](/docs/cli/reference/commands/translate) |
| 翻訳の文脈      | バックエンドに依存。DeepL は用語集 ID、OpenAI はプロンプトを受け付ける | ファイルの内容とメタデータ、および割り当てられた用語集とカスタムプロンプト                        |
| 英語が変更されたとき | 既存の翻訳はそのまま残る                                | 変更されたエントリが再翻訳される                                             |
| レビュー       | Git の差分                                     | ダッシュボードと Git の差分                                             |
| 費用         | gem は無料。プロバイダーが文字数またはトークン単位で課金              | [従量課金制の翻訳](https://generaltranslation.com/pricing)           |

ロケールファイルを翻訳者が作成していて、不足キーや未使用キーを CI で検出したい場合や、一部の文字列について機械翻訳の下書きを手早く作りたいだけの場合は、i18n-tasks 単体で十分です。英語の変更に合わせて翻訳を更新し、用語の一貫性を保ちながらダッシュボードでレビューしたい場合は、General Translation を使用してください。Rails の翻訳元のスキャンやカタログのチェックには、引き続き i18n-tasks を使用できます。

## CI で両方を使用する

[Rails インテグレーション](/kb/general-translation-vs-rails-i18n)で紹介した、英語からスペイン語へのカタログのセットアップを使用します。まず翻訳とロケールマッピングを実行し、次に i18n-tasks でキーの網羅性、複数形カテゴリ、プレースホルダーを検証します。

```bash
npx gt translate
ruby script/export_rails_locales.rb                     # Rails用にカタログをエクスポート
bundle exec i18n-tasks missing                           # コードで使用されているキーと複数形をチェック
bundle exec i18n-tasks unused
bundle exec i18n-tasks check-consistent-interpolations   # %{name} が翻訳元と一致するかをチェック
```

各 `i18n-tasks` コマンドは問題を検出するとステータス 1 で終了するため、壊れたファイルがマージされる前にジョブが失敗します。CLI を使うには、プロジェクトIDと、**Files &gt; Write** および **Translation queue &gt; Enabled** の権限を持つAPIキーが必要です。それぞれ `GT_PROJECT_ID` と `GT_API_KEY` として設定してください ([CLI の設定](/docs/cli/guides/configuring#credentials)を参照) 。

## 重要なポイント

* i18n-tasks は、Rails アプリで欠落しているキー、未使用のキー、不完全な複数形キーをチェックします。
* `translate-missing` は欠落しているキーを補完しますが、英語の翻訳元を編集しても既存の翻訳は更新されません。
* General Translation は、用語集とカスタムプロンプトを適用してロケールファイル全体を翻訳し、英語の変更に合わせて常に最新の状態に保ちます。同じ CI ジョブ内で、i18n-tasks のチェックより前に実行してください。

## Related questions

- [General Translation と Rails I18n：両方必要か？](https://generaltranslation.com/ja/kb/general-translation-vs-rails-i18n.mdx): Rails I18n はメッセージの検索と、日付や数値の書式設定を担います。General Translation は翻訳を生成し、英語の変更に合わせて翻訳を常に最新の状態に保つほか、チームでレビューできるダッシュボードも提供します。両者を組み合わせれば、リリースのたびに翻訳済みの Rails カタログを出荷できます。
- [General Translation と Mobility：どちらを使うべきか？](https://generaltranslation.com/ja/kb/general-translation-vs-mobility.mdx): Mobility は翻訳済みのモデル属性をデータベースに保存します。General Translation は、用語集とカスタムプロンプトを活用し、API を通じてそれらの翻訳を生成します。両者を組み合わせれば、Rails モデルをそのまま維持しながら、商品リストや投稿などのデータベースコンテンツを翻訳できます。
- [Google 翻訳の代替：General Translation と Google 翻訳の比較](https://generaltranslation.com/ja/kb/general-translation-vs-google-translate.mdx): Google 翻訳は、単発のテキストをすばやく翻訳するのに便利ですが、製品を別の言語でリリースするには、各文字列を文脈に沿って翻訳し、用語を統一し、変数や複数形を正しく扱い、レビューを行い、リリースプロセスを整える必要があります。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 はコード内のコンテンツを文脈ごと翻訳し、リリースのたびに全言語をまとめて提供します。ロックインのないオープンソースのライブラリ上で動作します。
- [開発者にとって最適なローカライゼーションソフトウェアとは？](https://generaltranslation.com/ja/kb/best-localization-software.mdx): ライブラリ、翻訳管理システム、翻訳ベンダーを個別に組み合わせるのではなく、コード内のi18nライブラリから翻訳、配信まで、パイプライン全体を1つでカバーできるシステムを選びましょう。

## Previous and next questions

- Previous question: [General Translation と GNU gettext：両方必要か？](https://generaltranslation.com/ja/kb/general-translation-vs-gettext.mdx)
- Next question: [General Translation と Intlayer の比較：どちらを使うべきか](https://generaltranslation.com/ja/kb/general-translation-vs-intlayer.mdx)

## Sitemap

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