Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Как настроить рекламную сеть для работы с функциями Google Поиска, связанными с переводом
Google Поиск предлагает несколько функций, связанных с переводом, которые позволяют показывать пользователю контент, переведенный с другого языка. Если вы управляете рекламной сетью и ваша реклама не появляется на переведенных сайтах, проверьте, правильно ли у вас настроены показ и атрибуция объявлений. О том, как это сделать, читайте в руководстве ниже.
Наш подход
Когда пользователь нажимает на переведенный результат и хочет перейти к связанной с ним странице, Google Переводчик получает у издателя эту страницу, изменяет ее исходный URL и переводит ее содержание.
Как преобразовать URL, обработанный в Google Переводчике, для получения исходного адреса страницы
Если ваша рекламная сеть работает со страницей, доступной по исходному URL издателя, вам необходимо настроить обратное преобразование URL, созданного в Google Переводчике, чтобы на переведенных сайтах показывались объявления. Для того чтобы преобразовать имя хоста издателя, выполните следующие действия:
Извлеките префикс домена из имени хоста издателя, удалив из него суффикс .translate.goog.
Разделите параметр _x_tr_enc по знаку , (запятой) и сохраните получившиеся элементы как список encoding_list.
Добавьте значение параметра _x_tr_hp в начало префикса домена (если оно есть).
Если в списке encoding_list содержится значение 1, а результат операции начинается с 1-, уберите префикс 1- из результата, получившегося на шаге 2.
Если в списке encoding_list содержится значение 0, а результат начинается с 0-, уберите префикс 0- из результата, получившегося на шаге 3. Если вы удалили этот префикс, присвойте элементу is_idn значение true. Если нет, присвойте элементу is_idn значение false.
Замените все регулярные выражения /\b-\b/ на знак . (точка).
Замените все -- (двойные дефисы) на знак - (обычного дефиса).
Если элементу is_idn присвоено значение true, добавьте префикс xn-- (символ из кодировки Punycode).
Необязательно. Преобразуйте полученный текст в формат Unicode.
Пример кода JavaScript для преобразования URL после Google Переводчика в исходный URL страницы
В URL исходной страницы замените имя хоста на преобразованный вариант.
Удалите все параметры _x_tr_*.
Как проверить написанный код
С помощью таблицы ниже вы можете провести модульное тестирование своего кода. Для этого убедитесь, что после обработки элементов proxyUrl вашим алгоритмом все выходные значения decodeHostname совпадают с указанными в таблице.
Значения из этой таблицы могут быть использованы только для тестирования программы, преобразующей имена хоста. Убедитесь в том, что путь, фрагмент и исходные параметры URL не были изменены.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-08-04 UTC."],[[["\u003cp\u003eAd networks need to adjust how they handle Google Translate URLs to ensure ads function correctly on translated pages.\u003c/p\u003e\n"],["\u003cp\u003eA process is outlined to decode Google Translate URLs back to the original publisher's URL, involving extracting and manipulating URL components.\u003c/p\u003e\n"],["\u003cp\u003eProvided JavaScript code offers a solution to decode the hostname from Google Translate URLs.\u003c/p\u003e\n"],["\u003cp\u003eReconstructing the full original URL involves replacing the decoded hostname and removing Google Translate-specific parameters.\u003c/p\u003e\n"],["\u003cp\u003eA table with sample URLs and expected decoded hostnames aids in testing the implementation.\u003c/p\u003e\n"]]],["Ad networks must decode Google Translate URLs to ensure ads function on translated pages. This involves extracting the domain prefix, splitting the `_x_tr_enc` parameter, prepending the `_x_tr_hp` parameter, conditionally removing prefixes based on `encoding_list`, replacing hyphens, and adding a punycode prefix if `is_idn` is true. Finally, reconstruct the original URL by replacing the hostname with the decoded one and removing `_x_tr_*` parameters. Sample JavaScript code and test cases are provided.\n"],null,["# Ad Networks & Translation Search Features | Google Search Central\n\nEnabling your ad network to work with translation-related Google Search features\n================================================================================\n\n\nGoogle Search offers several [translation-related features](/search/docs/appearance/translated-results)\nthat enable users to access translated content. If you run an ad network and your ads aren't\nworking properly on translated web pages, you'll need to follow the steps in this guide to\nmake sure your ads render or attribute correctly.\n\nOur approach\n------------\n\n\nWhen users access translated content provided by [Google\nTranslate](https://translate.google.com/about/) from within search results, Google retrieves the page from the publisher, rewrites\nthe source URL, and translates the web page after the user clicks the translated result.\n\nConvert the Google Translate URL to the original URL\n----------------------------------------------------\n\n\nIf you run an ad network that relies on the publisher's source URL, you'll need to convert the\nGoogle Translate URL to make sure your ads are working properly. Follow these steps to decode the publisher's hostname:\n\n1. Extract the domain prefix from the hostname, by removing the `.translate.goog` suffix.\n2. Split the `_x_tr_enc` parameter by the `,` (comma) character and save it as `encoding_list`.\n3. Prepend the value of the `_x_tr_hp` parameter to the domain prefix, if it exists.\n4. If `encoding_list` contains `1` and the output begins with `1-`, remove the `1-` prefix from the output of step 2.\n5. If `encoding_list` contains `0` and the output begins with `0-`, remove the `0-` prefix from the output of step 3. If you removed the prefix, set `is_idn` to `true`. Otherwise, set `is_idn` to `false`.\n6. Replace `/\\b-\\b/` (regex) with the `.` (dot) character.\n7. Replace the `--` (double hyphen) character with the `-` (hyphen) character.\n8. If `is_idn` is set to `true`, add the punycode prefix `xn--`.\n9. **Optional**: Convert to Unicode.\n\n### Sample JavaScript code for decoding the hostname from a Google Translate URL\n\n```gdscript\nfunction decodeHostname(proxyUrl) {\n const parsedProxyUrl = new URL(proxyUrl);\n const fullHost = parsedProxyUrl.hostname;\n // 1. Extract the domain prefix from the hostname, by removing the\n \".translate.goog\" suffix\n let domainPrefix = fullHost.substring(0, fullHost.indexOf('.'));\n\n // 2. Split _x_tr_enc parameter by \",\" (comma), save as encodingList\n const encodingList = parsedProxyUrl.searchParams.has('_x_tr_enc') ?\n parsedProxyUrl.searchParams.get('_x_tr_enc').split(',') :\n [];\n\n // 3. Prepend value of _x_tr_hp parameter to the domain prefix, if it exists\n if (parsedProxyUrl.searchParams.has('_x_tr_hp')) {\n domainPrefix = parsedProxyUrl.searchParams.get('_x_tr_hp') + domainPrefix;\n }\n\n // 4. Remove '1-' prefix from the output of step 2 if encodingList contains\n // '1' and the output begins with '1-'.\n if (encodingList.includes('1') && domainPrefix.startsWith('1-')) {\n domainPrefix = domainPrefix.substring(2);\n }\n\n // 5. Remove '0-' prefix from the output of step 3 if encodingList contains\n // '0' and the output begins with '0-'.\n // Set isIdn to true if removed, false otherwise.\n let isIdn = false;\n if (encodingList.includes('0') && domainPrefix.startsWith('0-')) {\n isIdn = true;\n domainPrefix = domainPrefix.substring(2);\n }\n\n // 6. Replace /\\b-\\b/ (regex) with '.' (dot) character.\n // 7. Replace '--' (double hyphen) with '-' (hyphen).\n let decodedSegment =\n domainPrefix.replaceAll(/\\b-\\b/g, '.').replaceAll('--', '-');\n\n // 8. If isIdn equals true, add the punycode prefix 'xn--'.\n if (isIdn) {\n decodedSegment = 'xn--' + decodedSegment;\n }\n return decodedSegment;\n}\n```\n\nReconstruct the URL\n-------------------\n\n1. Using the original page URL, replace the hostname with the decoded hostname.\n2. Remove all `_x_tr_*` parameters.\n\nTest your code\n--------------\n\n\nYou can create unit tests for your code using the following table. Given a `proxyUrl`,\nthe `decodeHostname` must match the expected value.\n\n\nThe following table can only be used to test the hostname decoding. You'll need to ensure that\nthe path, fragment, and original parameters of the URL are preserved as is.\n\n| `proxyUrl` | `decodeHostname` |\n|----------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|\n| `https://example-com.translate.goog` | `example.com` |\n| `https://foo-example-com.translate.goog` | `foo.example.com` |\n| `https://foo--example-com.translate.goog` | `foo-example.com` |\n| `https://0-57hw060o-com.translate.goog/?_x_tr_enc=0` | `xn--57hw060o.com (⚡😊.com)` |\n| `https://1-en--us-example-com/?_x_tr_enc=1` | `en-us.example.com` |\n| `https://0-en----w45as309w-com.translate.goog/?_x_tr_enc=0` | `xn--en--w45as309w.com (en-⚡😊.com)` |\n| `https://1-0-----16pw588q-com.translate.goog/?_x_tr_enc=0,1` | `xn----16pw588q.com (⚡-😊.com)` |\n| `https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=l` | `llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk` |\n| `https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=www-l` | `www.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk` |\n| `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` |\n| `https://g5h3969ntadg44juhyah3c9aza87iiar4i410avdl8d3f1fuq3nz05dg5b-com.translate.goog/?_x_tr_enc=0&_x_tr_hp=0-` | `xn--g5h3969ntadg44juhyah3c9aza87iiar4i410avdl8d3f1fuq3nz05dg5b.com (💖🌲😊💞🤷♂️💗🌹😍🌸🌺😂😩😉😒😘💕🐶🐱🐭🐹🐰🐻🦊🐇😺.com)` |"]]