থিমের কোন জায়গায় হার্ডকোডেড স্ট্রিং রাখা যাবে না। করলে, থিমফরেস্টে থিম এ্যাপ্রুভ হবে না। থিমের প্রতিটি স্থানে স্ট্রিং গুলোকে ট্রান্সটেশন উপযোগী করার জন্য ওয়ার্ডপ্রেসের কিছু ফাংশন আছে, সেগুলো ব্যবহার করতে হবে। এই ট্রান্সলেটেবল স্ট্রিংগুলো এক জায়গায় কম্পাইল করে একটি ল্যাংগুয়েজ ফাইল বানাতে হবে। এই ল্যাংগুয়েজ ফাইলকে বলা হয়, .pot।
_e("Text", "text_domain")ওয়ার্ডপ্রেস সিস্টেম সরাসরি .po ফাইল পড়ে না। কেউ যদি অন্য একটি ভাষার জন্য ট্রান্সলেশন করার পরিকল্পনা করে, তবে তিনি এই .pot ফাইলকে কপি করে .po ফাইল নামে রিনেম করবেন। ট্রান্সলেশনের কাজ শেষ হলে .po ফাইলকে কম্পাইল করে .mo ফাইল বানানো হয়। .mo বাইনারী এনকোডেড করা থাকে।
ওয়ার্ডপ্রেস সিস্টেম ল্যাংগুয়েজের ট্রান্সলেশনের জন্য এই .mo ফাইলকে পড়ে ট্রান্সলেটেড স্ট্রিংকে ওয়েবইটে ওয়েবসাইটে দেখায়।
ওয়ার্ডপ্রেসের জনপ্রিয় ল্যাংগুয়েজ ফাইল এডিটরের নাম POedit।
- প্রথমেই চেক করে নিতে হবে wp-config.php ফাইলে WPLANG এর ভ্যালু en-US আছে কি না।
define('WPLANG', 'en_US');-
থিমের রুটে languages নামে একটি ফোল্ডার তৈরী করি।
-
এবার POedit সফটওয়্যারটি চালু করি। ফাইল থেকে New করে ল্যাংগুয়েজ English সিলেক্ট করে ওকে বাটনে চাপ দেই। নতুন ফাইলটি সেভ করি আমার থিমের languages নামের ফোল্ডারে। ফাইলের নাম দিব, philosophy.po এবার Catalog মেনুতে গিয়ে Properties এ ক্লিক করব। Catalog properties ডায়ালগ বক্স আসবে। এখানে উপরে ৩টা ট্যাব আছে। মাঝের Sources paths ট্যাবে ক্লিক করি। Paths নামের একটি লিস্ট বক্স এর নিচে একটি + চিহ্ন আছে। সেখানে ক্লিক করি। দু’টি অপশন আসবে, Add folders, Add files। Add folders এ ক্লিক করলে ফোল্ডার সিলেক্ট করার ডায়ালগ বক্স আসবে। এখান থেকে থিমের রুট ফোল্ডার সিলেক্ট করে দেই। POEdit থিমের রুট ফোল্ডারে যত ফাইল আছে, সবগুলো থেকে ট্রান্সলেটেবল স্ট্রিং খুঁজে বের করে এগুঅের ইনডেক্স তৈরী করবে। এবার Sources Paths ট্যাবের Excluded paths লিস্ট কন্ট্রোলের + বাটনে ক্লিক করে assets ফোল্ডার বাদ দিব। এছাড়াও, প্রয়োজনমত ফোল্ডার বাদ দেয়া যাবে।
-
এবার, Sources keywords ট্যাবের ক্লিক Additional keywords এর + বাটনে ক্লিক করি। এখানে, POEdit কে চিনিয়ে দিতে হবে, থিমের ফাইলগুলোতে থাকা কোন কোন ফাংশনগুলো দিয়ে আমি ট্রান্সলেটেবল স্ট্রিংগুলোকে ব্যবহার করেছি। আমি, __ (double underscore) এবং _e ফাংশন দু’টি ব্যবহার করেছি। + বাটনে ক্লিক করে লিস্ট ভিউতে __ লিখে এন্টার কি চাপ দিব। একইভাবে, _e লিখে এন্টার করব।
-
কাজ শেষ! এবার, Catalog properties ডায়ালগ বক্সের নিচে থাকা Close বাটনে চাপ দিয়ে ডায়ালগ বক্স বন্ধ করে দিব।
-
মেনু থেকে Catalog সিলেক্ট করে Update from source code মেনু আইটেমে ক্লিক করি। এখানে একটি কনফারমেশন ডায়ালগ বক্স আসলে, Save বাটনে ক্লিক করি।
-
আমার থিমের যত ট্রান্সলেটেবল স্ট্রিং আছে, POedit সবগুলোকে একটা ফাইলে কম্পাইল করে দু’টা ফাইল নতুন করে তৈরী করে দিবে। একটা, philosophy.po, অপরটি, philosophy.mo ফাইল।
-
একবার থিমের ট্রান্সলেশন কম্পাইল করার পর কোন ট্রান্সলেটেবল স্ট্রিং থিমে যোগ, বা বিয়োগ, বা, পরিবর্তন করা হয়, তবে, POedit দিয়ে পুনরায় কম্পাইল করতে হবে। ৬ নং পয়েন্টের পদ্ধতি অনুসরণ করে মেনু থেকে Catalog সিলেক্ট করে Update from source code মেনু আইটেমে ক্লিক করে ফাইল সেভ কর ফেলতে হবে।
এখন, এক্সপ্লোরারে গিয়ে POedit দিয়ে জেনারেট করা .po ফাইলকে আরেকটা কপি করে পেস্ট করব। নতুন ফাইলকে থিমের locale এর সাথে মিল রেখে .pot এ রিনেম করব। অর্থাৎ, নতুন ফাইলের নাম হবে, en_US.pot ফাইল। এবার, philosophy.mo ফাইলটা মুছে দিব। একবার en_US.po ফাইলকে POedit দিয়ে ওপেন করে সেভ করলেই নতুন কম্পাইল করা en_US.mo ফাইল তৈরী হয়ে যাবে।
ল্যাংগুয়েজ ফাইলকে থিমে after_setup_theme হুকের load_theme_textdomain ফাংশন দ্বারা চিনিয়ে দিতে হয়।
load_theme_textdomain( 'philosophy', get_theme_file_path("/languages") );পরবর্তীতে থিমের যদি নতুন কোন ট্রান্সলেটেবল স্ট্রিং যোগ করা হয়, তবে en_US.po ফাইলটি এডিটর দিয়ে লোড করে Catalog মেনু থেকে Update from source code মেনু আইটেমে ক্লিক করি। এবার, File থেকে Save করি। তাহরে, আবার নতুন করে en_US.mo ফাইল তৈরী হয়ে যাবে।
যত বার থিমের নতুন কোন ট্রান্সলেটেবল স্ট্রিং যোগ করা হবে, ততবারই এভাবে .mo ফাইল তৈরী করতে হবে।
তবে, grunt ব্যবহার করে এই প্রক্রিয়াকে অটোমেট করা যায়।
মনে রাখতে হবে, wp-config.php এর locale অনুযায়ী সংশ্লিষ্ট ভাষার .mo ফাইল লোড হবে এবং ওয়েবসাইটে সেই ভাষা দেখাবে।
থিমফরেস্টের স্ট্যান্ডার্ড অনুযায়ী থিমের সাথে .pot ফাইল সরবরাহ করতে হবে।
বায়ার যদি তার নিজের ভাষায় স্ট্রিংগুলোকে ট্রান্সলেট করতে চায়, তবে,
- load_theme_textdomain এ তার ভাষার লোকেল সঠিক ভাবে লিখবেন,
- .pot ফাইলকে কপি-পেস্ট করে তার ভাষার লোকেল দিয়ে .po নামে রিনেম করে নিবেন (যেমন: বাংলার জন্য, bd-BN.po)
- এই .po কে POedit দিয়ে লোড করে প্রতিটি (বা যে কয়টি) স্ট্রিংকে তার ভাষার স্ট্রিং লিখে দিবেন।
- ফাইলটি সেভ করবেন।
- .mo ফাইল তৈরী হয়ে যাবে।
- থিমের নতুন কোন ট্রান্সলেটেবল স্ট্রিং যুক্ত, বা, ডিলিট, বা, পরিবর্তন করা হলে, .po এবং .mo ফাইল দু’টো ডিলিট করে দিতে হবে। .pot ফাইলটি লোড করে Catalog মেনুর Update from source code সাবমেনুতে ক্লিক করে, থিমের সব ট্রান্সলেটেবল স্ট্রিং ইনডেক্স আপডেট করে নিতে হবে। পরিশেষে, File থেকে Save করলেই নতুন ও আপডেটেড .mo ফাইল তৈরী হয়ে যাবে।
থিমে printf( __("%s Hello World, "philosophy"), "Hi," ); এমন থাকলে ট্রান্সলেশনের সময় "Translation:" এর ঘরে "%s কি খবর" হিসাবে লিখতে হবে।