Creation:2026-01-20Last update:2026-03-24

    HTML-Inhalte / HTML in Intlayer

    Intlayer unterstützt HTML-Inhalte, sodass Sie reichhaltige, strukturierte Inhalte in Ihre Dictionaries einbetten können. Diese Inhalte können mit Standard-HTML-Tags gerendert oder zur Laufzeit durch benutzerdefinierte Komponenten ersetzt werden.

    HTML-Inhalte deklarieren

    Sie können HTML-Inhalte mit der html-Funktion oder einfach als String deklarieren.

    Verwenden Sie die html-Funktion, um HTML-Inhalte explizit zu deklarieren. Dies stellt sicher, dass Standard-Tags korrekt zugeordnet werden, selbst wenn die automatische Erkennung deaktiviert ist.

    htmlDictionary.content.ts
    import { html, type Dictionary } from "intlayer";const htmlDictionary = {  key: "app",  contentAutoTransformation: true, // kann in der Konfigurationsdatei festgelegt werden  content: {    myHtmlContent:  html("<p>Hello <strong>World</strong></p>"),  },} satisfies Dictionary;export default htmlDictionary;

    Der html()-Knoten

    Die html()-Funktion ist ein neues Feature in Intlayer v8, mit dem Sie HTML-Inhalte in Ihren Wörterbüchern explizit definieren können. Während Intlayer HTML-Inhalte oft automatisch erkennt, bietet die Verwendung der html()-Funktion mehrere Vorteile:

    • Typsicherheit: Mit der html()-Funktion können Sie die erwarteten Props für benutzerdefinierte Komponenten definieren, was eine bessere Autovervollständigung und Typprüfung in Ihrem Editor ermöglicht.
    • Explizite Deklaration: Sie stellt sicher, dass eine Zeichenfolge immer als HTML behandelt wird, auch wenn sie keine Standard-HTML-Tags enthält, die die automatische Erkennung auslösen würden.
    • Definition benutzerdefinierter Komponenten: Sie können ein zweites Argument an html() übergeben, um die benutzerdefinierten Komponenten und deren erwartete Prop-Typen zu definieren.
    typescript
    import { html } from "intlayer";const myContent = html(  "<MyCustomComponent title='Hallo'>Welt</MyCustomComponent>",  {    MyCustomComponent: {      title: "string",      children: "node",    },  });

    Wenn Sie die Methode .use() auf einem HTML-Knoten verwenden, werden die von Ihnen bereitgestellten Komponenten gegen die in der html()-Funktion bereitgestellte Definition (falls verfügbar) geprüft.


    HTML rendern

    Das Rendern kann automatisch durch das Inhaltssystem von Intlayer oder manuell mit spezialisierten Tools erfolgen.

    Automatisches Rendern (mit useIntlayer)

    Wenn Sie auf Inhalte über useIntlayer zugreifen, sind HTML-Knoten bereits für das Rendering vorbereitet.

    HTML-Knoten können direkt als JSX gerendert werden. Standard-Tags funktionieren automatisch.

    App.tsx
    import { useIntlayer } from "react-intlayer";const AppContent = () => {  const { myHtmlContent } = useIntlayer("app");  return <div>{myHtmlContent}</div>;};

    Verwenden Sie die .use()-Methode, um benutzerdefinierte Komponenten bereitzustellen oder Tags zu überschreiben:

    tsx
    {myHtmlContent.use({  p: (props) => <p className="prose" {...props} />,  CustomLink: ({ children }) => <a href="/details">{children}</a>,})}

    Globale Konfiguration mit HTMLProvider

    Sie können das HTML-Rendering global für Ihre gesamte Anwendung konfigurieren. Dies ist ideal, um benutzerdefinierte Komponenten zu definieren, die in allen HTML-Inhalten verfügbar sein sollen.

    AppProvider.tsx
    import { HTMLProvider } from "react-intlayer/html";export const AppProvider = ({ children }) => (  <HTMLProvider    components={{      p: (props) => <p className="prose" {...props} />,      CustomLink: ({ children }) => <a href="/details">{children}</a>,    }}  >    {children}  </HTMLProvider>);

    Sie können auch Ihren eigenen HTML-Renderer verwenden:

    AppProvider.tsx
    import { HTMLProvider } from "react-intlayer/html";export const AppProvider = ({ children }) => (  <HTMLProvider    renderHTML={async (html) => {      const { renderHTML } = await import('react-intlayer/html');      return renderHTML(html);    }}  >    {children}  </HTMLProvider>);
    Das dynamische Importieren Ihres HTML-Renderers ist eine gute Möglichkeit, die Bundle-Größe Ihrer Anwendung zu reduzieren.

    Manuelles Rendering & Erweiterte Tools

    Wenn Sie rohe HTML-Strings rendern müssen oder mehr Kontrolle über die Komponentenzuordnung benötigen, verwenden Sie die folgenden Tools.

    <HTMLRenderer /> Komponente

    Rendern Sie einen HTML-String mit spezifischen Komponenten.

    tsx
    import { HTMLRenderer } from "react-intlayer/html";<HTMLRenderer components={{ p: MyCustomP }}>  {"<p>Hello World</p>"}</HTMLRenderer>

    useHTMLRenderer() Hook

    Holen Sie sich eine vorkonfigurierte Renderer-Funktion.

    tsx
    import { useHTMLRenderer } from "react-intlayer/html";const renderHTML = useHTMLRenderer({  components: { strong: (props) => <strong {...props} className="text-red-500" /> }});return renderHTML("<p>Hello <strong>World</strong></p>");

    renderHTML() Utility

    Eigenständiges Utility zum Rendern außerhalb von Komponenten.

    tsx
    import { renderHTML } from "react-intlayer/html";const jsx = renderHTML("<p>Hello</p>", { components: { p: 'div' } });

    Optionen-Referenz

    Diese Optionen können an HTMLProvider, HTMLRenderer, useHTMLRenderer und renderHTML übergeben werden.

    Option Typ Standard Beschreibung
    components Record<string, any> {} Eine Map von HTML-Tags oder benutzerdefinierten Komponentennamen zu Komponenten.
    renderHTML Function null Eine benutzerdefinierte Rendering-Funktion, um den Standard-HTML-Parser vollständig zu ersetzen (Nur für Vue/Svelte Provider).
    Hinweis: Für React und Preact werden Standard-HTML-Tags automatisch bereitgestellt. Sie müssen das components-Prop nur übergeben, wenn Sie sie überschreiben oder benutzerdefinierte Komponenten hinzufügen möchten.