Überschreibungen der Internationalisierung (i18n) konfigurieren

Mit Internationalisierungs-Rewrites („i18n-Rewrites“) können Sie je nach Land oder bevorzugter Sprache eines Nutzers unterschiedliche Inhalte bereitstellen. Hier sind einige Beispiele für Konfigurationen, die Sie einrichten können:

  • Allen Nutzern, die Französisch bevorzugen, dieselben französischen Inhalte präsentieren (unabhängig vom Land).
    Beispiel: Eine Startseite mit französischem Text

  • Nutzern, die Französisch bevorzugen, Inhalte in Standardfranzösisch bereitstellen, aber kanadischen Nutzern, die Französisch bevorzugen, stattdessen Inhalte in kanadischem Französisch.
    Beispiel: eine Startseite mit Standard-Französisch im Vergleich zu einer Startseite mit kanadischem Französisch

  • Allen kanadischen Nutzern (unabhängig von ihrer bevorzugten Sprache) dieselben Inhalte präsentieren.
    Beispiel: Eine Startseite mit der Standardsprache Ihrer Website, aber mit einer Funktion, die speziell auf Kanada ausgerichtet ist (z. B. ein Feiertagsthema)

  • Kanadischen Nutzern, die Französisch bevorzugen, Inhalte auf Französisch (Kanada) bereitstellen:
    Beispiel: Eine Startseite mit kanadisch-französischen Formulierungen und einer kanadaspezifischen Funktion (z. B. einem Feiertagsdesign)

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-Umschreibungen einrichten

Wenn Sie i18n-Rewrites für Ihre Hosting-Website einrichten möchten, müssen Sie ein Verzeichnis „i18n content“ für alle lokalisierten Inhalte erstellen und dann das Attribut i18n in Ihre firebase.json-Datei einfügen, um auf das neue Verzeichnis „i18n content“ zu verweisen.

So gehts:

  1. Erstellen Sie im public-Ordner Ihres 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 Inhalte hinzu, die für die jeweilige Kombination spezifisch sind, z. B. Startseiten mit Feiertagsmotiven oder sprachspezifische 404-Fehlerseiten.

    Hier ist ein Beispiel für ein Verzeichnis mit dem Namen localized-files, das i18n-Inhalte enthält:

    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 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 speziell für Nutzer mit dieser Spracheinstellung und diesem Ländercode bestimmt sind.

    • languageCode: Enthält Inhalte, die speziell für Nutzer mit dieser Spracheinstellung bestimmt sind, aber nicht länderspezifisch sind. Entspricht im Grunde languageCode_ALL.

    Weitere Informationen zu diesen Codes finden Sie unten im Unterabschnitt Länder- und Sprachcodes. Mit dem Wert von ALL (Groß-/Kleinschreibung beachten) können Sie ein beliebiges Land (z. B. es_ALL/) oder eine beliebige Sprache (z. B. ALL_ca/) angeben.

    Die Dateien in einem Unterordner müssen keine analogen Dateien im Verzeichnis public oder in anderen Unterordnern haben. Sie können Inhalte erstellen, die ausschließlich für eine bestimmte Sprache und/oder ein bestimmtes Land bestimmt sind.

  2. Fügen Sie das Attribut i18n zu Ihrer firebase.json-Datei hinzu und geben Sie das Verzeichnis an, das Ihre „i18n-Inhalte“ 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 Unterordner mit internationalisierten Inhalten enthält. Wenn Sie alle Ihre Unterordner für die Internationalisierung von Inhalten im Stammverzeichnis Ihres public-Verzeichnisses platziert haben, verwenden Sie / für den Wert von root. Voran- und nachgestellte Schrägstriche im root-Wert sind optional.

  3. Stellen Sie Ihre „i18n content“- und Konfigurationsdateien 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. Mit dem Wert von ALL (Groß- und Kleinschreibung beachten) können Sie ein beliebiges Land (z. B. es_ALL/) oder eine beliebige Sprache (z. B. ALL_ca/) angeben.

Hosting ruft den Ländercode anhand der IP-Adresse des Nutzers ab. Ländercodes sind zweistellige ISO 3166-1-Alpha-2-Codes.

