Configuration

Documentation de configuration pour le fichier gt.config.json

Aperçu

Le fichier gt.config.json est utilisé pour configurer les paramètres GT de votre projet. Il doit être placé à la racine de votre projet.

L'assistant de configuration CLI npx gtx-cli init créera un fichier gt.config.json pour vous dans votre projet.

Configuration

Le fichier gt.config.json accepte les propriétés suivantes, mais ne s'y limite pas :

  • defaultLocale : La locale par défaut de votre projet. C'est la locale dans laquelle votre contenu source est écrit. C'est aussi la locale de repli pour votre projet (si vous utilisez gt-next ou gt-react).

  • locales : Un tableau de locales pour votre projet. Ce sont les locales vers lesquelles vous voulez traduire votre projet. Voir les locales supportées pour plus d'informations. Si vous utilisez gt-next ou gt-react, ce sont aussi les locales que votre application supporte.

  • files : C'est un objet qui contient des informations sur le contenu que vous voulez traduire.

  • stageTranslations : Un indicateur booléen optionnel qui indique si votre projet est configuré pour utiliser la révision humaine.

  • src : Un tableau optionnel de motifs glob de fichiers pour vos fichiers source. Par défaut, défini à :

[
  "src/**/*.{js,jsx,ts,tsx}",
  "app/**/*.{js,jsx,ts,tsx}",
  "pages/**/*.{js,jsx,ts,tsx}",
  "components/**/*.{js,jsx,ts,tsx}"
]
  • dictionary : Une chaîne optionnelle qui spécifie le chemin relatif vers le fichier dictionnaire.

Pour aider à valider votre fichier gt.config.json, vous pouvez utiliser le JSON Schema pour le CLI.

Ajoutez-le en haut de votre fichier gt.config.json :

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

Voici un squelette du fichier 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

Types de fichiers pris en charge

files doit contenir une clé pour chaque type de fichier que vous souhaitez traduire. Vous pouvez configurer votre projet pour mélanger et associer différents types de fichiers, et les faire tous traduire. Nous prenons actuellement en charge les types de fichiers suivants :

  • gt : Fichiers General Translation.
  • json : Fichiers JSON.
  • yaml : Fichiers YAML.
  • mdx : Fichiers de composants Markdown (MDX).
  • md : Fichiers Markdown (MD).
  • js : Fichiers JavaScript.
  • ts : Fichiers TypeScript.

Chaque type de fichier doit correspondre à un objet qui contient une ou plusieurs des clés suivantes :

  • include
  • exclude
  • transform
  • output

include

Si utilisée, la valeur de la clé include doit être un tableau de motifs glob qui correspondent aux fichiers que vous souhaitez traduire.

Vous devez utiliser l'espace réservé [locale] dans vos motifs glob pour vous assurer que les fichiers sources sont trouvés correctement, et que les fichiers traduits sont sauvegardés au bon endroit. L'outil CLI remplacera l'espace réservé [locale] par la valeur defaultLocale lors de la recherche de fichiers traduisibles.

L'outil CLI sauvegardera les fichiers traduits dans le chemin correspondant, avec l'espace réservé [locale] remplacé par le code de la locale cible.

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

exclude

Si utilisée, la valeur de la clé exclude doit être un tableau de motifs glob qui correspondent aux fichiers que vous souhaitez exclure de la traduction.

Le motif est le même que le motif include, à l'exception que l'espace réservé [locale] est optionnel. S'il est fourni, il sera remplacé par la valeur defaultLocale.

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

Si vous souhaitez exclure des fichiers de la traduction pour toutes les locales, vous pouvez utiliser l'espace réservé [locales] au lieu de [locale].

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

transform

transform peut être soit une chaîne de caractères soit un objet.

Si transform est une chaîne de caractères, elle définit un remappage du nom de fichier. Elle doit contenir un caractère générique * qui sera remplacé par le nom de fichier original (tout ce qui précède le premier .).

Par exemple, si vous voulez que l'extension de tous vos fichiers traduits ait .[locale].json au lieu de .json, vous pouvez utiliser la configuration suivante :

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

Alternativement, si transform est un objet, il doit contenir les propriétés suivantes :

  • match (optionnel) : Un motif regex pour faire correspondre les chaînes, prend en charge les groupes de capture
  • replace (requis) : Chaîne ou motif regex pour remplacer la correspondance

Les deux valeurs prennent en charge les groupes de capture regex et sont mappées au nom de fichier relatif complet du fichier de sortie.

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

Par exemple, la configuration ci-dessus fera que les fichiers traduits seront sauvegardés dans un sous-répertoire de locale cible.

Espaces réservés spéciaux

L'option transform prend en charge plusieurs espaces réservés spéciaux qui peuvent être utilisés dans les chaînes match et replace :

  • {locale} : L'espace réservé du code de locale qui se comporte différemment selon le contexte :
    • Dans les chaînes match : Remplacé par le code de locale par défaut (par ex., "en") pour aider à identifier les fichiers sources
    • Dans les chaînes replace : Remplacé par le code de locale cible (par ex., "fr", "es") pour les fichiers de sortie traduits

Par exemple, si votre locale par défaut est "en" et que vous traduisez vers "fr" :

  • Un motif match de "content/{locale}/file.md" devient "content/en/file.md"
  • Un motif replace de "content/{locale}/file.md" devient "content/fr/file.md"

De plus, toute autre propriété de getLocaleProperties() peut être utilisée comme espace réservé avec le même comportement dépendant du contexte.

