Konfigurieren Sie Umschreibungen für die Internationalisierung (i18n).

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 Text

  • Bieten 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-Phrasierung

  • Bieten 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:

  1. 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
    

    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 haben

    • languageCode : Enthält Inhalte, die speziell für Benutzer gelten, die diese Sprachpräferenz haben, aber der Inhalt ist nicht länderspezifisch; entspricht grundsätzlich languageCode_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 (wie es_ALL/ ) oder eine beliebige Sprache (wie ALL_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.

  2. Fügen Sie das i18n Attribut zu Ihrer firebase.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 Ihres public Verzeichnisses abgelegt haben, verwenden Sie / für den Wert von root . Führende und abschließende Schrägstriche im root sind optional.

  3. 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 Sie es-419 oder es-US nicht als Sprachcode in einem Unterordnernamen verwenden, aber Sie können es 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.

Prioritätsreihenfolge für „i18n-Inhalte“

Wenn Sie i18n-Rewrites einrichten, stellt das Hosting Inhalte basierend auf der folgenden Prioritätsreihenfolge bereit:

  1. Reservierte Namespaces, die mit einem /__/* Pfadsegment beginnen

  2. Konfigurierte Weiterleitungen

  3. Genau passender statischer Inhalt

    1. Sprachcode + Ländercode (z. B. Inhalt von fr_ca/ )
      Die Reihenfolge folgt den Qualitätswerten für jede Sprache im Accept-Language Header der Anfrage.

    2. Nur Ländercode (z. B. Inhalt von ALL_ca/ )

    3. Nur Sprachcode (z. B. Inhalt von fr/ oder es_ALL/ )
      Die Reihenfolge folgt den Qualitätswerten für jede Sprache im Accept-Language Header der Anfrage.

    4. „Standardmäßiger“ exakt passender statischer Inhalt
      Hierbei handelt es sich um Inhalte, die sich außerhalb des Verzeichnisses „i18n content“ befinden, beispielsweise im Stammverzeichnis des public Verzeichnisses.

  4. Konfigurierte Umschreibungen

  5. 404-Handhabung

    1. i18n 404 Seiten
      Dies folgt der gleichen Prioritätsreihenfolge wie oben für genau passende statische Inhalte aufgeführt.

    2. Benutzerdefinierte 404- Seite

    3. 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 im Accept-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.

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. 404-Handhabung

Welche Seite wird dem Benutzer angezeigt?

  • Angeforderte Seite: index.html

  • Angeforderte Seite: awesome-page.html

Beachten Sie Folgendes zu dieser Suche und Bereitstellung des Verzeichnisses „i18n-Inhalt“:

  • Das Verzeichnis localized-files/ enthält eigentlich keine Unterordner en_ca/ , „ en_ALL/ “ oder en/ , 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 Unterordner es_ALL/ enthält, enthält die obige Beispielanforderung keinen Sprachcode es oder es-foo “, sodass Hosting nicht nach „i18n-Inhalten“ sucht, die mit „ es übereinstimmen.

  • Unterordner mit den Namen fr/ und fr_ALL/ sind aus Sicht der Länder- und Sprachpräferenzen eines Benutzers gleichwertig. Wenn jedoch beide Unterordner vorhanden sind, stellt Hosting fr_ALL/ content vor fr/ content bereit.

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.