ใช้การปรับให้เป็นสากล ("i18n rewrites") เพื่อแสดงเนื้อหาที่ต่างออกไป ทั้งนี้ขึ้นอยู่กับประเทศหรือภาษาที่ต้องการของผู้ใช้ ตัวอย่าง การกำหนดค่าที่คุณสามารถตั้งค่าได้:
แสดงเนื้อหาภาษาฝรั่งเศสเดียวกันแก่ผู้ใช้ทั้งหมดที่ต้องการภาษาฝรั่งเศส (ไม่ว่าอย่างไรก็ตาม ของประเทศ)
ตัวอย่าง: หน้าแรกที่มีข้อความภาษาฝรั่งเศสแสดงเนื้อหาภาษาฝรั่งเศสมาตรฐานแก่ผู้ใช้ที่ต้องการภาษาฝรั่งเศส แต่สำหรับ ผู้ใช้ในแคนาดาที่ชื่นชอบภาษาฝรั่งเศสจะแสดงเนื้อหาภาษาฝรั่งเศสแบบแคนาดา แทน
ตัวอย่าง: หน้าแรกที่ใช้วลีภาษาฝรั่งเศสมาตรฐาน และหน้าแรกที่มี วลีภาษาฝรั่งเศสแคนาดาแสดงเนื้อหาเดียวกันต่อผู้ใช้ทั้งหมดในแคนาดา (ไม่ว่าจะ ภาษา)
ตัวอย่างเช่น หน้าแรกที่ใช้ "ค่าเริ่มต้น" ของเว็บไซต์ แต่มีภาษา ฟีเจอร์เฉพาะของแคนาดา (เช่น ธีมวันหยุด)แสดงเนื้อหาภาษาฝรั่งเศสในแคนาดาต่อผู้ใช้ในแคนาดาที่ต้องการใช้ภาษาฝรั่งเศส
ตัวอย่าง: หน้าแรกที่ใช้วลีภาษาฝรั่งเศสแคนาดาและคำเฉพาะสำหรับแคนาดา (เช่น ธีมวันหยุด)
โฮสติ้งของ Firebase จะกำหนดประเทศของผู้ใช้จากที่อยู่ IP และ
ค่ากำหนดภาษาของผู้ใช้จากส่วนหัวของคำขอ Accept-Language
(ปกติแล้ว
ตั้งค่าอัตโนมัติโดยเว็บเบราว์เซอร์)
ตั้งค่าการเขียน i18n ใหม่
หากต้องการตั้งค่าการเขียน i18n ใหม่สำหรับเว็บไซต์โฮสติ้ง คุณต้องสร้าง "i18n"
เนื้อหา" สำหรับเนื้อหาที่แปลแล้วทั้งหมด จากนั้นเพิ่มแอตทริบิวต์ i18n
ไปยังไฟล์ firebase.json
เพื่อชี้ไปยัง "เนื้อหา i18n" ใหม่ ไดเรกทอรี
ขั้นตอนโดยละเอียดมีดังนี้
สร้างไดเรกทอรีแยกต่างหากภายในโฟลเดอร์
public
ของไดเรกทอรีแอปในเครื่อง สำหรับ "เนื้อหา i18n" ของคุณ จากนั้นสร้างโฟลเดอร์ย่อยสำหรับแต่ละภาษาและ ประเทศที่เว็บไซต์ของคุณรองรับในแต่ละโฟลเดอร์ย่อย ให้เพิ่มเนื้อหาที่เฉพาะเจาะจงสำหรับชุดค่าผสมนั้น เช่น หน้าแรกธีมวันหยุดหรือหน้า 404 สำหรับแต่ละภาษา
นี่คือตัวอย่างของ "i18n content" ไดเรกทอรีที่ชื่อ
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
หรือโฟลเดอร์ย่อยอื่นๆ คุณสามารถสร้างเนื้อหาแบบ เฉพาะภาษาและ/หรือประเทศหนึ่งๆเพิ่มแอตทริบิวต์
i18n
ลงในไฟล์firebase.json
และระบุ ที่มี "เนื้อหา 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
จะระบุหรือไม่ก็ได้ทำให้ "เนื้อหา i18n" ใช้งานได้ และกำหนดค่าให้เว็บไซต์โฮสติ้ง
คุณทดสอบการตั้งค่าได้โดยใช้การลบล้างคุกกี้
รหัสประเทศและภาษา
เมื่อตั้งชื่อ "คอนเทนต์ i18n" โฟลเดอร์ย่อย คุณต้องใช้ตัวพิมพ์เล็กสำหรับทั้ง 2 ประเทศ
และรหัสภาษา คุณสามารถใช้ค่า ALL
(คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) เพื่อระบุ
ประเทศใดก็ได้ (เช่น es_ALL/
) หรือภาษาใดก็ได้ (เช่น ALL_ca/
)
โฮสติ้งจะรับรหัสประเทศจากที่อยู่ IP ของผู้ใช้ รหัสประเทศ เป็นตัวอักษร 2 ตัว รหัส ISO 3166-1 alpha-2
รหัสภาษาจะได้รับจากส่วนหัวของคำขอ Accept-Language
ของผู้ใช้
(โดยปกติ
ตั้งค่าอัตโนมัติโดยเว็บเบราว์เซอร์)
รวมถึงรหัส ISO 639-1
โปรดคำนึงถึงสิ่งต่อไปนี้เมื่อใช้รหัสภาษา
เมื่อโฮสติ้งค้นหา "i18n content" ใด แสดง แต่จะเรียงลำดับ ภาษาตามค่าคุณภาพในส่วนหัว
Accept-Language
โฮสติ้งจะนำแท็กย่อยระดับภูมิภาคและประเทศใน
Accept-Language
ออก ดังนั้นรหัสภาษาใน "เนื้อหา i18n" ชื่อโฟลเดอร์ย่อยไม่สามารถ มีแท็กย่อยเหล่านี้ ตัวอย่างเช่น ไม่สามารถใช้es-419
หรือes-US
เป็น รหัสภาษาในชื่อโฟลเดอร์ย่อย แต่คุณใช้es
ได้หากต้องการแสดงเนื้อหาตามภูมิภาคหรือประเทศที่เฉพาะเจาะจง คุณสามารถสร้าง โฟลเดอร์ย่อยที่มีเนื้อหาเฉพาะภาษา-ประเทศที่คุณต้องการ การสนับสนุน
การจัดลำดับความสำคัญของ "เนื้อหา i18n"
หากคุณตั้งค่าการเขียน i18n ใหม่ โฮสติ้งจะแสดงเนื้อหาตามรายการต่อไปนี้ ลำดับความสำคัญ:
เนมสเปซที่สงวนไว้ซึ่งเริ่มต้นด้วยกลุ่มเส้นทาง
/__/*
การเปลี่ยนเส้นทางที่กำหนดค่าไว้
เนื้อหาแบบคงที่ที่ตรงกันทั้งหมด
รหัสภาษา + รหัสประเทศ (เช่น เนื้อหาจาก
fr_ca/
)
ลำดับเป็นไปตามค่าคุณภาพสำหรับแต่ละภาษาในคำขอ ส่วนหัวAccept-Language
รหัสประเทศเท่านั้น (เช่น เนื้อหาจาก
ALL_ca/
)โค้ดภาษาเท่านั้น (เช่น เนื้อหาจาก
fr/
หรือes_ALL/
)
ลำดับเป็นไปตามค่าคุณภาพสำหรับแต่ละภาษาในคำขอ ส่วนหัวAccept-Language
"ค่าเริ่มต้น" เนื้อหาแบบคงที่ที่ตรงกันทั้งหมด
นี่คือเนื้อหาที่อยู่นอก "เนื้อหา i18n" เช่น ที่ รากของไดเรกทอรีpublic
กำหนดค่าการเขียนใหม่แล้ว
การจัดการกับข้อผิดพลาด 404
หน้า i18n 404
เป็นไปตามลำดับความสำคัญเดียวกันกับที่ระบุไว้ข้างต้นสำหรับการทำงานแบบตรงทั้งหมด เนื้อหาแบบคงที่หน้า 404 ที่กำหนดเอง
หน้า 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
ตัวอย่างข้อมูลคำขอ
รหัสภาษา:
fr
,en
(ฝรั่งเศส จากนั้นจึงอังกฤษ)
รหัสภาษาจะเรียงลำดับตามค่าคุณภาพใน ส่วนหัวAccept-Language
รหัสประเทศ:
ca
(แคนาดา)
ตามลำดับลำดับความสำคัญของการทำงานแบบตรงทั้งหมดและค่าคุณภาพสำหรับ ค่ากำหนดภาษา โฮสติ้งจะค้นหาไดเรกทอรีสำหรับ ตามลำดับต่อไปนี้
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/
การจัดการกับข้อผิดพลาด 404
หน้าเว็บใดที่จะแสดงต่อผู้ใช้
หน้าที่ขอ:
index.html
หน้าที่ขอ:
awesome-page.html
โปรดทราบข้อมูลต่อไปนี้เกี่ยวกับการค้นหาและให้บริการของ "เนื้อหา i18n" ไดเรกทอรี:
ไดเรกทอรี
localized-files/
ไม่มีen_ca/
อยู่en_ALL/
หรือen/
โฟลเดอร์ย่อย ดังนั้นโฮสติ้งจะข้าม รายการสำคัญจนกว่าจะพบโฟลเดอร์ย่อยที่ตรงกันกับคำขอ ชุดค่าผสมของภาษา-ประเทศแม้ว่าไดเรกทอรี
localized-files/
จะมีes_ALL/
โฟลเดอร์ย่อย ตัวอย่าง คำขอ ข้างต้นไม่มีes
หรือes-foo
รหัสภาษา ดังนั้นโฮสติ้งจะไม่ค้นหา "เนื้อหา i18n" นั่น ตรงกับes
โฟลเดอร์ย่อยที่เรียกว่า
fr/
และfr_ALL/
เทียบเท่ากับจากมุมมองของ ค่ากำหนดประเทศและภาษาของผู้ใช้ อย่างไรก็ตาม หากโฟลเดอร์ย่อยทั้ง 2 โฟลเดอร์ อยู่แล้ว โฮสติ้งจะแสดงเนื้อหาfr_ALL/
ก่อนเนื้อหาfr/
ลบล้างภาษาและรหัสประเทศด้วยคุกกี้
คุณสามารถเปลี่ยนเนื้อหาที่จะแสดงได้โดยใช้คุกกี้เพื่อลบล้างประเทศ และส่วนหัวภาษา
ตัวอย่างวิธีใช้การลบล้างคุกกี้มีดังนี้
ทดสอบฟีเจอร์ด้วยชุดค่าผสมของภาษา/ประเทศต่างๆ เพื่อตรวจสอบว่า เนื้อหานั้น
ให้ผู้ใช้เปลี่ยนแปลงเนื้อหาที่ตนเห็น ตัวอย่างเช่น คุณสามารถ ใช้เครื่องมือเลือกภาษา แล้วตั้งค่า
firebase-language-override
ให้สอดคล้องกัน
หากต้องการกำหนดค่าการลบล้างคุกกี้ ให้ตั้งค่าคุกกี้ที่มีชื่อต่อไปนี้ทั้ง 2 ชื่อหรือชื่อใดชื่อหนึ่ง
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";
การแทนที่คุกกี้ภาษาจะต้องเป็นรายการรหัสภาษาที่คั่นด้วยเครื่องหมายจุลภาคใน ลำดับค่ากำหนด โดยไม่มีแท็กย่อยหรือค่าคุณภาพ
การลบล้างคุกกี้จะไม่ปรากฏในบันทึก