Utilisez les réécritures d'internationalisation ("réécritures i18n") pour diffuser différents contenus en fonction du pays ou de la langue préférée d'un utilisateur. Voici quelques exemples de configurations que vous pouvez définir :
Diffuser le même contenu en français à tous les utilisateurs qui préfèrent le français (quel que soit le pays)
Exemple : une page d'accueil avec du texte en françaisDiffuser du contenu en français standard aux utilisateurs qui préfèrent le français, mais diffuser du contenu en français canadien aux utilisateurs canadiens qui préfèrent le français
Exemple : une page d'accueil avec une formulation en français standard par rapport à une page d'accueil avec une formulation en français canadienDiffuser le même contenu à tous les utilisateurs canadiens (quelle que soit leur préférence linguistique)
Exemple : une page d'accueil dans la langue "par défaut" de votre site, mais avec une fonctionnalité spécifique au Canada (comme un thème de vacances)Diffuser du contenu en français canadien 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)
Firebase Hosting détermine le pays d'un utilisateur à partir de son adresse IP et ses préférences linguistiques à partir de l'en-tête de requête Accept-Language (généralement défini automatiquement par son navigateur Web).
Configurer les réécritures i18n
Pour configurer les réécritures i18n pour votre site Hosting, vous devez créer un répertoire "i18n
content" pour tous vos contenus localisés, puis ajouter l'attribut i18n à votre fichier firebase.json pour pointer vers votre nouveau répertoire "i18n content".
Voici les étapes détaillées :
Dans le dossier
publicdu répertoire de votre application locale, créez un répertoire distinct pour votre "i18n content", puis créez des sous-dossiers pour chaque combinaison de langue et de pays acceptée par votre site.Dans chaque sous-dossier, ajoutez le contenu spécifique à cette combinaison, comme des pages d'accueil sur le thème des fêtes ou des pages 404 spécifiques à une langue.
Voici un exemple de répertoire "i18n content" 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.htmlLe répertoire
localized-files/contient des sous-dossiers distincts pour chaque combinaison de langue et de pays acceptée par votre site. Le schéma de nommage de chaque sous-dossier doit respecter l'un des formats suivants :languageCode_countryCode: contient du contenu spécifique aux utilisateurs qui ont cette préférence linguistique et ce code payslanguageCode: contient du contenu spécifique aux utilisateurs qui ont cette préférence linguistique, mais le contenu n'est pas spécifique à un pays. Il est donc équivalent àlanguageCode_ALL.
Pour en savoir plus sur ces codes, consultez la sous-section Codes pays et de langue ci-dessous. Vous pouvez utiliser la valeur de
ALL(sensible à la casse) pour indiquer n'importe quel pays (commees_ALL/) ou n'importe quelle langue (commeALL_ca/).Les fichiers d'un sous-dossier n'ont pas besoin d'avoir des fichiers analogues dans le répertoire
publicou d'autres sous-dossiers. Vous pouvez créer du contenu entièrement spécifique à une langue et/ou à un pays.Ajoutez l'attribut
i18nà votre fichierfirebase.jsonet spécifiez le répertoire qui contient votre "i18n content". Reprenons 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
rootdoit être le nom du répertoire qui contient tous vos sous-dossiers "i18n content". Si vous avez placé tous vos "i18n content" sous-dossiers à la racine de votre répertoirepublic, utilisez/pour la valeur deroot. Les barres obliques de début et de fin dans la valeurrootsont facultatives.Déployez votre "i18n content" et votre configuration sur votre site Hosting.
Vous pouvez tester votre configuration à l'aide de remplacements de cookies.
Codes pays et de langue
Lorsque vous nommez des sous-dossiers "i18n content", vous devez utiliser des minuscules pour les codes pays et de langue. Vous pouvez utiliser la valeur ALL (sensible à la casse) pour indiquer
n'importe quel pays (comme es_ALL/) ou n'importe quelle langue (comme ALL_ca/).
Hosting obtient le code pays à partir de l'adresse IP de l'utilisateur. Les codes pays sont des codes ISO 3166-1 alpha-2 à deux lettres.
Les codes de langue sont obtenus à partir de l'en-tête de requête Accept-Language de l'utilisateur
(généralement
défini automatiquement par son navigateur Web).
Il s'agit de codes ISO 639-1.
Tenez compte des points suivants lorsque vous utilisez des codes de langue :
Lorsque Hosting recherche le "i18n content" à diffuser, il ordonne les langues en fonction des valeurs de qualité dans l'en-tête
Accept-Language.Hosting supprime tous les sous-tags régionaux et pays dans l'
Accept-Languageen-tête. Par conséquent, le code de langue dans le nom d'un sous-dossier "i18n content" ne peut pas contenir ces sous-tags. Par exemple, vous ne pouvez pas utiliseres-419oues-UScomme code de langue dans un nom de sous-dossier, mais vous pouvez utiliseres.Si vous souhaitez diffuser du contenu régional ou pays spécifique, vous pouvez créer des sous-dossiers contenant le contenu spécifique à la langue et au pays que vous souhaitez prendre en charge.
Ordre de priorité pour "i18n content"
Si vous configurez des réécritures i18n, Hosting diffuse le contenu en fonction de l'ordre de priorité suivant :
Espaces de noms réservés commençant par un segment de chemin d'accès
/__/*Redirections configurées
Contenu statique à correspondance exacte
Code de langue + Code pays (par exemple, contenu de
fr_ca/)
L'ordre suit les valeurs de qualité de chaque langue dans l'en-têteAccept-Languagede la requête.Code pays uniquement (par exemple, contenu de
ALL_ca/)Code de langue uniquement (par exemple, contenu de
fr/oues_ALL/)
L'ordre suit les valeurs de qualité de chaque langue dans l'en-têteAccept-Languagede la requête.Contenu statique à correspondance exacte "par défaut"
Il s'agit de contenu qui se trouve en dehors du répertoire "i18n content", par exemple à la racine du répertoirepublicdirectory.
Réécritures configurées
Gestion des erreurs 404
Pages 404 i18n
L'ordre de priorité est le même que celui indiqué ci-dessus pour le contenu statique à correspondance exacte.Page 404 par défaut (fournie par Firebase)
Exemple d'ordre de priorité
Reprenons l'exemple ci-dessus. Nous utiliserons le même répertoire d'exemple et une requête d'exemple.
Exemple de projet en local avec un répertoire "i18n content" (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.htmlExemple d'informations de requête
Codes de langue :
fr,en(français, puis anglais)
Les codes de langue sont classés en fonction des valeurs de qualité dans l'Accept-Languageen-tête.Code pays :
ca(Canada)
Conformément à l'ordre de priorité de correspondance exacte et aux valeurs de qualité des préférences linguistiques, Hosting recherche une page demandée dans les répertoires dans l'ordre suivant.
public/localized-files/fr_ca/public/localized-files/en_ca/public/localized-files/ALL_ca/public/localized-files/fr_ALL/public/localized-files/fr/public/localized-files/en_ALL/public/localized-files/en/public/Gestion des erreurs 404
Quelle page sera diffusée à l'utilisateur ?
Page demandée :
index.htmlPage demandée :
awesome-page.html
Tenez compte des remarques suivantes concernant cette recherche et cette diffusion du répertoire "i18n content" :
Le répertoire
localized-files/ne contient pas de sous-dossiersen_ca/,en_ALL/nien/. Hosting ignore donc la liste de priorité jusqu'à ce qu'il trouve un sous-dossier correspondant à la combinaison langue-pays de la requête.Même si le répertoire
localized-files/contient unes_ALL/sous-dossier, l'exemple de requête ci-dessus n'inclut pas de code deesnies-foolangue. Hosting ne recherchera donc pas de "i18n content" correspondant àes.Les sous-dossiers appelés
fr/etfr_ALL/sont équivalents du point de vue des préférences linguistiques et pays d'un utilisateur. Toutefois, si les deux sous-dossiers existent, Hosting diffusera le contenufr_ALL/avant le contenufr/.
Remplacer les codes pays et de langue par des cookies
Vous pouvez modifier le contenu diffusé à l'aide de cookies pour remplacer les en-têtes pays et langue.
Voici quelques façons d'utiliser les remplacements de cookies :
Testez une fonctionnalité avec différentes combinaisons de langue/pays pour vérifier le contenu diffusé.
Permettez à vos utilisateurs de modifier le contenu qu'ils voient. Par exemple, vous pouvez implémenter un outil de sélection de langue, puis définir le cookie
firebase-language-overridede l'utilisateur en conséquence.
Pour configurer les remplacements de cookies, définissez des cookies avec l'un ou les deux noms suivants : firebase-country-override et firebase-language-override. Par exemple, l'extrait de code JavaScript suivant remplace le code pays par ca et l'en-tête Accept-Language par fr,en :
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Les remplacements de cookies de langue doivent être une liste de codes de langue séparés par une virgule, par ordre de préférence, sans sous-tags ni valeurs de qualité.
Les remplacements de cookies ne sont pas pris en compte dans les journaux.