Werbenetzwerk für Übersetzungsfunktionen in der Google Suche aktivieren
Die Google Suche bietet mehrere Übersetzungsfunktionen, mit denen Nutzer auf übersetzte Inhalte zugreifen können. Wenn du ein Werbenetzwerk betreibst und deine Werbeanzeigen auf übersetzten Webseiten nicht richtig funktionieren, solltest du der Anleitung in diesem Leitfaden folgen, damit deine Werbeanzeigen richtig gerendert oder zugeordnet werden.
Unser Ansatz
Wenn Nutzer in den Suchergebnissen auf Inhalte zugreifen, die von Google Übersetzer übersetzt wurden, ruft Google, die Seite vom Publisher ab, schreibt die Quell-URL um und übersetzt die Webseite, nachdem der Nutzer auf das übersetzte Ergebnis geklickt hat.
Google Übersetzer-URL in Original-URL konvertieren
Wenn du ein Werbenetzwerk betreibst, das auf der Quell-URL des Publishers basiert, musst du die Google Übersetzer-URL konvertieren, um sicherzustellen, dass deine Werbeanzeigen richtig funktionieren. So decodierst du den Hostnamen des Publishers:
- Extrahiere das Domainpräfix aus dem Hostnamen, indem du das Suffix
.translate.goog
entfernst. - Teile den Parameter
_x_tr_enc
durch das Zeichen,
(Komma) auf und speichere ihn alsencoding_list
. - Stelle dem Wert des Parameters
_x_tr_hp
das Domainpräfix voran, falls vorhanden. - Wenn
encoding_list
1
enthält und die Ausgabe mit1-
beginnt, entferne das Präfix1-
von der Ausgabe von Schritt 2. - Wenn
encoding_list
0
enthält und die Ausgabe mit0-
beginnt, entferne das Präfix0-
von der Ausgabe von Schritt 3. Wenn du das Präfix entfernt hast, setzeis_idn
auftrue
. Andernfalls setzt duis_idn
auffalse
. - Ersetze
/\b-\b/
(Regex) durch das Zeichen.
(Punkt). - Ersetze das Zeichen
--
(doppelter Bindestrich) durch das Zeichen-
(Bindestrich). - Wenn
is_idn
auftrue
gesetzt ist, füge das Punycode-Präfixxn--
hinzu. - Optional: Konvertiere den Hostnamen in Unicode.
JavaScript-Beispielcode zum Decodieren des Hostnamens aus einer Google Übersetzer-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 rekonstruieren
- Ersetze den Hostnamen mithilfe der ursprünglichen Seiten-URL durch den decodierten Hostnamen.
- Entferne alle
_x_tr_*
-Parameter.
Code testen
Du kannst anhand der folgenden Tabelle Unittests für deinen Code erstellen. Bei proxyUrl
muss decodeHostname
mit dem erwarteten Wert übereinstimmen.
Die folgende Tabelle kann nur zum Testen der Decodierung des Hostnamens verwendet werden. Du musst darauf achten, dass der Pfad, das Fragment und die ursprünglichen Parameter der URL unverändert beibehalten werden.
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)
|