使用國際化改寫 (「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 content」目錄以外的內容,例如位於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 覆寫值。