Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Định cấu hình ghi lại quốc tế hóa (i18n)

Sử dụng viết lại quốc tế hóa ("i18n viết lại") để phân phát nội dung khác nhau tùy thuộc vào quốc gia hoặc ngôn ngữ ưa thích của người dùng. Dưới đây là một số cấu hình mẫu mà bạn có thể thiết lập:

  • Cung cấp cùng một nội dung tiếng Pháp cho tất cả người dùng thích tiếng Pháp (bất kể quốc gia nào).
    Ví dụ: trang chủ có văn bản tiếng Pháp

  • Cung cấp nội dung tiếng Pháp chuẩn cho người dùng thích tiếng Pháp, nhưng đối với người dùng Canada thích tiếng Pháp, hãy phân phát nội dung tiếng Pháp của Canada.
    Ví dụ: trang chủ có cụm từ tiếng Pháp chuẩn so với trang chủ có cụm từ tiếng Pháp của Canada

  • Cung cấp cùng một nội dung cho tất cả người dùng Canada (bất kể sở thích ngôn ngữ của họ là gì).
    Ví dụ: trang chủ có ngôn ngữ "mặc định" của trang web của bạn nhưng có tính năng dành riêng cho Canada (như chủ đề ngày lễ)

  • Cung cấp nội dung tiếng Pháp của Canada cho người dùng Canada thích tiếng Pháp.
    Ví dụ: trang chủ có cụm từ tiếng Pháp của Canada và tính năng dành riêng cho Canada (như chủ đề ngày lễ)

Lưu trữ Firebase xác định quốc gia của người dùng từ địa chỉ IP của họ và tùy chọn ngôn ngữ của người dùng từ tiêu đề yêu cầu Accept-Language (thường do trình duyệt web của họ đặt tự động ).

Thiết lập viết lại i18n

Để thiết lập ghi lại i18n cho trang Lưu trữ của bạn, bạn cần tạo thư mục "nội dung i18n" cho tất cả nội dung đã bản địa hóa của mình, sau đó thêm thuộc tính i18n vào tệp firebase.json của bạn để trỏ đến thư mục "nội dung i18n" mới của bạn.

Dưới đây là các bước chi tiết:

  1. Trong thư mục public thư mục ứng dụng cục bộ, hãy tạo một thư mục riêng cho "nội dung i18n" của bạn, sau đó tạo các thư mục con cho từng tổ hợp ngôn ngữ và quốc gia được trang web của bạn hỗ trợ.

    Trong mỗi thư mục con, hãy thêm nội dung cụ thể cho sự kết hợp đó, như các trang chủ theo chủ đề ngày lễ hoặc các trang 404 dành riêng cho ngôn ngữ.

    Đây là một ví dụ về thư mục "i18n content" được gọi là 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
    

    Thư mục localized-files/ chứa các thư mục con riêng biệt cho từng tổ hợp ngôn ngữ và quốc gia được trang web của bạn hỗ trợ. Mẫu đặt tên cho mỗi thư mục con phải tuân theo một trong các định dạng sau:

    • languageCode_countryCode : Chứa nội dung cụ thể cho người dùng có tùy chọn ngôn ngữ đó mã quốc gia đó

    • languageCode : Chứa nội dung cụ thể cho người dùng có tùy chọn ngôn ngữ đó, nhưng nội dung không dành riêng cho quốc gia; về cơ bản tương đương với languageCode_ALL

    Tham khảo tiểu mục Mã quốc gia và ngôn ngữ bên dưới để biết thêm chi tiết về các mã này. Bạn có thể sử dụng giá trị ALL (phân biệt chữ hoa chữ thường) để biểu thị bất kỳ quốc gia nào (như es_ALL/ ) hoặc bất kỳ ngôn ngữ nào (như ALL_ca/ ).

    Các tệp trong một thư mục con không cần phải có các tệp tương tự trong thư mục public hoặc các thư mục con khác. Bạn có thể tạo nội dung hoàn toàn cụ thể cho một ngôn ngữ và / hoặc quốc gia.

  2. Thêm thuộc tính i18n vào tệp firebase.json của bạn và chỉ định thư mục chứa "nội dung i18n" của bạn. Tiếp tục ví dụ của chúng tôi:

    // firebase.json
    
    "hosting": {
    
      "public": "public",
    
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
    
      "i18n": {
        "root": "/localized-files"  // directory that contains your "i18n content"
      }
    
      ...
    }
    

    Thư mục được chỉ định cho thư mục root phải là tên của thư mục chứa tất cả các thư mục con "i18n content" của bạn. Nếu bạn đặt tất cả các bạn "nội dung i18n" thư mục con ở thư mục gốc của bạn public thư mục, sử dụng / cho giá trị của root . Dấu gạch chéo ở đầu và ở cuối trong giá trị root là tùy chọn.

  3. Triển khai "nội dung i18n" và định cấu hình cho trang Lưu trữ của bạn.

