Hooks
HooksRemplacer les données via des hooks

Remplacer les données via des hooks

Cette section décrit comment remplacer les données utilisées pour traduire le contenu via des hooks PHP.

Prompts pour les fournisseurs de traduction par IA

Vous pouvez personnaliser les prompts envoyés aux fournisseurs de traduction par IA via des hooks dans le code PHP.

Vous pouvez personnaliser les éléments suivants :

  • Message système
  • Modèle de prompt
  • Prompt

Pour chacun d'eux, il existe deux hooks :

  • gatompl:<hook_name>
  • gatompl:<hook_name>:<provider_name>

Le premier hook est utilisé pour modifier les variables pour tous les fournisseurs.

Le second hook est utilisé pour modifier les variables pour un fournisseur spécifique.

Les noms de fournisseurs suivants sont pris en charge :

  • chatgpt
  • claude
  • deepseek
  • gemini
  • mistral
  • openrouter
  • self_hosted_llm

Les hooks ci-dessous ne reçoivent pas les données de l'entité à traduire (ex. : ID de l'article, custom post type, etc.), mais uniquement le code de langue et les chaînes à traduire.

Si vous avez besoin des données de l'entité, vous pouvez les récupérer via le hook d'action gatompl:query_execution_start, comme dans cet exemple.

Comme le hook est déclenché avant l'exécution de la requête, vous pouvez stocker les données dans une variable et les utiliser dans n'importe lequel des hooks de filtre ci-dessous.

Message système

Le Message système permet à l'IA de comprendre le contexte de la traduction. Ex. :

You are a language translator.

gatompl:system_message

add_filter(
  'gatompl:system_message',
  function (string $systemMessage, string $providerName): string {
    return $systemMessage;
  },
  10,
  2
);

gatompl:system_message:<provider_name>

add_filter(
  'gatompl:system_message:chatgpt',
  function (string $systemMessage): string {
    return $systemMessage;
  }
);

Modèle de prompt

Le Modèle de prompt inclut des espaces réservés pour les variables qui seront résolus au moment de l'exécution. Ex. :

I'm working on internationalizing my application.
 
I've created a JSON with sentences in {$sourceLanguage}. Please translate the sentences to {$targetLanguage} from {$targetCountry}.

gatompl:prompt_template

add_filter(
  'gatompl:prompt_template',
  function (string $promptTemplate, string $providerName): string {
    return $promptTemplate;
  },
  10,
  2
);

gatompl:prompt_template:<provider_name>

add_filter(
  'gatompl:prompt_template:chatgpt',
  function (string $promptTemplate): string {
    return $promptTemplate;
  }
);

Prompt

Le Prompt est le prompt réel envoyé au service d'IA, une fois le modèle de prompt résolu. Il ajoute des informations supplémentaires pour garantir que le format de la réponse est correct. Ex. :

I'm working on internationalizing my application.
 
I've created a JSON with sentences in English. Please translate the sentences to French from France.
 
