Reklam ağınızın Google Arama'daki çeviri özellikleriyle çalışmasını sağlama

Google Arama, kullanıcıların çevrilmiş içeriğe erişebilmesini sağlayan çeşitli çeviri özellikleri sunar. Bir reklam ağı işletiyorsanız ve reklamlarınız, çevrilmiş web sayfalarında düzgün çalışmıyorsa reklamlarınızın doğru bir şekilde oluşturulduğundan veya ilişkilendirildiğinden emin olmak için bu rehberdeki adımları uygulamanız gerekir.

Yaklaşımımız

Kullanıcılar, arama sonuçlarından Google Çeviri tarafından çevrilmiş içeriğe eriştiklerinde Google sayfayı yayıncıdan alır, kaynak URL'yi yeniden yazar ve kullanıcı çevrilen sonucu tıkladıktan sonra web sayfasını çevirir.

Google Çeviri URL'sini orijinal URL'ye dönüştürme

Yayıncının kaynak URL'sini temel alan bir reklam ağı işletiyorsanız reklamlarınızın düzgün çalıştığından emin olmak için Google Çeviri URL'sini dönüştürmeniz gerekir. Yayıncının ana makine adına ait kodu çözmek için aşağıdaki adımları izleyin:

  1. .translate.goog son ekini kaldırarak ana makine adındaki alan adı önekini çıkarın.
  2. _x_tr_enc parametresini , (virgül) karakteriyle bölüp encoding_list olarak kaydedin.
  3. Varsa _x_tr_hp parametresinin değerini, alan adı önekinin başına ekleyin.
  4. encoding_list içerisinde 1 bulunuyorsa ve çıkış 1- ile başlıyorsa 2. adımdaki çıkıştan 1- önekini kaldırın.
  5. encoding_list içerisinde 0 bulunuyorsa ve çıkış 0- ile başlıyorsa 3. adımdaki çıkıştan 0- önekini kaldırın. Öneki kaldırdıysanız is_idn öğesini true değerine ayarlayın. Aksi halde is_idn öğesini false değerine ayarlayın.
  6. /\b-\b/ (regex) öğesini . (nokta) karakteriyle değiştirin.
  7. -- (çift tire) karakterini - (tire) karakteriyle değiştirin.
  8. is_idn öğesi true değerine ayarlanırsa xn-- punycode önekini ekleyin.
  9. İsteğe bağlı: Unicode'a dönüştürün.

Google Çeviri URL'sindeki ana makine adına ait kodu çözmek için örnek JavaScript kodu

function decodeHostname(proxyUrl) {
  const parsedProxyUrl = new URL(proxyUrl);
  const fullHost = parsedProxyUrl.hostname;
  // 1. Extract the domain prefix from the hostname, by removing the
        ".translate.goog" suffix
  let domainPrefix = fullHost.substring(0, fullHost.indexOf('.'));

  // 2. Split _x_tr_enc parameter by "," (comma), save as encodingList
  const encodingList = parsedProxyUrl.searchParams.has('_x_tr_enc') ?
      parsedProxyUrl.searchParams.get('_x_tr_enc').split(',') :
      [];

  // 3. Prepend value of _x_tr_hp parameter to the domain prefix, if it exists
  if (parsedProxyUrl.searchParams.has('_x_tr_hp')) {
    domainPrefix = parsedProxyUrl.searchParams.get('_x_tr_hp') + domainPrefix;
  }

  // 4. Remove '1-' prefix from the output of step 2 if encodingList contains
  //    '1' and the output begins with '1-'.
  if (encodingList.includes('1') && domainPrefix.startsWith('1-')) {
    domainPrefix = domainPrefix.substring(2);
  }

  // 5. Remove '0-' prefix from the output of step 3 if encodingList contains
  //    '0' and the output begins with '0-'.
  //    Set isIdn to true if removed, false otherwise.
  let isIdn = false;
  if (encodingList.includes('0') && domainPrefix.startsWith('0-')) {
    isIdn = true;
    domainPrefix = domainPrefix.substring(2);
  }

  // 6. Replace /\b-\b/ (regex) with '.' (dot) character.
  // 7. Replace '--' (double hyphen) with '-' (hyphen).
  let decodedSegment =
      domainPrefix.replaceAll(/\b-\b/g, '.').replaceAll('--', '-');

  // 8. If isIdn equals true, add the punycode prefix 'xn--'.
  if (isIdn) {
    decodedSegment = 'xn--' + decodedSegment;
  }
  return decodedSegment;
}

URL'yi yeniden oluşturma

  1. Orijinal sayfa URL'sini kullanarak ana makine adını, kodu çözülmüş ana makine adıyla değiştirin.
  2. Tüm _x_tr_* parametrelerini kaldırın.

Kodunuzu test etme

Aşağıdaki tabloyu kullanarak kodunuz için birim testleri oluşturabilirsiniz. proxyUrl söz konusu olduğunda decodeHostname, beklenen değerle eşleşmelidir.

Aşağıdaki tablo yalnızca ana makine adının kod çözme işlemini test etmek için kullanılabilir. URL'nin yol, parça ve orijinal parametrelerinin aynı şekilde korunduğundan emin olmanız gerekir.

proxyUrl decodeHostname
https://example-com.translate.goog example.com
https://foo-example-com.translate.goog foo.example.com
https://foo--example-com.translate.goog foo-example.com
https://0-57hw060o-com.translate.goog/?_x_tr_enc=0 xn--57hw060o.com (⚡😊.com)
https://1-en--us-example-com/?_x_tr_enc=1 en-us.example.com
https://0-en----w45as309w-com.translate.goog/?_x_tr_enc=0 xn--en--w45as309w.com (en-⚡😊.com)
https://1-0-----16pw588q-com.translate.goog/?_x_tr_enc=0,1 xn----16pw588q.com (⚡-😊.com)
https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=l llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk
https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=www-l www.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk
https://a--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-com.translate.goog/?_x_tr_hp=a--xn--xn--xn--xn--xn--------------------------a a-xn-xn-xn-xn-xn-------------aa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com
https://g5h3969ntadg44juhyah3c9aza87iiar4i410avdl8d3f1fuq3nz05dg5b-com.translate.goog/?_x_tr_enc=0&_x_tr_hp=0- xn--g5h3969ntadg44juhyah3c9aza87iiar4i410avdl8d3f1fuq3nz05dg5b.com (💖🌲😊💞🤷‍♂️💗🌹😍🌸🌺😂😩😉😒😘💕🐶🐱🐭🐹🐰🐻🦊🐇😺.com)