配置

gt.config.json 文件的配置文档

概述

gt.config.json 文件用于配置你项目的 GT 设置。它应当放置在你的项目根目录下。

CLI 设置向导 npx gtx-cli init 会在你的项目中为你创建一个 gt.config.json 文件。

配置

gt.config.json 文件接受以下属性,但不限于这些属性:

  • defaultLocale:项目的默认语言环境。这是源内容编写时使用的语言环境。这也是项目的回退语言环境(如果使用 gt-nextgt-react)。

  • locales:项目的语言环境数组。这些是您想要将项目翻译成的语言环境。有关更多信息,请参阅支持的语言环境。 如果您使用 gt-nextgt-react,这些也是您的应用程序支持的语言环境。

  • files:这是一个包含您想要翻译的内容信息的对象。

  • stageTranslations:一个可选的布尔标志,指示您的项目是否配置为使用人工审核。

  • src:一个可选的相对目录路径数组,包含可翻译的内容。

  • 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", "./app", "./pages", "./components"],
  "dictionary": "./dictionary.json"
}

files

支持的文件类型

files 应该包含您想要翻译的每种文件类型的键。 您可以配置项目来混合和匹配不同的文件类型,并让它们全部被翻译。 我们目前支持以下文件类型:

  • gt: General Translation 文件。
  • json: JSON 文件。
  • mdx: Markdown 组件 (MDX) 文件。
  • md: Markdown (MD) 文件。
  • js: JavaScript 文件。
  • ts: TypeScript 文件。

每种文件类型都应该对应一个包含以下一个或多个键的对象:

  • include
  • exclude
  • transform
  • output

include

如果使用,include 键的值应该是一个 glob 模式数组,匹配您想要翻译的文件。

您必须在 glob 模式中使用 [locale] 占位符,以确保正确找到源文件,并将翻译文件保存到正确的位置。 CLI 工具在搜索可翻译文件时会将 [locale] 占位符替换为 defaultLocale 值。

CLI 工具会将翻译文件保存到相应路径,将 [locale] 占位符替换为目标语言代码。

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

exclude

如果使用,exclude 键的值应该是一个 glob 模式数组,匹配您想要从翻译中排除的文件。

模式与 include 模式相同。

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

transform

如果使用,transform 键的值应该是一个定义文件名重新映射的字符串。它应该包含一个通配符 *,该通配符将被原始文件名(第一个 . 之前的任何内容)替换。

例如,如果您希望所有翻译文件的扩展名为 .[locale].json 而不是 .json,您可以使用以下配置:

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

如果您的文档或 i18n 框架需要翻译文件的特定文件扩展名而不是基于子目录的语言路由,这会很有用。

output

此键专门用于 General Translation 文件,特别是用于在本地保存翻译。如果您使用 GT CDN,则不需要此键。

该值应该是一个包含 [locale] 占位符的字符串,指示翻译将保存的位置。

例如,如果您想将西班牙语翻译保存到 public/i18n 目录中名为 ui.es.json 的文件,您应该使用以下字符串:

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

此选项仅在您使用 gt-nextgt-react 并希望在本地保存翻译而不是使用 GT CDN 时才应使用。

目前,每个语言只能生成一个文件。


文件类型: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/ 中的任何文件。


文件类型: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/frscripts/es 目录。

transform 键会使翻译文件的扩展名分别更改为 .fr.js.es.js(从 .js 更改)。


文件类型:ts

支持的键

  • include(必需)
  • exclude(可选)
  • transform(可选)

示例

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

此配置将告诉 CLI 工具搜索 scripts/en 目录下的所有 TypeScript 文件,并将翻译后的文件保存到 scripts/frscripts/es 目录。

transform 键会使翻译文件的扩展名分别更改为 .fr.ts.es.ts(从 .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 命令 来生成此配置文件。

这份指南怎么样?