--- createdAt: 2025-05-20 updatedAt: 2026-11-03 priority: 4 title: כיצד לאחזר את ה-locale מתוך cookies / headers? description: "קרא את ה-locale הנוכחי מתוך עוגיות (cookies) או כותרות הבקשה (headers) באמצעות Intlayer, בצד השרת או ב-middleware, כדי לרנדר את השפה הנכונה." keywords: - cookie - עוגיות - headers - כותרות - intlayer - locale - hook - useLocale - useLocaleCookie - next.js - react-intlayer - vue-intlayer slugs: - frequent-questions - get-locale-cookie author: aymericzip --- # כיצד לאחזר את ה-locale מתוך עוגיות (cookies) / כותרות (headers) ## שימוש ב-Hooks (מומלץ) עבור מרבית תרחישי השימוש, מומלץ לאחזר את ה-locale הנוכחי באמצעות ה-hook‏ `useLocale` מכיוון שהוא נפתר אוטומטית (auto-resolved). זה עובד בדומה ל-composable‏ `useLocale` ב-Vue.js. ```ts import { useLocale } from "next-intlayer"; // או import { useLocale } from "react-intlayer"; // או import { useLocale } from "vue-intlayer"; // שימוש בצד הלקוח (Client-side) const { locale } = useLocale(); ``` עבור רכיבי שרת (Server Components), ניתן לייבא אותו מתוך: ```tsx import { useLocale } from "next-intlayer/server"; const Test = () => { const { locale } = useLocale(); return <>{locale}; }; const Page = async ({ params }) => { const { locale } = await params; return ( ); }; ``` קיים גם ה-hook‏ `useLocaleCookie` שפותר אך ורק את ערך ה-cookie. ## הגדרת Cookie ידנית ניתן להגדיר שם cookie מותאם אישית באופן הבא: ```ts import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { middleware: { cookieName: "myCustomLocaleCookie", // ברירת המחדל היא 'intlayer-locale' }, }; export default config; ``` ולאחר מכן לאחזר אותו כך: ### צד הלקוח (Client-side) ```ts // שימוש בשם ה-cookie המוגדר כברירת מחדל const locale = document.cookie .split("; ") .find((row) => row.startsWith("intlayer-locale=")) ?.split("=")[1]; // שימוש בשם cookie מותאם אישית const locale = document.cookie .split("; ") .find((row) => row.startsWith("myCustomLocaleCookie=")) ?.split("=")[1]; ``` ### צד השרת (Next.js) ```ts import { cookies } from "next/headers"; // שימוש בשם ה-cookie המוגדר כברירת מחדל const locale = cookies().get("intlayer-locale")?.value; // שימוש בשם cookie מותאם אישית const locale = cookies().get("myCustomLocaleCookie")?.value; ``` ### אם ה-locale עדיין לא הוגדר ה-locale נשמר כ-cookie רק לאחר שהמשתמש בוחר במפורש את ה-locale. כברירת מחדל, עבור מבקרים חדשים, ה-locale מפוענח מתוך שדות ה-headers. ניתן לזהות את ה-locale המועדף על המשתמש מתוך כותרות הבקשה (request headers). להלן דוגמה כיצד לטפל בכך: ```ts /** * מזהה את ה-locale מתוך כותרות הבקשה * * כותרת ה-accept-language היא החשובה ביותר לזיהוי locale. * היא מכילה רשימת קודי שפה עם ערכי איכות (q-values) המציינים * את השפות המועדפות על המשתמש לפי סדר עדיפות. * * דוגמה: "en-US,en;q=0.9,fr;q=0.8,es;q=0.7" * - en-US היא השפה הראשית (משתמע q=1.0) * - en היא האפשרות השנייה (q=0.9) * - fr היא האפשרות השלישית (q=0.8) * - es היא האפשרות הרביעית (q=0.7) */ import { localeDetector } from "@intlayer/core"; /** * דוגמה לכותרות negotiator שדפדפנים שולחים בדרך כלל * כותרות אלו מסייעות לקבוע את השפה המועדפת על המשתמש */ const exampleNegotiatorHeaders: Record = { "accept-language": "en-US,en;q=0.9,fr;q=0.8,es;q=0.7", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", }; // דוגמת שימוש: const detectedLocale = localeDetector(exampleNegotiatorHeaders); ```