پرش به محتوای اصلی
پرایم‌دِو
فرانت‌اند۹ دقیقه مطالعه

سایت دوزبانه با Next.js: درس‌هایی از پیاده‌سازی فارسی و RTL

نیلوفر احمدیمهندس فرانت‌اند

پشتیبانی واقعی از فارسی چیزی بیشتر از dir="rtl" است. در این یادداشت تجربه‌ی ما از چند پروژه‌ی دوزبانه را خلاصه می‌کنیم.

قانون اول: هیچ رشته‌ای در کامپوننت نباشد

همه‌ی متن‌ها — حتی برچسب‌های دسترس‌پذیری و پیام‌های خطا — باید از کاتالوگ ترجمه بیایند. ما از next-intl استفاده می‌کنیم و در CI با یک اسکریپت، وجود رشته‌ی هاردکد در JSX را خطا اعلام می‌کنیم.

قانون دوم: خصوصیت‌های منطقی CSS

به‌جای margin-left از margin-inline-start استفاده کنید؛ به‌جای left از inset-inline-start. با این کار، چیدمان بدون حتی یک شرط، در هر دو جهت درست است. آیکون‌های جهت‌دار (فلش‌ها) تنها استثنا هستند که با rtl:rotate-180 برمی‌گردند.

قانون سوم: اعداد و تاریخ‌ها بومی

تاریخ شمسی با Intl.DateTimeFormat('fa-IR-u-ca-persian') و ارقام فارسی با Intl.NumberFormat('fa-IR') به‌صورت استاندارد و بدون کتابخانه‌ی اضافه در دسترس‌اند.

نتیجه؟ سایتی که برای کاربر فارسی‌زبان «ترجمه‌شده» حس نمی‌شود؛ از اول فارسی است.