ส่วนขยายสากลแต่ละรายการจะมีไฟล์ชื่อ messages.json อย่างน้อย 1 ไฟล์ที่ระบุ สตริงเฉพาะภาษา หน้านี้อธิบายรูปแบบของไฟล์ messages.json สำหรับข้อมูลเกี่ยวกับ วิธีทำให้เป็นสากลและแปลให้เหมาะกับท้องถิ่น โปรดดูหน้า การปรับให้เป็นสากล
สรุปข้อมูลช่อง
โค้ดต่อไปนี้แสดงฟิลด์ที่รองรับสําหรับ messages.json เฉพาะ "name" เท่านั้น และ "ข้อความ" ต้องระบุฟิลด์
messages.json:
{ "name": { "message": "Message text, with optional placeholders.", "description": "Translator-aimed description of the message.", "placeholders": { "placeholder_name": { "content": "A string to be placed within the message.", "example": "Translator-aimed example of the placeholder string." }, ... } }, ... } ตัวอย่าง
ต่อไปนี้คือไฟล์ messages.json ที่กําหนดข้อความ 3 รายการชื่อ "prompt_for_name", "hello" และ "bye"
messages.json:
{ "prompt_for_name": { "message": "What's your name?", "description": "Ask for the user's name" }, "hello": { "message": "Hello, $USER$", "description": "Greet the user", "placeholders": { "user": { "content": "$1", "example": "Cira" } } }, "bye": { "message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!", "description": "Say goodbye to the user", "placeholders": { "our_site": { "content": "Example.com", }, "user": { "content": "$1", "example": "Cira" } } } } รายละเอียดฟิลด์
ส่วนนี้จะอธิบายแต่ละช่องที่ปรากฏในไฟล์ messages.json ได้ สำหรับรายละเอียดเกี่ยวกับวิธี มีการใช้ไฟล์ข้อความ ตัวอย่างเช่น จะเกิดอะไรขึ้นเมื่อภาษาไม่ได้กำหนดข้อความทั้งหมด โปรดดู การปรับให้เป็นสากล
ชื่อ
จริงๆ แล้วไม่มีช่องชื่อ "name" ชื่อของช่องนี้คือชื่อของข้อความ ซึ่งเป็นชื่อเดียวกับที่คุณเห็นใน __MSG__name___ หรือ getMessage("_name_")
ชื่อนี้เป็นคีย์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งช่วยให้คุณเรียกดูข้อความที่แปลแล้วได้ ชื่ออาจมีอักขระต่อไปนี้
- A-Z
- a-z
- 0-9
- _ (ขีดล่าง)
- @
ตัวอย่างชื่อ 3 รายการที่นำมาจากส่วนตัวอย่างมีดังนี้
messages.json:
"prompt_for_name": { ... }, "hello": { ... }, "bye": { ... } ดูตัวอย่างเพิ่มเติมเกี่ยวกับการใช้ชื่อได้ในหน้าการทำให้เป็นสากล
ข้อความ
ข้อความที่แปลในรูปแบบสตริงที่มีตัวยึดตำแหน่งได้ ใช้ $_placeholder_name_$ (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) เพื่ออ้างอิงตัวยึดตําแหน่งหนึ่งๆ เช่น คุณสามารถอ้างอิงตัวยึดตําแหน่งชื่อ "our_site" เป็น $our_site$, $OUR_SITE$ หรือ $oUR_sITe$
ต่อไปนี้เป็นตัวอย่างข้อความ 3 รายการที่นำมาจากส่วนตัวอย่าง
messages.json:
"message": "What's your name?" ... "message": "Hello, $USER$" ... "message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!" หากต้องการใส่เครื่องหมายดอลลาร์ ($) ลงในสตริง ให้ใช้ $$. For example, use the following code to specify the message Amount (in $):
messages.json:
"message": "Amount (in $$)"แม้ว่าตัวยึดตําแหน่ง เช่น
$USER$เป็นวิธีที่แนะนำในการอ้างอิงสตริงการแทนที่ (สตริงที่ระบุโดยใช้พารามิเตอร์ substitutions ของ i18n.getMessage) แต่คุณยังอ้างอิงสตริงการแทนที่ภายในข้อความได้โดยตรง ตัวอย่างเช่น ข้อความต่อไปนี้หมายถึงสตริงการแทนที่ 3 รายการแรกซึ่งส่งไปยังgetMessage()messages.json:
"message": "Params: $1, $2, $3"อย่างไรก็ตาม เราขอแนะนำให้คุณใช้ตัวยึดตําแหน่งแทนสตริง
$_n_ในข้อความ ให้คิดว่าตัวยึดตำแหน่งเป็นชื่อตัวแปรที่ดี หลังจากเขียนโค้ดได้ 1 สัปดาห์ คุณอาจลืมความหมายของ$1แต่คุณจะรู้ว่าตัวยึดตําแหน่งหมายถึงอะไร ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวยึดตําแหน่งและสตริงการแทนที่ได้ที่ส่วนตัวยึดตําแหน่งคำอธิบาย
ไม่บังคับ คำอธิบายข้อความโดยมีจุดประสงค์เพื่อให้บริบทหรือรายละเอียดเพื่อช่วยนักแปล ทำการแปลที่ดีที่สุดเท่าที่จะเป็นไปได้
ต่อไปนี้เป็นตัวอย่างคำอธิบาย 3 รายการที่นำมาจากส่วนตัวอย่าง
messages.json:
"description": "Ask for the user's name" ... "description": "Greet the user" ... "description": "Say goodbye to the user"ตัวยึดตำแหน่ง
ไม่บังคับ กําหนดสตริงย่อยอย่างน้อย 1 รายการที่จะใช้ในข้อความ นี่เป็นเหตุผล 2 ประการที่คุณ อาจต้องการใช้ตัวยึดตำแหน่งดังนี้
- เพื่อกำหนดข้อความสำหรับส่วนของข้อความที่ไม่ควรได้รับการแปล เช่น โค้ด HTML ชื่อที่จดทะเบียนเครื่องหมายการค้า ตัวระบุการจัดรูปแบบ
- หากต้องการอ้างอิงสตริงการแทนที่ที่ส่งผ่านไปยัง
getMessage()ตัวอย่าง:$1
ตัวยึดตําแหน่งแต่ละรายการมีชื่อ รายการ "เนื้อหา" และรายการ "ตัวอย่าง" (ไม่บังคับ) ชื่อตัวยึดตําแหน่งจะไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ รวมถึงมีอักขระเดียวกับชื่อข้อความได้
"เนื้อหา" ค่าของรายการคือสตริงที่สามารถอ้างถึงสตริงการแทนที่ ซึ่งระบุ โดยใช้พารามิเตอร์การแทนที่เมธอด i18n.getMessage ค่าของรายการ "content" มักจะเป็น "Example.com" หรือ "$1" หากคุณอ้างอิงสตริงการแทนที่ที่ไม่มีอยู่ คุณจะได้รับสตริงว่าง ตารางต่อไปนี้แสดงความสอดคล้องของสตริง $_n_ กับสตริง ที่ระบุโดยพารามิเตอร์ substitutions
| พารามิเตอร์ substitutions | ค่า $1 | มูลค่า $2 | ค่า $3 |
|---|---|---|---|
userName | ค่าของ userName | "" | "" |
["Cira", "Kathy"] | "Cira" | "Kathy" | "" |
รายการ "ตัวอย่าง" (ไม่บังคับ แต่แนะนำอย่างยิ่ง) จะช่วยนักแปลโดยแสดงลักษณะที่เนื้อหาปรากฏต่อผู้ใช้ ตัวอย่างเช่น ตัวยึดตำแหน่งสำหรับจำนวนเงินดอลลาร์ควรมีตัวอย่างดังนี้ "$23.45"
ข้อมูลโค้ดต่อไปนี้ซึ่งนำมาจากส่วนตัวอย่างแสดง "ตัวยึดตำแหน่ง" รายการที่ มีตัวยึดตำแหน่ง 2 รายการชื่อ "our_site" และ "ผู้ใช้" ตัวยึดตําแหน่ง "our_site" ไม่มีรายการ "example" เนื่องจากค่าของรายการนั้นเห็นได้ชัดจากช่อง "content"
messages.json:
"placeholders": { "our_site": { "content": "Example.com", }, "user": { "content": "$1", "example": "Cira" } }