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 :
chatgptclaudedeepseekgeminimistralopenrouterself_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ètre | Description | Exemple |
|---|---|---|
$contents | Les chaînes à traduire | ['hello world'] |
$sourceLanguageCode | Code ISO-639 de la langue source | en |
$sourceLanguageName | Nom de la langue source (en anglais) | English |
$targetLanguageCode | Code ISO-639 de la langue cible | fr |
$targetLanguageName | Nom de la langue cible (en anglais) | French |
$targetCountryCode | Code ISO-3166 du pays pour localiser la traduction | FR |
$targetCountryName | Nom du pays (en anglais) pour localiser la traduction | France |
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ètre | Description | Exemple |
|---|---|---|
$querySlug | Slug de la requête à exécuter | translate-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_keysgatompl:translatable_meta_keysgatompl:custompost_and_media_entity_reference_translatable_meta_keysgatompl:taxonomy_entity_reference_translatable_meta_keys
Les hooks reçoivent les paramètres suivants :
| Paramètre | Description |
|---|---|
$object | L'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) |
$startingMetaKeys | Le 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
);