設定

gt.config.json ファイルの設定ドキュメント

概要

gt.config.json ファイルは、プロジェクトのGT設定を構成するために使用されます。このファイルはプロジェクトのルートディレクトリに配置する必要があります。

CLIセットアップウィザード npx gtx-cli init を使用すると、プロジェクト内に gt.config.json ファイルが自動的に作成されます。

Configuration

gt.config.jsonファイルは以下のプロパティを受け入れますが、これらに限定されません:

  • defaultLocale: プロジェクトのデフォルトロケールです。これはソースコンテンツが書かれているロケールです。また、プロジェクトのフォールバックロケールでもあります(gt-nextまたはgt-reactを使用している場合)。

  • locales: プロジェクトのロケールの配列です。これらはプロジェクトを翻訳したいロケールです。詳細についてはサポートされているロケールを参照してください。 gt-nextまたはgt-reactを使用している場合、これらはアプリがサポートするロケールでもあります。

  • files: 翻訳したいコンテンツに関する情報を含むオブジェクトです。

  • stageTranslations: プロジェクトが人間によるレビューを使用するように設定されているかどうかを示すオプションのブール値フラグです。

  • src: ソースファイルのファイルglobパターンのオプション配列です。デフォルトでは以下に設定されています:

[
  "src/**/*.{js,jsx,ts,tsx}",
  "app/**/*.{js,jsx,ts,tsx}",
  "pages/**/*.{js,jsx,ts,tsx}",
  "components/**/*.{js,jsx,ts,tsx}"
]
  • dictionary: 辞書ファイルへの相対パスを指定するオプションの文字列です。

gt.config.jsonファイルの検証を支援するために、CLIのJSON Schemaを使用できます。

gt.config.jsonファイルの先頭に追加してください:

gt.config.json
{
  "$schema": "https://assets.gtx.dev/config-schema.json",
}

以下はgt.config.jsonファイルのスケルトンです:

gt.config.json
{
  "$schema": "https://assets.gtx.dev/config-schema.json",
  "defaultLocale": "en",
  "locales": ["fr", "es"],
  "files": {
    "gt": {
      "output": "..."
    },
    "json": {
      "include": [...]
    },
    "mdx": {
      "include": [...]
    },
    "md": {
      "include": [...]
    }
  },
  "src": [
    "src/**/*.{ts,tsx}",
  ],
  "dictionary": "./dictionary.json"
}

files

サポートされているファイルタイプ

filesには、翻訳したい各ファイルタイプのキーを含める必要があります。 プロジェクトを設定して、異なるファイルタイプを組み合わせて使用し、それらすべてを翻訳することができます。 現在、以下のファイルタイプをサポートしています:

  • gt: General Translationファイル。
  • json: JSONファイル。
  • yaml: YAMLファイル。
  • mdx: Markdownコンポーネント(MDX)ファイル。
  • md: Markdown(MD)ファイル。
  • js: JavaScriptファイル。
  • ts: TypeScriptファイル。

各ファイルタイプは、以下のキーの1つ以上を含むオブジェクトに対応する必要があります:

  • include
  • exclude
  • transform
  • output

include

使用する場合、includeキーの値は、翻訳したいファイルにマッチするglobパターンの配列である必要があります。

ソースファイルが正しく見つかり、翻訳されたファイルが正しい場所に保存されるように、globパターンで[locale]プレースホルダーを使用する必要があります。 CLIツールは、翻訳可能なファイルを検索する際に、[locale]プレースホルダーをdefaultLocaleの値に置き換えます。

CLIツールは、[locale]プレースホルダーをターゲットロケールコードに置き換えて、対応するパスに翻訳されたファイルを保存します。

{
  "include": ["docs/[locale]/**/*.json"]
}

exclude

使用する場合、excludeキーの値は、翻訳から除外したいファイルにマッチするglobパターンの配列である必要があります。

パターンはincludeパターンと同じですが、[locale]プレースホルダーはオプションです。提供された場合、defaultLocaleの値に置き換えられます。

{
  "exclude": ["docs/[locale]/exclude/**/*.json"]
}

すべてのロケールで翻訳からファイルを除外したい場合は、[locale]の代わりに[locales]プレースホルダーを使用できます。

{
  "exclude": ["docs/[locales]/exclude/**/*.json"]
}

transform

transformは文字列またはオブジェクトのいずれかです。

transformが文字列の場合、ファイル名の再マッピングを定義します。元のファイル名(最初の.より前の部分)に置き換えられるワイルドカード*を含む必要があります。