Bạn có thể kiểm tra thiết lập của mình bằng cách sử dụng ghi đè cookie .

Mã quốc gia và ngôn ngữ

Khi đặt tên cho các thư mục con "i18n content", bạn phải sử dụng chữ thường cho cả mã quốc gia và mã ngôn ngữ. Bạn có thể sử dụng giá trị ALL (phân biệt chữ hoa chữ thường) để biểu thị bất kỳ quốc gia nào (như es_ALL/ ) hoặc bất kỳ ngôn ngữ nào (như ALL_ca/ ).

Hosting lấy mã quốc gia từ địa chỉ IP của người dùng. Mã quốc gia là mã ISO 3166-1 alpha-2 gồm hai chữ cái.

Mã ngôn ngữ được lấy từ tiêu đề yêu cầu Accept-Language của người dùng (thường được đặt tự động bởi trình duyệt web của họ ). Chúng là mã ISO 639-1 . Hãy ghi nhớ những điều sau khi sử dụng mã ngôn ngữ:

  • Khi Lưu trữ tìm kiếm "nội dung i18n" nào để phân phát, nó sẽ sắp xếp các ngôn ngữ dựa trên các giá trị chất lượng trong tiêu đề Accept-Language .

  • Máy chủ lưu trữ bỏ bất kỳ thẻ phụ khu vực và quốc gia nào trong tiêu đề Accept-Language , vì vậy mã ngôn ngữ trong tên thư mục con "nội dung i18n" không được chứa các thẻ phụ này. Ví dụ: bạn không thể sử dụng es-419 hoặc es-US làm mã ngôn ngữ trong tên thư mục con, nhưng bạn có thể sử dụng es .

    Nếu bạn muốn phục vụ nội dung khu vực hoặc quốc gia cụ thể, bạn có thể tạo các thư mục con chứa nội dung ngôn ngữ-quốc gia cụ thể mà bạn muốn hỗ trợ.

Thứ tự ưu tiên cho "nội dung i18n"

