Гугл (Google) Search предоставляет несколько функций, связанных с переводом, которые позволяют пользователям получить доступ к переведенному контенту. Если ваша рекламная сеть не работает должным образом на переведенных веб-страницах, вам необходимо следовать рекомендациям, приведенным в этом руководстве, чтобы ваши объявления корректно отображались и атрибуты были правильно привязаны.
Когда пользователи обращаются к переведенному контенту, предоставленному Гугл (Google) Translate из поисковых результатов, Гугл (Google) получает страницу от издателя, изменяет исходный URL и выполняет перевод веб-страницы после того, как пользователь кликнул на переведенный результат.
Если ваша рекламная сеть зависит от исходного URL издателя, вам нужно преобразовать URL Гугл (Google) Translate, чтобы объявления отображались корректно. Следуйте этим шагам, чтобы декодировать имя хоста издателя:
function decodeHostname(proxyUrl) {
const parsedProxyUrl = new URL(proxyUrl);
const fullHost = parsedProxyUrl.hostname;
// 1. Извлеките префикс домена из имени хоста, удалив суффикс ".translate.goog"
let domainPrefix = fullHost.substring(0, fullHost.indexOf('.'));
// 2. Разделите параметр _x_tr_enc на части, используя запятую, и сохраните как encodingList
const encodingList = parsedProxyUrl.searchParams.has('_x_tr_enc') ?
parsedProxyUrl.searchParams.get('_x_tr_enc').split(',') : [];
// 3. Добавьте значение параметра _x_tr_hp к префиксу домена, если оно существует
if (parsedProxyUrl.searchParams.has('_x_tr_hp')) {
domainPrefix = parsedProxyUrl.searchParams.get('_x_tr_hp') + domainPrefix;
}
// 4. Удалите префикс '1-' из результата шага 2, если encodingList содержит '1' и результат начинается с '1-'.
if (encodingList.includes('1') && domainPrefix.startsWith('1-')) {
domainPrefix = domainPrefix.substring(2);
}
// 5. Удалите префикс '0-' из результата шага 3, если encodingList содержит '0' и результат начинается с '0-'.
// Установите isIdn в true, если префикс был удален, в false в противном случае.
let isIdn = false;
if (encodingList.includes('0') && domainPrefix.startsWith('0-')) {
isIdn = true;
domainPrefix = domainPrefix.substring(2);
}
// 6. Замените /-/ на точку (.)
// 7. Замените двойное тире на одно тире.
let decodedSegment = domainPrefix.replaceAll(/-/g, '.').replaceAll('--', '-');
// 8. Если isIdn равно true, добавьте префикс 'xn--'.
if (isIdn) {
decodedSegment = 'xn--' + decodedSegment;
}
return decodedSegment;
}
Вы можете создать юнит-тесты для вашего кода, используя следующую таблицу. При подаче proxyUrl, функция decodeHostname должна возвращать ожидаемое значение.
Следующая таблица используется только для тестирования декодирования имени хоста. Необходимо удостовериться, что путь, фрагмент и оригинальные параметры URL сохраняются в неизменном виде.
| 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 |
| https://1-en--us-example-com/?_x_tr_enc=1 | en-us.example.com |
| https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=lllanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk | lllanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk |
Если у вас есть вопросы по интеграции переводов на вашем сайте и правильному отображению рекламы, вы можете обратиться в seo-компанию "seo.computer" по любому вопросу на email info@seo.computer или в WhatsApp +79202044461.
id 168