例えば、翻訳されたすべてのファイルの拡張子を.jsonの代わりに.[locale].jsonにしたい場合は、以下の設定を使用できます:

{
  "transform": "*.[locale].json"
}

または、transformがオブジェクトの場合、以下のプロパティを含む必要があります:

  • match(オプション): 文字列にマッチする正規表現パターン、キャプチャグループをサポート
  • replace(必須): マッチを置き換える文字列または正規表現パターン

両方の値は正規表現キャプチャグループをサポートし、出力ファイルの完全な相対ファイル名にマップされます。

{
  "transform": {
    "match": "^(.*)$",
    "replace": "{locale}/$1"
  }
}

例えば、上記の設定により、翻訳されたファイルはターゲットロケールのサブディレクトリ下に保存されます。

特別なプレースホルダー

transformオプションは、matchreplaceの両方の文字列で使用できるいくつかの特別なプレースホルダーをサポートしています:

  • {locale}: コンテキストに応じて異なる動作をするロケールコードプレースホルダー:
    • match文字列内: ソースファイルの識別を助けるためにデフォルトロケールコード(例:"en")に置き換えられます
    • replace文字列内: 翻訳された出力ファイルのターゲットロケールコード(例:"fr""es")に置き換えられます

例えば、デフォルトロケールが"en""fr"に翻訳する場合:

  • "content/{locale}/file.md"matchパターンは"content/en/file.md"になります
  • "content/{locale}/file.md"replaceパターンは"content/fr/file.md"になります

さらに、getLocaleProperties()からの他のプロパティも、同じコンテキスト依存の動作でプレースホルダーとして使用できます。

これは、ドキュメントやi18nフレームワークがサブディレクトリベースのロケールルーティングの代わりに、翻訳されたファイルに特定のファイル拡張子を必要とする場合に便利です。

output

このキーは、General Translationファイル専用で、特に翻訳をローカルに保存するために使用されます。GT CDNを使用している場合、このキーは必要ありません。

値は、翻訳が保存される場所を示す[locale]プレースホルダーを含む文字列である必要があります。

例えば、スペイン語の翻訳をpublic/i18nディレクトリのui.es.jsonというファイルに保存したい場合は、以下の文字列を使用する必要があります:

{
  "output": "public/i18n/[locale].json"
}

このオプションは、gt-nextまたはgt-reactを使用していて、GT CDNを使用する代わりに翻訳をローカルに保存したい場合にのみ使用してください。

現在、各ロケールにつき1つのファイルのみ生成できます。


ファイルタイプ: gt

サポートされているキー

  • output (必須)

gt.config.json
{
  "defaultLocale": "en",
  "locales": ["fr", "es"],
  "files": {
    "gt": {
      "output": "public/i18n/[locale].json"
    },
  }
}

この設定により、CLIツールはフランス語とスペイン語の翻訳をpublic/i18n/[locale].jsonディレクトリに保存します。

デフォルトでは、この設定でCLIツールは翻訳をGT CDNに公開しません。


ファイルタイプ: json

サポートされているキー

  • include (必須)
  • exclude (オプション)
  • transform (オプション)

gt.config.json
{
  "defaultLocale": "en",
  "locales": ["fr", "es"],
  "files": {
    "json": {
      "include": ["json_files/[locale]/**/*.json"],
      "exclude": ["json_files/[locale]/exclude/**/*.json"]
    }
  }
}

プロジェクトのデフォルトロケールがenで、プロジェクトをfresに翻訳したいとしましょう。

この設定により、CLIはjson_files/en/サブディレクトリ下のすべてのJSONファイルを検索し、翻訳されたファイルをjson_files/fr/json_files/es/に保存します。

json_files/en/exclude/サブディレクトリ内のファイルは無視されます。


ファイルタイプ: yaml

サポートされているキー

  • include (必須)
  • exclude (オプション)
  • transform (オプション)

gt.config.json
{
  "defaultLocale": "en",
  "locales": ["fr", "es"],
  "files": {
    "yaml": {
      "include": ["yaml_files/[locale]/**/*.yaml"],
      "exclude": ["yaml_files/[locale]/exclude/**/*.yaml"]
    }
  }
}

プロジェクトのデフォルトロケールがenで、プロジェクトをfresに翻訳したいとしましょう。

この設定により、CLIはyaml_files/en/サブディレクトリ下のすべてのYAMLファイルを検索し、翻訳されたファイルをyaml_files/fr/yaml_files/es/に保存します。

