Sử dụng tính năng viết lại quốc tế hoá ("viết lại i18n") để phân phát nội dung khác nhau tuỳ thuộc vào quốc gia hoặc ngôn ngữ ưu tiên của người dùng. Sau đây là một số cấu hình mẫu mà bạn có thể thiết lập:
Phân phát cùng một nội dung bằng tiếng Pháp cho tất cả người dùng thích tiếng Pháp (bất kể quốc gia).
Ví dụ: trang chủ có văn bản tiếng PhápPhân phát nội dung tiếng Pháp chuẩn cho những 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ách diễn đạt bằng tiếng Pháp chuẩn so với trang chủ có cách diễn đạt bằng tiếng Pháp ở CanadaPhân phát cùng một nội dung cho tất cả người dùng ở Canada (bất kể ngôn ngữ họ ưu tiên).
Ví dụ: trang chủ có ngôn ngữ "mặc định" của trang web nhưng có tính năng dành riêng cho Canada (chẳng hạn như giao diện theo mùa lễ)Phân phát nội dung tiếng Pháp của Canada cho những người dùng Canada thích tiếng Pháp.
Ví dụ: trang chủ có cụm từ tiếng Pháp ở Canada và một tính năng dành riêng cho Canada (chẳng hạn như giao diện ngày lễ)
Firebase Hosting xác định quốc gia của người dùng qua địa chỉ IP và lựa chọn ưu tiên về ngôn ngữ của người dùng qua tiêu đề yêu cầu Accept-Language
(thường do trình duyệt web tự động đặt).
Thiết lập tính năng viết lại i18n
Để thiết lập tính năng viết lại i18n cho trang web Hosting, bạn cần tạo thư mục "nội dung i18n" cho tất cả nội dung đã bản địa hoá, sau đó thêm thuộc tính i18n
vào tệp firebase.json
để trỏ đến thư mục "nội dung i18n" mới.
Sau đây là các bước chi tiết:
Trong thư mục
public
của 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", sau đó tạo các thư mục con cho từng tổ hợp ngôn ngữ và quốc gia mà trang web của bạn hỗ trợ.Trong mỗi thư mục con, hãy thêm nội dung dành riêng cho tổ hợp đó, chẳng hạn như trang chủ theo chủ đề ngày lễ hoặc trang 404 theo ngôn ngữ.
Dưới đây là ví dụ về thư mục "nội dung i18n" có tên 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 mà 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 dành riêng cho những người dùng có lựa chọn ưu tiên về ngôn ngữ và mã quốc gia đólanguageCode
: Chứa nội dung dành riêng cho những người dùng có tuỳ 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ớilanguageCode_ALL
Hãy tham khảo tiểu mục Mã quốc gia và mã ngôn ngữ bên dưới để biết thêm thông tin chi tiết về các mã này. Bạn có thể sử dụng giá trị của
ALL
(có phân biệt chữ hoa chữ thường) để chỉ định bất kỳ quốc gia nào (chẳng hạn nhưes_ALL/
) hoặc bất kỳ ngôn ngữ nào (chẳng hạn nhưALL_ca/
).Các tệp trong thư mục con không cần 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 dành riêng cho một ngôn ngữ và/hoặc quốc gia.Thêm thuộc tính
i18n
vào tệpfirebase.json
và chỉ định thư mục chứa "nội dung i18n". Tiếp tục ví dụ:// 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
root
phải là tên của thư mục chứa tất cả thư mục con "nội dung i18n". Nếu bạn đã đặt tất cả thư mục con "nội dung i18n" ở thư mục gốc của thư mụcpublic
, hãy sử dụng/
cho giá trị củaroot
. Bạn không bắt buộc phải sử dụng dấu gạch chéo ở đầu và cuối trong giá trịroot
.Triển khai "nội dung i18n" và cấu hình cho trang web Hosting.
Bạn có thể kiểm thử chế độ thiết lập bằng cách sử dụng tính năng ghi đè cookie.
Mã quốc gia và mã ngôn ngữ
Khi đặt tên cho các thư mục con "nội dung i18n", 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ị của ALL
(có phân biệt chữ hoa chữ thường) để chỉ định bất kỳ quốc gia nào (chẳng hạn như es_ALL/
) hoặc bất kỳ ngôn ngữ nào (chẳng hạn 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 trình duyệt web tự động đặt).
Đó là mã ISO 639-1.
Hãy lưu ý những điều sau khi sử dụng mã ngôn ngữ:
Khi tìm kiếm "nội dung i18n" để phân phát, Hosting sẽ sắp xếp các ngôn ngữ dựa trên giá trị chất lượng trong tiêu đề
Accept-Language
.Hosting sẽ xoá mọi thẻ con theo khu vực và quốc gia 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ẻ con này. Ví dụ: bạn không thể sử dụnges-419
hoặces-US
làm mã ngôn ngữ trong tên thư mục con, nhưng có thể sử dụnges
.Nếu muốn phân phát nội dung theo khu vực hoặc quốc gia cụ thể, bạn có thể tạo thư mục con chứa nội dung theo ngôn ngữ và 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 tính năng viết lại i18n, Hosting sẽ phân phát nội dung dựa trên thứ tự ưu tiên sau:
Không gian tên được đặt trước bắt đầu bằng một phân đoạn đường dẫn
/__/*
Đã định cấu hình lệnh chuyển hướng
Nội dung tĩnh khớp chính xác
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.Chỉ mã quốc gia (ví dụ: nội dung từ
ALL_ca/
)Chỉ mã ngôn ngữ (ví dụ: nội dung từ
fr/
hoặces_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.Nội dung tĩnh khớp chính xác "Mặc định"
Đây là nội dung nằm ngoài thư mục "nội dung i18n", chẳng hạn như ở thư mục gốc của thư mụcpublic
.
Đã định cấu hình tính năng viết lại
Xử lý lỗi 404
Trang 404 i18n
Trang này tuân theo cùng thứ tự ưu tiên nêu trên đối với nội dung tĩnh khớp chính xác.Trang 404 tuỳ chỉnh
Trang 404 mặc định (do Firebase cung cấp)
Ví dụ về thứ tự ưu tiên
Hãy tiếp tục ví dụ ở trên. Chúng ta sẽ sử dụng cùng một thư mục mẫu và một yêu cầu mẫu.
Ví dụ về thư mục dự án cục bộ có thư mục "nội dung i18n" (có tên 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, sau đó là tiếng Anh)
Các mã ngôn ngữ được sắp xếp dựa trên giá trị chất lượng trong tiêu đềAccept-Language
.Mã quốc gia:
ca
(Canada)
Theo thứ tự ưu tiên khớp chính xác và giá trị chất lượng cho các tuỳ 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.
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/
Xử lý lỗi 404
Trang nào sẽ được phân phát 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 đây về tính năng tìm kiếm và phân phát thư mục "nội dung i18n":
Thư mục
localized-files/
thực sự không chứa thư mục conen_ca/
,en_ALL/
hoặcen/
, vì vậy, Hosting sẽ chỉ bỏ qua danh sách mức độ ưu tiên cho đến khi tìm thấy thư mục con phù hợp với 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 một thư mục cones_ALL/
, nhưng yêu cầu mẫu ở trên không bao gồm mã ngôn ngữes
hoặces-foo
, vì vậy Hosting sẽ không tìm kiếm "nội dung i18n" khớp vớies
.Các thư mục con có tên
fr/
vàfr_ALL/
tương đương nhau theo lựa chọn ưu tiên về quốc gia và 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 nội dungfr_ALL/
trước nội dungfr/
.
Ghi đè mã ngôn ngữ và mã quốc gia bằng cookie
Bạn có thể thay đổi nội dung được phân phát bằng cách sử dụng cookie để ghi đè tiêu đề quốc gia và ngôn ngữ.
Sau đây là một số cách bạn có thể sử dụng tính năng ghi đè cookie:
Kiểm thử một tính năng với nhiều tổ hợp ngôn ngữ/quốc gia để kiểm tra nội dung nào được phân phát.
Cho phép người dùng thay đổi nội dung mà họ thấy. Ví dụ: bạn có thể triển khai bộ 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 chế độ ghi đè cookie, hãy đặt cookie có cả hai hoặc một trong các tên sau: firebase-country-override
và firebase-language-override
. Ví dụ: đoạn mã JavaScript sau đây 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";
Giá trị 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.
Các chế độ ghi đè cookie không được phản ánh trong nhật ký.