Hooks
HooksKancalar aracılığıyla verilerin üstüne yazma

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:

  • chatgpt
  • claude
  • deepseek
  • gemini
  • mistral
  • openrouter
  • self_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:

ParametreAçıklamaÖrnek
$contentsÇevrilecek dizeler['hello world']
$sourceLanguageCodeKaynak dilin ISO-639 koduen
$sourceLanguageNameKaynak dilin adı (İngilizce olarak)English
$targetLanguageCodeHedef dilin ISO-639 kodufr
$targetLanguageNameHedef dilin adı (İngilizce olarak)French
$targetCountryCodeÇeviriyi yerelleştirmek için ülkenin ISO-3166 koduFR
$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:

ParametreAçıklamaÖrnek
$querySlugYü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_keys
  • gatompl:translatable_meta_keys
  • gatompl:custompost_and_media_entity_reference_translatable_meta_keys
  • gatompl:taxonomy_entity_reference_translatable_meta_keys

Kancalar aşağıdaki parametreleri alır:

ParametreAçı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)
$startingMetaKeysVarlı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
);