আমি মনে করি আমি একটি সমাধান খুঁজে পেয়েছি তবে একটু আগে
প্রতিজ্ঞা
load_theme_textdomain()এবং load_child_theme_textdomain()মূলত সমান, কেবলমাত্র তফাতটি তাদের ব্যবহৃত ডিফল্ট পাথ:
- তারা বর্তমান ভাষাটি (ব্যবহার করে
get_locale()) পেয়েছে এবং যুক্তি হিসাবে পাসের পথে আপেক্ষিক .mo ফাইল যুক্ত করে ;
- তারপরে তারা
load_textdomain()পাঠ্য ডোমেন এবং .mo ফাইলের ফলাফলের পথ উভয়কেই আর্গুমেন্ট হিসাবে পাস বলে call
তারপরে load_textdomain.mo ফাইলটি বিশ্বব্যাপী পাঠ্য-ডোমেন ভেরিয়েবলের মধ্যে লোড করে তবে আমরা উত্স থেকে পড়তে পারি :
যদি ডোমেনটি ইতিমধ্যে বিদ্যমান থাকে তবে অনুবাদগুলি একত্রিত করা হবে।
যদি উভয় সেটের একই স্ট্রিং থাকে তবে মূল মান থেকে অনুবাদ নেওয়া হবে।
সুতরাং, আমরা চাই থিম পিতামাতার কেবলমাত্র স্ট্রিংগুলিকে ওভাররাইড / প্রতিস্থাপন করার জন্য , প্যারেন্ট থিমটি তার .mo ফাইলটি লোড করার আগে আমাদের প্যারেন্ট টেক্সটডোমেনের জন্য একটি কাস্টম .mo ফাইল লোড করতে হবে।
সমাধান
শেষ অবধি, আমি কেবলমাত্র চাইল্ড থিম ভাষা ফোল্ডারে মূল পিতা বা মাতার থিমের নাম (কেবল সুবিধার জন্য) এর সাথে একটি ফোল্ডার তৈরি করেছি এবং এর ভিতরে আমার কাস্টম .mo ফাইলগুলি পিতাম পাঠ্য ডোমেনের জন্য (ভাষার জন্য একটি, xx_XX.moফর্মটিতে, xx_XXভাষা কোড যেখানে )।
এবং তারপরে আমি অ্যাকশন functions.phpচলাকালীন আমার চাইল্ড থিম ফাইলে একটি লাইন যুক্ত করেছি after_setup_theme, আমার চাইল্ড থিম পাঠ্য ডোমেনের জন্য। মোম ফাইলটি লোড করে এমন একটিটির কাছে:
add_action( 'after_setup_theme', function () {
// load custom translation file for the parent theme
load_theme_textdomain( 'parent-textdomain', get_stylesheet_directory() . '/languages/parent-theme' );
// load translation file for the child theme
load_child_theme_textdomain( 'my-child-theme', get_stylesheet_directory() . '/languages' );
} );
যেহেতু functions.phpচাইল্ড থিমের ফাইলটি পিতা-মাতার একের আগে লোড করা হয়েছে, এই স্ট্রিংগুলির পিতামাতার থিম অনুবাদের চেয়ে বেশি প্রাধান্য পাবে (অথবা আমি কেবল add_actionফাংশনের তৃতীয় প্যারামিটারটি ব্যবহার করে অগ্রাধিকার সেট করতে পারতাম )।
দ্রষ্টব্য: আমি এর load_child_theme_textdomainপরিবর্তে ব্যবহার করতে পারতাম load_theme_textdomain, যেমনটি প্রতিবেদনে বলা হয়েছিল এটি একই রকম হত।