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

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

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

โค้ดต่อไปนี้แสดงฟิลด์ที่รองรับสําหรับ messages.json คุณต้องกรอกเฉพาะช่อง "name" และ "message" เท่านั้น

{
  "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"

{
  "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 รายการ ซึ่งนำมาจากส่วนตัวอย่าง

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

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

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

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

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