Autor:
    Creación:2026-06-22Última actualización:2026-06-22

    Documentación: Función comparePaths en intlayer

    Descripción

    La función comparePaths compara dos URL o rutas para comprobar su igualdad mientras ignora el segmento de idioma (locale), el protocolo/dominio, la cadena de consulta (query string), el hash y las barras diagonales finales. Es la forma recomendada para determinar si un enlace de navegación apunta a la página actual —por ejemplo, para resaltar el enlace activo— sin tener que implementar tu propia lógica de normalización (propensa a errores).

    Internamente reutiliza getPathWithoutLocale para eliminar el segmento de idioma, por lo que respeta tu modo de enrutamiento y los idiomas configurados.

    El paquete también exporta la utilidad subyacente normalizePath, que devuelve la ruta canónica independiente del idioma utilizada para la comparación.

    Características principales:

    • Comparación independiente del idioma (/es/about coincide con /about)
    • Funciona con URL absolutas y rutas relativas
    • Ignora la cadena de consulta, el hash y las barras diagonales finales
    • Tolera la ausencia de barra oblicua inicial y valores vacíos (normalizado a /)
    • Ligero — construido sobre getPathWithoutLocale

    Firma de la función

    typescript
    comparePaths(  pathname: string,  // Requerido  href: string,      // Requerido  locales?: Locales[] // Opcional): booleannormalizePath(  inputUrl: string,   // Requerido  locales?: Locales[] // Opcional): string

    Parámetros

    • pathname: string

      • Descripción: La primera cadena de URL o ruta a comparar (generalmente la ruta actual).
      • Tipo: string
      • Requerido: Sí
    • href: string

      • Descripción: La segunda cadena de URL o ruta a comparar (generalmente el href de un enlace de navegación).
      • Tipo: string
      • Requerido: Sí
    • locales: Locales[]

      • Descripción: Array opcional de idiomas soportados. Por defecto, los idiomas configurados en el proyecto.
      • Tipo: Locales[]
      • Requerido: No (Opcional)

    Retornos

    • Tipo: boolean
    • Descripción: true cuando ambas entradas se resuelven a la misma ruta independiente del idioma, de lo contrario false.

    Ejemplo de uso

    Uso básico

    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 absolutas y relativas

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

    Resaltar el enlace de navegación activo

    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 devuelve la ruta canónica e independiente del idioma utilizada por comparePaths. Elimina el segmento de idioma, el protocolo/dominio, la cadena de consulta y el hash, asegura una única barra oblicua inicial, elimina cualquier barra diagonal final (excepto en la raíz) y usa / como valor predeterminado para valores vacíos.

    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"

    Funciones relacionadas


    TypeScript

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