Strona głównaPiaskownicaPrezentacjaAplikacjaDokumentacjaBlog
    • Englishangielski
      EN
    • русскийrosyjski
      RU
    • 日本語japoński
      JA
    • françaisfrancuski
      FR
    • 한국어koreański
      KO
    • 中文chiński
      ZH
    • españolhiszpański
      ES
    • Deutschniemiecki
      DE
    • العربيةarabski
      AR
    • italianowłoski
      IT
    • British Englishangielski brytyjski
      EN-GB
    • portuguêsportugalski
      PT
    • हिन्दीhindi
      HI
    • Türkçeturecki
      TR
    • polskipolski
      PL
    • Indonesiaindonezyjski
      ID
    • Tiếng Việtwietnamski
      VI
    • українськаukraiński
      UK
    /
    Alt+←
    Co to jest internacjonalizacja (i18n)?
    SEO dan i18n
    Przewodnik
    • i18n przy użyciu next-i18next
    • i18n przy użyciu next-intl
    Użyj Intlayer w swoim rozwiązaniu
    • Automatyzacja next-i18next
    • Automatyzacja react-i18next
    • Automatyzacja next-intl
    • Automatyzacja react-intl
    • Automatyzacja vue-i18n
    Porównania
    • next-i18next vs next-intl vs Intlayer
    • react-i18next vs react-intl vs Intlayer
    Dokumentacja
    1. Blog
    2. Vue i18n vs intlayer
    \n\n\n```\n\nTo podejście:\n\n- **Przyspiesza rozwój** (deklarujesz raz; IDE/AI podpowiada).\n- **Porządkuje bazę kodu** (1 komponent = 1 słownik).\n- **Ułatwia duplikację/migrację** (kopiuj komponent wraz z jego zawartością).\n- **Unika martwych kluczy** (nieużywane komponenty nie importują zawartości).\n- **Optymalizuje ładowanie** (komponenty ładowane leniwie przynoszą ze sobą swoją zawartość).\n\n---\n\n## Dodatkowe funkcje Intlayer (istotne dla Vue)\n\n- **Wsparcie wieloplatformowe**: Działa z Vue, Nuxt, Vite, React, Express i innymi.\n- **Zarządzanie zawartością oparte na JavaScript**: Deklaruj w kodzie z pełną elastycznością.\n- **Plik deklaracji na lokalizację**: Zainicjuj wszystkie lokalizacje i pozwól narzędziom wygenerować resztę.\n- **Środowisko z typami**: Silna konfiguracja TS z autouzupełnianiem.\n- **Uproszczone pobieranie treści**: Jeden hook/composable do pobrania całej zawartości słownika.\n- **Zorganizowana baza kodu**: 1 komponent = 1 słownik w tym samym folderze.\n- **Ulepszone routowanie**: Pomocniki dla **Vue Router/Nuxt** do lokalizowanych ścieżek i metadanych.\n- **Wsparcie Markdown**: Importuj zdalny/lokalny Markdown na lokalizację; udostępniaj frontmatter w kodzie.\n- **Darmowy Edytor Wizualny i opcjonalny CMS**: Tworzenie bez płatnej platformy lokalizacyjnej; synchronizacja przyjazna Git.\n- **Treść możliwa do tree-shakingu**: Dostarcza tylko to, co jest używane; wspiera lazy loading.\n- **Przyjazny dla statycznego renderowania**: Nie blokuje SSG.\n- **Tłumaczenia wspomagane AI**: Tłumacz na 231 języków, korzystając z własnego dostawcy AI/klucza API.\n- **Serwer MCP i rozszerzenie VSCode**: Automatyzuj workflow i18n oraz tworzenie treści bezpośrednio w IDE.\n- **Interoperacyjność**: Mosty z **vue-i18n**, **react-i18next** i **react-intl** w razie potrzeby.\n\n---\n\n## Kiedy wybrać które?\n\n- **Wybierz vue-i18n**, jeśli chcesz **standardowe podejście Vue**, czujesz się komfortowo zarządzając katalogami/przestrzeniami nazw samodzielnie, a Twoja aplikacja jest **mała lub średnia** (lub już korzystasz z Nuxt i18n).\n- **Wybierz Intlayer**, jeśli cenisz **zawartość ograniczoną do komponentu**, **ścisły TypeScript**, **gwarancje na etapie budowania**, **tree-shaking** oraz **wbudowane narzędzia do routingu/SEO/edytora**, szczególnie dla **dużych, modułowych baz kodu Vue/Nuxt**, systemów projektowych itp.\n\n---\n\n## Współpraca z vue-i18n\n\n`intlayer` może również pomóc w zarządzaniu przestrzeniami nazw `vue-i18n`.\n\nKorzystając z `intlayer`, możesz zadeklarować swoją zawartość w formacie ulubionej biblioteki i18n, a intlayer wygeneruje Twoje przestrzenie nazw w wybranej lokalizacji (np. `/messages/{{locale}}/{{namespace}}.json`).\n\n---\n\n## Gwiazdki na GitHubie (GitHub STARs)\n\nGwiazdy na GitHubie są silnym wskaźnikiem popularności projektu, zaufania społeczności oraz jego długoterminowej istotności. Choć nie są bezpośrednim miernikiem jakości technicznej, odzwierciedlają, ilu deweloperów uważa projekt za użyteczny, śledzi jego rozwój i jest skłonnych go przyjąć. Przy szacowaniu wartości projektu, gwiazdy pomagają porównać zainteresowanie różnymi alternatywami oraz dostarczają wglądu w rozwój ekosystemu.\n\n[![Wykres historii gwiazd](https://api.star-history.com/svg?repos=intlify/vue-i18n&repos=aymericzip/intlayer&type=Date)](https://www.star-history.com/#intlify/vue-i18n&aymericzip/intlayer)\n\n---\n\n## Podsumowanie\n\nZarówno **vue-i18n**, jak i **Intlayer** dobrze lokalizują aplikacje Vue. Różnica polega na tym, **ile musisz sam zbudować**, aby osiągnąć solidną, skalowalną konfigurację:\n\n- W przypadku **Intlayer** **modularna zawartość**, **ścisły TS**, **bezpieczeństwo w czasie kompilacji**, **tree-shaken bundles** oraz **narzędzia do routera/SEO/edytora** są dostępne **od razu po wyjęciu z pudełka**.\n- Jeśli Twój zespół stawia na **łatwość utrzymania i szybkość** w wielojęzycznej aplikacji Vue/Nuxt opartej na komponentach, Intlayer oferuje dziś **najbardziej kompletną** funkcjonalność.\n\nZapoznaj się z dokumentem ['Dlaczego Intlayer?'](https://intlayer.org/doc/why) po więcej szczegółów.\n","about":"Porównanie vue-i18n z Intlayer pod kątem internacjonalizacji (i18n) w aplikacjach Vue/Nuxt","url":"https://intlayer.org/pl/blog/vue-i18n-vs-intlayer","datePublished":"11-08-2024","dateModified":"23-08-2025","keywords":"vue-i18n, Intlayer, Internacjonalizacja, i18n, Blog, Vue, Nuxt, JavaScript","license":"https://raw.githubusercontent.com/aymericzip/intlayer/refs/heads/main/LICENSE","audience":{"@type":"Audience","audienceType":"Programiści, Menedżerowie treści"}}
    Data utworzenia:2024-08-11Ostatnia aktualizacja:2025-08-23
    Prześlij ten dokument do swojego ulubionego asystenta AI
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    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 angielskim
    Edytuj tę dokumentację

    Jeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.

    Link do dokumentacji na GitHubie
    Kopiuj

    Kopiuj dokument Markdown do schowka

    vue-i18n VS Intlayer | Internacjonalizacja Vue (i18n)

    Ten przewodnik porównuje dwie popularne opcje i18n dla Vue 3 (oraz Nuxt): vue-i18n i Intlayer. Skupiamy się na nowoczesnych narzędziach Vue (Vite, Composition API) i oceniamy:

    1. Architekturę i organizację treści
    2. TypeScript i bezpieczeństwo
    3. Obsługę brakujących tłumaczeń
    4. Routing i strategię URL
    5. Wydajność i zachowanie ładowania
    6. Doświadczenie dewelopera (DX), narzędzia i utrzymanie
    7. SEO i skalowalność dużych projektów
    w skrócie: Oba rozwiązania mogą lokalizować aplikacje Vue. Jeśli chcesz treści ograniczonej do komponentu, ścisłych typów TypeScript, sprawdzania brakujących kluczy w czasie kompilacji, słowników poddanych tree-shakingowi, oraz wbudowanych helperów do routera/SEO wraz z Edytorem Wizualnym i tłumaczeniami AI, Intlayer jest bardziej kompletnym, nowoczesnym wyborem.

    Pozycjonowanie na wysokim poziomie

    • vue-i18n - De facto biblioteka i18n dla Vue. Elastyczne formatowanie wiadomości (w stylu ICU), bloki SFC <i18n> dla lokalnych wiadomości oraz duży ekosystem. Bezpieczeństwo i utrzymanie na dużą skalę leżą głównie po twojej stronie.
    • Intlayer - Model treści skoncentrowany na komponentach dla Vue/Vite/Nuxt z ścisłym typowaniem TS, sprawdzaniem w czasie kompilacji, tree-shakingiem, helperami do routera i SEO, opcjonalnym Edytorem Wizualnym/CMS oraz tłumaczeniami wspomaganymi przez AI.

    Porównanie funkcji obok siebie (skupione na Vue)

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Funkcja Intlayer vue-i18n
    Tłumaczenia blisko komponentów ✅ Tak, treść współlokowana per komponent (np. MyComp.content.ts) ✅ Tak, przez bloki SFC <i18n> (opcjonalnie)
    Integracja z TypeScript ✅ Zaawansowana, automatycznie generowane ścisłe typy i autouzupełnianie kluczy ✅ Dobre typowanie; ścisłe bezpieczeństwo kluczy wymaga dodatkowej konfiguracji/dyscypliny
    Wykrywanie brakujących tłumaczeń ✅ Ostrzeżenia/błędy w czasie kompilacji i widoczność w TS ⚠️ Fallbacki/ostrzeżenia w czasie działania
    Bogata zawartość (komponenty/Markdown) ✅ Bezpośrednie wsparcie dla bogatych węzłów i plików zawartości Markdown ⚠️ Ograniczone (komponenty przez <i18n-t>, Markdown przez zewnętrzne wtyczki)
    Tłumaczenie wspomagane AI ✅ Wbudowane workflowy wykorzystujące własne klucze dostawcy AI ❌ Brak wbudowanego wsparcia
    Edytor wizualny / CMS ✅ Darmowy Edytor Wizualny i opcjonalny CMS ❌ Brak wbudowanego wsparcia (używaj zewnętrznych platform)
    Lokalizowane routowanie ✅ Pomocniki dla Vue Router/Nuxt do generowania lokalizowanych ścieżek, URL-i oraz hreflang ⚠️ Nie jest rdzeniem (użyj Nuxt i18n lub własnej konfiguracji Vue Router)
    Dynamiczne generowanie tras ✅ Tak ❌ Nie dostarczone (dostarcza Nuxt i18n)
    Pluralizacja i formatowanie ✅ Wzorce enumeracji; formatery oparte na Intl ✅ Komunikaty w stylu ICU; formatery Intl
    Formaty treści ✅ .ts, .js, .json, .md, .txt (YAML W trakcie realizacji) ✅ .json, .js (plus bloki SFC <i18n>)
    Wsparcie ICU ⚠️ W trakcie realizacji ✅ Tak
    Pomocniki SEO (mapa strony, robots, metadane) ✅ Wbudowane pomocniki (niezależne od frameworka) ❌ Nie jest rdzeniem (Nuxt i18n/społeczność)
    SSR/SSG ✅ Działa z Vue SSR i Nuxt; nie blokuje renderowania statycznego ✅ Działa z Vue SSR/Nuxt
    Tree-shaking (wysyłanie tylko używanej zawartości) ✅ Na poziomie komponentu podczas budowania ⚠️ Częściowo; wymaga ręcznego dzielenia kodu/asynchronicznych wiadomości
    Lazy loading ✅ Na poziomie lokalizacji / słownika ✅ Obsługa asynchronicznych wiadomości lokalizacyjnych
    Usuwanie nieużywanej zawartości ✅ Tak (podczas budowania) ❌ Brak wbudowanego wsparcia
    Utrzymanie dużych projektów ✅ Zachęca do modularnej, przyjaznej dla systemów designu struktury ✅ Możliwe, ale wymaga silnej dyscypliny w zakresie plików/przestrzeni nazw
    Ekosystem / społeczność ⚠️ Mniejszy, ale szybko rosnący ✅ Duży i dojrzały w ekosystemie Vue

    Szczegółowe porównanie

    1) Architektura i skalowalność

    • vue-i18n: Popularne konfiguracje używają centralizowanych katalogów dla każdego locale (opcjonalnie podzielonych na pliki/przestrzenie nazw). Bloki SFC <i18n> pozwalają na lokalne wiadomości, ale zespoły często wracają do wspólnych katalogów w miarę rozwoju projektów.
    • Intlayer: Promuje słowniki per-komponent, przechowywane obok komponentu, któremu służą. To zmniejsza konflikty między zespołami, utrzymuje zawartość łatwą do odnalezienia i naturalnie ogranicza dryf/nieużywane klucze.

    Dlaczego to ważne: W dużych aplikacjach Vue lub systemach designu, modularna zawartość lepiej się skaluje niż monolityczne katalogi.


    2) TypeScript i bezpieczeństwo

    • vue-i18n: Dobre wsparcie dla TS; ścisłe typowanie kluczy zazwyczaj wymaga niestandardowych schematów/generics i starannych konwencji.
    • Intlayer: Generuje ścisłe typy na podstawie Twoich treści, zapewniając autouzupełnianie w IDE oraz błędy podczas kompilacji w przypadku literówek lub brakujących kluczy.

    Dlaczego to ważne: Silne typowanie wykrywa problemy przed uruchomieniem aplikacji.


    3) Obsługa brakujących tłumaczeń

    • vue-i18n: Ostrzeżenia i mechanizmy zapasowe w czasie wykonywania (np. powrót do domyślnego locale lub klucza).
    • Intlayer: Wykrywanie w czasie budowania z ostrzeżeniami/błędami dla wszystkich locale i kluczy.

    Dlaczego to ważne: Wymuszanie kontroli podczas budowania utrzymuje produkcyjny interfejs czysty i spójny.


    4) Routing i strategia URL (Vue Router/Nuxt)

    • Oba mogą działać z lokalizowanymi trasami.
    • Intlayer dostarcza narzędzia do generowania zlokalizowanych ścieżek, zarządzania prefiksami lokalizacji oraz emitowania <link rel="alternate" hreflang> dla SEO. W przypadku Nuxt uzupełnia routing frameworka.

    Dlaczego to ważne: Mniej niestandardowych warstw łączących i czystsze SEO w różnych lokalizacjach.


    5) Wydajność i zachowanie ładowania

    • vue-i18n: Obsługuje asynchroniczne wiadomości lokalizacyjne; unikanie nadmiernego pakowania zależy od Ciebie (ostrożnie dziel katalogi).
    • Intlayer: Tree-shaking podczas budowania oraz leniwe ładowanie per słownik/lokalizacja. Nieużywane treści nie są dołączane.

    Dlaczego to ważne: Mniejsze pakiety i szybsze uruchamianie aplikacji Vue z wieloma lokalizacjami.


    6) Doświadczenie deweloperskie i narzędzia

    • vue-i18n: Dojrzała dokumentacja i społeczność; zazwyczaj będziesz polegać na zewnętrznych platformach lokalizacyjnych do procesów redakcyjnych.
    • Intlayer: Dostarcza bezpłatny Edytor Wizualny, opcjonalny CMS (przyjazny Git lub zewnętrzny), rozszerzenie VSCode, narzędzia CLI/CI oraz tłumaczenia wspomagane AI z wykorzystaniem własnych kluczy dostawcy.

    Dlaczego to ważne: Niższe koszty operacyjne i krótsza pętla między deweloperem a treścią.


    7) SEO, SSR i SSG

    • Oba działają z Vue SSR i Nuxt.
    • Intlayer: Dodaje narzędzia SEO (mapy witryn/metadane/hreflang), które są niezależne od frameworka i dobrze współpracują z buildami Vue/Nuxt.

    Dlaczego to ważne: Międzynarodowe SEO bez konieczności specjalistycznego okablowania.


    Dlaczego Intlayer? (Problem i podejście)

    Większość stosów i18n (w tym vue-i18n) zaczyna od scentralizowanych katalogów:

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    .├── locales│   ├── en.json│   ├── es.json│   └── fr.json└── src    └── components        └── MyComponent.vue

    Lub z folderami per-locale:

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json└── src    └── components        └── MyComponent.vue

    To często spowalnia rozwój w miarę rozrastania się aplikacji:

    1. Dla nowego komponentu tworzysz/edytujesz zdalne katalogi, łączysz przestrzenie nazw i tłumaczysz (często przez ręczne kopiuj/wklej z narzędzi AI).
    2. Podczas zmiany komponentów wyszukujesz wspólne klucze, tłumaczysz, synchronizujesz lokalizacje, usuwasz nieużywane klucze i dopasowujesz struktury JSON.

    Intlayer organizuje zawartość per-komponent i przechowuje ją obok kodu, tak jak robimy to już z CSS, stories, testami i dokumentacją:

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    .└── components    └── MyComponent        ├── MyComponent.content.ts        └── MyComponent.vue

    Deklaracja zawartości (per komponent):

    ./components/MyComponent/myComponent.content.ts
    Kopiuj kod

    Skopiuj kod do schowka

    import { t, type Dictionary } from "intlayer";const componentExampleContent = {  key: "component-example",  content: {    greeting: t({      en: "Hello World",      es: "Hola Mundo",      fr: "Bonjour le monde",    }),  },} satisfies Dictionary;export default componentExampleContent;

    Użycie w Vue (Composition API):

    ./components/MyComponent/MyComponent.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer"; // integracja z Vueconst { greeting } = useIntlayer("component-example");</script><template>  <span>{{ greeting }}</span></template>

    To podejście:

    • Przyspiesza rozwój (deklarujesz raz; IDE/AI podpowiada).
    • Porządkuje bazę kodu (1 komponent = 1 słownik).
    • Ułatwia duplikację/migrację (kopiuj komponent wraz z jego zawartością).
    • Unika martwych kluczy (nieużywane komponenty nie importują zawartości).
    • Optymalizuje ładowanie (komponenty ładowane leniwie przynoszą ze sobą swoją zawartość).

    Dodatkowe funkcje Intlayer (istotne dla Vue)

    • Wsparcie wieloplatformowe: Działa z Vue, Nuxt, Vite, React, Express i innymi.
    • Zarządzanie zawartością oparte na JavaScript: Deklaruj w kodzie z pełną elastycznością.
    • Plik deklaracji na lokalizację: Zainicjuj wszystkie lokalizacje i pozwól narzędziom wygenerować resztę.
    • Środowisko z typami: Silna konfiguracja TS z autouzupełnianiem.
    • Uproszczone pobieranie treści: Jeden hook/composable do pobrania całej zawartości słownika.
    • Zorganizowana baza kodu: 1 komponent = 1 słownik w tym samym folderze.
    • Ulepszone routowanie: Pomocniki dla Vue Router/Nuxt do lokalizowanych ścieżek i metadanych.
    • Wsparcie Markdown: Importuj zdalny/lokalny Markdown na lokalizację; udostępniaj frontmatter w kodzie.
    • Darmowy Edytor Wizualny i opcjonalny CMS: Tworzenie bez płatnej platformy lokalizacyjnej; synchronizacja przyjazna Git.
    • Treść możliwa do tree-shakingu: Dostarcza tylko to, co jest używane; wspiera lazy loading.
    • Przyjazny dla statycznego renderowania: Nie blokuje SSG.
    • Tłumaczenia wspomagane AI: Tłumacz na 231 języków, korzystając z własnego dostawcy AI/klucza API.
    • Serwer MCP i rozszerzenie VSCode: Automatyzuj workflow i18n oraz tworzenie treści bezpośrednio w IDE.
    • Interoperacyjność: Mosty z vue-i18n, react-i18next i react-intl w razie potrzeby.

    Kiedy wybrać które?

    • Wybierz vue-i18n, jeśli chcesz standardowe podejście Vue, czujesz się komfortowo zarządzając katalogami/przestrzeniami nazw samodzielnie, a Twoja aplikacja jest mała lub średnia (lub już korzystasz z Nuxt i18n).
    • Wybierz Intlayer, jeśli cenisz zawartość ograniczoną do komponentu, ścisły TypeScript, gwarancje na etapie budowania, tree-shaking oraz wbudowane narzędzia do routingu/SEO/edytora, szczególnie dla dużych, modułowych baz kodu Vue/Nuxt, systemów projektowych itp.

    Współpraca z vue-i18n

    intlayer może również pomóc w zarządzaniu przestrzeniami nazw vue-i18n.

    Korzystając z intlayer, możesz zadeklarować swoją zawartość w formacie ulubionej biblioteki i18n, a intlayer wygeneruje Twoje przestrzenie nazw w wybranej lokalizacji (np. /messages/{{locale}}/{{namespace}}.json).


    Gwiazdki na GitHubie (GitHub STARs)

    Gwiazdy na GitHubie są silnym wskaźnikiem popularności projektu, zaufania społeczności oraz jego długoterminowej istotności. Choć nie są bezpośrednim miernikiem jakości technicznej, odzwierciedlają, ilu deweloperów uważa projekt za użyteczny, śledzi jego rozwój i jest skłonnych go przyjąć. Przy szacowaniu wartości projektu, gwiazdy pomagają porównać zainteresowanie różnymi alternatywami oraz dostarczają wglądu w rozwój ekosystemu.

    Wykres historii gwiazd


    Podsumowanie

    Zarówno vue-i18n, jak i Intlayer dobrze lokalizują aplikacje Vue. Różnica polega na tym, ile musisz sam zbudować, aby osiągnąć solidną, skalowalną konfigurację:

    • W przypadku Intlayer modularna zawartość, ścisły TS, bezpieczeństwo w czasie kompilacji, tree-shaken bundles oraz narzędzia do routera/SEO/edytora są dostępne od razu po wyjęciu z pudełka.
    • Jeśli Twój zespół stawia na łatwość utrzymania i szybkość w wielojęzycznej aplikacji Vue/Nuxt opartej na komponentach, Intlayer oferuje dziś najbardziej kompletną funkcjonalność.

    Zapoznaj się z dokumentem 'Dlaczego Intlayer?' po więcej szczegółów.

    Co to jest internacjonalizacja (i18n)?
    Alt+→

    Na tej stronie

      Dyskusje są anonimowe i regularnie przeglądane w celu rozwiązania typowych problemów. Podziel się pomysłami na funkcje, opinią o dokumentacji lub czymkolwiek związanym z Intlayer, wykorzystujemy te informacje do kształtowania naszej mapy drogowej i ulepszania produktu.

      .├── locales│   ├── en.json│   ├── es.json│   └── fr.json└── src    └── components        └── MyComponent.vue
      .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json└── src    └── components        └── MyComponent.vue
      .└── components    └── MyComponent        ├── MyComponent.content.ts        └── MyComponent.vue
      import { t, type Dictionary } from "intlayer";const componentExampleContent = {  key: "component-example",  content: {    greeting: t({      en: "Hello World",      es: "Hola Mundo",      fr: "Bonjour le monde",    }),  },} satisfies Dictionary;export default componentExampleContent;
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer"; // integracja z Vueconst { greeting } = useIntlayer("component-example");</script><template>  <span>{{ greeting }}</span></template>