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

ส่วนขยายหรือแอปสากลแต่ละรายการจะมีไฟล์ชื่อ messages.json อย่างน้อย 1 ไฟล์ที่ระบุ สตริงเฉพาะภาษา หน้านี้อธิบายรูปแบบของไฟล์ messages.json สำหรับข้อมูลเกี่ยวกับ วิธีทำให้เป็นสากลและแปลให้เหมาะกับท้องถิ่น โปรดดูหน้า การปรับให้เป็นสากล

สรุปข้อมูลช่อง

รหัสต่อไปนี้แสดงฟิลด์ที่รองรับสำหรับ messages.json เฉพาะ "name" เท่านั้น และ "ข้อความ" ต้องระบุฟิลด์

{
  "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" และ "บาย":

{
  "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" ชื่อช่องนี้คือชื่อของข้อความ ซึ่งเป็นชื่อเดียวกับ name ที่คุณเห็นใน __MSG__name___ หรือ getMessage("_name_")

ชื่อนี้เป็นคีย์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งช่วยให้คุณเรียกดูข้อความที่แปลแล้วได้ ชื่อสามารถ มีอักขระต่อไปนี้

  • A-Z
  • a-z
  • 0-9
  • _ (ขีดล่าง)
  • @
หมายเหตุ: อย่ากำหนดชื่อที่ขึ้นต้นด้วย "@@" ชื่อเหล่านี้สงวนไว้สำหรับข้อความที่กำหนดไว้ล่วงหน้า

ต่อไปนี้เป็นตัวอย่างชื่อ 3 รายการ ซึ่งนำมาจากส่วนตัวอย่าง

"prompt_for_name": {
  ...
},
"hello": {
  ...
},
"bye": {
  ...
}

ดูตัวอย่างเพิ่มเติมเกี่ยวกับการใช้ชื่อได้ในหน้าการทำให้เป็นสากล

ข้อความ

ข้อความที่แปลในรูปแบบสตริงที่มีตัวยึดตำแหน่งได้ ใช้ $_placeholder_name_$ (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) เพื่ออ้างอิงตัวยึดตําแหน่งหนึ่งๆ ตัวอย่างเช่น คุณสามารถ อ้างอิงตัวยึดตำแหน่งชื่อ "our_site" เป็น $our_site$, $OUR_SITE$ หรือ $oUR_sITe$

ต่อไปนี้เป็นตัวอย่างข้อความ 3 รายการซึ่งนำมาจากส่วนตัวอย่าง

"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 $):

"message": "Amount (in $$)"

แม้ว่าตัวยึดตำแหน่ง เช่น $USER$ จะเป็นวิธีที่แนะนำให้ใช้ในสตริงการแทนที่ (สตริงที่ระบุโดยใช้พารามิเตอร์ substitutions ของ i18n.getMessage) ที่คุณสามารถอ้างถึงได้ เพื่อแทนที่สตริงภายในข้อความโดยตรง ตัวอย่างเช่น ข้อความต่อไปนี้อ้างอิงถึง สตริงแทนที่ 3 รายการแรกที่ส่งผ่านไปยัง getMessage():

"message": "Params: $1, $2, $3"

แม้จะมีตัวอย่างนี้ แต่เราขอแนะนำให้คุณใช้ตัวยึดตำแหน่งแทนสตริง $_n_ ในข้อความของคุณได้ ให้คิดว่าตัวยึดตำแหน่งเป็นชื่อตัวแปรที่ดี 1 สัปดาห์หลังจากที่คุณเขียน คุณอาจลืมว่า $1 หมายถึงอะไร แต่คุณจะรู้ว่าตัวยึดตำแหน่งหมายถึงอะไร สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวยึดตำแหน่งและสตริงการแทนที่ โปรดดูที่ส่วนตัวยึดตำแหน่ง

คำอธิบาย

ไม่บังคับ คำอธิบายข้อความโดยมีจุดประสงค์เพื่อให้บริบทหรือรายละเอียดเพื่อช่วยนักแปล ทำการแปลที่ดีที่สุดเท่าที่จะเป็นไปได้

ต่อไปนี้เป็นตัวอย่างคำอธิบาย 3 รายการ ซึ่งนำมาจากส่วนตัวอย่าง

"description": "Ask for the user's name"
...
"description": "Greet the user"
...
"description": "Say goodbye to the user"

ตัวยึดตำแหน่ง

ไม่บังคับ กำหนดสตริงย่อยอย่างน้อย 1 สตริงที่จะใช้ภายในข้อความ นี่เป็นเหตุผล 2 ประการที่คุณ อาจต้องการใช้ตัวยึดตำแหน่งดังนี้

  • เพื่อกำหนดข้อความสำหรับส่วนใดส่วนหนึ่งของข้อความที่ไม่ควรแปล เช่น โค้ด HTML ชื่อที่จดทะเบียนเครื่องหมายการค้า ตัวระบุการจัดรูปแบบ
  • หากต้องการอ้างอิงสตริงการแทนที่ที่ส่งผ่านไปยัง getMessage() ตัวอย่างเช่น $1

ตัวยึดตำแหน่งแต่ละตัวมีชื่อหรือ "content" รายการ และ "ตัวอย่าง" ที่ไม่บังคับ รายการ ชื่อของตัวยึดตำแหน่ง ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และอาจมีอักขระเหมือนกับชื่อข้อความ

"เนื้อหา" ค่าของรายการคือสตริงที่สามารถอ้างถึงสตริงการแทนที่ ซึ่งระบุ โดยใช้พารามิเตอร์การแทนที่ของเมธอด i18n.getMessage ค่าของ "เนื้อหา" รายการคือ ซึ่งโดยทั่วไปจะเป็น "Example.com" หรือ "$1" ถ้าคุณอ้างถึงสตริงการแทนที่ที่ไม่ คุณจะได้รับสตริงว่างเปล่า ตารางต่อไปนี้แสดงความสอดคล้องของสตริง $_n_ กับสตริง ที่ระบุโดยพารามิเตอร์ substitutions

พารามิเตอร์ substitutionsมูลค่า $1มูลค่า $2มูลค่า $3
userNameค่าของ userName""""
["Cira", "Kathy"]"Cira""Kathy"""

"ตัวอย่าง" item (ไม่บังคับแต่แนะนำอย่างยิ่ง) จะช่วยนักแปลโดยการแสดงให้เห็นว่าเนื้อหา ปรากฏต่อผู้ใช้ปลายทาง ตัวอย่างเช่น ตัวยึดตำแหน่งสำหรับจำนวนเงินดอลลาร์ควรมีตัวอย่างดังนี้ "$23.45"

ข้อมูลโค้ดต่อไปนี้ซึ่งนำมาจากส่วนตัวอย่างแสดง "ตัวยึดตำแหน่ง" รายการที่ มีตัวยึดตำแหน่ง 2 รายการชื่อ "our_site" และ "ผู้ใช้" "our_site" ตัวยึดตำแหน่งไม่มี "ตัวอย่าง" สินค้าเนื่องจากเห็นคุณค่าของสินค้านี้อย่างชัดเจนจาก "เนื้อหา" ด้วย

"placeholders": {
  "our_site": {
    "content": "Example.com",
  },
  "user": {
    "content": "$1",
    "example": "Cira"
  }
}