Mit Internationalisierungs-Rewrites („i18n-Rewrites“) können Sie je nach Land oder bevorzugter Sprache des Nutzers unterschiedliche Inhalte bereitstellen. Hier sind einige Beispielkonfigurationen, die Sie einrichten können:
Allen Nutzern, die Französisch bevorzugen, denselben französischen Inhalt bereitstellen (unabhängig vom Land)
Beispiel: eine Startseite mit französischem TextNutzern, die Französisch bevorzugen, Standardfranzösisch bereitstellen, aber kanadischen Nutzern, die Französisch bevorzugen, stattdessen kanadisches Französisch bereitstellen.
Beispiel: eine Startseite mit Standardfranzösisch im Vergleich zu einer Startseite mit kanadischem FranzösischAllen kanadischen Nutzern denselben Inhalt bereitstellen (unabhängig von ihrer bevorzugten Sprache)
Beispiel: eine Startseite mit der „Standardsprache“ Ihrer Website, aber mit einer kanadaspezifischen Funktion (z. B. einem Feiertagsthema)Kanadischen Nutzern, die Französisch bevorzugen, kanadisches Französisch bereitstellen
Beispiel: eine Startseite mit kanadischem Französisch und einer kanadaspezifischen Funktion (z. B. einem Feiertagsthema)
Firebase Hosting ermittelt das Land eines Nutzers anhand seiner IP-Adresse und die
Spracheinstellungen eines Nutzers anhand des Accept-Language Anfrageheaders (der in der Regel
automatisch von seinem Webbrowser festgelegt wird).
i18n-Rewrites einrichten
Wenn Sie i18n-Rewrites für Ihre Hosting Website einrichten möchten, müssen Sie ein Verzeichnis für "i18n
Inhalte" für alle lokalisierten Inhalte erstellen und dann das Attribut i18n zu Ihrer firebase.json Datei hinzufügen, um auf das neue Verzeichnis für "i18n-Inhalte" zu verweisen.
Hier sind die detaillierten Schritte:
Erstellen Sie im Ordner
publicIhres lokalen App-Verzeichnisses ein separates Verzeichnis für Ihre „i18n-Inhalte“ und dann Unterordner für jede Sprach- und Länderkombination, die von Ihrer Website unterstützt wird.Fügen Sie in jedem Unterordner die für diese Kombination spezifischen Inhalte hinzu, z. B. Startseiten mit Feiertagsthema oder sprachspezifische 404-Seiten.
Hier ist ein Beispiel für ein Verzeichnis für „i18n-Inhalte“ mit dem Namen
localized-files:public/ index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ ALL_ca/ index.html es_ALL/ index.html 404.html fr/ index.html 404.html fr_ca/ index.htmlDas Verzeichnis
localized-files/enthält separate Unterordner für jede Sprach- und Länderkombination, die von Ihrer Website unterstützt wird. Das Benennungsmuster für jeden Unterordner muss eines der folgenden Formate haben:languageCode_countryCode: Enthält Inhalte, die für Nutzer mit dieser bevorzugten Sprache und diesem Ländercode spezifisch sindlanguageCode: Enthält Inhalte, die für Nutzer mit dieser bevorzugten Sprache spezifisch sind, aber die Inhalte sind nicht länderspezifisch. Entspricht im GrundelanguageCode_ALL
Weitere Informationen zu diesen Codes finden Sie im Unterabschnitt Länder- und Sprachcodes unten. Sie können den Wert
ALL(Groß-/Kleinschreibung beachten) verwenden, um ein beliebiges Land (z. B.es_ALL/) oder eine beliebige Sprache (z. B.ALL_ca/) anzugeben.Die Dateien in einem Unterordner müssen keine entsprechenden Dateien im Verzeichnis
publicoder in anderen Unterordnern haben. Sie können Inhalte erstellen, die vollständig auf eine Sprache und/oder ein Land zugeschnitten sind.Fügen Sie das Attribut
i18nzu Ihrerfirebase.json-Datei hinzu und geben Sie das Verzeichnis an, das Ihre „i18n-Inhalte“ enthält. Fahren wir mit unserem Beispiel fort:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
Das für
rootangegebene Verzeichnis muss der Name des Verzeichnisses sein, das alle Ihre Unterordner für „i18n-Inhalte“ enthält. Wenn Sie alle Ihre Unterordner für „i18n-Inhalte“ im Stammverzeichnis IhrespublicVerzeichnisses platziert haben, verwenden Sie/für den Wert vonroot. Führende und nachgestellte Schrägstriche im Wert vonrootsind optional.Stellen Sie Ihre „i18n-Inhalte“ und die Konfiguration auf Ihrer Hosting Website bereit.
Sie können Ihre Einrichtung mit Cookie-Überschreibungen testen.
Länder- und Sprachcodes
Beim Benennen von Unterordnern für „i18n-Inhalte“ müssen Sie sowohl für Länder- als auch für Sprachcodes Kleinbuchstaben verwenden. Sie können den Wert ALL (Groß-/Kleinschreibung beachten) verwenden, um
ein beliebiges Land (z. B. es_ALL/) oder eine beliebige Sprache (z. B. ALL_ca/) anzugeben.
Hosting ruft den Ländercode aus der IP-Adresse des Nutzers ab. Ländercodes sind zweistellige ISO 3166-1-Alpha-2-Codes.
Die Sprachcodes werden aus dem Accept-Language Anfrageheader des Nutzers abgerufen
(der in der Regel
automatisch von seinem Webbrowser festgelegt wird).
Es handelt sich um ISO 639-1-Codes.
Beachten Sie bei der Verwendung von Sprachcodes Folgendes:
Wenn Hosting sucht, welche "i18n content" bereitgestellt werden sollen, werden die Sprachen anhand der Qualitätswerte im
Accept-LanguageHeader sortiert.Hosting entfernt alle regionalen und länderspezifischen Untertags im
Accept-LanguageHeader. Daher darf der Sprachcode in einem Unterordnernamen für „i18n-Inhalte“ diese Untertags nicht enthalten. Sie können beispielsweise nichtes-419oderes-USals Sprachcode in einem Unterordnernamen verwenden, aberes.Wenn Sie bestimmte regionale oder länderspezifische Inhalte bereitstellen möchten, können Sie Unterordner erstellen, die die gewünschten sprach- und länderspezifischen Inhalte enthalten.
Priorität für „i18n-Inhalte“
Wenn Sie i18n-Rewrites einrichten, stellt Hosting Inhalte in der folgenden Reihenfolge der Priorität bereit:
Reservierte Namespaces, die mit einem
/__/*-Pfadsegment beginnenKonfigurierte Weiterleitungen
Statische Inhalte mit genauer Übereinstimmung
Sprachcode + Ländercode (z. B. Inhalte aus
fr_ca/)
Die Reihenfolge richtet sich nach den Qualitätswerten für jede Sprache imAccept-LanguageHeader der Anfrage.Nur Ländercode (z. B. Inhalte aus
ALL_ca/)Nur Sprachcode (z. B. Inhalte aus
fr/oderes_ALL/)
Die Reihenfolge richtet sich nach den Qualitätswerten für jede Sprache imAccept-LanguageHeader der Anfrage.Statische Inhalte mit genauer Übereinstimmung (Standard)
Diese Inhalte befinden sich außerhalb des Verzeichnisses für „i18n-Inhalte“, z. B. im Stammverzeichnis vonpublicdirectory.
Konfigurierte Rewrites
404-Fehlerbehandlung
i18n-404-Seiten
Hier gilt dieselbe Priorität wie oben für statische Inhalte mit genauer Übereinstimmung.Benutzerdefinierte 404 Seite
Standardmäßige 404-Seite (von Firebase bereitgestellt)
Beispiel für die Priorität
Fahren wir mit unserem Beispiel von oben fort. Wir verwenden dasselbe Beispielverzeichnis und eine Beispielanfrage.
Beispiel für ein lokales Projektverzeichnis mit einem Verzeichnis für „i18n-Inhalte“ (mit dem Namen
localized-files)public/ index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ ALL_ca/ index.html es_ALL/ index.html 404.html fr/ index.html 404.html fr_ca/ index.htmlBeispiel für Anfrageinformationen
Sprachcodes:
fr,en(Französisch, dann Englisch)
Die Sprachcodes werden anhand der Qualitätswerte imAccept-LanguageHeader sortiert.Ländercode:
ca(Kanada)
Gemäß der Priorität für genaue Übereinstimmungen und den Qualitätswerten für die bevorzugten Sprachen durchsucht Hosting die Verzeichnisse in der folgenden Reihenfolge nach einer angeforderten Seite.
public/localized-files/fr_ca/public/localized-files/en_ca/public/localized-files/ALL_ca/public/localized-files/fr_ALL/public/localized-files/fr/public/localized-files/en_ALL/public/localized-files/en/public/404-Fehlerbehandlung
Welche Seite wird dem Nutzer bereitgestellt?
Angeforderte Seite:
index.htmlAngeforderte Seite:
awesome-page.html
Beachten Sie bei dieser Suche und Bereitstellung des Verzeichnisses für „i18n-Inhalte“ Folgendes:
Das Verzeichnis
localized-files/enthält keine Unterordneren_ca/,en_ALL/oderen/. Daher überspringt Hosting die Prioritätsliste, bis ein passender Unterordner für die Sprach- und Länderkombination der Anfrage gefunden wird.Obwohl das Verzeichnis
localized-files/einenes_ALL/Unterordner enthält, enthält die obige Anfrage keinenesoderes-fooSprachcode. Daher sucht Hosting nicht nach „i18n-Inhalten“, die mitesübereinstimmen.Unterordner mit dem Namen
fr/undfr_ALL/sind aus Sicht der Sprach- und Ländereinstellungen eines Nutzers gleichwertig. Wenn jedoch beide Unterordner vorhanden sind, stellt Hosting Inhalte ausfr_ALL/vor Inhalten ausfr/bereit.
Sprach- und Ländercodes mit Cookies überschreiben
Sie können ändern, welche Inhalte bereitgestellt werden, indem Sie mit Cookies die Länder- und Sprachheader überschreiben.
Hier sind einige Möglichkeiten, Cookie-Überschreibungen zu verwenden:
Testen Sie eine Funktion mit verschiedenen Sprach-/Länderkombinationen, um zu prüfen, welche Inhalte bereitgestellt werden.
Ermöglichen Sie Ihren Nutzern, die angezeigten Inhalte zu ändern. Sie können beispielsweise eine Sprachauswahl implementieren und dann das
firebase-language-override-Cookie des Nutzers entsprechend festlegen.
Wenn Sie Cookie-Überschreibungen konfigurieren möchten, legen Sie Cookies mit einem oder beiden der folgenden Namen fest: firebase-country-override und firebase-language-override. Das folgende JavaScript-Code-Snippet überschreibt beispielsweise den Ländercode mit ca und den Accept-Language-Header mit fr,en:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Sprach-Cookie-Überschreibungen müssen eine durch Kommas getrennte Liste von Sprachcodes in der Reihenfolge der Präferenz sein, ohne Untertags oder Qualitätswerte.
Cookie-Überschreibungen werden nicht in Logs berücksichtigt.