Abilitare la rete pubblicitaria affinché operi con le funzionalità di Ricerca Google correlate alla traduzione

La Ricerca Google offre diverse funzionalità correlate alla traduzione che consentono agli utenti di accedere ai contenuti tradotti. Se gestisci una rete pubblicitaria e i tuoi annunci non funzionano correttamente sulle pagine web tradotte, devi seguire la procedura descritta in questa guida per assicurarti che agli annunci venga effettuato il rendering o che siano attribuiti correttamente.

Il nostro approccio

Quando gli utenti accedono ai contenuti tradotti forniti da Google Traduttore sui risultati di ricerca, Google recupera la pagina dal publisher, riscrive l'URL di origine e traduce la pagina web dopo che l'utente fa clic sul risultato tradotto.

Converti l'URL di Google Traduttore nell'URL originale

Se pubblichi su una rete pubblicitaria che si basa sull'URL di origine del publisher, dovrai convertire l'URL di Google Traduttore per assicurarti che i tuoi annunci funzionino correttamente. Per decodificare il nome host del publisher segui questi passi:

  1. Estrai il prefisso del dominio dal nome host rimuovendo il suffisso .translate.goog.
  2. Suddividi il parametro _x_tr_enc per il carattere , (virgola) e salvalo come encoding_list.
  3. Anteponi il valore del parametro _x_tr_hp al prefisso del dominio, se esistente.
  4. Se encoding_list contiene 1 e l'output inizia con 1-, rimuovi il prefisso 1- dall'output del passo 2.
  5. Se encoding_list contiene 0 e l'output inizia con 0-, rimuovi il prefisso 0- dall'output del passo 3. Se hai rimosso il prefisso, imposta is_idn su true. In caso contrario, imposta is_idn su false.
  6. Sostituisci /\b-\b/ (regex) con il carattere . (punto).
  7. Sostituisci il carattere -- (trattino doppio) con il carattere - (trattino).
  8. Se is_idn è impostato su true, aggiungi il prefisso punycode xn--.
  9. Facoltativo: converti in Unicode.

Codice JavaScript di esempio per la decodifica del nome host da un URL di Google Traduttore

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;
}

Ricostruisci l'URL

  1. Utilizzando l'URL della pagina originale, sostituisci il nome host con il nome host decodificato.
  2. Rimuovi tutti i parametri _x_tr_*.

Prova il codice

Puoi creare test delle unità per il tuo codice utilizzando la seguente tabella. Data un valore proxyUrl, decodeHostname deve corrispondere al valore previsto.

La seguente tabella può essere utilizzata solo per testare la decodifica del nome host. Devi assicurarti che il percorso, il frammento e i parametri originali dell'URL vengano conservati così come sono.

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)