|Labs
デモを予約プラットフォーム
React (Lingo Compiler)
Alpha
React MCPReact (i18n)旧CLI(v0)
非推奨

Lingo.dev Compiler

  • 仕組み
  • セットアップ
  • Compiler クイックスタート

フレームワーク

  • Next.js 連携
  • Vite + React

ガイド

  • ロケールの切り替え
  • 自動複数形変換
  • 手動オーバーライド
  • ビルドモード
  • プロジェクト構成
  • 翻訳プロバイダー
  • カスタムロケールリゾルバー
  • 開発ツール

リファレンス

  • ベストプラクティス
  • 設定リファレンス
  • トラブルシューティング
  • 移行ガイド
  • 最適化
  • 出力形式

ベストプラクティス

アルファ

Lingo.dev Compiler はアルファ版です。動作はまだ安定しておらず、本番環境での利用は推奨していません。API はリリースごとに変更される可能性があります。

ここで紹介するベストプラクティスは、Lingo.dev Compiler で信頼性が高く、コスト効率にも優れた結果を得るための実践パターンです。ビルドパイプライン、コード構成、翻訳品質、テストをカバーしています。

ビルドパイプライン#

3つのモードを使い分ける#

1

開発 - pseudotranslator

即時にフィードバックを得るには dev.usePseudotranslator: true を有効にします。API 呼び出しは不要、コストもかからず、結果もすぐに確認できます。疑似翻訳を使えば、未翻訳の文字列を見つけたり、レイアウトを検証したりできます。

ts
{
  buildMode: "translate",
  dev: { usePseudotranslator: true },
}
2

CI - 翻訳モード

buildMode: "translate" と実際のプロバイダーを使って実行します。各 CI 実行後に更新された .lingo/metadata.json をコミットして、本番環境でも翻訳を利用できるようにしてください。

bash
LINGO_BUILD_MODE=translate npm run build
3

本番 - cache-only モード

buildMode: "cache-only" でデプロイします。本番環境で API キーは不要です。ビルドは決定的で高速に実行できます。

bash
LINGO_BUILD_MODE=cache-only npm run build

バージョン管理#

.lingo/ をリポジトリにコミットする#

.lingo/metadata.json ファイルは、キャッシュされたすべての翻訳の信頼できる唯一の情報源です。cache-only モードでの本番ビルドはこれに依存します。

gitignore
# .gitignore - do NOT ignore .lingo/
node_modules/
dist/
.env

.lingo/metadata.json がコミットされていないと、cache-only モードでは読み込める翻訳がないため、本番ビルドは失敗します。

翻訳差分をレビューする#

CI が翻訳の更新をコミットしたら、プルリクエストで .lingo/metadata.json の差分をレビューしてください。これにより、本番環境に反映される前に翻訳上の問題を見つけられます。コード変更をレビューするのと同じ感覚です。

コード構成#

翻訳対象のテキストは JSX に直接書く#

Compiler は JSX をスキャンして翻訳可能なコンテンツを検出します。JavaScript の変数、定数、外部ファイルに置かれたテキストは検出されません。

tsx
// Good - compiler detects this text
export function Header() {
  return <h1>Welcome to our app</h1>;
}

// Bad - compiler cannot detect text in a variable
const title = "Welcome to our app";
export function Header() {
  return <h1>{title}</h1>;
}

大規模なコードベースでは useDirective を使う#

大規模なプロジェクトでは、すべてのファイルをスキャンするとビルド時間が伸びます。useDirective: true を有効にし、ユーザー向けテキストを含むファイルにだけ 'use i18n' を追加してください。

ts
{
  useDirective: true,
}
tsx
'use i18n';

// Only this file is scanned for translations
export function PublicPage() {
  return <h1>Welcome</h1>;
}

sourceRoot は必要最小限に絞る#

sourceRoot は、翻訳対象のコンポーネントを含む最小のディレクトリに設定してください。広すぎる sourceRoot だと不要なファイルまでスキャンしてしまいます。

プロジェクトタイプ推奨される sourceRoot
Next.js App Router"./app"
Vite + React"src"
モノレポ(useDirective 使用時)"."

翻訳品質#

ブランド用語には手動オーバーライドを使う#

ブランド名、製品名、法的文言には、AI 翻訳に任せるのではなく manual overrides を使うべきです。

tsx
<h1 data-lingo-override={{ es: "Motor de Localizacion", de: "Lokalisierungs-Engine" }}>
  Localization Engine
</h1>

コスト最適化にはロケールペアのマッピングを使う#

モデルごとに得意分野も価格帯も異なります。高価なモデルは本当に必要な言語に割り当て、それ以外ではコスト効率のよいモデルを使いましょう。

ts
{
  models: {
    "*:*": "groq:llama-3.3-70b-versatile",      // Fast, cost-effective default
    "*:ja": "anthropic:claude-3-5-sonnet",       // Higher quality for Japanese
    "*:zh-Hans": "anthropic:claude-3-5-sonnet",  // Higher quality for Chinese
  },
}

用語集とブランドボイスには Lingo.dev のエンジンを使う#

アプリ全体で用語の一貫性を保ちたい場合は、Lingo.dev 上で ローカライゼーションエンジン に glossary と ブランドボイス を設定してください。これらはすべての翻訳リクエストに自動で適用されます。

複数形処理#

不要なら複数形処理を無効にする#

アプリで数値の件数をテキストと一緒に表示しない場合は、ビルドの複雑さを抑えるために複数形処理を無効にしてください。

ts
{
  pluralization: { enabled: false },
}

件数に応じたテキストは自然に書く#

複数形処理が有効な場合は、数値変数を含むテキストを自然な形で記述してください。Compiler が ICU MessageFormat への変換を処理します。

tsx
// Good - the compiler detects and pluralizes this
<p>You have {count} items in your cart</p>

// Also good - works with any numeric expression
<p>{unreadCount} unread messages</p>

テスト#

まず pseudotranslator でテストする#

実際の翻訳を生成する前に、pseudotranslator を使って翻訳対象を漏れなくカバーできているか確認してください。

  1. dev.usePseudotranslator: true を有効にする
  2. すべてのページとコンポーネントを確認する
  3. [!!! ... !!!] マーカーの付いていないテキストは翻訳されていません
  4. テキスト配置の問題を修正する(テキストを JSX 内に移動する、sourceRoot を調整する、'use i18n' ディレクティブを追加する)

未翻訳の文字列は、実際の翻訳を生成した後で気づくよりも、pseudotranslator で先に見つけるほうが速くて低コストです。

リリース前に実際の翻訳でテストする#

リリース前に pseudotranslator を無効にし、少なくとも1つの対象ロケールに対して実際の翻訳を生成してください。

ts
{
  dev: { usePseudotranslator: false },
}

レイアウト崩れ、テキストの切れ、双方向テキストの問題など、疑似翻訳では見つけられない点を確認してください。

次のステップ#

Build Modes
CI と本番環境のビルド設定
Translation Providers
プロバイダーの選び方とロケールペアのマッピング
Development Tools
pseudotranslator と翻訳サーバー
Troubleshooting
よくある問題と解決策

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

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