المؤلف:
    إنشاء:2026-06-22آخر تحديث:2026-06-22

    الوثائق: دالة comparePaths في intlayer

    الوصف

    تقوم دالة comparePaths بمقارنة عنواني URL أو مسارين للتحقق من تطابقهما مع تجاهل جزء اللغة (locale)، البروتوكول/المضيف، سلسلة الاستعلام (query string)، التجزئة (hash)، والشرطات المائلة الختامية (trailing slashes). إنها الطريقة الموصى بها لتحديد ما إذا كان رابط التنقل يشير إلى الصفحة الحالية — على سبيل المثال لتمييز الرابط النشط — دون الحاجة إلى كتابة منطق التسوية (normalization logic) الخاص بك والذي يكون عرضة للأخطاء.

    داخليًا، تعيد استخدام getPathWithoutLocale لإزالة جزء اللغة، لذلك فهي تحترم وضع التوجيه واللغات التي قمت بتكوينها.

    تُصدّر الحزمة أيضًا الأداة المساعدة الأساسية normalizePath، والتي تُرجع المسار القياسي المستقل عن اللغة والمُستخدم في المقارنة.

    الميزات الرئيسية:

    • مقارنة مستقلة عن اللغة (/ar/about يتطابق مع /about)
    • تعمل مع كل من عناوين URL المطلقة والمسارات النسبية
    • تتجاهل سلسلة الاستعلام، التجزئة، والشرطات المائلة الختامية
    • تتسامح مع غياب الشرطات المائلة البادئة والقيم الفارغة (يتم تسويتها إلى /)
    • خفيفة الوزن — مبنية على getPathWithoutLocale

    توقيع الدالة

    typescript
    comparePaths(  pathname: string,  // مطلوب  href: string,      // مطلوب  locales?: Locales[] // اختياري): booleannormalizePath(  inputUrl: string,   // مطلوب  locales?: Locales[] // اختياري): string

    المعلمات (Parameters)

    • pathname: string

      • الوصف: سلسلة URL الأولى أو المسار الأول للمقارنة (عادةً ما يكون المسار الحالي).
      • النوع: string
      • مطلوب: نعم
    • href: string

      • الوصف: سلسلة URL الثانية أو المسار الثاني للمقارنة (عادةً ما يكون href لرابط التنقل).
      • النوع: string
      • مطلوب: نعم
    • locales: Locales[]

      • الوصف: مصفوفة اختيارية للغات المدعومة. يتم افتراض اللغات المكوّنة في المشروع.
      • النوع: Locales[]
      • مطلوب: لا (اختياري)

    الإرجاع (Returns)

    • النوع: boolean
    • الوصف: true عندما يتم حل كلا الإدخالين إلى نفس المسار المستقل عن اللغة، وإلا false.

    مثال على الاستخدام

    الاستخدام الأساسي

    typescript
    import { comparePaths } from "intlayer";
    
    comparePaths("/ru/path", "/path"); // true
    comparePaths("/ru/path/", "/path"); // true
    comparePaths("/ru/path", "/path/"); // true
    comparePaths("/ru/", "/"); // true
    comparePaths("/ru", "/"); // true
    comparePaths("ru/path", "/path"); // true
    comparePaths("", "/"); // true
    comparePaths("/ru", ""); // true
    comparePaths("/ru/path", "/other"); // false

    عناوين URL المطلقة والنسبية

    typescript
    import { comparePaths } from "intlayer";comparePaths("https://example.com/ru/path", "/path"); // true

    تمييز رابط التنقل النشط

    tsx
    import { comparePaths } from "intlayer";import { useLocation } from "react-router";const NavLink = ({ href, children }) => {  const { pathname } = useLocation();  const isActive = comparePaths(pathname, href);  return (    <a href={href} aria-current={isActive ? "page" : undefined}>      {children}    </a>  );};

    normalizePath

    تقوم normalizePath بإرجاع المسار القياسي والمستقل عن اللغة الذي تستخدمه comparePaths. تقوم بإزالة جزء اللغة، البروتوكول/المضيف، سلسلة الاستعلام، والتجزئة، وتضمن وجود شرطة مائلة بادئة واحدة، وتزيل أي شرطات مائلة ختامية (باستثناء الجذر)، وتستخدم / كقيمة احتياطية للقيم الفارغة.

    typescript
    import { normalizePath } from "intlayer";
    
    normalizePath("/ru/path"); // "/path"
    normalizePath("/ru/path/"); // "/path"
    normalizePath("ru/path"); // "/path"
    normalizePath("/ru/"); // "/"
    normalizePath("/ru"); // "/"
    normalizePath(""); // "/"
    normalizePath("https://example.com/ru/path"); // "/path"

    دوال ذات صلة


    TypeScript

    typescript
    function normalizePath(inputUrl: string, locales?: Locales[]): string;function comparePaths(  pathname: string,  href: string,  locales?: Locales[]): boolean;