Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Dodano dokumentację mapera lokalizacji"v5.7.227.07.2025
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Maper Lokalizacji
Maper Lokalizacji to potężne narzędzie, które pomaga w pracy z danymi internacjonalizacyjnymi w Twojej aplikacji Intlayer. Udostępnia trzy główne funkcje do transformacji i organizacji danych specyficznych dla lokalizacji: localeMap, localeFlatMap oraz localeRecord.
Jak działa Maper Lokalizacji
Maper Lokalizacji działa na obiekcie LocaleData, który zawiera wszystkie niezbędne informacje o lokalizacji:
Skopiuj kod do schowka
type LocaleData = { locale: LocalesValues; // Aktualny kod lokalizacji (np. 'en', 'fr') defaultLocale: LocalesValues; // Domyślny kod lokalizacji isDefault: boolean; // Czy jest to domyślna lokalizacja locales: LocalesValues[]; // Tablica wszystkich dostępnych lokalizacji urlPrefix: string; // Prefiks URL dla tej lokalizacji (np. '/fr' lub '')};Funkcje mapera automatycznie generują te dane dla każdej lokalizacji w Twojej konfiguracji, uwzględniając:
- Twoją skonfigurowaną listę lokalizacji
- Ustawienie domyślnej lokalizacji
- Czy domyślna lokalizacja powinna mieć prefiks w URL
Główne funkcje
localeMap
Przekształca każdą lokalizację w pojedynczy obiekt za pomocą funkcji mapującej.
Skopiuj kod do schowka
localeMap<T>( mapper: (locale: LocaleData) => T, locales?: LocalesValues[], defaultLocale?: LocalesValues, prefixDefault?: boolean): T[]Przykład: Tworzenie obiektów tras
Skopiuj kod do schowka
import { localeMap } from "intlayer";const routes = localeMap((localizedData) => ({ path: localizedData.urlPrefix, name: localizedData.locale, isDefault: localizedData.isDefault, locales: localizedData.locales, defaultLocale: localizedData.defaultLocale,}));// Wynik:// [// { path: '/', name: 'en', isDefault: true, locales: ['en', 'fr', 'es'], defaultLocale: 'en' },// { path: '/fr', name: 'fr', isDefault: false, locales: ['en', 'fr', 'es'], defaultLocale: 'en' },// { path: '/es', name: 'es', isDefault: false, locales: ['en', 'fr', 'es'], defaultLocale: 'en' }// ]localeFlatMap
Podobne do localeMap, ale funkcja mapująca zwraca tablicę obiektów, która jest spłaszczana do pojedynczej tablicy.
Skopiuj kod do schowka
localeFlatMap<T>( mapper: (locale: LocaleData) => T[], locales?: LocalesValues[], defaultLocale?: LocalesValues, prefixDefault?: boolean): T[]Przykład: Tworzenie wielu tras dla każdej lokalizacji
Skopiuj kod do schowka
import { localeFlatMap } from "intlayer";const routes = localeFlatMap((localizedData) => [ { path: localizedData.urlPrefix, name: localizedData.locale, isDefault: localizedData.isDefault, }, { path: `${localizedData.urlPrefix}/about`, name: `${localizedData.locale}-about`, isDefault: localizedData.isDefault, },]);// Wynik:// [// { path: '/', name: 'en', isDefault: true },// { path: '/about', name: 'en-about', isDefault: true },// { path: '/fr', name: 'fr', isDefault: false },// { path: '/fr/about', name: 'fr-about', isDefault: false },// { path: '/es', name: 'es', isDefault: false },// { path: '/es/about', name: 'es-about', isDefault: false }// ]localeRecord
Tworzy obiekt rekord, gdzie każdy locale jest kluczem mapującym do wartości przekształconej przez funkcję mapującą.
Skopiuj kod do schowka
localeRecord<T>( mapper: (locale: LocaleData) => T, locales?: Locales[], defaultLocale?: Locales, prefixDefault?: boolean): Record<Locales, T>Przykład: Ładowanie plików tłumaczeń
Skopiuj kod do schowka
import { localeRecord } from "intlayer";const translations = localeRecord(({ locale }) => require(`./translations/${locale}.json`));// Wynik:// {// en: { welcome: 'Welcome', hello: 'Hello' },// fr: { welcome: 'Bienvenue', hello: 'Bonjour' },// es: { welcome: 'Bienvenido', hello: 'Hola' }// }Konfiguracja Locale Mapper
Locale Mapper automatycznie korzysta z Twojej konfiguracji Intlayer, ale możesz nadpisać domyślne ustawienia, przekazując parametry:
Użycie domyślnej konfiguracji
Skopiuj kod do schowka
import { localeMap } from "intlayer";// Korzysta z konfiguracji z intlayer.config.tsconst routes = localeMap((data) => ({ path: data.urlPrefix, locale: data.locale,}));Nadpisanie konfiguracji
Skopiuj kod do schowka
import { localeMap } from "intlayer";// Nadpisanie locales i domyślnego localeconst customRoutes = localeMap( (data) => ({ path: data.urlPrefix, locale: data.locale }), ["en", "fr", "de"], // Niestandardowe locales "en", // Niestandardowy domyślny locale true // Prefiksuj domyślny locale w URLach);Zaawansowane przykłady użycia
Tworzenie menu nawigacyjnych
Skopiuj kod do schowka
import { localeMap } from "intlayer";const navigationItems = localeMap((data) => ({ label: data.locale.toUpperCase(), href: data.urlPrefix || "/", isActive: data.isDefault, flag: `/flags/${data.locale}.svg`,}));Generowanie danych mapy witryny
Skopiuj kod do schowka
import { localeFlatMap } from "intlayer";const sitemapUrls = localeFlatMap((data) => [ { url: `${data.urlPrefix}/`, lastmod: new Date().toISOString(), changefreq: "daily", priority: data.isDefault ? 1.0 : 0.8, }, { url: `${data.urlPrefix}/about`, lastmod: new Date().toISOString(), changefreq: "monthly", priority: data.isDefault ? 0.8 : 0.6, },]);Dynamiczne ładowanie tłumaczeń
Skopiuj kod do schowka
import { localeRecord } from "intlayer";const translationModules = localeRecord(({ locale }) => ({ messages: import(`./locales/${locale}/messages.json`), validation: import(`./locales/${locale}/validation.json`), metadata: { locale, direction: ["ar", "he", "fa"].includes(locale) ? "rtl" : "ltr", },}));Integracja konfiguracji
Locale Mapper bezproblemowo integruje się z Twoją konfiguracją Intlayer:
- Locales: Automatycznie używa
configuration.internationalization.locales - Domyślny język: Używa
configuration.internationalization.defaultLocale - Prefiks URL: Respektuje
configuration.middleware.prefixDefault
Zapewnia to spójność w całej aplikacji i redukuje duplikację konfiguracji.