Gegevens overschrijven via hooks
In dit gedeelte wordt beschreven hoe je de gegevens die worden gebruikt voor het vertalen van inhoud kunt overschrijven via PHP-hooks.
Prompts voor AI-vertalingsproviders
Je kunt de prompts die naar AI-vertalingsproviders worden verzonden aanpassen via hooks in PHP-code.
Je kunt het volgende aanpassen:
- Systeembericht
- Promptsjabloon
- Prompt
Voor elk hiervan zijn er twee hooks:
gatompl:<hook_name>gatompl:<hook_name>:<provider_name>
De eerste hook wordt gebruikt om de variabelen voor alle providers te wijzigen.
De tweede hook wordt gebruikt om de variabelen voor een specifieke provider te wijzigen.
De volgende providernamen worden ondersteund:
chatgptclaudedeepseekgeminimistralopenrouterself_hosted_llm
De onderstaande hooks ontvangen niet de entiteitsgegevens om te vertalen (bijv.: post-ID, custom post type, enz.), maar alleen de taalcode en de te vertalen tekstreeksen.
Als je de entiteitsgegevens nodig hebt, kun je deze ophalen via de action hook gatompl:query_execution_start, zoals in dit voorbeeld.
Omdat de hook wordt geactiveerd voordat de query wordt uitgevoerd, kun je de gegevens in een variabele opslaan en gebruiken in een van de onderstaande filter hooks.
Systeembericht
Het Systeembericht is bedoeld zodat de AI de context van de vertaling begrijpt. Bijv.:
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;
}
);Promptsjabloon
Het Promptsjabloon bevat variabele plaatshouders die tijdens runtime worden opgelost. Bijv.:
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
De Prompt is de daadwerkelijke prompt die naar de AI-service wordt verzonden, nadat het promptsjabloon is opgelost. Er wordt extra informatie toegevoegd om te zorgen dat het formaat van de respons correct is. Bijv.:
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.De hooks ontvangen de volgende aanvullende parameters:
| Parameter | Beschrijving | Voorbeeld |
|---|---|---|
$contents | De te vertalen tekstreeksen | ['hello world'] |
$sourceLanguageCode | ISO-639-code van de taal waaruit wordt vertaald | en |
$sourceLanguageName | Naam van de brontaal (in het Engels) | English |
$targetLanguageCode | ISO-639-code van de taal waarnaar wordt vertaald | fr |
$targetLanguageName | Naam van de doeltaal (in het Engels) | French |
$targetCountryCode | ISO-3166-code van het land waarvoor de vertaling wordt gelokaliseerd | FR |
$targetCountryName | Naam van het land (in het Engels) waarvoor de vertaling wordt gelokaliseerd | 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
);Query-variabelen
Gato AI Translations for Polylang voert een GraphQL-query uit om de vertaling te verwerken. De configuratie (gedefinieerd in de plugin-instellingen) wordt via GraphQL-variabelen aan de query doorgegeven.
Je kunt de query-variabelen aanpassen via de volgende hook:
gatompl:query_variables
De hook ontvangt de volgende aanvullende parameters:
| Parameter | Beschrijving | Voorbeeld |
|---|---|---|
$querySlug | Slug van de uit te voeren query | translate-customposts |
De lijst met ondersteunde query-slugs is beschikbaar in het gedeelte Hooks voor query-uitvoering.
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
);Meta-sleutels
Je kunt de meta-sleutels die worden gesynchroniseerd/vertaald aanpassen via de volgende hooks:
gatompl:syncable_meta_keysgatompl:translatable_meta_keysgatompl:custompost_and_media_entity_reference_translatable_meta_keysgatompl:taxonomy_entity_reference_translatable_meta_keys
De hooks ontvangen de volgende parameters:
| Parameter | Beschrijving |
|---|---|
$object | De te vertalen entiteit, van het type WP_Post (voor custom posts en media) of WP_Term (voor tags en categorieën) |
$startingMetaKeys | De reeks meta-sleutels die aanwezig zijn in de entiteit |
gatompl:syncable_meta_keys
Meta-sleutels om te kopiëren van de bronentiteit naar de vertaalde entiteit (voor berichten, media, tags en categorieën).
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
Meta-sleutels met tekstreeksen, om te kopiëren en te vertalen van de bronentiteit naar de vertaalde entiteit.
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
Meta-sleutels met verwijzingen naar post-ID's (d.w.z. custom posts en media), om te kopiëren en te vertalen naar het overeenkomstige ID voor de doeltaal.
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
Meta-sleutels met verwijzingen naar taxonomieterm-ID's (d.w.z. tags en categorieën), om te kopiëren en te vertalen naar het overeenkomstige ID voor de doeltaal.
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
);