Author:
    Creation:2024-08-11Last update:2025-06-29

    рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг: intlayer рдореЗрдВ getMultilingualUrls рдлрд╝рдВрдХреНрд╢рди

    рд╡рд┐рд╡рд░рдг

    getMultilingualUrls рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд░реНрдерд┐рдд locale рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП URL рдХреЛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХрд░рдХреЗ рдмрд╣реБрднрд╛рд╖реА URLs рдХреА рдПрдХ mapping рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд░рдкреЗрдХреНрд╖ рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ рджреЛрдиреЛрдВ URLs рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреБрдХреНрдд locale prefix рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

    рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

    • рдХреЗрд╡рд▓ 1 рдкреИрд░рд╛рдореАрдЯрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: url
    • Optional options рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ locales, defaultLocale, рдФрд░ mode рд╣реИрдВ
    • рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ internationalization рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
    • рдХрдИ routing modes рдХреЛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: prefix-no-default, prefix-all, no-prefix, рдФрд░ search-params
    • рдПрдХ mapping рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА locales keys рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд URLs values рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВ

    рд╡рд┐рд╡рд░рдг

    getMultilingualUrls рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛-рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП URL рдХреЛ рдЙрдкрд╕рд░реНрдЧрд┐рдд рдХрд░рдХреЗ рдмрд╣реБрднрд╛рд╖реА URL рдХрд╛ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреЛрдиреЛрдВ рдкреВрд░реНрдг рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ URL рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреБрдХреНрдд рднрд╛рд╖рд╛-рд╕реНрдерд╛рди рдЙрдкрд╕рд░реНрдЧ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

    рдкреИрд░рд╛рдореАрдЯрд░

    рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░

    • url: string
      • Description: рдореВрд▓ URL string рдЬрд┐рд╕реЗ locales рдХреЗ рд╕рд╛рде prefix рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред
      • Type: string
      • Required: рд╣рд╛рдБ

    рд╡реИрдХрд▓реНрдкрд┐рдХ Parameters

    • options?: object

      • Description: URL localization behavior рдХреЗ рд▓рд┐рдП configuration objectред
      • Type: object
      • Required: No (Optional)

      • options.locales?: Locales[]

        • Description: рд╕рдорд░реНрдерд┐рдд locales рдХреА arrayред рдпрджрд┐ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ project configuration рд╕реЗ configured locales рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
        • Type: Locales[]
        • Default: Project Configuration
      • options.defaultLocale?: Locales

        • Description: application рдХреЗ рд▓рд┐рдП default localeред рдпрджрд┐ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ project configuration рд╕реЗ configured default locale рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
        • Type: Locales
        • Default: Project Configuration
      • options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'

        • Description: locale handling рдХреЗ рд▓рд┐рдП URL routing modeред рдпрджрд┐ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ project configuration рд╕реЗ configured mode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
        • Type: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'
        • Default: Project Configuration
        • Modes:
          • prefix-no-default: Default locale рдХреЗ рд▓рд┐рдП рдХреЛрдИ prefix рдирд╣реАрдВ, рдЕрдиреНрдп рд╕рднреА рдХреЗ рд▓рд┐рдП prefix
          • prefix-all: рд╕рднреА locales рдХреЗ рд▓рд┐рдП prefix, default рд╕рд╣рд┐рдд
          • no-prefix: URL рдореЗрдВ рдХреЛрдИ locale prefix рдирд╣реАрдВ
          • search-params: Locale рдХреЗ рд▓рд┐рдП query parameters рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЬреИрд╕реЗ, ?locale=fr)

    рд░рд┐рдЯрд░реНрдиреНрд╕

    • рдкреНрд░рдХрд╛рд░: IConfigLocales<string>
    • рд╡рд┐рд╡рд░рдг: рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛-рд╕реНрдерд╛рди рдХреЛ рдЙрд╕рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрд╣реБрднрд╛рд╖реА URL рд╕реЗ рдореИрдк рдХрд░рддрд╛ рд╣реИред

    рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ

    рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдпреЛрдЧ (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)

    typescript
    import { getMultilingualUrls, Locales } from "intlayer";
    
    // рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ locales, defaultLocale, рдФрд░ mode рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
    getMultilingualUrls("/dashboard");
    // рдЖрдЙрдЯрдкреБрдЯ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ en, fr рд╣реИ mode 'prefix-no-default' рдХреЗ рд╕рд╛рде):
    // {
    //   en: "/dashboard",
    //   fr: "/fr/dashboard"
    // }
    

    рд╕рд╛рдкреЗрдХреНрд╖ URL

    typescript
    import { getMultilingualUrls, Locales } from "intlayer";
    
    getMultilingualUrls(
      "/dashboard",
      [Locales.ENGLISH, Locales.FRENCH],
      Locales.ENGLISH,
      false
    );
    // рдЖрдЙрдЯрдкреБрдЯ: {
    //   en: "/dashboard",
    //   fr: "/fr/dashboard"
    // }
    

    рдкреВрд░реНрдг URL

    typescript
    getMultilingualUrls(
      "https://example.com/dashboard",
      [Locales.ENGLISH, Locales.FRENCH],
      Locales.ENGLISH,
      true
    );
    // рдЖрдЙрдЯрдкреБрдЯ: {
    //   en: "https://example.com/en/dashboard",
    //   fr: "https://example.com/fr/dashboard"
    // }
    

    рд╡рд┐рднрд┐рдиреНрди рд░реВрдЯрд┐рдВрдЧ рдореЛрдбреНрд╕

    typescript
    // prefix-no-default: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдирд╣реАрдВ
    getMultilingualUrls("/dashboard", {
      locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    // рдЖрдЙрдЯрдкреБрдЯ: {
    //   en: "/dashboard",
    //   fr: "/fr/dashboard",
    //   es: "/es/dashboard"
    // }
    
    // prefix-all: рд╕рднреА рд▓реЛрдХреЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдлрд┐рдХреНрд╕
    getMultilingualUrls("/dashboard", {
      locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-all",
    });
    // рдЖрдЙрдЯрдкреБрдЯ: {
    //   en: "/en/dashboard",
    //   fr: "/fr/dashboard",
    //   es: "/es/dashboard"
    // }
    
    // no-prefix: URLs рдореЗрдВ рдХреЛрдИ рд▓реЛрдХреЗрд▓ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдирд╣реАрдВ
    getMultilingualUrls("/dashboard", {
      locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
      defaultLocale: Locales.ENGLISH,
      mode: "no-prefix",
    });
    // рдЖрдЙрдЯрдкреБрдЯ: {
    //   en: "/dashboard",
    //   fr: "/dashboard",
    //   es: "/dashboard"
    // }
    
    // search-params: рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдХреЗрд▓
    getMultilingualUrls("/dashboard", {
      locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
      defaultLocale: Locales.ENGLISH,
      mode: "search-params",
    });
    // рдЖрдЙрдЯрдкреБрдЯ: {
    //   en: "/dashboard?locale=en",
    //   fr: "/dashboard?locale=fr",
    //   es: "/dashboard?locale=es"
    // }
    

    рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ

    • рдХреЛрдИ рднрд╛рд╖рд╛-рд╕реНрдерд╛рди рдЦрдВрдб рдирд╣реАрдВ:

      • рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрднрд╛рд╖реА рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ URL рд╕реЗ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рд▓реЛрдХреЗрд▓ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
    • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓:

      • рдЬрдм prefixDefault false рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдХреЗ рд▓рд┐рдП URL рдХреЛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
    • рдЕрд╕рдорд░реНрдерд┐рдд рд▓реЛрдХреЗрд▓:

      • рдХреЗрд╡рд▓ locales рдПрд░реЗ рдореЗрдВ рджрд┐рдП рдЧрдП рд▓реЛрдХреЗрд▓ рдХреЛ рд╣реА URL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
    • рд░рд╛рдЙрдЯрд┐рдВрдЧ рдореЛрдбреНрд╕:

      • 'prefix-no-default': рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдп рдХреЗ рдкрд╛рд╕ рд╣реИ (рдЙрджрд╛., /dashboard, /fr/dashboard)
      • 'prefix-all': рд╕рднреА рд▓реЛрдХреЗрд▓ рдХреЗ рдкрд╛рд╕ рдЙрдкрд╕рд░реНрдЧ рд╣реИрдВ (рдЙрджрд╛., /en/dashboard, /fr/dashboard)
      • 'no-prefix': URLs рдореЗрдВ рдХреЛрдИ рд▓реЛрдХреЗрд▓ рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ рд╣реИ (рд╕рднреА рд▓реЛрдХреЗрд▓ рдПрдХ рд╣реА URL рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ)
      • 'search-params': рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓реЛрдХреЗрд▓ (рдЙрджрд╛., /dashboard?locale=fr)

    рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ

    рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рд╕рд╣реА рднрд╛рд╖рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП locales рдФрд░ defaultLocale рдХреЗ рд╕рд╛рде рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ getMultilingualUrls рдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

    tsx
    import { Locales, type IntlayerConfig } from "intlayer";
    
    // рд╕рдорд░реНрдерд┐рдд рд▓реЛрдХреЗрд▓ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
    export default {
      internationalization: {
        locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
        defaultLocale: Locales.ENGLISH,
      },
    } satisfies IntlayerConfig;
    
    export default config;
    

    рдЙрдкрд░реЛрдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди ENGLISH, FRENCH, рдФрд░ SPANISH рдХреЛ рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдФрд░ ENGLISH рдХреЛ рдлреЙрд▓рдмреИрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

    рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, getMultilingualUrls рдлрд╝рдВрдХреНрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдорд░реНрдерд┐рдд рд▓реЛрдХрд▓реНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╣реБрднрд╛рд╖реА URL рдореИрдкрд┐рдВрдЧреНрд╕ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

    typescript
    getMultilingualUrls(
      "/dashboard",
      [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
      Locales.ENGLISH
    );
    // рдЖрдЙрдЯрдкреБрдЯ:
    // {
    //   en: "/dashboard",
    //   fr: "/fr/dashboard",
    //   es: "/es/dashboard"
    // }
    
    getMultilingualUrls(
      "https://example.com/dashboard",
      [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
      Locales.ENGLISH,
      true
    );
    // рдЖрдЙрдЯрдкреБрдЯ:
    // {
    //   en: "https://example.com/en/dashboard",
      fr: "https://example.com/fr/dashboard",
      es: "https://example.com/es/dashboard"
    }
    

    getMultilingualUrls рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдХреЗ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд URL рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдФрд░ SEO рджреЛрдиреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред