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-адресу сторінки
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
- У URL вихідної сторінки замініть ім’я хоста на перетворений варіант.
- Видаліть усі параметри
_x_tr_*.
Як перевірити написаний код
За допомогою таблиці нижче ви можете провести модульне тестування свого коду. Для цього переконайтеся, що після обробки елементів proxyUrl вашим алгоритмом усі вихідні значення decodeHostname збігаються із вказаними в таблиці.
Значення з цієї таблиці можуть бути використані тільки для тестування програми, яка перетворює імена хостів. Переконайтеся, що шлях, фрагмент і вихідні параметри URL не були змінені.
proxy | decode |
|---|---|
https:/ | example. |
https:/ | foo. |
https:/ | foo-example. |
https:/ | xn--57hw060o. |
https:/ | en-us. |
https:/ | xn--en--w45as309w. |
https:/ | xn----16pw588q. |
https:/ | llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch. |
https:/ | www. |
https:/ | a-xn-xn-xn-xn-xn-------------aa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. |
https:/ | xn--g5h3969ntadg44juhyah3c9aza87iiar4i410avdl8d3f1fuq3nz05dg5b. |