Hreflang জেনারেটর

সমতুল্য পৃষ্ঠার জন্য HTML ট্যাগ, XML খণ্ড বা HTTP Link ঘোষণা তৈরি করুন। চাইলে x-default যোগ করুন এবং প্রতিটি পৃষ্ঠার ফল কপি করুন।

সমতুল্য পৃষ্ঠার URL সহ ২–৫০টি অনন্য ভাষা বা ভাষা-অঞ্চল কোড দিন।

ভাষার সংস্করণ

Screpy-এর Hreflang জেনারেটর বিভিন্ন ভাষার সমতুল্য পৃষ্ঠার একটি গোষ্ঠীর জন্য HTML ট্যাগ, XML সাইটম্যাপের খণ্ড বা HTTP Link ঘোষণা তৈরি করে। সমর্থিত ২–৫০টি ভাষা কোড ও তাদের URL দিন, ফরম্যাট বেছে নিন এবং প্রতিটি পৃষ্ঠার ফল কপি বা ডাউনলোড করুন। জেনারেটর আপনার দেওয়া মান থেকে অ্যানোটেশন বানায়; URL খুলে দেখে না, কোড বসায় না বা প্রকাশিত পৃষ্ঠাগুলোর পারস্পরিক ফিরতি লিংক নিশ্চিত করে না।

সমতুল্য পৃষ্ঠার একটি গোষ্ঠী প্রস্তুত করুন

প্রতিবার একই পৃষ্ঠার সংস্করণ ব্যবহার করুন: বিভিন্ন ভাষা বা বাজারের জন্য একই পণ্য, নিবন্ধ বা সেবা। একই ডোমেনে থাকলেই ফরাসি হোমপেজ ও ইংরেজি পণ্য পৃষ্ঠা সমতুল্য হয় না। সাইটের সব অনূদিত URL এক গোষ্ঠীতে না রেখে পরের বিষয়বস্তুর জন্য প্রক্রিয়াটি আবার করুন।

ইংরেজি ও তুর্কি সংস্করণ থাকা একটি কাল্পনিক পণ্যের জন্য এই মানগুলো প্রস্তুত করুন:

ক্ষেত্র মান উদ্দেশ্য
ভাষা ও URL en — https://example.com/en/blue-shirt/ ইংরেজি পণ্য পৃষ্ঠা
ভাষা ও URL tr — https://example.com/tr/mavi-gomlek/ সমতুল্য তুর্কি পণ্য পৃষ্ঠা
ঐচ্ছিক x-default URL https://example.com/choose-language/ ভাষা বাছাইয়ের উপযুক্ত পৃষ্ঠা

অনূদিত URL-এর পথ আলাদা হতে পারে। শুধু ভাষার ফোল্ডার বদলে ঠিকানা বানানোর পরিবর্তে প্রতিটি নির্ধারিত সর্বজনীন URL কপি করুন। পূর্ণ HTTP বা HTTPS ঠিকানা দিন এবং হোস্ট, পথ ও শেষের স্ল্যাশ প্রকাশ করতে চাওয়া গন্তব্যের সঙ্গে মিলিয়ে রাখুন। লগইন তথ্যযুক্ত URL গ্রহণ করা হয় না। ফর্ম #details-এর মতো খণ্ড সরিয়ে দেয়; তাই কোনো অংশের লিংকের বদলে পৃষ্ঠার ঠিকানা ব্যবহার করুন।

সমর্থিত ভাষা কোড বেছে নিন

এই জেনারেটর en, tr বা de-এর মতো দুই অক্ষরের ভাষা কোড গ্রহণ করে। চাইলে তার পরে en-GB বা pt-BR-এর মতো সমর্থিত দুই অক্ষরের অঞ্চল যোগ করা যায়। সাধারণভাবে ইংরেজি পাঠকদের জন্য পৃষ্ঠা হলে en ব্যবহার করুন; সত্যিই আলাদা আঞ্চলিক সংস্করণ রাখলে অঞ্চল কোড ব্যবহার করুন। শুধু GB-এর মতো দেশ কোড ভাষা বোঝায় না।

প্রতিটি সাধারণ সারিতে আলাদা কোড থাকতে হবে। en-US ও en-us একই ইনপুট হিসেবে গণ্য হয়; অক্ষরের আকার বদলালে নতুন সংস্করণ তৈরি হয় না। ফলের কোডে ভাষা ছোট হাতের এবং অঞ্চল বড় হাতের অক্ষরে থাকে। কপি করার আগে মানগুলো দেখুন, বিশেষ করে ভাষা uk এবং যুক্তরাজ্যের অঞ্চল GB-এর পার্থক্য।

