Author:
    Creation:2025-07-27Last update:2025-07-27

    Gender-Based Content / Gender in Intlayer

    How Gender Works

    In Intlayer, gender-based content is achieved through the gender function, which maps specific gender values ('male', 'female') to their corresponding content. This approach enables you to dynamically select content based on a given gender. When integrated with React Intlayer or Next Intlayer, the appropriate content is automatically chosen according to the gender provided at runtime.

    Setting Up Gender-Based Content

    To set up gender-based content in your Intlayer project, create a content module that includes your gender-specific definitions. Below are examples in various formats.

    **/*.content.ts
    import { gender, type Dictionary } from "intlayer";
    
    const myGenderContent = {
      key: "my_key",
      content: {
        myGender: gender({
          male: "my content for male users",
          female: "my content for female users",
          fallback: "my content when gender is not specified", // Optional
        }),
      },
    } satisfies Dictionary;
    
    export default myGenderContent;
    
    If no fallback is declared, the last key declared will be taken as a fallback if the gender is not specified or doesn't match any defined gender.

    Using Gender-Based Content

    To utilize gender-based 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 gender to select the appropriate output.

    **/*.tsx
    import type { FC } from "react";
    import { useIntlayer } from "react-intlayer";
    
    const GenderComponent: FC = () => {
      const { myGender } = useIntlayer("my_key");
    
      return (
        <div>
          <p>
            {
              /* Output: my content for male users */
              myGender("male")
            }
          </p>
          <p>
            {
              /* Output: my content for female users */
              myGender("female")
            }
          </p>
          <p>
            {
              /* Output: my content for male users */
              myGender("m")
            }
          </p>
          <p>
            {
              /* Output: my content for female users */
              myGender("f")
            }
          </p>
          <p>
            {
              /* Output: my content when gender is not specified */
              myGender("")
            }
          </p>
          <p>
            {
              /* Output: my content when gender is not specified */
              myGender(undefined)
            }
          </p>
        </div>
      );
    };
    
    export default GenderComponent;
    

    To utilize gender-based 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 GenderComponent: FC = () => {
      const { myGender } = useIntlayer("my_key");
    
      return (
        <div>
          <p>{myGender("male")}</p>
          <p>{myGender("female")}</p>
        </div>
      );
    };
    
    export default GenderComponent;
    

    To utilize gender-based 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 { myGender } = useIntlayer("my_key");
    </script>
    
    <template>
      <div>
        <p>{{ myGender("male") }}</p>
        <p>{{ myGender("female") }}</p>
      </div>
    </template>
    

    To utilize gender-based 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.myGender("male")}</p>
      <p>{$content.myGender("female")}</p>
    </div>
    

    To utilize gender-based 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 GenderComponent: FC = () => {
      const { myGender } = useIntlayer("my_key");
    
      return (
        <div>
          <p>{myGender("male")}</p>
          <p>{myGender("female")}</p>
        </div>
      );
    };
    
    export default GenderComponent;
    

    To utilize gender-based 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 GenderComponent: Component = () => {
      const { myGender } = useIntlayer("my_key");
    
      return (
        <div>
          <p>{myGender("male")}</p>
          <p>{myGender("female")}</p>
        </div>
      );
    };
    
    export default GenderComponent;
    

    To utilize gender-based 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-gender",
      template: `
        <div>
          <p>{{ content().myGender("male") }}</p>
          <p>{{ content().myGender("female") }}</p>
        </div>
      `,
    })
    export class GenderComponent {
      content = useIntlayer("my_key");
    }
    

    To utilize gender-based 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("gender-male")!.textContent =
        newContent.myGender("male");
      document.getElementById("gender-female")!.textContent =
        newContent.myGender("female");
    });
    
    // Initial render
    document.getElementById("gender-male")!.textContent = content.myGender("male");
    document.getElementById("gender-female")!.textContent =
      content.myGender("female");
    

    Additional Resources

    For more detailed information on configuration and usage, refer to the following resources:

    These resources offer further insights into the setup and usage of Intlayer across various environments and frameworks.