Sử dụng các chữ viết lại của quốc tế hoá ("nội dung viết lại theo ngôn ngữ cụ thể") để cung cấp các 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ố ví dụ 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ối nội dung tiếng Pháp chuẩn cho người dùng thích tiếng Pháp, nhưng Người dùng Canada thích tiếng Pháp, phân phát nội dung tiếng Pháp ở Canada .
Ví dụ: trang chủ có các cụm từ tiếng Pháp chuẩn so với trang chủ có các cụm từ Cách diễn đạt 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ể họ ngôn ngữ ưu tiên).
Ví dụ: một trang chủ có "mặc định" của trang web nhưng có ngôn ngữ Tính năng dành riêng cho Canada (như chủ đề ngày lễ)Phân phát nội dung tiếng Pháp ở Canada cho người dùng Canada thích tiếng Pháp.
Ví dụ: trang chủ có các cụm từ tiếng Pháp ở Canada và một cụm từ đặc trưng cho Canada tính năng (như chủ đề 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 một mã "i18n"
nội dung" 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 "nội dung i18n" mới của bạn thư mục.
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 thư mục con cho mỗi ngôn ngữ và tổ hợp 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 dành riêng cho tổ hợp đó, chẳng hạn như trang chủ theo chủ đề ngày lễ hoặc trang 404 dành riêng cho từng ngôn ngữ.
Dưới đây là ví dụ về "nội dung i18n" thư mục 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 cho mỗi thư mục kế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 theo một trong các định dạng sau:languageCode_countryCode
: Chứa nội dung dành riêng cho người dùng những người có lựa chọn ngôn ngữ ưu tiên và mã quốc gia đólanguageCode
: Chứa nội dung dành riêng cho những người dùng đó ngôn ngữ ưu tiên, nhưng nội dung không cụ thể theo quốc gia; cơ bản tương đương vớilanguageCode_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ị của
ALL
(phân biệt chữ hoa chữ thường) để chỉ ra bất kỳ quốc gia nào (nhưes_ALL/
) hoặc bất kỳ quốc gia nào ngôn ngữ (nhưALL_ca/
).Các tệp trong thư mục con không cần phải có các tệp tương tự trong
public
hoặc thư mục con khác. Bạn có thể tạo nội dung hoàn toàn 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ụ 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
root
phải là tên của thư mục chứa tất cả "nội dung i18n" của bạn thư mục con. Nếu bạn đã đặt tất cả "Nội dung i18n" các thư mục con ở gốc thư mụcpublic
, hãy dùng/
cho giá trịroot
. Dấu gạch chéo ở đầu và cuối trong giá trịroot
là không bắt buộc.Triển khai "nội dung i18n" và định cấu hình cho trang web Hosting của bạn.
Bạn có thể kiểm tra 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 "nội dung i18n" thư mục con, bạn phải sử dụng chữ thường cho cả hai quốc gia
và mã ngôn ngữ. Bạn có thể sử dụng giá trị của ALL
(phân biệt chữ hoa chữ thường) để cho biết
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 có hai chữ cái Mã ISO 3166-1 alpha-2.
Mã ngôn ngữ 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ọ).
Đó là mã ISO 639-1.
Hãy lưu ý những điều sau khi sử dụng mã ngôn ngữ:
Khi Hosting tìm kiếm "nội dung i18n" để phân phát, quảng cáo sẽ sắp xếp ngôn ngữ dựa trên giá trị chất lượng trong tiêu đề
Accept-Language
.Hosting sẽ loại bỏ mọi thẻ phụ theo khu vực và quốc gia trong
Accept-Language
nên mã ngôn ngữ trong "nội dung i18n" tên thư mục con không thể chứa các thẻ phụ này. Ví dụ: bạn không thể sử dụnges-419
hoặces-US
làm một mã ngôn ngữ trong tên thư mục con, nhưng bạn 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 theo chuẩn i18n, Hosting sẽ phân phát nội dung dựa trên những thứ tự ưu tiên:
Không gian tên được đặt trước bắt đầu bằng một phân đoạn đường dẫn
/__/*
Lệnh chuyển hướng đã định cấu hình
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ự này tuân theo các giá trị chất lượng cho mỗi ngôn ngữ trong yêu cầu Tiêu đềAccept-Language
.Chỉ mã quốc gia (ví dụ: nội dung trên
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."Mặc định" nội dung tĩnh khớp chính xác
Đây là nội dung nằm ngoài "nội dung i18n" như ở gốc của thư mụcpublic
.
Tính năng ghi lại đã định cấu hình
Xử lý lỗi 404
i18n 404 trang
Điều này tuân theo cùng thứ tự ưu tiên được liệt kê ở trên cho đối sánh chính xác nội dung tĩnh.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 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ụ 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 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 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 về hoạt động tìm kiếm và phân phát này của "nội dung i18n" thư mục:
Thư mục
localized-files/
không thực sự chứaen_ca/
,en_ALL/
hoặcen/
thư mục con, vì vậy Hosting sẽ chỉ bỏ qua phần 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.Mặc dù thư mục
localized-files/
chứaes_ALL/
thư mục con, thì yêu cầu ví dụ ở trên không bao gồmes
hoặces-foo
mã ngôn ngữ, nên 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 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 đè quốc gia và tiêu đề ngôn ngữ.
Sau đây là một số cách bạn có thể sử dụng tính năng ghi đè cookie:
Thử nghiệm một tính năng với các cách kết hợp ngôn ngữ/quốc gia khác nhau để kiểm tra xem đượ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 một bộ chọn ngôn ngữ, sau đó đặt
firebase-language-override
cookie 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-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";
Ghi đè cookie ngôn ngữ phải là một danh sách mã ngôn ngữ được phân tách bằng dấu phẩy thứ tự ưu tiên mà 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ý.