ফর্ম কেবল ভাষা ও ভাষা-অঞ্চল কোড সমর্থন করে। Google উপযুক্ত ক্ষেত্রে লিপির অ্যানোটেশন সমর্থন করলেও এই টুল zh-Hant-এর মতো লিপি-যুক্ত কোড গ্রহণ করে না। আপনার বাস্তবায়নে এগুলো দরকার হলে জেনারেটরের বাইরে প্রস্তুত করুন। কোনো কোড গ্রহণ করা মানেই পৃষ্ঠার আসল লেখাও সেই ভাষায় আছে, এমন নয়।

x-default যোগ করবেন কি না ঠিক করুন

x-default URL এমন ব্যবহারকারীদের জন্য গন্তব্য নির্দেশ করে, যাদের ভাষা বা অঞ্চল অন্য বিকল্পগুলোতে নেই। সেটি ভাষা নির্বাচনের পৃষ্ঠা হতে পারে, অথবা বিদ্যমান কোনো পৃষ্ঠাকে ডিফল্ট হিসেবে বেছে নিতে পারেন। Google-এর x-default ব্যাখ্যা দুটি বিকল্পই আলোচনা করে। এই পৃষ্ঠা গোষ্ঠীর জন্য উপযোগী গন্তব্য বাছুন; শুধু ঘর পূরণ করতে প্রতিটি পণ্যের দর্শককে সম্পর্কহীন পৃষ্ঠায় পাঠাবেন না।

ক্ষেত্রটি ঐচ্ছিক। খালি রাখলে কোনো ডিফল্ট অ্যানোটেশন যোগ হয় না। URL দিলে প্রতিটি তৈরি সেটে hreflang="x-default" যোগ হয়; এতে ব্রাউজার রিডাইরেক্ট বা ভাষা বাছাইয়ের ইন্টারফেস তৈরি হয় না।

উপরের দুটি ভাষার সারির সঙ্গে নির্বাচনের পৃষ্ঠা যোগ করলে দুটি পৃষ্ঠার আউটপুট ব্লক তৈরি হয়, প্রতিটিতে তিনটি বিকল্প থাকে: en, tr ও x-default। নির্বাচনের পৃষ্ঠার জন্য তৃতীয় ব্লক তৈরি হয় না। ডিফল্ট গন্তব্য আলাদা পৃষ্ঠা হলে তার উপযুক্ত অ্যানোটেশন নিজে কনফিগার করুন। সেটি সাধারণ সারির কোনো URL হলে সেই পৃষ্ঠার ব্লক ইতিমধ্যেই তৈরি হয়েছে। প্রতিটি গন্তব্যের জন্য বসানোর কোড আছে ধরে নেওয়ার আগে এই পার্থক্য দেখুন।

HTML বা HTTP Link আউটপুট নির্বাচন করুন

গোষ্ঠীর পৃষ্ঠাগুলো যেখান থেকে পরিবেশিত হয়, সেখানে যে ফরম্যাট রক্ষণাবেক্ষণ করতে পারবেন সেটি বাছুন। তিনটি ফরম্যাট আছে বলেই সবগুলো তৈরি করতে হবে না।

ফরম্যাট বসানোর জায়গা প্রাপ্ত ফল
HTML প্রতিটি পৃষ্ঠার <head> <link> উপাদানের একটি সেট
HTTP Link প্রতিটি পৃষ্ঠার HTTP রেসপন্স একটি Link: হেডার ঘোষণা
XML ভাষার বিকল্পসমৃদ্ধ সাইটম্যাপ প্রতিটি সাধারণ পৃষ্ঠার জন্য একটি <url> খণ্ড

HTML-এর ক্ষেত্রে কাল্পনিক গোষ্ঠীটি নিচের সেট তৈরি করে, যা দুই পণ্য পৃষ্ঠার head-এ বসাতে হবে:

<link rel="alternate" hreflang="en" href="https://example.com/en/blue-shirt/" />
<link rel="alternate" hreflang="tr" href="https://example.com/tr/mavi-gomlek/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/choose-language/" />

