생성:2025-11-16마지막 업데이트:2025-11-16

    문서: intlayergetPrefix 함수

    설명

    getPrefix 함수는 라우팅 모드 설정에 따라 주어진 로케일의 URL 접두사를 결정합니다. 로케일을 기본 로케일과 비교하고, 유연한 URL 구성을 위해 세 가지 다른 접두사 형식을 포함하는 객체를 반환합니다.

    주요 기능:

    • 첫 번째 매개변수로 로케일을 받음 (필수)
    • defaultLocalemode를 포함하는 선택적 options 객체
    • prefixlocalePrefix 속성을 가진 객체를 반환
    • 모든 라우팅 모드 지원: prefix-no-default, prefix-all, no-prefix, search-params
    • 로케일 접두사를 추가할 시점을 결정하는 가벼운 유틸리티

    함수 시그니처

    getPrefix(
      locale: Locales,               // 필수
      options?: {                    // 선택적
        defaultLocale?: Locales;
        mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params';
      }
    ): GetPrefixResult
    
    type GetPrefixResult = {
      prefix: string;   // 예: 'fr/' 또는 ''
      localePrefix?: Locale; // 예: 'fr' 또는 undefined
    }

    매개변수

    • locale: Locales

      • 설명: 접두사를 생성할 로케일입니다. 값이 falsy(정의되지 않음, null, 빈 문자열)인 경우 함수는 빈 문자열을 반환합니다.
      • 타입: Locales
      • 필수: 예
    • options?: object

      • 설명: 접두사 결정에 대한 구성 객체입니다.
      • 타입: object
      • 필수: 아니요 (선택 사항)

      • options.defaultLocale?: Locales

        • 설명: 애플리케이션의 기본 로케일입니다. 제공되지 않으면 프로젝트 구성에서 설정된 기본 로케일을 사용합니다.
        • 타입: Locales
        • 기본값: 프로젝트 구성
      • options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'

    • 설명: 로케일 처리를 위한 URL 라우팅 모드입니다. 제공되지 않으면 프로젝트 구성에서 설정된 모드를 사용합니다.
    • 타입: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'
    • 기본값: 프로젝트 구성
    • 모드:
      • prefix-no-default: 로케일이 기본 로케일과 일치할 때 빈 문자열을 반환합니다.
      • prefix-all: 기본 로케일을 포함한 모든 로케일에 대해 접두사를 반환합니다.
      • no-prefix: 빈 문자열을 반환합니다 (URL에 접두사가 없음).
      • search-params: 빈 문자열을 반환합니다 (로케일이 쿼리 매개변수에 있음).

    반환값

    • 타입: GetPrefixResult
    • 설명: 세 가지 다른 접두사 형식을 포함하는 객체:
      • prefix: 후행 슬래시가 포함된 경로 접두사 (예: 'fr/', '')
      • localePrefix: 슬래시가 없는 로케일 식별자 (예: 'fr', undefined)

    사용 예제

    기본 사용법

    import { getPrefix, Locales } from "intlayer";
    
    // 영어 로케일에 대한 접두사 확인
    getPrefix(Locales.ENGLISH, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-all",
    });
    // 반환: { prefix: 'en/', localePrefix: 'en' }
    
    // 프랑스어 로케일에 대한 접두사 확인
    getPrefix(Locales.FRENCH, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    // 반환: { prefix: 'fr/', localePrefix: 'fr' }

    다양한 라우팅 모드

    import { getPrefix, Locales } from "intlayer";
    
    // prefix-all: 항상 prefix를 반환
    getPrefix(Locales.ENGLISH, {
      mode: "prefix-all",
      defaultLocale: Locales.ENGLISH,
    });
    // 반환: { prefix: '/en', localePrefix: 'en' }
    
    // prefix-no-default: 로케일이 기본값과 일치할 때는 prefix 없음
    getPrefix(Locales.ENGLISH, {
      mode: "prefix-no-default",
      defaultLocale: Locales.ENGLISH,
    });
    // 반환: { prefix: '', localePrefix: undefined }
    
    javascript;
    // prefix-no-default: 기본 로케일과 다를 경우 접두사를 반환합니다.
    getPrefix(Locales.FRENCH, {
      mode: "prefix-no-default",
      defaultLocale: Locales.ENGLISH,
    });
    // 반환값: { prefix: 'fr/', localePrefix: 'fr' }
    
    // no-prefix & search-params: 절대 접두사를 반환하지 않습니다.
    getPrefix(Locales.ENGLISH, { mode: "no-prefix" });
    // 반환값: { prefix: '', localePrefix: undefined }
    
    getPrefix(Locales.ENGLISH, { mode: "search-params" });
    // 반환값: { prefix: '', localePrefix: undefined }

    실용적인 예제

    import { getPrefix, Locales } from "intlayer";
    
    // 특정 로케일에 적합한 접두사를 사용하여 URL을 생성합니다.
    const locale = Locales.FRENCH;
    const { prefix, localePrefix } = getPrefix(locale, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    
    typescript;
    // 경로 구성을 위한 prefix 사용
    const url1 = `/${prefix}about`.replace(/\/+/g, "/");
    // 결과: "/fr/about"
    
    // locale 식별을 위한 localePrefix 사용
    console.log(`현재 로케일: ${localePrefix}`);
    // 출력: "현재 로케일: fr"

    관련 함수


    TypeScript

    type GetPrefixResult = {
      prefix: string; // 슬래시가 포함된 경로 접두사 (예: 'fr/' 또는 '')
      localePrefix?: Locale; // 슬래시 없이 로케일 식별자 (예: 'fr' 또는 undefined)
    };
    
    function getPrefix(
      locale: Locales,
      options?: {
        defaultLocale?: Locales;
        mode?: "prefix-no-default" | "prefix-all" | "no-prefix" | "search-params";
      }
    ): GetPrefixResult;