ไทย

เครื่องมือข้อความและชีวิตประจำวัน · ชุดเครื่องมือข้อความ

เหตุใดตัวพิมพ์ใหญ่จึงไม่ใช่แค่ A–Z: ß ซึ่งเป็นการแมปตัวพิมพ์ i และ Unicode ของตุรกี

· พื้นหลัง

ยูนิโค้ด การแปลงกรณี การแปลเป็นภาษาท้องถิ่น

ตัวอักษรเยอรมัน ตุรกี และกรีกผ่านการแปลงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

อธิบายว่าทำไมตัวพิมพ์ใหญ่และตัวพิมพ์เล็กจึงถูกกำหนดโดยตาราง Unicode แทนที่จะเป็นเลขคณิตบนตัวอักษร โดยมีข้อยกเว้นที่รู้จักกันดี เช่น ß กลายเป็น SS, ตุรกี dotless ı และซิกมาสุดท้ายของภาษากรีก - และความหมายสำหรับตัวแปลงที่ใช้เบราว์เซอร์

STRASSE และตัวอักษรที่เพิ่มขึ้น — เหตุใดการใช้ตัวพิมพ์ใหญ่ 'straße' จึงเปลี่ยนจำนวนอักขระ

วาง `straße` ลงในตัวแปลงและเป็นตัวพิมพ์ใหญ่: JavaScript สร้าง `STRASSE` ผลลัพธ์ที่ได้จะยาวขึ้นอย่างเห็นได้ชัด เนื่องจากตัวชาร์ปตัวพิมพ์เล็กถูกแมปกับอักษรตัวใหญ่สองตัวโดยการดำเนินการเริ่มต้นที่ใช้ที่นี่ กฎการตรวจสอบที่ถือว่าการแปลงขนาดตัวพิมพ์รักษาจำนวนอักขระจึงสามารถปฏิเสธ ตัดทอน หรือจัดแนวข้อความภาษาเยอรมันที่ถูกต้องไม่ตรงได้

ทิศทางย้อนกลับไม่ได้สร้างแหล่งกำเนิดขึ้นมาใหม่ การพิมพ์ตัวพิมพ์เล็ก `STRASSE` จะได้ `strasse` ไม่ใช่ `straße` เนื่องจากลำดับตัวพิมพ์ใหญ่ยังแสดงถึงคู่สามัญของตัวอักษร s อีกด้วย การแปลงเคสจึงเป็นการแปลงข้อความ ไม่ใช่การเข้ารหัสแบบย้อนกลับ คงการสะกดคำเดิมไว้เมื่อใดก็ตามที่มีความสำคัญในเรื่องอัตลักษณ์ ความเที่ยงตรงในการแสดงผล หรือการเปรียบเทียบทุกประการ

การแม็ปตัวพิมพ์เป็นตาราง ไม่ใช่สูตร - วิธีที่ Unicode กำหนดการแมปตัวพิมพ์อย่างง่ายและแบบเต็มสำหรับตัวอักษรที่ใส่ตัวพิมพ์ทุกตัว

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

พื้นที่เก็บข้อมูลไม่เปิดเผยตารางการแมป Unicode หรือแยกแยะการแมปแบบง่ายและแบบเต็ม ดังนั้นจึงไม่ควรนำเสนอรายละเอียดเหล่านั้นเป็นคุณลักษณะของเครื่องมือนี้ สัญญาที่สังเกตได้นั้นแคบกว่า: `toUpperCase()` และ `toLowerCase()` มอบสิทธิ์ให้กับกลไกเบราว์เซอร์ ควรทดสอบผลลัพธ์ในสภาพแวดล้อมที่ข้อความที่แปลงแล้วจะถูกใช้งานจริง

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

ผลลัพธ์ที่เปลี่ยนแปลงความยาวมีผลมากกว่าตัวนับข้างอินพุต ออฟเซ็ตที่เก็บไว้ ช่วงการเลือก ไฮไลต์ และตำแหน่งเคอร์เซอร์ที่คำนวณก่อนการแปลงอาจไม่ชี้ไปยังข้อความที่ต้องการในภายหลังอีกต่อไป ความเสี่ยงเดียวกันนี้ใช้กับเวิร์กโฟลว์ใดๆ ที่จัดสรรพื้นที่เอาต์พุตจากความยาวอินพุต หรือถือว่าอักขระต้นทางหนึ่งตัวสอดคล้องกับอักขระผลลัพธ์ตัวเดียวเสมอ

