Автор:
    Дата створення:2025-03-13Останнє оновлення:2026-10-08

    Вміст файлу / Вбудовування файлів в Intlayer

    В Intlayer функція file дозволяє вбудовувати вміст зовнішніх файлів у dictionary. Такий підхід гарантує, що Intlayer розпізнає файл-джерело, що забезпечує плавну інтеграцію з Intlayer Visual Editor та CMS.

    Чому використовувати file замість import, require або fs?

    Щоб використовувати вбудований вміст файлу у клієнтських компонентах Next.js, отримайте його за допомогою хука useIntlayer. Ось приклад:

    Налаштування вмісту файлу

    Щоб вбудувати вміст файлу у ваш проект Intlayer, використовуйте функцію file у модулі контенту. Нижче наведені приклади, що демонструють різні реалізації.

    **/*.content.ts
    import { file, type Dictionary } from "intlayer";
    
    const myFileContent = {
      key: "my_key",
      content: {
        myFile: file("./path/to/file.txt"),
      },
    } satisfies Dictionary;
    
    export default myFileContent;
    

    Використання вмісту файлу в React Intlayer

    To use embedded file content in a React component, import and use the useIntlayer hook from the react-intlayer package. This retrieves the content from the specified key and allows it to be displayed dynamically.

    **/*.tsx
    import type { FC } from "react";
    import { useIntlayer } from "react-intlayer";
    
    const FileComponent: FC = () => {
      const { myFile } = useIntlayer("my_key");
    
      return (
        <div>
          <pre>{myFile}</pre>
        </div>
      );
    };
    
    export default FileComponent;
    

    Щоб використовувати вбудований вміст файлу у клієнтських компонентах Next.js, отримайте його за допомогою хука useIntlayer. Ось приклад:

    **/*.tsx
    "use client";
    
    import type { FC } from "react";
    import { useIntlayer } from "next-intlayer";
    
    const FileComponent: FC = () => {
      const { myFile } = useIntlayer("my_key");
    
      return (
        <div>
          <pre>{myFile}</pre>
        </div>
      );
    };
    
    export default FileComponent;
    

    Щоб використовувати вбудований вміст файлу у компонентах Vue, отримайте його за допомогою хука useIntlayer. Ось приклад:

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

    Щоб використовувати вбудований вміст файлу у компонентах Svelte, отримайте його за допомогою хука useIntlayer. Доступ до сховища здійснюється через $. Ось приклад:

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

    Щоб використовувати вбудований вміст файлу у компонентах Preact, отримайте його за допомогою хука useIntlayer. Ось приклад:

    **/*.tsx
    import type { FC } from "preact";
    import { useIntlayer } from "preact-intlayer";
    
    const FileComponent: FC = () => {
      const { myFile } = useIntlayer("my_key");
    
      return (
        <div>
          <pre>{myFile}</pre>
        </div>
      );
    };
    
    export default FileComponent;
    

    Щоб використовувати вбудований вміст файлу у компонентах SolidJS, отримайте його за допомогою хука useIntlayer. Ось приклад:

    **/*.tsx
    import type { Component } from "solid-js";
    import { useIntlayer } from "solid-intlayer";
    
    const FileComponent: Component = () => {
      const { myFile } = useIntlayer("my_key");
    
      return (
        <div>
          <pre>{myFile}</pre>
        </div>
      );
    };
    
    export default FileComponent;
    

    Щоб використовувати вбудований вміст файлу у компонентах Angular, отримайте його за допомогою хука useIntlayer. Ось приклад:

    app.component.ts
    import { Component } from "@angular/core";
    import { useIntlayer } from "angular-intlayer";
    
    @Component({
      selector: "app-file",
      template: `
        <div>
          <pre>{{ content().myFile }}</pre>
        </div>
      `,
    })
    export class FileComponent {
      content = useIntlayer("my_key");
    }
    

    Щоб використовувати вбудований вміст файлу із vanilla-intlayer, отримайте його за допомогою хука useIntlayer. Ось приклад:

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

    Приклад багатомовного Markdown

    Щоб підтримувати багатомовні редаговані Markdown-файли, ви можете використовувати file у поєднанні з t() та md() для визначення версій вмісту Markdown різними мовами.

    **/*.content.ts
    import { file, t, md, type Dictionary } from "intlayer";
    
    const myMultilingualContent = {
      key: "my_multilingual_key",
      content: {
        myContent: md(
          t({
            en: file("src/components/test.en.md"),
            fr: file("src/components/test.fr.md"),
            es: file("src/components/test.es.md"),
          })
        ),
      },
    } satisfies Dictionary;
    
    export default myMultilingualContent;
    

    Ця конфігурація дозволяє динамічно отримувати вміст залежно від мовних налаштувань користувача. При використанні в Intlayer Visual Editor або CMS система розпізнає, що вміст походить із зазначених Markdown-файлів, і забезпечить їхню можливість редагування.

    Різні типи шляхів

    Коли ви використовуєте функцію file, можна застосовувати різні типи шляхів, щоб вказати файл для вставки.

    • file("./path/to/file.txt") - Відносний шлях відносно поточного файлу
    • file("path/to/file.txt") - Відносний шлях відносно кореневої директорії проєкту
    • file("/users/username/path/to/file.txt") - Абсолютний шлях

    Як Intlayer обробляє вміст файлу

    Функція file базується на модулі fs у Node.js для читання вмісту вказаного файлу та вставлення його до словника. У поєднанні з Intlayer Visual Editor або CMS Intlayer може відстежувати зв’язок між словником і файлом. Це дозволяє Intlayer:

    • Розпізнавати, що вміст походить із конкретного файлу.
    • Автоматично оновлювати вміст словника при редагуванні пов’язаного файлу.
    • Забезпечте синхронізацію між файлом та словником, зберігаючи цілісність вмісту.

    Додаткові ресурси

    Для детальнішої інформації щодо налаштування та використання вставки файлів в Intlayer зверніться до наступних ресурсів:

    Ці ресурси надають додаткові відомості про вбудовування файлів, керування контентом та інтеграцію Intlayer із різними фреймворками.