รูปแบบข้อความการแปล

ส่วนขยายที่เป็นสากลแต่ละรายการมีอย่างน้อย 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"
  }
}