چندزبانی و پشتیبانی راستچین (RTL / LTR)
فرانتاند Next.js پروژه به گونهای پیادهسازی شده است که به صورت نیتیو از زبانهای راستچین (فارسی/عربی) و چپچین (انگلیسی) با استفاده از کتابخانه next-intl پشتیبانی میکند.
تنظیم Direction و Locales در Next.js
تنظیم ویژگی dir بر اساس زبان فعال در فایل src/app/[locale]/layout.tsx:
src/app/[countryCode]/layout.tsx
typescriptimport { NextIntlClientProvider } from "next-intl"import { getMessages } from "next-intl/server"import { isRtlLocale } from "@lib/util/is-rtl" export default async function StoreLayout({ children, params,}: { children: React.ReactNode params: Promise<{ countryCode: string }>}) { const { countryCode } = await params const messages = await getMessages() const isRtl = isRtlLocale() const dir = isRtl ? "rtl" : "ltr" return ( <html lang={countryCode} dir={dir}> <body className={isRtl ? "font-vazirmatn" : "font-inter"}> <NextIntlClientProvider messages={messages}> {children} </NextIntlClientProvider> </body> </html> )}ساختار فایلهای ترجمه (messages)
فایلهای کلید-مقدار ترجمه در پوشه messages/ قرار دارند:
messages/fa.json
json{ "Index": { "title": "مستندات Loomix", "subtitle": "راهنمای جامع ساخت پلتفرمهای تجارت الکترونیک ماژولار." }, "Cart": { "title": "سبد خرید شما", "checkout": "ادامه فرآیند خرید" }}تنظیمات متغیرهای محیطی (Environment Variables)
جهت تنظیمات پیشفرض زبان و منطقه در پروژهی Store، باید متغیرهای زیر در فایل .env تنظیم شوند:
.env
bash# منطقه پیشفرض در صورت عدم تشخیص از Header هاNEXT_PUBLIC_DEFAULT_REGION=IR # زبان پیشفرض فروشگاهDEFAULT_LOCALE=fa-IR- NEXT_PUBLIC_DEFAULT_REGION: برای تعیین کشور پیشفرض کاربر در مواردی که امکان شناسایی آن از طریق Headerها (مثلاً
x-vercel-country) وجود نداشته باشد استفاده میشود (مانندIRبرای ایران). - DEFAULT_LOCALE: تعیینکننده زبان پیشفرض فرانتاند است که در اینجا
fa-IRبرای زبان فارسی در نظر گرفته شده است.