การปัดไปกลับอาจทำให้สูญเสียความแตกต่าง แม้ว่าตัวอย่างใดตัวอย่างหนึ่งจะรักษาความยาวที่มองเห็นได้เท่าเดิมก็ตาม การสะกดต้นฉบับหลายตัวอาจมาบรรจบกันในรูปแบบตัวพิมพ์ใหญ่รูปแบบเดียว ส่งผลให้การดำเนินการตัวพิมพ์เล็กไม่มีข้อมูลเพียงพอที่จะเลือกต้นฉบับ เปรียบเทียบค่าที่แปลงแล้วเฉพาะเมื่อยอมรับการสูญเสียนั้นได้ หรือเก็บต้นฉบับไว้และใช้กลยุทธ์การเปรียบเทียบที่ออกแบบมาสำหรับข้อกำหนดของผลิตภัณฑ์

การแมปที่เปลี่ยนแปลงความยาวและเหตุใดการแปลงกลับจึงไม่สามารถกู้คืนแหล่งที่มาได้เสมอไป

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

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

ซิกมาภาษากรีกแสดงให้เห็นว่าตัวพิมพ์เล็กอาจขึ้นอยู่กับข้อความโดยรอบ

ภาษาตุรกีแยกความแตกต่างระหว่างจุดและจุด i ในรูปแบบที่เป็นค่าเริ่มต้น การแปลงกรณีที่ไม่ขึ้นกับโลแคลและไม่ได้จำลองเป็นพฤติกรรมเฉพาะของตุรกี การกำหนดค่า ToolAcre ระบุอย่างชัดเจนว่าการแมปไม่ขึ้นอยู่กับสถานที่ และจุดแบบตุรกีและไม่มีจุด i ไม่ได้เป็นกรณีพิเศษ ผลลัพธ์ที่ดูน่าเชื่อถือจึงไม่ใช่หลักฐานว่าชื่อ ที่อยู่ หรือสตริงอินเทอร์เฟซถูกแปลงอย่างถูกต้องสำหรับผู้อ่านชาวตุรกี

การตอบสนองเชิงปฏิบัติไม่ใช่การเพิ่มการทดแทนหลังจากการแปลงแบบทั่วไป การแทนที่ดังกล่าวอาจทำให้ข้อความภาษาผสมเสียหายและยังคงพลาดบริบท ใช้การดำเนินการรับรู้สถานที่ในซอฟต์แวร์ที่ทราบสถานที่ และให้เนื้อหาภาษาตุรกีหรืออาเซอร์รีตรวจสอบในการตั้งค่านั้น ในตัวแปลงนี้ ให้ถือว่าตัวอย่าง i เป็นการสาธิตข้อจำกัดที่บันทึกไว้

ภาษาตุรกีแบบจุดและแบบไม่มีจุด ฉันต้องการการจัดการการรับรู้สถานที่ซึ่งตัวแปลงนี้ไม่มีให้

ToolAcre ใช้ UPPER และต่ำกว่าโดยการเรียกเมธอดสตริง JavaScript ที่สอดคล้องกันในอินพุตที่สมบูรณ์ มันไม่ผ่านโลแคล โหลดพจนานุกรมภาษา หรือขอการแปลงฝั่งเซิร์ฟเวอร์ ผลลัพธ์จึงเป็นผลลัพธ์กรณีเริ่มต้นของกลไกเบราว์เซอร์ ซึ่งมีประโยชน์สำหรับการตรวจสอบพฤติกรรมของแอปพลิเคชันทั่วไป แต่ไม่ใช่สำหรับการรับรองการพิมพ์เฉพาะภาษา

