بینالمللیسازی دو زبانه در Next.js با hreflang درست
مسیرهای محلیشده، دیکشنری پیام، RTL/LTR، و سیگنالهای SEO برای سایتهای فارسی–انگلیسی بدون محتوای تکراری گیجکننده.
علی مرتضوی
بنیانگذار پارادایس کد
زبان فقط ترجمه نیست؛ قرارداد URL و محتواست
برای فارسی و انگلیسی، از همان ابتدا تصمیم بگیرید: زیرمسیر (`/fa`, `/en`)، زیردامنه، یا دامنه جدا. برای اکثر محصولات محتوایی، زیرمسیر سادهترین عملیات و قویترین سیگنال یکپارچه را میدهد. هر URL باید یک زبان اصلی داشته باشد—نه مخلوط پنهان.
محتوای ترجمهنشده را با UI ترجمهشده قاطی نکنید؛ یا ترجمه کنید، یا به زبان موجود redirect/fallback شفاف بدهید.
App Router و دیکشنری پیام
پیامها را در دیکشنری نسخهپذیر نگه دارید و کلیدها را معنایی نامگذاری کنید (`cta.getStarted`) نه جملهٔ انگلیسی بریدهبریده. از الحاق خام رشته برای جملات پیچیده بپرهیزید؛ ترتیب واژهها در زبانها عوض میشود.
تاریخ، عدد و پول را با `Intl` محلی کنید. فرض «همه مثل انگیسی میخوانند» در فارسی سریع میشکند.
RTL، تایپوگرافی و کامپوننتها
جهت را در سطح سند/`dir` تنظیم کنید و فاصلهها را منطقی (`margin-inline`) بنویسید تا آینهسازی نشکند. آیکونهای جهتدار را برای RTL بررسی کنید. دیزاینسیستم باید هر دو جهت را در Story ببیند.
فونت فارسی و لاتین را جدا بودجه کنید؛ فونت سنگین دوزبانه LCP را میکشد اگر درست subset/preload نشود.
hreflang و canonical دو زبانه
برای هر جفت صفحه، لینکهای hreflang دوطرفه و خودارجاع بگذارید و `x-default` را برای نسخهٔ پیشفرض انتخابیتان تعریف کنید. canonical هر صفحه به خودش در همان زبان اشاره کند—نه به ترجمه.
صفحات یتیم بدون جفت ترجمه یا باید noindex شوند یا از خوشه hreflang خارج بمانند با دلیل روشن.
سئوی محتوایی در دو زبان
ترجمهٔ ماشینی خام بدون ویرایش، سیگنال کیفیت را خراب میکند. intent جستجوی فارسی و انگلیسی یکی نیست؛ کلمهٔ کلیدی را محلی تحقیق کنید نه فقط ترجمه کنید. متا و عنوان را جدا بهینه کنید.
لینک داخلی داخل همان زبان بماند؛ پرش تصادفی زبان کاربر را گیج و ربات را دربارهٔ نسخهٔ اصلی مردد میکند.
آزمون و عرضه
چکلیست لانچ: مسیرها، alternate لینکها، RTL روی فرمها، و اسکرینشات دو زبانه در preview. در Search Console هر دو نسخه را پوشش دهید و خطاهای hreflang را مثل باگ پروداکشن ببندید.
i18n خوب دیده نمیشود—تا وقتی که بد باشد و اعتماد برند را در بازار دوم بسوزاند.
سؤالات متداول
fallback زبان را چطور انجام دهیم؟
اگر ترجمه نبود، یا به زبان پیشفرض با اعلام شفاف بروید یا صفحهٔ «هنوز ترجمه نشده» بدهید—محتوای نیمهزبان قاطی نکنید.
آیا ترجمه خودکار برای SEO کافی است؟
بهندرت. برای صفحات پولساز ویرایش انسانی و تطبیق intent لازم است.
زبان را در cookie ذخیره کنیم یا فقط URL؟
منبع حقیقت برای SEO باید URL باشد. Cookie/header برای پیشنهاد اولیه خوب است، نه برای پنهان کردن زبان از ربات.
دانش و مقالات
نیاز به اجرای همین مفاهیم در محصولتان دارید؟
پارادایس کد از مشاوره تا پیادهسازی کامل کنار شماست.