Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimJeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.
Link do dokumentacji na GitHubieKopiuj dokument Markdown do schowka
Nowy Intlayer v9 - Co nowego?
Witaj w Intlayer v9! To główne wydanie (major release) stanowi ogromny krok milowy w upraszczaniu ścieżki migracji do Intlayer dzięki pakietom kompatybilności (Compat Adapter Packages) dla najpopularniejszych bibliotek i18n (takich jak react-i18next, next-intl, vue-i18n itp.) oraz wprowadza wsparcie dla bogatych struktur treści: Kolekcji (Collections) i Wariantów (Variants).
Spis treści
Pakiety kompatybilności (Compat Adapter Packages)
Migracja do Intlayer z popularnych bibliotek i18n jest teraz łatwiejsza niż kiedykolwiek. Stworzyliśmy pięć pakietów kompatybilności (compat packages), które udostępniają dokładnie to samo publiczne API co standardowe biblioteki i18n, ale delegują całą pracę związaną z tłumaczeniami do Intlayer w czasie działania aplikacji (runtime).
To samo publiczne API ze ścisłym typowaniem (Strict Typing)
Zastępując importy, zyskujesz wszystkie zalety Intlayer (w tym bezpieczeństwo typów w czasie kompilacji - compile-time type safety - w oparciu o Twoje rzeczywiste słowniki) przy minimalnych zmianach w kodzie:
@intlayer/i18next@intlayer/react-i18next@intlayer/next-intl@intlayer/react-intl@intlayer/next-i18next@intlayer/vue-i18n@intlayer/lingui
Na przykład, po prostu zmień:
Skopiuj kod do schowka
na:
Skopiuj kod do schowka
Twoje klucze będą teraz ściśle typowane (strictly typed) w oparciu o słowniki Intlayer, oferując pełne autouzupełnianie ścieżek kropkowych (dot-path) w Twoim IDE!
Pluginy aliasów dla bundlerów (Vite, Next.js, Turbopack)
Aby umożliwić migrację bez konieczności ręcznego przepisywania wszystkich importów, każdy pakiet adaptera kompatybilności zawiera dedykowany plugin dla bundlera (Vite lub Next.js) w podścieżce /plugin.
Pluginy te automatycznie przepisują istniejące importy (np. react-i18next lub next-intl) na ich odpowiedniki @intlayer/* w czasie budowania (build time).
Przykład dla Next.js (Webpack / Turbopack)
Zamiast withIntlayer, owiń swoją konfigurację Next.js pluginem kompatybilności:
Skopiuj kod do schowka
Przykład dla Vite (React, Vue, Solid, Svelte)
Skopiuj kod do schowka
Wspólny parser czasu działania (Mutualized Runtime Resolver)
Wszystkie adaptery kompatybilności kierują teraz proces rozwiązywania tłumaczeń przez jeden, wysoce zoptymalizowany parser czasu działania (runtime parser): @intlayer/core/messageFormat.
- Interpolacja wiadomości (Interpolate Message): Obsługuje standardowe szablony
{{var}}(ze spacjami i ścieżkami kropkowymi), argumenty formatowane w standardzie ICU ({v, number, percent}itp.) oraz proste szablony{var}. - Rozwiązywanie węzłów wiadomości (Message Node Resolver): Obsługuje zagnieżdżone węzły:
insert(),plural()(reguły liczby mnogiej CLDR),enu()(wyliczenia),gender(), tagi HTML, tablice oraz węzły funkcji wywoływalnych (callable functions). - Parser tagów tokenizowanych (Tokenized Tag Parser): Wspiera wbudowane tagi XML/HTML oraz tagi numerowane (np.
<1>children</1>), aby zapewnić renderowanie bogatego tekstu (rich-text) po wyjęciu z pudełka.
Specyfikacja funkcji: Kolekcje i Warianty
Intlayer v9 wykracza poza statyczne obiekty klucz-wartość, umożliwiając słownikom deklarowanie dynamicznych struktur układu, które są w pełni typowane od początku do końca (end-to-end).
1. Kolekcje (Collections)
Zdefiniuj zarządzaną przez CMS uporządkowaną lista elementów (np. FAQ, produkty lub listy blogów):
Skopiuj kod do schowka
Skopiuj kod do schowka
Użycie:
Skopiuj kod do schowka
2. Warianty (Variants)
Dostarczaj testy A/B, nagłówki sezonowe, flagi funkcji (feature flags) lub niestandardowe strony docelowe (landing pages):
Warianty tekstowe (np. testy A/B)
Skopiuj kod do schowka
Użycie:
Skopiuj kod do schowka
Warianty obiektowe (np. Dynamic Records)
Skopiuj kod do schowka
Użycie:
Skopiuj kod do schowka
@intlayer/analytics: śledzenie ekspozycji treści i testy A/B
Nowy opcjonalny pakiet, @intlayer/analytics, pokazuje, jakie treści są faktycznie wyświetlane Twoim odwiedzającym — i domyka pętlę z Collections & Variants, umożliwiając testowanie treści A/B i mierzenie konwersji dla każdego wariantu.
- Śledzenie na poziomie providera:
IntlayerProvider(React / Next.js / React Native) automatycznie rejestruje zdarzeniapage_viewprzy ładowaniu, zmianie trasy i zmianie języka. - Śledzenie na poziomie węzła: każde rozwiązanie
useIntlayerzgłasza zdarzeniecontent_exposure— jaki klucz słownika, ścieżka klucza, język i (jeśli dotyczy) jaki wariant A/B został wyświetlony. Powtarzające się ekspozycje tego samego węzła w oknie wysyłki są łączone w jedno zdarzenie. - Deterministyczne przypisanie A/B:
getVariant(experimentKey, variants)przypisuje wariant każdej sesji bez komunikacji z serwerem, dzięki czemu nie ma migotania przed pierwszym renderowaniem. useConversion(): przypisuje cel (rejestracja, kliknięcie, zakup…) do wariantu, na który była wystawiona sesja.- Zerowy koszt, gdy nie zainstalowano: ten sam wzorzec tree-shakeable co
@intlayer/editor— dynamicznyimport()opakowany wtry/catch, plus zmienna środowiskowa czasu kompilacji (INTLAYER_ANALYTICS_ENABLED), która całkowicie usuwa integrację z bundla dla aplikacji, które jej nie włączają. - Bez nowego schematu konfiguracji: ponownie wykorzystuje
editor.backendURL(punkt końcowy wysyłki / self-hosting) ieditor.clientId(klucz projektu, będący jednocześnie przełącznikiem włączania). - Dbałość o prywatność: anonimowe hashowanie sesji (SHA-256, bez przechowywania surowych identyfikatorów), brak przechowywania adresów IP, tylko przybliżona geolokalizacja na poziomie kraju, żądania wysyłane partiami mniej więcej co 20 sekund.
- Panel: nowa strona Analytics (widoczna na pasku bocznym po wybraniu projektu) pokazuje aktywnych użytkowników, użytkowników dzisiaj, użytkowników z ostatnich 7/30/90 dni, wykres ewolucji odwiedzających oraz podział według języka i lokalizacji.
Skopiuj kod do schowka
Dostępne już dziś dla React, Next.js i React Native (poprzez react-intlayer); inne wiązania frameworków (Vue, Svelte, Angular, …) są planowane, zgodnie z tym samym wzorcem wdrażania co @intlayer/editor. Pełny przewodnik znajdziesz w dokumentacji Analytics.
Vite Plugin: Bundled Compiler & Proxy
Plugin Vite intlayer() teraz łączy kompilator i proxy do routingu locale'ów bezpośrednio, więc większość projektów potrzebuje tylko jednej wtyczki w vite.config.ts:
Skopiuj kod do schowka
- Compiler: Aktywuje się automatycznie, gdy
compiler.enabledjest ustawione natruei skonfigurowana jest ścieżkacompiler.output. Nie musisz już rejestrowaćintlayerCompiler()osobno. - Proxy: Aktywuje się automatycznie w oparciu o nową opcję
routing.enableProxy(domyślnietrue). Podłącza middleware do wykrywania locale'ów / przekierowywania / przepisywania w developmencie, preview i produkcyjnym SSR. Nie musisz już rejestrowaćintlayerProxy()osobno.
Opcja routing.enableProxy
Nowa opcja routing.enableProxy kontroluje, czy proxy routingu lokalizacji jest podłączony. Domyślnie ma wartość true. Wyłącz to, jeśli chcesz samodzielnie obsługiwać routing lokalizacji:
Skopiuj kod do schowka
Autonomiczne pluginy intlayerCompiler() i intlayerProxy() pozostają eksportowane dla zaawansowanych konfiguracji. Rejestrowanie ich razem z intlayer() jest bezpieczne — każdy plugin deduplikuje się i uruchamia się tylko raz.
Kompilator domyślnie wyłączony
Od Intlayer v9 kompilator jest domyślnie wyłączony (compiler.enabled ma teraz domyślnie wartość false). Aby włączyć ekstrakcję plików .content.ts w czasie budowania, ustaw compiler.enabled: true w swojej konfiguracji:
Skopiuj kod do schowka
Gdy kompilator jest wyłączony, Intlayer pomija krok ekstrakcji w czasie budowania i opiera się na już zadeklarowanych słownikach. Włącz go tylko wtedy, gdy chcesz, aby plugin bundlera (@intlayer/swc, @intlayer/babel lub plugin Vite intlayer()) automatycznie wyodrębniał zawartość.
React Native: importy z jednego pakietu
W aplikacji React Native lub Expo nie musisz już żonglować pakietami react-intlayer i react-native-intlayer. Pakiet react-native-intlayer teraz ponownie eksportuje pełne API react-intlayer (hooki, narzędzia oraz podścieżki /format, /html i /markdown), a jego IntlayerProvider automatycznie stosuje polyfille React Native.
Importuj wszystko z jednego pakietu react-native-intlayer:
Skopiuj kod do schowka
Skopiuj kod do schowka
Importowanie zreact-intlayernadal działa, alereact-native-intlayerjest teraz zalecanym pojedynczym punktem wejścia dla React Native — jego provider zawiera polyfille, których nie posiada zorientowany na web providerreact-intlayer.
SDK CMS: używaj Intlayer jako bezgłowej bazy danych treści
Intlayer v9 dostarcza przejrzysty, samodzielnie uwierzytelniający się SDK w @intlayer/api do programowej interakcji z CMS — pobieranie projektów, pobieranie słowników oraz wysyłanie lub aktualizowanie ich z własnego serwera, skryptów lub CI. Uwierzytelnianie (OAuth2 client_credentials) jest obsługiwane i odświeżane za Ciebie.
SDK jest podzielony na dwa osobne importy, dzięki czemu Twój bundle zawiera tylko te domeny, których faktycznie używasz:
createIntlayerCMS— lekki uwierzytelniacz przechowujący poświadczenia i zarządzany token (bez dołączania klienta domeny).dictionaryEndpoint,projectEndpoint, … — łączniki endpointów dla poszczególnych domen, każdy importowany z własnej podścieżki.
Skopiuj kod do schowka
Bezpieczeństwo: poświadczenia CMS dają dostęp do zapisu Twoich treści. Twórz uwierzytelniacz wyłącznie po stronie serwera — nigdy nie wysyłajclientId/clientSecretdo przeglądarki.
Samodzielne hostowanie (Self-Hosting)
Intlayer v9 zapewnia pełne wsparcie dla uruchamiania własnej instancji Intlayer za pomocą jednej komendy — bez konieczności posiadania konta Intlayer Cloud.
Skopiuj kod do schowka
Instalator pobiera docker-compose.yml i .env, automatycznie generuje wymagane sekrety i uruchamia docker compose up -d. Wszystko — panel, API, baza danych, magazyn obiektów oraz transakcyjne wiadomości e-mail — działa lokalnie w kontenerach.
Uwagi dotyczące migracji z wersji v8
Jeśli aktualizujesz aplikację z wersji v8, pamiętaj, że wersja v9 nie zawiera zmian wprowadzających niekompatybilność wsteczną (breaking changes). Oto jednak kluczowe zmiany:
- Kompilator domyślnie wyłączony:
compiler.enabledma teraz domyślnie wartośćfalse. Jeśli polegasz na ekstrakcji plików.content.tsw czasie budowania, ustawcompiler.enabled: truew swoimintlayer.config.ts. - Języki i dialekty (Locales & Dialects): Jeśli używasz zewnętrznych zależności i18n, dodaj odpowiednie pluginy adapterów kompatybilności w swojej konfiguracji lub konfiguracji bundlera, aby automatycznie przepisywać importy.
- Niestandardowe selektory (Custom Selectors): Podczas wywoływania
useIntlayer, drugi parametr jest teraz zarezerwowany dla obiektu opcji zawierającego{ locale, item, variant }. Jeśli wcześniej przekazywałeś bezpośrednio ciąg znaków języka (locale string), nadal możesz to robić, jednak zaleca się używanie obiektu opcji przy bardziej zaawansowanych wyborach.
