Création:2025-11-16Dernière mise à jour:2025-11-16

    Documentation : Fonction getPrefix dans intlayer

    Description

    La fonction getPrefix détermine le préfixe d’URL pour une locale donnée en fonction de la configuration du mode de routage. Elle compare la locale avec la locale par défaut et retourne un objet contenant trois formats de préfixe différents pour une construction flexible des URL.

    Fonctionnalités clés :

    • Prend une locale en premier paramètre (obligatoire)
    • Objet options optionnel avec defaultLocale et mode
    • Retourne un objet avec les propriétés prefix et localePrefix
    • Supporte tous les modes de routage : prefix-no-default, prefix-all, no-prefix et search-params
    • Utilitaire léger pour déterminer quand ajouter les préfixes de locale

    Signature de la fonction

    getPrefix(
      locale: Locales,               // Obligatoire
      options?: {                    // Optionnel
        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 undefined
    }

    Paramètres

    • locale: Locales

      • Description : La locale pour laquelle générer le préfixe. Si la valeur est falsy (undefined, null, chaîne vide), la fonction retourne une chaîne vide.
      • Type : Locales
      • Obligatoire : Oui
    • options?: object

      • Description : Objet de configuration pour la détermination du préfixe.
      • Type : object
      • Obligatoire : Non (Optionnel)

      • options.defaultLocale?: Locales

        • Description : La locale par défaut de l'application. Si non fournie, utilise la locale par défaut configurée dans la configuration de votre projet.
        • Type : Locales
        • Défaut : Configuration du projet
      • options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'

        • Description : Le mode de routage URL pour la gestion des locales. Si non fourni, utilise le mode configuré dans la configuration de votre projet.
        • Type : 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'
        • Défaut : Configuration du projet
        • Modes :
          • prefix-no-default : Retourne des chaînes vides lorsque la locale correspond à la locale par défaut
          • prefix-all : Retourne un préfixe pour toutes les locales, y compris la locale par défaut
          • no-prefix : Retourne des chaînes vides (pas de préfixe dans les URLs)
          • search-params : Retourne des chaînes vides (locale dans les paramètres de requête)

    Retourne

    • Type : GetPrefixResult
    • Description : Un objet contenant trois formats de préfixes différents :
      • prefix : Le préfixe de chemin avec une barre oblique finale (par exemple, 'fr/', '')
      • localePrefix : L'identifiant de la locale sans barres obliques (par exemple, 'fr', undefined)

    Exemple d'utilisation

    Utilisation basique

    import { getPrefix, Locales } from "intlayer";
    
    // Vérifier le préfixe pour la locale anglaise
    getPrefix(Locales.ENGLISH, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-all",
    });
    // Retourne : { prefix: 'en/', localePrefix: 'en' }
    
    // Vérifier le préfixe pour la locale française
    getPrefix(Locales.FRENCH, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    // Retourne : { prefix: 'fr/', localePrefix: 'fr' }

    Différents modes de routage

    import { getPrefix, Locales } from "intlayer";
    
    // prefix-all : Retourne toujours un préfixe
    getPrefix(Locales.ENGLISH, {
      mode: "prefix-all",
      defaultLocale: Locales.ENGLISH,
    });
    // Retourne : { prefix: '/en', localePrefix: 'en' }
    
    // prefix-no-default : Pas de préfixe lorsque la locale correspond à la locale par défaut
    getPrefix(Locales.ENGLISH, {
      mode: "prefix-no-default",
      defaultLocale: Locales.ENGLISH,
    });
    // Retourne : { prefix: '', localePrefix: undefined }
    
    // prefix-no-default : Retourne un préfixe lorsque la locale diffère de la locale par défaut
    getPrefix(Locales.FRENCH, {
      mode: "prefix-no-default",
      defaultLocale: Locales.ENGLISH,
    });
    // Retourne : { prefix: 'fr/', localePrefix: 'fr' }
    
    // no-prefix & search-params : Ne retourne jamais de préfixe
    getPrefix(Locales.ENGLISH, { mode: "no-prefix" });
    // Retourne : { prefix: '', localePrefix: undefined }
    
    getPrefix(Locales.ENGLISH, { mode: "search-params" });
    // Retourne : { prefix: '', localePrefix: undefined }

    Exemple pratique

    import { getPrefix, Locales } from "intlayer";
    
    // Construire des URLs avec le préfixe approprié pour une locale spécifique
    const locale = Locales.FRENCH;
    const { prefix, localePrefix } = getPrefix(locale, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    
    // // Utilisation du préfixe pour la construction du chemin
    const url1 = `/${prefix}about`.replace(/\/+/g, "/");
    // Résultat : "/fr/about"
    
    // Utilisation de localePrefix pour l'identification de la locale
    console.log(`Locale actuelle : ${localePrefix}`);
    // Sortie : "Locale actuelle : fr"

    Fonctions associées


    TypeScript

    type GetPrefixResult = {
      prefix: string; // Le préfixe de chemin avec une barre oblique finale (ex. : 'fr/' ou '')
      localePrefix?: Locale; // L'identifiant de la locale sans slash (par exemple, 'fr' ou undefined)
    };
    
    function getPrefix(
      locale: Locales,
      options?: {
        defaultLocale?: Locales;
        mode?: "prefix-no-default" | "prefix-all" | "no-prefix" | "search-params";
      }
    ): GetPrefixResult;