ইংরেজি পৃষ্ঠায় নিজের এবং তুর্কি পৃষ্ঠার লিংক থাকে; তুর্কি পৃষ্ঠাতেও একই সেট বসে। CMS-এ head নিয়ন্ত্রণকারী টেমপ্লেট বা ক্ষেত্র ব্যবহার করুন। নিবন্ধের দৃশ্যমান মূল লেখায় ট্যাগ পেস্ট করা সঠিক স্থাপন নয়।

HTTP Link আউটপুট রেসপন্স হেডারে বসে, যা প্রকাশনা ব্যবস্থা বা সার্ভার থেকে কনফিগার করতে হয়। HTML head নেই এমন PDF নথির জন্য এটি উপযোগী। শুধু URL নয়, সম্পূর্ণ ঘোষণাটি কপি করুন এবং বসানোর পরে আসল রেসপন্স দেখুন। একটি টেক্সট ফাইল ডাউনলোড করলেই রেসপন্স বদলে যায় না। বিকল্প লিংক যোগ করার সময় বিদ্যমান সম্পর্কহীন হেডার ঘোষণাগুলো অক্ষত রাখুন।

XML খণ্ড দিয়ে সাইটম্যাপ তৈরি করুন

ডাউনলোড করা XML একটি পৃষ্ঠার খণ্ড, জমা দেওয়ার উপযোগী পূর্ণ সাইটম্যাপ নয়। প্রতিটি ব্লকে তার সাধারণ ইনপুট পৃষ্ঠার জন্য একটি <loc> থাকে এবং বিকল্পগুলো <xhtml:link> উপাদান হিসেবে পুনরাবৃত্তি হয়। ব্লকগুলো এমন সাইটম্যাপে যোগ করুন, যেখানে sitemap ও XHTML দুটির নেমস্পেস আছে।

একই হোস্টের উদাহরণে দুটি পৃষ্ঠার পূর্ণ ফাইল এমন হবে:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/en/blue-shirt/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blue-shirt/" />
    <xhtml:link rel="alternate" hreflang="tr" href="https://example.com/tr/mavi-gomlek/" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/choose-language/" />
  </url>
  <url>
    <loc>https://example.com/tr/mavi-gomlek/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blue-shirt/" />
    <xhtml:link rel="alternate" hreflang="tr" href="https://example.com/tr/mavi-gomlek/" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/choose-language/" />
  </url>
</urlset>

দুটি <loc> মান আলাদা; তাদের বিকল্প সেট একই। বিদ্যমান ফাইলে খণ্ড যোগ করার সময় সম্পূর্ণ নথি একটির মধ্যে আরেকটি না রেখে একটি বাইরের <urlset> রাখুন। উদাহরণের URL নিজের ঠিকানা দিয়ে বদলান এবং কুয়েরি স্ট্রিংয়ে &amp;-এর মতো XML এস্কেপ অক্ষত রাখুন। তালিকাভুক্ত পৃষ্ঠাগুলোকে আওতায় আনে এমন স্থানে ফাইল প্রকাশ করুন; এই উদাহরণ example.com-এর মূল ডিরেক্টরির সাইটম্যাপের জন্য উপযুক্ত।

নেমস্পেস ও হোস্টিংয়ের শর্ত জানতে Google-এর সাইটম্যাপ hreflang নির্দেশনা দেখুন। জেনারেটরের পৃথক ডাউনলোডগুলো আপনার হয়ে সাইটম্যাপ একত্র করে, হোস্ট করে বা জমা দেয় না।

বসানো অ্যানোটেশন যাচাই করুন

তৈরি ফল দেখায় আপনার মান থেকে কী উৎপন্ন হয়, দর্শক বা ক্রলার কী পায় তা নয়। বসানোর পরে প্রকাশিত পৃষ্ঠাগুলো নির্ধারিত গোষ্ঠীর সঙ্গে মিলিয়ে দেখুন:

  • প্রতিটি বিকল্প ঠিকানা সঠিক ভাষার পৃষ্ঠা খোলে কি না দেখুন; ত্রুটি, পুরোনো URL বা সম্পর্কহীন গন্তব্য যেন না খোলে।
  • HTML বা হেডারের ক্ষেত্রে প্রতিটি সাধারণ পৃষ্ঠার আসল অ্যানোটেশন দেখুন, নিজের দিকে এবং অন্য সংস্করণগুলোর দিকে ফিরতি লিংকসহ।
  • XML-এর ক্ষেত্রে প্রকাশিত সাইটম্যাপ নিজেই দেখুন: বাইরের কাঠামো, প্রতিটি <loc> ও সম্পূর্ণ বিকল্প সেট।
  • বিকল্পগুলোর সঙ্গে canonical ট্যাগও পর্যালোচনা করুন। Google-এর canonical নির্দেশনা উপলব্ধ থাকলে একই ভাষার canonical পৃষ্ঠা ব্যবহারের পরামর্শ দেয়। প্রতিটি অনুবাদের canonical স্বয়ংক্রিয়ভাবে ইংরেজি পৃষ্ঠায় নির্দেশ করবেন না।

