Gunakan penulisan ulang internasionalisasi ("penulisan ulang i18n") untuk menayangkan konten yang berbeda bergantung pada negara atau bahasa pilihan pengguna. Berikut adalah beberapa contoh konfigurasi yang dapat Anda siapkan:
Menayangkan konten berbahasa Prancis yang sama kepada semua pengguna yang memilih bahasa Prancis (apa pun negaranya).
Contoh: halaman beranda dengan teks berbahasa PrancisMenayangkan konten berbahasa Prancis Standar kepada pengguna yang memilih bahasa Prancis, tetapi untuk pengguna Kanada yang memilih bahasa Prancis, tayangkan konten berbahasa Prancis Kanada.
Contoh: halaman beranda dengan frasa berbahasa Prancis Standar versus halaman beranda dengan frasa berbahasa Prancis KanadaMenayangkan konten yang sama kepada semua pengguna Kanada (terlepas dari preferensi bahasanya).
Contoh: halaman beranda dengan bahasa "default" situs Anda tetapi dengan fitur khusus Kanada (seperti tema liburan)Menayangkan konten berbahasa Prancis Kanada kepada pengguna Kanada yang memilih bahasa Prancis.
Contoh: halaman beranda dengan frasa berbahasa Prancis Kanada dan fitur khusus Kanada (seperti tema liburan)
Firebase Hosting menentukan negara pengguna dari alamat IP dan preferensi bahasa pengguna dari header permintaan Accept-Language
(biasanya disetel secara otomatis oleh browser web).
Menyiapkan penulisan ulang i18n
Untuk menyiapkan penulisan ulang i18n di situs Hosting, Anda perlu membuat direktori "konten
i18n" untuk semua konten yang dilokalkan, lalu menambahkan atribut i18n
ke file firebase.json
agar mengarah ke direktori "konten i18n" baru Anda.
Berikut adalah langkah-langkah detailnya:
Dalam folder
public
direktori aplikasi lokal Anda, buat direktori terpisah untuk "konten i18n", lalu buat subfolder untuk setiap kombinasi bahasa dan negara yang didukung oleh situs Anda.Di setiap subfolder, tambahkan konten yang khusus untuk kombinasi tersebut, seperti halaman beranda bertema liburan atau halaman 404 dalam bahasa tertentu.
Berikut adalah contoh direktori "konten i18n" yang disebut
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
Direktori
localized-files/
berisi subfolder terpisah untuk setiap kombinasi bahasa dan negara yang didukung oleh situs Anda. Pola penamaan setiap subfolder harus mengikuti salah satu format berikut:languageCode_countryCode
: Berisi konten yang khusus untuk pengguna yang memiliki preferensi bahasa dan kode negara tersebutlanguageCode
: Berisi konten yang khusus untuk pengguna yang memiliki preferensi bahasa tersebut, tetapi kontennya tidak khusus untuk negara tertentu; pada dasarnya setara denganlanguageCode_ALL
Baca subbagian Kode negara dan bahasa di bawah untuk mengetahui detail selengkapnya tentang kode ini. Anda dapat menggunakan nilai
ALL
(peka huruf besar/kecil) untuk menunjukkan negara mana pun (misalnyaes_ALL/
) atau bahasa apa pun (misalnyaALL_ca/
).File dalam subfolder tidak perlu memiliki file yang sepadan dalam direktori
public
atau subfolder lainnya. Anda dapat membuat konten yang sepenuhnya spesifik untuk bahasa dan/atau negara tertentu.Tambahkan atribut
i18n
ke filefirebase.json
dan tentukan direktori yang berisi "konten i18n" Anda. Melanjutkan contoh kita di atas:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
Direktori yang ditentukan untuk
root
harus berupa nama direktori yang berisi semua subfolder "konten i18n". Jika Anda menempatkan semua subfolder "konten i18n" di root direktoripublic
Anda, gunakan/
untuk nilairoot
. Garis miring di awal dan di akhir dalam nilairoot
bersifat opsional.Deploy konfigurasi dan "konten i18n" ke situs Hosting Anda.
Anda dapat menguji penyiapan menggunakan penggantian cookie.
Kode negara dan bahasa
Saat menamai subfolder "konten i18n", Anda harus menggunakan huruf kecil baik untuk kode negara maupun bahasa. Anda bisa menggunakan nilai ALL
(peka huruf besar/kecil) untuk menunjukkan negara mana pun (misalnya es_ALL/
) atau bahasa apa pun (misalnya ALL_ca/
).
Hosting mendapatkan kode negara dari alamat IP pengguna. Kode negara berupa kode ISO 3166-1 alpha-2 yang terdiri dari dua huruf.
Kode bahasa didapatkan dari header permintaan Accept-Language
pengguna (biasanya disetel secara otomatis oleh browser web).
Kode bahasa berupa kode ISO 639-1.
Perhatikan hal-hal berikut saat menggunakan kode bahasa:
Saat menelusuri "konten i18n" mana yang akan ditayangkan, Hosting mengurutkan bahasa berdasarkan nilai kualitas dalam header
Accept-Language
.Hosting akan menghilangkan subtag regional dan negara di header
Accept-Language
, sehingga kode bahasa dalam nama subfolder "konten i18n" tidak boleh berisi subtag ini. Misalnya, Anda tidak dapat menggunakanes-419
ataues-US
sebagai kode bahasa dalam nama subfolder, tetapi Anda dapat menggunakanes
.Jika ingin menayangkan konten untuk wilayah atau negara tertentu, Anda dapat membuat subfolder yang berisi konten untuk bahasa-negara tertentu yang ingin didukung.
Urutan prioritas untuk "konten i18n"
Jika Anda menyiapkan penulisan ulang i18n, Hosting akan menayangkan konten berdasarkan urutan prioritas berikut:
Namespace yang dicadangkan yang dimulai dengan segmen jalur
/__/*
Pengalihan yang dikonfigurasi
Konten statis pencocokan persis
Kode bahasa + Kode negara (contohnya, konten dari
fr_ca/
)
Urutan mengikuti nilai kualitas untuk setiap bahasa di headerAccept-Language
permintaan.Khusus kode negara (misalnya, konten dari
ALL_ca/
)Khusus kode bahasa (misalnya, konten dari
fr/
ataues_ALL/
)
Urutan mengikuti nilai kualitas untuk setiap bahasa di headerAccept-Language
permintaan.Konten statis pencocokan persis "default"
Ini adalah konten yang berada di luar direktori "konten i18n", seperti di root direktoripublic
.
Penulisan ulang yang dikonfigurasi
Penanganan 404
Halaman 404 i18n
Ini mengikuti urutan prioritas yang sama dengan yang dicantumkan di atas untuk konten statis pencocokan persis.Halaman 404 kustom
Halaman 404 default (disediakan oleh Firebase)
Contoh urutan prioritas
Mari lanjutkan contoh di atas. Kita akan menggunakan direktori contoh dan permintaan contoh yang sama.
Contoh direktori project lokal dengan direktori "konten i18n" (disebut
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
Contoh informasi permintaan
Kode bahasa:
fr
,en
(Prancis, kemudian Inggris)
Kode bahasa diurutkan berdasarkan nilai kualitas di headerAccept-Language
.Kode negara:
ca
(Kanada)
Berdasarkan urutan prioritas pencocokan persis dan nilai kualitas untuk preferensi bahasa, Hosting akan menelusuri direktori untuk halaman yang diminta dalam urutan berikut.
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/
Penanganan 404
Halaman mana yang akan ditayangkan kepada pengguna?
Halaman yang diminta:
index.html
Halaman yang diminta:
awesome-page.html
Harap perhatikan hal berikut terkait penelusuran dan penayangan direktori "konten i18n":
Direktori
localized-files/
sebenarnya tidak berisi subfolderen_ca/
,en_ALL/
, atauen/
, sehingga Hosting hanya akan melewati daftar prioritas hingga menemukan subfolder yang cocok untuk kombinasi bahasa-negara permintaan.Meskipun direktori
localized-files/
berisi subfolderes_ALL/
, contoh permintaan di atas tidak menyertakan kode bahasaes
ataues-foo
, sehingga Hosting tidak akan menelusuri "konten i18n" yang cocok denganes
.Subfolder bernama
fr/
danfr_ALL/
dianggap setara dari sudut pandang preferensi negara dan bahasa pengguna. Namun, jika kedua subfolder ada, Hosting akan menayangkan kontenfr_ALL/
sebelum kontenfr/
.
Mengganti kode negara dan bahasa dengan cookie
Anda dapat mengubah konten yang ditayangkan menggunakan cookie untuk mengganti header negara dan bahasa.
Berikut adalah beberapa cara untuk menggunakan penggantian cookie:
Uji fitur dengan kombinasi bahasa/negara yang berbeda untuk memeriksa konten mana yang ditayangkan.
Mungkinkan pengguna Anda untuk mengubah konten yang dilihatnya. Misalnya, Anda dapat menerapkan alat pilih bahasa, lalu menyetel cookie
firebase-language-override
pengguna dengan semestinya.
Untuk mengonfigurasi penggantian cookie, setel cookie dengan kedua atau salah satu dari nama ini:
firebase-country-override
dan firebase-language-override
. Misalnya,
cuplikan kode JavaScript berikut akan mengganti kode negara menjadi ca
dan
header Accept-Language
menjadi fr,en
:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Penggantian cookie bahasa harus berupa daftar kode bahasa yang dipisahkan koma sesuai urutan preferensi, tanpa subtag atau nilai kualitas.
Penggantian cookie tidak tercermin dalam log.