Die Sprachcodes werden aus dem Anfrageheader Accept-Language des Nutzers abgerufen (in der Regel automatisch vom Webbrowser festgelegt). Es handelt sich um ISO 639-1-Codes. Beachten Sie bei der Verwendung von Sprachcodes Folgendes:

  • Bei der Suche nach „i18n-Inhalten“ für Hosting werden die Sprachen anhand der Qualitätswerte im Accept-Language-Header sortiert.

  • Bei Hosting werden alle regionalen und länderspezifischen Untertags in der Accept-Language-Kopfzeile entfernt. Der Sprachcode in einem Unterordnernamen vom Typ „i18n content“ darf diese Untertags also nicht enthalten. Sie können beispielsweise es-419 oder es-US nicht als Sprachcode in einem Unterordnernamen verwenden, aber es.

    Wenn Sie bestimmte regionale oder länderspezifische Inhalte bereitstellen möchten, können Sie Unterordner erstellen, die die entsprechenden Sprach- und Länderinhalte enthalten.

Prioritätsreihenfolge für „i18n content“

Wenn Sie i18n-Umschreibungen einrichten, stellt Hosting Inhalte in der folgenden Prioritätsreihenfolge bereit:

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

  2. Konfigurierte Weiterleitungen

  3. Statische Inhalte mit exakter Übereinstimmung

    1. Sprachcode + Ländercode (z. B. Inhalte aus fr_ca/)
      Die Reihenfolge richtet sich nach den Qualitätswerten für jede Sprache im Accept-Language-Header der Anfrage.

    2. Nur Ländercode (z. B. Inhalte aus ALL_ca/)

    3. Nur Sprachcode (z. B. Inhalte aus fr/ oder es_ALL/)
      Die Reihenfolge richtet sich nach den Qualitätswerten für jede Sprache im Header Accept-Language der Anfrage.

    4. Statische Inhalte mit exakter Übereinstimmung (Standard)
      Das sind Inhalte, die sich außerhalb des Verzeichnisses „i18n content“ befinden, z. B. im Stammverzeichnis des public-Verzeichnisses.

  4. Konfigurierte Rewrites

  5. 404-Fehlerbehandlung

    1. i18n-404-Seiten
      Hier gilt dieselbe Prioritätsreihenfolge wie oben für statische Inhalte mit genauem Abgleich.

    2. Benutzerdefinierte 404-Seite

    3. Standardmäßige 404-Seite (von Firebase bereitgestellt)

Beispiel für die Prioritätsreihenfolge

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 internationalisierte Inhalte (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 sind nach Qualitätswerten im Accept-Language-Header sortiert.

    • Ländercode: ca (Kanada)

Gemäß der Prioritätsreihenfolge für genau passende Sprachen und den Qualitätswerten für die Spracheinstellungen sucht Hosting in den Verzeichnissen in der folgenden Reihenfolge nach einer angeforderten Seite.

  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-Fehlerbehandlung

Welche Seite wird dem Nutzer präsentiert?

  • Angefragte Seite: index.html

  • Angefragte Seite: awesome-page.html

Beachten Sie bei dieser Suche und Bereitstellung des Verzeichnisses „i18n content“ Folgendes:

  • Das Verzeichnis localized-files/ enthält nicht die Unterordner en_ca/, en_ALL/ oder en/. Hosting überspringt daher einfach die Prioritätsliste, bis ein passender Unterordner für die Sprach-Länder-Kombination der Anfrage gefunden wird.

  • Obwohl das Verzeichnis localized-files/ einen Unterordner es_ALL/ enthält, ist im obigen Beispiel für eine Anfrage kein Sprachcode es oder es-foo enthalten. Daher sucht Hosting nicht nach „i18n content“, der mit es übereinstimmt.

  • Die Unterordner fr/ und fr_ALL/ sind aus Sicht der Länder- und Spracheinstellungen eines Nutzers gleichwertig. Wenn jedoch beide Unterordner vorhanden sind, werden über Hosting zuerst die Inhalte von fr_ALL/ und dann die Inhalte von fr/ bereitgestellt.

Sie können ändern, welche Inhalte bereitgestellt werden, indem Sie mit Cookies die Länder- und Sprachheader überschreiben.

Hier einige Beispiele für die Verwendung von Cookie-Überschreibungen:

  • 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 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. Mit dem folgenden JavaScript-Code-Snippet wird beispielsweise der Ländercode auf ca und der Accept-Language-Header auf fr,en überschrieben:

document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";

Sprach-Cookie-Überschreibungen müssen eine kommagetrennte Liste von Sprachcodes in der Reihenfolge der Präferenz sein, ohne Untertags oder Qualitätswerte.

Cookie-Überschreibungen werden nicht in Logs erfasst.