سایت چند زبانه وردپرس با Polylang یا TranslatePress: اگر افزونه را غیرفعال کنید چه می‌ماند؟

دو کارت صفحه انگلیسی بعد از غیرفعال‌کردن افزونه: کارت Polylang هنوز صفحه دارد و کارت TranslatePress خالی است و ۴۰۴ نشان می‌دهد
محصولات زیر برای شماست...
جدیدترین مقالات
دسترسی سریع
فهرست محتوا

یک سایت فارسی آزمایشی ساختیم (هفت برگه، سه نوشته و یک منوی پنج‌گزینه‌ای، روی وردپرس 7.1.4 و قالب Astra 4.14.2). آن را با Polylang Pro 3.9.1 و با TranslatePress 2.9.5 چند زبانه کردیم (فارسی و انگلیسی)؛ هر دو همان فایلی‌اند که فروشگاه می‌فروشد. بعد صفحه‌ها را از دید یک بازدیدکننده و از دید تگ‌هایی که گوگل می‌خواند بررسی کردیم، وزنشان را سنجیدیم و افزونه را غیرفعال هم کردیم.

در یک جمله، در آزمایش ما Polylang صفحه‌های انگلیسی واقعی می‌سازد که با غیرفعال‌شدن افزونه هم در سایت می‌مانند، و TranslatePress همان صفحه‌های فارسی را رشته‌به‌رشته ترجمه می‌کند و سایت انگلیسی فقط تا وقتی افزونه فعال است وجود دارد. فروشگاه ما هر دو افزونه را می‌فروشد (Polylang Pro و TranslatePress، و دسته افزونه‌های چند زبانه). WPML را در این مقایسه نیاورده‌ایم.

هر دو افزونه چند زبانه از یک نقطه شروع و با یک روش آزمایش شدند

سایت پایه را یک‌بار ذخیره کردیم و هر افزونه از همان سایت پایه شروع شد (برگه نمونه و نوشته Hello world را خود وردپرس می‌سازد، بقیه را ما ساختیم). درخواست‌ها بدون ورود به سایت و بدون افزونه کش بود. همه آزمایش‌ها در ۱۷ آبان ۱۴۰۵ انجام شد. نسخه رایگان TranslatePress در مخزن وردپرس آن روز 3.3.9 بود؛ فایل فروشگاه 2.9.5 (با بسته Business 1.5.3) است و همان را آزمایش کردیم؛ نسخه رایگان Polylang و نسخه رایگان TranslatePress 3.3.9 را آزمایش نکردیم. ویزارد Polylang را دو بار از نقطه شروع اجرا کردیم؛ اجرای دوم فقط مشکل‌های بعد از ویزارد و راه‌حل ذخیره پیوندهای یکتا را دوباره بررسی کرد و همه اندازه‌گیری‌ها و آزمایش غیرفعال‌کردن از اجرای اول است.

در Polylang یک برگه را در صفحه‌های خود افزونه به انگلیسی ترجمه کردیم و نام سایت را هم همان‌جا نوشتیم؛ در TranslatePress یک رشته را در ویرایشگر خودش ترجمه کردیم و عنوان و نشانی یک برگه را هم همان‌جا نوشتیم. بقیه متن انگلیسی را با کد نوشتیم: در Polylang با تابع‌های خود افزونه، در TranslatePress مستقیم در جدول ترجمه‌اش. فروشگاه ووکامرس، ترجمه خودکار، کش و رتبه گوگل را آزمایش نکردیم؛ Polylang بخش ووکامرس را هم افزونه‌ای جدا می‌فروشد (Polylang for WooCommerce).

Polylang صفحه انگلیسی واقعی می‌سازد، اما بعد از ویزارد چهار کار دستی مانده است