প্রকাশিত HTML ও HTTP ঘোষণা দেখতে Hreflang Tags Tester ব্যবহার করুন। এই পরীক্ষক সাইটম্যাপের অ্যানোটেশন বা JavaScript দিয়ে রেন্ডার করা ট্যাগ যাচাই করে না। পছন্দের URL গোষ্ঠীর সঙ্গে না মিললে Canonical Tag Checker দিয়ে দেখুন।

কোনো অনুবাদ অন্য ঠিকানায় সরলে বা হারিয়ে গেলে, যেখানে গোষ্ঠী বসিয়েছেন সেখানেই তা হালনাগাদ করুন। পুরোনো প্রকাশিত অ্যানোটেশন না বদলে নতুন সেট তৈরি করলে পুরোনো সম্পর্ক থেকেই যায়। Hreflang সমতুল্য সংস্করণ বর্ণনা করতে সাহায্য করে; বিষয়বস্তু অনুবাদ করে না, ইনডেক্সিং বা র‌্যাঙ্কিং নিশ্চিত করে না এবং Google সব সময় নির্দিষ্ট URL দেখাবে এমন নিশ্চয়তাও দেয় না।

সাধারণ প্রশ্ন

সমতুল্য পৃষ্ঠার জন্য HTML ট্যাগ, XML খণ্ড বা HTTP Link ঘোষণা তৈরি করুন। চাইলে x-default যোগ করুন এবং প্রতিটি পৃষ্ঠার ফল কপি করুন।

তৈরি করা hreflang কোথায় বসাব?

HTML ঘোষণা প্রতিটি পৃষ্ঠার head-এ, HTTP Link ঘোষণা রেসপন্স হেডারে অথবা XML অংশ একটি সম্পূর্ণ সাইটম্যাপে বসান। বিকল্পগুলোর তালিকা সামঞ্জস্যপূর্ণ রাখুন।

zh-Hant-এর মতো লিপি কোড তৈরি করা যাবে?

এই জেনারেটর en ও en-GB-এর মতো সমর্থিত দুই অক্ষরের ভাষা এবং ঐচ্ছিক দুই অক্ষরের অঞ্চল গ্রহণ করে। Google উপযুক্ত বাস্তবায়নে সমর্থন করলেও zh-Hant-এর মতো লিপি-যুক্ত কোড এই টুলের ইনপুট কাঠামোর বাইরে।

Hreflang তৈরি করলে কি প্রকাশিত পৃষ্ঠা পরীক্ষা হয়?

না। URL না খুলে, ভাষা বা প্রকাশিত ফিরতি লিংক না যাচাই করে আপনার ইনপুট থেকে অ্যানোটেশন বানায়। বসানোর পরে আসল পৃষ্ঠা দেখুন। Hreflang Tags Tester HTML ও HTTP পরীক্ষা করে; সাইটম্যাপের অ্যানোটেশন বা JavaScript দিয়ে রেন্ডার করা ট্যাগ নয়।

XML ডাউনলোড কি পূর্ণ সাইটম্যাপ?

না। প্রতিটি ডাউনলোড একটি সাধারণ ইনপুট পৃষ্ঠার url খণ্ড। sitemap ও XHTML নেমস্পেসযুক্ত সাইটম্যাপে খণ্ডগুলো একত্র করুন, হোস্টিংয়ের আওতা যাচাই করুন এবং নিজের ব্যবস্থা দিয়ে প্রকাশ করুন।

x-default কি আরেকটি পৃষ্ঠার আউটপুট ব্লক তৈরি করে?

না। প্রতিটি সাধারণ পৃষ্ঠার সেটে একটি বিকল্প যোগ করে। দুটি সাধারণ সারি ও x-default দিলে দুটি ব্লক তৈরি হয়, প্রতিটিতে তিনটি বিকল্প। আলাদা ডিফল্ট পৃষ্ঠার অ্যানোটেশন পৃথকভাবে কনফিগার করতে হয়।