Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Configurer les réécritures d'internationalisation (i18n)

Utilisez des réécritures d'internationalisation ("réécritures i18n") pour diffuser un contenu différent en fonction du pays ou de la langue préférée de l'utilisateur. Voici quelques exemples de configurations que vous pouvez configurer :

  • Servir le même contenu en français à tous les utilisateurs qui préfèrent français (quel que soit le pays).
    Exemple : une page d'accueil avec du texte en français

  • Servir le contenu français standard pour les utilisateurs qui préfèrent le français, mais pour les utilisateurs canadiens qui préfèrent le français, servir à la place du Canada du contenu en français.
    Exemple : une page d'accueil avec une formulation en français standard versus une page d'accueil avec une formulation en français canadien

  • Servir le même contenu à tous les utilisateurs canadiens (quelle que soit leur langue de préférence).
    Exemple : une page d'accueil avec la langue "par défaut" de votre site mais avec une fonctionnalité spécifique au Canada (comme un thème de vacances)

  • Servir du contenu canadien français aux utilisateurs canadiens qui préfèrent le français.
    Exemple : une page d'accueil avec une formulation en français canadien et une fonctionnalité spécifique au Canada (comme un thème de vacances)

Hébergement Firebase détermine un pays de l' utilisateur à partir de leur adresse IP et de les préférences linguistiques d'un utilisateur Accept-Language - tête de requête (généralement définie automatiquement par leur navigateur Web ).

Configurer les réécritures i18n

Pour configurer réécritures i18n pour votre site d' hébergement, vous devez créer un « contenu i18n » répertoire pour tout votre contenu localisé, puis ajoutez le i18n attribut à votre firebase.json fichier pour pointer vers votre nouveau répertoire « content i18n ».

Voici les étapes détaillées :

  1. Dans votre répertoire de l' application locale public dossier, créez un répertoire distinct pour votre « contenu i18n », puis créer des sous - dossiers pour chaque combinaison de langue et le pays pris en charge par votre site.

    Dans chaque sous-dossier, ajoutez le contenu spécifique à cette combinaison, comme des pages d'accueil sur le thème des vacances ou des pages 404 spécifiques à une langue.

    Voici un exemple répertoire « contenu i18n » appelé 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
    

    Les localized-files/ répertoire contient des sous - dossiers séparés pour chaque langue et la combinaison pays pris en charge par votre site. Le modèle de nommage de chaque sous-dossier doit suivre l'un de ces formats :

    • languageCode_countryCode : Contient des contenus spécifiques pour les utilisateurs qui ont la préférence de langue et que le code pays

    • languageCode : Contient des contenus spécifiques pour les utilisateurs qui ont la préférence de langue, mais le contenu ne sont pas spécifiques à chaque pays; essentiellement équivalent à languageCode_ALL

    Se reporter au paragraphe pays et les codes de langue ci - dessous pour plus de détails au sujet de ces codes. Vous pouvez utiliser la valeur de ALL (sensible à la casse) pour indiquer tous les pays (comme es_ALL/ ) ou toute autre langue (comme ALL_ca/ ).

    Les fichiers dans un sous - dossier ne ont pas besoin d'avoir des fichiers analogues dans le public répertoire ou d' autres sous - dossiers. Vous pouvez créer du contenu entièrement spécifique à une langue et/ou un pays.

  2. Ajouter l' i18n attribut à votre firebase.json fichier et spécifiez le répertoire qui contient votre « contenu i18n ». Continuons notre exemple :

    // firebase.json
    
    "hosting": {
    
      "public": "public",
    
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
    
      "i18n": {
        "root": "/localized-files"  // directory that contains your "i18n content"
      }
    
      ...
    }
    

    Le répertoire spécifié pour root doit être le nom du répertoire qui contient tous vos sous - dossiers « contenu i18n ». Si vous avez placé tous vos sous - dossiers « contenu i18n » à la racine de votre public répertoire, utilisez / pour la valeur de la root . Barres obliques avant et arrière à la root valeur sont facultatifs.

  3. Déployez votre "contenu i18n" et config sur votre site d'hébergement.

Vous pouvez tester votre configuration à l' aide overrides cookie .

Codes de pays et de langue

Lorsque vous nommez les sous-dossiers « contenu i18n », vous devez utiliser des minuscules pour les codes de pays et de langue. Vous pouvez utiliser la valeur de ALL (sensible à la casse) pour indiquer tous les pays (comme es_ALL/ ) ou toute autre langue (comme ALL_ca/ ).

Hosting obtient le code du pays à partir de l'adresse IP de l'utilisateur. Les codes de pays sont à deux lettres ISO 3166-1 alpha-2 .

