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:
- Estrai il prefisso del dominio dal nome host rimuovendo il suffisso
.translate.goog
. - Suddividi il parametro
_x_tr_enc
per il carattere,
(virgola) e salvalo comeencoding_list
. - Anteponi il valore del parametro
_x_tr_hp
al prefisso del dominio, se esistente. - Se
encoding_list
contiene1
e l'output inizia con1-
, rimuovi il prefisso1-
dall'output del passo 2. - Se
encoding_list
contiene0
e l'output inizia con0-
, rimuovi il prefisso0-
dall'output del passo 3. Se hai rimosso il prefisso, impostais_idn
sutrue
. In caso contrario, impostais_idn
sufalse
. - Sostituisci
/\b-\b/
(regex) con il carattere.
(punto). - Sostituisci il carattere
--
(trattino doppio) con il carattere-
(trattino). - Se
is_idn
è impostato sutrue
, aggiungi il prefisso punycodexn--
. - 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
- Utilizzando l'URL della pagina originale, sostituisci il nome host con il nome host decodificato.
- 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)
|