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
    /
    Filtruj dokumenty według frameworka
    Alt+←
    Dlaczego Intlayer?
    Zacząć
    Koncepcja
    • Jak działa Intlayer
    • Konfiguracja
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Edytor wizualny
    • CMS
    • Integracja CI/CD
    • TłumaczenieLiczba mnogaWyliczenieWarunekPłećWstawieniePlikZagnieżdżanieMarkdownHTMLPobieranie funkcji
    • Plik dla każdej lokalizacji
    • Kompilator
    • Automatyczne wypełnianie
    • Testowanie
    • Optymalizacja pakietu
    Środowisko
    • Next.js 14 i App Router
      Next.js 15
      Next.js bez locale URL
      Next.js dan Page Router
      Kompilator
    • Tanstack Start Solid
    • Astro dan React
      Astro dan Svelte
      Astro dan Vue
      Astro dan Solid
      Astro dan Preact
      Astro dan Lit
      Astro dan Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt dan Vue
    • Vite dan Solid
    • SvelteKit
    • Vite dan Preact
    • Vite dan Vanilla JS
    • Vite dan Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native dan Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx dan React
    Plugins
    • JSON
    • gettext (.po)
    Rozszerzenie VS Code
    Agent
    • Serwer MCP
    • Umiejętności agenta
    Wersje
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Zadaj pytanie
    1. Documentation
    2. Środowisko
    3. Nuxt and vue
    \n\n\n```\n\n#### Dostęp do zawartości w Intlayer\n\nIntlayer oferuje różne API do dostępu do Twojej zawartości:\n\n- **Składnia oparta na komponentach** (zalecana):\n Użyj składni `` lub ``, aby wyrenderować zawartość jako węzeł Intlayer. Integruje się to bezproblemowo z [Visual Editor](/pl/doc/concept/editor) oraz [CMS](/pl/doc/concept/cms).\n\n- **Składnia oparta na łańcuchach znaków**:\n Użyj `{{ myContent }}`, aby wyrenderować zawartość jako zwykły tekst, bez wsparcia Visual Editor.\n\n- **Składnia surowego HTML**:\n Użyj `
    `, aby wyrenderować zawartość jako surowy HTML, bez wsparcia Visual Editor.\n\n- **Składnia destrukturyzacji**:\n Kompozycja `useIntlayer` zwraca Proxy z zawartością. Ten proxy można zdestrukturyzować, aby uzyskać dostęp do zawartości, zachowując reaktywność.\n - Użyj `const content = useIntlayer(\"myContent\");` oraz `{{ content.myContent }}` / ``.\n - Lub użyj `const { myContent } = useIntlayer(\"myContent\");` oraz `{{ myContent}}` / ``, aby zdestrukturyzować zawartość.\n\n### (Opcjonalny) Krok 6: Zmień język swojej zawartości\n\nAby zmienić język swojej zawartości, możesz użyć funkcji `setLocale` dostarczonej przez kompozycję `useLocale`. Funkcja ta pozwala ustawić lokalizację aplikacji i odpowiednio zaktualizować zawartość.\n\nUtwórz komponent do przełączania między językami, używając `NuxtLink`. **Używanie linków zamiast przycisków do zmiany lokalizacji to najlepsza praktyka dla SEO i odkrywalności stron**, ponieważ pozwala wyszukiwarkom indeksować wszystkie zlokalizowane wersje Twoich stron:\n\n```vue fileName=\"components/LocaleSwitcher.vue\"\n\n\n\n```\n\n> Używanie `NuxtLink` z odpowiednimi atrybutami `href` (za pomocą `getLocalizedUrl`) zapewnia, że wyszukiwarki mogą odkryć wszystkie warianty językowe Twoich stron. Jest to lepsze niż przełączanie lokalizacji wyłącznie za pomocą JavaScript, którego roboty wyszukiwarek mogą nie śledzić.\n\nNastępnie skonfiguruj swój plik `app.vue`, aby używać layoutów:\n\n```vue fileName=\"app.vue\"\n\n```\n\n### (Opcjonalny) Krok 6b: Utwórz Layout z Nawigacją\n\nLayouty Nuxt pozwalają zdefiniować wspólną strukturę dla Twoich stron. Utwórz domyślny layout, który zawiera przełącznik języków oraz nawigację:\n\n```vue fileName=\"layouts/default.vue\"\n\n\n\n```\n\nKomponent `Links` (pokazany poniżej) zapewnia, że wewnętrzne linki nawigacyjne są automatycznie lokalizowane.\n\n### (Opcjonalny) Krok 7: Dodaj lokalizowane routingi do swojej aplikacji\n\nNuxt automatycznie obsługuje lokalizowane routingi podczas korzystania z modułu `nuxt-intlayer`. Tworzy to trasy dla każdego języka automatycznie na podstawie struktury katalogu stron.\n\nPrzykład:\n\n```plaintext\npages/\n├── index.vue → /, /fr, /es\n├── about.vue → /about, /fr/about, /es/about\n└── contact/\n └── index.vue → /contact, /fr/contact, /es/contact\n```\n\nAby utworzyć lokalizowane strony, wystarczy utworzyć pliki Vue w katalogu `pages/`. Oto dwa przykładowe pliki stron:\n\n**Strona główna (`pages/index.vue`):**\n\n```vue fileName=\"pages/index.vue\"\n\n\n\n```\n\n**Strona O nas (`pages/about.vue`):**\n\n```vue fileName=\"pages/about.vue\"\n\n\n\n```\n\n> Uwaga: `useHead` jest automatycznie importowany w Nuxt. Możesz uzyskać dostęp do wartości content za pomocą `.value` (reaktywne) lub `.raw` (prymitywny łańcuch znaków), w zależności od potrzeb.\n\nModuł `nuxt-intlayer` automatycznie:\n\n- Wykrywa preferowany język użytkownika\n- Obsługuje przełączanie języków przez URL\n- Ustawia odpowiedni atrybut ``\n- Zarządza ciasteczkami językowymi\n- Przekierowuje użytkowników do odpowiedniego zlokalizowanego URL\n\n### (Opcjonalny) Krok 8: Tworzenie lokalizowanego komponentu Linków\n\nAby zapewnić, że nawigacja Twojej aplikacji respektuje bieżący język, możesz utworzyć niestandardowy komponent `Links`. Komponent ten automatycznie dodaje przedrostek z aktualnym językiem do wewnętrznych adresów URL, co jest niezbędne dla **SEO i odnajdywalności stron**.\n\n```vue fileName=\"components/Links.vue\"\n\n\n\n```\n\nNastępnie użyj tego komponentu w całej aplikacji:\n\n```vue fileName=\"layouts/default.vue\"\n\n\n\n```\n\n> Korzystając z `NuxtLink` z lokalizowanymi ścieżkami, zapewniasz, że:\n>\n> - Wyszukiwarki mogą indeksować i przeszukiwać wszystkie wersje językowe Twoich stron\n> - Użytkownicy mogą bezpośrednio udostępniać lokalizowane URL-e\n> - Historia przeglądarki działa poprawnie z URL-ami poprzedzonymi prefiksem języka\n\n### (Opcjonalny) Krok 9: Obsługa Metadanych i SEO\n\nNuxt oferuje doskonałe możliwości SEO za pomocą kompozycji `useHead` (auto-importowanej). Możesz użyć Intlayer do obsługi lokalizowanych metadanych, korzystając z akcesora `.raw` lub `.value`, aby uzyskać prymitywną wartość łańcuchową:\n\n```vue fileName=\"pages/about.vue\"\n\n\n\n```\n\n> Alternatywnie możesz użyć funkcji `import { getIntlayer } from \"intlayer\"`, aby uzyskać zawartość bez reaktywności Vue.\n\n> **Dostęp do wartości zawartości:**\n>\n> - Użyj `.raw`, aby uzyskać prymitywną wartość łańcuchową (niereaktywną)\n> - Użyj `.value`, aby uzyskać wartość reaktywną\n> - Użyj składni komponentu `` dla wsparcia Visual Editora\n\nUtwórz odpowiednią deklarację zawartości:\n\n```ts fileName=\"pages/about-page.content.ts\" contentDeclarationFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { t, type Dictionary } from \"intlayer\";\n\nconst aboutPageContent = {\n key: \"about-page\",\n content: {\n metaTitle: t({\n en: \"About Us - My Company\",\n fr: \"À Propos - Ma Société\",\n es: \"Acerca de Nosotros - Mi Empresa\",\n }),\n metaDescription: t({\n pl: \"Dowiedz się więcej o naszej firmie i naszej misji\",\n en: \"Learn more about our company and our mission\",\n fr: \"En savoir plus sur notre société et notre mission\",\n es: \"Conozca más sobre nuestra empresa y nuestra misión\",\n }),\n title: t({\n pl: \"O nas\",\n en: \"About Us\",\n fr: \"À Propos\",\n es: \"Acerca de Nosotros\",\n }),\n },\n} satisfies Dictionary;\n\nexport default aboutPageContent;\n```\n\n```json fileName=\"pages/about-page.content.json\" contentDeclarationFormat=\"json\"\n{\n \"$schema\": \"https://intlayer.org/schema.json\",\n \"key\": \"about-page\",\n \"content\": {\n \"metaTitle\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"en\": \"O nas - Moja firma\",\n \"fr\": \"À Propos - Ma Société\",\n \"es\": \"Acerca de Nosotros - Mi Empresa\"\n }\n },\n \"metaDescription\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"en\": \"Learn more about our company and our mission\",\n \"fr\": \"En savoir plus sur notre société et notre mission\",\n \"es\": \"Conozca más sobre nuestra empresa y nuestra misión\",\n \"pl\": \"Dowiedz się więcej o naszej firmie i naszej misji\"\n }\n },\n \"title\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"en\": \"About Us\",\n \"fr\": \"À Propos\",\n \"es\": \"Acerca de Nosotros\",\n \"pl\": \"O nas\"\n }\n }\n }\n}\n```\n\n### Konfiguracja Git\n\nZaleca się ignorowanie plików generowanych przez Intlayer. Pozwala to uniknąć ich zatwierdzania do repozytorium Git.\n\nAby to zrobić, możesz dodać następujące instrukcje do pliku `.gitignore`:\n\n```plaintext fileName=\".gitignore\"\n# Ignoruj pliki generowane przez Intlayer\n.intlayer\n```\n\n### Rozszerzenie VS Code\n\nAby poprawić swoje doświadczenie deweloperskie z Intlayer, możesz zainstalować oficjalne **rozszerzenie Intlayer dla VS Code**.\n\n[Zainstaluj z VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)\n\nTo rozszerzenie oferuje:\n\n- **Autouzupełnianie** kluczy tłumaczeń.\n- **Wykrywanie błędów w czasie rzeczywistym** dla brakujących tłumaczeń.\n- **Podglądy w linii** przetłumaczonej zawartości.\n- **Szybkie akcje** umożliwiające łatwe tworzenie i aktualizowanie tłumaczeń.\n\nAby uzyskać więcej informacji na temat korzystania z rozszerzenia, zapoznaj się z [dokumentacją rozszerzenia Intlayer dla VS Code](https://intlayer.org/doc/vs-code-extension).\n\n---\n\n### Idź dalej\n\nAby pójść dalej, możesz zaimplementować [edytor wizualny](/pl/doc/concept/editor) lub wyeksportować swoją zawartość, korzystając z [CMS](/pl/doc/concept/cms).\n","about":"Dowiedz się, jak uczynić swoją stronę Nuxt i Vue wielojęzyczną. Postępuj zgodnie z dokumentacją, aby zinternacjonalizować (i18n) i przetłumaczyć ją.","url":"https://intlayer.org/pl/doc/environment/nuxt-and-vue","datePublished":"18-06-2025","dateModified":"06-05-2026","keywords":"Internacjonalizacja, Dokumentacja, Intlayer, Nuxt, Vue, JavaScript","license":"https://raw.githubusercontent.com/aymericzip/intlayer/refs/heads/main/LICENSE","audience":{"@type":"Audience","audienceType":"Programiści, Menedżerowie treści"}}
    Data utworzenia:2025-06-18Ostatnia aktualizacja:2026-05-06
    Zobacz szablon aplikacji na GitHubie

    Na tej stronie dostępny jest szablon aplikacji.

    Zobacz aplikację pokazową

    Ta strona prowadzi do działającej demonstracji szablonu.

    Obejrzyj samouczek wideo

    Na tej stronie dostępny jest samouczek wideo.

    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

    Historia wersji

    1. "Aktualizacja użycia API useIntlayer w Solid do bezpośredniego dostępu do właściwości"
      v8.9.04.05.2026
    2. "Aktualizacja LocaleSwitcher, SEO, metadanych"
      v7.3.117.12.2025
    3. "Inicjalizacja historii"
      v5.5.1029.06.2025

    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

    Przetłumacz swoją stronę Nuxt i Vue za pomocą Intlayer | Internacjonalizacja (i18n)

    Spis treści

    Czym jest Intlayer?

    Intlayer to innowacyjna, otwartoźródłowa biblioteka do internacjonalizacji (i18n), zaprojektowana, aby uprościć wsparcie wielojęzyczne w nowoczesnych aplikacjach webowych.

    Dzięki Intlayer możesz:

    • Łatwo zarządzać tłumaczeniami za pomocą deklaratywnych słowników na poziomie komponentów.
    • Dynamicznie lokalizować metadane, trasy i treści.
    • Zapewnić wsparcie dla TypeScript dzięki automatycznie generowanym typom, co poprawia autouzupełnianie i wykrywanie błędów.
    • Korzystać z zaawansowanych funkcji, takich jak dynamiczne wykrywanie i przełączanie lokalizacji.

    Przewodnik krok po kroku, jak skonfigurować Intlayer w aplikacji Nuxt

    www.youtube.com
    ide.intlayer.org
    intlayer-nuxt-4-template.vercel.app

    Zobacz Szablon aplikacji na GitHub.

    Krok 1: Zainstaluj zależności

    Zainstaluj niezbędne pakiety za pomocą npm:

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    npm install intlayer vue-intlayernpm install --save-dev nuxt-intlayernpx intlayer init
    • intlayer

      Główny pakiet, który dostarcza narzędzia do internacjonalizacji dla zarządzania konfiguracją, tłumaczeń, deklaracji treści, transpilecji oraz poleceń CLI.

    • vue-intlayer Pakiet integrujący Intlayer z aplikacją Vue. Zawiera composables dla komponentów Vue.

    • nuxt-intlayer Moduł Nuxt, który integruje Intlayer z aplikacjami Nuxt. Zapewnia automatyczną konfigurację, middleware do wykrywania lokalizacji, zarządzanie ciasteczkami oraz przekierowania URL.

    Krok 2: Konfiguracja Twojego projektu

    Utwórz plik konfiguracyjny, aby skonfigurować języki swojej aplikacji:

    intlayer.config.ts
    Kopiuj kod

    Skopiuj kod do schowka

    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [
          Locales.ENGLISH,
          Locales.FRENCH,
          Locales.SPANISH,
          // Twoje inne lokalizacje
        ],
        defaultLocale: Locales.ENGLISH,
      },
    };
    
    export default config;
    Poprzez ten plik konfiguracyjny możesz ustawić lokalizowane adresy URL, przekierowania w middleware, nazwy ciasteczek, lokalizację i rozszerzenie deklaracji zawartości, wyłączyć logi Intlayer w konsoli i wiele więcej. Aby uzyskać pełną listę dostępnych parametrów, zapoznaj się z dokumentacją konfiguracji.

    Krok 3: Zintegruj Intlayer w swojej konfiguracji Nuxt

    Dodaj moduł intlayer do swojej konfiguracji Nuxt:

    nuxt.config.ts
    Kopiuj kod

    Skopiuj kod do schowka

    import { defineNuxtConfig } from "nuxt/config";export default defineNuxtConfig({  // ... Twoja istniejąca konfiguracja Nuxt  modules: ["nuxt-intlayer"],});
    Moduł nuxt-intlayer automatycznie obsługuje integrację Intlayer z Nuxt. Konfiguruje budowanie deklaracji zawartości, monitoruje pliki w trybie deweloperskim, dostarcza middleware do wykrywania lokalizacji oraz zarządza lokalizowanym routingiem.

    Krok 4: Zadeklaruj swoją zawartość

    Twórz i zarządzaj swoimi deklaracjami zawartości, aby przechowywać tłumaczenia:

    Twoje deklaracje zawartości mogą być zdefiniowane w dowolnym miejscu w Twojej aplikacji, pod warunkiem, że znajdują się w katalogu contentDir (domyślnie ./src). I mają odpowiednie rozszerzenie pliku deklaracji zawartości (domyślnie .content.{json,ts,tsx,js,jsx,mjs,cjs}).
    Aby uzyskać więcej szczegółów, zapoznaj się z dokumentacją deklaracji zawartości.

    Krok 5: Wykorzystaj Intlayer w swoim kodzie

    Uzyskaj dostęp do swoich słowników zawartości w całej aplikacji Nuxt, korzystając z kompozycji useIntlayer:

    components/HelloWorld.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import { ref } from "vue";import { useIntlayer } from "vue-intlayer";defineProps({  msg: String,});const {  count,  edit,  checkOut,  nuxtIntlayer,  learnMore,  nuxtDocs,  readTheDocs,} = useIntlayer("helloworld");const countRef = ref(0);</script><template>  <h1>{{ msg }}</h1>  <div class="card">    <button type="button" @click="countRef++">      <count />      {{ countRef }}    </button>    <p v-html="edit"></p>  </div>  <p>    <checkOut />    <a href="https://nuxt.com/docs/getting-started/introduction" target="_blank"      >Nuxt</a    >, <nuxtIntlayer />  </p>  <p>    <learnMore />    <a href="https://nuxt.com" target="_blank"><nuxtDocs /></a>.  </p>  <p class="read-the-docs"><readTheDocs /></p>  <p class="read-the-docs">{{ readTheDocs }}</p></template>

    Dostęp do zawartości w Intlayer

    Intlayer oferuje różne API do dostępu do Twojej zawartości:

    • Składnia oparta na komponentach (zalecana): Użyj składni <myContent /> lub <Component :is="myContent" />, aby wyrenderować zawartość jako węzeł Intlayer. Integruje się to bezproblemowo z Visual Editor oraz CMS.

    • Składnia oparta na łańcuchach znaków: Użyj {{ myContent }}, aby wyrenderować zawartość jako zwykły tekst, bez wsparcia Visual Editor.

    • Składnia surowego HTML: Użyj <div v-html="myContent" />, aby wyrenderować zawartość jako surowy HTML, bez wsparcia Visual Editor.

    • Składnia destrukturyzacji: Kompozycja useIntlayer zwraca Proxy z zawartością. Ten proxy można zdestrukturyzować, aby uzyskać dostęp do zawartości, zachowując reaktywność.

      • Użyj const content = useIntlayer("myContent"); oraz {{ content.myContent }} / <content.myContent />.
      • Lub użyj const { myContent } = useIntlayer("myContent"); oraz {{ myContent}} / <myContent/>, aby zdestrukturyzować zawartość.

    (Opcjonalny) Krok 6: Zmień język swojej zawartości

    Aby zmienić język swojej zawartości, możesz użyć funkcji setLocale dostarczonej przez kompozycję useLocale. Funkcja ta pozwala ustawić lokalizację aplikacji i odpowiednio zaktualizować zawartość.

    Utwórz komponent do przełączania między językami, używając NuxtLink. Używanie linków zamiast przycisków do zmiany lokalizacji to najlepsza praktyka dla SEO i odkrywalności stron, ponieważ pozwala wyszukiwarkom indeksować wszystkie zlokalizowane wersje Twoich stron:

    components/LocaleSwitcher.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import { getLocaleName, getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";// Nuxt automatycznie importuje useRouteconst route = useRoute();const { locale, availableLocales, setLocale } = useLocale();</script><template>  <nav class="locale-switcher">    <NuxtLink      v-for="localeEl in availableLocales"      :key="localeEl"      :to="getLocalizedUrl(route.fullPath, localeEl)"      class="locale-link"      :class="{ 'active-locale': localeEl === locale }"      @click="setLocale(localeEl)"    >      {{ getLocaleName(localeEl) }}    </NuxtLink>  </nav></template>
    Używanie NuxtLink z odpowiednimi atrybutami href (za pomocą getLocalizedUrl) zapewnia, że wyszukiwarki mogą odkryć wszystkie warianty językowe Twoich stron. Jest to lepsze niż przełączanie lokalizacji wyłącznie za pomocą JavaScript, którego roboty wyszukiwarek mogą nie śledzić.

    Następnie skonfiguruj swój plik app.vue, aby używać layoutów:

    app.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <template>  <NuxtLayout>    <NuxtPage />  </NuxtLayout></template>

    (Opcjonalny) Krok 6b: Utwórz Layout z Nawigacją

    Layouty Nuxt pozwalają zdefiniować wspólną strukturę dla Twoich stron. Utwórz domyślny layout, który zawiera przełącznik języków oraz nawigację:

    layouts/default.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import Links from "~/components/Links.vue";import LocaleSwitcher from "~/components/LocaleSwitcher.vue";</script><template>  <div>    <header>      <LocaleSwitcher />    </header>    <main>      <slot />    </main>    <Links href="/">Strona główna</Links>    <Links href="/about">O nas</Links>  </div></template>

    Komponent Links (pokazany poniżej) zapewnia, że wewnętrzne linki nawigacyjne są automatycznie lokalizowane.

    (Opcjonalny) Krok 7: Dodaj lokalizowane routingi do swojej aplikacji

    Nuxt automatycznie obsługuje lokalizowane routingi podczas korzystania z modułu nuxt-intlayer. Tworzy to trasy dla każdego języka automatycznie na podstawie struktury katalogu stron.

    Przykład:

    plaintext
    Kopiuj kod

    Skopiuj kod do schowka

    pages/├── index.vue          → /, /fr, /es├── about.vue          → /about, /fr/about, /es/about└── contact/    └── index.vue      → /contact, /fr/contact, /es/contact

    Aby utworzyć lokalizowane strony, wystarczy utworzyć pliki Vue w katalogu pages/. Oto dwa przykładowe pliki stron:

    Strona główna (pages/index.vue):

    pages/index.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer";const content = useIntlayer("home-page");useHead({  title: content.metaTitle.raw,  meta: [    {      name: "description",      content: content.metaDescription.raw,    },  ],});</script><template>  <h1><content.title /></h1></template>

    Strona O nas (pages/about.vue):

    pages/about.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer";const content = useIntlayer("about-page");useHead({  title: content.metaTitle.raw, // Użyj .raw, aby uzyskać dostęp do prymitywnego stringa  meta: [    {      name: "description",      content: content.metaDescription.raw, // Użyj .raw, aby uzyskać dostęp do prymitywnego łańcucha znaków    },  ],});</script><template>  <h1><content.title /></h1></template>
    Uwaga: useHead jest automatycznie importowany w Nuxt. Możesz uzyskać dostęp do wartości content za pomocą .value (reaktywne) lub .raw (prymitywny łańcuch znaków), w zależności od potrzeb.

    Moduł nuxt-intlayer automatycznie:

    • Wykrywa preferowany język użytkownika
    • Obsługuje przełączanie języków przez URL
    • Ustawia odpowiedni atrybut <html lang="">
    • Zarządza ciasteczkami językowymi
    • Przekierowuje użytkowników do odpowiedniego zlokalizowanego URL

    (Opcjonalny) Krok 8: Tworzenie lokalizowanego komponentu Linków

    Aby zapewnić, że nawigacja Twojej aplikacji respektuje bieżący język, możesz utworzyć niestandardowy komponent Links. Komponent ten automatycznie dodaje przedrostek z aktualnym językiem do wewnętrznych adresów URL, co jest niezbędne dla SEO i odnajdywalności stron.

    components/Links.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import { getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";interface Props {  href: string;  locale?: string;}const props = defineProps<Props>();const { locale: currentLocale } = useLocale();// Oblicz końcową ścieżkęconst finalPath = computed(() => {  // 1. Sprawdź, czy link jest zewnętrzny  const isExternal = /^https?:\/\//.test(props.href || "");  // 2. Jeśli zewnętrzny, zwróć go bez zmian (NuxtLink obsługuje generowanie tagu <a>)  if (isExternal) return props.href;  // 3. Jeśli link jest wewnętrzny, lokalizuj URL  const targetLocale = props.locale || currentLocale.value;  return getLocalizedUrl(props.href, targetLocale);});</script><template>  <NuxtLink :to="finalPath" v-bind="$attrs">    <slot />  </NuxtLink></template>

    Następnie użyj tego komponentu w całej aplikacji:

    layouts/default.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import Links from "~/components/Links.vue";import LocaleSwitcher from "~/components/LocaleSwitcher.vue";</script><template>  <div>    <header>      <LocaleSwitcher />    </header>    <main>      <slot />    </main>    <Links href="/">Strona główna</Links>    <Links href="/about">O nas</Links>  </div></template>

    Korzystając z NuxtLink z lokalizowanymi ścieżkami, zapewniasz, że:

    • Wyszukiwarki mogą indeksować i przeszukiwać wszystkie wersje językowe Twoich stron
    • Użytkownicy mogą bezpośrednio udostępniać lokalizowane URL-e
    • Historia przeglądarki działa poprawnie z URL-ami poprzedzonymi prefiksem języka

    (Opcjonalny) Krok 9: Obsługa Metadanych i SEO

    Nuxt oferuje doskonałe możliwości SEO za pomocą kompozycji useHead (auto-importowanej). Możesz użyć Intlayer do obsługi lokalizowanych metadanych, korzystając z akcesora .raw lub .value, aby uzyskać prymitywną wartość łańcuchową:

    pages/about.vue
    Kopiuj kod

    Skopiuj kod do schowka

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer";// useHead jest auto-importowane w Nuxtconst content = useIntlayer("about-page");useHead({  title: content.metaTitle.raw, // Użyj .raw, aby uzyskać prymitywną wartość łańcuchową  meta: [    {      name: "description",      content: content.metaDescription.raw, // Użyj .raw, aby uzyskać prymitywną wartość łańcuchową    },  ],});</script><template>  <h1><content.title /></h1></template>
    Alternatywnie możesz użyć funkcji import { getIntlayer } from "intlayer", aby uzyskać zawartość bez reaktywności Vue.

    Dostęp do wartości zawartości:

    • Użyj .raw, aby uzyskać prymitywną wartość łańcuchową (niereaktywną)
    • Użyj .value, aby uzyskać wartość reaktywną
    • Użyj składni komponentu <content.key /> dla wsparcia Visual Editora

    Utwórz odpowiednią deklarację zawartości:

    pages/about-page.content.ts
    Kopiuj kod

    Skopiuj kod do schowka

    import { t, type Dictionary } from "intlayer";
    
    const aboutPageContent = {
      key: "about-page",
      content: {
        metaTitle: t({
          en: "About Us - My Company",
          fr: "À Propos - Ma Société",
          es: "Acerca de Nosotros - Mi Empresa",
        }),
        metaDescription: t({
          pl: "Dowiedz się więcej o naszej firmie i naszej misji",
          en: "Learn more about our company and our mission",
          fr: "En savoir plus sur notre société et notre mission",
          es: "Conozca más sobre nuestra empresa y nuestra misión",
        }),
        title: t({
          pl: "O nas",
          en: "About Us",
          fr: "À Propos",
          es: "Acerca de Nosotros",
        }),
      },
    } satisfies Dictionary;
    
    export default aboutPageContent;

    Konfiguracja Git

    Zaleca się ignorowanie plików generowanych przez Intlayer. Pozwala to uniknąć ich zatwierdzania do repozytorium Git.

    Aby to zrobić, możesz dodać następujące instrukcje do pliku .gitignore:

    .gitignore
    Kopiuj kod

    Skopiuj kod do schowka

    # Ignoruj pliki generowane przez Intlayer.intlayer

    Rozszerzenie VS Code

    Aby poprawić swoje doświadczenie deweloperskie z Intlayer, możesz zainstalować oficjalne rozszerzenie Intlayer dla VS Code.

    Zainstaluj z VS Code Marketplace

    To rozszerzenie oferuje:

    • Autouzupełnianie kluczy tłumaczeń.
    • Wykrywanie błędów w czasie rzeczywistym dla brakujących tłumaczeń.
    • Podglądy w linii przetłumaczonej zawartości.
    • Szybkie akcje umożliwiające łatwe tworzenie i aktualizowanie tłumaczeń.

    Aby uzyskać więcej informacji na temat korzystania z rozszerzenia, zapoznaj się z dokumentacją rozszerzenia Intlayer dla VS Code.


    Idź dalej

    Aby pójść dalej, możesz zaimplementować edytor wizualny lub wyeksportować swoją zawartość, korzystając z CMS.

    Vite dan Vue
    Vite dan Solid
    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.

      npm install intlayer vue-intlayernpm install --save-dev nuxt-intlayernpx intlayer init
      import { defineNuxtConfig } from "nuxt/config";export default defineNuxtConfig({  // ... Twoja istniejąca konfiguracja Nuxt  modules: ["nuxt-intlayer"],});
      <script setup lang="ts">import { ref } from "vue";import { useIntlayer } from "vue-intlayer";defineProps({  msg: String,});const {  count,  edit,  checkOut,  nuxtIntlayer,  learnMore,  nuxtDocs,  readTheDocs,} = useIntlayer("helloworld");const countRef = ref(0);</script><template>  <h1>{{ msg }}</h1>  <div class="card">    <button type="button" @click="countRef++">      <count />      {{ countRef }}    </button>    <p v-html="edit"></p>  </div>  <p>    <checkOut />    <a href="https://nuxt.com/docs/getting-started/introduction" target="_blank"      >Nuxt</a    >, <nuxtIntlayer />  </p>  <p>    <learnMore />    <a href="https://nuxt.com" target="_blank"><nuxtDocs /></a>.  </p>  <p class="read-the-docs"><readTheDocs /></p>  <p class="read-the-docs">{{ readTheDocs }}</p></template>
      <script setup lang="ts">import { getLocaleName, getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";// Nuxt automatycznie importuje useRouteconst route = useRoute();const { locale, availableLocales, setLocale } = useLocale();</script><template>  <nav class="locale-switcher">    <NuxtLink      v-for="localeEl in availableLocales"      :key="localeEl"      :to="getLocalizedUrl(route.fullPath, localeEl)"      class="locale-link"      :class="{ 'active-locale': localeEl === locale }"      @click="setLocale(localeEl)"    >      {{ getLocaleName(localeEl) }}    </NuxtLink>  </nav></template>
      <template>  <NuxtLayout>    <NuxtPage />  </NuxtLayout></template>
      <script setup lang="ts">import Links from "~/components/Links.vue";import LocaleSwitcher from "~/components/LocaleSwitcher.vue";</script><template>  <div>    <header>      <LocaleSwitcher />    </header>    <main>      <slot />    </main>    <Links href="/">Strona główna</Links>    <Links href="/about">O nas</Links>  </div></template>
      pages/├── index.vue          → /, /fr, /es├── about.vue          → /about, /fr/about, /es/about└── contact/    └── index.vue      → /contact, /fr/contact, /es/contact
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer";const content = useIntlayer("home-page");useHead({  title: content.metaTitle.raw,  meta: [    {      name: "description",      content: content.metaDescription.raw,    },  ],});</script><template>  <h1><content.title /></h1></template>
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer";const content = useIntlayer("about-page");useHead({  title: content.metaTitle.raw, // Użyj .raw, aby uzyskać dostęp do prymitywnego stringa  meta: [    {      name: "description",      content: content.metaDescription.raw, // Użyj .raw, aby uzyskać dostęp do prymitywnego łańcucha znaków    },  ],});</script><template>  <h1><content.title /></h1></template>
      <script setup lang="ts">import { getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";interface Props {  href: string;  locale?: string;}const props = defineProps<Props>();const { locale: currentLocale } = useLocale();// Oblicz końcową ścieżkęconst finalPath = computed(() => {  // 1. Sprawdź, czy link jest zewnętrzny  const isExternal = /^https?:\/\//.test(props.href || "");  // 2. Jeśli zewnętrzny, zwróć go bez zmian (NuxtLink obsługuje generowanie tagu <a>)  if (isExternal) return props.href;  // 3. Jeśli link jest wewnętrzny, lokalizuj URL  const targetLocale = props.locale || currentLocale.value;  return getLocalizedUrl(props.href, targetLocale);});</script><template>  <NuxtLink :to="finalPath" v-bind="$attrs">    <slot />  </NuxtLink></template>
      <script setup lang="ts">import Links from "~/components/Links.vue";import LocaleSwitcher from "~/components/LocaleSwitcher.vue";</script><template>  <div>    <header>      <LocaleSwitcher />    </header>    <main>      <slot />    </main>    <Links href="/">Strona główna</Links>    <Links href="/about">O nas</Links>  </div></template>
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer";// useHead jest auto-importowane w Nuxtconst content = useIntlayer("about-page");useHead({  title: content.metaTitle.raw, // Użyj .raw, aby uzyskać prymitywną wartość łańcuchową  meta: [    {      name: "description",      content: content.metaDescription.raw, // Użyj .raw, aby uzyskać prymitywną wartość łańcuchową    },  ],});</script><template>  <h1><content.title /></h1></template>
      # Ignoruj pliki generowane przez Intlayer.intlayer