Appliquer les fonctionnalités de traduction de la recherche Google à votre réseau publicitaire
La recherche Google propose plusieurs fonctionnalités de traduction qui permettent aux utilisateurs d'accéder au contenu traduit. Si vous gérez un réseau publicitaire et que vos annonces ne fonctionnent pas comme prévu sur les pages Web traduites, vous devrez suivre la procédure décrite dans ce guide pour vous assurer que vos annonces s'affichent ou sont attribuées correctement.
Notre approche
Lorsqu'un utilisateur accède à un contenu traduit fourni par Google Traduction à partir des résultats de recherche, Google extrait la page de l'éditeur, réécrit l'URL source et traduit la page Web lorsque l'utilisateur clique sur le résultat traduit.
Convertir l'URL Google Traduction en URL d'origine
Si vous gérez un réseau publicitaire qui dépend de l'URL source de l'éditeur, vous devrez convertir l'URL Google Traduction pour vous assurer que vos annonces fonctionnent correctement. Pour décoder le nom d'hôte de l'éditeur, procédez comme suit :
- Extrayez le préfixe du domaine du nom d'hôte en supprimant le suffixe
.translate.goog
. - Divisez le paramètre
_x_tr_enc
à l'aide du caractère,
(virgule), puis enregistrez-le sous le nomencoding_list
. - Ajoutez la valeur du paramètre
_x_tr_hp
avant le préfixe du domaine, le cas échéant. - Si
encoding_list
contient1
et que le résultat commence par1-
, supprimez le préfixe1-
du résultat de l'étape 2. - Si
encoding_list
contient0
et que le résultat commence par0-
, supprimez le préfixe0-
du résultat de l'étape 3. Si vous avez supprimé le préfixe, définissezis_idn
surtrue
. Sinon, définissezis_idn
surfalse
. - Remplacez
/\b-\b/
(expression régulière) par le caractère.
(point). - Remplacez le caractère
--
(double trait d'union) par le caractère-
(trait d'union). - Si
is_idn
est défini surtrue
, ajoutez le préfixe punycodexn--
. - Facultatif : convertissez le contenu au format Unicode.
Exemple de code JavaScript permettant de décoder le nom d'hôte depuis une URL Google Traduction
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; }
Réécrire l'URL
- Remplacez le nom d'hôte par le nom d'hôte décodé dans l'URL de la page d'origine.
- Supprimez tous les paramètres
_x_tr_*
.
Tester votre code
Vous pouvez créer des tests unitaires pour votre code à l'aide du tableau suivant. Pour une valeur proxyUrl
donnée, decodeHostname
doit correspondre à la valeur attendue.
Le tableau suivant ne peut être utilisé que pour tester le décodage du nom d'hôte. Assurez-vous que le chemin d'accès, le fragment et les paramètres d'origine de l'URL sont conservés tels quels.
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)
|