Es macht Spass, mit Svelte zusammenzuarbeiten. Das Design ist elegant und die robusten First-Party-Ergänzungen, mit denen gekoppelt werden kann, machen das Erstellen von Browser-Apps zum Vergnügen.
Das bekannteste i18n-Plugin für das progressive JavaScript-Framework Svelte ist wohl svelte-i18n.
Wie sieht also ein einfaches Svelte-i18n-Setup aus?
Lassen Sie uns darauf eingehen...
Voraussetzungen
Stellen Sie sicher, dass Sie Node.js und npm installiert haben. Wenn Sie etwas Erfahrung mit einfachem HTML, JavaScript und einfachem Svelte haben, ist es am besten, bevor Sie zu svelte-i18n springen.
Einstieg
Nehmen Sie Ihr eigenes Svelte-Projekt oder erstellen Sie ein neues.
Lassen Sie uns die svelte-i18n-Abhängigkeit installieren:
addMessages('en', { welcome: 'Welcome to Your Svelte App' }); addMessages('de', { welcome: 'Willkommen zu deiner Svelte-App' });
let initialLocale; const detectedLocale = getLocaleFromNavigator(); // the locale could be region specific, i.e. de-CH if (lngs.indexOf(detectedLocale) > -1) initialLocale = detectedLocale; if (!initialLocale && detectedLocale.indexOf('-') > 0) { const foundLng = lngs.find((l) => detectedLocale.indexOf(l + '-') === 0); if (foundLng) initialLocale = foundLng; } if (!initialLocale) initialLocale = fallbackLocale;
init({ fallbackLocale, initialLocale });
Importieren Sie die Datei i18n.js in Ihre Datei main.js:
1 2 3 4 5 6 7 8 9 10
import App from'./App.svelte';
import'./i18n';
const app = new App({ target: document.body, props: {} });
exportdefault app;
Versuchen wir nun, unseren ersten internationalisierten Text zu verwenden.
Importieren Sie in Ihrer Vorlage _ aus svelte-i18n und verwenden Sie es wie folgt:
addMessages('en', { welcome: 'Welcome to Your Svelte App', descr: 'Visit the {link} to learn how to build Svelte apps.', doc: 'Svelte tutorial' }); addMessages('de', { welcome: 'Willkommen zu deiner Svelte-App', descr: 'Besuchen Sie den {link}, um zu erfahren, wie Sie Svelte-Apps erstellen.', doc: 'Svelte Tutorial' });
Jetzt sollten Sie, abhängig von Ihrer Browsersprache, so etwas sehen:
Sprachumschalter
Jetzt werden wir einen Sprachumschalter erstellen, um den Inhaltswechsel zwischen verschiedenen Sprachen vorzunehmen.
addMessages('en', { welcome: 'Welcome to Your Svelte App', descr: 'Visit the {link} to learn how to build Svelte apps.', doc: 'Svelte tutorial' }); addMessages('de', { welcome: 'Willkommen zu deiner Svelte-App', descr: 'Besuchen Sie den {link}, um zu erfahren, wie Sie Svelte-Apps erstellen.', doc: 'Svelte Tutorial' });
locale.subscribe((lng) => { if (lng) localStorage.setItem('svelte-i18n-locale', lng); });
let initialLocale; const detectedLocale = localStorage.getItem('svelte-i18n-locale') || getLocaleFromNavigator(); // the locale could be region specific, i.e. de-CH if (lngs.indexOf(detectedLocale) > -1) initialLocale = detectedLocale; if (!initialLocale && detectedLocale.indexOf('-') > 0) { const foundLng = lngs.find((l) => detectedLocale.indexOf(l + '-') === 0); if (foundLng) initialLocale = foundLng; } if (!initialLocale) initialLocale = fallbackLocale;
init({ fallbackLocale, initialLocale });
🥳 Grossartig, Sie haben gerade Ihren ersten Sprachumschalter erstellt!
Die Übersetzungen im Code zu haben, funktioniert, ist aber für Übersetzer nicht so geeignet, damit zu arbeiten.
Die Verwendung von locize trennt die Übersetzungen vom Code.
Nachdem alle Übersetzungen importiert wurden, sollte es wie folgt aussehen:
Jetzt werden Ihre Übersetzungen direkt von locize CDN abgerufen.
🙀 Das bedeutet, dass Sie Übersetzungen korrigieren können, ohne Ihren Code ändern oder Ihre App erneut bereitstellen zu müssen. 🤩
fehlende Übersetzungen speichern
Ich möchte, dass neu hinzugefügte Schlüssel im Code automatisch gespeichert werden, um sie zu lokalisieren.
Ihr Wunsch ist mir Befehl!
Erweitern Sie die i18n.js-Datei mit dem locize api-key und der handleMissingMessage-Funktion:
const fallbackLocale = 'en'; const lngs = [fallbackLocale, 'de']; const namespace = 'messages'; const apiKey = 'my-api-key'; // do not expose your API-Key in production
Schliesslch werden mit Hilfe des Arbeitsablaufs für automatische maschinelle Übersetzung nicht nur neue Schlüssel in locize hinzugefügt, während die App entwickelt wird, sondern werden auch automatisch per maschineller Übersetzung in die Zielsprachen übersetzt:
Schauen Sie sich dieses Video an, um zu sehen, wie der Arbeitsablauf der automatischen maschinellen Übersetzung aussieht!
In-Kontext-Editor
Es gibt noch eine coole Sache, die wir machen können ...
const fallbackLocale = 'en'; const lngs = [fallbackLocale, 'de']; const namespace = 'messages'; const apiKey = 'my-api-key'; // do not expose your API-Key in production