yaml_files/en/exclude/サブディレクトリ内のファイルは無視されます。


ファイルタイプ: mdx

サポートされているキー

  • include (必須)
  • exclude (オプション)
  • transform (オプション)

gt.config.json
{
  "defaultLocale": "en",
  "locales": ["ja"],
  "files": {
    "mdx": {
      "include": ["content/docs/[locale]/**/*.mdx"],
      "transform": "*.[locale].mdx"
    }
  }
}

この設定により、CLIツールはcontent/docs/enディレクトリ下のすべてのMDXファイルを検索し、翻訳されたファイルをcontent/docs/jaディレクトリに保存します。

transformキーにより、翻訳されたファイルの拡張子が.ja.mdxに変更されます。


ファイルタイプ: md

サポートされているキー

  • include (必須)
  • exclude (オプション)
  • transform (オプション)

gt.config.json
{
  "defaultLocale": "en",
  "locales": ["ja"],
  "files": {
    "md": {
      "include": ["content/docs/[locale]/**/*.md"],
      "exclude": ["content/docs/[locale]/exclude/**/*.md"],
      "transform": "*.[locale].md"
    }
  }
}

この設定により、CLIツールはcontent/docs/enディレクトリ下のすべてのMDファイルを検索し、翻訳されたファイルをcontent/docs/jaディレクトリに保存します。

transformキーにより、翻訳されたファイルの拡張子が.ja.mdに変更されます。

content/docs/en/excludeディレクトリ内のすべてのファイルは無視されます。


ファイルタイプ: js

サポートされているキー

  • include (必須)
  • exclude (オプション)
  • transform (オプション)

gt.config.json
{
  "defaultLocale": "en",
  "locales": ["fr", "es"],
  "files": {
    "js": {
      "include": ["scripts/[locale]/**/*.js"]
    }
  }
}

この設定により、CLIツールはscripts/enディレクトリ下のすべてのJavaScriptファイルを検索し、翻訳されたファイルをscripts/frおよびscripts/esディレクトリに保存するよう指示されます。

transformキーにより、翻訳されたファイルの拡張子が(.jsから)それぞれ.fr.js.es.jsに変更されます。


ファイルタイプ: ts

サポートされているキー

  • include (必須)
  • exclude (オプション)
  • transform (オプション)

gt.config.json
{ 
  "defaultLocale": "en",
  "locales": ["fr", "es"],
  "files": {
    "ts": {
      "include": ["scripts/[locale]/**/*.ts"]
    }
  }
}

この設定により、CLIツールはscripts/enディレクトリ下のすべてのTypeScriptファイルを検索し、翻訳されたファイルをscripts/frおよびscripts/esディレクトリに保存するよう指示されます。

transformキーにより、翻訳されたファイルの拡張子が(.tsから)それぞれ.fr.ts.es.tsに変更されます。


設定例

gt.config.jsonファイルの例を詳しく見てみましょう:

gt.config.json
{
  "defaultLocale": "en",
  "locales": ["fr", "es"],
  "files": {
    "gt": {
      "output": "public/i18n/[locale].json"
    },
    "mdx": {
      "include": ["content/docs/[locale]/**/*.mdx"],
      "transform": "*.[locale].mdx"
    },
    "json": {
      "include": ["resources/[locale]/**/*.json"],
      "exclude": ["resources/[locale]/exclude/**/*.json"]
    }
  }
}

この例では、gtx-cli translateを一度呼び出すことで、以下のファイルを翻訳しています:

  • content/docs/enディレクトリ内のすべてのMDXファイル。
  • resources/enディレクトリ内のすべてのJSONファイル(resources/en/excludeディレクトリ内のファイルを除く)。
  • ReactまたはNext.jsプロジェクト内のすべてのインライン<T>コンポーネント。
  • dictionary.[json|js|ts]ファイル。

GT:翻訳はpublic/i18n/es.jsonpublic/i18n/fr.jsonに保存されます。これらのファイルはloadTranslations()を使用して読み込むことができます。

MDX:翻訳はcontent/docs/frcontent/docs/esディレクトリに保存されます。 ファイル拡張子は.mdxから.fr.mdx.es.mdxにそれぞれ変更されます。

JSON:翻訳はresources/frresources/esディレクトリに保存されます。


次のステップ

init コマンドを使用してこの設定ファイルを生成する方法を学びましょう。

このガイドはいかがですか?