|
ドキュメント
デモを予約プラットフォーム
プラットフォームMCPCLIAPIワークフロー
ガイド
変更履歴

ローカライゼーション

  • 概要
  • 翻訳API
  • Webアプリのローカライゼーション
  • モバイルアプリのローカライズ
  • Android with strings.xml
  • メールのローカライズ
  • 静的コンテンツ(例: .md、.json)
  • Next.js with Markdoc
  • Rails with i18n

ローカライズ

  • String Catalogを使ったiOS

ワークフロー

  • MCP でエンジンを設定
  • Jiraトリアージ
  • CI/CD

翻訳API

Lingo.devのローカライゼーションAPIは、設定済みのローカライゼーションエンジンを通してキー・バリューデータを翻訳します。HTTPリクエストを1回送るだけで、文字列を渡せば翻訳済みの文字列が返ってきます。用語集のルール、ブランドボイス、モデル選択も自動で適用されます。

APIを使うタイミング#

ローカライゼーションAPIは、翻訳をビルド時ではなく、実行時やバックエンドサービス内で行う場合に適しています。

ユースケース例
動的コンテンツデータベースに保存されたコース説明、レッスンタイトル、クイズ問題を翻訳する
ユーザー生成コンテンツレビュー、コメント、フォーラム投稿を必要に応じて翻訳する
APIレスポンスユーザーのロケールに応じて、ローカライズ済みのコンテンツをバックエンドから返す
通知メール件名、プッシュ通知、アプリ内メッセージを送信前に翻訳する

ビルド時と実行時

コンテンツが静的ファイル(JSON、Markdown、.strings)にあるなら、CLIやCI/CD integrationのほうが適しています。APIは、バックエンドでコンテンツをローカライズする用途向けに設計されています。

前提条件#

1

ローカライゼーションエンジンを作成する

すべてのAPIコールはローカライゼーションエンジンを通って実行されます。これは、どのLLMモデル、用語集、ブランドボイス、指示を適用するかを決める設定です。Lingo.devのダッシュボードで作成してください。

2

APIキーを生成する

APIリクエストはX-API-Keyヘッダーで認証します。キーはAPI Keysセクションで生成できます。キーが表示されるのは作成時の1回だけなので、安全に保管してください。

コンテンツをローカライズする#

ソースロケール、ターゲットロケール、キー・バリューデータを指定して、localizeエンドポイントにPOSTリクエストを送信します。リクエスト/レスポンスの完全なスキーマは、API referenceにまとまっています。

この例では、JavaScriptコース内の段落をスペイン語に翻訳します。

javascript
const content = {
  intro: "JavaScript is a programming language that powers the interactive elements of most websites. When you click a button, submit a form, or see content update without the page reloading, JavaScript is making that happen.",
};

const response = await fetch("https://api.lingo.dev/process/localize", {
  method: "POST",
  headers: {
    "X-API-Key": "your_api_key",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    engineId: "eng_abc123",
    sourceLocale: "en",
    targetLocale: "es",
    data: content,
  }),
});

const { data } = await response.json();
// {
//   intro: "JavaScript es un lenguaje de programacion que impulsa los elementos interactivos de la mayoria de los sitios web. Cuando haces clic en un boton, envias un formulario o ves contenido actualizarse sin que la pagina se recargue, JavaScript lo esta haciendo posible."
// }

キーはそのまま保持されます。introを送ると、introが返ってきます。エンジンが翻訳するのは値だけです。

キーの構造化#

dataオブジェクトはフラットで、各キーは1つの文字列に対応します。意味の文脈が伝わるようにキーを設計してください。

javascript
const content = {
  "variables.intro": "Variables are containers for storing data values. In JavaScript, you declare them with let, const, or var.",
  "variables.example": "Use const for values that never change, and let for values that do.",
  "variables.exercise": "Declare a variable called age and assign it your age as a number.",
};

意味ごとに整理されたキーは、ローカライゼーションエンジンがより自然で一貫性のある翻訳を生成するのに役立ちます。エンジンは、1回のリクエストに含まれるすべてのキーを関連する文脈として捉えるため、variables.introとvariables.exampleは別々に送るより一緒に送るほうが、より一貫して翻訳されます。

技術用語

「const」や「let」のような語は、翻訳すべきでないプログラミング用語です。用語集を使って翻訳対象外として指定するか、ロケールごとの適切な表現にマッピングしてください。Claude CodeやCursorのようなAIコーディングアシスタントを使っている場合は、Localization MCPを使うことで、開発ワークフローの中で用語集ルールの設定を進めやすくなります。

保存時にローカライズする#

一般的なのは、コンテンツを読むタイミングではなく、作成時や更新時に翻訳するパターンです。こうしておけば、ユーザーがリクエストした時点で翻訳済みコンテンツはすでにデータベースに保存されています。

javascript
app.post("/api/lessons", async (req, res) => {
  const lesson = await db.lessons.create(req.body);

  const content = {
    intro: lesson.intro,
    example: lesson.example,
    exercise: lesson.exercise,
  };

  const targetLocales = ["es", "fr", "de", "ja"];

  const translations = await Promise.all(
    targetLocales.map(async (targetLocale) => {
      const response = await fetch("https://api.lingo.dev/process/localize", {
        method: "POST",
        headers: {
          "X-API-Key": process.env.LINGODOTDEV_API_KEY,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          sourceLocale: "en",
          targetLocale,
          data: content,
        }),
      });

      const { data } = await response.json();
      return { locale: targetLocale, data };
    })
  );

  await db.lessonTranslations.insertMany(
    translations.map((t) => ({
      lessonId: lesson.id,
      locale: t.locale,
      ...t.data,
    }))
  );

  res.json(lesson);
});

その後のローカライズ済みコンテンツの読み出しは、シンプルなデータベース参照だけで済みます。読み取り時にAPIコールは不要です。

javascript
app.get("/api/lessons/:id", async (req, res) => {
  const locale = req.query.locale || "en";

  if (locale === "en") {
    const lesson = await db.lessons.findById(req.params.id);
    return res.json(lesson);
  }

  const translation = await db.lessonTranslations.findOne({
    lessonId: req.params.id,
    locale,
  });

  res.json(translation);
});

次のステップ#

API Reference
localizeとrecognizeエンドポイントの完全なリクエスト/レスポンススキーマ
用語集
どの技術用語を翻訳し、どれをそのままにするかを制御する
ブランドボイス
ターゲットロケールごとに丁寧さやトーンを設定する
CI/CDワークフロー
静的コンテンツのローカライズをビルド時に自動化する

このページは役に立ちましたか?

Max PrilutskiyMax Prilutskiy·更新済み 約2か月前·2分で読めます