Umożliwianie współpracy sieci reklamowej z funkcjami wyszukiwarki Google związanymi z tłumaczeniem
Wyszukiwarka Google ma kilka funkcji związanych z tłumaczeniem, które umożliwiają użytkownikom dostęp do przetłumaczonych treści. Jeśli zarządzasz siecią reklamową i Twoje reklamy nie działają prawidłowo na przetłumaczonych stronach, wykonaj czynności opisane w tym przewodniku, aby reklamy poprawnie się renderowały lub były odpowiednio przypisywane.
Nasze metody
Gdy użytkownik kliknie wynik wyszukiwania przetłumaczony przez Tłumacza Google, Google pobiera stronę wydawcy, zmienia jej źródłowy adres URL i tłumaczy stronę.
Konwertowanie adresu URL Tłumacza Google na oryginalny adres URL
Jeśli zarządzasz siecią reklamową, która wymaga źródłowego adresu URL wydawcy, musisz przekonwertować adres URL Tłumacza Google, żeby Twoje reklamy działały prawidłowo. Aby zdekodować nazwę hosta wydawcy:
- Wyodrębnij prefiks domeny z nazwy hosta, usuwając sufiks
.translate.goog
. - Podziel parametr
_x_tr_enc
w miejscu, w którym znajduje się znak,
(przecinek), i zapisz go jakoencoding_list
. - Na początku prefiksu domeny dołącz wartość parametru
_x_tr_hp
(jeśli istnieje). - Jeśli
encoding_list
zawiera1
, a uzyskana do tej pory nazwa zaczyna się od1-
, usuń prefiks1-
z nazwy uzyskanej w kroku 2. - Jeśli
encoding_list
zawiera0
, a uzyskana do tej pory nazwa zaczyna się od0-
, usuń prefiks0-
z nazwy uzyskanej w kroku 3. Jeśli prefiks został usunięty, ustawis_idn
natrue
. W przeciwnym razie ustawis_idn
nafalse
. - Zastąp
/\b-\b/
(wyrażenie regularne) kropką (.
). - Zastąp podwójny łącznik (
--
) znakiem-
. - Jeśli
is_idn
ma wartośćtrue
, dodaj prefiksxn--
w punycode. - Opcjonalnie: przekonwertuj nazwę na Unicode.
Przykładowy kod JavaScript do dekodowania nazwy hosta z adresu URL Tłumacza Google
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; }
Odtwarzanie adresu URL
- Zastąp nazwę hosta w oryginalnym adresie URL strony zdekodowaną nazwą hosta.
- Usuń wszystkie parametry
_x_tr_*
.
Testowanie kodu
Za pomocą tabeli poniżej możesz tworzyć testy jednostkowe kodu. decodeHostname
musi odpowiadać oczekiwanej wartości dla podanego parametru proxyUrl
.
Tabela umożliwia tylko testowanie dekodowania nazwy hosta. Musisz upewnić się, że ścieżka, fragment i oryginalne parametry adresu URL zostaną zachowane.
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)
|