📋 تفکیک گزارش تغییرات (Changelog) در ۲ نسخه اخیر
پایش لحظهای تغییرات، وصلههای امنیتی و ویژگیهای اضافه شده در نسخه کنونی و نسخه پیشین از مخزن رسمی WordPress.org:
نگارش فعلی (Latest)
نسخه 3.3.4
• رفع آسیبپذیری XSS ذخیرهشده بدون احراز هویت از طریق تزریق کلید نویز در نظرات با تشکر از daroo و تیم Wordfence
• افزودن پشتیبانی از جداول گتتکست زبانهای سفارشی خطدار در وظایف ارتقا
• پردازش شورتکدهای ایمیل در فهرست مجاز در پوستههای محافظتشده
• افزودن سازگاری با تنظیمکننده جدید پاپآپ تشخیص خودکار زبان کاربر
📦 نگارش قبلی (Previous)
نسخه 3.3.3
• وصله امنیتی: برطرف شدن حفره امنیتی تزریق اسکریپت (XSS) در ویرایشگر زنده ترجمه از طریق پارامترهای جستجو.
• رفع مشکل نمایهسازی و ایندکس عنوان محصولات افزونه Breakdance در فرآیند ترجمه سایت.
📑 فهرست عناوین و سرفصلهای این مقاله:
معماری فنی و نحوه عملکرد ترنسلیتپرس در لایه فرانتاند
افزونه ترنسلیتپرس (TranslatePress) با اسلاگ translatepress-multilingual رویکردی متفاوت و مبتنی بر رابط کاربری بصری را برای چندزبانه کردن وبسایتهای وردپرسی ارائه میدهد. برخلاف سیستمهای سنتی که مدیران سایت را درگیر محیطهای پیچیده و جداگانه ترجمه رشتهها میکنند، این افزونه با بارگذاری لایه فرانتاند سایت در یک ویرایشگر زنده، امکان ترجمه مستقیم هر بخش متنی را با یک کلیک ساده فراهم میسازد. در این متدولوژی، تمامی عناصر صفحه شامل متنهای ثابت قالب، ویجتهای صفحه سازها و محتوای پست تایپها به صورت یکجا قابل مشاهده و ویرایش هستند که این امر خطاهای انسانی در تطبیق متنهای ترجمه شده با ساختار گرافیکی قالب را به حداقل میرساند.
از دیدگاه مهندسی نرمافزار، این افزونه از ساختار پایگاه داده خاص خود برای ذخیرهسازی ترجمهها در جدولهای سفارشی (Custom Database Tables) استفاده میکند که از تورم جدول wp_postmeta و wp_options جلوگیری مینماید. عملکرد این ساختار به گونهای است که رشتههای ترجمه شده به صورت جفتکلید (Key-Value) ذخیره شده و در زمان بارگذاری صفحه، از طریق هوکها و فیلترهای وردپرس جایگزین متن اصلی میشوند. این مکانیزم ذخیرهسازی بهینهشده، تاثیر منفی روی کوئریهای پایگاه داده را کاهش داده و با سیستمهای کشینگ مدرن وردپرس سازگاری بالایی دارد.
مدیریت ساختار URL، سئو و استانداردهای hreflang در سایتهای چندزبانه
پیادهسازی ساختار چندزبانه نیازمند دقت بالا در معماری سئو و دستهبندی آدرسهای اینترنتی است. ترنسلیتپرس از ساختار دایرکتوری (Subdirectory) مانند domain.com/en/ برای تفکیک زبانها پشتیبانی میکند که از نظر استانداردهای سئو گوگل، بهترین روش برای مدیریت اعتبار دامنه و تجمیع سیگنالهای سئو محسوب میشود. همچنین در مواردی که نیاز به استفاده از زیردامنه (Subdomain) باشد، تنظیمات سرور و رکوردهای DNS باید به دقت پیکربندی شوند تا از خطاهای هدایت (Redirection Loops) جلوگیری به عمل آید.
تولید صحیح و خودکار تگهای hreflang در هدر صفحات، یکی از حیاتیترین وظایف این افزونه است که به موتورهای جستجو میفهماند هر صفحه چه نسخههای زبانی دیگری دارد. افزونه با استفاده از توابع داخلی وردپرس و بررسی زبانهای فعال، تگهای alternate را به همراه لینکهای استاندارد (Canonical) تولید میکند. این فرآیند از ایجاد محتوای تکراری (Duplicate Content) جلوگیری کرده و رباتهای خزنده گوگل را در ایندکس دقیق صفحات چندزبانه یاری میکند تا ترافیک ارگانیک هر زبان به درستی هدایت شود.
سازگاری با ووکامرس و چالشهای اکوسیستم وب فارسی
توسعه فروشگاههای اینترنتی چندزبانه با ووکامرس نیازمند ترجمه دقیق محصولات، ویژگیها، سبد خرید و مراحل تسویه حساب است. ترنسلیتپرس امکان ترجمه فیلدهای متنی محصولات (مانند عنوان، توضیحات کوتاه و کامل)، دستهبندیها و ویژگیهای متغیر ووکامرس را به صورت مستقیم فراهم میکند. با این حال، در اکوسیستم وب فارسی، چالشهایی نظیر سازگاری با درگاههای پرداخت بانکی واسط و مستقیم، سیستمهای پیامکی و فونتهای فارسی مطرح میشود. برای مثال، درگاههای پرداخت ممکن است پس از بازگشت کاربر، زبان پیشفرض سایت را بازنشانی کنند که این امر نیازمند مدیریت صحیح کوکیهای زبان و توابع هدایت در کدهای سفارشی است.
علاوه بر این، در زبانهای راستچین (RTL) مانند فارسی و عربی، تغییر زبان سایت در فرانتاند باید به طور خودکار جهت قالب (Direction) را از LTR به RTL و بالعکس تغییر دهد. ترنسلیتپرس با شناسایی زبان فعال، کلاسهای CSS مربوط به جهتدهی را به تگ بدنه (Body Class) تزریق میکند. با این حال، طراحان وب باید اطمینان حاصل کنند که استایلهای CSS قالب با متغیرهای RTL هماهنگ هستند تا از به هم ریختگی المانهای رابط کاربری در زبانهای انگلیسی و فارسی جلوگیری شود.
امنیت، مدیریت دسترسیها و بهینهسازی منابع سرور
امنیت در افزونههای چندزبانه به دلیل پردازش حجم بالایی از درخواستهای کاربران و ترجمههای خودکار از طریق APIهای خارجی اهمیت دوچندانی دارد. ترنسلیتپرس به مدیران سایت اجازه میدهد تا سطح دسترسی مترجمان را بر اساس نقشهای کاربری وردپرس محدود کنند تا کاربران با نقشهای پایینتر نتوانند تنظیمات اصلی هسته افزونه را تغییر دهند. استفاده از ابزارهای ترجمه ماشینی مانند Google Translate API یا خدمات مبتنی بر هوش مصنوعی نیز مستمد حفظ کلیدهای دسترسی (API Keys) در تنظیمات امن پایگاه داده و جلوگیری از افشای آنها در کدهای سمت فرانتاند است.
از نظر بهینهسازی منابع سرور، بارگذاری اسکریپتهای جاوا اسکریپت ویرایشگر زنده و فرآیندهای ترجمه داینامیک میتواند مصرف حافظه PHP را افزایش دهد. به همین دلیل، تنظیم دقیق افزونههای کش و استفاده از مکانیسمهای Object Caching برای ذخیره نتایج ترجمهها توصیه میشود تا در بازدیدهای همزمان، فشاری به سرور پایگاه داده وارد نشود. همچنین پاکسازی جدولهای ترجمه موقت و مدیریت لاگهای خطا به پایداری سیستم در ترافیکهای بالا کمک شایانی میکند.
❓ سوالات متداول درباره ترنسلیتپرس (TranslatePress)
پاسخ به سوالات و چالشهای فنی وبمسترها، طراحان سایت و مدیران سرور درباره افزونه ترنسلیتپرس (TranslatePress) در این بخش گردآوری شده است:
برای این تغییر، ابتدا باید تنظیمات ساختار زبان را در پیشخوان ترنسلیتپرس روی حالت Subdirectory قرار دهید. سپس لازم است در فایل .htaccess (در سرورهای آپاچی) یا تنظیمات Nginx، قوانین هدایت دائمی (301 Redirect) را به گونهای بنویسید که درخواستهای آدرسهای قدیمی زیردامنه دقیقاً به مسیر جدید دایرکتوری متصل شوند تا اعتبار سئو (Link Juice) و ایندکسهای گوگل حفظ گردد.
این مشکل معمولاً ناشی از تداخل کش رایانش ابری (Cloudflare) یا کش سمت سرور با درخواستهای ایجکس (AJAX) ووکامرس است. برای رفع این مسئله، باید مسیرهای مربوط به ووکامرس و کوکیهای زبان ترنسلیتپرس (مانند tp_language) را در تنظیمات افزونه کش سایت خود در فهرست استثناها (Exclusions) قرار دهید تا درخواستهای تغییر متغیر محصول همیشه به صورت زنده و بدون کش پردازش شوند.
ترنسلیتپرس به طور خودکار بیشتر متنهای خروجی را ترجمه میکند. اگر میخواهید بخشی از خروجی یک تابع اختصاصی ترجمه نشود، میتوانید از توابع کمکی یا هوکهای افزونه استفاده کنید، یا در پنل تنظیمات ترنسلیتپرس، کلاس یا تگ HTML آن المان خاص را در بخش 'Do not translate' ثبت کنید تا اسکریپت فرانتاند آن را نادیده بگیرد.
اگر تنظیمات به درستی انجام نشود، بله. افزونههای کش ممکن است صفحه زبان اصلی را برای نسخه زبان دوم نیز کش کنند. برای جلوگیری از این تداخل، باید مطمئن شوید که افزونه کش شما از کوکیهای زبان ترنسلیتپرس پشتیبانی میکند یا قابلیت کش جداگانه بر اساس کوکی را فعال کردهاید تا برای هر زبان، فایل کش مجزایی تولید و به کاربر نمایش داده شود.