کار اول نشانی انگلیسی است. زبان فارسی و انگلیسی را در ویزارد اضافه کردیم و به صفحه آخر رسیدیم؛ همان لحظه نشانی انگلیسی (site.com/en) خطای ۴۰۴ داد. اجرای دوم، از نقطه شروع تازه، نتیجه همین بود. راه‌حل در اجرای دوم این بود که تنظیمات «پیوندهای یکتا» را یک‌بار ذخیره کنیم؛ بعد از آن نشانی انگلیسی به صفحه خانه انگلیسی هدایت شد.

کار دوم منو است. منوی بالای صفحه‌های فارسی بعد از ویزارد خالی شد، پنج گزینه به صفر. ویزارد در صفحه آخرش می‌گوید منو برای هر زبان و کلید زبان را باید دستی بسازید. منوی فارسی با ذخیره فرم «نمایش > فهرست‌ها > مدیریت جایگاه‌ها» برگشت. منوی انگلیسی را باید خودتان بسازید و به زبان انگلیسی بدهید؛ ما برای آزمایش آن را با کد ساختیم و در هر دو منو یک گزینه کلید زبان (Language switcher) گذاشتیم.

کار سوم صفحه خانه انگلیسی است که ویزارد می‌سازد: عنوانش «خانه» به‌اضافه پسوند English است و نشانی‌اش همان نشانی فارسی (خانه) زیر پیشوند en؛ عنوان و نشانی را باید خودتان انگلیسی کنید. صفحه‌ای که خودمان با علامت + از فهرست برگه‌ها ساختیم خالی باز شد، و وقتی عنوان انگلیسی تایپ کردیم نشانی هم انگلیسی شد (about-us).

کار چهارم نام سایت است. تگ عنوان صفحه انگلیسی «About us» بود و بعد از آن نام فارسی سایت (استودیوی نمونه) آمده بود. نام و توضیح کوتاه سایت تا وقتی در Languages > Translations ترجمه نشوند فارسی می‌مانند؛ دو فیلد را پر کردیم و عنوان‌ها انگلیسی شد.

جدا از این چهار کار، صفحه‌های خود افزونه در پیشخوان فارسی انگلیسی بودند. وردپرس برای افزونه رایگان Polylang بسته فارسی دارد و برای Polylang Pro ندارد. با WP-CLI (در پوشه وردپرس روی سرور) بسته فارسی افزونه رایگان را نصب کردیم (wp language plugin install polylang fa_IR) و صفحه زبان‌ها فارسی شد.

TranslatePress همان لحظه کار می‌کند، اما عنوان و نشانی برگه‌ها هنوز فارسی‌اند

در TranslatePress 2.9.5 ویزارد نیست (نسخه رایگان 3.3.9 یک راه‌انداز اولیه دارد که آزمایش نکردیم). در تنظیمات افزونه زبان انگلیسی را اضافه کردیم و ذخیره کردیم؛ همان لحظه نشانی هر برگه زیر پیشوند en کار کرد، با متن فارسی. افزونه صفحه‌ای نمی‌سازد: همان برگه‌های فارسی، با نشانی فارسی خودشان، زیر پیشوند en نمایش داده می‌شوند. هر متنی را که افزونه در صفحه می‌بیند در جدول ترجمه خودش ثبت می‌کند: بعد از ۴ بازدید ۱۴ رشته، و بعد از بازدید از هر ۱۱ نشانی زیر en ۴۶ رشته.

یک رشته را در ویرایشگر خود افزونه ترجمه کردیم و ۲۷ رشته دیگر را مستقیم در جدول نوشتیم. بعد منو، تیتر و بخش پایین صفحه انگلیسی شد. منوی انگلیسی همان منوی فارسی بود با نشانی‌های انگلیسی، و کلید زبان به شکل شناور خودش آمد.

تگ عنوان هنوز فارسی بود (عنوان برگه و نام سایت، هر دو فارسی) در حالی که تیتر صفحه «About us» شده بود. افزونه SEO Pack، که در بسته Business است و در آزمایش ما بعد از فعال‌کردن بسته خاموش بود، عنوان و نشانی را هم قابل ترجمه می‌کند. با روشن‌کردنش SEO Pack ۱۰ عنوان و ۹ نشانی را برای ترجمه ثبت کرد. عنوان و نشانی برگه «درباره ما» را در ویرایشگر ترجمه کردیم و نشانی انگلیسی site.com/en/about-us شد؛ برگه‌های دیگر نشانی فارسی ماندند.

