สร้าง app ใน android studio ให้รองรับ แสดงผลหลายภาษา
เขียนเมื่อ 8 ปีก่อน โดย Ninenik Narkdeeภาษา android android studio รองรับภาษาไทย
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ ภาษา android android studio รองรับภาษาไทย
ไปที่
Copy









การทำให้ app ของเรา รองรับการแสดงผลหลายภาษา จะช่วยให้
จำนวนของผู้ใช้เพิ่มขึ้นได้ เนื้อหาตอนนี้เราจะมาเพิ่มภาษาให้รองรับ
การแสดงผลตามภาษาเครื่องที่ใช้งาน เช่น หากเครื่องกำหนดแสดงเป็น
ภาษาไทย app ของเราก็จะแสดงเป็นภาษาไทยด้วย
จะขอประยุกต์จาก app study002 ของบทความที่แล้ว
การเพิ่ม action button ใน action bar ตอนที่ 1
http://www.ninenik.com/content.php?arti_id=618 via @ninenik
รูป app study002

สร้าง โฟลเดอร์ และไฟล์ strings.xml กำหนดภาษา
1. อย่างที่รู้ว่า project ของเราจะมีโฟลเดอร์ res/values และไฟล์ strings.xml สำหรับกำหนด
ค่าของข้อความที่ต้องการแสดง ดังนั้นการกำหนดให้ app ของเรารองรับภาษาของเครื่องที่แสดง
ให้ทำได้ดังนี้ เริ่มต้นที่สร้าง โฟลเดอร์ values-(ISO language code) ไว้ในโฟลเดอร์ res
เช่นภาษาไทย ก็กำหนดเป็น values-th จากนั้นสร้างไฟล์ strings.xml ไว้ด้านใน โครงสร้างจะเป็นตามนี้
MyProject/ res/ values/ strings.xml values-th/ strings.xml
คลิกขวาที่โฟลเดอร์ res เลือก New > Directory

กำหนดชื่อโฟลเดอร์เป็น values-th แล้วกด OK

จะเห็นว่าเหมือนไม่มีชื่อโฟลเดอร์แสดง แต่จริงๆ แล้ว android studio ได้สร้างโฟลเดอร์
ดังกล่าวไว้แล้ว ต่อไปให้เราคลิกขวาที่ไฟล์ strings.xml เลือก Copy

แล้วไปคลิกขวาที่โฟลเดอร์ res เลือก Paste

จะขึ้นหน้าต่างให้เราเลือกโฟลเดอร์ ให้เราคลิกเลือก ปุุ่ม ... (จุดสามจุด) เพื่อเลือกโฟลเดอร์ values-th
ที่เราได้สร้างขึ้นมาแล้ว เลือก OK แล้ว ก็เลือก OK หน้าเดิมอีกครั้ง


2. สังเกตว่า โครงสร้างของไฟล์ใน android studio จะมี strings.xml เพิ่มเข้ามา พร้อม
มีสัญลักษณ์ธงชาติกำหนด ตามรูป เท่านี้เราก็สามารถเข้าไปแก้ไขข้อความได้ตามต้องการ

3. เปิดไฟล์ strings.xml สำหรับภาษาไทย และแก้ค่าภายในตามนี้
<resources> <string name="app_name">บทเรียนที่ 002</string> <string name="hello_world">สวัสดีชาวโลก!</string> <string name="action_search">ค้นหา</string> <string name="action_refresh">รีเฟรส</string> <string name="action_settings">ตั้งค่า</string> <color name="colorbg1">#FF7F27</color> </resources>

4. ทดสอบ run app ถ้า emulator ของเรายังไม่ได้เปิดขึ้นมา หรือเปิดขึ้นมาแล้ว
แต่ยังเป็นภาษาอังกฤษ ที่ emulator ให้เราเปลี่ยนเป็นภาษาไทย โดยไปที่
Settings > Language and input.... แล้วเลือก ภาษาไทย เสร็จแล้ว
ทดสอบ run app ถ้าไม่มีข้อผิดพลาด ผลลัพธ์จะได้ตามรูป


