Utilizza le riscritture di internazionalizzazione ("riscritture i18n") per pubblicare contenuti diversi a seconda del paese o della lingua preferita di un utente. Ecco alcuni esempi di configurazioni che potresti impostare:
Mostra gli stessi contenuti in francese a tutti gli utenti che preferiscono il francese (indipendentemente dal paese).
Esempio: una home page con testo in francesePubblica contenuti in francese standard per gli utenti che preferiscono il francese, ma per gli utenti canadesi che preferiscono il francese, pubblica invece contenuti in francese canadese.
Esempio: una home page con formulazione in francese standard rispetto a una home page con formulazione in francese canadesePubblica gli stessi contenuti per tutti gli utenti canadesi (indipendentemente dalla loro preferenza della lingua).
Esempio: una home page con la lingua "predefinita" del tuo sito, ma con una funzionalità specifica per il Canada (come un tema festivo)Pubblica contenuti in francese canadese per gli utenti canadesi che preferiscono il francese.
Esempio: una home page con frasi in francese canadese e una funzionalità specifica per il Canada (ad esempio un tema festivo)
Firebase Hosting determina il paese di un utente in base al suo indirizzo IP e le preferenze della lingua di un utente dall'intestazione della richiesta Accept-Language
(in genere impostate automaticamente dal browser web).
Configurare le riscritture i18n
Per configurare le riscritture i18n per il tuo sito Hosting, devi creare una directory "i18n
content" per tutti i tuoi contenuti localizzati, quindi aggiungere l'attributo i18n
al file firebase.json
per indirizzare alla nuova directory "i18n content".
Ecco i passaggi dettagliati:
All'interno della cartella
public
della directory dell'app locale, crea una directory separata per i "contenuti i18n", poi crea sottocartelle per ogni combinazione di lingua e paese supportata dal tuo sito.In ogni sottocartella, aggiungi i contenuti specifici per quella combinazione, ad esempio 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
La directory
localized-files/
contiene sottocartelle separate per ogni combinazione di lingua e paese supportata dal tuo sito. Il pattern di denominazione di ogni sottocartella deve seguire uno di questi formati:languageCode_countryCode
: contiene contenuti specifici per gli utenti che hanno quella preferenza della lingua e quel codice paeselanguageCode
: contiene contenuti specifici per gli utenti che hanno questa preferenza della lingua, ma i contenuti non sono specifici per paese; in pratica equivalente alanguageCode_ALL
Per ulteriori dettagli su questi codici, consulta la sottosezione Codici paese e lingua di seguito. Puoi utilizzare il valore di
ALL
(sensibile alle maiuscole) per indicare qualsiasi paese (ad esempioes_ALL/
) o qualsiasi lingua (ad esempioALL_ca/
).I file in una sottocartella non devono avere file analoghi nella directory
public
o in altre sottocartelle. Puoi creare contenuti completamente specifici per una lingua e/o un paese.Aggiungi l'attributo
i18n
al filefirebase.json
e specifica la directory che contiene i "contenuti i18n". Continuando con 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 "i18n content". Se hai inserito tutte le sottocartelle "i18n content" nella directory principale dipublic
, utilizza/
per il valore diroot
. Le barre iniziali e finali nel valoreroot
sono facoltative.Esegui il deployment dei contenuti e della configurazione "i18n" sul tuo sito Hosting.
Puoi testare la configurazione utilizzando gli override dei cookie.
Codici paese e lingua
Quando assegni un nome alle sottocartelle "i18n content", devi utilizzare le lettere minuscole sia per i codici paese
che per i codici lingua. Puoi utilizzare il valore di ALL
(sensibile alle maiuscole) per indicare
qualsiasi paese (ad esempio es_ALL/
) o qualsiasi lingua (ad esempio ALL_ca/
).
Hosting ottiene il codice paese dall'indirizzo IP dell'utente. I codici paese sono codici ISO 3166-1 alpha-2 di due lettere.
I codici lingua vengono ottenuti dall'intestazione della richiesta Accept-Language
dell'utente
(in genere
impostata automaticamente dal browser web).
Si tratta di codici ISO 639-1.
Quando utilizzi i codici lingua, tieni presente quanto segue:
Quando Hosting cerca i contenuti i18n da pubblicare, ordina le lingue in base ai valori di qualità nell'intestazione
Accept-Language
.Hosting elimina tutti i tag secondari regionali e di paese nell'intestazione
Accept-Language
, pertanto il codice della lingua nel nome di una sottocartella "i18n content" non può contenere questi tag secondari. Ad esempio, non puoi utilizzarees-419
oes-US
come codice lingua nel nome di una sottocartella, ma puoi utilizzarees
.Se vuoi pubblicare contenuti specifici per regione o paese, puoi creare sottocartelle che contengano i contenuti specifici per lingua e paese che vuoi supportare.
Ordine di priorità per "i18n content"
Se configuri le riscritture i18n, Hosting pubblica i contenuti in base al seguente ordine di priorità:
Spazi dei nomi riservati che iniziano con un segmento di percorso
/__/*
Reindirizzamenti configurati
Contenuti statici con corrispondenza esatta
Codice lingua + codice paese (ad esempio, contenuti di
fr_ca/
)
L'ordine segue i valori di qualità per ogni lingua nell'intestazioneAccept-Language
della richiesta.Solo il codice paese (ad es. contenuti di
ALL_ca/
)Solo codice lingua (ad esempio, contenuti di
fr/
oes_ALL/
)
L'ordine segue i valori di qualità per ogni lingua nell'intestazioneAccept-Language
della richiesta.Contenuti statici con corrispondenza esatta "Predefinito"
Si tratta di contenuti che si trovano al di fuori della directory "i18n content", ad esempio nella directory principale dipublic
.
Configurato riscritture
Gestione degli errori 404
Pagine 404 i18n
Segue lo stesso ordine di priorità elencato sopra per i contenuti statici con corrispondenza esatta.Pagina Personalizza pagina 404
Pagina 404 predefinita (fornita da Firebase)
Esempio di ordine di priorità
Continuiamo con l'esempio precedente. Utilizzeremo la stessa directory di esempio e una richiesta di esempio.
Esempio di directory di progetto locale con una directory "i18n content" (denominata
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
Informazioni sulla richiesta di esempio
Codici lingua:
fr
,en
(francese, poi inglese)
I codici lingua sono ordinati in base ai valori di qualità nell'intestazioneAccept-Language
.Codice paese:
ca
(Canada)
In base all'ordine di priorità della corrispondenza esatta e ai valori di qualità per le preferenze della lingua, Hosting cercherà le directory per una 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/
Gestione degli errori 404
Quale pagina verrà mostrata all'utente?
Pagina richiesta:
index.html
Pagina richiesta:
awesome-page.html
Tieni presente quanto segue in merito alla ricerca e alla pubblicazione della directory "i18n content":
La directory
localized-files/
non contiene effettivamente le sottocartelleen_ca/
,en_ALL/
oen/
, quindi Hosting scorrerà l'elenco di priorità finché non trova una sottocartella corrispondente alla combinazione di lingua e paese della richiesta.Anche se la directory
localized-files/
contiene una sottocartellaes_ALL/
, la richiesta di esempio riportata sopra non include un codice linguaes
oes-foo
, pertanto Hosting non cercherà "contenuti i18n" che corrispondono aes
.Le sottocartelle denominate
fr/
efr_ALL/
sono equivalenti dal punto di vista delle preferenze di paese e lingua di un utente. Tuttavia, se esistono entrambe le sottocartelle, Hosting pubblicherà i contenuti difr_ALL/
prima di quelli difr/
.
Eseguire l'override dei codici di lingua e paese con i cookie
Puoi modificare i contenuti pubblicati utilizzando i cookie per ignorare le intestazioni di paese e lingua.
Ecco alcuni modi in cui puoi utilizzare gli override dei cookie:
Testa una funzionalità con diverse combinazioni di lingua/paese per verificare quali contenuti vengono pubblicati.
Consenti agli utenti di modificare i contenuti che visualizzano. Ad esempio, puoi implementare un selettore di lingua, quindi impostare il cookie
firebase-language-override
dell'utente di conseguenza.
Per configurare gli override dei cookie, imposta i cookie con uno o entrambi questi nomi:
firebase-country-override
e firebase-language-override
. Ad esempio,
il seguente snippet di codice JavaScript esegue l'override del codice paese impostandolo su ca
e
dell'intestazione Accept-Language
impostandola su fr,en
:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Gli override dei cookie della lingua devono essere un elenco separato da virgole di codici di lingua in ordine di preferenza, senza tag secondari o valori di qualità.
Gli override dei cookie non vengono visualizzati nei log.