Ceci est utile si votre framework de documentation ou d'i18n nécessite une extension de fichier spécifique pour les fichiers traduits au lieu d'un routage de locale basé sur des sous-répertoires.

output

Cette clé est exclusivement utilisée pour les fichiers General Translation, spécifiquement pour sauvegarder les traductions localement. Si vous utilisez le CDN GT, cette clé n'est pas nécessaire.

La valeur doit être une chaîne de caractères contenant un espace réservé [locale] indiquant l'emplacement où les traductions seront sauvegardées.

Par exemple, si vous voulez sauvegarder vos traductions espagnoles dans un fichier appelé ui.es.json dans le répertoire public/i18n, vous devriez utiliser la chaîne suivante :

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

Cette option ne doit être utilisée que si vous utilisez gt-next ou gt-react, et que vous souhaitez sauvegarder les traductions localement, au lieu d'utiliser le CDN GT.

Actuellement, un seul fichier par locale peut être généré.


Type de fichier : gt

Clés supportées

  • output (Requis)

Exemple

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

Cette configuration indiquera à l'outil CLI de sauvegarder vos traductions françaises et espagnoles dans le répertoire public/i18n/[locale].json.

Par défaut, l'outil CLI ne publiera pas vos traductions sur le CDN GT avec cette configuration.


Type de fichier : json

Clés supportées

  • include (Requis)
  • exclude (Optionnel)
  • transform (Optionnel)

Exemple

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

Supposons que la locale par défaut de votre projet soit en, et que vous souhaitiez traduire votre projet en fr et es.

Avec cette configuration, le CLI recherchera tous les fichiers JSON dans le sous-répertoire json_files/en/ et sauvegardera les fichiers traduits dans json_files/fr/ et json_files/es/.

Il ignorera tous les fichiers dans le sous-répertoire json_files/en/exclude/.


Type de fichier : yaml

Clés supportées

  • include (Requis)
  • exclude (Optionnel)
  • transform (Optionnel)

Exemple

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

Supposons que la locale par défaut de votre projet soit en, et que vous souhaitiez traduire votre projet en fr et es.

Avec cette configuration, le CLI recherchera tous les fichiers YAML dans le sous-répertoire yaml_files/en/ et sauvegardera les fichiers traduits dans yaml_files/fr/ et yaml_files/es/.

Il ignorera tous les fichiers dans le sous-répertoire yaml_files/en/exclude/.


Type de fichier : mdx

Clés supportées

  • include (Requis)
  • exclude (Optionnel)
  • transform (Optionnel)

Exemple

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

Cette configuration indiquera à l'outil CLI de rechercher tous les fichiers MDX dans le répertoire content/docs/en et de sauvegarder les fichiers traduits dans le répertoire content/docs/ja.

La clé transform fait que l'extension des fichiers traduits est changée en .ja.mdx.


Type de fichier : md

Clés supportées

  • include (Requis)
  • exclude (Optionnel)
  • transform (Optionnel)

Exemple

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

Cette configuration indiquera à l'outil CLI de rechercher tous les fichiers MD dans le répertoire content/docs/en et de sauvegarder les fichiers traduits dans le répertoire content/docs/ja.

La clé transform fait que l'extension des fichiers traduits est changée en .ja.md.

Tous les fichiers dans le répertoire content/docs/en/exclude seront ignorés.


Type de fichier : js

Clés supportées

  • include (Requis)
  • exclude (Optionnel)
  • transform (Optionnel)

Exemple

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

Cette configuration indiquera à l'outil CLI de rechercher tous les fichiers JavaScript dans le répertoire scripts/en et de sauvegarder les fichiers traduits dans les répertoires scripts/fr et scripts/es.

La clé transform fait que l'extension des fichiers traduits soit changée en .fr.js et .es.js respectivement (à partir de .js).


Type de fichier : ts

Clés supportées

  • include (Requis)
  • exclude (Optionnel)
  • transform (Optionnel)

Exemple

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

Cette configuration indiquera à l'outil CLI de rechercher tous les fichiers TypeScript dans le répertoire scripts/en et de sauvegarder les fichiers traduits dans les répertoires scripts/fr et scripts/es.

La clé transform fait que l'extension des fichiers traduits soit changée en .fr.ts et .es.ts respectivement (à partir de .ts).


Exemple de configuration

Analysons un exemple de fichier 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"]
    }
  }
}

Dans cet exemple, nous traduisons les fichiers suivants en une seule commande avec gtx-cli translate :

  • Tous les fichiers MDX dans le répertoire content/docs/en.
  • Tous les fichiers JSON dans le répertoire resources/en (à l'exception de tous les fichiers dans le répertoire resources/en/exclude).
  • Tous les composants <T> en ligne dans votre projet React ou Next.js.
  • Votre fichier dictionary.[json|js|ts].

GT : Les traductions seront enregistrées dans public/i18n/es.json et public/i18n/fr.json. Ces fichiers peuvent être chargés à l'aide de loadTranslations().

MDX : Les traductions seront enregistrées dans les répertoires content/docs/fr et content/docs/es. Les extensions de fichiers seront modifiées en .fr.mdx et .es.mdx respectivement (à partir de .mdx).

JSON : Les traductions seront enregistrées dans les répertoires resources/fr et resources/es.


Prochaines étapes

Découvrez comment utiliser la commande init pour générer ce fichier de configuration.

Comment trouvez-vous ce guide ?