پلی‌لنگ (Polylang)
language چندزبانه کردن سبک بدون افت سرعت

راهنمای جامع معماری و پیاده‌سازی افزونه پلی‌لنگ (Polylang) برای وب‌سایت‌های وردپرسی چندزبانه

بررسی فنی و عمیق افزونه Polylang در وردپرس. راهنمای پیکربندی دایرکتوری زبان، تگ‌های hreflang، بهینه‌سازی سئو و حل چالش‌های ووکامرس و راست‌چین.

آخرین نگارش نسخه 3.8.7
نصب‌های فعال +800 هزار
امتیاز کاربران ★ 4.7 (2,983 رأی)
توسعه‌دهنده رسمی Chouby

📋 تفکیک گزارش تغییرات (Changelog) در ۲ نسخه اخیر

پایش لحظه‌ای تغییرات، وصله‌های امنیتی و ویژگی‌های اضافه شده در نسخه کنونی و نسخه پیشین از مخزن رسمی WordPress.org:

نگارش فعلی (Latest) نسخه 3.8.7
• افزودن قابلیت ترجمه بلوک‌های جدید ارائه شده در نگارش ۷.۱ وردپرس • رفع مشکل منوی کشویی والد در ویرایش سریع برای پست تایپ‌های سفارشی تو در تو • رفع مشکل بارگذاری همزمان اسکریپت ویرایشگر وردپرس با ویرایشگر ابزارک‌های جدید
📑 فهرست عناوین و سرفصل‌های این مقاله:

معماری پایگاه داده و مکانیسم ترجمه در پلی‌لنگ

افزونه پلی‌لنگ (Polylang) با اتکا به ساختار بومی‌سازی وردپرس، رویکردی متفاوت و بهینه نسبت به رقبا برای مدیریت محتوای چندزبانه ارائه می‌دهد. این افزونه به جای ایجاد جدول‌های اختصاصی سنگین در دیتابیس، از سیستم تکسونومی (Taxonomy) پیش‌فرض وردپرس برای تعیین زبان هر پست، برگه، دسته‌بندی و برچسب استفاده می‌کند. ارتباط میان ترجمه‌های مختلف یک نوشته از طریق متادیتا و جدول روابط ترم‌ها برقرار می‌شود که این امر سربار پردازشی روی دیتابیس MySQL را به حداقل می‌رساند و کوئری‌های WP_Query را سبک نگه می‌دارد. از منظر مهندسی نرم‌افزار، پلی‌لنگ در زمان بارگذاری هسته وردپرس (Bootstrap) هوک‌های حیاتی مانند `pll_the_language_link` و فیلترهای کوئری را فعال می‌کند تا زبان کاربر را بر اساس ساختار URL تشخیص دهد. این مکانیزم اجازه می‌دهد تا در سطح کوئری‌های دیتابیس، پست‌های مربوط به زبان غیرمرتبط فیلتر شوند و در نتیجه، حافظه مصرفی PHP (Memory Limit) مدیریت شود. توسعه‌دهندگان می‌توانند با استفاده از توابع کمکی این افزونه، منطق سفارشی خود را بدون نگرانی از تداخل با ساختار اصلی وردپرس پیاده‌سازی کنند.

ساختار URL و پیاده‌سازی استاندارد تگ‌های Hreflang

انتخاب ساختار URL برای وب‌سایت‌های چندزبانه تأثیر مستقیمی بر ایندکس شدن صفحات توسط موتورهای جستجو دارد. پلی‌لنگ امکان استفاده از ساب‌دامین (مانند en.example.com)، ساب‌فولدر یا دایرکتوری (مانند example.com/en/) و حتی پارامترهای پرس‌وجو را فراهم می‌کند. از دیدگاه سئو و معماری اطلاعات، استفاده از ساختار دایرکتوری بهترین گزینه برای متمرکز کردن قدرت دامنه (Domain Authority) است و پلی‌لنگ این کار را با مدیریت دقیق قوانین بازنویسی URL یا همان Rewrite Rules در وردپرس به انجام می‌رساند. تولید صحیح تگ‌های `hreflang` برای جلوگیری از خطای محتوای تکراری (Duplicate Content) حیاتی است. پلی‌لنگ به‌طور خودکار هدرهای HTML مربوط به زبان‌های مختلف را در بخش سربرگ سایت رندر می‌کند تا ربات‌های گوگل به راحتی ارتباط بین نسخه‌های مختلف یک صفحه را درک کنند. تنظیمات مربوط به دامنههای جداگانه برای هر زبان نیز در نسخه‌های پیشرفته‌تر پشتیبانی می‌شود که نیازمند تنظیم صحیح ریدایرکت‌های سرور مانند Nginx یا Apache است تا لوپ‌های ریدایرکت ناخواسته ایجاد نشود.

چالش‌های اکوسیستم وب فارسی، هاستینگ و سازگاری با ووکامرس

