ลืมเปลี่ยนภาษาเวลาพิมพ์เหรอให้ Python ช่วยไหม?

Ada Kaminkure
2 min readMay 12, 2019

--

Photo by Juan Gomez on Unsplash

สวัสดีครับสาธุชนคนชอบโค้ดทุกท่าน วันนี้ผมมี Pain Point เล็กพร้อมวิธีแก้แบบสนุกๆ มานำเสนอครับ นั่นก็คือ!!!

การแปลงตัวอักษรกลับไปเป็นตัวอักษรในภาษาที่เราต้องการ
เวลาที่เราลืมเปลี่ยนภาษาคร้าบบบ

มาดูกันให้เห็นภาพชัดๆครับบ ยกตัวอย่างเช่น

ผมจะพิมพ์คำว่า “สวัสดีครับ” แต่ดันลืมเปลี่ยนภาษา
เพราะฉะนั้นมันก็จะออกมาเป็น “l;ylfu8iy[”

แล้วเราก็จะรู้สึกหงุดหน่อยๆ ใช่ไหมครับล่ะ งั้นวันนี้ผมเอาภาษาสุดรักของผมอย่าง Python3 มาแก้ปัญหานี้กัน มาดูซิครับว่าจะยากง่ายขนาดไหนกัน
ไปเลยยยยย!!!

ขั้นแรก Keys Layout Mapping!

ในขั้นแรกนี้ เราต้องมาคิดกันก่อนครับว่าจะ mapping ตัวอักษรระหว่างภาษากันยังไง?

(ในบทความนี้ผมจะหยิบเฉพาะ Eng เป็น Thai มาเล่าให้ฟังนะครับ)

เริ่มแรกไม่ยากครับ พยายามหาเครื่องทุ่นแรกเช่น ไปเปิดหา Keyboard Layouts Standard ต่างๆบน internet ก่อนเลยซึ่งก็พบนะครับ แต่ไม่ค่อยตอบโจทย์เท่าไหร่

หรือ อีกวิธีมีคนแนะนำมาบอกว่าก็ไปเปิด symbol, define ใน Linux ดูสิ (ผมใช้ Ubuntu นะครับทุกท่าน) ก็ไปเปิดดูแต่ก็พบว่าจะต้องเสียเวลามากๆแน่นอนเลย

ดังนั้นผมจึงตั้งสินใจสร้าง “Keys Map” ขึ้นมาเองเลยยยยย~

เก็บข้อมูลแบบไหนดี?

ผมนิยมชมชอบ Format การเก็บข้อมูลแบบ YAML มากเพราะมีความรู้สึกส่วนตัวว่า Format แบบนี้แหละที่ Pythonista ปราถนา เพราะฉะนั้นแล้วผมเลยสร้าง Keys Map บน YAML format เพราะเมื่อเอาไปเข้า Python เราจะได้ Dictionary ออกมาเลยครับผม~

ซึ่งทุกท่านสามารถดูได้จากที่นี่ครับ

(ถามว่าผมสร้างยังไงน่ะเหรอครับ ผมใช้วิธี 10-Fingers Builder คร้าบบบ)

ขั้นตอนถัดมา, Write Down, and Show Me Ya Code!

ขั้นนี้ไม่มีอะไรมากมายไปกว่าการอ่าน Keys Map ของเราออกมาแล้วที่เหลือให้เป็น Python Magical ครับ

บรรทัดที่ 1–6
เป็นการ import packages ต่างๆที่เราต้องเข้ามาในโปรแกรมของเราครับ ซึ่ง yaml ก็จะเป็นพระเอกในงานนี้ สำหรับชื่อจริงๆของ packge นี้ คือ PyYAML

ติดตั้งผ่าน pip ด้วยคำสั่งนี้ครับ

pip install pyyaml

(อ่านวิธีการใช้งานเพิ่มเติมได้ที่ https://pyyaml.org/)

บรรทัดที่ 8–9
เป็นส่วนการจัดการ Path เพื่อเรียกหา Keys mapping ที่เราสร้างไว้ตั้งแต่ตอนต้นออกมาครับ ซึ่งผมตั้งชื่อไว้ว่า en-th.yml ตาม gist ข้างบนเลยครับ

ข้อดี ของการใช้ os package เข้ามาช่วยในการจัดการ file path นะครับ คือ ไม่ต้องกังวลว่า user จะเรียกจาก directory และหมดห่วงเรื่อง cross-platform ได้เลยครับ

บรรทัดที่ 11
ผมใช้ with statement เข้ามา block process เวลาอ่านไฟล์จะได้ไม่มีปัญหา ลืมปิดไฟล์ครับ

บรรทัดที่ 12
อ่าน KeysMap เข้ามาเก็บไว้ที่ตัวแปร en_th

บรรทัดที่ 13
ถามผู้ใช้ครับ ว่าต้องการแปลงประโยคไหน

บรรทัดที่ 15–19
เพียงเรานำตัวอักษรทีละตัวจากข้อความที่รับมาจากผู้ใช้ มาเทียบกับ KeysMap ของเราแค่นี้ก็เรียบร้อยแล้วครับบบบ print ให้ผู้ใช้ดูผลงานเราซะหน่อยด้วยที่บรรทัดที่ 19 ครับ

เพียงเท่านี้เราก็สามารถแก้ Pain Point เล็กๆในชีวิตจริงของเราได้แล้วครับ ถ้าจะให้ดีพัฒนาอีกเล็กน้อยให้สามารถ hilight ข้อความแล้วก็แปลงคำได้เลย!

ถ้าใช้บน browser ก็ต้องเขียน Extensions กันหน่อยครับ แต่ว่าหลักการเดียวกันแน่นอน อีกทั้งยังใช้ YAML ตัวได้อีกด้วย แต่ถ้าใครไม่ถนัดจะแปลง YAML เป็น Json หรือ XML ก่อนก็ได้ไม่ว่ากันคร้าบบบบ

สำหรับวันนี้ก็มีสิ่งที่อยากจะมานำเสนอเพียงเท่านี้ครับ หลักๆแล้วทำตัวนี้ออกมาเพราะความสนุกเท่านั้น แล้ว KeysMap ที่มีก็ยังไม่สมบูรณ์ด้วยใครอยากช่วยทำก็สามารถ PR เข้ามาที่ Github Repo นี้ได้เลยนะคร้าบบบ สวัสดีคร้าบบบ~

--

--

Ada Kaminkure
Ada Kaminkure

Written by Ada Kaminkure

Indie Game Dev, Software Engineer, Teacher, and Self-Taught Mathematician