Як налаштувати рекламну мережу для роботи з функціями Google Search, пов’язаними з перекладом

Google Пошук пропонує кілька функцій, пов’язаних з перекладом, які дозволяють показувати користувачеві контент, перекладений з іншої мови. Якщо ви керуєте рекламною мережею і ваша реклама не з’являється на перекладених сайтах, перевірте, чи правильно у вас налаштовано показ і атрибуція оголошень. Про те, як це зробити, читайте в посібнику нижче.

Коли користувач натискає на перекладений результат і хоче перейти на пов’язану з ним сторінку, Google Перекладач отримує цю сторінку від видавця, змінює її вихідний URL і перекладає її вміст.

Якщо ваша рекламна мережа працює зі сторінкою, доступною за вихідною URL-адресою видавця, вам потрібно налаштувати зворотне перетворення URL, створеної в Google Перекладачі, щоб на перекладених сайтах відображалися оголошення. Щоб перетворити ім’я хоста видавця, виконайте наступні дії:

  1. Витягніть префікс домену з імені хоста видавця, видаливши з нього суфікс .translate.goog.
  2. Розділіть параметр _x_tr_enc за знаком , (комою) і збережіть отримані елементи як список encoding_list.
  3. Додайте значення параметра _x_tr_hp на початок префікса домену (якщо воно є).
  4. Якщо в списку encoding_list міститься значення 1, а результат операції починається з 1-, приберіть префікс 1- з результату, отриманого на кроці 2.
  5. Якщо в списку encoding_list міститься значення 0, а результат починається з 0-, приберіть префікс 0- з результату, отриманого на кроці 3. Якщо ви видалили цей префікс, присвойте елементу is_idn значення true. Якщо ні, присвойте елементу is_idn значення false.
  6. Замініть усі регулярні вирази /\b-\b/ на знак . (крапка).
  7. Замініть усі -- (подвійні дефіси) на знак - (звичайний дефіс).
  8. Якщо елементу is_idn присвоєно значення true, додайте префікс xn-- (символ із кодування Punycode).
  9. Необов’язково. Перетворіть отриманий текст у формат Unicode.
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;
}
  1. У URL вихідної сторінки замініть ім’я хоста на перетворений варіант.
  2. Видаліть усі параметри _x_tr_*.

За допомогою таблиці нижче ви можете провести модульне тестування свого коду. Для цього переконайтеся, що після обробки елементів proxyUrl вашим алгоритмом усі вихідні значення decodeHostname збігаються із вказаними в таблиці.

Значення з цієї таблиці можуть бути використані тільки для тестування програми, яка перетворює імена хостів. Переконайтеся, що шлях, фрагмент і вихідні параметри URL не були змінені.

proxyUrldecodeHostname
https://example-com.translate.googexample.com
https://foo-example-com.translate.googfoo.example.com
https://foo--example-com.translate.googfoo-example.com
https://0-57hw060o-com.translate.goog/?_x_tr_enc=0xn--57hw060o.com (⚡😊.com)
https://1-en--us-example-com/?_x_tr_enc=1en-us.example.com
https://0-en----w45as309w-com.translate.goog/?_x_tr_enc=0xn--en--w45as309w.com (en-⚡😊.com)
https://1-0-----16pw588q-com.translate.goog/?_x_tr_enc=0,1xn----16pw588q.com (⚡-😊.com)
https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=lllanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk
https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=www-lwww.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk
https://a--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-com.translate.goog/?_x_tr_hp=a--xn--xn--xn--xn--xn--------------------------aa-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)