キーの除外

Lingo.dev CLIでは、特定の翻訳キーを除外して、翻訳処理から完全に除外することができます。除外されたキーはターゲットファイルにコピーされず、CLI操作中も変更されません。

キーを除外すると、CLIはコンテンツの検出と翻訳生成の際にそれらを完全にスキップします。

キー除外の設定

i18n.jsonのバケット設定にignoredKeysを追加します:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "ignoredKeys": ["internal/debug", "dev/settings", "temp/cache"]
    }
  }
}

ignoredKeys配列は、ネストされたキーを指定するためにスラッシュ(/)記法を使用し、複数のキーにマッチさせるためにアスタリスク(*)を使用します。

キー除外の仕組み

翻訳処理中、Lingo.dev CLIは:

  1. 除外キーを識別 — 設定から除外キーを特定します
  2. コンテンツ検出から除外 — 除外キーは処理されません
  3. ターゲットファイルでスキップ — 除外キーは生成された翻訳に表示されません
  4. 分離を維持 — 開発コンテンツと本番コンテンツを分離します

ワークフローの例:

// locales/en.json (source)
{
  "welcome": "Welcome to our platform",
  "system": {
    "component": "Lingo.dev CLI",
    "version": "1.0.0"
  },
  "internal": {
    "debug": "Debug mode enabled",
    "testData": "Sample test content"
  }
}

除外キー設定を使用した場合:

{
  "ignoredKeys": ["internal/debug", "internal/testData"]
}

生成されたスペイン語翻訳:

// locales/es.json (generated)
{
  "welcome": "Bienvenido a nuestra plataforma",
  "system": {
    "component": "Lingo.dev CLI",
    "version": "1.0.0"
  }
}

除外されていないキーのみが翻訳されます。internalセクション全体がターゲットファイルから除外されます。

ネストされたキーパス

スラッシュ(/)記法を使用して、任意の深さのキーを除外します:

{
  "ignoredKeys": [
    "development/logging/level",
    "testing/mock/data",
    "admin/internal/config"
  ]
}

この記法は複雑なネスト構造でも機能します:

// Source structure
{
  "development": {
    "logging": {
      "level": "verbose"
    }
  }
}

パスdevelopment/logging/levelは、この設定を翻訳から除外します。

ドットを含むキー

スラッシュ記法は、名前にドットを含むキーを処理します:

// Source with dotted key names
{
  "dev": {
    "api.mock": "Mock API enabled",
    "cache.clear": "Clear cache on startup"
  }
}

次のキーを無視します:

{
  "ignoredKeys": ["dev/api.mock", "dev/cache.clear"]
}

複数のバケットタイプ

ファイル形式が異なると、無視されるキーも異なります:

{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "ignoredKeys": ["internal/debug", "dev/settings"]
    },
    "yaml": {
      "include": ["translations/[locale].yml"],
      "ignoredKeys": ["test/data", "admin/config"]
    }
  }
}

各バケットタイプは、コンテンツ構造に基づいて独自の無視キーリストを保持します。

キーの無視とキーのロック

キーの無視キーのロックは異なる目的を持ちます:

キーの無視 (ignoredKeys):

  • キーは翻訳処理から完全に除外されます
  • 無視されたキーはターゲットファイルに一切表示されません
  • 開発、テスト、または翻訳すべきでない内部コンテンツに使用されます

キーのロック (lockedKeys):

  • キーは翻訳処理に含まれますが、値は変更されません
  • ロックされたキーは、ソース値と同一の値でターゲットファイルに表示されます
  • 技術的な識別子、コンポーネント名、または一貫性を保つ必要がある値に使用されます

比較例:

// Source file
{
  "welcome": "Welcome",
  "system": {
    "component": "Lingo.dev Engine"
  },
  "internal": {
    "debug": "Debug enabled"
  }
}

// Configuration
{
  "lockedKeys": ["system/component"],
  "ignoredKeys": ["internal/debug"]
}

// Generated target file
{
  "welcome": "Bienvenido",
  "system": {
    "component": "Lingo.dev Engine"
  }
  // internal/debug is completely missing
}