انتقال فایل زبان قالب و افزونه به سیستم وردپرس؛ چطور مشکل ترجمه فارسی قالب و افزونه را رفع کنیم؟
برخی اوقات وقتی شما یک افزونه یا قالب با ترجمه فارسی را تهیه میکنید و آن را بر روی سایت خود نصب و فعال میکنید متوجه میشوید که پنل تنظیمات افزونه یا قالب به زبان انگلیسی نمایش داده میشود. شاید شما فکر کنید افزونه یا قالب اصلا فارسی نشده اما وقتی به پوشه languages در فایل قالب و افزونه خود مراجعه میکنید فایلهای زبان فارسی را در آنجا میبینید. پس مشکل چیست و چطور میشود این مشکل را حل کرد؟ برای حل این مشکل با فرشمیکا همراه باشید.
ترجمه فارسی قالب و افزونه
این روزها برخلاف سالیان گذشته، دیگر تقریبا میتوانید نسخه فارسی هر افزونه و قالب مطرحی را در فروشگاههای ایرانی مثل فرشمی پیدا کنید. اگر طراحی یا توسعه دهنده سایت هستید یک مجموعه آموزشی تحت عنوان بومیسازی وردپرس در فرشمیکا در دست انتشار است که میتوانید از آن برای بومیسازی افزونه و قالب خود استفاده کنید. بومیسازی وردپرس شامل مراحل مختلفی از جمله ترجمه افزونه و قالب، قرار دادن فونتهای فارسی در آنها و راستچین کردنشان میشود.
برای ترجمه فارسی افزونه و قالب میتوانید از نرمافزارهایی مثل Poedit برای ویندوز و مک یا افزونههایی مثل Loco Translate استفاده کنید. اگر میخواهید چک کنید که قالب یا افزونه شما دارای ترجمه فارسی است کافی است فایل زیپ افزونه/قالب را اکستراکت کرده و آن را باز کنید و به پوشه languages بروید. ممکن است نام پوشه زبان lang یا i18n هم باشد پس اگر پوشهای با این نامها دیدید بدانید که پوشه مربوط به فایلهای زبان است. داخل این پوشه باید به دنبال فایلهایی که با fa_IR.po و fa_IR.mo تمام میشوند بگردید. در صورتی که این دو فایل وجود داشت یعنی افزونه/قالب شما دارای ترجمه فارسی است.
اطلاعاتی درباره فایلهای ترجمه افزونه/قالب
اغلب افزونهها و قالبهایی که امروزه به بازار میآیند قابلیت ترجمه به زبانهای گوناگون را دارند. داشتن قابلیت ترجمه یعنی اینکه در کدهای محصول، امکان درج فایل ترجمه قرار گرفته و همچنین تمام عبارتهایی که به زبان اصلی در سایت (چه پنل ادمین و چه در ظاهر سایت) نمایش داده میشود دارای یک پیشوند است که بتوان آن را از طریق فایل زبان ترجمه کرد. معمولا اگر در فایل اصلی افزونه (که معمولا به نام خود افزونه با پسوند .php است) و در فایل functions.php قالب، عبارت load_textdomain یا فقط textdomain را جستجو کنید و این عبارت موجود باشد، افزونه/قالب دارای قابلیت ترجمه هست حتی اگر پوشه زبان نداشته باشد. به عنوان مثال یک چنین تکه کدی در افزونه باید وجود داشته باشد:
load_plugin_textdomain( ‘plugin_name’, FALSE, basename( dirname( __FILE__ ) ) . ‘/languages’);
حالا اگر به همان پوشه زبان که در بالا گفتیم مراجعه کنید غیر از فایلهایی که با پسوندهای mo و po میبینید احتمالا یک فایل هم با پسوند pot وجود دارد که به این فایل اخیر فایل قالب زبان گفته میشود. در واقع فایلهای زبانهای مختلف از روی این قالب زبان ساخته میشوند. (افزونههایی مثل loco translate در صورتی که یک افزونه/قالب فایل قالب زبان نداشته باشد ابتدا آن را میسازد تا بتواند از روی آن فایل ترجمه برای ترجمه افزونه/قالب در اختیار شما قرار دهد)
مورد بعدی که باید بدانید این است که هر افزونه یا قالب یک Text Domain دارد که عنوان اصلی برای ترجمه است. مثلا افزونه buddypress دارای Text Domain با نام buddypress است و فایل قالب زبان برای آن نیز به شکل buddypress.pot است و فایلهای زبان فارسی برای آن به شکل buddypress-fa_IR.po و buddypress-fa_IR.mo است. برای قالبها معمولا فایل زبان مثلا برای زبان فارسی به شکل fa_IR.po و fa_IR.mo است و نام تکست دامین در ابتدای آن قرار نمیگیرد.
نکته دیگر اینکه پسوند po در واقع فایل مربوط به انسان (یعنی امکان ویرایش دارد) و فایل mo فایل به اصطلاح قابل خواندن برای ماشین، یعنی فایل کامپایل شدهای است که سایت شما به آن نیاز دارد. برای ویرایش حتما باید فایل با پسوند po در اختیار شما باشد و برای آن که سایت شما زبان را بخواند فایل با پسوند mo حتما باید وجود داشته باشد.
علت و رفع مشکل عدم نمایش ترجمه فارسی قالب یا افزونه
حالا با توضیحاتی که دادیم کمی با نحوه ترجمه افزونه/قالب در وردپرس و ملزومات آن آشنا شدید. بنابراین راحتتر میتوانید مشکل را درک کرده و آن را رفع کنید. دلایل مختلفی ممکن است برای عدم نمایش ترجمه وجود داشته باشد. در ابتدا شما باید از این موارد اطمینان یابید (البته در بیشتر اوقات این موارد مشکلی ندارد و شما در ابتدا میتوانید به مرحله آخر بروید و در صورتی که مرحله آخر جواب نداد دوباره به سراغ این موارد بیایید):
۱- پوشه زبان در افزونه/قالب وجود دارد و فایل زبان در درون آن قرار گرفته است. توجه کنید نام پوشه درست باشد. در تکه کدی که در بالا آوردیم که مسیر پوشه زبان را برای افزونه نشان میدهد نام پوشه آورده شده که به صورت languages است. توجه کنید که نام پوشه زبان نیز دقیقا همین باشد. مثلا نام پوشه به صورت language نباشد.
۲- توجه کنید که فایل زبان با پسوند mo حتما در پوشه زبان باشد
۳- دقت کنید گاهی ممکن است فایلها یا کدهای افزونه/قالب دست خورده باشند. چک کنید تکه کدی شبیه آن چه در بالا آوردیم در فایلهای مربوط به افزونه و قالب که ذکر کردیم وجود داشته باشد.
۴- آیا تمام تنظیمات و بخشهای مربوط به قالب/افزونه به زبان اصلی نمایش داده میشود. اگر بخشی فارسی و بخشی به انگلیسی است ممکن است سازنده بخشی از محصول را قابل ترجمه نکرده و یا فایل زبان به روز نیست. برای به روز کردن فایل زبان، فایل با پسوند fa_IR.po را با نرمافزار poedit باز کنید. سپس از منو بر روی گزینه Translation کلیک کرده و روی Update from POT file.. کلیک کنید. در این حالت احتمالا عبارتهای ترجمه نشده به شما نمایش داده شده و میتوانید آن را ترجمه کنید.
۵- چک کنید نام فایل زبان درست وارد شده باشد. مثلا به جای buddypress-fa_IR.po فایل زبان به شکل buddypress_fa_IR.po نباشد (همان طور که میبینید شکل تیرهها با هم فرق دارد). برای چک کردن به فایل با پسوند pot مراجعه کنید. هر نامی که این فایل دارد باید با یک تیره در جلوی عبارت fa_IR قرار بگیرد تا فایل زبان در شکل صحیح خود باشد.
مرحله آخر
حال اگر مشکل از اینها نبود با این کار باید مشکل شما رفع شود. فایلهای زبان را کپی کنید. برای افزونهها هر دو فایل زبان را از پوشه زبان افزونه کپی کرده و در مسیر wp-contents/languages/plugins در هاست خود پیست کنید. (به کنترل پنل هاست > فایل منیجر و روت سایت خود مراجعه کنید)
برای قالبها توجه کنید مثلا در قالب masterstudy قالب زبان شما به صورت masterstudy.pot است و فایلهای زبان به صورت fa_IR.po و fa_IR.mo هست. شما ابتدا باید فایلها را به شکل masterstudy-fa_IR.po و masterstudy-fa_IR.mo تغییر نام داده و به پوشه wp-contents/languages/themes منتقل کنید.
امیدواریم که این آموزش توانسته باشد مشکل شما را رفع کند.