Documentation: getLocalizedUrl Function in intlayer

    Description

    تقوم دالة getLocalizedUrl بإنشاء عنوان URL محلي عن طريق إضافة بادئة اللغة المحددة. فهي تعالج كل من عناوين URL المطلقة والنسبية، مع ضمان تطبيق بادئة اللغة الصحيحة بناءً على التكوين.


    Parameters

    • url: string

      • Description: سلسلة عنوان URL الأصلية التي سيتم إضافة بادئة اللغة إليها.
      • Type: string
    • currentLocale: Locales

      • Description: اللغة الحالية التي يتم تخصيص عنوان URL لها.
      • Type: Locales
    • locales: Locales[]

      • Description: مصفوفة اختيارية من اللغات المدعومة. بشكل افتراضي، يتم توفير اللغات المكونة في المشروع.
      • Type: Locales[]
      • Default: Project Configuration
    • defaultLocale: Locales

      • Description: اللغة الافتراضية للتطبيق. بشكل افتراضي، يتم توفير اللغة الافتراضية المكونة في المشروع.
      • Type: Locales
      • Default: Project Configuration
    • prefixDefault: boolean

      • Description: ما إذا كان يجب إضافة بادئة للغة الافتراضية. بشكل افتراضي، يتم توفير القيمة المكونة في المشروع.
      • Type: boolean
      • Default: Project Configuration

    Returns

    • Type: string
    • Description: عنوان URL المحلي للغة المحددة.

    Example Usage

    Relative URLs

    typescript
    import { getLocalizedUrl, Locales } from "intlayer";getLocalizedUrl(  "/about",  Locales.FRENCH,  [Locales.ENGLISH, Locales.FRENCH],  Locales.ENGLISH,  false);// Output: "/fr/about" للغة الفرنسية// Output: "/about" للغة الافتراضية (الإنجليزية)

    Absolute URLs

    typescript
    getLocalizedUrl(  "https://example.com/about",  Locales.FRENCH, // اللغة الحالية  [Locales.ENGLISH, Locales.FRENCH], // اللغات المدعومة  Locales.ENGLISH, // اللغة الافتراضية  false // بادئة اللغة الافتراضية); // Output: "https://example.com/fr/about" للغة الفرنسيةgetLocalizedUrl(  "https://example.com/about",  Locales.ENGLISH, // اللغة الحالية  [Locales.ENGLISH, Locales.FRENCH], // اللغات المدعومة  Locales.ENGLISH, // اللغة الافتراضية  false // بادئة اللغة الافتراضية); // Output: "https://example.com/about" للغة الإنجليزيةgetLocalizedUrl(  "https://example.com/about",  Locales.ENGLISH, // اللغة الحالية  [Locales.ENGLISH, Locales.FRENCH], // اللغات المدعومة  Locales.ENGLISH, // اللغة الافتراضية  true // بادئة اللغة الافتراضية); // Output: "https://example.com/en/about" للغة الإنجليزية

    Unsupported Locale

    typescript
    getLocalizedUrl(  "/about",  Locales.ITALIAN, // اللغة الحالية  [Locales.ENGLISH, Locales.FRENCH], // اللغات المدعومة  Locales.ENGLISH // اللغة الافتراضية); // Output: "/about" (لا توجد بادئة مضافة للغة غير المدعومة)

    Edge Cases

    • No Locale Segment:

      • إذا لم يحتوي عنوان URL على أي جزء من اللغة، تقوم الدالة بإضافة بادئة اللغة المناسبة بأمان.
    • Default Locale:

      • عندما تكون prefixDefault تساوي false، لا تضيف الدالة بادئة إلى عنوان URL للغة الافتراضية.
    • Unsupported Locales:

      • بالنسبة للغات التي لا ترد في locales، لا تضيف الدالة أي بادئة.

    Usage in Applications

    في تطبيق متعدد اللغات، يعتبر تكوين إعدادات التدويل باستخدام locales و defaultLocale أمرًا حاسمًا لضمان عرض اللغة الصحيحة. أدناه مثال على كيفية استخدام getLocalizedUrl في إعداد التطبيق:

    tsx
    import { Locales, type IntlayerConfig } from "intlayer";// تكوين اللغات المدعومة واللغة الافتراضيةexport default {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },} satisfies IntlayerConfig;export default config;

    تضمن الإعدادات أعلاه أن يتعرف التطبيق على ENGLISH و FRENCH و SPANISH كلغات مدعومة ويستخدم ENGLISH كلغة بديلة.

    باستخدام هذا الإعداد، يمكن لدالة getLocalizedUrl إنشاء عناوين URL محلية ديناميكيًا بناءً على تفضيل لغة المستخدم:

    typescript
    getLocalizedUrl("/about", Locales.FRENCH); // Output: "/fr/about"getLocalizedUrl("/about", Locales.SPANISH); // Output: "/es/about"getLocalizedUrl("/about", Locales.ENGLISH); // Output: "/about"

    من خلال دمج getLocalizedUrl، يمكن للمطورين الحفاظ على هياكل عناوين URL متسقة عبر عدة لغات، مما يعزز تجربة المستخدم وتحسين SEO.

    إذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.

    رابط GitHub للتوثيق