Autor:
    Data utworzenia:2025-02-07Ostatnia aktualizacja:2025-06-29

    Zawartość warunkowa / Warunek w Intlayer

    Jak działa warunek

    W Intlayer zawartość warunkowa jest realizowana za pomocą funkcji cond, która mapuje określone warunki (zazwyczaj wartości boolean) na odpowiadającą im zawartość. To podejście pozwala dynamicznie wybierać zawartość na podstawie podanego warunku. Po integracji z React Intlayer lub Next Intlayer odpowiednia zawartość jest automatycznie wybierana zgodnie z warunkiem podanym w czasie wykonywania.

    Konfiguracja zawartości warunkowej

    Aby skonfigurować zawartość warunkową w swoim projekcie Intlayer, utwórz moduł zawartości, który zawiera definicje warunkowe. Poniżej znajdują się przykłady w różnych formatach.

    **/*.content.ts
    import { cond, type Dictionary } from "intlayer";
    
    const myConditionalContent = {
      key: "my_key",
      content: {
        myCondition: cond({
          true: "moja zawartość, gdy jest prawda",
          false: "moja zawartość, gdy jest fałsz",
          fallback: "moja zawartość, gdy warunek zawodzi", // Opcjonalne
        }),
      },
    } satisfies Dictionary;
    
    export default myConditionalContent;
    
    Jeśli nie zostanie zadeklarowany fallback, ostatni zadeklarowany klucz zostanie użyty jako fallback, jeśli warunek nie zostanie spełniony.

    Używanie zawartości warunkowej z React Intlayer

    To utilize conditional content within a React component, import and use the useIntlayer hook from the react-intlayer package. This hook fetches the content for the specified key and allows you to pass in a condition to select the appropriate output.

    **/*.tsx
    import type { FC } from "react";
    import { useIntlayer } from "react-intlayer";
    
    const ConditionalComponent: FC = () => {
      const { myCondition } = useIntlayer("my_key");
    
      return (
        <div>
          <p>
            {
              /* Output: my content when it's true */
              myCondition(true)
            }
          </p>
          <p>
            {
              /* Output: my content when it's false */
              myCondition(false)
            }
          </p>
          <p>
            {
              /* Output: my content when the condition fails */
              myCondition("")
            }
          </p>
          <p>
            {
              /* Output: my content when the condition fails */
              myCondition(undefined)
            }
          </p>
        </div>
      );
    };
    
    export default ConditionalComponent;
    

    To utilize conditional content in Next.js Client Components, retrieve it via the useIntlayer hook. Here's an example:

    **/*.tsx
    "use client";
    
    import type { FC } from "react";
    import { useIntlayer } from "next-intlayer";
    
    const ConditionalComponent: FC = () => {
      const { myCondition } = useIntlayer("my_key");
    
      return (
        <div>
          <p>{myCondition(true)}</p>
          <p>{myCondition(false)}</p>
        </div>
      );
    };
    
    export default ConditionalComponent;
    

    To utilize conditional content in Vue components, retrieve it via the useIntlayer hook. Here's an example:

    **/*.vue
    <script setup lang="ts">
    import { useIntlayer } from "vue-intlayer";
    
    const { myCondition } = useIntlayer("my_key");
    </script>
    
    <template>
      <div>
        <p>{{ myCondition(true) }}</p>
        <p>{{ myCondition(false) }}</p>
      </div>
    </template>
    

    To utilize conditional content in Svelte components, retrieve it via the useIntlayer hook. The store is accessed with $. Here's an example:

    **/*.svelte
    <script lang="ts">
    import { useIntlayer } from "svelte-intlayer";
    
    const content = useIntlayer("my_key");
    </script>
    
    <div>
      <p>{$content.myCondition(true)}</p>
      <p>{$content.myCondition(false)}</p>
    </div>
    

    To utilize conditional content in Preact components, retrieve it via the useIntlayer hook. Here's an example:

    **/*.tsx
    import type { FC } from "preact";
    import { useIntlayer } from "preact-intlayer";
    
    const ConditionalComponent: FC = () => {
      const { myCondition } = useIntlayer("my_key");
    
      return (
        <div>
          <p>{myCondition(true)}</p>
          <p>{myCondition(false)}</p>
        </div>
      );
    };
    
    export default ConditionalComponent;
    

    To utilize conditional content in SolidJS components, retrieve it via the useIntlayer hook. Here's an example:

    **/*.tsx
    import type { Component } from "solid-js";
    import { useIntlayer } from "solid-intlayer";
    
    const ConditionalComponent: Component = () => {
      const { myCondition } = useIntlayer("my_key");
    
      return (
        <div>
          <p>{myCondition(true)}</p>
          <p>{myCondition(false)}</p>
        </div>
      );
    };
    
    export default ConditionalComponent;
    

    To utilize conditional content in Angular components, retrieve it via the useIntlayer hook. Here's an example:

    app.component.ts
    import { Component } from "@angular/core";
    import { useIntlayer } from "angular-intlayer";
    
    @Component({
      selector: "app-conditional",
      template: `
        <div>
          <p>{{ content().myCondition(true) }}</p>
          <p>{{ content().myCondition(false) }}</p>
        </div>
      `,
    })
    export class ConditionalComponent {
      content = useIntlayer("my_key");
    }
    

    To utilize conditional content with vanilla-intlayer, retrieve it via the useIntlayer hook. Here's an example:

    **/*.ts
    import { installIntlayer, useIntlayer } from "vanilla-intlayer";
    
    installIntlayer();
    
    const content = useIntlayer("my_key").onChange((newContent) => {
      document.getElementById("true-content")!.textContent =
        newContent.myCondition(true);
      document.getElementById("false-content")!.textContent =
        newContent.myCondition(false);
    });
    
    // Initial render
    document.getElementById("true-content")!.textContent =
      content.myCondition(true);
    document.getElementById("false-content")!.textContent =
      content.myCondition(false);
    

    Dodatkowe zasoby

    Aby uzyskać bardziej szczegółowe informacje na temat konfiguracji i użytkowania, zapoznaj się z następującymi zasobami:

    Te zasoby oferują dodatkowe informacje na temat konfiguracji i użytkowania Intlayer w różnych środowiskach i frameworkach.