Verwenden Sie Internationalisierungsumschreibungen ("i18n-Umschreibungen"), um je nach Land oder bevorzugter Sprache eines Benutzers unterschiedliche Inhalte bereitzustellen. Hier sind einige Beispielkonfigurationen, die Sie einrichten könnten:
Stellen Sie allen Benutzern, die Französisch bevorzugen, denselben französischen Inhalt bereit (unabhängig vom Land).
Beispiel: eine Homepage mit französischem TextBereitstellen von französischem Standardinhalt für Benutzer, die Französisch bevorzugen, aber für kanadische Benutzer, die Französisch bevorzugen, stattdessen kanadisch-französische Inhalte bereitstellen.
Beispiel: eine Homepage mit französischer Standardformulierung im Vergleich zu einer Homepage mit kanadisch-französischer FormulierungStellen Sie allen kanadischen Benutzern dieselben Inhalte bereit (unabhängig von ihrer Sprachpräferenz).
Beispiel: eine Homepage mit der "Standard"-Sprache Ihrer Website, aber mit einer kanadaspezifischen Funktion (z. B. einem Feiertagsthema)Bereitstellen von kanadisch-französischen Inhalten für kanadische Benutzer, die Französisch bevorzugen.
Beispiel: eine Homepage mit kanadisch-französischer Formulierung und einer kanadaspezifischen Funktion (z. B. einem Feiertagsthema)
Firebase Hosting bestimmt das Land eines Benutzers aus seiner IP-Adresse und die Spracheinstellungen eines Benutzers aus dem Accept-Language
Anforderungsheader (normalerweise automatisch von seinem Webbrowser festgelegt ).
Richten Sie i18n-Umschreibungen ein
Um i18n-Umschreibungen für Ihre Hosting-Site einzurichten, müssen Sie ein „i18n-Inhalt“-Verzeichnis für all Ihre lokalisierten Inhalte erstellen und dann das i18n
Attribut zu Ihrer firebase.json
-Datei hinzufügen, um auf Ihr neues „i18n-Inhalt“-Verzeichnis zu verweisen.
Hier sind die detaillierten Schritte:
Erstellen Sie im
public
Ordner Ihres lokalen App-Verzeichnisses ein separates Verzeichnis für Ihre „i18n-Inhalte“ und erstellen Sie 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. Homepages mit Feiertagsmotiven oder sprachspezifische 404-Seiten.
Hier ist ein Beispiel für ein „i18n content“-Verzeichnis 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.html
public/ // matches requests that aren't specified by your "i18n content" subfolders // example: display your homepage in the "default" language for your site with no country-specific features index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ // matches requests from Canada with any language preference // example: display your homepage in the "default" language for your site with a Canada-specific feature ALL_ca/ index.html // matches requests from any country with a language preference of `es` or `es-foo` // example: display your homepage in Spanish with no country-specific features es_ALL/ index.html 404.html // your site's custom 404 page in Spanish // matches requests from any country with a language preference of `fr` or `fr-foo` // example: display your homepage in Standard French with no country-specific features fr/ index.html 404.html // your site's custom 404 page in French // matches requests from Canada with a language preference of `fr` or `fr-foo` // example: display your homepage in Canadian French and/or with a Canada-specific feature fr_ca/ index.html
Das 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 einem der folgenden Formate entsprechen:languageCode_countryCode
: Enthält Inhalte, die für Benutzer spezifisch sind, die diese Sprachpräferenz und diesen Ländercode habenlanguageCode
: Enthält Inhalte, die für Benutzer mit dieser Sprachpräferenz spezifisch sind, aber die Inhalte sind nicht länderspezifisch; im Grunde äquivalent zulanguageCode_ALL
Weitere Einzelheiten zu diesen Codes finden Sie im Unterabschnitt Länder- und Sprachcodes unten. Sie können den Wert von
ALL
(Groß-/Kleinschreibung beachten) verwenden, um ein beliebiges Land (wiees_ALL/
) oder eine beliebige Sprache (wieALL_ca/
) anzugeben.Die Dateien in einem Unterordner müssen keine analogen Dateien im
public
Verzeichnis oder anderen Unterordnern haben. Sie können Inhalte erstellen, die vollständig spezifisch für eine Sprache und/oder ein Land sind.Fügen Sie Ihrer
firebase.json
-Datei dasi18n
Attribut hinzu und geben Sie das Verzeichnis an, das Ihren „i18n-Inhalt“ enthält. Fortsetzung unseres Beispiels:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
Das für
root
angegebene Verzeichnis muss der Name des Verzeichnisses sein, das alle Ihre "i18n content"-Unterordner enthält. Wenn Sie alle Ihre „i18n content“-Unterordner im Stammverzeichnis Ihrespublic
Verzeichnisses abgelegt haben, verwenden Sie/
für den Wert vonroot
. Führende und abschließende Schrägstriche imroot
sind optional.Stellen Sie Ihren „i18n-Inhalt“ und Ihre Konfiguration auf Ihrer Hosting-Site bereit.
Sie können Ihre Einrichtung mit Cookie-Überschreibungen testen.
Länder- und Sprachcodes
Beim Benennen von „i18n content“-Unterordnern müssen Sie Kleinbuchstaben für Länder- und Sprachcodes verwenden. Sie können den Wert von ALL
(Groß-/Kleinschreibung beachten) verwenden, um ein beliebiges Land (wie es_ALL/
) oder eine beliebige Sprache (wie ALL_ca/
) anzugeben.
Das Hosting erhält den Ländercode von der IP-Adresse des Benutzers. Ländercodes sind ISO 3166-1 Alpha-2-Codes mit zwei Buchstaben .
Die Sprachcodes werden aus dem Accept-Language
Anforderungsheader des Benutzers abgerufen (normalerweise automatisch von seinem Webbrowser festgelegt ). Es handelt sich um ISO 639-1-Codes . Beachten Sie bei der Verwendung von Sprachcodes Folgendes:
Wenn das Hosting nach den bereitzustellenden „i18n-Inhalten“ sucht, ordnet es die Sprachen basierend auf den Qualitätswerten im
Accept-Language
-Header an.Hosting löscht alle regionalen und Länder-Subtags im
Accept-Language
-Header, sodass der Sprachcode in einem „i18n content“-Unterordnernamen diese Subtags nicht enthalten kann. Beispielsweise können Siees-419
oderes-US
nicht als Sprachcode in einem Unterordnernamen verwenden, aber Sie könnenes
verwenden.Wenn Sie bestimmte regionale oder länderspezifische Inhalte bereitstellen möchten, können Sie Unterordner erstellen, die die spezifischen sprach- und länderspezifischen Inhalte enthalten, die Sie unterstützen möchten.
In diesem Beispiel würde eine Anfrage aus Spanien mit der Spracheinstellung
es
,es-es
oder sogares-419
Inhalte aus dem Unterordneres_es/
erhalten, da Hosting all diese Sprachcodes alses
behandelt.Eine Anfrage aus den Vereinigten Staaten, Mexiko oder einem anderen Land mit der Spracheinstellung
es-419
würde Inhalte aus dem Unterordneres_ALL/
erhalten, da Hostinges-419
alses
behandelt.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Spain with a language preference of `es` or `es-foo` es_es/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` es_ALL/ index.html
In diesem Beispiel würde eine Anfrage aus Mexiko mit der Spracheinstellung
es-419
Inhalte aus dem Unterordneres_mx/
erhalten, da Hosting den Sprachcodees-419
alses
behandelt.Eine Anfrage aus den Vereinigten Staaten mit der Spracheinstellung
es-419
würde jedoch Inhalte aus dem Unterordneres_ALL/
empfangen, da Hostinges-419
alses
behandelt und es keinen Unterordneres_us/
gibt.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Argentina with a language preference of `es` or `es-foo` (mimics behavior of `es-ar` header tag) es_ar/ index.html // matches requests from Spain with a language preference of `es` or `es-foo` (mimics behavior of `es-es` header tag) es_es/ index.html // matches requests from Mexico with a language preference of `es` or `es-foo` (mimics behavior of `es-mx` header tag) es_mx/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` (mimics behavior of `es-419` header tag) es_ALL/ index.html
Prioritätsreihenfolge für "i18n-Inhalte"
Wenn Sie i18n-Umschreibungen einrichten, stellt das Hosting Inhalte basierend auf der folgenden Prioritätsreihenfolge bereit:
Reservierte Namespaces, die mit einem Pfadsegment
/__/*
beginnenKonfigurierte Weiterleitungen
Statischer Inhalt mit exakter Übereinstimmung
Sprachcode + Ländercode (z. B. Inhalt von
fr_ca/
)
Die Reihenfolge folgt den Qualitätswerten für jede Sprache imAccept-Language
Header der Anfrage.Nur Ländercode (z. B. Inhalt von
ALL_ca/
)Nur Sprachcode (z. B. Inhalt von
fr/
oderes_ALL/
)
Die Reihenfolge folgt den Qualitätswerten für jede Sprache imAccept-Language
Header der Anfrage."Standard"-Statischer Inhalt mit exakter Übereinstimmung
Dies ist Inhalt, der sich außerhalb des Verzeichnisses "i18n-Inhalte" befindet, z. B. im Stammverzeichnis despublic
Verzeichnisses.
Konfigurierte Umschreibungen
404-Handhabung
i18n 404 Seiten
Dies folgt der gleichen Prioritätsreihenfolge, die oben für statische Inhalte mit exakter Übereinstimmung aufgeführt ist.Benutzerdefinierte 404- Seite
Standard-404-Seite (bereitgestellt von Firebase)
Beispiel für Prioritätsreihenfolge
Setzen wir unser Beispiel von oben fort. Wir verwenden dasselbe Beispielverzeichnis und eine Beispielanforderung.
Beispiel eines lokalen Projektverzeichnisses mit einem „i18n content“-Verzeichnis (genannt
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.html
Beispiel für Anfrageinformationen
Sprachcodes:
fr
,en
(Französisch, dann Englisch)
Die Sprachcodes werden basierend auf Qualitätswerten imAccept-Language
-Header geordnet.Länderkürzel:
ca
(Kanada)
Gemäß der Prioritätsreihenfolge der exakten Übereinstimmung und den Qualitätswerten für die Spracheinstellungen durchsucht das 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-Handhabung
Welche Seite wird dem Benutzer angezeigt?
Angeforderte Seite:
index.html
index.html
aus dem Unterordnerfr_ca/
Da Hosting zuerst den Unterordner
fr_ca/
durchsucht, findet es die exakte Übereinstimmung fürindex.html
in diesem Unterordner.Angeforderte Seite:
awesome-page.html
404.html
aus dem Unterordnerfr/
Das Hosting durchsucht zuerst das gesamte Verzeichnis (einschließlich aller Unterordner „i18n content“ und des Stammverzeichnisses) in der Prioritätsreihenfolge nach einer exakten Übereinstimmung, aber es gibt keine exakte Übereinstimmung für
awesome-page.html
.Hosting beginnt also mit der 404-Behandlung, die der gleichen i18n-Prioritätsreihenfolge folgt wie die Suche nach exakter Übereinstimmung. Der Unterordner
fr/
ist der erste durchsuchte Unterordner, der eine 404-Seite enthält.
Beachten Sie Folgendes zu diesem Suchen und Bereitstellen des Verzeichnisses "i18n-Inhalte":
Das Verzeichnis
localized-files/
enthält eigentlich keine Unterordneren_ca/
,en_ALL/
oderen/
, daher überspringt das Hosting einfach die Prioritätenliste, bis es einen passenden Unterordner für die Sprach-Land-Kombination der Anfrage findet.Obwohl das
localized-files/
-Verzeichnis einenes_ALL/
-Unterordner enthält, enthält die obige Beispielanfrage keinenes
oderes-foo
Sprachcode, sodass Hosting nicht nach „i18n-Inhalt“ sucht, der mites
übereinstimmt.Unterordner namens
fr/
undfr_ALL/
sind aus Sicht der Länder- und Spracheinstellungen eines Benutzers gleichwertig. Wenn jedoch beide Unterordner vorhanden sind, stellt Hostingfr_ALL/
content vorfr/
content bereit.
Überschreiben Sie Sprach- und Ländercodes mit Cookies
Sie können ändern, welche Inhalte bereitgestellt werden, indem Sie Cookies verwenden, um die Kopfzeilen für Land und Sprache zu überschreiben.
Hier sind einige Möglichkeiten, wie Sie Cookie-Überschreibungen verwenden können:
Testen Sie eine Funktion mit verschiedenen Sprach-/Länderkombinationen, um zu prüfen, welche Inhalte bereitgestellt werden.
Ermöglichen Sie Ihren Benutzern, die Inhalte zu ändern, die sie sehen. Beispielsweise können Sie eine Sprachauswahl implementieren und dann das
firebase-language-override
-Cookie des Benutzers entsprechend festlegen.
Um Cookie-Überschreibungen zu konfigurieren, legen Sie Cookies mit beiden oder einem 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 bevorzugten Reihenfolge sein, ohne untergeordnete Tags oder Qualitätswerte.
Cookie-Überschreibungen werden nicht in Protokollen wiedergegeben.