設定國際化 (i18n) 重寫

使用國際化改寫 (「i18n 改寫」) 提供不同內容 根據使用者的國家/地區或偏好語言而定以下提供一些例子 您可以設定的配置項目:

  • 為偏好法文的「所有」使用者顯示相同的法文內容 (無論何者為何) 國家/地區)。
    範例:含有法文文字的首頁

  • 向偏好法文、 加拿大使用者偏好法文,提供加拿大法文內容 。
    範例:首頁寫法的法文語句和含有以下字詞的首頁 加拿大法文語句

  • 所有加拿大使用者 (不論 語言偏好設定)。
    範例:包含網站的「預設」首頁但有了 加拿大專屬功能 (例如節慶主題)

  • 向偏好法文的加拿大使用者放送加拿大法文內容。
    範例:含有加拿大法文語句的首頁,但以加拿大為主 特色 (例如節慶主題)

Firebase 託管會根據使用者的 IP 位址和 使用者的語言偏好設定 (通常來自 Accept-Language 要求標頭) 由網路瀏覽器自動設定)。

設定 i18n 改寫

如要為代管網站設定 i18n 重寫作業,請建立「i18n」 內容」,然後加入 i18n 屬性。 ,指向新的「i18n 內容」firebase.json目錄。

詳細步驟如下:

  1. 在本機應用程式目錄的 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」中指定類似的檔案 目錄或其他子資料夾您可以建立完全 專為特定語言和/或國家/地區提供的產品設計

  2. 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 值開頭和結尾的斜線 則為選用項目。

  3. 部署「i18n 內容」並配置到「託管」網站。

您可以使用 Cookie 覆寫來測試設定。

國家/地區和語言代碼

命名「i18n 內容」時子資料夾,且兩個國家/地區必須使用小寫 和語言代碼您可以使用 ALL 的值 (區分大小寫) 來表示 任何國家/地區 (例如 es_ALL/) 或任何語言 (例如 ALL_ca/)。

主機會從使用者的 IP 位址取得國家/地區代碼。國家/地區代碼 為兩個字母 ISO 3166-1 alpha-2 代碼

從使用者的 Accept-Language 要求標頭中取得語言代碼 (通常 由網路瀏覽器自動設定)。 格式為 ISO 639-1。 使用語言代碼時,請注意下列事項:

  • 「託管」搜尋了「i18n 內容」時才能放送 偵測出語言、語言 或是 Accept-Language 標頭中的品質值

  • 「託管」作業捨棄了 Accept-Language 中的任何區域和國家/地區子標記 所以「i18n 內容」中的語言代碼子資料夾名稱不能 包含這些子標記舉例來說,es-419es-US 無法做為 語言代碼,但您可以使用 es

    如果您想在特定區域或國家/地區提供內容,請建立 來搜尋特定語言國家/地區內容所屬的子資料夾 聯絡。

「i18n 內容」的優先順序

如果設定 i18n 重新寫入,代管服務會根據下列項目提供內容 優先順序:

  1. /__/* 路徑區段為開頭的保留命名空間

  2. 已設定的重新導向

  3. 完全相符的靜態內容

    1. 語言代碼 + 國家/地區代碼 (例如「fr_ca/」的內容)
      此順序取決於要求中各語言的品質值 Accept-Language 標頭。

    2. 僅限國家/地區代碼 (例如「ALL_ca/」的內容)

    3. 僅限語言代碼 (例如來自 fr/es_ALL/ 的內容)
      此順序取決於要求中各語言的品質值 Accept-Language 標頭。

    4. 「預設」完全比對靜態內容
      這是「i18n 內容」之外的內容目錄,例如 複製到 public 目錄的根目錄中。

  4. 已設定的重寫

  5. 404 處理

    1. i18n 404 網頁
      這與上述的完全比對優先順序相同 靜態內容。

    2. 自訂 404 頁面

    3. 預設 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
    
  • 要求資訊示例

    • 語言代碼:fren (法文 + 英文)
      語言代碼會依據 Accept-Language 標頭。

    • 國家/地區代碼:ca (加拿大)

根據完全比對優先順序以及 語言偏好設定,「代管」會搜尋要求的目錄 網頁

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. 404 處理

系統會向使用者顯示哪一個網頁?

  • 要求的網頁:index.html

  • 要求的網頁:awesome-page.html

有關這項搜尋與提供「i18n 內容」的注意事項目錄:

  • localized-files/ 目錄實際上不包含 en_ca/en_ALL/en/ 子資料夾,因此「託管」只會略過 直到找出符合要求該要求的子資料夾為止 國家/地區組合。

  • 雖然 localized-files/ 目錄包含 es_ALL/ 子資料夾,上述範例要求不包含 eses-foo 所以「代管」不會搜尋「i18n 內容」並 符合 es

  • 從以下位置來看,資料夾名為 fr/fr_ALL/ 的子資料夾相等 使用者的國家/地區和語言偏好設定不過,如果同時擁有 ,「代管」會在 fr/ 內容播放前放送 fr_ALL/ 內容。

您可以使用 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 覆寫值不會反映在記錄中。