使用國際化重寫 (「i18n 重寫」),根據使用者的國家/地區或偏好語言,提供不同的內容。以下列舉幾個可設定的範例:
- 向偏好法文的所有使用者提供相同的法文內容 (不論國家/地區)。 
 範例:首頁上的法文
- 向偏好法文的使用者放送標準法文內容,但向偏好法文的加拿大使用者放送加拿大法文內容。 
 範例:首頁使用標準法文片語,與首頁使用加拿大法文片語
- 向所有加拿大使用者提供相同內容 (不論語言偏好設定為何)。 
 範例:首頁使用網站的「預設」語言,但有加拿大專屬功能 (例如節慶主題)
- 向偏好法文的加拿大使用者提供加拿大法文內容。 
 範例:首頁使用加拿大法文用語,並提供加拿大專屬功能 (例如節慶主題)
Firebase Hosting 會根據使用者的 IP 位址判斷所在國家/地區,並根據 Accept-Language 要求標頭判斷語言偏好設定 (通常由網頁瀏覽器自動設定)。
設定國際化重新編寫
如要為 Hosting 網站設定 i18n 重寫,您需要為所有本地化內容建立「i18n 內容」目錄,然後將 i18n 屬性新增至 firebase.json 檔案,指向新的「i18n 內容」目錄。
詳細步驟如下:
- 在本地應用程式目錄的 - public資料夾中,為「i18n 內容」建立獨立目錄,然後為網站支援的每種語言和國家/地區組合建立子資料夾。- 在每個子資料夾中,加入該組合專屬的內容,例如節慶主題首頁或特定語言的 404 頁面。 - 以下是名為 - localized-files的「i18n content」目錄範例:- 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- localized-files/目錄包含個別子資料夾,分別對應網站支援的每種語言和國家/地區組合。每個子資料夾的命名模式都必須採用下列其中一種格式:- languageCode_countryCode:包含適用於偏好該語言和該國家/地區代碼的使用者內容
- languageCode:包含特定語言偏好的使用者內容,但內容不限國家/地區;基本上等同於- languageCode_ALL
 - 如要進一步瞭解這些代碼,請參閱下方的「國家/地區和語言代碼」小節。您可以使用 - ALL值 (區分大小寫) 指出任何國家/地區 (例如- es_ALL/) 或任何語言 (例如- ALL_ca/)。- 子資料夾中的檔案不一定要在 - public目錄或其他子資料夾中也有類似檔案。您可以建立完全針對特定語言和/或國家/地區的內容。
- 在 - firebase.json檔案中加入- i18n屬性,並指定包含「i18n 內容」的目錄。延續先前的例子:- // firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... } - 為 - root指定的目錄必須是包含所有「i18n 內容」子資料夾的目錄名稱。如果您將所有「i18n 內容」子資料夾放在- public目錄的根層級,請使用- /做為- root的值。- root值開頭和結尾的斜線為選用。
- 將「i18n 內容」和設定檔部署至 Hosting 網站。 
您可以使用Cookie 覆寫測試設定。
國家/地區和語言代碼
命名「i18n 內容」子資料夾時,國家/地區和語言代碼都必須使用小寫字母。您可以使用 ALL 值 (區分大小寫) 指出任何國家/地區 (例如 es_ALL/) 或任何語言 (例如 ALL_ca/)。
Hosting 會從使用者的 IP 位址取得國家/地區代碼。國家/地區代碼為兩個英文字母的 ISO 3166-1 alpha-2 代碼。
語言代碼是從使用者的 Accept-Language 要求標頭取得 (通常由網路瀏覽器自動設定)。這些是 ISO 639-1 代碼。
使用語言代碼時,請注意下列事項:
- Hosting 搜尋要放送的「i18n 內容」時,會根據 - Accept-Language標頭中的品質值排序語言。
- Hosting 會捨棄 - Accept-Language標頭中的所有區域和國家/地區子標記,因此「i18n 內容」子資料夾名稱中的語言代碼不得包含這些子標記。舉例來說,您無法在子資料夾名稱中使用- es-419或- es-US做為語言代碼,但可以使用- es。- 如要放送特定區域或國家/地區的內容,可以建立子資料夾,內含要支援的特定語言/國家/地區內容。 
「i18n content」的優先順序
如果您設定 i18n 重寫,Hosting 會根據下列優先順序提供內容:
- 以 - /__/*路徑區隔開頭的保留命名空間
- 已設定的重新導向 
- 完全相符的靜態內容 - 語言代碼 + 國家/地區代碼 (例如,來自 - fr_ca/的內容)
 排序方式會依據要求- Accept-Language標頭中各語言的品質值。
- 僅限國家/地區代碼 (例如 - ALL_ca/的內容)
- 僅限語言代碼 (例如 - fr/或- es_ALL/的內容)
 排序方式會依據要求- Accept-Language標頭中每種語言的品質值。
- 「預設」完全相符的靜態內容 
 這類內容位於「i18n content」目錄外,例如- public目錄的根層級。
 
- 已設定重新編寫 
- 404 處理 - i18n 404 頁面 
 這類頁面的優先順序與上述完全相符的靜態內容相同。
- 自訂 404 網頁 
- 預設 404 網頁 (由 Firebase 提供) 
 
優先順序範例
讓我們繼續沿用上述範例。我們會使用相同的範例目錄和範例要求。
- 範例:含有「i18n content」目錄 (稱為 - 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
- 要求資訊範例 - 語言代碼: - fr、- en(法文,然後是英文)
 語言代碼會根據- Accept-Language標頭中的品質值排序。
- 國家/地區代碼: - ca(加拿大)
 
根據完全比對優先順序和語言偏好的品質值,Hosting 會依下列順序在目錄中搜尋所要求的網頁。
- 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 處理 
系統會向使用者放送哪個網頁?
- 要求頁面: - index.html
- 要求頁面: - awesome-page.html
請注意下列有關「i18n content」目錄的搜尋和放送事項:
- localized-files/目錄實際上不包含- en_ca/、- en_ALL/或- en/子資料夾,因此 Hosting 會略過優先順序清單,直到找到符合要求語言/國家組合的子資料夾為止。
- 即使 - localized-files/目錄包含- es_ALL/子資料夾,上述範例要求也不會包含- es或- es-foo語言代碼,因此 Hosting 不會搜尋與- es相符的「i18n 內容」。
- 從使用者國家/地區和語言偏好設定的角度來看, - fr/和- fr_ALL/子資料夾是等效的。不過,如果兩個子資料夾都存在,Hosting 會先提供- fr_ALL/內容,再提供- fr/內容。
使用 Cookie 覆寫語言和國家/地區代碼
您可以透過 Cookie 覆寫國家/地區和語言標頭,變更放送的內容。
以下是 Cookie 覆寫的幾種使用方式:
- 測試不同語言/國家/地區組合的功能,檢查系統提供的內容。 
- 讓使用者變更顯示的內容。舉例來說,您可以實作語言選單,然後據此設定使用者的 - firebase-language-overrideCookie。
如要設定 Cookie 覆寫,請使用以下任一或兩個名稱設定 Cookie:
firebase-country-override 和 firebase-language-override。舉例來說,下列 JavaScript 程式碼片段會將國家/地區代碼覆寫為 ca,並將 Accept-Language 標頭覆寫為 fr,en:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
語言 Cookie 覆寫必須是以半形逗號分隔的語言代碼清單,並依偏好順序排列,不得包含子標記或品質值。
記錄檔不會反映 Cookie 覆寫。