پیاده‌سازی سایت‌های چندزبانه در بستر وب فارسی با چالش‌های خاصی نظیر تعامل میان زبان‌های راست‌چین (RTL) مانند فارسی و چپ‌چین (LTR) مانند انگلیسی مواجه است. پلی‌لنگ به خوبی از تغییر جهت نوشتار قالب بر اساس زبان فعال پشتیبانی می‌کند، اما طراحان قالب باید از کلاس‌های استاندارد `is_rtl()` و توابع مرتبط در CSS استفاده کنند تا پایداری لایه‌بندی در تمام زبان‌ها حفظ شود. همچنین، مسئله فونت‌های متفاوت برای زبان‌های گوناگون نیازمند تزریق داینامیک استایل‌ها بر اساس اسلاگ زبان فعال است. در حوزه تجارت الکترونیک، افزونه Polylang for WooCommerce پل ارتباطی میان محصولات ووکامرس و سیستم چندزبانه است. ترجمه ویژگی‌ها (Attributes)، دسته‌بندی محصولات و محصولات متغیر (Variable Products) نیازمند دقت بالایی در همگام‌سازی موجودی انبار (Stock) است. در وب فارسی، اتصال درگاه‌های پرداخت بانکی و سیستم‌های پیامکی به پلی‌لنگ نیازمند بررسی دقیق هوک‌های ووکامرس است تا خریدار در هنگام تغییر زبان در سبد خرید، با خطای نشست (Session) یا خالی شدن سبد مواجه نشود.

بهینه‌سازی عملکرد، کشینگ (Caching) و مدیریت رشته‌ها

یکی از بزرگترین نگرانی‌های مدیران سایت در استفاده از افزونه‌های چندزبانه، افت سرعت بارگذاری به دلیل افزایش تعداد کوئری‌ها است. پلی‌لنگ با بهره‌گیری از مکانیسم‌های کش داخلی و ذخیره‌سازی وضعیت زبان در کوکی‌ها یا هدرهای HTTP، از اجرای پردازش‌های اضافی جلوگیری می‌کند. با این حال، هنگام استفاده از افزونه‌های کش مانند Redis Object Cache یا سیستم‌های Full Page Cache، باید قوانین پاکسازی کش (Cache Purge) به گونه‌ای تنظیم شوند که با تغییر زبان یا به‌روزرسانی ترجمه‌ها، نسخه کش‌شده قدیمی به کاربران نمایش داده نشود. بخش ترجمه رشته‌ها (String Translations) در پلی‌لنگ امکان بومی‌سازی متن‌های هاردکد شده در قالب‌ها و افزونه‌ها را بدون نیاز به فایل‌های پیچیده PO و MO فراهم می‌کند. این رشته‌ها در جدول‌های آپشن وردپرس ذخیره می‌شوند و برای جلوگیری از رشد بی‌رویه جدول `wp_options`، پاکسازی دیتابیس و بهینه‌سازی کدهای PHP برای بارگذاری تنبل (Lazy Loading) ترجمه‌ها از اهمیت بالایی برخوردار است تا کارایی کلی سیستم حفظ شود.

❓ سوالات متداول درباره پلی‌لنگ (Polylang)

پاسخ به سوالات و چالش‌های فنی وبمسترها، طراحان سایت و مدیران سرور درباره افزونه پلی‌لنگ (Polylang) در این بخش گردآوری شده است:

برای این کار ابتدا باید تنظیمات ساختار URL را در پنل پلی‌لنگ روی حالت دایرکتوری تنظیم کنید. سپس حتماً باید ریدایرکت‌های ۳۰۱ دائمی از URLهای قدیمی به ساختار جدید (مانند /en/) در فایل تنظیمات سرور Nginx یا .htaccess اعمال کنید. همچنین به‌روزرسانی نقشه سایت (XML Sitemap) و ثبت مجدد آن در گوگل سرچ کنسول برای بازخوانی سریع‌تر لینک‌های جدید الزامی است.
این مشکل معمولاً به دلیل تفاوت در دامنه یا زیردامنه زبان‌ها و عدم تنظیم صحیح کوکی‌ها رخ می‌دهد. اگر از ساب‌دامین برای زبان‌ها استفاده می‌کنید، باید تنظیمات کوکی‌های ووکامرس و وردپرس را به گونه‌ای انجام دهید که کوکی‌ها در سطح دامنه اصلی (Wildcard Cookies) معتبر باشند. همچنین بررسی قوانین کش سرور و مستثنی کردن کوکی‌های مربوط به سبد خرید از سیستم کش بسیار حیاتی است.
برای این منظور باید متن‌های داخل قالب را با استفاده از توابع بومی‌سازی وردپرس مانند `__()` یا `_e()` همراه با دامنه متن (Text Domain) مناسب بپیچید. پس از این کار، رشته‌ها در بخش «ترجمه رشته‌ها» در پنل پلی‌لنگ قابل مشاهده و ترجمه خواهند بود. همچنین می‌توانید از تابع `pll_e()` یا `pll__()` مستقیماً برای ثبت و ترجمه رشته‌های سفارشی در کدهای PHP استفاده کنید.
افزونه‌های سئو معتبر دارای افزونه‌های جانبی (Add-on) یا سازگاری‌های داخلی با پلی‌لنگ هستند. باید مطمئن شوید که افزونه سازگاری پلی‌لنگ با سئو فعال است تا تگ‌های Open Graph، متا تگ‌های عنوان و توضیحات، و نقشه سایت به صورت مجزا برای هر زبان تولید شوند. تنظیمی که باید بررسی شود، اطمینان از صحت تولید تگ‌های hreflang است تا توسط افزونه‌های سئو و پلی‌لنگ به صورت همزمان و تکراری تولید نشوند.