Kancalar aracılığıyla verilerin üstüne yazma
Bu bölüm, PHP kancaları aracılığıyla içerik çevirisi için kullanılan verilerin üstüne nasıl yazılacağını açıklar.
AI çeviri sağlayıcıları için promptlar
PHP kodundaki kancalar aracılığıyla AI çeviri sağlayıcılarına gönderilen promptları özelleştirebilirsiniz.
Aşağıdakileri özelleştirebilirsiniz:
- Sistem mesajı
- Prompt şablonu
- Prompt
Bunların her biri için iki kanca mevcuttur:
gatompl:<hook_name>gatompl:<hook_name>:<provider_name>
İlk kanca, tüm sağlayıcılar için değişkenleri değiştirmek amacıyla kullanılır.
İkinci kanca, belirli bir sağlayıcı için değişkenleri değiştirmek amacıyla kullanılır.
Aşağıdaki sağlayıcı adları desteklenmektedir:
chatgptclaudedeepseekgeminimistralopenrouterself_hosted_llm
Aşağıdaki kancalar, çevrilecek varlık verilerini (örn.: gönderi kimliği, özel gönderi türü vb.) almaz; yalnızca dil kodunu ve çevrilecek dizeleri alır.
Varlık verilerine ihtiyaç duyarsanız, bunları gatompl:query_execution_start eylem kancası aracılığıyla alabilirsiniz; bu örnekte gösterildiği gibi.
Kanca, sorgu yürütülmeden önce tetiklendiğinden, verileri bir değişkende saklayabilir ve aşağıdaki filtre kancalarından herhangi birinde kullanabilirsiniz.
Sistem mesajı
Sistem mesajı, AI'ın çevirinin bağlamını anlaması için kullanılır. Örn.:
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 şablonu
Prompt şablonu, çalışma zamanında çözümlenecek değişken yer tutucularını içerir. Örn.:
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
Prompt, prompt şablonu çözümlendikten sonra AI hizmetine gönderilen gerçek prompttur. Yanıtın biçiminin doğru olmasını sağlamak için ek bilgiler ekler. Örn.:
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.Kancalar aşağıdaki ek parametreleri alır:
| Parametre | Açıklama | Örnek |
|---|---|---|
$contents | Çevrilecek dizeler | ['hello world'] |
$sourceLanguageCode | Kaynak dilin ISO-639 kodu | en |
$sourceLanguageName | Kaynak dilin adı (İngilizce olarak) | English |
$targetLanguageCode | Hedef dilin ISO-639 kodu | fr |
$targetLanguageName | Hedef dilin adı (İngilizce olarak) | French |
$targetCountryCode | Çeviriyi yerelleştirmek için ülkenin ISO-3166 kodu | FR |
$targetCountryName | Çeviriyi yerelleştirmek için ülke adı (İngilizce olarak) | 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
);Sorgu Değişkenleri
Gato AI Translations for Polylang, çeviriyi gerçekleştirmek için bir GraphQL sorgusu yürütür. Eklenti Ayarlarında tanımlanan yapılandırmayı GraphQL değişkenleri aracılığıyla sorguya iletir.
Sorgu değişkenlerini aşağıdaki kanca aracılığıyla özelleştirebilirsiniz:
gatompl:query_variables
Kanca aşağıdaki ek parametreleri alır:
| Parametre | Açıklama | Örnek |
|---|---|---|
$querySlug | Yürütülecek sorgunun slug'ı | translate-customposts |
Desteklenen sorgu slug'larının listesi, Sorgu yürütme kancaları bölümünde mevcuttur.
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 anahtarları
Aşağıdaki kancalar aracılığıyla senkronize edilecek/çevrilecek meta anahtarlarını özelleştirebilirsiniz:
gatompl:syncable_meta_keysgatompl:translatable_meta_keysgatompl:custompost_and_media_entity_reference_translatable_meta_keysgatompl:taxonomy_entity_reference_translatable_meta_keys
Kancalar aşağıdaki parametreleri alır:
| Parametre | Açıklama |
|---|---|
$object | Çevrilen varlık; WP_Post türünde (özel gönderiler ve medya için) veya WP_Term türünde (etiketler ve kategoriler için) |
$startingMetaKeys | Varlıkta mevcut meta anahtarları dizisi |
gatompl:syncable_meta_keys
Kaynak varlıktan çevrilmiş varlığa kopyalanacak meta anahtarları (gönderiler, medya, etiketler ve kategoriler için).
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
Dizeler içeren meta anahtarları; kaynak varlıktan çevrilmiş varlığa kopyalanır ve çevrilir.
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
Gönderi kimliklerine (yani özel gönderiler ve medya) referans içeren meta anahtarları; hedef dil için karşılık gelen kimliğe kopyalanır ve çevrilir.
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
Taksonomi terim kimliklerine (yani etiketler ve kategoriler) referans içeren meta anahtarları; hedef dil için karşılık gelen kimliğe kopyalanır ve çevrilir.
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
);