Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren
Versionshistorie
- "Compiler-Veröffentlichung"v7.3.127.11.2025
- "Vergleichstabelle aktualisiert"v5.8.019.8.2025
- "Initialer Verlauf"v5.5.1029.6.2025
Der Inhalt dieser Seite wurde mit einer KI übersetzt.
Den englischen Originaltext ansehenWenn 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 DokumentationMarkdown 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:
Kopieren Sie den Code in die Zwischenablage
.├── locales│ ├── en.json│ ├── es.json│ └── fr.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxOder hier unter Verwendung von Namespaces:
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.tsxDiese Art von Architektur verlangsamt den Entwicklungsprozess und macht die Codebasis aus mehreren Gründen komplexer in der Wartung:
Für jede neu erstellte Komponente sollten Sie:
- Die neue Ressource/den neuen Namespace im Ordner
localeserstellen - Daran denken, den neuen Namespace in Ihre Seite zu importieren
- Ihren Inhalt übersetzen (oft manuell durch Kopieren/Einfügen von KI-Anbietern)
- Die neue Ressource/den neuen Namespace im Ordner
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.
Kopieren Sie den Code in die Zwischenablage
.└── components └── MyComponent ├── index.content.ts ├── index.test.tsx ├── index.stories.tsx └── index.tsxKopieren 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;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:
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
Ihre Codebasis zu bereinigen
- Die Komplexität zu reduzieren
- Die Wartbarkeit zu erhöhen
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
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
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
Optimieren Sie die Ladeleistung
- Wenn eine Komponente per Lazy-Loading geladen wird, werden die zugehörigen Inhalte gleichzeitig geladen
Zusätzliche Funktionen von Intlayer
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Funktion | Beschreibung |
|---|---|
| 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. |
| JavaScript-gestütztes Inhaltsmanagement Nutzen Sie die Flexibilität von JavaScript, um Ihre Inhalte effizient zu definieren und zu verwalten. - Inhaltsdeklaration |
| Compiler Der Intlayer-Compiler extrahiert automatisch den Inhalt aus den Komponenten und generiert die Wörterbuchdateien. - Compiler |
| Inhaltsdeklarationsdatei pro Locale Beschleunigen Sie Ihre Entwicklung, indem Sie Ihre Inhalte einmal deklarieren, bevor sie automatisch generiert werden. - Inhaltsdeklarationsdatei pro Locale |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| Statisches Rendering Blockiert statisches Rendering nicht. - Next.js-Integration |
| 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 |
| 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 |
| 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 |
| 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
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.
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).