ویرایشگر و صفحه‌های تنظیم افزونه هم انگلیسی بودند. برای نسخه 2.9.5 بسته فارسی در وردپرس نیست؛ برای 3.3.9 هست.

زبان و جهت صفحه در هر دو درست عوض می‌شود؛ تعداد تگ hreflang فرق دارد

بررسیPolylang ProTranslatePress
نشانی صفحه فارسیبدون تغییربدون تغییر
صفحه فارسیdir=rtl و lang=fa-IRهمان
صفحه انگلیسیlang=en-US بدون dirهمان
شیوه‌نامه راست‌چین Astraفقط در صفحه‌های فارسیفقط در صفحه‌های فارسی
تگ‌های hreflang در صفحه ترجمه‌شده۲ (fa و en)۴ (fa-IR، en-US، fa و en)
x-default (تنظیمات پیش‌فرض)نداردندارد
canonicalهمان صفحههمان صفحه

تگ hreflang به گوگل می‌گوید هر صفحه چه نسخه‌هایی به زبان‌های دیگر دارد. گوگل در مستندات نسخه‌های محلی‌شده می‌گوید هر نسخه زبانی باید خودش و همه نسخه‌های دیگر را فهرست کند، و اگر صفحه X به Y لینک می‌دهد Y هم باید به X برگردد. هر دو افزونه در صفحه‌هایی که بررسی کردیم همین را کردند. گوگل x-default را پیشنهاد می‌کند و نه الزام، و در تنظیمات پیش‌فرض هیچ‌کدام آن را نگذاشت. چهار تگ در TranslatePress یعنی هر زبان دو بار: یک بار با کد منطقه (fa-IR) و یک بار کوتاه (fa).

برای دیدن همین تگ‌ها در سایت خودتان، این دستور را در لینوکس، مک یا Git Bash با نشانی سایت اجرا کنید:

CODE
وردپرس نیاز
bash
curl -sL https://site.com/en/ | grep -E "<html|hreflang|canonical"

هر خطی که یکی از این سه را داشته باشد چاپ می‌شود؛ خط html زبان و جهت صفحه را نشان می‌دهد. اگر سایت HTML را فشرده کرده باشد صفحه یک خط است و همه آن چاپ می‌شود.

TranslatePress در این قالب ۲۸٬۷۳۱ بایت به صفحه خانه فارسی اضافه کرد و Polylang ۵۰۷ بایت

صفحه خانهدرخواستبایتکوئری
بدون افزونه، فارسی۳۱۷۵٬۱۰۶۲۵
Polylang Pro، فارسی۳۱۷۵٬۶۱۳۴۴
Polylang Pro، انگلیسی۳۱۷۴٬۶۰۵۴۵ تا ۴۹
TranslatePress، فارسی۷۲۰۳٬۸۳۷۲۸ تا ۳۲
TranslatePress، انگلیسی۱۰۳۳۳٬۸۳۱۳۷ تا ۴۱