Nếu bạn thiết lập i18n viết lại, Hosting sẽ phân phát nội dung dựa trên thứ tự ưu tiên sau:

  1. Không gian tên dành riêng bắt đầu bằng phân đoạn đường dẫn /__/*

  2. Chuyển hướng đã định cấu hình

  3. Đối sánh chính xác nội dung tĩnh

    1. Mã ngôn ngữ + Mã quốc gia (ví dụ: nội dung từ fr_ca/ )
      Thứ tự tuân theo các giá trị chất lượng cho từng ngôn ngữ trong tiêu đề Accept-Language của yêu cầu.

    2. Chỉ mã quốc gia (ví dụ: nội dung từ ALL_ca/ )

    3. Chỉ mã ngôn ngữ (ví dụ: nội dung từ fr/ hoặc es_ALL/ )
      Thứ tự tuân theo các giá trị chất lượng cho từng ngôn ngữ trong tiêu đề Accept-Language của yêu cầu.

    4. Nội dung tĩnh đối sánh chính xác "mặc định"
      Đây là nội dung không phải ở thư mục "Nội dung i18n", như ở thư mục gốc của public thư mục.

  4. Đã định cấu hình ghi lại

  5. 404 xử lý

    1. i18n 404 trang
      Điều này tuân theo cùng một thứ tự ưu tiên được liệt kê ở trên cho nội dung tĩnh đối sánh chính xác.

    2. Trang 404 tùy chỉnh

    3. Trang 404 mặc định (do Firebase cung cấp)

Ví dụ cho thứ tự ưu tiên

Hãy tiếp tục ví dụ của chúng tôi từ trên. Chúng tôi sẽ sử dụng cùng một thư mục mẫu và một yêu cầu mẫu.

  • Ví dụ thư mục dự án cục bộ có thư mục "i18n content" (được gọi là 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
    
  • Thông tin yêu cầu mẫu

    • Mã ngôn ngữ: fr , en (tiếng Pháp, rồi tiếng Anh)
      Mã ngôn ngữ được sắp xếp dựa trên các giá trị chất lượng trong tiêu đề Accept-Language .

    • Mã quốc gia: ca (Canada)

Theo thứ tự ưu tiên đối sánh chính xác và các giá trị chất lượng cho tùy chọn ngôn ngữ, Hosting sẽ tìm kiếm các thư mục cho một trang được yêu cầu theo thứ tự sau.

  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 xử lý

Trang nào sẽ được phục vụ cho người dùng?

  • Trang được yêu cầu: index.html

  • Trang được yêu cầu: awesome-page.html

Lưu ý những điều sau về tìm kiếm và cung cấp thư mục "i18n content":

  • Thư mục localized-files/ không thực sự chứa các thư mục con en_ca/ , en_ALL/ hoặc en/ , vì vậy Hosting sẽ chỉ bỏ qua danh sách ưu tiên cho đến khi tìm thấy thư mục con phù hợp cho tổ hợp ngôn ngữ-quốc gia của yêu cầu.

  • Mặc dù thư mục localized-files/ chứa thư mục con es_ALL/ , yêu cầu mẫu ở trên không bao gồm mã ngôn ngữ es hoặc es-foo , vì vậy Hosting sẽ không tìm kiếm "nội dung i18n" khớp với es .

  • Các thư mục con được gọi là fr/fr_ALL/ tương đương với quan điểm của quốc gia và tùy chọn ngôn ngữ của người dùng. Tuy nhiên, nếu cả hai thư mục con đều tồn tại, Hosting sẽ phân phát fr_ALL/ content trước fr/ content.

Bạn có thể thay đổi nội dung nào được cung cấp bằng cách sử dụng cookie để ghi đè tiêu đề quốc gia và ngôn ngữ.

Dưới đây là một số cách bạn có thể sử dụng ghi đè cookie:

  • Thử nghiệm một tính năng với các kết hợp ngôn ngữ / quốc gia khác nhau để kiểm tra nội dung nào được cung cấp.

  • Cho phép người dùng của bạn thay đổi nội dung mà họ nhìn thấy. Ví dụ: bạn có thể triển khai công cụ chọn ngôn ngữ, sau đó đặt cookie firebase-language-override của người dùng cho phù hợp.

Để định cấu hình ghi đè cookie, hãy đặt cookie có cả hai hoặc một trong hai tên sau: firebase-country-overridefirebase-language-override . Ví dụ: đoạn mã JavaScript sau ghi đè mã quốc gia thành ca và tiêu đề Accept-Language thành fr,en :

document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";

Ghi đè cookie ngôn ngữ phải là danh sách mã ngôn ngữ được phân tách bằng dấu phẩy theo thứ tự ưu tiên, không có thẻ phụ hoặc giá trị chất lượng.

Ghi đè cookie không được phản ánh trong nhật ký.