Rails Translation


โดย แสงเดือน จันทร์ใหม่ – 14 มิถุนายน 2558

Rails Translation คืออะไร

Translation (Rails Internationalization (I18n) API) คือ Gem ตัวหนึ่งของ Ruby ซึ่งจะติดตั้งมาให้อยู่แล้ว โดยที่เราไม่ต้องติดตั้งเองเพิ่มเติม โดย Rails Translation ทำหน้าที่ในการช่วยจัดการให้ application มีการแสดงผลได้หลายภาษา แม้จะไม่ต้องติดตั้ง Gem เพิ่มเติม แต่ก่อนจะใช้งาน Translation ได้ต้องมั่นใจว่า application support I18n

Rails Translation ใช้งานอย่างไร

การใช้งาน Translation มีส่วนที่สำคัญ 3 ส่วน คือ

  • ส่วนสำหรับกำหนดค่าในการแสดงผลของแต่ละภาษา หรือถือเป็น dictionary สำหรับการแปลภาษานั่นเอง

ประกอบด้วยไฟล์ .yml ซึ่งวางไว้ใน config/locales โดยชื่อไฟล์เป็นชื่อของภาษาเพื่อเรียกใช้งานได้ง่าย ภายในไฟล์ประกอบด้วย key ของภาษา แล้วตามด้วย key และค่า ของ text ที่จะใช้แสดงผลในแต่ละภาษา

en
config/locales/en.yml
th
config/locales/th.yml
  • ส่วนสำหรับการนำค่าไปแสดงผลในรูปแบบต่างๆ

สามารถเรียกใช้งานได้ผ่าน controller หรือ view โดยเรียกใช้ key ของค่าที่จะแสดงผลด้วยฟังก์ชั่น t

controller
app/controllers/home_controller.rb
view
app/views/home/index.html.erb
  • ส่วนสำหรับกำหนดภาษาที่ใช้ในการแสดงผล

สำหรับกำหนดว่า application จะแสดงผลด้วยภาษาอะไร ทั้งนี้อยู่ที่การจัดการของโปรแกรมเมอร์เอง ซึ่งจะยกตัวอย่างเป็นการกำหนดโดยการรับค่าภาษามาเป็น params

set_locale
app/controllers/application_controller.rb

จากตัวอย่างคือกำหนดให้ภาษาแสดงผลเป็นค่า params ที่รับมา  โดยถ้าไม่มีค่า params ก็จะกำหนดเป็นค่า default

โดยจากตัวอย่างสามารถแสดงผลได้ดังนี้

view_en
http://localhost:3000/
view_th
http://localhost:3000/?language=th

Rails Translation ดีอย่างไร

  1. ทำให้ application สามารถแสดงผลได้กี่ภาษาก็ได้
  2. ช่วยจัดการการกำหนดภาษาสำหรับแสดงผลได้ง่าย
  3. สามารถกำหนดวิธีการตั้งค่าภาษาในการแสดงผลได้หลายวิธี

รายละเอียดเพิ่มเติมสามารถศึกษาได้จาก

http://guides.rubyonrails.org/i18n.html