כיצד להגדיר ניתוב מבוסס דומיין עם Intlayer במקום נתיבי /[locale]/?
תשובה קצרה
ניתוב מבוסס דומיין פשוט יותר מניתוב מבוסס נתיב (example.com/[locale]/), מכיוון שניתן לוותר על כל הגדרות ה-middleware והניתוב. כל מה שצריך הוא לפרוס את האפליקציה שלך לכל דומיין שפה ולהגדיר משתנה סביבה אחד לכל דומיין.
צעד אחר צעד
- בצע פריסה נפרדת לכל דומיין (
example.com,exemple.fr,ejemplo.es, ...). - בכל פריסה, הגדר את
LOCALE(ואת משתני הסביבה הרגילים של Intlayer) לשפה שאותו דומיין אמור להגיש. - הפנה למשתנה זה כ-
defaultLocaleבקובץintlayer.config.[ts|js].
ts
העתקת קוד
העתקת הקוד ללוח
זה הכל. זה עובד באותו אופן עבור Next.js, Vite + React, Vite + Vue וכו'.
מה אם כל הדומיינים פונים לאותה הפריסה?
אם כל הדומיינים מצביעים על אותו ה-bundle של האפליקציה, תצטרך לזהות את ה-host בזמן ריצה (runtime) ולהעביר את השפה באופן ידני דרך ה-provider.
עבור Next.js
tsx
העתקת קוד
העתקת הקוד ללוח
עבור Vue
ts
העתקת קוד
העתקת הקוד ללוח
החלף את getLocaleFromHostname() בלוגיקת האיתור שלך.
עדכון בורר השפה שלך
כאשר משתמשים בניתוב מבוסס דומיין, החלפת שפה פירושה מעבר לדומיין אחר:
ts
העתקת קוד
העתקת הקוד ללוח
יתרונות של ניתוב מבוסס דומיין
- הגדרה פשוטה יותר: אין צורך להגדיר את
intlayerProxy,generateStaticParams,react-routerאוvue-router. - SEO טוב יותר: לכל שפה יש דומיין משלה.
- כתובות URL נקיות יותר: ללא קידומת שפה בנתיב.
- תחזוקה קלה יותר: פריסת כל שפה מתבצעת באופן עצמאי.