Autor:
    Data utworzenia:2026-06-12Ostatnia aktualizacja:2026-06-12

    Kolekcje

    Kolekcja (Collection) to zestaw plików zawartości, które współdzielą ten sam klucz słownika (key), ale każdy deklaruje inny indeks elementu (item). Intlayer scala je w jedną uporządkowaną listę podczas budowania projektu.

    Deklarowanie elementów kolekcji

    Każdy plik reprezentuje jeden element. Pole item to jego pozycja na liście (indeksowanie od 1).

    faq.1.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "faq",
      item: 1,
      content: {
        question: t({ en: "What is Intlayer?", fr: "Qu'est-ce qu'Intlayer ?" }),
        answer: t({ en: "An i18n toolkit.", fr: "Une boîte à outils i18n." }),
      },
    } satisfies Dictionary;
    
    export default dictionary;
    
    faq.2.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "faq",
      item: 2,
      content: {
        question: t({ en: "Is it free?", fr: "Est-ce gratuit ?" }),
        answer: t({ en: "Yes, open-source.", fr: "Oui, open-source." }),
      },
    } satisfies Dictionary;
    
    export default dictionary;
    

    Używanie kolekcji

    Wszystkie elementy

    FAQ.tsx
    import { useIntlayer } from "react-intlayer";
    
    export const FAQ = () => {
    const items = useIntlayer("faq"); // { question: string; answer: string }[]
    
    return (
      <ul>
        {items.map((item, index) => (
          <li key={index}>
            <strong>{item.question}</strong>
            <p>{item.answer}</p>
          </li>
        ))}
      </ul>
    );
    };
    
    FAQ.tsx
    import { useIntlayer } from "next-intlayer";
    
    export const FAQ = () => {
    const items = useIntlayer("faq"); // { question: string; answer: string }[]
    
    return (
      <ul>
        {items.map((item, index) => (
          <li key={index}>
            <strong>{item.question}</strong>
            <p>{item.answer}</p>
          </li>
        ))}
      </ul>
    );
    };
    
    FAQ.vue
    <script setup>
    import { useIntlayer } from "vue-intlayer";
    const items = useIntlayer("faq");
    </script>
    
    <template>
    <ul>
      <li v-for="(item, index) in items" :key="index">
        <strong>{{ item.question }}</strong>
        <p>{{ item.answer }}</p>
      </li>
    </ul>
    </template>
    
    FAQ.svelte
    <script lang="ts">
    import { useIntlayer } from "svelte-intlayer";
    const items = useIntlayer("faq");
    </script>
    
    <ul>
    {#each $items as item}
      <li>
        <strong>{item.question}</strong>
        <p>{item.answer}</p>
      </li>
    {/each}
    </ul>
    
    FAQ.tsx
    import { useIntlayer } from "preact-intlayer";
    
    export const FAQ = () => {
    const items = useIntlayer("faq"); // { question: string; answer: string }[]
    
    return (
      <ul>
        {items.map((item, index) => (
          <li key={index}>
            <strong>{item.question}</strong>
            <p>{item.answer}</p>
          </li>
        ))}
      </ul>
    );
    };
    
    FAQ.tsx
    import { useIntlayer } from "solid-intlayer";
    import { For } from "solid-js";
    
    export const FAQ = () => {
    const items = useIntlayer("faq"); // { question: string; answer: string }[]
    
    return (
      <ul>
        <For each={items()}>
          {(item) => (
            <li>
              <strong>{item.question}</strong>
              <p>{item.answer}</p>
            </li>
          )}
        </For>
      </ul>
    );
    };
    
    faq.component.ts
    import { Component } from "@angular/core";
    import { useIntlayer } from "angular-intlayer";
    
    @Component({
    selector: "app-faq",
    template: `
      <ul>
        @for (item of items(); track $index) {
          <li>
            <strong>{{ item.question }}</strong>
            <p>{{ item.answer }}</p>
          </li>
        }
      </ul>
    `,
    })
    export class FAQComponent {
    items = useIntlayer("faq");
    }
    
    faq.js
    import { useIntlayer } from "vanilla-intlayer";
    
    const faq = useIntlayer("faq");
    
    faq.forEach((item) => {
    console.log(item.question);
    console.log(item.answer);
    });
    

    Pojedynczy element według indeksu

    tsx
    const faq2 = useIntlayer("faq", { item: 2 });
    // → { question: string; answer: string }
    

    Pojedynczy element z wyraźnym wskazaniem lokalizacji

    tsx
    const faq2Pl = useIntlayer("faq", { item: 2, locale: "pl" });
    

    Typowe przypadki użycia

    • Listy FAQ (najczęściej zadawane pytania)
    • Plany cenowe / cenniki
    • Slajdy w karuzelach i sliderach
    • Instrukcje krok po kroku