هر ردیف از پنج بار اندازه‌گیری است (بازه‌ها کمترین و بیشترین‌اند). بایت‌ها بدون فشرده‌سازی شمرده شده‌اند: صفحه HTML و هر شیوه‌نامه، اسکریپت و تصویری که در آن آمده است. مرورگر معمولاً نسخه فشرده را می‌گیرد و عددهای دانلود کوچک‌تر است؛ jQuery در همین سرور آزمایشی ۸۷٬۵۵۳ بایت بود و فشرده ۳۰٬۳۶۸ بایت. TranslatePress برای کلید شناور و کلید زبان دو شیوه‌نامه (۲۲٬۵۲۵ و ۳٬۰۴۲ بایت) و دو پرچم (۸۸۳ بایت) می‌آورد و خود HTML هم ۲٬۲۸۱ بایت بزرگ‌تر می‌شود؛ مجموع این تغییرها ۲۸٬۷۳۱ بایت است، حدود ۱۶ درصد صفحه خانه بدون افزونه. در صفحه انگلیسی سه اسکریپت هم اضافه می‌شود: jQuery (۸۷٬۵۵۳ بایت)، jQuery Migrate (۱۳٬۵۷۷) و اسکریپت ترجمه خود افزونه (۲۶٬۶۳۰). Astra در صفحه فارسی jQuery نمی‌خواست، پس این ۱۲۷٬۷۶۰ بایت به حساب TranslatePress آمد.

Polylang فایل تازه‌ای نمی‌آورد، ولی ۱۹ کوئری بیشتر دارد (۴۴ در برابر ۲۵). بین صفحه انگلیسی Polylang و صفحه انگلیسی TranslatePress در این قالب ۱۵۹٬۲۲۶ بایت فاصله بود.

با غیرفعال‌کردن افزونه، Polylang صفحه‌های انگلیسی را جا می‌گذارد و TranslatePress نه

افزونه‌ها را فقط غیرفعال کردیم؛ حذف کامل را آزمایش نکردیم. با Polylang صفحه‌ها ماندند: شمار برگه‌ها (۱۳: هفت فارسی و شش انگلیسی)، نوشته‌ها (۵: سه فارسی و دو انگلیسی) و گزینه‌های منو (۱۲: پنج گزینه در هر منو و دو گزینه کلید زبان) تغییری نکرد. صفحه انگلیسی هم با نشانی بدون پیشوند (site.com/about-us) باز می‌شد و هم با نشانی دارای پیشوند، و canonical روی نشانی بدون پیشوند بود. هر دو نشانی با lang=fa-IR و dir=rtl آمدند: متن انگلیسی راست‌چین، با شیوه‌نامه راست‌چین قالب. در منو هم گزینه «Language switcher» لینک مرده‌ای شد.

صفحه انگلیسی About Us بعد از غیرفعال‌کردن Polylang: متن انگلیسی راست‌چین است و در منوی بالا گزینه Language Switcher مانده است

با TranslatePress سایت انگلیسی رفت. این آزمایش در حالتی بود که SEO Pack خاموش بود و ۲۸ رشته ترجمه شده بود. نشانی انگلیسی صفحه خانه ۴۰۴ داد و هیچ صفحه انگلیسی در وردپرس نبود: ۷ برگه و ۳ نوشته، همان تعداد پیش از ترجمه. نشانی انگلیسی برگه «درباره ما» با نشانی فارسی‌اش به صفحه فارسی هدایت شد. صفحه خانه فارسی دقیقاً همان ۱۰۳٬۲۳۷ بایت HTML نمونه بدون افزونه را داشت. در دیتابیس ۴۶ ردیف ترجمه ماند؛ پیش از غیرفعال‌کردن ۲۸ تای آن ترجمه انگلیسی داشت.

نشانی انگلیسی خانه بعد از غیرفعال‌کردن Translatepress: صفحه ۴۰۴ با پیام صفحه پیدا نشد و منوی فارسی

اگر صفحه انگلیسی باید مال خود سایت باشد، Polylang؛ اگر ترجمه را روی خود صفحه می‌خواهید، TranslatePress

Polylang را وقتی انتخاب کنید که برای انگلیسی عنوان، نشانی و متن جدا می‌نویسید و می‌خواهید اگر روزی افزونه را غیرفعال کردید آن صفحه‌ها بمانند. هزینه‌اش چهار کار دستی بعد از ویزارد است، ۱۹ کوئری بیشتر در صفحه خانه فارسی، و این که صفحه‌های مانده بعد از غیرفعال‌شدن افزونه راست‌چین و با برچسب زبان فارسی نمایش داده می‌شوند.