If a sentence contains HTML:
- Translate the text inside the HTML tags. (eg: `<p>Hello world</p>` => `<p>Hola mundo</p>`)
- Translate the following properties inside the HTML tags: alt, title, placeholder, aria-label, aria-describedby, aria-labelledby, aria-placeholder. Do not translate any other property.
- Ensure that any double quotes (") within a translated string inside an HTML tag attribute are properly escaped by adding a backslash before them (\"), but only if they haven't been escaped already.
- Ensure that the quotes in HTML tag attributes are not escaped (eg: keep `<mark class="has-inline-color">` as is, do not convert to `<mark class=\"has-inline-color\">`).
- Ensure that slashes within HTML tags are not escaped (eg: keep `<p>Hello world</p>` as is, do not convert to `<p>Hello world<\/p>`).
Keep emojis exactly as they are, do not translate them.
Ensure that the response is encoded using UTF-8 for all characters.

Les hooks reçoivent les paramètres supplémentaires suivants :

ParamètreDescriptionExemple
$contentsLes chaînes à traduire['hello world']
$sourceLanguageCodeCode ISO-639 de la langue sourceen
$sourceLanguageNameNom de la langue source (en anglais)English
$targetLanguageCodeCode ISO-639 de la langue ciblefr
$targetLanguageNameNom de la langue cible (en anglais)French
$targetCountryCodeCode ISO-3166 du pays pour localiser la traductionFR
$targetCountryNameNom du pays (en anglais) pour localiser la traductionFrance

gatompl:prompt

add_filter(
  'gatompl:prompt',
  /**
   * @param string[] $contents The strings to be translated (eg: `['hello world', 'how are you?']`).
   */
  function (
    string $prompt,
    string $providerName,
    array $contents,
    string $sourceLanguageCode,
    string $sourceLanguageName,
    string $targetLanguageCode,
    string $targetLanguageName,
    string $targetCountryCode,
    string $targetCountryName
): string {
    return $prompt;
  },
  10,
  9
);

gatompl:prompt:<provider_name>

add_filter(
  'gatompl:prompt:chatgpt',
  /**
   * @param string[] $contents The strings to be translated (eg: `['hello world', 'how are you?']`).
   */
  function (
    string $prompt,
    array $contents,
    string $sourceLanguageCode,
    string $sourceLanguageName,
    string $targetLanguageCode,
    string $targetLanguageName,
    string $targetCountryCode,
    string $targetCountryName
): string {
    return $prompt;
  },
  10,
  8
);

Variables de requête

Gato AI Translations for Polylang exécute une requête GraphQL pour effectuer la traduction. Il transmet la configuration (définie dans les réglages du plugin) à la requête via des variables GraphQL.

Vous pouvez personnaliser les variables de requête via le hook suivant :

  • gatompl:query_variables

Le hook reçoit les paramètres supplémentaires suivants :

ParamètreDescriptionExemple
$querySlugSlug de la requête à exécutertranslate-customposts

La liste des slugs de requête pris en charge est disponible dans la section Hooks d'exécution de requêtes.

add_filter(
  'gatompl:query_variables',
  /**
   * @param array<string, mixed> $variables The variables to pass to the query.
   * @return array<string, mixed> The variables to pass to the query.
   */
  function (
    array $variables,
    string $querySlug
): array {
    return $variables;
  },
  10,
  2
);

Clés méta

Vous pouvez personnaliser les clés méta à synchroniser/traduire via les hooks suivants :

  • gatompl:syncable_meta_keys
  • gatompl:translatable_meta_keys
  • gatompl:custompost_and_media_entity_reference_translatable_meta_keys
  • gatompl:taxonomy_entity_reference_translatable_meta_keys

Les hooks reçoivent les paramètres suivants :

ParamètreDescription
$objectL'entité en cours de traduction, de type WP_Post (pour les custom posts et les médias) ou WP_Term (pour les étiquettes et les catégories)
$startingMetaKeysLe tableau des clés méta présentes dans l'entité

gatompl:syncable_meta_keys

Clés méta à copier de l'entité source vers l'entité traduite (pour les articles, les médias, les étiquettes et les catégories).

add_filter(
  'gatompl:syncable_meta_keys',
  /**
   * @param string[] $metaKeys
   * @param string[] $startingMetaKeys
   * @return string[]
   */
  function (array $metaKeys, WP_Post | WP_Term $object, array $startingMetaKeys): array
  {
    $metaKeysToCopy = $object instanceof WP_Post ? [
      '_myproject_meta_key_for_posts',
    ] : [
      '_myproject_meta_key_for_terms',
    ];
    return array_merge($metaKeys, array_intersect($startingMetaKeys, $metaKeysToCopy));
  },
  10,
  3
);

gatompl:translatable_meta_keys

Clés méta avec des chaînes, à copier et traduire de l'entité source vers l'entité traduite.

add_filter(
  'gatompl:translatable_meta_keys',
  /**
   * @param string[] $metaKeys
   * @param string[] $startingMetaKeys
   * @return string[]
   */
  function (array $metaKeys, WP_Post | WP_Term $object, array $startingMetaKeys): array
  {
    $metaKeysToCopy = $object instanceof WP_Post ? [
      '_myproject_meta_key_for_posts',
    ] : [
      '_myproject_meta_key_for_terms',
    ];
    return array_merge($metaKeys, array_intersect($startingMetaKeys, $metaKeysToCopy));
  },
  10,
  3
);

gatompl:custompost_and_media_entity_reference_translatable_meta_keys

Clés méta avec une référence à des IDs d'articles (c'est-à-dire des custom posts et des médias), à copier et traduire vers l'ID correspondant pour la langue cible.

add_filter(
  'gatompl:custompost_and_media_entity_reference_translatable_meta_keys',
  /**
   * @param string[] $metaKeys
   * @param string[] $startingMetaKeys
   * @return string[]
   */
  function (array $metaKeys, WP_Post | WP_Term $object, array $startingMetaKeys): array
  {
    $metaKeysToCopy = $object instanceof WP_Post ? [
      '_myproject_meta_key_for_posts',
    ] : [
      '_myproject_meta_key_for_terms',
    ];
    return array_merge($metaKeys, array_intersect($startingMetaKeys, $metaKeysToCopy));
  },
  10,
  3
);

gatompl:taxonomy_entity_reference_translatable_meta_keys

Clés méta avec une référence à des IDs de termes de taxonomie (c'est-à-dire des étiquettes et des catégories), à copier et traduire vers l'ID correspondant pour la langue cible.

add_filter(
  'gatompl:taxonomy_entity_reference_translatable_meta_keys',
  /**
   * @param string[] $metaKeys
   * @param string[] $startingMetaKeys
   * @return string[]
   */
  function (array $metaKeys, WP_Post | WP_Term $object, array $startingMetaKeys): array
  {
    $metaKeysToCopy = $object instanceof WP_Post ? [
      '_myproject_meta_key_for_posts',
    ] : [
      '_myproject_meta_key_for_terms',
    ];
    return array_merge($metaKeys, array_intersect($startingMetaKeys, $metaKeysToCopy));
  },
  10,
  3
);