ثبت سفارش

تبدیل CSS چپ‌چین به راست‌چین

CSS قالب انگلیسی را بچسبان تا نسخه‌ی راست‌چین آن را بگیری؛ با جابه‌جایی چپ و راست، یا تبدیل به logical properties که برای هر دو جهت کار می‌کند.

CSS چپ‌چین (ورودی)

CSS راست‌چین (خروجی)

همه‌چیز داخل مرورگر خودت پردازش می‌شود و هیچ فایل یا کدی به سرور فرستاده نمی‌شود.

چرا CSS قالب انگلیسی در سایت فارسی به هم می‌ریزد؟

قالب‌های انگلیسی برای جهت چپ به راست نوشته شده‌اند. وقتی محتوا فارسی می‌شود و dir="rtl" روی صفحه قرار می‌گیرد، متن‌ها راست‌چین می‌شوند ولی هر جایی که در CSS صریحاً left یا right نوشته شده، سر جایش می‌ماند. نتیجه: فاصله‌ها برعکس، آیکن‌ها در سمت اشتباه، منوی کشویی بیرون از صفحه و حاشیه‌ی رنگی در طرف غلط کارت‌ها.

این ابزار همه‌ی این موارد را در CSS پیدا و برعکس می‌کند:

  • ویژگی‌های جهت‌دار: margin-left، padding-right، border-left، left و right
  • مقدارها: float، clear، text-align، background-position، direction
  • مقدارهای چهارتایی margin، padding، inset، border-width و ترتیب گوشه‌های border-radius
  • گوشه‌ها مثل border-top-left-radius
  • جهت افقی box-shadow، text-shadow و translateX
  • نشانگرهای e-resize و w-resize

دو روش راست‌چین کردن CSS

۱. جابه‌جایی چپ و راست (flip)

هر left به right تبدیل می‌شود و برعکس. خروجی یک فایل CSS جداگانه برای نسخه‌ی فارسی است. این روش برای سایت‌هایی که فقط فارسی‌اند یا قالب‌های آماده‌ای که باید سریع راست‌چین شوند ساده‌ترین راه است.

۲. Logical properties؛ یک CSS برای هر دو جهت

در CSS مدرن به‌جای چپ و راست از «شروع» و «پایان» استفاده می‌شود. margin-inline-start در صفحه‌ی انگلیسی یعنی چپ و در صفحه‌ی فارسی یعنی راست؛ مرورگر خودش با توجه به dir تصمیم می‌گیرد:

.card {
  margin-inline-start: 20px;
  padding-inline-end: 12px;
  border-inline-start: 3px solid;
  text-align: start;
}

این روش برای سایت‌های دوزبانه بهترین انتخاب است، چون دیگر لازم نیست دو فایل CSS نگه داری. همه‌ی مرورگرهای امروزی از logical properties پشتیبانی می‌کنند.

بعد از تبدیل چه چیزهایی را دستی چک کنم؟

  • آیکن‌های جهت‌دار: فلش «بعدی» و «قبلی» باید آینه شوند؛ با [dir="rtl"] .icon-arrow { transform: scaleX(-1); }
  • اسلایدر و کاروسل: کتابخانه‌هایی مثل Swiper گزینه‌ی RTL جدا دارند.
  • کد جاوااسکریپت: محاسبه‌هایی مثل scrollLeft یا موقعیت منوهای کشویی در JS با CSS عوض نمی‌شوند.
  • فونت: فونت انگلیسی قالب را با یک فونت فارسی مثل وزیرمتن جایگزین کن و line-height را کمی بیشتر کن.
  • اعداد و کدها: شماره تلفن، کد تخفیف و ایمیل باید با dir="ltr" نمایش داده شوند.

نکته‌های کامل‌تر را در راهنمای راست‌چین کردن سایت نوشته‌ام. اگر قالب HTML یا وردپرس انگلیسی داری و می‌خواهی کامل و دقیق فارسی شود، با من در تماس باش.

سؤال‌های رایج

راست‌چین کردن CSS یعنی چه؟

یعنی همه‌ی ویژگی‌هایی که به چپ و راست وابسته‌اند (مثل margin-left، padding-right، float، text-align و موقعیت left/right) آینه شوند تا چیدمان سایت انگلیسی برای زبان فارسی، عربی یا عبری درست نمایش داده شود.

logical properties چیست و کدام روش را انتخاب کنم؟

logical properties مثل margin-inline-start به‌جای چپ و راست، «شروع» و «پایان» را مشخص می‌کنند و خودشان با dir صفحه هماهنگ می‌شوند. اگر سایت دوزبانه است یا از اول می‌نویسی، logical را انتخاب کن تا یک CSS برای هر دو جهت کار کند. اگر فقط نسخه‌ی فارسی لازم است یا باید با مرورگرهای خیلی قدیمی سازگار باشد، روش جابه‌جایی چپ و راست ساده‌تر است.

فقط dir="rtl" گذاشتن کافی نیست؟

نه. dir="rtl" جهت متن و ترتیب آیتم‌های flex و grid را برمی‌گرداند، اما مقدارهایی که صریحاً با left و right نوشته شده‌اند (margin-left، position، float، text-align و…) همان‌طور می‌مانند و چیدمان به هم می‌ریزد.

کامنت @noflip چه کار می‌کند؟

اگر قبل از یک خط این کامنت را بگذاری، آن خط دست‌نخورده می‌ماند. برای مواردی مثل لوگو، نمودار، شماره تلفن یا آیکن‌هایی که نباید آینه شوند کاربرد دارد. همین قرارداد در ابزارهایی مثل RTLCSS هم استفاده می‌شود.

آیکن‌های فلش هم باید برعکس شوند؟

آیکن‌هایی که جهت را نشان می‌دهند (فلش بعدی و قبلی، بازگشت) بله؛ این کار معمولاً با transform: scaleX(-1) در حالت [dir="rtl"] انجام می‌شود. آیکن‌هایی مثل پخش ویدیو، ساعت یا لوگوها نباید برعکس شوند.

طرح فیگما یا XD داری و کد تمیز و دقیق می‌خواهی؟ پیاده‌سازی راست‌چین دقیق طرح ←
زمان و قیمت ثبت سفارش