Utilisez les réécritures d'internationalisation (« réécritures i18n ») pour proposer 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 :
Proposez le même contenu 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çaisProposez du contenu en français standard aux utilisateurs qui préfèrent le français, mais pour les utilisateurs canadiens qui préfèrent le français, diffusez plutôt du contenu en français canadien.
Exemple : une page d'accueil avec une formulation en français standard par rapport à une page d'accueil avec une formulation en français canadienProposez le même contenu à tous les utilisateurs canadiens (quelle que soit leur préférence linguistique).
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)Proposez du contenu 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 des préférences linguistiques d'un utilisateur à 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 d'hébergement, vous devez créer un répertoire « contenu i18n » pour tout votre contenu localisé, puis ajouter l'attribut i18n
à votre fichier firebase.json
pour pointer vers votre nouveau répertoire « contenu i18n ».
Voici les étapes détaillées :
Dans le dossier
public
de votre répertoire d'applications local, créez un répertoire distinct pour votre "contenu i18n", puis créez des sous-dossiers pour chaque combinaison de langue et de pays prise 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 de 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
public/ // matches requests that aren't specified by your "i18n content" subfolders // example: display your homepage in the "default" language for your site with no country-specific features index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ // matches requests from Canada with any language preference // example: display your homepage in the "default" language for your site with a Canada-specific feature ALL_ca/ index.html // matches requests from any country with a language preference of `es` or `es-foo` // example: display your homepage in Spanish with no country-specific features es_ALL/ index.html 404.html // your site's custom 404 page in Spanish // matches requests from any country with a language preference of `fr` or `fr-foo` // example: display your homepage in Standard French with no country-specific features fr/ index.html 404.html // your site's custom 404 page in French // matches requests from Canada with a language preference of `fr` or `fr-foo` // example: display your homepage in Canadian French and/or with a Canada-specific feature fr_ca/ index.html
Le répertoire
localized-files/
contient des sous-dossiers distincts pour chaque combinaison de langue et de pays prise en charge par votre site. Le modèle de dénomination de chaque sous-dossier doit suivre l'un de ces formats :languageCode_countryCode
: contient du contenu spécifique aux utilisateurs qui ont cette préférence de langue et ce code de pays.languageCode
: contient du contenu spécifique aux utilisateurs qui ont cette préférence linguistique, mais le contenu n'est pas spécifique à un pays ; fondamentalement équivalent àlanguageCode_ALL
Reportez-vous à la sous-section Codes de pays et de langue ci-dessous pour plus de détails sur ces codes. Vous pouvez utiliser la valeur
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
public
ou dans 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.json
et spécifiez le répertoire qui contient votre "contenu i18n". Poursuivant 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 « i18n content ». Si vous avez placé tous vos sous-dossiers "contenu i18n" à la racine de votre répertoirepublic
, utilisez/
pour la valeur deroot
. Les barres obliques de début et de fin dans la valeurroot
sont facultatives.Déployez votre "contenu i18n" et configurez-le sur votre site d'hébergement.
Vous pouvez tester votre configuration en utilisant les remplacements de cookies .
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 ALL
(sensible à la casse) pour indiquer n'importe quel pays (comme es_ALL/
) ou n'importe quelle langue (comme ALL_ca/
).
L'hébergement obtient le code du pays à partir de l'adresse IP de l'utilisateur. Les codes de 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 ). Ce sont des codes ISO 639-1 . Gardez les points suivants à l’esprit lorsque vous utilisez des codes de langue :
Lorsque l'hébergement recherche le « contenu i18n » à diffuser, il classe les langues en fonction des valeurs de qualité indiquées dans l'en-tête
Accept-Language
.L'hébergement supprime toutes les sous-balises régionales et nationales dans l'en-tête
Accept-Language
, de sorte que le code de langue dans un nom de sous-dossier « contenu i18n » ne peut pas contenir ces sous-balises. Par exemple, vous ne pouvez pas utiliseres-419
oues-US
comme code de langue dans un nom de sous-dossier, mais vous pouvez utiliseres
.Si vous souhaitez diffuser un contenu régional ou national 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.
Dans cet exemple, une requête provenant d'Espagne avec la préférence linguistique
es
,es-es
ou mêmees-419
recevrait le contenu du sous-dossieres_es/
car l'hébergement traite tous ces codes de langue commees
.Une demande provenant des États-Unis, du Mexique ou de tout autre pays avec la préférence linguistique
es-419
recevrait le contenu du sous-dossieres_ALL/
car l'hébergement traitees-419
commees
.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Spain with a language preference of `es` or `es-foo` es_es/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` es_ALL/ index.html
Dans cet exemple, une demande du Mexique avec la préférence linguistique
es-419
recevrait le contenu du sous-dossieres_mx/
car Hosting traite le code de languees-419
commees
.Cependant, une demande des États-Unis avec la préférence linguistique
es-419
recevrait le contenu du souses_ALL/
car l'hébergement traitees-419
commees
et il n'y a pas de sous-dossieres_us/
.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Argentina with a language preference of `es` or `es-foo` (mimics behavior of `es-ar` header tag) es_ar/ index.html // matches requests from Spain with a language preference of `es` or `es-foo` (mimics behavior of `es-es` header tag) es_es/ index.html // matches requests from Mexico with a language preference of `es` or `es-foo` (mimics behavior of `es-mx` header tag) es_mx/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` (mimics behavior of `es-419` header tag) es_ALL/ index.html
Ordre de priorité pour "contenu i18n"
Si vous configurez des réécritures i18n, l'hébergement diffuse le contenu en fonction de l'ordre de priorité suivant :
Espaces de noms réservés commençant par un segment de chemin
/__/*
Redirections configurées
Contenu statique correspondant exactement
Code de langue + Code de pays (par exemple, contenu de
fr_ca/
)
L'ordre suit les valeurs de qualité pour chaque langue dans l'en-têteAccept-Language
de la demande.Code de 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é pour chaque langue dans l'en-têteAccept-Language
de la demande.Contenu statique de correspondance exacte « par défaut »
Il s'agit d'un contenu qui se trouve en dehors du répertoire "i18n content", comme à la racine du répertoirepublic
.
Réécritures configurées
404 manipulation
i18n 404pages
Cela suit le même ordre de priorité indiqué ci-dessus pour le contenu statique de correspondance exacte.Page 404 personnalisée
Page 404 par défaut (fournie par Firebase)
Exemple d'ordre prioritaire
Continuons notre exemple ci-dessus. Nous utiliserons le même exemple de répertoire et un exemple de requête.
Exemple de répertoire de projet 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.html
Exemple d'informations sur la demande
Codes langue :
fr
,en
(français, puis anglais)
Les codes de langue sont classés en fonction des valeurs de qualité dans l'en-têteAccept-Language
.Code pays :
ca
(Canada)
Selon l'ordre de priorité de correspondance exacte et les valeurs de qualité des préférences linguistiques, l'hébergement recherchera dans les répertoires une page demandée 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/
404 manipulation
Quelle page sera présentée à l'utilisateur ?
Page demandée :
index.html
index.html
du sous-dossierfr_ca/
Étant donné que Hosting recherche d'abord le sous-dossier
fr_ca/
, il trouvera la correspondance exacte pourindex.html
dans ce sous-dossier.Page demandée :
awesome-page.html
404.html
du sous-dossierfr/
L'hébergement recherche d'abord l'intégralité du répertoire (y compris tous les sous-dossiers "i18n content" et le répertoire racine) par ordre de priorité pour une correspondance exacte, mais il n'y a pas de correspondance exacte pour
awesome-page.html
.Ainsi, Hosting commencera sa gestion 404, qui suit le même ordre de priorité i18n que les recherches de correspondance exacte. Le sous-dossier
fr/
est le premier sous-dossier recherché contenant une page 404.
Notez ce qui suit à propos de cette recherche et service du répertoire « i18n content » :
Le répertoire
localized-files/
ne contient pas réellement les sous-dossiersen_ca/
,en_ALL/
ouen/
, donc l'hébergement sautera simplement la liste des priorités jusqu'à ce qu'il trouve un sous-dossier correspondant à la combinaison langue-pays de la demande.Même si le répertoire
localized-files/
contient un sous-dossieres_ALL/
, l'exemple de requête ci-dessus n'inclut pas de code de languees
oues-foo
, donc Hosting ne recherchera pas le « contenu i18n » qui correspond àes
.Les sous-dossiers appelés
fr/
etfr_ALL/
sont équivalents du point de vue du pays et des préférences linguistiques d'un utilisateur. Cependant, si les deux sous-dossiers existent, l'hébergement diffuserafr_ALL/
content avantfr/
content.
Remplacer les codes de langue et de pays avec des cookies
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 implémenter un sélecteur de langue, puis définir le cookie
firebase-language-override
de l'utilisateur en conséquence.
Pour configurer les remplacements de cookies, définissez des cookies portant les deux ou l'un de ces noms : firebase-country-override
et firebase-language-override
. Par exemple, l'extrait de code JavaScript suivant remplace le code du 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 des virgules, classés par ordre de préférence, sans sous-balises ni valeurs de qualité.
Les remplacements de cookies ne sont pas reflétés dans les journaux.