Criação:2025-11-16Última atualização:2025-11-16

    Documentação: Função getPrefix no intlayer

    Descrição

    A função getPrefix determina o prefixo da URL para um determinado locale com base na configuração do modo de roteamento. Ela compara o locale com o locale padrão e retorna um objeto contendo três formatos diferentes de prefixo para construção flexível de URLs.

    Principais Características:

    • Recebe um locale como primeiro parâmetro (obrigatório)
    • Objeto options opcional com defaultLocale e mode
    • Retorna um objeto com as propriedades prefix e localePrefix
    • Suporta todos os modos de roteamento: prefix-no-default, prefix-all, no-prefix e search-params
    • Utilitário leve para determinar quando adicionar prefixos de locale

    Assinatura da Função

    getPrefix(
      locale: Locales,               // Obrigatório
      options?: {                    // Opcional
        defaultLocale?: Locales;
        mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params';
      }
    ): GetPrefixResult
    
    type GetPrefixResult = {
      prefix: string;   // ex: 'fr/' ou ''
      localePrefix?: Locale; // ex: 'fr' ou indefinido
    }

    Parâmetros

    • locale: Locales

      • Descrição: O locale para o qual gerar o prefixo. Se o valor for falsy (undefined, null, string vazia), a função retorna uma string vazia.
      • Tipo: Locales
      • Obrigatório: Sim
    • options?: object

      • Descrição: Objeto de configuração para determinação do prefixo.
      • Tipo: object
      • Obrigatório: Não (Opcional)

      • options.defaultLocale?: Locales

        • Descrição: O locale padrão para a aplicação. Se não fornecido, usa o locale padrão configurado na configuração do seu projeto.
        • Tipo: Locales
        • Padrão: Configuração do Projeto
      • options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'

        • Descrição: O modo de roteamento da URL para o tratamento do locale. Se não fornecido, usa o modo configurado na configuração do seu projeto.
        • Tipo: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'
        • Padrão: Configuração do Projeto
        • Modos:
          • prefix-no-default: Retorna strings vazias quando o locale corresponde ao locale padrão
          • prefix-all: Retorna prefixo para todos os locales, incluindo o padrão
          • no-prefix: Retorna strings vazias (sem prefixo nas URLs)
          • search-params: Retorna strings vazias (locale nos parâmetros de consulta)

    Retorna

    • Tipo: GetPrefixResult
    • Descrição: Um objeto contendo três formatos diferentes de prefixo:
      • prefix: O prefixo do caminho com barra no final (ex., 'fr/', '')
      • localePrefix: O identificador do locale sem barras (ex., 'fr', undefined)

    Exemplo de Uso

    Uso Básico

    import { getPrefix, Locales } from "intlayer";
    
    // Verifica o prefixo para o locale inglês
    getPrefix(Locales.ENGLISH, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-all",
    });
    // Retorna: { prefix: 'en/', localePrefix: 'en' }
    
    // Verifica o prefixo para o locale francês
    getPrefix(Locales.FRENCH, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    // Retorna: { prefix: 'fr/', localePrefix: 'fr' }

    Modos Diferentes de Roteamento

    import { getPrefix, Locales } from "intlayer";
    
    // prefix-all: Sempre retorna prefixo
    getPrefix(Locales.ENGLISH, {
      mode: "prefix-all",
      defaultLocale: Locales.ENGLISH,
    });
    // Retorna: { prefix: '/en', localePrefix: 'en' }
    
    // prefix-no-default: Sem prefixo quando o locale coincide com o padrão
    getPrefix(Locales.ENGLISH, {
      mode: "prefix-no-default",
      defaultLocale: Locales.ENGLISH,
    });
    // Retorna: { prefix: '', localePrefix: undefined }
    
    // prefix-no-default: Retorna prefixo quando o locale difere do padrão
    getPrefix(Locales.FRENCH, {
      mode: "prefix-no-default",
      defaultLocale: Locales.ENGLISH,
    });
    // Retorna: { prefix: 'fr/', localePrefix: 'fr' }
    
    // no-prefix & search-params: Nunca retorna prefixo
    getPrefix(Locales.ENGLISH, { mode: "no-prefix" });
    // Retorna: { prefix: '', localePrefix: undefined }
    
    getPrefix(Locales.ENGLISH, { mode: "search-params" });
    // Retorna: { prefix: '', localePrefix: undefined }

    Exemplo Prático

    import { getPrefix, Locales } from "intlayer";
    
    // Construir URLs com o prefixo apropriado para um locale específico
    const locale = Locales.FRENCH;
    const { prefix, localePrefix } = getPrefix(locale, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    
    // Usando prefix para construção do caminho
    const url1 = `/${prefix}about`.replace(/\/+/g, "/");
    // Resultado: "/fr/about"
    
    // Usando localePrefix para identificação do locale
    console.log(`Locale atual: ${localePrefix}`);
    // Saída: "Locale atual: fr"

    Funções Relacionadas


    TypeScript

    type GetPrefixResult = {
      prefix: string; // O prefixo do caminho com barra final (ex: 'fr/' ou '')
      localePrefix?: Locale; // O identificador do locale sem barras (ex: 'fr' ou indefinido)
    };
    
    function getPrefix(
      locale: Locales,
      options?: {
        defaultLocale?: Locales;
        mode?: "prefix-no-default" | "prefix-all" | "no-prefix" | "search-params";
      }
    ): GetPrefixResult;