Как настроить рекламную сеть для работы с функциями Google Поиска, связанными с переводом

Google Поиск предлагает несколько функций, связанных с переводом, которые позволяют показывать пользователю контент, переведенный с другого языка. Если вы управляете рекламной сетью и ваша реклама не появляется на переведенных сайтах, проверьте, правильно ли у вас настроены показ и атрибуция объявлений. О том, как это сделать, читайте в руководстве ниже.

Наш подход

Когда пользователь нажимает на переведенный результат и хочет перейти к связанной с ним странице, Google Переводчик получает у издателя эту страницу, изменяет ее исходный URL и переводит ее содержание.

Как преобразовать URL, обработанный в Google Переводчике, для получения исходного адреса страницы

Если ваша рекламная сеть работает со страницей, доступной по исходному 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.

Пример кода JavaScript для преобразования URL после Google Переводчика в исходный URL страницы

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

  1. В URL исходной страницы замените имя хоста на преобразованный вариант.
  2. Удалите все параметры _x_tr_*.

Как проверить написанный код

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

Значения из этой таблицы могут быть использованы только для тестирования программы, преобразующей имена хоста. Убедитесь в том, что путь, фрагмент и исходные параметры URL не были изменены.

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=1 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)