ความแตกต่างมีความสำคัญเมื่อสร้างจุดบกพร่อง บันทึกสตริงต้นทางที่แน่นอน การแปลงที่เลือก และสตริงผลลัพธ์ แทนที่จะรายงานเฉพาะว่าการใช้อักษรตัวพิมพ์ใหญ่ดูผิด หากรหัสการผลิตใช้วิธีการ JavaScript เริ่มต้นเหมือนกัน ตัวแปลงจะมีการเปรียบเทียบแบบกะทัดรัด หากการผลิตใช้ Locale-Aware API การจับคู่หน้านี้ไม่ใช่การทดสอบการยอมรับที่เกี่ยวข้อง

สิ่งนี้ไม่ครอบคลุมถึง - กฎการกำหนดชื่อเรื่องสำหรับไดกราฟและประวัติความเป็นมาของเมืองหลวง ẞ

ปุ่ม Title Case เป็นอีกหนึ่งการเปลี่ยนแปลงด้วยสัญญาที่จำกัดโดยเจตนา ค้นหาการเรียงตัวอักษร รวมเครื่องหมายหรืออะพอสทรอฟี่ ใช้อักษรตัวพิมพ์ใหญ่ตัวแรกและตัวพิมพ์เล็กที่เหลือ ไม่มีข้อยกเว้นในพจนานุกรมภาษาหรือคู่มือสไตล์ ดังนั้นคำย่อและคำนามเฉพาะจึงสามารถเปลี่ยนแปลงได้ ในขณะที่คำเล็กๆ เช่น `of` และ `the` จะใช้อักษรตัวพิมพ์ใหญ่เช่นเดียวกับคำอื่นๆ

บทความนี้ไม่ได้ขึ้นอยู่กับประวัติที่นำเสนอของโครงร่างของชาร์ปตัวพิมพ์ใหญ่หรือกฎเกณฑ์ที่กว้างขึ้นสำหรับไดกราฟที่มีตัวพิมพ์ใหญ่ (title-casing digraphs) เนื่องจากไม่มีการกำหนดขึ้นโดยแหล่งที่มาที่ได้รับการตรวจสอบ หัวข้อเหล่านั้นอาจมีคุณค่าหากมีการอ้างอิงที่เป็นอิสระ แต่ไม่ได้อธิบายฟังก์ชันที่จัดส่ง คำแนะนำที่เชื่อถือได้คือการตรวจสอบทุกหัวข้อที่แปลงแล้วและกู้คืนการสะกดตามเจตนาด้วยตนเอง

ลักษณะการทำงานของตัวพิมพ์เล็กและใหญ่ในเครื่องมือนี้ โดยไม่มีประวัติตัวอักษรที่ไม่รองรับ

ลองใช้การตรวจสอบแบบเน้นสามรายการในตัวแปลงตัวพิมพ์: ตัวพิมพ์ใหญ่ `straße` ตัวพิมพ์เล็กคำภาษากรีกที่มีซิกม่าตัวพิมพ์ใหญ่ และเรียกใช้ตัวอย่างแบบจุดและแบบไม่มีจุดผ่านทั้งสองทิศทาง สังเกตสตริงที่เกิดขึ้นจริงแทนที่จะคาดเดาจากภาษาอังกฤษ จากนั้นใช้เลิกทำระหว่างการทดลองต่างๆ เพื่อให้แต่ละผลลัพธ์เริ่มต้นจากข้อความต้นฉบับ แทนที่จะเป็นการเปลี่ยนแปลงที่สูญเสียไปก่อนหน้านี้

บทเรียนที่กว้างขึ้นคือการดำเนินการ: การแปลงกรณีสามารถเปลี่ยนความยาว การยุบความแตกต่าง และขึ้นอยู่กับบริบททางภาษาที่การดำเนินการเริ่มต้นไม่ทราบ ใช้เครื่องมือเพื่อแสดงพฤติกรรมเหล่านั้น ไม่ใช่เพื่อรับประกันความถูกต้องของการแปลเป็นภาษาสากล รักษาข้อความต้นฉบับ ทดสอบวลีจริงที่สมบูรณ์ และใช้การตรวจสอบการรับรู้สถานที่ในทุกที่ที่ต้องการผลลัพธ์เฉพาะภาษา