StartseiteSandboxShowcaseAppDokumentBlog
    • EnglishEnglisch
      EN
    • русскийRussisch
      RU
    • 日本語Japanisch
      JA
    • françaisFranzösisch
      FR
    • 한국어Koreanisch
      KO
    • 中文Chinesisch
      ZH
    • españolSpanisch
      ES
    • DeutschDeutsch
      DE
    • العربيةArabisch
      AR
    • italianoItalienisch
      IT
    • British EnglishEnglisch (Vereinigtes Königreich)
      EN-GB
    • portuguêsPortugiesisch
      PT
    • हिन्दीHindi
      HI
    • TürkçeTürkisch
      TR
    • polskiPolnisch
      PL
    • IndonesiaIndonesisch
      ID
    • Tiếng ViệtVietnamesisch
      VI
    • українськаUkrainisch
      UK
    /
    Dokumentation nach Framework filtern
    Alt+←
    Warum Intlayer?
    Anfangen
    Konzept
    • Wie Intlayer funktioniert
    • Konfiguration
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Visueller Editor
    • CMS
    • CI/CD-Integration
    • ÜbersetzungPluralAufzählungBedingungGeschlechtEinfügungDateiVerschachtelungMarkdownHTMLFunktionsabruf
    • Datei pro Locale
    • Compiler
    • Automatisches Ausfüllen
    • Testen
    • Bundle-Optimierung
    Umwelt
    • Next.js 14 und App Router
      Next.js 15
      Next.js ohne Locale URL
      Next.js und Page Router
      Compiler
    • Tanstack Start Solid
    • Astro und React
      Astro und Svelte
      Astro und Vue
      Astro und Solid
      Astro und Preact
      Astro und Lit
      Astro und Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt und Vue
    • Vite und Solid
    • SvelteKit
    • Vite und Preact
    • Vite und Vanilla JS
    • Vite und Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native und Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx und React
    Plugins
    • JSON
    • gettext (.po)
    VS Code-Erweiterung
    Agent
    • MCP-Server
    • Agenten-Fähigkeiten
    Versionen
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Frage stellen
    1. Documentation
    2. Warum Intlayer?
    Erstellung:2024-08-14Letzte Aktualisierung:2025-09-27
    Referenzieren Sie diese Dokumentation mit Ihrem bevorzugten AI-Assistenten
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren

    Versionshistorie

    1. "Compiler-Veröffentlichung"
      v7.3.127.11.2025
    2. "Vergleichstabelle aktualisiert"
      v5.8.019.8.2025
    3. "Initialer Verlauf"
      v5.5.1029.6.2025

    Der Inhalt dieser Seite wurde mit einer KI übersetzt.

    Den englischen Originaltext ansehen
    Diese Dokumentation bearbeiten

    Wenn Sie eine Idee haben, um diese Dokumentation zu verbessern, zögern Sie bitte nicht, durch das Einreichen eines Pull-Requests auf GitHub beizutragen.

    GitHub-Link zur Dokumentation
    Kopieren

    Markdown des Dokuments in die Zwischenablage kopieren

    Warum sollten Sie Intlayer in Betracht ziehen?

    Was ist Intlayer?

    Intlayer ist eine Internationalisierungsbibliothek, die speziell für JavaScript-Entwickler entwickelt wurde. Sie ermöglicht es, Ihre Inhalte überall in Ihrem Code zu deklarieren. Sie wandelt Deklarationen von mehrsprachigen Inhalten in strukturierte Wörterbücher um, die sich leicht in Ihren Code integrieren lassen. Durch die Verwendung von TypeScript macht Intlayer Ihre Entwicklung robuster und effizienter.

    Warum wurde Intlayer erstellt?

    Intlayer wurde entwickelt, um ein häufiges Problem zu lösen, das alle gängigen i18n-Bibliotheken wie next-intl, react-i18next, react-intl, next-i18next, react-intl und vue-i18n betrifft.

    Alle diese Lösungen verfolgen einen zentralisierten Ansatz zur Auflistung und Verwaltung Ihrer Inhalte. Zum Beispiel:

    bash
    Code kopieren

    Kopieren Sie den Code in die Zwischenablage

    .├── locales│   ├── en.json│   ├── es.json│   └── fr.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx

    Oder hier unter Verwendung von Namespaces:

    bash
    Code kopieren

    Kopieren Sie den Code in die Zwischenablage

    .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx

    Diese Art von Architektur verlangsamt den Entwicklungsprozess und macht die Codebasis aus mehreren Gründen komplexer in der Wartung:

    1. Für jede neu erstellte Komponente sollten Sie:

      • Die neue Ressource/den neuen Namespace im Ordner locales erstellen
      • Daran denken, den neuen Namespace in Ihre Seite zu importieren
      • Ihren Inhalt übersetzen (oft manuell durch Kopieren/Einfügen von KI-Anbietern)
    2. Für jede Änderung an Ihren Komponenten sollten Sie:

      • Die zugehörige Ressource/den zugehörigen Namespace suchen (weit entfernt von der Komponente)
      • Ihren Inhalt übersetzen
      • Sicherstellen, dass Ihr Inhalt für jede Locale auf dem neuesten Stand ist
      • Überprüfen, ob Ihr Namespace keine ungenutzten Schlüssel/Werte enthält
      • Sicherstellen, dass die Struktur Ihrer JSON-Dateien für alle Locales identisch ist

    Bei professionellen Projekten, die diese Lösungen verwenden, werden häufig Lokalisierungsplattformen eingesetzt, um die Übersetzung Ihrer Inhalte zu verwalten. Dies kann jedoch bei großen Projekten schnell kostspielig werden.

    Um dieses Problem zu lösen, verfolgt Intlayer einen Ansatz, bei dem Ihre Inhalte pro Komponente definiert werden und nah an Ihrer Komponente bleiben, so wie wir es oft mit CSS (styled-components), Typen, Dokumentation (storybook) oder Unit-Tests (jest) machen.

    bash
    Code kopieren

    Kopieren Sie den Code in die Zwischenablage

    .└── components    └── MyComponent        ├── index.content.ts        ├── index.test.tsx        ├── index.stories.tsx        └── index.tsx
    ./components/MyComponent/index.content.ts
    Code kopieren

    Kopieren Sie den Code in die Zwischenablage

    import { t, type Dictionary } from "intlayer";
    
    const componentExampleContent = {
      key: "component-example",
      content: {
        myTranslatedContent: t({
          en: "Hello World",
          es: "Hola Mundo",
          fr: "Bonjour le monde",
        }),
      },
    } satisfies Dictionary;
    
    export default componentExampleContent;
    ./components/MyComponent/index.tsx
    Code kopieren

    Kopieren Sie den Code in die Zwischenablage

    import { useIntlayer } from "react-intlayer";
    
    export const ComponentExample = () => {
      const { myTranslatedContent } = useIntlayer("component-example");
    
      return <span>{myTranslatedContent}</span>;
    };

    Dieser Ansatz ermöglicht es Ihnen:

    1. Die Entwicklungsgeschwindigkeit zu erhöhen

      • .content.{{ts|mjs|cjs|json}} Dateien können mit einer VSCode-Erweiterung erstellt werden
      • KI-Tools zur Autovervollständigung in Ihrer IDE (wie GitHub Copilot) können Ihnen helfen, Ihre Inhalte zu deklarieren, was das Kopieren/Einfügen reduziert
    2. Ihre Codebasis zu bereinigen

      • Die Komplexität zu reduzieren
      • Die Wartbarkeit zu erhöhen
    3. Ihre Komponenten und die zugehörigen Inhalte einfacher zu duplizieren (Beispiel: Login/Register-Komponenten usw.)

      • Indem das Risiko verringert wird, die Inhalte anderer Komponenten zu beeinträchtigen
      • Indem Sie Ihre Inhalte ohne externe Abhängigkeiten von einer Anwendung in eine andere kopieren/einfügen
    4. Vermeiden Sie es, Ihre Codebasis mit ungenutzten Schlüsseln/Werten für nicht genutzte Komponenten zu belasten

      • Wenn Sie eine Komponente nicht verwenden, importiert Intlayer die zugehörigen Inhalte nicht
      • Wenn Sie eine Komponente löschen, werden Sie sich leichter daran erinnern, die zugehörigen Inhalte zu entfernen, da sie sich im selben Ordner befinden
    5. Reduzieren Sie die kognitiven Kosten für KI-Agenten bei der Deklaration Ihrer mehrsprachigen Inhalte

      • Der KI-Agent muss nicht Ihre gesamte Codebasis scannen, um zu wissen, wo er Ihre Inhalte implementieren muss
      • Übersetzungen können einfach durch KI-Tools zur Autovervollständigung in Ihrer IDE (wie GitHub Copilot) erstellt werden
    6. Optimieren Sie die Ladeleistung

      • Wenn eine Komponente per Lazy-Loading geladen wird, werden die zugehörigen Inhalte gleichzeitig geladen

    Zusätzliche Funktionen von Intlayer

    Alle Tabellendaten anzeigen

    Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen

    Funktion Beschreibung
    Feature Framework-übergreifende Unterstützung

    Intlayer ist mit allen gängigen Frameworks und Bibliotheken kompatibel, einschließlich Next.js, React, Vite, Vue.js, Nuxt, Preact, Express und mehr.
    Feature JavaScript-gestütztes Inhaltsmanagement

    Nutzen Sie die Flexibilität von JavaScript, um Ihre Inhalte effizient zu definieren und zu verwalten.

    - Inhaltsdeklaration
    Feature Compiler

    Der Intlayer-Compiler extrahiert automatisch den Inhalt aus den Komponenten und generiert die Wörterbuchdateien.

    - Compiler
    Feature Inhaltsdeklarationsdatei pro Locale

    Beschleunigen Sie Ihre Entwicklung, indem Sie Ihre Inhalte einmal deklarieren, bevor sie automatisch generiert werden.

    - Inhaltsdeklarationsdatei pro Locale
    Feature Typsichere Umgebung

    Nutzen Sie TypeScript, um sicherzustellen, dass Ihre Inhaltsdefinitionen und Ihr Code fehlerfrei sind, und profitieren Sie gleichzeitig von der IDE-Autovervollständigung.

    - TypeScript-Konfiguration
    Feature Vereinfachtes Setup

    Starten Sie schnell mit minimaler Konfiguration. Passen Sie Einstellungen für Internationalisierung, Routing, KI, Build und Inhaltsverwaltung mühelos an.

    - Erkunden Sie die Next.js-Integration
    Feature Vereinfachter Inhaltsabruf

    Sie müssen Ihre t-Funktion nicht für jedes Inhaltselement aufrufen. Rufen Sie alle Ihre Inhalte direkt mit einem einzigen Hook ab.

    - React-Integration
    Feature Konsistente Implementierung von Server-Komponenten

    Perfekt geeignet für Next.js-Server-Komponenten. Verwenden Sie dieselbe Implementierung sowohl für Client- als auch für Server-Komponenten; es ist nicht erforderlich, Ihre t-Funktion an jede Server-Komponente weiterzugeben.

    - Server-Komponenten
    Feature Organisierte Codebasis

    Halten Sie Ihre Codebasis organisierter: 1 Komponente = 1 Wörterbuch im selben Ordner. Übersetzungen in der Nähe ihrer jeweiligen Komponenten verbessern die Wartbarkeit und Klarheit.

    - Wie Intlayer funktioniert
    Feature Erweitertes Routing

    Volle Unterstützung für App-Routing, das sich nahtlos an komplexe Anwendungsstrukturen anpasst, für Next.js, React, Vite, Vue.js usw.

    - Erkunden Sie die Next.js-Integration
    Feature Markdown-Unterstützung

    Importieren und interpretieren Sie Locale-Dateien und Remote-Markdown für mehrsprachige Inhalte wie Datenschutzrichtlinien, Dokumentationen usw. Interpretieren Sie Markdown-Metadaten und machen Sie sie in Ihrem Code zugänglich.

    - Inhaltsdateien
    Feature Kostenloser visueller Editor & CMS

    Ein kostenloser visueller Editor und ein CMS stehen für Content-Autoren zur Verfügung, wodurch eine Lokalisierungsplattform überflüssig wird. Halten Sie Ihre Inhalte mit Git synchron oder externalisieren Sie sie ganz oder teilweise mit dem CMS.

    - Intlayer Editor
    - Intlayer CMS
    Feature Tree-shakable Inhalt

    Tree-shakable Inhalt, der die Größe des endgültigen Bundles reduziert. Lädt Inhalte pro Komponente und schließt ungenutzte Inhalte aus Ihrem Bundle aus. Unterstützt Lazy Loading, um die Ladeeffizienz der App zu verbessern.

    - Optimierung des App-Builds
    Feature Statisches Rendering

    Blockiert statisches Rendering nicht.

    - Next.js-Integration
    Feature KI-gestützte Übersetzung

    Verwandeln Sie Ihre Website mit nur einem Klick in 231 Sprachen mithilfe der fortschrittlichen KI-gestützten Übersetzungstools von Intlayer unter Verwendung Ihres eigenen KI-Anbieters/API-Schlüssels.

    - CI/CD-Integration
    - Intlayer CLI
    - Auto fill
    Feature MCP-Server-Integration

    Bietet einen MCP-Server (Model Context Protocol) für die IDE-Automatisierung, der eine nahtlose Inhaltsverwaltung und i18n-Workflows direkt in Ihrer Entwicklungsumgebung ermöglicht.

    - MCP-Server
    Feature VSCode-Erweiterung

    Intlayer bietet eine VSCode-Erweiterung, die Ihnen hilft, Ihre Inhalte und Übersetzungen zu verwalten, Ihre Wörterbücher zu erstellen, Ihre Inhalte zu übersetzen und vieles mehr.

    - VSCode-Erweiterung
    Feature Interoperabilität

    Ermöglicht die Interoperabilität mit react-i18next, next-i18next, next-intl und react-intl.

    - Intlayer und react-intl
    - Intlayer und next-intl
    - Intlayer und next-i18next
    Testen fehlender Übersetzungen (CLI/CI) ✅ CLI: npx intlayer content test (CI-freundliches Audit)

    Vergleich von Intlayer mit anderen Lösungen

    Alle Tabellendaten anzeigen

    Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen

    Funktion intlayer react-i18next react-intl (FormatJS) lingui next-intl next-i18next vue-i18n
    Übersetzungen in der Nähe von Komponenten ✅ Ja, Inhalt bei jeder Komponente angesiedelt ❌ Nein ❌ Nein ❌ Nein ❌ Nein ❌ Nein ✅ Ja – unter Verwendung von Single File Components (SFCs)
    TypeScript-Integration ✅ Fortgeschritten, automatisch generierte strikte Typen ⚠️ Grundlegend; zusätzliche Konfiguration für Sicherheit ✅ Gut, aber weniger strikt ⚠️ Typisierungen, benötigt Konfiguration ✅ Gut ⚠️ Grundlegend ✅ Gut (Typen verfügbar; Schlüsselsicherheit benötigt Setup)
    Erkennung fehlender Übersetzungen ✅ TypeScript-Fehlerhervorhebung und Build-Zeit-Fehler/-Warnung ⚠️ Meistens Fallback-Strings zur Laufzeit ⚠️ Fallback-Strings ⚠️ Benötigt zusätzliche Konfiguration ⚠️ Laufzeit-Fallback ⚠️ Laufzeit-Fallback ⚠️ Laufzeit-Fallback/-Warnungen (konfigurierbar)
    Reichhaltiger Inhalt (JSX/Markdown/Komponenten) ✅ Direkte Unterstützung ⚠️ Eingeschränkt / nur Interpolation ⚠️ ICU-Syntax, kein echtes JSX ⚠️ Eingeschränkt ❌ Nicht für reichhaltige Knoten konzipiert ⚠️ Eingeschränkt ⚠️ Eingeschränkt (Komponenten über <i18n-t>, Markdown über Plugins)
    KI-gestützte Übersetzung ✅ Ja, unterstützt mehrere KI-Anbieter. Nutzbar mit Ihren eigenen API-Schlüsseln. Berücksichtigt den Kontext Ihrer Anwendung und den Inhaltsumfang ❌ Nein ❌ Nein ❌ Nein ❌ Nein ❌ Nein ❌ Nein
    Visueller Editor ✅ Ja, lokaler visueller Editor + optionales CMS; kann Codebasis-Inhalte externalisieren; einbettbar ❌ Nein / über externe Lokalisierungsplattformen verfügbar ❌ Nein / über externe Lokalisierungsplattformen verfügbar ❌ Nein / über externe Lokalisierungsplattformen verfügbar ❌ Nein / über externe Lokalisierungsplattformen verfügbar ❌ Nein / über externe Lokalisierungsplattformen verfügbar ❌ Nein / über externe Lokalisierungsplattformen verfügbar
    Lokalisiertes Routing ✅ Ja, unterstützt lokalisierte Pfade out-of-the-box (funktioniert mit Next.js & Vite) ⚠️ Kein integriertes, erfordert Plugins (z. B. next-i18next) oder benutzerdefinierte Router-Konfiguration ❌ Nein, nur Nachrichtenformatierung, Routing muss manuell erfolgen ⚠️ Kein integriertes, erfordert Plugins oder manuelle Konfiguration ✅ Integriert, App Router unterstützt [locale]-Segment ✅ Integriert ✅ Integriert
    Dynamische Routengenerierung ✅ Ja ⚠️ Plugin/Ökosystem oder manuelles Setup ❌ Nicht bereitgestellt ⚠️ Plugin/manuell ✅ Ja ✅ Ja ❌ Nicht bereitgestellt (Nuxt i18n bietet dies)
    Pluralisierung ✅ Aufzählungsbasierte Muster ✅ Konfigurierbar (Plugins wie i18next-icu) ✅ (ICU) ✅ (ICU/messageformat) ✅ Gut ✅ Gut ✅ Integrierte Pluralregeln
    Formatierung (Daten, Zahlen, Währungen) ✅ Optimierte Formatierer (Intl unter der Haube) ⚠️ Über Plugins oder benutzerdefinierte Intl-Verwendung ✅ ICU-Formatierer ✅ ICU/CLI-Helfer ✅ Gut (Intl-Helfer) ✅ Gut (Intl-Helfer) ✅ Integrierte Datums-/Zahlenformatierer (Intl)
    Inhaltsformat ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) ⚠️ .json ✅ .json, .js ⚠️ .po, .json ✅ .json, .js, .ts ⚠️ .json ✅ .json, .js
    ICU-Unterstützung ⚠️ WIP ⚠️ Über Plugin (i18next-icu) ✅ Ja ✅ Ja ✅ Ja ⚠️ Über Plugin (i18next-icu) ⚠️ Über benutzerdefinierten Formatierer/Compiler
    SEO-Helfer (hreflang, sitemap) ✅ Integrierte Tools: Helfer für sitemap, robots.txt, Metadaten ⚠️ Community-Plugins/manuell ❌ Nicht im Kern ❌ Nicht im Kern ✅ Gut ✅ Gut ❌ Nicht im Kern (Nuxt i18n bietet Helfer)
    Ökosystem / Community ⚠️ Kleiner, aber wächst schnell und reaktiv ✅ Größte und ausgereifte ✅ Groß ⚠️ Kleiner ✅ Mittelgroß, auf Next.js fokussiert ✅ Mittelgroß, auf Next.js fokussiert ✅ Groß im Vue-Ökosystem
    Serverseitiges Rendering & Server-Komponenten ✅ Ja, optimiert für SSR / React Server-Komponenten ⚠️ Unterstützt auf Seitenebene, muss aber t-Funktionen im Komponentenbaum für Server-Komponenten-Kinder weitergeben ⚠️ Unterstützt auf Seitenebene mit zusätzlichem Setup, muss aber t-Funktionen im Komponentenbaum für Server-Komponenten-Kinder weitergeben ✅ Unterstützt, Setup erforderlich ⚠️ Unterstützt auf Seitenebene, muss aber t-Funktionen im Komponentenbaum für Server-Komponenten-Kinder weitergeben ⚠️ Unterstützt auf Seitenebene, muss aber t-Funktionen im Komponentenbaum für Server-Komponenten-Kinder weitergeben ✅ SSR über Nuxt/Vue SSR (kein RSC)
    Tree-shaking (nur genutzte Inhalte laden) ✅ Ja, pro Komponente zur Build-Zeit über Babel/SWC-Plugins ⚠️ Lädt normalerweise alles (kann mit Namespaces/Code-Splitting verbessert werden) ⚠️ Lädt normalerweise alles ❌ Nicht standardmäßig ⚠️ Teilweise ⚠️ Teilweise ⚠️ Teilweise (mit Code-Splitting/manuellem Setup)
    Lazy Loading ✅ Ja, pro Locale / pro Wörterbuch ✅ Ja (z. B. Backends/Namespaces bei Bedarf) ✅ Ja (geteilte Locale-Bundles) ✅ Ja (dynamische Katalogimporte) ✅ Ja (pro Route/pro Locale), benötigt Namespace-Management ✅ Ja (pro Route/pro Locale), benötigt Namespace-Management ✅ Ja (asynchrone Locale-Nachrichten)
    Unbenutzte Inhalte bereinigen ✅ Ja, pro Wörterbuch zur Build-Zeit ❌ Nein, nur über manuelle Namespace-Segmentierung ❌ Nein, alle deklarierten Nachrichten werden gebündelt ✅ Ja, ungenutzte Schlüssel werden beim Build erkannt und verworfen ❌ Nein, kann manuell mit Namespace-Management verwaltet werden ❌ Nein, kann manuell mit Namespace-Management verwaltet werden ❌ Nein, nur über manuelles Lazy-Loading möglich
    Verwaltung großer Projekte ✅ Fördert Modularität, geeignet für Design-Systeme ⚠️ Benötigt gute Dateidisziplin ⚠️ Zentrale Kataloge können groß werden ⚠️ Kann komplex werden ✅ Modular mit Setup ✅ Modular mit Setup ✅ Modular mit Vue Router/Nuxt i18n Setup

    GitHub-Sterne

    GitHub-Sterne sind ein starker Indikator für die Popularität eines Projekts, das Vertrauen der Community und die langfristige Relevanz. Sie sind zwar kein direktes Maß für die technische Qualität, spiegeln jedoch wider, wie viele Entwickler das Projekt nützlich finden, seinen Fortschritt verfolgen und es wahrscheinlich übernehmen werden. Um den Wert eines Projekts einzuschätzen, helfen Sterne dabei, die Traktion verschiedener Alternativen zu vergleichen und Einblicke in das Wachstum des Ökosystems zu gewinnen.

    Star History Chart


    Interoperabilität

    intlayer kann auch dabei helfen, Ihre react-intl, react-i18next, next-intl, next-i18next und vue-i18n Namespaces zu verwalten.

    Mit intlayer können Sie Ihren Inhalt im Format Ihrer bevorzugten i18n-Bibliothek deklarieren, und intlayer generiert Ihre Namespaces an dem Ort Ihrer Wahl (Beispiel: /messages/{{locale}}/{{namespace}}.json).

    Anfangen
    Alt+→

    Auf dieser Seite

      Diskussionen sind anonym und werden regelmäßig überprüft, um häufige Probleme zu behandeln. Teilen Sie gerne Feature-Ideen, Feedback zur Dokumentation oder alles rund um Intlayer, wir nutzen diese Eingaben, um unsere Roadmap zu gestalten und das Produkt zu verbessern.

      .├── locales│   ├── en.json│   ├── es.json│   └── fr.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx
      .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx
      .└── components    └── MyComponent        ├── index.content.ts        ├── index.test.tsx        ├── index.stories.tsx        └── index.tsx