تفعيل شبكة الإعلانات للتوافق مع ميزات ""بحث Google" المتعلقة بالترجمة

يقدّم محرّك بحث Google عدة ميزات متعلقة بالترجمة تتيح للمستخدمين الوصول إلى المحتوى المترجَم. إذا كنت تدير شبكة إعلانات وكانت إعلاناتك لا تظهر بشكل صحيح على صفحات الويب المترجَمة، ستحتاج إلى اتّباع الخطوات الواردة في هذا الدليل للتأكّد من عرض إعلاناتك أو إضافة سماتها بشكل صحيح.

الأسلوب الذي نتّبعه

عند وصول المستخدمين إلى المحتوى المترجَم الذي توفّره ترجمة Google من نتائج البحث، يستردّ محرّك بحث Google الصفحة من الناشر ويعيد كتابة عنوان URL الخاص بالمصدر ويترجم صفحة الويب بعد أن ينقر المستخدم على النتيجة المترجَمة.

تحويل عنوان URL الخاص بخدمة "ترجمة Google" إلى عنوان URL الأصلي

إذا كنت تدير شبكة إعلانات تعتمد على عنوان URL المصدر الخاص بالناشر، ستحتاج إلى تحويل عنوان URL الخاص بخدمة "ترجمة Google" للتأكد من عرض إعلاناتك بشكل صحيح. اتّبِع الخطوات التالية لفكّ ترميز اسم المضيف الخاص بالناشر:

  1. استخرِج بادئة النطاق من اسم المضيف، وذلك عبر إزالة اللاحقة .translate.goog.
  2. اقسِم المعلَمة _x_tr_enc باستخدام الحرف , (فاصلة) واحفظها باسم encoding_list.
  3. أضِف قيمة المعلَمة _x_tr_hp إلى بادئة النطاق، في حال توفّرها.
  4. إذا كانت السمة encoding_list تحتوي على 1 والناتج يبدأ بـ 1-، أزِل البادئة 1- من الناتج في الخطوة 2.
  5. إذا كانت السمة encoding_list تحتوي على 0 والناتج يبدأ بـ 0-، أزِل البادئة 0- من الناتج في الخطوة 3. إذا أزلت البادئة، اضبط السمة is_idn على true. ويمكنك بدلاً من ذلك ضبط السمة is_idn على false.
  6. استبدِل /\b-\b/ (التعبير العادي) بحرف . (نقطة).
  7. استبدِل الحرف -- (واصلة مزدوجة) بحرف - (واصلة).
  8. إذا تم ضبط is_idn على true، أضِف بادئة punycode xn--.
  9. اختياري: يمكنك التحويل إلى يونيكود.

نموذج رمز JavaScript لفك ترميز اسم المضيف من عنوان URL خاص بخدمة "ترجمة 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;
}

إعادة إنشاء عنوان URL

  1. باستخدام عنوان URL للصفحة الأصلية، استبدِل اسم المضيف باسم المضيف الذي تم فك ترميزه.
  2. أزِل جميع معلَمات _x_tr_*.

اختبار الرمز

يمكنك إنشاء اختبارات الوحدة للرمز باستخدام الجدول التالي. ويجب أن تتطابق السمة decodeHostname مع القيمة المتوقّعة، وذلك حسب proxyUrl.

لا يمكن استخدام الجدول التالي إلا لاختبار فك ترميز اسم المضيف. وعليك التأكّد من عدم تغيير المسار والجزء والمعلَمات الأصلية لعنوان 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 (⚡😊.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)