ใช้การปรับให้เป็นสากล ("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";
การแทนที่คุกกี้ภาษาจะต้องเป็นรายการรหัสภาษาที่คั่นด้วยเครื่องหมายจุลภาคใน ลำดับค่ากำหนด โดยไม่มีแท็กย่อยหรือค่าคุณภาพ
การลบล้างคุกกี้จะไม่ปรากฏในบันทึก