Autor:
    Criação:2026-06-22Última atualização:2026-06-22

    Documentação: Função comparePaths em intlayer

    Descrição

    A função comparePaths compara duas URLs ou caminhos para verificar sua igualdade, ignorando o segmento de locale, o protocolo/host, a query string, o hash e as barras finais (trailing slashes). É a maneira recomendada de determinar se um link de navegação aponta para a página atual — por exemplo, para destacar o link ativo — sem ter que criar sua própria lógica de normalização (sujeita a erros).

    Internamente, ela reutiliza getPathWithoutLocale para remover o segmento de locale, de modo que respeita o modo de roteamento e os locales configurados.

    O pacote também exporta o utilitário subjacente normalizePath, que retorna o caminho canônico e independente de locale usado para a comparação.

    Principais Características:

    • Comparação independente de locale (/pt/about corresponde a /about)
    • Funciona com URLs absolutas e caminhos relativos
    • Ignora query string, hash e barras finais
    • Tolera a ausência de barras iniciais e valores vazios (normalizado para /)
    • Leve — construído sobre getPathWithoutLocale

    Assinatura da Função

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

    Parâmetros

    • pathname: string

      • Descrição: A primeira string de URL ou caminho a ser comparada (geralmente o caminho atual).
      • Tipo: string
      • Obrigatório: Sim
    • href: string

      • Descrição: A segunda string de URL ou caminho a ser comparada (geralmente o href de um link de navegação).
      • Tipo: string
      • Obrigatório: Sim
    • locales: Locales[]

      • Descrição: Array opcional de locales suportados. Por padrão, os locales configurados no projeto.
      • Tipo: Locales[]
      • Obrigatório: Não (Opcional)

    Retorno

    • Tipo: boolean
    • Descrição: true quando ambas as entradas resolvem para o mesmo caminho independente de locale, caso contrário false.

    Exemplo 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

    URLs absolutas e relativas

    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 retorna o caminho canônico e independente de locale usado por comparePaths. Ele remove o segmento de locale, o protocolo/host, a query string e o hash, garante uma única barra inicial, remove qualquer barra final (exceto para a raiz) e usa / como fallback para valores vazios.

    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"

    Funções Relacionadas


    TypeScript

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