获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Internationalisierung (i18n) umschreiben konfigurieren

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.