টি এল; ডিআর
আপনি যদি অনুবাদ কীভাবে কাজ করে তার বিশদটি সম্পর্কে আগ্রহী না
হন তবে আপনার অনুবাদটি নীচের অংশে কাজ করছে না কি তা যাচাই করা উচিত , বিশেষত
মডিউল স্কোপ অনুবাদ সংঘাতের জন্য সাবসেশন সলিউশন ।
Magento অনুবাদ ওভারভিউ
ম্যাজেন্টো অনুবাদ উত্সগুলিকে অগ্রাধিকার দেয় (সর্বোচ্চ থেকে নীচে):
- ডিবি (
core_translateটেবিল)
- থিম
translate.csvফাইল
app/locale/*/*.csvফাইল
অনুবাদ অ্যারে কীভাবে নির্মিত?
মডিউল অনুবাদ
app/locale/*/*.csvসক্রিয় মডিউল etc/config.xmlফাইলগুলি থেকে রেফারেন্স পাওয়া প্রথমে সমস্ত ফাইল পার্স করা হয়। এখানে প্রক্রিয়াটির একটি পদচারণা রয়েছে:
ধরে নেওয়া যাক ম্যাগেন্টো নিম্নলিখিত config.xmlবিভাগটি আবিষ্কার করেছে :
<!-- excerpt from Mage/Catalog/etc/config.xml -->
<frontend>
<translate>
<modules>
<Mage_Catalog>
<files>
<default>Mage_Catalog.csv</default>
</files>
</Mage_Catalog>
</modules>
</translate>
</frontend>
এবং সেই ফাইলটিতে, নিম্নলিখিত স্টোর ভিউয়ের জন্য কনফিগার করা লোকালের জন্য নিম্নলিখিত অনুবাদটি নির্দিষ্ট করা হয়েছে:
"AAA","BBB"
এই পরিস্থিতিতে, ম্যাজেন্টো অনুবাদ অ্যারেতে নিম্নলিখিত রেকর্ডগুলি তৈরি করে:
array(
"AAA" => "BBB",
"Mage_Catalog::AAA" => "BBB"
)
দ্বিতীয় মানটি হল মডিউল স্কোপ অনুবাদ । প্রিফিক্সড মডিউলটির নামটি অনুবাদ ফাইলের ঘোষণার সমন্বিত কনফিগার এক্সএমএল নোড থেকে নেওয়া হয়েছে।
একই অনুবাদ করে আবার নির্দিষ্ট করা থাকে দ্বিতীয় মডিউল ফাইল , যেমন মধ্যে Some_Module.csvঅনুবাদ "AAA","CCC", এটা হবে প্রতিস্থাপন করতে"AAA" সেটিং। পরিবর্তে, এটি কেবলমাত্র দ্বিতীয় মডিউলটির নাম সহ একটি নতুন রেকর্ড যুক্ত করবে "Some_Module::AAA" => "CCC"।
বিকাশকারী মোড সক্ষম থাকলে, এটি অন্য মডিউল অনুবাদে একই কী সহ দ্বিতীয় রেকর্ড খুঁজে পেলে এটি "AAA"রেকর্ডটি আনসেট করে দেয়। এটি উন্নয়নের সময় মডিউল অনুবাদ সংঘাতগুলি চিহ্নিত করা সহজ করে তোলে।
থিম অনুবাদ
দ্বিতীয়ত, translate.csvবর্তমান লোকেলের থিম ফ্যালব্যাকের প্রথম ফাইল থেকে বোঝানো অনুবাদগুলি কেবল অনুবাদ অ্যারেতে বিদ্যমান রেকর্ডগুলি প্রতিস্থাপন করে।
সুতরাং পূর্ববর্তী উদাহরণ অব্যাহত রেখে, একটি translate.csvরেকর্ড "AAA","DDD"নিম্নলিখিত অনুবাদ ডেটা বাড়ে:
array(
"AAA" => "DDD", // This is overwritten by the translate.csv file
"Mage_Catalog::AAA" => "BBB",
"Some_Module::AAA" => "CCC"
)
অবশ্যই translate.csvনতুন অনুবাদ কীগুলির সাথে রেকর্ডগুলি কেবল অ্যারেতে যুক্ত করা হয়।
ডাটাবেস অনুবাদ
core_translateসারণী থেকে অনুবাদগুলি মূলত থিম অনুবাদগুলির মতোই অনুবাদ অ্যারেতে মার্জ করা হয়।
মডিউল বা থিম অনুবাদ থেকে বিদ্যমান কীগুলি ডাটাবেস রেকর্ডে ওভাররাইট করা হয়, নতুন যুক্ত হয়।
অনুবাদ চেহারা
__()পদ্ধতিটি যখন ডাকা হয় তখন ম্যাগেন্টো প্রথমে বর্তমান মডিউলের সাথে মিলছে অ্যারে অনুবাদ অনুবাদ সন্ধান করে।
বর্তমান মডিউলটি শ্রেণীর নাম অনুসারে শ্রেণীর নাম দ্বারা নির্ধারিত হয় __()। উদাহরণস্বরূপ, ব্লকগুলিতে দায়বদ্ধ পদ্ধতিটি দেখতে এরকম দেখাচ্ছে:
// Excerpt from Mage/Core/Block/Abstract.php
public function getModuleName()
{
$module = $this->getData('module_name');
if (is_null($module)) {
$class = get_class($this);
$module = substr($class, 0, strpos($class, '_Block'));
$this->setData('module_name', $module);
}
return $module;
}
সহায়ক এবং নিয়ন্ত্রণকারীদের পদ্ধতিগুলি যথাযথভাবে কাজ করে।
উদাহরণস্বরূপ চেহারা পরিস্থিতি
উদাহরণস্বরূপ, ধরা যাক $this->__('AAA')একটি টেমপ্লেট ফাইলে ডাকা হয়। যদি সম্পর্কিত ব্লকের ধরণ থাকে তবে Mage_Core_Block_Templateম্যাজেন্টো প্রথমে একটি Mage_Core::AAAরেকর্ড পরীক্ষা করবে । যদি এটি এটি না খুঁজে পায় তবে এটি কীটির জন্য অনুবাদে ফিরে আসবে AAA।
উদাহরণের দৃশ্যে এটি অনুবাদে DDD( translate.csvফাইল থেকে ) ফলাফল করবে will
একটি ভিন্ন দৃশ্যে সম্পর্কিত ব্লক হতে পারে Mage_Catalog_Block_Product_View। এই ক্ষেত্রে ম্যাজেন্টো প্রথমে একটি অনুবাদ রেকর্ডের জন্য পরীক্ষা Mage_Catalog::AAAকরত এবং অনুবাদটি খুঁজে পেত AAA।
সুতরাং কার্যকরভাবে, মডিউল স্কোপ অনুবাদগুলির উচ্চতর অগ্রাধিকার থাকে তারপরে যে কোনও জেনেরিক অনুবাদ। কোন অনুবাদটি ব্যবহৃত হয় তা নির্ভর করে ক্লাশটি __()পদ্ধতিটি কল করা থেকে কোন মডিউল ।
আপনার অনুবাদটি কাজ করছে না তা যাচাই করবেন
যদি কোনও translate.csvফাইল থেকে আপনার অনুবাদ ব্যবহার না করা হয় তবে এই চেকলিস্টটি অনুসরণ করুন:
- অনুবাদ ক্যাশেটি কি বন্ধ / রিফ্রেশ হয়েছে? (সমাধান: ক্যাশে সাফ করুন)
- কি
translate.csvফাইল বর্তমান বাজারের জন্য থিম ফলব্যাক সত্যিই? (সমাধান: থিম কনফিগারেশন ঠিক করুন)
core_translateসারণীতে অনুবাদটির জন্য কি কোনও বিরোধী রেকর্ড রয়েছে? (সমাধান: এ থেকে বিরোধী রেকর্ডটি সরিয়ে দিন core_translate)
- পূর্ববর্তী সমস্ত পয়েন্ট যদি কারণ না হয় তবে আলাদা মডিউল থেকে একটি বিরোধী অনুবাদ থাকতে হবে। (সমাধান: নীচে দেখুন)
মডিউল স্কোপ অনুবাদ সংঘাতের জন্য সমাধান
আপনি যদি চূড়ান্ত কেসটি সত্য বলে মনে করেন, কেবল অনুবাদটি মডিউলটির মডিউল স্কোপ translate.csv সহ অনুবাদটি আপনার সাথে দ্বিতীয়বার যুক্ত করুন ।
উদাহরণস্বরূপ, আপনি যদি সর্বদা থিম অনুবাদের মাধ্যমে AAAঅনুবাদ করতে চান তবে আপনি এটিতে এটি করতে পারেন : DDDtranslate.csv
"AAA","DDD"
"Mage_Catalog::AAA","DDD"
"Some_Module::AAA","DDD"
অনুশীলনে, আমি কেবল কোনও দ্বন্দ্ব হলেই অনুবাদটিতে মডিউল সুযোগ যুক্ত করি, অর্থাত্ যদি কোনও অনুবাদ কাজ না করে।
অতিরিক্ত নোট
ইনলাইন অনুবাদ
ম্যাজেন্টোর ইনলাইন অনুবাদ বৈশিষ্ট্যটি core_translateমডিউল স্কোপ উপসর্গ ব্যবহার করে সারণিতে কাস্টম অনুবাদগুলি যুক্ত করে ।
অনুন্নত সহাবস্থানযোগ্যতা
থিম অনুবাদগুলির অগ্রাধিকারটি ম্যাগান্টো সংস্করণ ১.৩ বা তার বেশি পর্যন্ত ডাটাবেসের অনুবাদগুলিতে উচ্চতর ব্যবহৃত হত।
এক্সএমএল অনুবাদ
Magento কখনও কখনও মূল্যায়ন translate=""আর্গুমেন্ট config.xml, system.xmlও লেআউট এক্সএমএল শিশু নোড মান অনুবাদ করতে। অনুবাদ ক্ষেত্রের জন্য মডিউলটি নির্দিষ্ট করতে যুক্তি
ব্যবহার করে কোনও সহায়ক শ্রেণি নির্দিষ্ট করা যেতে পারে module=""।
যদি moduleএক্সএমএলে কোনও যুক্তি নির্দিষ্ট না করা থাকে, তবে core/dataসহায়তাকারী শিশু নোডের মানগুলি অনুবাদ করতে ব্যবহৃত হয়।
আরো তথ্য
আমি স্বীকার করি যে আমি এই পোস্টে ম্যাজেন্টো অনুবাদ প্রক্রিয়াটির কিছু বিবরণ পেয়েছি, তবে কেবলমাত্র আমি খুব বেশি তথ্য চাই না বলেই।
- অনুবাদ অ্যারেটি তৈরি করার সময় কিছু প্রযুক্তিগত বিশদ
- মডিউলগুলির জন্য অতিরিক্ত অনুবাদ ফাইলগুলি ব্যবহার করার সম্ভাবনা
core_translateরেকর্ডগুলির জন্য স্টোর দেখার সুযোগ
- অনুবাদের বিভিন্ন পদ্ধতি ব্যবহার করে পেশাদার এবং কনস
আরও তথ্যের প্রয়োজন হলে দয়া করে একটি পৃথক প্রশ্ন জিজ্ঞাসা করুন।