ถ้าเราเปลี่ยนกลับเป็นภาษาอังกฤษ ระบบก็จะไปใช้ strings.xml ในโฟลเดอร์ values/strings.xml
และถ้าเปลี่ยนกลับมาภาษาไทย ก็จะไปใช้ strings.xml ในโฟลเดอร์ values-th/strings.xml
การเรียกใช้ String Resources ผ่าน code java
จาก code ด้านบน เป็นการเรียกใช้งาน string resources จากกำหนดค่าใน layout
แต่เรายังสามารถเรียกใช้ string resources จากการใช้คำสั่งต่อไปนี้ได้ โดยค่าที่ได้ก็จะเปลี่ยน
ไปตามภาษาเครื่องเช่นกัน
ตัวอย่าง
// รับค่า string resource จาก Resources app String hello = getResources().getString(R.string.hello_world); // หรือการกำหนด string resource เข้าไปใน method ที่ต้องการรับค่าเป็น string TextView textView = new TextView(this); textView.setText(R.string.hello_world);
เรามาประยุกต์กับ app study002 จากบทความเดิม
การเรียกใช้ method เมื่อเลือก action button ตอนที่ 2
http://www.ninenik.com/content.php?arti_id=619 via @ninenik
1. ดูที่ไฟล์ MainActivity ในส่วนของ onOptionsItemSelected
@Override public boolean onOptionsItemSelected(MenuItem item) { // เก็บค่า id ของปุ่ม action butoon ที่กดเลือก int id = item.getItemId(); // ตรวจสอบค่า ว่า เป็น id ใด แล้วเรียกใช้ method ที่เราสร้างขึ้น // ในตัวอย่างนี้ เราจะส่งค่าข้อความเข้าไปใน method switch (id) { case R.id.action_search: showMyText("Search"); return true; case R.id.action_refresh: showMyText("Refresh"); return true; case R.id.action_settings: showMyText("Settings"); return true; default: return super.onOptionsItemSelected(item); } }

เราจะเห็นว่า method showMyText ส่งค่าข้อความที่เป็นภาษาอังกฤษแบบ กำหนดค่าตายตัวไป
ดังนั้นถึงแม้เราจะเปลี่ยนเป็นภาษาไทย ค่าก็ยังเป็นค่าเดิม เราก็สามารถประยุกต์ ให้ค่าที่ส่งเป็นค่า
ที่ดึงจาก string resources แทน เพื่อที่ค่าที่ได้จะเป็นไปตามภาษาที่เครื่องนั้นกำหนด
2. แก้ไขได้ดังนี้โดยใช้ คำสั่ง getResources().getString()
// ตรวจสอบค่า ว่า เป็น id ใด แล้วเรียกใช้ method ที่เราสร้างขึ้น // ในตัวอย่างนี้ เราจะส่งค่าข้อความเข้าไปใน method switch (id) { case R.id.action_search: showMyText(getResources().getString(R.string.action_search)); return true; case R.id.action_refresh: showMyText(getResources().getString(R.string.action_refresh)); return true; case R.id.action_settings: showMyText(getResources().getString(R.string.action_settings)); return true; default: return super.onOptionsItemSelected(item); }

กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ

อ่านต่อที่บทความ
-
16 Apr2015สร้าง app ใน android studio ให้รองรับการแสดงผลบนหน้าจอขนาดต่างๆ อ่าน 13,862
Android จัดหมวดหมู่ของหน้าจอจาก ขนาด และ ความละเอียดหน้าจอ เราควรจะเพิ่มท
เนื้อหาที่เกี่ยวข้อง
-
กำลังอ่านเนื้อหานี้อยู่15 Apr2015สร้าง app ใน android studio ให้รองรับ แสดงผลหลายภาษา อ่าน 14,107
การทำให้ app ของเรา รองรับการแสดงผลหลายภาษา จะช่วยให้ จำนวนของผู้ใช้เพิ่ม
-
16 Apr2015สร้าง app ใน android studio ให้รองรับการแสดงผลบนหน้าจอขนาดต่างๆ อ่าน 13,862
Android จัดหมวดหมู่ของหน้าจอจาก ขนาด และ ความละเอียดหน้าจอ เราควรจะเพิ่มท
-
17 Apr2015สร้าง app ใน android studio ให้รองรับ android เวอร์ชั่นต่างๆ อ่าน 9,634
แม้ว่า android เวอร์ชั่นล่าสุดที่ออกมาจะมีความสามารถที่ดีเพียงใดก็ตาม
URL สำหรับอ้างอิง
Top
Copy
ขอบคุณทุกการสนับสนุน
![]()