Überschreibungen der Internationalisierung (i18n) konfigurieren

Verwenden Sie Internationalisierungsumschreibungen („i18n-Umschreibungen“), um je nach Land oder bevorzugter Sprache des Nutzers unterschiedliche Inhalte zu präsentieren. Hier sind einige Beispielkonfigurationen, die Sie einrichten können:

  • allen Nutzern, die Französisch bevorzugen (unabhängig vom Land), dieselben französischen Inhalte bereitstellen
    Beispiel: eine Startseite mit französischem Text

  • Bieten Sie Nutzern, die Französisch bevorzugen, Inhalte in Standardfranzösisch an. Kanada-Nutzern, die Französisch bevorzugen, sollten Sie stattdessen Inhalte in kanadischem Französisch präsentieren.
    Beispiel: eine Startseite mit Formulierungen in Standardfranzösisch und eine Startseite mit Formulierungen in kanadischem Französisch

  • Dieselben Inhalte für alle kanadischen Nutzer ausliefern (unabhängig von ihrer Spracheinstellung).
    Beispiel: eine Startseite in der „Standardsprache“ Ihrer Website, aber mit einer kanadaspezifischen Funktion (z. B. ein Feiertagsthema)

  • Kanadiern, die Französisch bevorzugen, Inhalte auf Französisch (Kanada) präsentieren
    Beispiel: eine Startseite mit kanadisch-französischer Formulierung und einer Funktion speziell für Kanada (z. B. ein Feiertagsdesign)

Firebase Hosting ermittelt das Land eines Nutzers anhand seiner IP-Adresse und die Spracheinstellungen eines Nutzers anhand des Accept-Language-Anfrageheaders (normalerweise automatisch vom Webbrowser festgelegt).

i18n-Umschreibungen einrichten

Wenn Sie i18n-Weiterleitungen für Ihre Hosting-Website einrichten möchten, müssen Sie ein Verzeichnis „i18n-Inhalte“ für alle lokalisierten Inhalte erstellen und dann der firebase.json-Datei das Attribut i18n hinzufügen, damit es auf das neue Verzeichnis „i18n-Inhalte“ verweist.

So gehts:

  1. Erstellen Sie im Ordner public Ihres lokalen App-Verzeichnisses ein separates Verzeichnis für Ihre „i18n-Inhalte“ und dann Unterordner für jede Kombination aus Sprache und Land, 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 saisonalen Themen oder sprachspezifische 404-Seiten.

    Hier ist ein Beispiel für ein Verzeichnis mit i18n-Inhalten namens 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 Kombination aus Sprache und Land, 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 gedacht sind, aber nicht länderspezifisch sind. Entspricht im Grunde languageCode_ALL.

    Weitere Informationen zu diesen Codes finden Sie unten im Abschnitt Länder- und Sprachcodes. Sie können den Wert ALL (mit Berücksichtigung der Groß- und Kleinschreibung) 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 nicht mit ähnlichen Dateien im Verzeichnis public oder in anderen Unterordnern übereinstimmen. Sie können sprach- und/oder länderspezifische Inhalte erstellen.

  2. Fügen Sie der firebase.json-Datei das Attribut i18n 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 „i18n content“ enthält. Wenn Sie alle Unterordner „i18n-Inhalte“ im Stammverzeichnis Ihres public-Verzeichnisses abgelegt haben, verwenden Sie / als Wert für root. Voran- und nachgestellte Schrägstriche im Wert root sind optional.

  3. Stellen Sie Ihre „i18n-Inhalte“ und die Konfiguration auf Ihrer Hosting-Website bereit.

Sie können die Einrichtung mit Cookie-Überschreibungen testen.

Länder- und Sprachcodes

Achten Sie beim Benennen von Unterordnern unter „i18n-Inhalte“ darauf, sowohl Länder- als auch Sprachcodes in Kleinbuchstaben zu schreiben. Sie können den Wert ALL (Groß- und 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 normalerweise automatisch vom Webbrowser festgelegt wird. Es handelt sich dabei um ISO 639-1-Codes. Beachten Sie bei der Verwendung von Sprachcodes Folgendes:

  • Wenn Hosting nach den „i18n-Inhalten“ sucht, die ausgeliefert werden sollen, werden die Sprachen anhand der Qualitätswerte im Accept-Language-Header sortiert.

  • Hosting entfernt alle regionalen und länderspezifischen Unter-Tags im Accept-Language-Header. Daher dürfen diese Unter-Tags nicht im Sprachcode eines Unterordners mit dem Namen „i18n-Inhalte“ enthalten sein. 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 Inhalte für die jeweilige Sprache und das jeweilige Land enthalten, die Sie unterstützen möchten.

Prioritätsreihenfolge für „i18n-Inhalte“

Wenn Sie i18n-Umschreibungen einrichten, stellt Hosting Inhalte gemäß 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 entspricht 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 von fr/ oder es_ALL/)
      Die Reihenfolge folgt den Qualitätswerten für jede Sprache im Accept-Language-Header der Anfrage.

    4. Statischer Standardinhalt (genau passend)
      Das sind Inhalte außerhalb des Verzeichnisses „i18n content“, beispielsweise im Stammverzeichnis des Verzeichnisses public.

  4. Konfigurierte Umschreibungen

  5. Umgang mit 404-Fehlern

    1. i18n 404-Seiten
      Dabei wird dieselbe Prioritätsreihenfolge wie oben für genau passende statische Inhalte verwendet.

    2. Benutzerdefinierte 404-Seite

    3. 404-Standardseite (von Firebase bereitgestellt)

Beispiel für die Prioritätsreihenfolge

Fahren wir mit unserem Beispiel oben fort. Wir verwenden dasselbe Beispielverzeichnis und eine Beispielanfrage.

  • Beispiel für ein lokales Projektverzeichnis mit einem Verzeichnis „i18n-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 werden anhand der Qualitätswerte im Accept-Language-Header sortiert.

    • Ländercode: ca (Kanada)

Gemäß der Prioritätsreihenfolge für die genaue Übereinstimmung 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. Umgang mit 404-Fehlern

Welche Seite wird dem Nutzer präsentiert?

  • Angeforderte Seite: index.html

  • Angeforderte Seite: awesome-page.html

Beachten Sie Folgendes zu diesem Search-and-Serve des Verzeichnisses „i18n content“:

  • Das Verzeichnis localized-files/ enthält keine Unterordner en_ca/, en_ALL/ oder en/. Daher geht Hosting einfach die Prioritätsliste durch, bis ein passender Unterordner für die Sprach-/Landeskombination der Anfrage gefunden wird.

  • Obwohl das Verzeichnis localized-files/ einen es_ALL/-Unterordner enthält, enthält die Beispielanfrage oben keinen Sprachcode es oder es-foo. Daher sucht Hosting nicht nach „i18n-Inhalt“, der mit es übereinstimmt.

  • Unterordner mit den Namen fr/ und fr_ALL/ sind aus Sicht der Länder- und Spracheinstellungen eines Nutzers gleichwertig. Sind jedoch beide Unterordner vorhanden, stellt Hosting den fr_ALL/-Inhalt vor dem fr/-Inhalt 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-/Landeskombinationen, um zu prüfen, welche Inhalte ausgeliefert werden.

  • Bieten Sie Ihren Nutzern die Möglichkeit, 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 dieser Namen fest: firebase-country-override und firebase-language-override. Das folgende JavaScript-Code-Snippet überschreibt beispielsweise den Ländercode mit ca und den Header Accept-Language mit fr,en:

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 in den Protokollen nicht berücksichtigt.