使用國際化改寫 (「i18n 改寫」) 提供不同內容 根據使用者的國家/地區或偏好語言而定以下提供一些例子 您可以設定的配置項目:
為偏好法文的「所有」使用者顯示相同的法文內容 (無論何者為何) 國家/地區)。
範例:含有法文文字的首頁向偏好法文、 加拿大使用者偏好法文,提供加拿大法文內容 。
範例:首頁寫法的法文語句和含有以下字詞的首頁 加拿大法文語句為所有加拿大使用者 (不論 語言偏好設定)。
範例:包含網站的「預設」首頁但有了 加拿大專屬功能 (例如節慶主題)向偏好法文的加拿大使用者放送加拿大法文內容。
範例:含有加拿大法文語句的首頁,但以加拿大為主 特色 (例如節慶主題)
Firebase Hosting 會根據使用者的 IP 位址和
使用者的語言偏好設定 (通常來自 Accept-Language
要求標頭)
網路瀏覽器自動設定)。
設定 i18n 改寫
如要為 Hosting 網站設定 i18n 重新寫入,您必須建立「i18n」
內容」,然後加入 i18n
屬性。
連結到您的 firebase.json
檔案,指向新的「i18n 內容」目錄。
詳細步驟如下:
在本機應用程式目錄的
public
資料夾中建立獨立目錄 然後為每個語言建立子資料夾 網站支援的國家/地區組合。在每個子資料夾中,加入該組合的專屬內容,例如 節慶主題的首頁,或語言專屬的 404 網頁。
請看「i18n 內容」範例名為
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
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 內容」的優先順序
如果設定 i18n 重新寫入,Hosting 會根據下列項目提供內容 優先順序:
以
/__/*
路徑區段為開頭的保留命名空間已設定的重新導向
完全相符的靜態內容
語言代碼 + 國家/地區代碼 (例如「
fr_ca/
」的內容)
此順序取決於要求中各語言的品質值Accept-Language
標頭。僅限國家/地區代碼 (例如「
ALL_ca/
」的內容)僅限語言代碼 (例如來自
fr/
或es_ALL/
的內容)
此順序取決於要求中各語言的品質值Accept-Language
標頭。「預設」完全比對靜態內容
這是「i18n 內容」之外的內容目錄,例如 複製到public
目錄的根目錄中。
已設定的重寫
404 處理
i18n 404 網頁
這與上述的完全比對優先順序相同 靜態內容。自訂 404 頁面
預設 404 頁面 (由 Firebase 提供)
優先順序範例
延續上述範例。我們將使用相同的目錄 範例要求
含有「i18n 內容」的本機專案目錄範例目錄 (名為
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 內容」的注意事項目錄:
localized-files/
目錄實際上不包含en_ca/
。en_ALL/
或en/
子資料夾,因此 Hosting 只會略過 直到找出符合要求該要求的子資料夾為止 國家/地區組合。雖然
localized-files/
目錄包含es_ALL/
子資料夾,上述範例要求不包含es
或es-foo
所以 Hosting 不會搜尋「i18n 內容」並 符合es
。從以下位置來看,資料夾名為
fr/
和fr_ALL/
的子資料夾相等 使用者的國家/地區和語言偏好設定不過,如果同時擁有 存在,Hosting 會在fr/
內容之前放送fr_ALL/
內容。
使用 Cookie 覆寫語言和國家/地區代碼
您可以使用 Cookie 覆寫國家/地區設定,藉此變更可提供的內容 以及語言標題
以下列舉幾個使用 Cookie 覆寫功能的方法:
測試不同語言/國家/地區組合的功能,看看哪些 內容放送。
可讓使用者變更他們所看到的內容。舉例來說: 導入語言選單,然後將 系統會擷取
firebase-language-override
個 Cookie。
如要設定 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 覆寫值不會反映在記錄中。