স্লাগ হলো একটি ওয়েব ঠিকানার মানুষের পাঠযোগ্য শেষের অংশ — যেমন example.com/blog/my-first-post-এর my-first-post অংশটি। ব্যবহারকারী কোনো লিংকে ক্লিক করার আগে এটি দেখে সিদ্ধান্ত নিতে পারেন। সার্চ ইঞ্জিন এটিকে পৃষ্ঠার সংক্ষিপ্ত বিবরণ হিসেবে পড়ে, তাই এটি একটি ডেটাবেস আইডি বা তারিখের চেয়ে বেশি মনোযোগ দাবি করে। এই বিনামূল্যের টুলটি যেকোনো টেক্সটকে স্লাগে রূপান্তর করে: "রূপান্তর করার টেক্সট" বক্সে একটি শিরোনাম পেস্ট করুন, "তৈরি করুন"-এ চাপ দিন, এবং ফলাফলটি পাশে কপি বোতামসহ দেখা যাবে। এর ডিফল্ট সেটিংগুলো বেশিরভাগ সাইটের চাহিদার সাথে মানানসই — ছোট হাতের অক্ষর, শব্দের মাঝে ড্যাশ, সাধারণ স্টপ শব্দগুলো বাদ দেওয়া এবং নন-ল্যাটিন অক্ষরের লিপ্যন্তর। ফলে একটি ব্যবহারযোগ্য স্লাগ পেতে মাত্র একটি ক্লিকই যথেষ্ট, তবে আপনি চাইলে এই প্রতিটি সেটিং পরিবর্তন করতে পারেন।
সম্পূর্ণ প্রক্রিয়াটি আপনার ডিভাইসেই ঘটে। এই পেজটি একটি ছোট জাভাস্ক্রিপ্ট ইঞ্জিন লোড করে এবং সেটি লোকালি চালায়: আপনার শিরোনামগুলো কখনোই সার্ভারে আপলোড বা লগ করা হয় না এবং ইন্টারনেট সংযোগ বিচ্ছিন্ন থাকলেও টুলটি কাজ করে। এ কারণেই আপনি কোনো সেটিং পরিবর্তন করার সাথে সাথেই ফলাফল আপডেট হয়ে যায়। টুলটি কীভাবে কাজ করে তার ক্রমটি জানা জরুরি, কারণ এটি আউটপুটকে অনুমেয় করে তোলে: একটি পেস্ট করা লিংককে প্রথমে তার শেষ অংশে ছাঁটাই করা হয়, তারপর টেক্সটটিকে ছোট হাতের অক্ষরে রূপান্তর করা হয়, এরপর স্টপ শব্দগুলো মুছে ফেলা হয়, নন-ল্যাটিন অক্ষরগুলোর লিপ্যন্তর করা হয়। আপনি যদি চান তবে সংখ্যা ও বিশেষ অক্ষরগুলোও বাদ দেওয়া হয়। এরপর যা বাকি থাকে তা আপনার বেছে নেওয়া বিভাজক দিয়ে যুক্ত করা হয়, ফলাফলটি সর্বোচ্চ দৈর্ঘ্য অনুযায়ী কাটা হয় এবং সবশেষে যদি একই স্লাগ একাধিকবার আসে তবে তার শেষে নম্বর যুক্ত করা হয়। "রূপান্তর করার টেক্সট" বক্সটি একসাথে 500,000 অক্ষর পর্যন্ত গ্রহণ করতে পারে, যা কয়েক হাজার আর্টিকেলের শিরোনামের সমান।
এক লাইনের ইনপুটে একটি স্লাগ আউটপুট। আপনি শিরোনামের একটি পুরো তালিকা পেস্ট করতে পারেন এবং প্রতিটি লাইন একটি নম্বরের স্লাগে পরিণত হবে। এর ঠিক ওপরে মূল শিরোনামটি ধূসর রঙে দেখা যাবে, যাতে 50টি আইটেমের তালিকাতেও আপনি বুঝতে পারেন কোন স্লাগটি কোন শিরোনামের। যদি তালিকাটি কোনো ফাইলে থাকে, তবে সেটি কপি-পেস্ট করার প্রয়োজন নেই: ইনপুট বক্সের পাশে থাকা "ফাইল থেকে লোড করুন" বোতামটি একটি প্লেইন টেক্সট ফাইল (.txt, .csv, .md, .json ইত্যাদি) থেকে কনটেন্ট সরাসরি ফিল্ডে যুক্ত করে। আপনি নিজে টাইপ করলে আপনার ব্রাউজার যেভাবে পড়ে, ফাইলটিকেও ঠিক সেভাবেই পড়ে এবং এটি কোথাও আপলোড করা হয় না। "ইনপুট বিভক্ত করার মাধ্যম" নির্ধারণ করে তালিকাটি কীভাবে ভাগ করা হবে। ডিফল্ট হলো "স্বয়ংক্রিয়": একটি নতুন লাইন সর্বদা আইটেমগুলোকে আলাদা করে, আর কমা তখনই আলাদা করে যখন ইনপুটটি এমন একটি একক লাইন হয় যার প্রতিটি অংশ আলাদা মানের মতো দেখায় — তাই "দাম 1,500 টাকা" এবং "অধ্যায় 5: ফলাফল, উপসংহার" ভেঙে টুকরো টুকরো না হয়ে পুরোই থেকে যায়। যদি আপনি আপনার ডেটার ধরন আগে থেকেই জানেন, তবে "নতুন লাইন", "কমা" বা "স্পেস" বেছে নিয়ে আপনি এটি নিয়ন্ত্রণ করতে পারেন। "আউটপুট ফরম্যাট" নির্ধারণ করে যে রূপান্তরের পর তালিকাটি আপনি কীভাবে পাবেন — লাইনে লাইনে, "স্পেস দিয়ে পৃথক" নাকি "কমা দ্বারা পৃথক"। "সব কপি করুন" এবং "ফাইলে সংরক্ষণ করুন" উভয় বোতামই এটি অনুসরণ করে। "ইতিহাস" আপনার শেষ 10টি ব্যাচ ব্রাউজারেই সংরক্ষণ করে, ফলে এক ঘণ্টা আগে রূপান্তরিত কোনো তালিকা আপনি হারাবেন না।
বেশিরভাগ স্লাগ জেনারেটর নন-ল্যাটিন টেক্সটের ক্ষেত্রে মোটামুটি কাজ করে, কিন্তু খুব কম টুলই এটি নির্ভুলভাবে করতে পারে। একটি URL প্লেইন ASCII ফরম্যাটে সবচেয়ে বেশি নিরাপদ, তাই সিরিলিক, গ্রিক, আরবি, চীনা এবং ইউরোপীয় অ্যাকসেন্টযুক্ত অক্ষরগুলোকে রূপান্তর করতে হয়। মূল প্রশ্ন হলো কোন নিয়মে এটি করা হবে। এই পেজটি এর উত্তর দেয় দুটি স্তরে। সাধারণ স্তরটি সব ধরনের লিপি কভার করে: এটি এমন একটি লিপ্যন্তর লাইব্রেরি যা প্রায় যেকোনো টাইপ করা অক্ষরের জন্য একটি যুক্তিসঙ্গত ASCII ফলাফল দেয়। "লিপ্যন্তরের উৎস" মেনুতে "স্বয়ংক্রিয় (যেকোনো ভাষা)" বলতে এটাই বোঝানো হয়েছে। নির্দিষ্ট স্তরটি হলো ঐ ভাষাগুলোর জন্য কিছু হাতে তৈরি টেবিল, যাদের ক্ষেত্রে সাধারণ ফলাফলটি দেশটির প্রচলিত নিয়মের সাথে মেলে না। "লিপ্যন্তরের উৎস" মেনুটি সেই ভাষাগুলোর তালিকা দেখায় যাদের জন্য বর্তমানে একটি টেবিল রয়েছে এবং টুলটি আরও ভাষার জন্য প্রসারিত হওয়ার সাথে সাথে এই তালিকাটি বড় হচ্ছে। যেকোনো একটি ভাষা নির্বাচন করলে "লিপ্যন্তরের নিয়মাবলি"-এর নিচে একটি এডিটযোগ্য গ্রিড লোড হবে, যেখানে প্রতিটি অক্ষর একটি টেক্সট ফিল্ড এবং আপনি সেটি পরিবর্তন করতে পারবেন। "নিয়মগুলো ডিফল্টে ফেরান" এটি আগের অবস্থায় ফিরিয়ে আনে। ইউক্রেনীয় টেবিলটি 2010 সালের মন্ত্রিপরিষদের রেজোলিউশন নম্বর 55 অনুসরণ করে (ইউক্রেনীয় পাসপোর্টে ব্যবহৃত নিয়ম), যেখানে সূক্ষ্ম বিষয়গুলোও রয়েছে: зг ж থেকে আলাদা বোঝাতে zh-এর বদলে zgh হয়; є, ї, й, ю এবং я শব্দের শুরুতে এক রূপ এবং মাঝে অন্য রূপ ধারণ করে; অ্যাপোস্ট্রফি ও সফট সাইন মুছে ফেলা হয় কিন্তু নতুন শব্দ শুরু হয় না, তাই Знам'янка znamyanka না হয়ে znamianka হয়। জার্মান ভাষার ডিফল্টে প্রসারিত ä → ae, ö → oe, ü → ue নিয়ম ব্যবহার করা হয়, তবে চাইলে আপনি সাধারণ ä → a রূপটিও ব্যবহার করতে পারেন।
"স্টপ শব্দগুলো মুছে ফেলুন" অপশনটি ডিফল্টভাবেই চালু থাকে। এটি ছোট সংযোগকারী শব্দগুলো (যেমন a, the, and, of, for) মুছে ফেলে, যা স্লাগকে দীর্ঘ করে কিন্তু কোনো অর্থ যোগ করে না। "স্টপ শব্দসমূহ"-এর নিচে থাকা তালিকাটি পুরোপুরি সম্পাদনাযোগ্য এবং এটি আগে থেকেই পূর্ণ থাকে: এতে একটি ইংরেজি তালিকার পাশাপাশি আপনি বর্তমানে যে ভাষার পেজে আছেন সেই ভাষার তালিকাও থাকে। তাই ইউক্রেনীয় পেজ в, на, та এবং і চেনে এবং জার্মান পেজ der, die এবং das চেনে। আপনি নিজের শব্দ যোগ করতে পারেন, কোনো শব্দ রাখতে চাইলে তা মুছে ফেলতে পারেন, অথবা পুরো ফিচারটিই বন্ধ করে দিতে পারেন — তখন ফিল্ডটি ধূসর হয়ে যাবে। এ সম্পর্কে দুটি সততার বিষয় জেনে রাখা ভালো: স্টপ শব্দ মুছে ফেলা স্লাগকে ছোট ও পরিচ্ছন্ন করে, কিন্তু এটি এসইও র্যাংকিং বাড়ায় না। আর যদি কোনো শিরোনামের সব শব্দই এই তালিকায় থাকে, তবে টুলটি আপনাকে একটি খালি ফলাফল না দিয়ে স্পষ্টভাবে জানিয়ে দেবে যে কিছুই অবশিষ্ট নেই।
বাকি অপশনগুলো স্লাগের গঠন নির্ধারণ করে। "স্লাগের বিভাজক" নির্ধারণ করে শব্দের মাঝে কী বসবে এবং ডিফল্ট হিসেবে ড্যাশ থাকা কোনো শখের বশে নয়: গুগল ড্যাশকে শব্দ বিভাজক এবং আন্ডারস্কোরকে সংযোগকারী হিসেবে বিবেচনা করে। তাই my_first_post সার্চ ইঞ্জিনের কাছে একটি দীর্ঘ শব্দ হিসেবে পৌঁছায়, যেখানে my-first-post তিনটি শব্দ হিসেবে পৌঁছায়। যেসব সিস্টেম আন্ডারস্কোর চাইবেই, তাদের জন্য "আন্ডারস্কোর (_)" অপশনটি রয়েছে। "ছোট হাতের অক্ষর" অপশনটি চালু থাকে কারণ অধিকাংশ সার্ভার URL-এ বড় ও ছোট হাতের অক্ষর আলাদাভাবে বিবেচনা করে, এবং মিশ্র হাতের অক্ষর ব্যবহার করলে একই পেজের জন্য দুটি URL তৈরি হওয়ার ঝুঁকি থাকে। "বিশেষ অক্ষরগুলো মুছে ফেলুন" অক্ষর, সংখ্যা, স্পেস, ড্যাশ বা আন্ডারস্কোর ছাড়া বাকি সব কিছু (যেমন বিরামচিহ্ন, কোটেশন মার্ক এবং ইমোজি) সরিয়ে দেয়। ইমোজিগুলো লিপ্যন্তরের ঠিক আগেই সরিয়ে ফেলা হয় যাতে একটি রকেটের ইমোজি rocket শব্দে পরিণত না হয়। "সংখ্যাগুলো মুছে ফেলুন" ডিফল্টভাবে বন্ধ থাকে, কারণ শিরোনামের সংখ্যা সাধারণত তার গুরুত্বপূর্ণ অংশ হয়। "সর্বোচ্চ দৈর্ঘ্য" 10 থেকে 200 পর্যন্ত হতে পারে এবং ডিফল্ট মান 80। কোনো স্লাগ এর চেয়ে বড় হলে, টুলটি শব্দের মাঝখানে না কেটে শেষ পূর্ণ শব্দে গিয়ে কাটে। প্রতিটি ফলাফলের পাশে থাকা নম্বরটি এর অক্ষর সংখ্যা নির্দেশ করে এবং এটি 60 পার হলে লাল হয়ে যায় — এটি কোনো কঠোর সীমা নয়, বরং এই সংখ্যার পর সার্চ ইঞ্জিন সাধারণত স্লাগটিকে কাটতে শুরু করে এবং মেসেজে পেস্ট করাও অসুবিধাজনক হয়।
বাল্ক রূপান্তরকে সহজে ব্যবহারযোগ্য করতে আরও দুটি অপশন রয়েছে। "স্লাগগুলোকে ইউনিক করুন" এমন একটি পরিস্থিতি সামাল দেয় যখন দুটি ভিন্ন শিরোনাম একই স্লাগে পরিণত হয় — "সেরা 10 টিপস" এবং "সেরা-10 টিপস" দুটোই sera-10-tips হয় — এবং দ্বিতীয়টিতে -2, তৃতীয়টিতে -3 যুক্ত করে। সাফিক্স যুক্ত করার ফলে স্লাগটি যদি সর্বোচ্চ দৈর্ঘ্যের চেয়ে বড় হয়ে যায়, তবে টুলটি প্রথমে মূল অংশটি ছোট করে নেয়। আপনার CMS-এ একই ঠিকানায় দুটি পেজ তৈরি হওয়ার সমস্যার চেয়ে, এই তালিকায় সেটি চিহ্নিত করা অনেক সহজ কাজ। "পেস্ট করা URL থেকে স্লাগ নিন" উল্টো দিকে কাজ করে: আপনি একটি পুরো লিংক পেস্ট করলে টুলটি পাথের শেষ অংশটি নেয়, কোয়েরি স্ট্রিং এবং .html বা .php-এর মতো শেষ অংশগুলো বাদ দেয় এবং পার্সেন্ট-এনকোডিং ডিকোড করে। ফলে %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 দিয়ে শেষ হওয়া উইকিপিডিয়া লিংক হেক্সাডেসিমালের বদলে lviv হিসেবে ফিরে আসে। এটি কেবল তখনই কাজ করে যখন পুরো লাইনটি একটি লিংক হয়, তাই কোনো বাক্যের মধ্যে থাকা URL সাধারণ টেক্সট হিসেবেই থাকে।
কেন এই স্লাগ জেনারেটর বেছে নেবেন?
- শুধু ব্রাউজারে কাজ করে: শিরোনাম কখনোই সার্ভারে যায় না, পেজটি অফলাইনেও কাজ করে
- পেস্ট করা টেক্সট বা টেক্সট ফাইল থেকে বাল্ক রূপান্তর, প্রতিটি স্লাগের ওপরে মূল শিরোনাম দেখায়
- প্রতিটি ভাষার জন্য সত্যিকারের লিপ্যন্তর মান, সবার জন্য একটি সাধারণ টেবিল নয়
- ইউক্রেনীয় ভাষার জন্য 2010 সালের রেজোলিউশন নম্বর 55 (পাসপোর্টের নিয়ম) সমর্থিত
- প্রতিটি নিয়ম অক্ষর অনুযায়ী সম্পাদনাযোগ্য এবং এক-ক্লিকে ডিফল্টে ফেরার সুবিধা
- তালিকার ভেতরে দুটি স্লাগ যেন একই না হয়, সেজন্য স্বয়ংক্রিয়ভাবে -2 এবং -3 যুক্ত করে
- লিংক পেস্ট করলেই তা থেকে স্লাগ আলাদা করে পার্সেন্ট-এনকোডিং ডিকোড করে
- আপনার ভাষার জন্য আগে থেকেই পূর্ণ একটি এডিটযোগ্য স্টপ শব্দের তালিকা
- অক্ষর সংখ্যাসহ একটি পূর্ণ শব্দে নিরাপদ কাটছাঁটের ব্যবস্থা
- সম্পূর্ণ ফ্রি এবং আনলিমিটেড: কোনো সাইন-আপ নেই, কোনো কোটা নেই, সার্ভারে কিছুই রাখা হয় না
যেখানেই কোনো পেজকে একটি পাঠযোগ্য ঠিকানা বহন করতে হয়, সেখানেই স্লাগের প্রয়োজন। একটি ব্লগ বা নিউজ সাইট প্রতিটি সংবাদ শিরোনামকে স্লাগে পরিণত করে এবং টুলটি মূলতঃ এই উদ্দেশ্যেই তৈরি করা হয়েছে: সপ্তাহের শিরোনাম পেস্ট করুন, সপ্তাহের URLগুলো পেয়ে যান। একটি অনলাইন শপ তাদের পণ্য এবং ক্যাটাগরির নামের ক্ষেত্রেও একই কাজ করে, যা সাধারণত অনেক ডেটা ইমপোর্ট করার পর বাল্ক আকারে করতে হয় এবং প্রায়শই এমন ভাষায় হয় যা ঠিকানার বর্ণমালার সমর্থনের বাইরে থাকে। ডকুমেন্টেশন এবং নলেজ বেসগুলো একইভাবে অ্যাংকর এবং ফাইলের নাম তৈরি করে। ওয়েব ঠিকানা ছাড়াও আপনার একটি পরিচ্ছন্ন টেক্সট স্ট্রিংয়ের প্রয়োজন হতে পারে এমন ফাইলের নামের জন্য যা অন্য অপারেটিং সিস্টেমে ত্রুটি করবে না, অথবা লগ ফাইলে সহজে পড়ার মতো ডেটাবেস কির জন্য, ব্রাঞ্চের নামের জন্য, মিডিয়া লাইব্রেরিতে ইমেজের নামের জন্য, বা স্ট্যাটিক সাইট জেনারেটরের কোনো সেকশন আইডেন্টিফায়ারের জন্য। সংক্ষেপে, মেশিনের পাঠযোগ্য কোনো ফিল্ডে মানুষের পাঠযোগ্য নাম রাখার জন্যই স্লাগের ব্যবহার।
এটি ব্যবহারের আগে কয়েকটি সীমাবদ্ধতা জানা জরুরি। এটি একটি জেনারেটর, ভ্যালিডেটর নয়: এটি পরীক্ষা করবে না যে স্লাগটি আপনার সাইটে আগে থেকেই ব্যবহৃত হচ্ছে কি না, কারণ আপনার সাইটে কী আছে তা এর জানার কথা নয় — এটি যে স্বতন্ত্রতার গ্যারান্টি দেয়, তা কেবল আপনার বর্তমান তালিকার মধ্যেই সীমাবদ্ধ। রিডাইরেক্ট করার দায়িত্বও আপনার; কোনো প্রকাশিত পেজের স্লাগ পরিবর্তন করলে তার পুরোনো ঠিকানা কাজ করবে না এবং এটি আপনার CMS-এর কাজ, এই টুলের নয়। "ফাইলে সংরক্ষণ করুন" প্লেইন টেক্সট সেভ করে, CSV বা JSON নয়। কমা দিয়ে স্বয়ংক্রিয় বিভাজনের নিয়মটি প্রায় সব ক্ষেত্রেই সঠিক, তবে সবসময় নয়, আর এ কারণেই "ইনপুট বিভক্ত করার মাধ্যম" অপশনটি আপনাকে এই সিদ্ধান্ত ওভাররাইট করার সুযোগ দেয়। এছাড়া লিপ্যন্তর হলো একটি প্রথা, অনুবাদ নয় — München muenchen হয়, Munich নয়। তাই যদি লক্ষ্য ভাষায় কোনো পেজের সুপরিচিত নাম থাকে, তবে স্বয়ংক্রিয় রূপান্তরের চেয়ে সেই নামটি ব্যবহার করাই উত্তম।