Daten über Hooks überschreiben
Dieser Abschnitt beschreibt, wie du die für die Übersetzung von Inhalten verwendeten Daten über PHP-Hooks überschreiben kannst.
Prompts für KI-Übersetzungsanbieter
Du kannst die an KI-Übersetzungsanbieter gesendeten Prompts über Hooks im PHP-Code anpassen.
Du kannst Folgendes anpassen:
- Systemnachricht
- Prompt-Vorlage
- Prompt
Für jedes davon gibt es zwei Hooks:
gatompl:<hook_name>gatompl:<hook_name>:<provider_name>
Der erste Hook dient dazu, die Variablen für alle Anbieter zu ändern.
Der zweite Hook dient dazu, die Variablen für einen bestimmten Anbieter zu ändern.
Die folgenden Anbieternamen werden unterstützt:
chatgptclaudedeepseekgeminimistralopenrouterself_hosted_llm
Die unten aufgeführten Hooks erhalten keine Entitätsdaten zur Übersetzung (z. B. Beitrags-ID, Custom Post Type usw.), sondern nur den Sprachcode und die zu übersetzenden Zeichenketten.
Wenn du die Entitätsdaten benötigst, kannst du sie über den Action-Hook gatompl:query_execution_start abrufen, wie in diesem Beispiel.
Da der Hook ausgelöst wird, bevor die Query ausgeführt wird, kannst du die Daten in einer Variable speichern und in einem der unten aufgeführten Filter-Hooks verwenden.
Systemnachricht
Die Systemnachricht hilft der KI, den Kontext der Übersetzung zu verstehen. Z. B.:
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;
}
);Prompt-Vorlage
Die Prompt-Vorlage enthält Variablen-Platzhalter, die zur Laufzeit aufgelöst werden. Z. B.:
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
Der Prompt ist der tatsächliche Prompt, der nach der Auflösung der Prompt-Vorlage an den KI-Dienst gesendet wird. Er fügt zusätzliche Informationen hinzu, um sicherzustellen, dass das Format der Antwort korrekt ist. Z. B.:
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.Die Hooks erhalten die folgenden zusätzlichen Parameter:
| Parameter | Beschreibung | Beispiel |
|---|---|---|
$contents | Die zu übersetzenden Zeichenketten | ['hello world'] |
$sourceLanguageCode | ISO-639-Code der Ausgangssprache | en |
$sourceLanguageName | Name der Ausgangssprache (auf Englisch) | English |
$targetLanguageCode | ISO-639-Code der Zielsprache | fr |
$targetLanguageName | Name der Zielsprache (auf Englisch) | French |
$targetCountryCode | ISO-3166-Code des Landes für die Lokalisierung der Übersetzung | FR |
$targetCountryName | Name des Landes (auf Englisch) für die Lokalisierung der Übersetzung | 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-Variablen
Gato AI Translations for Polylang führt eine GraphQL-Query aus, um die Übersetzung durchzuführen. Die Konfiguration (die in den Plugin-Einstellungen definiert ist) wird über GraphQL-Variablen an die Query übergeben.
Du kannst die Query-Variablen über den folgenden Hook anpassen:
gatompl:query_variables
Der Hook erhält die folgenden zusätzlichen Parameter:
| Parameter | Beschreibung | Beispiel |
|---|---|---|
$querySlug | Slug der auszuführenden Query | translate-customposts |
Die Liste der unterstützten Query-Slugs ist im Abschnitt Hooks zur Query-Ausführung verfügbar.
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-Keys
Du kannst die zu synchronisierenden/übersetzenden Meta-Keys über die folgenden Hooks anpassen:
gatompl:syncable_meta_keysgatompl:translatable_meta_keysgatompl:custompost_and_media_entity_reference_translatable_meta_keysgatompl:taxonomy_entity_reference_translatable_meta_keys
Die Hooks erhalten die folgenden Parameter:
| Parameter | Beschreibung |
|---|---|
$object | Die zu übersetzende Entität vom Typ WP_Post (für Custom Posts und Medien) oder WP_Term (für Tags und Kategorien) |
$startingMetaKeys | Das Array der in der Entität vorhandenen Meta-Keys |
gatompl:syncable_meta_keys
Meta-Keys, die von der Quellentität zur übersetzten Entität kopiert werden (für Beiträge, Medien, Tags und Kategorien).
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-Keys mit Zeichenketten, die von der Quellentität zur übersetzten Entität kopiert und übersetzt werden.
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-Keys mit Verweis auf Beitrags-IDs (d. h. Custom Posts und Medien), die in die entsprechende ID für die Zielsprache kopiert und übersetzt werden.
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-Keys mit Verweis auf Taxonomie-Term-IDs (d. h. Tags und Kategorien), die in die entsprechende ID für die Zielsprache kopiert und übersetzt werden.
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
);