Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Dzięki integracji serwera Intlayer MCP z ulubionym asystentem AI możesz uzyskać dostęp do całej dokumentacji bezpośrednio z ChatGPT, DeepSeek, Cursor, VSCode itp.
Zobacz dokumentację serwera MCPTreść 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
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:
- Architekturę i organizację treści
- TypeScript i bezpieczeństwo
- Obsługę brakujących tłumaczeń
- Routing i strategię URL
- Wydajność i zachowanie ładowania
- Doświadczenie dewelopera (DX), narzędzia i utrzymanie
- 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)
| 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:
.├── locales│ ├── en.json│ ├── es.json│ └── fr.json└── src └── components └── MyComponent.vueLub z folderami per-locale:
.├── locales│ ├── en│ │ ├── footer.json│ │ └── navbar.json│ ├── fr│ │ ├── footer.json│ │ └── navbar.json│ └── es│ ├── footer.json│ └── navbar.json└── src └── components └── MyComponent.vueTo często spowalnia rozwój w miarę rozrastania się aplikacji:
- Dla nowego komponentu tworzysz/edytujesz zdalne katalogi, łączysz przestrzenie nazw i tłumaczysz (często przez ręczne kopiuj/wklej z narzędzi AI).
- 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ą:
.└── components └── MyComponent ├── MyComponent.content.ts └── MyComponent.vueDeklaracja zawartości (per komponent):
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):
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).
Zapoznaj się z opcjami dictionaryOutput i i18nextResourcesDir, aby uzyskać więcej szczegółów.
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.
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.