Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Internationalisierung (i18n) umschreiben konfigurieren

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

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 Text

  • Bereitstellen 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 Formulierung

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

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

    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 haben

    • languageCode : Enthält Inhalte, die für Benutzer mit dieser Sprachpräferenz spezifisch sind, aber die Inhalte sind nicht länderspezifisch; im Grunde äquivalent zu languageCode_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 (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 vollständig spezifisch für eine Sprache und/oder ein Land sind.

  2. Fügen Sie Ihrer firebase.json -Datei das i18n -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 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 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 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-Umschreibungen einrichten, stellt das Hosting Inhalte basierend auf der folgenden Prioritätsreihenfolge bereit:

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

  2. Konfigurierte Weiterleitungen

  3. Statischer Inhalt mit exakter Übereinstimmung

    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. "Standard"-Statischer Inhalt mit exakter Übereinstimmung
      Dies ist Inhalt, der sich außerhalb des Verzeichnisses "i18n-Inhalte" befindet, z. B. im Stammverzeichnis des public Verzeichnisses.

  4. Konfigurierte Umschreibungen

  5. 404-Handhabung

    1. i18n 404 Seiten
      Dies folgt der gleichen Prioritätsreihenfolge, die oben für statische Inhalte mit exakter Übereinstimmung aufgeführt ist.

    2. Benutzerdefinierte 404 -Seite

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

  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 diesem Suchen und Bereitstellen des Verzeichnisses "i18n-Inhalte":

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

  • Unterordner namens fr/ und fr_ALL/ sind aus Sicht der Länder- und Spracheinstellungen 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 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.