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 (unabhängig vom Land), den gleichen französischen Inhalt zur Verfügung.
Beispiel: eine Homepage mit französischem TextBieten Sie Benutzern, die Französisch bevorzugen, Standard-Französisch-Inhalte an, aber für kanadische Benutzer, die Französisch bevorzugen, stellen Sie stattdessen kanadisch-französische Inhalte bereit.
Beispiel: eine Homepage mit Standard-Französisch-Phrasierung im Vergleich zu einer Homepage mit kanadischer Französisch-PhrasierungBieten Sie allen kanadischen Benutzern den gleichen Inhalt (unabhängig von ihrer Sprachpräferenz).
Beispiel: eine Homepage mit der „Standard“-Sprache Ihrer Website, aber mit einer Kanada-spezifischen Funktion (z. B. einem Feiertagsthema)Bieten Sie kanadischen Benutzern, die Französisch bevorzugen, kanadisch-französische Inhalte an.
Beispiel: eine Homepage mit kanadisch-französischer Formulierung und einer kanadaspezifischen Funktion (z. B. einem Feiertagsthema)
Firebase Hosting ermittelt das Land eines Benutzers anhand seiner IP-Adresse und die Spracheinstellungen eines Benutzers anhand des Accept-Language
Anfrageheaders (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 alle 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 von Ihrer Website unterstützte Sprach- und Länderkombination.Fügen Sie in jedem Unterordner den für diese Kombination spezifischen Inhalt hinzu, z. B. Homepages zum Thema Feiertage oder sprachspezifische 404-Seiten.
Hier ist ein Beispielverzeichnis 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.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 von Ihrer Site unterstützte Sprach- und Länderkombination. Das Benennungsmuster für jeden Unterordner muss einem dieser Formate folgen:languageCode_countryCode
: Enthält Inhalte, die speziell für Benutzer gelten, die diese Spracheinstellung und diesen Ländercode habenlanguageCode
: Enthält Inhalte, die speziell für Benutzer gelten, die diese Sprachpräferenz haben, aber der Inhalt ist nicht länderspezifisch; entspricht grundsätzlichlanguageCode_ALL
Weitere Einzelheiten zu diesen Codes finden Sie unten im Unterabschnitt „Länder- und Sprachcodes“ . 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 ganz spezifisch für eine Sprache und/oder ein Land sind.Fügen Sie das
i18n
Attribut zu Ihrerfirebase.json
Datei 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-Inhalt“-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 Ihr Setup mithilfe von Cookie-Überschreibungen testen.
Länder- und Sprachcodes
Bei der Benennung von „i18n-Inhalt“-Unterordnern müssen Sie sowohl für die Länder- als auch für die Sprachcodes Kleinbuchstaben 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.
Den Ländercode bezieht das Hosting aus der IP-Adresse des Nutzers. Ländercodes sind zweibuchstabige ISO 3166-1 Alpha-2-Codes .
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 Folgendes bei der Verwendung von Sprachcodes:
Wenn Hosting nach dem bereitzustellenden „i18n-Inhalt“ sucht, ordnet es die Sprachen basierend auf den Qualitätswerten im
Accept-Language
Header.Das Hosting löscht alle regionalen und länderspezifischen Untertags im
Accept-Language
Header, sodass der Sprachcode im Namen eines „i18n-Inhalts“-Unterordners diese Untertags 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 Sprachpräferenz
es
,es-es
oder sogares-419
Inhalte aus dem Unterordneres_es/
erhalten, da Hosting alle diese Sprachcodes alses
behandelt.Eine Anfrage aus den USA, Mexiko oder einem anderen Land mit der bevorzugten Sprache
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 USA mit der bevorzugten Sprache
es-419
würde jedoch Inhalte aus dem Unterordneres_ALL/
erhalten, 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-Rewrites einrichten, stellt das Hosting Inhalte basierend auf der folgenden Prioritätsreihenfolge bereit:
Reservierte Namespaces, die mit einem
/__/*
Pfadsegment beginnenKonfigurierte Weiterleitungen
Genau passender statischer Inhalt
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.„Standardmäßiger“ exakt passender statischer Inhalt
Hierbei handelt es sich um Inhalte, die sich außerhalb des Verzeichnisses „i18n content“ befinden, beispielsweise im Stammverzeichnis despublic
Verzeichnisses.
Konfigurierte Umschreibungen
404-Handhabung
i18n 404 Seiten
Dies folgt der gleichen Prioritätsreihenfolge wie oben für genau passende statische Inhalte aufgeführt.Benutzerdefinierte 404- Seite
Standard-404-Seite (bereitgestellt von Firebase)
Beispiel für Prioritätsreihenfolge
Lassen Sie uns unser Beispiel von oben fortsetzen. Wir verwenden dasselbe Beispielverzeichnis und eine Beispielanfrage.
Beispiel für ein lokales Projektverzeichnis mit einem Verzeichnis „i18n-Inhalt“ (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-Anfrageinformationen
Sprachcodes:
fr
,en
(Französisch, dann Englisch)
Die Sprachcodes werden basierend auf Qualitätswerten imAccept-Language
Header sortiert.Ländercode:
ca
(Kanada)
Entsprechend der Prioritätsreihenfolge der genauen Übereinstimmung und den Qualitätswerten für die Spracheinstellungen durchsucht Hosting die Verzeichnisse nach einer angeforderten Seite in der folgenden Reihenfolge.
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 in diesem Unterordner die exakte Übereinstimmung fürindex.html
.Angeforderte Seite:
awesome-page.html
404.html
aus demfr/
-UnterordnerDas Hosting durchsucht zunächst das gesamte Verzeichnis (einschließlich aller „i18n-Inhalt“-Unterordner und des Stammverzeichnisses) in der Reihenfolge ihrer Priorität nach einer exakten Übereinstimmung, es gibt jedoch keine exakte Übereinstimmung für
awesome-page.html
.Daher beginnt Hosting mit der 404-Verarbeitung, 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 dieser Suche und Bereitstellung des Verzeichnisses „i18n-Inhalt“:
Das Verzeichnis
localized-files/
enthält eigentlich keine Unterordneren_ca/
, „en_ALL/
“ oderen/
, daher überspringt Hosting einfach die Prioritätenliste, bis es einen passenden Unterordner für die Sprach-Land-Kombination der Anfrage findet.Obwohl das Verzeichnis „
localized-files/
einen Unterordneres_ALL/
enthält, enthält die obige Beispielanforderung keinen Sprachcodees
oderes-foo
“, sodass Hosting nicht nach „i18n-Inhalten“ sucht, die mit „es
übereinstimmen.Unterordner mit den Namen
fr/
undfr_ALL/
sind aus Sicht der Länder- und Sprachpräferenzen 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 Länder- und Sprachüberschriften 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 überprüfen, welche Inhalte bereitgestellt werden.
Ermöglichen Sie Ihren Benutzern, den Inhalt, den sie sehen, zu ändern. Sie können beispielsweise 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 dieser Namen fest: firebase-country-override
und firebase-language-override
. Das folgende JavaScript-Code-Snippet überschreibt beispielsweise den Ländercode durch „ ca
und den Accept-Language
Header durch 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 ihrer Präferenz sein, ohne Untertags oder Qualitätswerte.
Cookie-Überschreibungen werden nicht in Protokollen widergespiegelt.