معمارية اللغات المتعددة ودعم RTL/LTR الأصيل
دليل متكامل لتوسيع اللغات وإدارة اتجاهات النصوص في المتجر بسلاسة.
1. إضافة لغة جديدة للمنظومة
خطوات بسيطة لإضافة أي لغة جديدة عبر ملف routing.ts وملف الترجمة messages.
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> )}2. قواعد تصميم الواجهات ثنائية الاتجاه
استخدام فئات Tailwind المنطقية وتفادي القيم الثابتة لليسار واليمين.
messages/fa.json
json{ "Index": { "title": "مستندات Loomix", "subtitle": "راهنمای جامع ساخت پلتفرمهای تجارت الکترونیک ماژولار." }, "Cart": { "title": "سبد خرید شما", "checkout": "ادامه فرآیند خرید" }}3. التخزين المؤقت الذكي للصفحات متعددة اللغات
يقوم Next.js 16 بتوليد وتخزين صفحات HTML استاتيكية منفصلة لكل لغة، مما يضمن أقصى سرعة تسليم عبر شبكة CDN.
تكوين generateStaticParams للغات المتعددة
bashexport function generateStaticParams() { return routing.locales.map((locale) => ({ locale }));}- توليد مسبق لجميع الصفحات الثابتة بلغات المتجر الـ 7.
- تحديث فوري عند طلب إعادة التحقق دون التأثير على بقية اللغات.