Utilizzare le riscritture di internazionalizzazione ("riscritture i18n") per offrire contenuti diversi a seconda del paese o della lingua preferita dell'utente. Ecco alcune configurazioni di esempio che potresti impostare:
Offri gli stessi contenuti francesi a tutti gli utenti che preferiscono il francese (indipendentemente dal Paese).
Esempio: una home page con testo in franceseOffri contenuti in francese standard agli utenti che preferiscono il francese, ma per gli utenti canadesi che preferiscono il francese, offri invece contenuti in francese canadese.
Esempio: una home page con una frase in francese standard rispetto a una home page con una frase in francese canadeseOffri gli stessi contenuti a tutti gli utenti canadesi (indipendentemente dalla loro preferenza linguistica).
Esempio: una home page con la lingua "predefinita" del tuo sito ma con una funzionalità specifica per il Canada (come un tema festivo)Offri contenuti in francese canadese agli utenti canadesi che preferiscono il francese.
Esempio: una home page con frasi in francese canadese e una funzionalità specifica per il Canada (come un tema festivo)
Firebase Hosting determina il Paese di un utente dal suo indirizzo IP e le preferenze di lingua dell'utente dall'intestazione della richiesta Accept-Language
(solitamente impostata automaticamente dal browser web ).
Configura le riscritture i18n
Per impostare le riscritture i18n per il tuo sito di hosting, devi creare una directory "i18n content" per tutti i tuoi contenuti localizzati, quindi aggiungere l'attributo i18n
al tuo file firebase.json
per puntare alla tua nuova directory "i18n content".
Ecco i passaggi dettagliati:
All'interno della cartella
public
della directory dell'app locale, crea una directory separata per i tuoi "contenuti i18n", quindi crea sottocartelle per ciascuna combinazione di lingua e paese supportata dal tuo sito.In ciascuna sottocartella, aggiungi il contenuto specifico per quella combinazione, come home page a tema festivo o pagine 404 specifiche per la lingua.
Ecco un esempio di directory "i18n content" chiamata
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
La directory
localized-files/
contiene sottocartelle separate per ciascuna combinazione di lingua e paese supportata dal tuo sito. Il modello di denominazione per ciascuna sottocartella deve seguire uno di questi formati:languageCode_countryCode
: contiene contenuti specifici per gli utenti che hanno quella preferenza di lingua e quel codice paeselanguageCode
: contiene contenuti specifici per gli utenti che hanno tale preferenza linguistica, ma i contenuti non sono specifici del Paese; sostanzialmente equivalente alanguageCode_ALL
Fare riferimento alla sottosezione Codici paese e lingua di seguito per maggiori dettagli su questi codici. Puoi utilizzare il valore
ALL
(con distinzione tra maiuscole e minuscole) per indicare qualsiasi paese (comees_ALL/
) o qualsiasi lingua (comeALL_ca/
).Non è necessario che i file in una sottocartella contengano file analoghi nella directory
public
o in altre sottocartelle. Puoi creare contenuti interamente specifici per una lingua e/o un Paese.Aggiungi l'attributo
i18n
al tuo filefirebase.json
e specifica la directory che contiene il tuo "contenuto i18n". Continuando il nostro esempio:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
La directory specificata per
root
deve essere il nome della directory che contiene tutte le sottocartelle "contenuto i18n". Se hai posizionato tutte le sottocartelle "contenuto i18n" nella radice della directorypublic
, utilizza/
per il valore diroot
. Le barre iniziali e finali nel valoreroot
sono facoltative.Distribuisci il tuo "contenuto i18n" e configuralo sul tuo sito di hosting.
Puoi testare la tua configurazione utilizzando l'override dei cookie .
Codici di paese e lingua
Quando si denominano le sottocartelle "contenuto i18n", è necessario utilizzare lettere minuscole sia per i codici del paese che per quelli della lingua. Puoi utilizzare il valore ALL
(con distinzione tra maiuscole e minuscole) per indicare qualsiasi paese (come es_ALL/
) o qualsiasi lingua (come ALL_ca/
).
L'hosting ottiene il codice del paese dall'indirizzo IP dell'utente. I codici paese sono codici ISO 3166-1 alpha-2 di due lettere .
I codici della lingua vengono ottenuti dall'intestazione della richiesta Accept-Language
dell'utente (solitamente impostata automaticamente dal browser web ). Sono codici ISO 639-1 . Tieni presente quanto segue quando usi i codici lingua:
Quando Hosting cerca quale "contenuto i18n" servire, ordina le lingue in base ai valori di qualità nell'intestazione
Accept-Language
.L'hosting elimina eventuali sottotag regionali e nazionali nell'intestazione
Accept-Language
, quindi il codice della lingua nel nome della sottocartella "contenuto i18n" non può contenere questi sottotag. Ad esempio, non puoi utilizzarees-419
oes-US
come codice lingua nel nome di una sottocartella, ma puoi utilizzarees
.Se desideri offrire contenuti regionali o nazionali specifici, puoi creare sottocartelle che contengono i contenuti specifici della lingua e del paese che desideri supportare.
In questo esempio, una richiesta dalla Spagna con la preferenza linguistica
es
,es-es
o anchees-419
riceverebbe contenuto dalla sottocartellaes_es/
perché Hosting tratta tutti questi codici lingua comees
.Una richiesta proveniente dagli Stati Uniti, dal Messico o da qualsiasi altro Paese con la preferenza linguistica
es-419
riceverebbe contenuto dalla sottocartellaes_ALL/
perché Hosting trattaes-419
comees
.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
In questo esempio, una richiesta dal Messico con la preferenza linguistica
es-419
riceverebbe contenuto dalla sottocartellaes_mx/
perché Hosting tratta il codice linguaes-419
comees
.Tuttavia, una richiesta dagli Stati Uniti con la preferenza linguistica
es-419
riceverebbe contenuto dalla sottocartellaes_ALL/
perché Hosting trattaes-419
comees
e non esiste una sottocartellaes_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
Ordine di priorità per i "contenuti i18n"
Se imposti le riscritture i18n, Hosting fornisce i contenuti in base al seguente ordine di priorità:
Spazi dei nomi riservati che iniziano con un segmento di percorso
/__/*
Reindirizzamenti configurati
Contenuto statico con corrispondenza esatta
Codice lingua + Codice paese (ad esempio, contenuto da
fr_ca/
)
L'ordine segue i valori di qualità per ogni lingua nell'intestazioneAccept-Language
della richiesta.Solo codice paese (ad esempio, contenuto di
ALL_ca/
)Solo codice lingua (ad esempio, contenuto da
fr/
oes_ALL/
)
L'ordine segue i valori di qualità per ogni lingua nell'intestazioneAccept-Language
della richiesta.Contenuto statico con corrispondenza esatta "predefinita".
Si tratta di contenuti esterni alla directory "i18n content", come nella directory principale della directorypublic
.
Riscritture configurate
404 movimentazione
i18n 404 pagine
Segue lo stesso ordine di priorità elencato sopra per il contenuto statico con corrispondenza esatta.Pagina 404 personalizzata
Pagina 404 predefinita (fornita da Firebase)
Esempio di ordine di priorità
Continuiamo il nostro esempio dall'alto. Utilizzeremo la stessa directory di esempio e una richiesta di esempio.
Esempio di directory di progetto locale con una directory "contenuto i18n" (chiamata
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
Esempio richiesta informazioni
Codici lingua:
fr
,en
(francese, poi inglese)
I codici lingua sono ordinati in base ai valori di qualità nell'intestazioneAccept-Language
.Prefisso internazionale:
ca
(Canada)
In base all'ordine di priorità della corrispondenza esatta e ai valori di qualità per le preferenze della lingua, l'Hosting cercherà nelle directory la pagina richiesta nel seguente ordine.
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 movimentazione
Quale pagina verrà servita all'utente?
Pagina richiesta:
index.html
index.html
dalla sottocartellafr_ca/
Poiché Hosting cerca prima la sottocartella
fr_ca/
, troverà la corrispondenza esatta perindex.html
in quella sottocartella.Pagina richiesta:
awesome-page.html
404.html
dalla sottocartellafr/
L'hosting cerca innanzitutto nell'intera directory (comprese tutte le sottocartelle "contenuto i18n" e la directory root) in ordine di priorità una corrispondenza esatta, ma non esiste una corrispondenza esatta per
awesome-page.html
.Pertanto, Hosting inizierà la gestione 404, che segue lo stesso ordine di priorità i18n delle ricerche con corrispondenza esatta. La sottocartella
fr/
è la prima sottocartella cercata che contiene una pagina 404.
Tieni presente quanto segue riguardo alla ricerca e al servizio della directory "i18n content":
La directory
localized-files/
in realtà non contiene sottocartelleen_ca/
,en_ALL/
oen/
, quindi Hosting salterà semplicemente l'elenco delle priorità finché non troverà una sottocartella corrispondente per la combinazione lingua-paese della richiesta.Anche se la directory
localized-files/
contiene una sottocartellaes_ALL/
, la richiesta di esempio sopra non include un codice della linguaes
oes-foo
, quindi Hosting non cercherà "contenuto i18n" che corrispondees
.Le sottocartelle denominate
fr/
efr_ALL/
sono equivalenti dal punto di vista del paese e delle preferenze della lingua dell'utente. Tuttavia, se esistono entrambe le sottocartelle, Hosting serviràfr_ALL/
content prima difr/
content.
Sostituisci i codici lingua e paese con i cookie
Puoi modificare il contenuto offerto utilizzando i cookie per sovrascrivere le intestazioni del paese e della lingua.
Ecco alcuni modi in cui puoi utilizzare le sovrascritture dei cookie:
Prova una funzionalità con diverse combinazioni di lingua/paese per verificare quali contenuti vengono offerti.
Consenti ai tuoi utenti di modificare il contenuto che vedono. Ad esempio, puoi implementare un selettore di lingua, quindi impostare di conseguenza il cookie
firebase-language-override
dell'utente.
Per configurare le sostituzioni dei cookie, imposta i cookie con entrambi o uno di questi nomi: firebase-country-override
e firebase-language-override
. Ad esempio, il seguente snippet di codice JavaScript sovrascrive il codice paese in ca
e l'intestazione Accept-Language
in fr,en
:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Le sostituzioni dei cookie di lingua devono essere un elenco di codici di lingua separati da virgole in ordine di preferenza, senza sottotag o valori di qualità.
Le sostituzioni dei cookie non si riflettono nei log.