Les codes de langue sont obtenus à partir de l' utilisateur du Accept-Language en- tête de demande (généralement définie automatiquement par leur navigateur Web ). Ils sont ISO 639-1 . Gardez les points suivants à l'esprit lorsque vous utilisez des codes de langue :

  • Lorsque vous hébergez des recherches pour lesquelles « contenu i18n » pour servir, il ordonne les langues sur la base des valeurs de qualité dans le Accept-Language - tête.

  • Hébergement gouttes toutes les sous - étiquettes régionales et nationales dans le Accept-Language - tête, de sorte que le code de langue dans un nom de sous - dossier « contenu i18n » ne peut pas contenir ces sous - étiquettes. Par exemple, vous ne pouvez pas utiliser es-419 ou es-US comme un code de langue dans un nom de sous - dossier, mais vous pouvez utiliser es .

    Si vous souhaitez diffuser un contenu régional ou national spécifique, vous pouvez créer des sous-dossiers contenant le contenu langue-pays spécifique que vous souhaitez prendre en charge.

Ordre de priorité pour "contenu i18n"

Si vous configurez des réécritures i18n, Hosting diffuse le contenu en fonction de l'ordre de priorité suivant :

  1. Réservé namespaces commençant par un /__/* segment de chemin

  2. configuré réoriente

  3. Contenu statique correspondant exactement

    1. Code de la langue + Code de pays (par exemple, le contenu de fr_ca/ )
      L'ordre suit les valeurs de qualité pour chaque langue de la demande Accept-Language en- tête.

    2. Code de pays seulement (par exemple, le contenu de ALL_ca/ )

    3. Code de langue (par exemple, le contenu de fr/ ou es_ALL/ )
      L'ordre suit les valeurs de qualité pour chaque langue de la demande Accept-Language en- tête.

    4. Contenu statique de correspondance exacte "par défaut"
      C'est le contenu qui est en dehors du répertoire « contenu i18n », comme à la racine du public répertoire.

  4. configuré réécritures

  5. 404 traitement

    1. i18n 404 pages
      Cela suit le même ordre de priorité indiqué ci-dessus pour le contenu statique de correspondance exacte.

    2. 404 Page

    3. Page 404 par défaut (fournie par Firebase)

Exemple d'ordre prioritaire

Continuons notre exemple ci-dessus. Nous utiliserons le même répertoire d'exemple et un exemple de requête.

  • Exemple répertoire de projet local avec un répertoire « contenu i18n » (appelés 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
    
  • Exemple de demande d'informations

    • Codes de langue: fr , en (français, puis en anglais)
      Les codes de langue sont classés en fonction de valeurs de qualité dans le Accept-Language - tête.

    • Code du pays: ca (Canada)

Selon l'ordre de priorité de correspondance exacte et les valeurs de qualité pour les préférences de langue, Hosting recherchera dans les répertoires une page demandée dans l'ordre suivant.

  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 traitement

Quelle page sera servie à l'utilisateur ?

  • La page demandée: index.html

  • La page demandée: awesome-page.html

Notez ce qui suit à propos de cette recherche et service du répertoire « i18n content » :

  • Les localized-files/ répertoire ne contient pas réellement en_ca/ , en_ALL/ ou en/ sous - dossiers, hébergement afin saute simplement la liste de priorité jusqu'à ce qu'il trouve un sous - dossier correspondant pour la combinaison langue du pays de la demande.

  • Même si les localized-files/ répertoire contient un es_ALL/ sous - dossier, la demande d'exemple ci - dessus ne comprend pas un es ou es-foo code de langue, de sorte que l' hébergement ne recherche pas « contenu i18n » qui correspond es .

  • Appelés sous - dossiers fr/ et fr_ALL/ sont équivalentes du point de vue du pays d'un utilisateur et les préférences linguistiques. Toutefois, si les deux sous - dossiers existent, l' hébergement servira fr_ALL/ contenu avant de fr/ contenu.

Vous pouvez modifier le contenu diffusé en utilisant des cookies pour remplacer les en-têtes de pays et de langue.

Voici quelques façons d'utiliser les remplacements de cookies :

  • Testez une fonctionnalité avec différentes combinaisons langue/pays pour vérifier quel contenu est diffusé.

  • Permettez à vos utilisateurs de modifier le contenu qu'ils voient. Par exemple, vous pouvez mettre en œuvre un sélecteur de langue, puis définissez l'utilisateur firebase-language-override cookie en conséquence.

Pour configurer les remplacements de cookies, les cookies ensemble avec les deux ou l' un de ces noms: firebase-country-override et firebase-language-override . Par exemple, l'extrait du code de overrides pays code JavaScript ci - après pour ca et Accept-Language d'être en- tête fr,en :

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

Les remplacements de cookie de langue doivent être une liste de codes de langue séparés par des virgules par ordre de préférence, sans sous-étiquettes ni valeurs de qualité.

Les remplacements de cookies ne sont pas reflétés dans les journaux.