สำหรับนักแปล¶
หน้านี้มีไว้สำหรับคนที่แก้ไขแคตตาล็อก ไม่ใช่คนที่เขียนโค้ด มันสั้นโดยตั้งใจ และตั้งใจให้ถูกลิงก์หรือคัดลอกไปใส่ในคำแนะนำสำหรับนักแปลของแต่ละโปรเจกต์
ไม่มีอะไรในหน้านี้ที่บังคับให้คุณต้องอ่าน Python ออก ทุกอย่างในหน้านี้ว่าด้วยสิ่งเดียว: ชิ้นส่วนของข้อความที่อยู่ในวงเล็บปีกกา
ตัวยึดตำแหน่งคืออะไร¶
ข้อความในแคตตาล็อกอาจมีชื่ออยู่ในวงเล็บปีกกา:
{name} คือ ตัวยึดตำแหน่ง เมื่อโปรแกรมแสดงข้อความนี้ มันจะแทนที่ {name}
ด้วยค่าที่ตัวมันเองจัดหามา — ชื่อคน ชื่อไฟล์ หรือตัวเลข
ตัวยึดตำแหน่งไม่ใช่คำที่ต้องแปล มันคือช่องว่างที่รอค่า
คำแปลของคุณอยู่ใน msgstr และมันต้องเก็บช่องนั้นไว้:
อะไรที่เปลี่ยนได้ และอะไรที่เปลี่ยนไม่ได้¶
คุณ ทำได้:
- ย้ายตัวยึดตำแหน่ง ไปยังตำแหน่งใดก็ได้ที่ไวยากรณ์ของภาษาปลายทางต้องการ รวมถึงย้ายไปไว้หน้าสุดของข้อความ
- ใช้ตัวยึดตำแหน่งซ้ำ หากภาษานั้นต้องการค่าเดียวกันสองครั้ง
- เขียนคำอื่น ๆ ใหม่ทั้งหมด รวมถึงเครื่องหมายวรรคตอน การเว้นวรรค และลำดับของประโยค
คุณ ต้องไม่:
- แปลชื่อที่อยู่ในวงเล็บปีกกา
{name}ต้องคง{name}ไว้ แม้แต่ในภาษาที่ไม่ได้เขียนอย่างอื่นด้วยอักษรละตินเลย - ลบวงเล็บปีกกาออก หรือเขียนชื่อโดยไม่มีวงเล็บ
- แทนวงเล็บปีกกา ASCII
{}ด้วยแบบเต็มความกว้าง{}input method หลายตัวสร้างรูปแบบเต็มความกว้างออกมา มันดูเกือบเหมือนกัน แต่ใช้งานไม่ได้ - เพิ่มการจัดรูปแบบ เช่น
{name!r}หรือ{amount:.2f}วิธีแสดงผลของค่าถูกตัดสินในตัวโปรแกรม ไม่ใช่ในแคตตาล็อก - เสกตัวยึดตำแหน่ง ที่ไม่มีอยู่ใน
msgid
หากข้อความหนึ่งต้องการค่าที่ต้นฉบับไม่ได้เสนอมาให้ นั่นคือข้อความที่นักพัฒนาต้องเป็นคนแก้ จงบอกออกไปแทนที่จะหาทางเลี่ยงเอาเอง
รูปพหูพจน์¶
ข้อความที่มีการนับจะมาพร้อมช่อง msgstr หนึ่งช่องต่อหนึ่งรูปพหูพจน์ในภาษาของคุณ
และภาษาของคุณเป็นผู้ตัดสินว่ามีกี่ช่อง — หนึ่งช่องสำหรับภาษาญี่ปุ่น สองช่องสำหรับภาษาเยอรมัน
สามช่องสำหรับภาษารัสเซีย หกช่องสำหรับภาษาอาหรับ จงเติมทุกช่องที่แคตตาล็อกให้มา
มีสองกฎที่ทำให้คนพลาดกันบ่อย:
- ช่องเหล่านั้นไม่ใช่ "เอกพจน์ พหูพจน์ พหูพจน์กว่า" แต่ละดัชนีมีความหมายตามที่กฎพหูพจน์ของภาษาคุณกำหนด รูปที่สามของภาษาลัตเวียมีไว้สำหรับศูนย์เท่านั้น รูปที่สองของภาษาสโลวีเนียมีไว้สำหรับสองพอดี ส่วนภาษาเวลส์วางกรณีทั่วไปไว้ที่ดัชนี 0 และวางเอกพจน์ไว้ที่ดัชนี 1
- สองช่องอาจมีข้อความเหมือนกันได้อย่างถูกต้อง ในภาษาตุรกี ฮังการี เปอร์เซีย และเบงกาลี คำนามยังคงเป็นเอกพจน์หลังตัวเลข ทั้งสองรูปของข้อความที่มีการนับจึงเป็นสตริงเดียวกัน นั่นถูกต้องแล้ว ไม่ใช่ความพลาดจากการคัดลอกวาง
กฎเรื่องตัวยึดตำแหน่งข้างต้นใช้กับทุกรูปอย่างเป็นอิสระต่อกัน
รายการ fuzzy¶
รายการที่ติดธง fuzzy คือการเดาของเครื่อง: นักพัฒนาเปลี่ยนข้อความต้นฉบับ
และเครื่องมือได้จับคู่ข้อความใหม่เข้ากับคำแปลเดิมของคุณ เพื่อให้คุณมีจุดตั้งต้น
รายการ fuzzy ไม่ถูกโปรแกรมนำไปใช้ — โปรแกรมจะแสดงต้นฉบับที่ยังไม่ได้แปลแทน —
จนกว่าจะมีคนแก้ข้อความแล้วลบเครื่องหมาย fuzzy ออก
โปรแกรมแก้ไข PO ส่วนใหญ่มีปุ่มสำหรับเรื่องนี้โดยเฉพาะ
การอ่านข้อความแจ้งข้อผิดพลาด¶
เครื่องมือจะตรวจตัวยึดตำแหน่งตอนคอมไพล์แคตตาล็อก
และข้อความที่แจ้งออกมาเขียนขึ้นเพื่อคุณ ไม่ใช่เพื่อโปรแกรมเมอร์
การรายงานเพียงว่า {name} หายไปเป็นทางตัน ในเมื่อคุณมองเห็นอักขระเหล่านั้นอยู่ตรงหน้า
ดังนั้นเมื่อตัวยึดตำแหน่งดูเหมือนมีอยู่แต่จริง ๆ แล้วไม่มี ข้อความจะบอกเหตุผลด้วย
เทียบกับต้นฉบับ Hello {name} แต่ละกรณีต่อไปนี้จะถูกรายงานภายใต้
translation does not match the source placeholders:
| คำแปลของคุณเขียนว่า | เหตุผลที่รายงาน |
|---|---|
こんにちは {name} |
{name} is missing (the braces around it are not the ASCII { and }) |
こんにちは {{name}} |
{name} is missing (it is written {{name}}, which is how a literal brace is escaped) |
こんにちは name |
{name} is missing (the name appears, but not inside braces) |
こんにちは {名前} |
{name} is missing; {名前} is not in the source message |
อักขระที่มองไม่เห็นได้รับการปฏิบัติแยกต่างหาก no-break space ภายใน วงเล็บปีกกาเป็นสิ่งที่ input method สร้างขึ้นได้และไม่มีอีดิเตอร์ใดแสดงให้เห็น ข้อความจึงพิมพ์มันเป็น code point แทนที่จะเรียกชื่ออักขระที่คุณไม่มีวันหาเจอ
ชื่อที่ตัวอักษรผสมกันหลายระบบการเขียน — กรณี homoglyph ที่อักษรซีริลลิก а
แยกไม่ออกจากอักษรละติน — จะถูกแสดงสองครั้ง ครั้งหนึ่งแบบอ่านได้และอีกครั้ง
แบบ escape ซึ่งเป็นรูปเดียวที่บอกความแตกต่างของทั้งสองได้
translation does not match the source placeholders: {name} is missing;
{nаme} (n\u0430me) is not in the source message
การแยกแยะแบบเดียวกันนี้ใช้กับกรณีที่ชื่อซึ่งเขียนด้วยอักษรกรีกหรือซีริลลิกล้วน
ชนกับชื่อต้นทางแบบ ASCII รวมถึงกรณีอักษรตัวเดียวอย่างละติน a กับซีริลลิก а
หากคุณเจอกรณีใดกรณีหนึ่งเหล่านี้แล้ววิธีแก้ไม่ชัดเจน
ทางที่ปลอดภัยคือลบตัวยึดตำแหน่งที่คุณพิมพ์ไว้ทิ้ง แล้วคัดลอกอันที่อยู่ใน msgid มาใช้
สิ่งที่การตรวจสอบทำไม่ได้¶
เครื่องมือยืนยันได้ว่าตัวยึดตำแหน่งของคุณยังครบถ้วน แต่มันบอกไม่ได้ว่าคำแปลนั้นถูกต้อง เป็นธรรมชาติ หรือเหมาะกับบริบทหรือไม่ — เรื่องนั้นยังคงอยู่ในมือคุณทั้งหมด
มีสองสิ่งที่ช่วยได้มากกว่าการตรวจใด ๆ:
- อ่านคอมเมนต์สำหรับนักแปล บรรทัดที่ขึ้นต้นด้วย
#.เหนือข้อความ คือนักพัฒนากำลังบอกคุณว่าข้อความนั้นปรากฏที่ไหนและหมายความว่าอย่างไร - ถามเรื่อง
msgctxtเมื่อคำเดียวกันปรากฏสองครั้งพร้อมบริบทต่างกัน นั่นเป็นเพราะทั้งสองต้องแปลไม่เหมือนกัน — เช่น "Open" ที่เป็นปุ่ม กับ "Open" ที่เป็นสถานะ