TranslatePress را وقتی انتخاب کنید که می‌خواهید همان صفحه‌ای را که می‌بینید ترجمه کنید و کلید زبان و منوی انگلیسی خودشان بیایند. هزینه‌اش این است که سایت انگلیسی تا وقتی افزونه هست وجود دارد، عنوان و نشانی به افزونه جانبی SEO Pack احتیاج دارد، و در قالب ما به صفحه خانه فارسی ۲۸٬۷۳۱ بایت اضافه شد.

هر کدام را اول روی کپی سایت امتحان کنید؛ روش کپی را در بروزرسانی وردپرس روی کپی نوشته‌ایم. اگر می‌خواهید سایت دو زبانه را ما بسازیم، صفحه طراحی سایت وردپرسی را ببینید.

پرسش‌های متداول

اگر بعد از نصب Polylang نشانی انگلیسی خطای ۴۰۴ داد چه کنم؟

در نصب آزمایشی ما، هر دو بار که ویزارد Polylang Pro را تمام کردیم، نشانی انگلیسی (site.com/en) خطای ۴۰۴ داد. در اجرای دوم بعد از یک‌بار ذخیره تنظیمات «پیوندهای یکتا» به صفحه خانه انگلیسی هدایت شد.

اگر بعد از نصب Polylang منوی سایت خالی شد چه کنم؟

ما دیدیم که منوی بالای صفحه‌های فارسی بعد از ویزارد خالی بود و با ذخیره فرم «نمایش > فهرست‌ها > مدیریت جایگاه‌ها» برگشت. منوی انگلیسی را باید جدا بسازید و به زبان انگلیسی بدهید.

نشانی صفحه‌های فارسی بعد از نصب افزونه چند زبانه عوض می‌شود؟

در آزمایش ما نه: با هر دو افزونه صفحه‌های فارسی همان نشانی قبلی را نگه داشتند و فقط نشانی انگلیسی پیشوند en گرفت.

افزونه چند زبانه سایت را سنگین می‌کند؟

در آزمایش ما روی صفحه خانه فارسی، Polylang Pro ۵۰۷ بایت و ۱۹ کوئری اضافه کرد و TranslatePress ۲۸٬۷۳۱ بایت (بدون فشرده‌سازی). صفحه انگلیسی TranslatePress در همان قالب ۱۵۹٬۲۲۶ بایت از صفحه انگلیسی Polylang بزرگ‌تر بود.

اگر Polylang را غیرفعال کنم صفحه‌های انگلیسی چه می‌شوند؟

ما دیدیم که صفحه‌های انگلیسی در سایت ماندند و با نشانی بدون پیشوند باز می‌شدند، ولی با lang=fa-IR و dir=rtl نمایش داده شدند. فقط غیرفعال‌کردن را آزمایش کردیم.

با غیرفعال‌کردن TranslatePress ترجمه‌ها از بین می‌روند؟

در این آزمایش (SEO Pack خاموش، ۲۸ رشته ترجمه‌شده) با غیرفعال‌کردن افزونه صفحه انگلیسی از سایت رفت و نشانی انگلیسی خانه ۴۰۴ داد، ولی ۴۶ ردیف در جدول ترجمه در دیتابیس ماند؛ پیش از غیرفعال‌کردن ۲۸ تای آن ترجمه انگلیسی داشت. حذف کامل افزونه را آزمایش نکردیم.

Polylang و TranslatePress تگ hreflang را خودشان می‌گذارند؟

بله، در آزمایش ما هر دو و در صفحه‌های ترجمه‌شده: Polylang دو تگ (fa و en) و TranslatePress چهار تگ (fa-IR، en-US، fa و en). در تنظیمات پیش‌فرض هیچ‌کدام x-default نگذاشت.

تصویر سمانه جعفری
سمانه جعفری
پیشنهاد میکنیم این مقالات را هم بخوانید

دیدگاه یا پرسش خود را بنویسید