ส่วนขยายที่เป็นสากลแต่ละรายการมีอย่างน้อย 1 ไฟล์ชื่อ messages.json
ที่มีสตริงที่เจาะจงภาษา หน้านี้อธิบายรูปแบบของไฟล์ messages.json
ดูข้อมูลเกี่ยวกับวิธีทำให้เป็นสากลและปรับให้เข้ากับท้องถิ่นได้ที่หน้าการปรับให้เป็นสากล
สรุปข้อมูลช่อง
รหัสต่อไปนี้แสดงช่องที่รองรับสำหรับ messages.json
ใช้เฉพาะช่อง "name" และ "message"
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
สำหรับรายละเอียดเกี่ยวกับวิธีใช้ไฟล์ข้อความ เช่น สิ่งที่เกิดขึ้นเมื่อภาษาไม่ได้กำหนดข้อความทั้งหมด โปรดดูการทำให้เป็นสากล
ชื่อ
อันที่จริง ไม่มีช่องที่ชื่อว่า "ชื่อ" ชื่อของช่องนี้คือชื่อของข้อความ ซึ่งเป็นชื่อเดียวกับที่คุณเห็นใน __MSG__name___
หรือ getMessage("_name_")
ชื่อนี้เป็นคีย์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งช่วยให้คุณเรียกดูข้อความที่แปลแล้วได้ ชื่ออาจมีอักขระต่อไปนี้
- A-Z
- a-z
- 0-9
- _ (ขีดล่าง)
- @
ต่อไปนี้เป็น 3 ตัวอย่างของชื่อ นำมาจากส่วนตัวอย่าง
messages.json:
"prompt_for_name": {
...
},
"hello": {
...
},
"bye": {
...
}
ดูตัวอย่างเพิ่มเติมเกี่ยวกับการใช้ชื่อได้ที่หน้าการปรับให้เป็นสากล
ข้อความ
ข้อความที่แปลในรูปแบบสตริงที่อาจมีplaceholders ใช้ $_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
หมายถึงอะไร แต่คุณจะทราบว่าตัวยึดตำแหน่งหมายถึงอะไร สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวยึดตำแหน่งและสตริงการแทนที่ โปรดดูที่ส่วนplaceholdersคำอธิบาย
ไม่บังคับ คำอธิบายของข้อความ มีวัตถุประสงค์เพื่อให้บริบทหรือรายละเอียดเพื่อช่วยนักแปลในการแปลที่ดีที่สุด
ต่อไปนี้เป็นตัวอย่างคำอธิบาย 3 ตัวอย่าง ดึงมาจากส่วนตัวอย่าง
messages.json:
"description": "Ask for the user's name" ... "description": "Greet the user" ... "description": "Say goodbye to the user"
placeholders
ไม่บังคับ กำหนดสตริงย่อยที่จะใช้ภายในข้อความ ต่อไปนี้เป็น 2 เหตุผลที่คุณอาจต้องการใช้ตัวยึดตำแหน่ง
- เพื่อกำหนดข้อความที่ไม่ควรแปลส่วนหนึ่งส่วนใดข้อความหนึ่ง เช่น โค้ด HTML ชื่อเครื่องหมายการค้า ตัวระบุการจัดรูปแบบ
- เพื่ออ้างถึงสตริงแทนที่ส่งผ่านไปยัง
getMessage()
ตัวอย่างเช่น$1
ตัวยึดตำแหน่งแต่ละรายการจะมีชื่อ รายการ "เนื้อหา" และรายการ "ตัวอย่าง" ที่ไม่บังคับ ชื่อของตัวยึดตำแหน่งจะไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และสามารถมีอักขระเหมือนกับชื่อข้อความ
ค่าของรายการ "content" เป็นสตริงที่สามารถอ้างถึงสตริงการแทนที่ ซึ่งระบุโดยใช้พารามิเตอร์ substitutions ของเมธอด i18n.getMessage ค่าของรายการ "เนื้อหา"
มักจะเป็น "Example.com" หรือ "$1" หากอ้างถึงสตริงแทนที่ไม่มีอยู่
คุณจะเห็นสตริงที่ว่างเปล่า ตารางต่อไปนี้จะแสดงให้เห็นว่าสตริง $_n_
สัมพันธ์กับสตริงที่ระบุโดยพารามิเตอร์ การแทน อย่างไร
พารามิเตอร์ substitutions | มูลค่า $1 | มูลค่า $2 | มูลค่า $3 |
---|---|---|---|
userName | ค่าของ userName | "" | "" |
["Cira", "Kathy"] | "Cira" | "Kathy" | "" |
รายการ "ตัวอย่าง" (ไม่บังคับ แต่แนะนำอย่างยิ่ง) ช่วยนักแปลด้วยการแสดงให้เห็นว่าเนื้อหาปรากฏต่อผู้ใช้ปลายทางอย่างไร เช่น ตัวยึดตำแหน่งสำหรับจำนวนเงินดอลลาร์ควรมีตัวอย่าง เช่น "$23.45"
ข้อมูลโค้ดต่อไปนี้นำมาจากส่วนตัวอย่าง แสดงรายการ "placeholders" ที่มีตัวยึดตำแหน่ง 2 รายการชื่อ "our_site" และ "user" ตัวยึดตำแหน่ง "our_site" ไม่มีรายการ "example" เนื่องจากค่าในช่อง "content" ชัดเจน
messages.json:
"placeholders": {
"our_site": {
"content": "Example.com",
},
"user": {
"content": "$1",
"example": "Cira"
}
}